[SSL]公鑰與私鑰典型應用
1、關於公鑰和私鑰
公鑰和私鑰或者稱非對稱金鑰和對稱金鑰是密碼體制的兩種方式。私鑰體制指加解密金鑰相同或彼此容易推出,因此加解密金鑰都是保密的。公鑰體制指加解密金鑰彼此無法推出,公鑰公開,私鑰保密。
由上定義可知,公鑰私鑰是兩種不同的密碼體制,而不是兩個不同的應用或兩個不同的金鑰。因此在加密和簽名應用中,公鑰私鑰均可以使用。
2、關於加密和簽名的實際應用
在實際加密應用中,由於金鑰長度和效率問題,公鑰很少應用於直接的資料加密,而主要用於加密金鑰的分發和協商。真正的加密過程是由私鑰體制實現的。
在數字簽名應用中公鑰私鑰體制均可實現。典型的私鑰簽名體制如kerberos系統。私鑰簽名系統的優勢在於低成本和低複雜性,但需要極高可信度的線上認證伺服器,這在複雜的網路環境中往往難以實現。而公鑰體制的特效能夠很好克服這一弱點,但它的缺點也很明顯,投資大,而且多個認證體系之間的交叉認證實現困難。
3、過於公鑰體制在加密應用和簽名應用中的實現
公鑰體制在加密和簽名中最直觀的區別是:加密用公鑰加密資料,私鑰解密資料;簽名用私鑰簽名訊息,公鑰驗證簽名。
主要的公鑰簽名體制如RSA簽名方案,DSS簽名方案等。訊息的Hash函式處理不是數字簽名必須的,但在實現中,往往先用Hash函式處理訊息,以壓縮訊息長度及提供一定的加密功能。
非對稱加密最初可能是為了解決密匙保管與交換難題. 非對稱加密過程中用一個密匙加密只能用另一個密匙解密. 由此解決了密匙交換難題: 公匙隨意發放; 保管也大為簡化: 保護好私匙就可以了. PKI 之所以成為或 "稱為" 體系, 是包括了實施中所必需的公匙管理: 認證, 發放, 收回, 查詢等.
現在看加密過程. 以加密郵件為例. Alice 發加密郵件給 Bob.
1a. Alice 從 Bob那裡或從PKI伺服器得到 Bob的公匙
2a. Alice 用 Bob的公匙加密郵件, 傳送給 Bob
3a. Bob 受到加密郵件, 用自己的私匙解密.
其他人如果截獲加密郵件, 由於沒有 Bob的私匙, 無法解密郵件.
簽名過程則是非對稱加密的另一用法
1b. Alice 在用 Bob的公匙加密郵件前先對郵件產生摘要Ha.
2b. Alice 用自己的私匙加密郵件摘要, 連同加密郵件(2a)傳送給 Bob
3b. Bob 將加密郵件摘要用Alice的公匙解密得到解密的郵件摘要Ha. (公匙可以從 Aliceb那裡或從PKI伺服器得到), 並用自己的私匙解密郵件(3a).
4b. Bob 對解密的郵件產生摘要Hb, 與(3b)解密的郵件摘要Ha比較.
如果無誤, 則可確認: 1) 該郵件由Alice 發出, 因為只有Alice 有自己的私匙; 2)郵件在傳遞過程中未遭篡改, 因為郵件摘要比較結果一致.另外, 因為只有Alice 有自己的私匙, Alice 無法否認該郵件由自己發出.
如果 PKI Service Provider 用 RootCA 對 Alice 的公匙做簽名操作, 由於RootCA的公匙可以公開獲得, 對 Alice 的公匙進行核實(4b)即可確認該公匙為 Alice 所有. 在解密的郵件中看到對方的證書資訊是因為對方對郵件不但加密並且簽名, 對方的公匙已經含有有關資訊. 既是簽名, 當然要你看到才對.
總結:
用對方的公匙加密, 用自己的私匙解密
用自己的私匙簽名, 用對方的公匙核實
公鑰體制可以簽名,金鑰量小,可直接在普通訊道上傳輸.
舉個RSA的例子,A想傳送明文9726給B,那麼他計算9726**3533(mod 11413)=5761,這就是密文,而B收到5761後,用自己的私鑰d=6597進行解密:5761**6597(mod 11413)=9726,就得到了明文.這裡公鑰就是3533和11413,私鑰是6597和11413分解成的兩個質因數101和113.其他人雖然知道x**3353(mod 11413)=5761,但無法倒推回去求x,只有知道了私鑰101和113後才能用演算法得出6597.可以想象11413若是足夠大,那麼將其分解質因式會是很困難的,RSA就是建立在對大數分解質因式的困難上的,理論依據是費馬定理和尤拉定理
相關文章
- 公鑰私鑰
- 私鑰與公鑰有何不同?
- 公鑰和私鑰
- 金鑰,私鑰,公鑰的區分
- 蘋果ios簽名的公鑰與私鑰蘋果iOS
- TLS、SSL、CA 證書、公鑰、私鑰。。。今天捋一捋!TLS
- openSSL生成公鑰和私鑰
- SSH 公鑰私鑰的生成管理
- 01_私鑰、公鑰和地址
- SSH公鑰私鑰認證原理
- php中的公鑰和私鑰PHP
- php使用openssl生成公鑰私鑰PHP
- OpenSSL 公鑰私鑰加解密封裝解密封裝
- 使用openssl生成rsa公鑰和私鑰
- 支付介面教程——公鑰與私鑰,雙鑰加密和數字簽名加密
- 【韭菜幣讀】用Emoji科普公鑰與私鑰的基本原理
- Mac 使用openssl生成RSA公鑰和私鑰Mac
- 完成ssh無密碼的驗證,採用公鑰、私鑰密碼
- SSH-keygen rsa 金鑰對根據私鑰生成公鑰
- 【加密演算法】PFX檔案提取公鑰私鑰加密演算法
- 如何保護SSL證書私鑰安全
- MAC OSX 下 使用openssl 命令 生成RSA公鑰和私鑰Mac
- 私鑰和公鑰到底是誰來加密、誰來解密?加密解密
- 公鑰私鑰gitee都不行,新手小白破局(windows憑據)GiteeWindows
- 橢圓曲線加密演算法中公鑰與私鑰互換性分析加密演算法
- 使用公鑰和私鑰實現LINUX下免密登入Linux
- 非對稱加密演算法RSA中的公鑰和私鑰加密演算法
- 應用密碼學 - 公鑰密碼密碼學
- 使用公鑰/私鑰對設定免密的 Linux 登入方式Linux
- 公鑰基礎設施和密碼學中的私鑰的角色密碼學
- Mac OS上執行openssl命令操作,生成RSA私鑰和RSA公鑰Mac
- java中的使用RSA演算法進行公鑰加密私鑰解密 .Java演算法加密解密
- C# Rsa加密(私鑰加密、公鑰解密、金鑰格式轉換、支援超大長度分段加密)C#加密解密
- 區塊鏈之比特幣的私鑰,公鑰和地址是什麼?區塊鏈比特幣
- 把Java生成的RSA公鑰、私鑰轉換成.NET使用的XML格式JavaXML
- 如何獲取SSL證書private key私鑰檔案
- 10 建立SSL與RSA證書與金鑰
- 從Java金鑰庫讀取輸出私鑰Java