[SSL]公鑰與私鑰典型應用

鄒德強發表於2013-07-15

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就是建立在對大數分解質因式的困難上的,理論依據是費馬定理和尤拉定理

相關文章