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

2021-09-26 08:52:01 字數 1944 閱讀 1775

最近在知乎上看到一篇關於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用得最多= =

RSA加密演算法

素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。例如,15 3 5,所以15不是素數 又如,12 6 2 4 3,所以12也不是素數。另一方面,13除了等於13 1以外,不能表示為其它任何兩個整數的乘積,所以13是乙個素數。素數也稱為 質數 二 什麼是 互質數...

RSA加密演算法

演算法的描述 1.選取兩個素數p,q 2.計算n p q,fn p 1 q 1 3.選擇乙個整數e,使得e與fn的最大公約數為1,e將會用於對資料進行加密。4.計算出乙個整數d,使得d e除fn的餘數為1。d用於對密文進行解密,還原出明文。5.假設明文為m,密文為c。如果需要對原文進行加密,則進行如...

RSA加密演算法

一 rsa是公鑰加密演算法之一,該演算法的數學基礎是 1 初等數論的euler定理,即 若整數a與整數n互素,則a n 1 mod n 其中,n 為尤拉函式。2 大整數分解很困難,即給定乙個大整數n,將其分解為n p q,兩個素數乘積十分困難。二 rsa基本原理 1 金鑰的生成。選擇大素數p,q,計...