密码篇——非对称加密
目錄
非對稱密碼介紹
公鑰通信流程:
公鑰密碼無法解決的問題:
公鑰密碼算法:
針對RSA的攻擊
其他公鑰密碼:
總結:
非對稱密碼介紹
在對稱加密中,加密與解密使用的密鑰是相同的,因此必須向接收者配送密鑰。用于解密的密鑰必須配送給接收者,由此產生了密鑰配送問題。
密鑰配送問題:對一份文件進行加密后發送給接收方,接收方需要查看文件就要用密鑰解開加密文件才能查看原文件。所以不發送密鑰,接收方無法接收文件,發送密鑰后,又會被截取,讓第三方知道文件內容
解決密鑰配送問題可使用公鑰密碼
公鑰密碼中,密鑰可分為加密密鑰和解密密鑰。發送者使用加密密鑰對消息進行加密,接受者用解密密鑰進行解密
由此可得:
1)發送者只使用加密密鑰
2)接收者只是用解密密鑰
3)解密密鑰不可被第三方獲取
4)加秘密鑰無所謂
?
公鑰通信流程:
1)接收方生成一個包含公鑰和私鑰的密鑰對
2)接收方將私鑰自行保存,并將公鑰發送給發送方
3)發送方使用該公鑰對消息進行加密后發送(是用公鑰只能對數據進行加密,無法解密)
4)接收方使用私鑰對密文進行解密
?
注:公鑰密碼也稱為非對稱加密。在對稱密碼中,加密和解密使用的是同一密鑰,只是進行相反運算;而非對稱加密中,加密與解密使用的是不同密鑰,并非對稱
兩個密鑰之間存在著相互依存關系:即用其中任一個密鑰加密的信息只能用另一個密鑰進行解密
?
公鑰密碼無法解決的問題:
1)公鑰認證問題(需要判斷得到的公鑰是否合法)
2)處理速度(處理速度只有對稱密碼的幾百分之一)
公鑰密碼算法:
RSA加密公式:密文 = 明文 E mod N(對代表明文代表的數字E次方除于N求余數,E和N的組合就是公鑰)
RSA解密公式:明文 = 密文 D mod N (D和N的組合為私鑰)
?
注:N是公開的,所以用于加密和解密的只有E和D
?
為了生成密鑰對:需要求得N、L(僅在生成密鑰對的過程中使用的數)、E、D
1)求N
使用偽隨機數生成器生成兩個很大的質數p、q質數:在大于1的自然數中,除了1和它本身不會有其他因數)N=p*q
2)求L
L只出現在生成密鑰對的過程中,不會出現于加解密中
L=lcm(p-1,q-1)L是p-1和q-1的最小公倍數
3)求E
1<E<L,gcd(E,L)=1,E與L的最大公約數為1;使用偽隨機數生成器生成E的候選數,再判斷是否滿足最大公約數為1(使用輾轉相除法)
4)求D
D是由E得到
1<D<L,E*DmodL=1
?
針對RSA的攻擊
中間人攻擊:
?
該方法不止針對RSA,可以針對任何公鑰密碼,因此需要認證公鑰是否來自接收方
?
其他公鑰密碼:
1)EIGamal
經過加密的密文會變成明文的兩倍長;該算法是利用modN下求離散對數的難度
2)Rabin
利用modN下求平方根的難度,
3)橢圓曲線密碼
密鑰長度短于RSA,利用橢圓曲線上的特定點進行特定的乘法運算
?
總結:
1)密碼的機密性是通過密鑰的長度進行比較的,而非公鑰密碼強于對稱密碼
2)公鑰密碼與對稱密碼的密鑰長度不能直接比較
3)公鑰密碼并不適合對很長的密碼進行加密,現在一般使用的是混合密碼(公鑰密碼和對稱密碼組合使用:對稱密碼提高處理速度,公鑰密碼解決密鑰配送問題)
4)RSA中使用的質數數量很多不用擔心使用完,和生成密鑰對時撞車;且RSA在生成、加密、解密都不需要質因數分解,但在破譯RSA時需要使用質因數分解(求p和q)
總結
以上是生活随笔為你收集整理的密码篇——非对称加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 密码篇——对称加密—AES
- 下一篇: 密码篇——混合密码