RSA加密算法和DH密鑰協商的比較

最近在知乎上看到一篇關於RSA和DH的比較,簡單明瞭,以此記錄一下。

問題1:  RSA做密鑰協商(密鑰交換)時,是否可以防範中間人攻擊?
答:單就RSA本身而言,是無法防範中間人攻擊的。

和其它加密過程一樣,對RSA來說分配公鑰的過程是非常重要的。分配公鑰的過程必須能夠抵擋中間人攻擊。假設Eve交給Bob一個公鑰,並使Bob相信這是Alice的公鑰,並且她可以截下Alice和Bob之間的信息傳遞,那麼她可以將她自己的公鑰傳給Bob,Bob以爲這是Alice的公鑰。Eve可以將所有Bob傳遞給Alice的消息截下來,將這個消息用她自己的密鑰解密,讀這個消息,然後將這個消息再用Alice的公鑰加密後傳給Alice。理論上Alice和Bob都不會發現Eve在偷聽他們的消息。今天人們一般用數字認證來防止這樣的攻擊。

上面引用來自於維基百科,稍微補充的一點是防止中間人攻擊的方法實際上就是身份證認證方式,目前主流方式就是數字簽名的方式,但是也是存在利用不對稱信息、時間戳、生物信息、物理信息等其它成熟或者是不成熟,公開或不公開的解決方式。關於不對稱信息這樣的情況可以參見一下我之前的另外一個答案課堂上傳紙條如何防範中間人攻擊?
 

問題2: RSA做密鑰協商(密鑰交換)時和DH的區別是什麼?
答:分兩點來講
一、首先說明:RSA和DH實際上根本不是一回事
RSA是公鑰加密算法,也就是非對稱密碼算法,一般情況下的使用流程是這樣的:
1 A通過B公開的公鑰加密信息,加密信息,發送加密後的信息給B,B通過自己的私鑰進行解密;
2 B如果想給A發送消息,就先獲取A公開的密鑰,加密信息,發送加密後的信息給A,A通過自己的私鑰進行解密。
DH是密鑰交換協議,一般情況下的使用流程是這樣的:
1 A和B通過DH協議獲得了同一個密鑰;
2 A然後用這個密鑰採用其他的對稱密碼算法如DES AES對通信進行加密解密,傳遞給B;
3 B使用同樣的密鑰採用其他的對稱密碼算法如DES AES對通信進行加密解密,傳遞給A。
總結一下,區別主要是:
1 RSA是用來加密解密的,DH是用來協商創造密鑰的
RSA可以用來傳遞信息,DH是用來傳遞密鑰的,想要傳遞信息還需要藉助別的加密方式。
2 使用RSA進行信息傳輸是非對稱密碼體系,使用DH進行密鑰交換的下一步使用的一般是對稱的密碼體系
使用RSA加密和解密所使用的密鑰是不一樣的,前者叫公鑰後者叫私鑰,公鑰用於加密私鑰用於解密,並且不可逆向,也就是不能用私鑰加密公鑰解密。如果A和B想進行通信的話,需要兩套(4個)密鑰。而DH交換得到的密鑰則一般是用於對稱加密的,也就是加密和加密使用的是同一個密碼,進行通信只需要一個密鑰即可。
二、然後解釋一下,如何用RSA做密鑰協商(密鑰交換)
實際上可以模擬成下面的情況:A想和B進行密鑰交換,獲得一個新的密鑰,於是A就通過B的公鑰加密了一個密鑰K(此處的密鑰相當於原文),然後將生成的密文發給B。B接到了這個密文之後使用自己的私鑰解密獲得密鑰K。於是雙方就可以愉快的使用這個K來進行後面的加密了~
這就是最簡單的RSA密鑰交換模型了。實際上考慮到前面提到的中間人攻擊的問題,因此A往往需要同時加上自己的身份認證信息。同時有些複雜點兒的情況下可能還需要B通過A的公鑰發送一系列的確認信息。
因此RSA做密鑰協商(密鑰交換)時和DH的從原理上而言是有着非常大的差距的。

問題3: 實際中的密鑰協商主要使用哪些算法?
答:抱歉..日常生活中很少單純依靠這一兩種算法來進行的,一般情況下都是多種算法進行組合使用。
RSA和DH都怕中間人攻擊,因此一般需要配套數字證書。而數字證書本身就是帶了每個人的公鑰的。

數字證書是一個或一組電腦文件,內載擁有人的身份數據及一組公開密碼匙。憑著數字證書文件,擁有人可向電腦系統認證自己的身分,從而訪問或使用某一特定的電腦服務。

因此其實如果非得說密鑰協商什麼用得最多,我只能說——數字證書+RSA用得最多= =

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章