非對稱加密算法有哪些
非對稱加密算法的優(yōu)點有哪些?
非對稱加密算法的優(yōu)點如下:安全性高。
非對稱密碼體制的特點:算法強度復雜、安全性依賴于算法與密鑰但是由于其算法復雜,而使得加密解密速度沒有對稱加密解密的速度快。
對稱密碼體制中只有一種密鑰,并且是非公開的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了。這樣安全性就大了很多。
擴展資料:
主要應用:
非對稱加密(公鑰加密):指加密和解密使用不同密鑰的加密算法,也稱為公私鑰加密。假設兩個用戶要加密交換數(shù)據(jù),雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密。如果企業(yè)中有n個用戶,企業(yè)需要生成n對密鑰,并分發(fā)n個公鑰。
假設A用B的公鑰加密消息,用A的私鑰簽名,B接到消息后,首先用A的公鑰驗證簽名,確認后用自己的私鑰解密消息。由于公鑰是可以公開的,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發(fā)將變得 十分簡單。
參考資料來源:百度百科-非對稱加密算法
加密那些事--非對稱加密詳解
簡要說說對稱加密和非對稱加密的原理以及區(qū)別是什么
對稱加密的原理是數(shù)據(jù)發(fā)送方將明文(原始數(shù)據(jù))和加密密鑰一起經過特殊加密算法處理后,使其變成復雜的加密密文發(fā)送出去。接收方收到密文后,若想解讀原文,則需要使用加密密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。
非對稱加密的原理是甲方首先生成一對密鑰同時將其中的一把作為公開密鑰;得到公開密鑰的乙方再使用該密鑰對需要加密的信息進行加密后再發(fā)送給甲方;甲方再使用另一把對應的私有密鑰對加密后的信息進行解密,這樣就實現(xiàn)了機密數(shù)據(jù)傳輸。
對稱加密和非對稱加密的區(qū)別為:密鑰不同、安全性不同、數(shù)字簽名不同。
一、密鑰不同
1、對稱加密:對稱加密加密和解密使用同一個密鑰。
2、非對稱加密:非對稱加密加密和解密所使用的不是同一個密鑰,需要兩個密鑰來進行加密和解密。
二、安全性不同
1、對稱加密:對稱加密如果用于通過網絡傳輸加密文件,那么不管使用任何方法將密鑰告訴對方,都有可能被竊聽。
2、非對稱加密:非對稱加密因為它包含有兩個密鑰,且僅有其中的“公鑰”是可以被公開的,接收方只需要使用自己已持有的私鑰進行解密,這樣就可以很好的避免密鑰在傳輸過程中產生的安全問題。
三、數(shù)字簽名不同
1、對稱加密:對稱加密不可以用于數(shù)字簽名和數(shù)字鑒別。
2、非對稱加密:非對稱加密可以用于數(shù)字簽名和數(shù)字鑒別。
密碼學基礎(三):非對稱加密(RSA算法原理)
加密和解密使用的是兩個不同的秘鑰,這種算法叫做非對稱加密。非對稱加密又稱為公鑰加密,RSA只是公鑰加密的一種。
現(xiàn)實生活中有簽名,互聯(lián)網中也存在簽名。簽名的作用有兩個,一個是身份驗證,一個是數(shù)據(jù)完整性驗證。數(shù)字簽名通過摘要算法來確保接收到的數(shù)據(jù)沒有被篡改,再通過簽名者的私鑰加密,只能使用對應的公鑰解密,以此來保證身份的一致性。
數(shù)字證書是將個人信息和數(shù)字簽名放到一起,經由CA機構的私鑰加密之后生成。當然,不經過CA機構,由自己完成簽名的證書稱為自簽名證書。CA機構作為互聯(lián)網密碼體系中的基礎機構,擁有相當高級的安全防范能力,所有的證書體系中的基本假設或者前提就是CA機構的私鑰不被竊取,一旦 CA J機構出事,整個信息鏈將不再安全。
CA證書的生成過程如下:
證書參與信息傳遞完成加密和解密的過程如下:
互質關系:互質是公約數(shù)只有1的兩個整數(shù),1和1互質,13和13就不互質了。
歐拉函數(shù):表示任意給定正整數(shù) n,在小于等于n的正整數(shù)之中,有多少個與 n 構成互質關系,其表達式為:
其中,若P為質數(shù),則其表達式可以簡寫為:
情況一:φ(1)=1
1和任何數(shù)都互質,所以φ(1)=1;
情況二:n 是質數(shù), φ(n)=n-1
因為 n 是質數(shù),所以和小于自己的所有數(shù)都是互質關系,所以φ(n)=n-1;
情況三:如果 n 是質數(shù)的某一個次方,即 n = p^k ( p 為質數(shù),k 為大于等于1的整數(shù)),則φ(n)=(p-1)p^(k-1)
因為 p 為質數(shù),所以除了 p 的倍數(shù)之外,小于 n 的所有數(shù)都是 n 的質數(shù);
情況四:如果 n 可以分解成兩個互質的整數(shù)之積,n = p1 × p2,則φ(n) = φ(p1p2) = φ(p1)φ(p2)
情況五:基于情況四,如果 p1 和 p2 都是質數(shù),且 n=p1 × p2,則φ(n) = φ(p1p2) = φ(p1)φ(p2)=(p1-1)(p2-1)
而 RSA 算法的基本原理就是歐拉函數(shù)中的第五種情況,即: φ(n)=(p1-1)(p2-1);
如果兩個正整數(shù) a 和 n 互質,那么一定可以找到整數(shù) b,使得 ab-1 被 n 整除,或者說ab被n除的余數(shù)是1。這時,b就叫做a的“模反元素”。歐拉定理可以用來證明模反元素必然存在。
可以看到,a的 φ(n)-1 次方,就是a對模數(shù)n的模反元素。
n=p x q = 3233,3233寫成二進制是110010100001,一共有12位,所以這個密鑰就是12位。
在實際使用中,一般場景下選擇1024位長度的數(shù)字,更高安全要求的場景下,選擇2048位的數(shù)字,這里作為演示,選取p=61和q=53;
因為n、p、q都為質數(shù),所以φ(n) = (p-1)(q-1)=60×52= 3120
注意,這里是和φ(n) 互互質而不是n!假設選擇的值是17,即 e=17;
模反元素就是指有一個整數(shù) d,可以使得 ed 被 φ(n) 除的余數(shù)為1。表示為:(ed-1)=φ(n) y --> 17d=3120y+1,算出一組解為(2753,15),即 d=2753,y=-15,也就是(17 2753-1)/3120=15。
注意,這里不能選擇3119,否則公私鑰相同??
公鑰:(n,e)=(3233,2753)
私鑰:(n,d)=(3233,17)
公鑰是公開的,也就是說m=p*q=3233是公開的,那么怎么求e被?e是通過模反函數(shù)求得,17d=3120y+1,e是公開的等于17,這時候想要求d就要知道3120,也就是φ(n),也就是φ(3233),說白了,3233是公開的,你能對3233進行因數(shù)分解,你就能知道d,也就能破解私鑰。
正常情況下,3233我們可以因數(shù)分解為61*53,但是對于很大的數(shù)字,人類只能通過枚舉的方法來因數(shù)分解,所以RSA安全性的本質就是:對極大整數(shù)做因數(shù)分解的難度決定了RSA算法的可靠性。換言之,對一極大整數(shù)做因數(shù)分解愈困難,RSA算法愈可靠。
人類已經分解的最大整數(shù)是:
這個人類已經分解的最大整數(shù)為232個十進制位,768個二進制位,比它更大的因數(shù)分解,還沒有被報道過,因此目前被破解的最長RSA密鑰就是768位。所以實際使用中的1024位秘鑰基本安全,2048位秘鑰絕對安全。
網上有個段子:
已經得出公私鑰的組成:
公鑰:(n,e)=(3233,2753)
私鑰:(n,d)=(3233,17)
加密的過程就是
解密過程如下:
其中 m 是要被加密的數(shù)字,c 是加密之后輸出的結果,且 m < n ,其中解密過程一定成立可以證明的,這里省略證明過程。
總而言之,RSA的加密就是使用模反函數(shù)對數(shù)字進行加密和求解過程,在實際使用中因為 m < n必須成立,所以就有兩種加密方法:
對稱加密存在雖然快速,但是存在致命的缺點就是秘鑰需要傳遞。非對稱加密雖然不需要傳遞秘鑰就可以完成加密和解密,但是其致命缺點是速度不夠快,不能用于高頻率,高容量的加密場景。所以才有了兩者的互補關系,在傳遞對稱加密的秘鑰時采用非對稱加密,完成秘鑰傳送之后采用對稱加密,如此就可以完美互補。
非對稱加密算法
如果要給世界上所有算法按重要程度排個序,那我覺得“公鑰加密算法”一定是排在最前邊的,因為它是現(xiàn)代計算機通信安全的基石,保證了加密數(shù)據(jù)的安全。
01 對稱加密算法
在非對稱加密出現(xiàn)以前,普遍使用的是對稱加密算法。所謂對稱加密,就是加密和解密是相反的操作,對數(shù)據(jù)進行解密,只要按加密的方式反向操作一遍就可以獲得對應的原始數(shù)據(jù)了,舉一個簡單的例子,如果要對字符串"abc"進行加密,先獲取它們的ANSCII碼為:97 98 99;密鑰為+2,加密后的數(shù)據(jù)就是:99 100 101,將密文數(shù)據(jù)發(fā)送出去。接收方收到數(shù)據(jù)后對數(shù)據(jù)進行解密,每個數(shù)據(jù)減2,就得到了原文。當然這只是一個非常簡單的例子,真實的對稱加密算法會做得非常復雜,但這已經能夠說明問題了。
這樣的加密方法有什么缺點呢?首先缺點一:密鑰傳遞困難;想想看如果兩個人,分別是Bob和Alice,Bob要給Alice發(fā)消息,那Bob就要把密鑰通過某種方式告訴Alice,有什么可靠的途徑呢?打電話、發(fā)郵件、寫信...等等方式好像都不靠譜,都有被竊取的風險,也只有兩人見面后當面交流這一種方式了;缺點二:密鑰數(shù)量會隨著通信人數(shù)的增加而急劇增加,密鑰管理將會是一個非常困難的事情。
02 非對稱加密算法
1976年,兩位美國計算機學家,提出了Diffie-Hellman密鑰交換算法。這個算法的提出了一種嶄新的構思,可以在不直接傳遞密鑰的情況下,完成解密。這個算法啟發(fā)了其他科學家,讓人們認識到,加密和解密可以使用不同的規(guī)則,只要這兩種規(guī)則之間存在某種對應的關系即可,這樣就避免了直接傳遞密鑰。這種新的加密模式就是“非對稱加密算法”。
算法大致過程是這樣的:
(1)乙方 生成兩把密鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。
(2)甲方獲取乙方的公鑰,然后用它對信息加密。
(3)乙方得到加密后的信息,用私鑰解密。
如果公鑰加密的信息只有私鑰解得開,那么只要私鑰不泄漏,通信就是安全的。
03 RSA非對稱加密算法
1977年,三位數(shù)學家Rivest、Shamir 和 Adleman 設計了一種算法,可以實現(xiàn)非對稱加密。這種算法用他們三個人的名字命名,叫做RSA算法。
從那時直到現(xiàn)在,RSA算法一直是最廣為使用的"非對稱加密算法"。毫不夸張地說,只要有計算機網絡的地方,就有RSA算法。這種算法非常可靠,密鑰越長,它就越難破解。根據(jù)已經披露的文獻,目前被破解的最長RSA密鑰是768個二進制位。也就是說,長度超過768位的密鑰,還無法破解(至少沒人公開宣布)。因此可以認為,1024位的RSA密鑰基本安全,2048位的密鑰極其安全。
公鑰加密 -> 私鑰解密
只有私鑰持有方可以正確解密,保證通信安全
私鑰加密 -> 公鑰解密
所有人都可以正確解密,信息一定是公鑰所對應的私鑰持有者發(fā)出的,可以做簽名
04 質數(shù)的前置知識
RSA的安全性是由大數(shù)的質因數(shù)分解保證的。下面是一些質數(shù)的性質:
1、任意兩個質數(shù)構成素質關系,比如:11和17;
2、一個數(shù)是質數(shù),另一個數(shù)只要不是前者的倍數(shù),兩者就構成素質關系,比如3和10;
3、如果兩個數(shù)之中,較大的那個是質數(shù),則兩者構成互質關系,比如97和57;
4、1和任意一個自然數(shù)都是互質關系,比如1和99;
5、p是大于1的整數(shù),則p和p-1構成互質關系,比如57和56;
6、p是大于1的奇數(shù),則p和p-2構成互質關系,比如17和15
05 RSA密鑰生成步驟
舉個“栗子“,假如通信雙方為Alice和Bob,Alice要怎么生成公鑰和私鑰呢?
St ep 1:隨機選擇兩個不相等的質數(shù)p和q;
Alice選擇了3和11。(實際情況中,選擇的越大,就越難破解)
S tep 2 :計算p和q的乘積n;
n = 3*11 = 33,將33轉化為二進制:100001,這個時候密鑰長度就是6位。
Step 3 :計算n的歐拉函數(shù)φ(n);
因為n可以寫為兩個質數(shù)相乘的形式,歐拉函數(shù)對于可以寫成兩個質數(shù)形式有簡單計算方式
φ(n) = (p-1)(q-1)
Step 4 :隨機選擇一個整數(shù)e,條件是1< e < φ(n),且e與φ(n) 互質;
愛麗絲就在1到20之間,隨機選擇了3
Step 5 :計算e對于φ(n)的模反元素d
所謂模反元素,就是指有一個整數(shù)d,可以使得ed被φ(n)除的余數(shù)為1
Step 6 :將n和e封裝成公鑰,n和d封裝成私鑰;
在上面的例子中,n=33,e=3,d=7,所以公鑰就是 (33,3),私鑰就是(33, 7)。
密鑰生成步驟中,一共出現(xiàn)了六個數(shù)字,分別為:
素質的兩個數(shù)p和q,乘積n,歐拉函數(shù)φ(n),隨機質數(shù)e,模反元素d
這六個數(shù)字之中,公鑰用到了兩個(n和e),其余四個數(shù)字都是不公開的,可以刪除。其中最關鍵的是d,因為n和d組成了私鑰,一旦d泄漏,就等于私鑰泄漏。
那么,有無可能在已知n和e的情況下,推導出d?
(1)ed 1 (mod φ(n))。只有知道e和φ(n),才能算出d。
(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
(3)n=pq。只有將n因數(shù)分解,才能算出p和q。
結論是如果n可以被因數(shù)分解,d就可以算出,也就意味著私鑰被破解。
BUT!
大整數(shù)的因數(shù)分解,是一件非常困難的事情。目前,除了暴力破解,還沒有發(fā)現(xiàn)別的有效方法。
維基百科這樣寫道:
"對極大整數(shù)做因數(shù)分解的難度決定了RSA算法的可靠性。換言之,對一極大整數(shù)做因數(shù)分解愈困難,RSA算法愈可靠。
假如有人找到一種快速因數(shù)分解的算法,那么RSA的可靠性就會極度下降。但找到這樣的算法的可能性是非常小的。今天只有較短的RSA密鑰才可能被暴力破解。到現(xiàn)在為止,世界上還沒有任何可靠的攻擊RSA算法的方式。
只要密鑰長度足夠長,用RSA加密的信息實際上是不能被解破的。"
06 RSA加密和解密過程
1、加密要用公鑰(n,e)
假設鮑勃要向愛麗絲發(fā)送加密信息m,他就要用愛麗絲的公鑰 (n,e) 對m進行加密。
所謂"加密",就是算出下式的c:
愛麗絲的公鑰是 (33, 3),鮑勃的m假設是5,那么可以算出下面的等式:
于是,c等于26,鮑勃就把26發(fā)給了愛麗絲。
2、解密要用私鑰(n,d)
愛麗絲拿到鮑勃發(fā)來的26以后,就用自己的私鑰(33, 7) 進行解密。下面的等式一定成立(至于為什么一定成立,證明過程比較復雜,略):
也就是說,c的d次方除以n的余數(shù)為m。現(xiàn)在,c等于26,私鑰是(33, 7),那么,愛麗絲算出:
因此,愛麗絲知道了鮑勃加密前的原文就是5。
至此,加密和解密的整個過程全部完成。整個過程可以看到,加密和解密使用不用的密鑰,且不用擔心密鑰傳遞過程中的泄密問題,這一點上與對稱加密有很大的不同。由于非對稱加密要進行的計算步驟復雜,所以通常情況下,是兩種算法混合使用的。
07 一些其它的
在Part 5的第五步,要求一定要解出二元一次方程的一對正整數(shù)解,如果不存在正整數(shù)解,這該怎么辦?
擴展歐幾里得算法給出了解答:
對于不完全為 0 的非負整數(shù) a,b,gcd(a,b)表示 a,b 的最大公約數(shù),必然存在整數(shù)對 x,y ,使得 gcd(a,b)=ax+by;
第五步其實等價于:ed - kφ(n) = 1, e與φ(n)又互質,形式上完全與擴展歐幾里得算法的一致,所以一定有整數(shù)解存在。
Reference:
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
本文發(fā)布于:2023-02-28 18:46:00,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167758279343682.html
版權聲明:本站內容均來自互聯(lián)網,僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權益請與我們聯(lián)系,我們將在24小時內刪除。
本文word下載地址:非對稱加密(非對稱加密的優(yōu)點和缺點).doc
本文 PDF 下載地址:非對稱加密(非對稱加密的優(yōu)點和缺點).pdf
| 留言與評論(共有 0 條評論) |