非對稱加密原理
⑴ 2019-06-10 對稱加密 和非對稱加密
一、對稱加密
AES加密
AES加密是一種高級加密標准,是一種區塊加密標准。它是一個對稱密碼,就是說加密和解密用相同的密鑰。WPA/WPA2經常用的加密方式就是AES加密演算法。
二、非對稱加密
RSA加密演算法是一種非對稱加密演算法,非對稱加密演算法需要兩個密鑰:公共密鑰和私有密鑰。公鑰和私鑰是配對的,用公鑰加密的數據只有配對的私鑰才能解密。
RSA對加密數據的長度有限制,一般為密鑰的長度值-11,要加密較長的數據,可以採用數據截取的方法,分段加密。
使用場景:
文件或數據在本地使用公鑰或私鑰加密,加密後的數據傳送到伺服器,伺服器使用同一套密鑰中的私鑰或者公鑰進行解密。
一、Https是什麼?
1.HTTPS概念
HTTPS並不是一個單獨的協議,而是對工作在一加密連接(SSL/TLS)上的常規HTTP協議。通過在TCP和HTTP之間加入TLS來加密。
2.SSL/TLS協議
SSL協議,是一種安全傳輸的協議,TLS是SSL v3.0的升級版。
4.HTTPS傳輸速度
1)通信慢
2)SSL必須進行加密處理,比HTTP消耗更多資源
二、TLS/SSL握手
1.密碼學原理
1)對稱加密
加密數據用的秘鑰和解密數據用的密鑰是一樣的。
2)不對稱加密
私有密鑰:一方保管
共有密鑰:雙方公有
RSA演算法。
2.數字證書
1)就是互聯網通訊中標志通訊各方身份信息的一串數字,也是一個文件。
2)為什麼有數字證書?
3)數字證書的頒發過程?
3.SSL與TLS握手的過程?
使用非對稱加密,隨機數不能被隨便破解
Https雙向認證的流程:
a. 客戶端向服務端發送SSL版本等信息
b. 服務端給客戶端返回SSL版本,同時也返回伺服器端的證書
c. 客戶端使用服務的返回的信息驗證伺服器的合法性,
a) 包括:證書是否過期,發型伺服器證書的CA是否可靠,返回的公鑰能正確解開返回證書中的數字簽名,伺服器證書上帝域名是否和伺服器的實際域名想匹配
b) 驗證通過後,將進行通信,否則終止通信
d. 客戶端將自己的證書和公鑰發送給服務端
e. 驗證客戶端的證書,通過驗證後,會獲得客戶端的公鑰
f. 客戶端向服務端發送自己可以支持的對稱加密方案給服務端,讓服務端進行選擇
g. 服務端在客戶端提供的加密方案中選擇加密程度高的加密方式
h. 將加密方案通過使用之前獲取到的公鑰進行加密,返回給客戶端
i. 客戶端收到服務端返回的加密方案後,使用自己的私鑰進行解密,獲取具體的加密方式,最後,產生加密方式的隨機碼,用作過程中的密鑰,使用之前從客戶端證書中獲取到的公鑰進行加密後,發送嘿服務端
j. 服務端收到客戶端發來的消息後,使用私鑰對加密信息進行加密,獲得對稱加密的密鑰
k. 對稱加密,確保通信安全
總結:https實際上就是在TCP層與http層之間加入了SSL/TLS來為上層的安全保駕護航,主要用到了對稱加密,非對稱加密,證書等技術進行客戶端與伺服器的數據加密傳輸,最終達到保證整個通信的安全性。
⑵ 簡要說說對稱加密和非對稱加密的原理以及區別是什麼
對稱加密的原理是數據發送方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。接收方收到密文後,若想解讀原文,則需要使用加密密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。
非對稱加密的原理是甲方首先生成一對密鑰同時將其中的一把作為公開密鑰;得到公開密鑰的乙方再使用該密鑰對需要加密的信息進行加密後再發送給甲方;甲方再使用另一把對應的私有密鑰對加密後的信息進行解密,這樣就實現了機密數據傳輸。
對稱加密和非對稱加密的區別為:密鑰不同、安全性不同、數字簽名不同。
一、密鑰不同
1、對稱加密:對稱加密加密和解密使用同一個密鑰。
2、非對稱加密:非對稱加密加密和解密所使用的不是同一個密鑰,需要兩個密鑰來進行加密和解密。
二、安全性不同
1、對稱加密:對稱加密如果用於通過網路傳輸加密文件,那麼不管使用任何方法將密鑰告訴對方,都有可能被竊聽。
2、非對稱加密:非對稱加密因為它包含有兩個密鑰,且僅有其中的「公鑰」是可以被公開的,接收方只需要使用自己已持有的私鑰進行解密,這樣就可以很好的避免密鑰在傳輸過程中產生的安全問題。
三、數字簽名不同
1、對稱加密:對稱加密不可以用於數字簽名和數字鑒別。
2、非對稱加密:非對稱加密可以用於數字簽名和數字鑒別。
⑶ 什麼是RSA非對稱加密
非對稱密鑰——RSA演算法
RSA演算法是最流行的公鑰密碼演算法,使用長度可以變化的密鑰。RSA是第一個既能用於數據加密也能用於數字簽名的演算法。
RSA演算法原理如下:
1.隨機選擇兩個大質數p和q,p不等於q,計算N=pq;
2.選擇一個大於1小於N的自然數e,e必須與(p-1)(q-1)互素。
3.用公式計算出d:d×e = 1 (mod (p-1)(q-1)) 。
4.銷毀p和q。
最終得到的N和e就是「公鑰」,d就是「私鑰」,發送方使用N去加密數據,接收方只有使用d才能解開數據內容。
RSA的安全性依賴於大數分解,小於1024位的N已經被證明是不安全的,而且由於RSA演算法進行的都是大數計算,使得RSA最快的情況也比DES慢上倍,這是RSA最大的缺陷,因此通常只能用於加密少量數據或者加密密鑰,但RSA仍然不失為一種高強度的演算法。
⑷ 對稱加密和非對稱加密的區別
對稱加密的加密和解密密鑰都是一樣的。而非對稱加密的加密和解密密鑰是不一樣的。它們的演算法也是不同的。
l
對稱加密演算法
對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。對稱加密演算法在分布式網路系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有des、idea和aes。
傳統的des由於只有56位的密鑰,因此已經不適應當今分布式開放網路對數據加密安全性的要求。1997年rsa數據安全公司發起了一項「des挑戰賽」的活動,志願者四次分別用四個月、41天、56個小時和22個小時破解了其用56位密鑰des演算法加密的密文。即des加密演算法在計算機速度提升後的今天被認為是不安全的。
aes是美國聯邦政府採用的商業及政府數據加密標准,預計將在未來幾十年裡代替des在各個領域中得到廣泛應用。aes提供128位密鑰,因此,128位aes的加密強度是56位des加密強度的1021倍還多。假設可以製造一部可以在1秒內破解des密碼的機器,那麼使用這台機器破解一個128位aes密碼需要大約149億萬年的時間。(更深一步比較而言,宇宙一般被認為存在了還不到200億年)因此可以預計,美國國家標准局倡導的aes即將作為新標准取代des。
l
不對稱加密演算法
不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文;收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。廣泛應用的不對稱加密演算法有rsa演算法和美國國家標准局提出的dsa。以不對稱加密演算法為基礎的加密技術應用非常廣泛。
⑸ 圖文徹底搞懂非對稱加密(公鑰密鑰)
前文詳細講解了對稱加密及演算法原理。那麼是不是對稱加密就萬無一失了呢?對稱加密有一個天然的缺點,就是加密方和解密方都要持有同樣的密鑰。你可以能會提出疑問:既然要加、解密,當然雙方都要持有密鑰,這有什麼問題呢?別急,我們繼續往下看。
我們先看一個例子,小明和小紅要進行通信,但是不想被其他人知道通信的內容,所以雙方決定採用對稱加密的方式。他們做了下面的事情:
1、雙方商定了加密和解密的演算法
2、雙方確定密鑰
3、通信過程中採用這個密鑰進行加密和解密
這是不是一個看似完美的方案?但其中有一個步驟存在漏洞!
問題出在步驟2:雙方確定密鑰!
你肯定會問,雙方不確定密鑰,後面的加、解密怎麼做?
問題在於確定下來的密鑰如何讓雙方都知道。密鑰在傳遞過程中也是可能被盜取的!這里引出了一個經典問題:密鑰配送問題。
小明和小紅在商定密鑰的過程中肯定會多次溝通密鑰是什麼。即使單方一次確定下來,也要發給對方。加密是為了保證信息傳輸的安全,但密鑰本身也是信息,密鑰的傳輸安全又該如何保證呢?難不成還要為密鑰的傳輸再做一次加密?這樣不就陷入了死循環?
你是不是在想,密鑰即使被盜取,不還有加密演算法保證信息安全嗎?如果你真的有這個想法,那麼趕緊復習一下上一篇文章講的杜絕隱蔽式安全性。任何演算法最終都會被破譯,所以不能依賴演算法的復雜度來保證安全。
小明和小紅現在左右為難,想加密就要給對方發密鑰,但發密鑰又不能保證密鑰的安全。他們應該怎麼辦呢?
有如下幾種解決密鑰配送問題的方案:
非對稱加密也稱為公鑰密碼。我更願意用非對稱加密這種叫法。因為可以體現出加密和解密使用不同的密鑰。
對稱加密中,我們只需要一個密鑰,通信雙方同時持有。而非對稱加密需要4個密鑰。通信雙方各自准備一對公鑰和私鑰。其中公鑰是公開的,由信息接受方提供給信息發送方。公鑰用來對信息加密。私鑰由信息接受方保留,用來解密。既然公鑰是公開的,就不存在保密問題。也就是說非對稱加密完全不存在密鑰配送問題!你看,是不是完美解決了密鑰配送問題?
回到剛才的例子,小明和下紅經過研究發現非對稱加密能解決他們通信的安全問題,於是做了下面的事情:
1、小明確定了自己的私鑰 mPrivateKey,公鑰 mPublicKey。自己保留私鑰,將公鑰mPublicKey發給了小紅
2、小紅確定了自己的私鑰 hPrivateKey,公鑰 hPublicKey。自己保留私鑰,將公鑰 hPublicKey 發給了小明
3、小明發送信息 「周六早10點soho T1樓下見」,並且用小紅的公鑰 hPublicKey 進行加密。
4、小紅收到信息後用自己的私鑰 hPrivateKey 進行解密。然後回復 「收到,不要遲到」 並用小明的公鑰mPublicKey加密。
5、小明收到信息後用自己的私鑰 mPrivateKey 進行解密。讀取信息後心裡暗想:還提醒我不遲到?每次遲到的都是你吧?
以上過程是一次完整的request和response。通過這個例子我們梳理出一次信息傳輸的非對稱加、解密過程:
1、消息接收方准備好公鑰和私鑰
2、私鑰接收方自己留存、公鑰發布給消息發送方
3、消息發送方使用接收方公鑰對消息進行加密
4、消息接收方用自己的私鑰對消息解密
公鑰只能用做數據加密。公鑰加密的數據,只能用對應的私鑰才能解密。這是非對稱加密的核心概念。
下面我用一個更為形象的例子來幫助大家理解。
我有下圖這樣一個信箱。
由於我只想接收我期望與之通信的朋友信件。於是我在投遞口加了一把鎖,這把鎖的鑰匙(公鑰)我可以復制n份,發給我想接受其信件的人。只有這些人可以用這把鑰匙打開寄信口,把信件投入。
相信通過這個例子,可以幫助大家徹底理解公鑰和私鑰的概念。
RSA 是現在使用最為廣泛的非對稱加密演算法,本節我們來簡單介紹 RSA 加解密的過程。
RSA 加解密演算法其實很簡單:
密文=明文^E mod N
明文=密文^D mod N
RSA 演算法並不會像對稱加密一樣,用玩魔方的方式來打亂原始信息。RSA 加、解密中使用了是同樣的數 N。公鑰是公開的,意味著 N 也是公開的。所以私鑰也可以認為只是 D。
我們接下來看一看 N、E、D 是如何計算的。
1、求 N
首先需要准備兩個很大質數 a 和 b。太小容易破解,太大計算成本太高。我們可以用 512 bit 的數字,安全性要求高的可以使用 1024,2048 bit。
N=a*b
2、求 L
L 只是生成密鑰對過程中產生的數,並不參與加解密。L 是 (a-1) 和 (b-1) 的最小公倍數
3、求 E(公鑰)
E 有兩個限制:
1<E<
E和L的最大公約數為1
第一個條件限制了 E 的取值范圍,第二個條件是為了保證有與 E 對應的解密時用到的 D。
4、求 D(私鑰)
D 也有兩個限制條件:
1<D<L
E*D mod L = 1
第二個條件確保密文解密時能夠成功得到原來的明文。
由於原理涉及很多數學知識,這里就不展開細講,我們只需要了解這個過程中用到這幾個數字及公式。這是理解RSA 安全性的基礎。
由於 N 在公鑰中是公開的,那麼只需要破解 D,就可以解密得到明文。
在實際使用場景中,質數 a,b 一般至少1024 bit,那麼 N 的長度在 2048 bit 以上。D 的長度和 N 接近。以現在計算機的算力,暴力破解 D 是非常困難的。
公鑰是公開的,也就是說 E 和 N 是公開的,那麼是否可以通過 E 和 N 推斷出 D 呢?
E*D mod L = 1
想要推算出 D 就需要先推算出 L。L 是 (a-1) 和 (b-1) 的最小公倍數。想知道 L 就需要知道質數 a 和 b。破解者並不知道這兩個質數,想要破解也只能通過暴力破解。這和直接破解 D 的難度是一樣的。
等等,N 是公開的,而 N = a*b。那麼是否可以對 N 進行質因數分解求得 a 和 b 呢?好在人類還未發現高效進行質因數分解的方法,因此可以認為做質因數分解非常困難。
但是一旦某一天發現了快速做質因數分解的演算法,那麼 RSA 就不再安全
我們可以看出大質數 a 和 b 在 RSA 演算法中的重要性。保證 a 和 b 的安全也就確保了 RSA 演算法的安全性。a 和 b 是通過偽隨機生成器生成的。一旦偽隨機數生成器的演算法有問題,導致隨機性很差或者可以被推斷出來。那麼 RSA 的安全性將被徹底破壞。
中間人攻擊指的是在通信雙方的通道上,混入攻擊者。他對接收方偽裝成發送者,對放送放偽裝成接收者。
他監聽到雙方發送公鑰時,偷偷將消息篡改,發送自己的公鑰給雙方。然後自己則保存下來雙方的公鑰。
如此操作後,雙方加密使用的都是攻擊者的公鑰,那麼後面所有的通信,攻擊者都可以在攔截後進行解密,並且篡改信息內容再用接收方公鑰加密。而接收方拿到的將會是篡改後的信息。實際上,發送和接收方都是在和中間人通信。
要防範中間人,我們需要使用公鑰證書。這部分內容在下一篇文章里會做介紹。
和對稱加密相比較,非對稱加密有如下特點:
1、非對稱加密解決了密碼配送問題
2、非對稱加密的處理速度只有對稱加密的幾百分之一。不適合對很長的消息做加密。
3、1024 bit 的 RSA不應該在被新的應用使用。至少要 2048 bit 的 RSA。
RSA 解決了密碼配送問題,但是效率更低。所以有些時候,根據需求可能會配合使用對稱和非對稱加密,形成混合密碼系統,各取所長。
最後提醒大家,RSA 還可以用於簽名,但要注意是私鑰簽名,公鑰驗簽。發信方用自己的私鑰簽名,收信方用對方公鑰驗簽。關於簽名,後面的文章會再詳細講解。
⑹ 入門密碼學④非對稱加密
公鑰密碼(Public-key cryptography) 也稱非對稱式密碼(Asymmetric cryptography)是密碼學的一種演算法,它需要兩個密鑰,一個是公開密鑰,另一個是私有密鑰; 公鑰用作加密,私鑰則用作解密 。使用公鑰把明文加密後所得的密文,只能用相對應的私鑰才能解密並得到原本的明文,最初用來加密的公鑰不能用作解密。由於加密和解密需要兩個不同的密鑰,故被稱為非對稱加密;不同於加密和解密都使用同一個密鑰的對稱加密。公鑰可以公開,可任意向外發布;私鑰不可以公開。
1976年以前,所有的加密方法都是同一種模式:加密和解密使用同樣的規則。
1976年,由惠特菲爾德·迪菲(Bailey Whitfield Diffie)和馬丁·赫爾曼(Martin Edward Hellman)在1976年首次發表 迪菲-赫爾曼密鑰交換 。
1977年,Ralph Merkle和Martin Hellman 共同設計了一種具體的公鑰密碼演算法-- Knapsack 。
1978年,羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)共同發表了一種公鑰密碼演算法-- RSA 。
RSA 可以說是現在公鑰密碼的事實標准 。
在對稱密碼中,由於加密和解密的密鑰是相同的,因此必須向接收者配送密鑰。由於解密的密鑰必須被配送給接收者,在傳輸中的過程中存在著被竊聽的問題,這一問題稱為 密鑰配送問題 。
解決密鑰配送問題的方法有以下幾種:
RSA 是世界第一個廣泛使用的公鑰演算法,可以被用於公鑰密碼和數字簽名。RSA公開密鑰密碼體制的原理是:根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。它的強度被認為與分解一個非常大的數字的難度有關。以現代數字計算機的當前和可預見的速度,在生成 RSA 密鑰時選擇足夠長的素數應該使該演算法無限期地安全。但是,這種信念尚未在數學上得到證明,並且可能有一種快速分解演算法或一種完全不同的破解 RSA 加密的方法。
ab = 1
然而只根據 N 和 E(注意:不是p和q)要計算出 d 是不可能的。因此,任何人都可對明文進行加密,但只有授權用戶(知道D)才可對密文解密。
RSA 是現在最為普及的一種公鑰密碼演算法,但是除了 RSA之外還有其他的公鑰密碼,基於與 RSA 等效復雜度的不同數學,包括 ElGamal 加密 、 Rabin 方式 和 橢圓曲線加密 。
在密碼學中, ElGamal 加密演算法 是一個基於迪菲-赫爾曼密鑰交換的非對稱加密演算法。它在1985年由塔希爾·蓋莫爾(Taher ElGamal)提出。ElGamal加密演算法利用了 求離散對數的困難數。
Rabin 利用了 下平方根的困難度
橢圓曲線密碼 是通過將橢圓曲線上的特定點進行特殊的乘法運算實現,它利用了這種乘法運算的逆運算非常困難這一特性。它的特點是所需的密鑰長度比 RSA 短。
⑺ 密碼學基礎(三):非對稱加密(RSA演算法原理)
加密和解密使用的是兩個不同的秘鑰,這種演算法叫做非對稱加密。非對稱加密又稱為公鑰加密,RSA只是公鑰加密的一種。
現實生活中有簽名,互聯網中也存在簽名。簽名的作用有兩個,一個是身份驗證,一個是數據完整性驗證。數字簽名通過摘要演算法來確保接收到的數據沒有被篡改,再通過簽名者的私鑰加密,只能使用對應的公鑰解密,以此來保證身份的一致性。
數字證書是將個人信息和數字簽名放到一起,經由CA機構的私鑰加密之後生成。當然,不經過CA機構,由自己完成簽名的證書稱為自簽名證書。CA機構作為互聯網密碼體系中的基礎機構,擁有相當高級的安全防範能力,所有的證書體系中的基本假設或者前提就是CA機構的私鑰不被竊取,一旦 CA J機構出事,整個信息鏈將不再安全。
CA證書的生成過程如下:
證書參與信息傳遞完成加密和解密的過程如下:
互質關系:互質是公約數只有1的兩個整數,1和1互質,13和13就不互質了。
歐拉函數:表示任意給定正整數 n,在小於等於n的正整數之中,有多少個與 n 構成互質關系,其表達式為:
其中,若P為質數,則其表達式可以簡寫為:
情況一:φ(1)=1
1和任何數都互質,所以φ(1)=1;
情況二:n 是質數, φ(n)=n-1
因為 n 是質數,所以和小於自己的所有數都是互質關系,所以φ(n)=n-1;
情況三:如果 n 是質數的某一個次方,即 n = p^k ( p 為質數,k 為大於等於1的整數),則φ(n)=(p-1)p^(k-1)
因為 p 為質數,所以除了 p 的倍數之外,小於 n 的所有數都是 n 的質數;
情況四:如果 n 可以分解成兩個互質的整數之積,n = p1 × p2,則φ(n) = φ(p1p2) = φ(p1)φ(p2)
情況五:基於情況四,如果 p1 和 p2 都是質數,且 n=p1 × p2,則φ(n) = φ(p1p2) = φ(p1)φ(p2)=(p1-1)(p2-1)
而 RSA 演算法的基本原理就是歐拉函數中的第五種情況,即: φ(n)=(p1-1)(p2-1);
如果兩個正整數 a 和 n 互質,那麼一定可以找到整數 b,使得 ab-1 被 n 整除,或者說ab被n除的余數是1。這時,b就叫做a的「模反元素」。歐拉定理可以用來證明模反元素必然存在。
可以看到,a的 φ(n)-1 次方,就是a對模數n的模反元素。
n=p x q = 3233,3233寫成二進制是110010100001,一共有12位,所以這個密鑰就是12位。
在實際使用中,一般場景下選擇1024位長度的數字,更高安全要求的場景下,選擇2048位的數字,這里作為演示,選取p=61和q=53;
因為n、p、q都為質數,所以φ(n) = (p-1)(q-1)=60×52= 3120
注意,這里是和φ(n) 互互質而不是n!假設選擇的值是17,即 e=17;
模反元素就是指有一個整數 d,可以使得 ed 被 φ(n) 除的余數為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是通過模反函數求得,17d=3120y+1,e是公開的等於17,這時候想要求d就要知道3120,也就是φ(n),也就是φ(3233),說白了,3233是公開的,你能對3233進行因數分解,你就能知道d,也就能破解私鑰。
正常情況下,3233我們可以因數分解為61*53,但是對於很大的數字,人類只能通過枚舉的方法來因數分解,所以RSA安全性的本質就是:對極大整數做因數分解的難度決定了RSA演算法的可靠性。換言之,對一極大整數做因數分解愈困難,RSA演算法愈可靠。
人類已經分解的最大整數是:
這個人類已經分解的最大整數為232個十進制位,768個二進制位,比它更大的因數分解,還沒有被報道過,因此目前被破解的最長RSA密鑰就是768位。所以實際使用中的1024位秘鑰基本安全,2048位秘鑰絕對安全。
網上有個段子:
已經得出公私鑰的組成:
公鑰:(n,e)=(3233,2753)
私鑰:(n,d)=(3233,17)
加密的過程就是
解密過程如下:
其中 m 是要被加密的數字,c 是加密之後輸出的結果,且 m < n ,其中解密過程一定成立可以證明的,這里省略證明過程。
總而言之,RSA的加密就是使用模反函數對數字進行加密和求解過程,在實際使用中因為 m < n必須成立,所以就有兩種加密方法:
對稱加密存在雖然快速,但是存在致命的缺點就是秘鑰需要傳遞。非對稱加密雖然不需要傳遞秘鑰就可以完成加密和解密,但是其致命缺點是速度不夠快,不能用於高頻率,高容量的加密場景。所以才有了兩者的互補關系,在傳遞對稱加密的秘鑰時採用非對稱加密,完成秘鑰傳送之後採用對稱加密,如此就可以完美互補。
⑻ 加密的原理什麼
加密有兩種方式:對稱密鑰加密和非對稱密鑰加密:
1. 對稱密鑰加密原理
在加密傳輸中最初是採用對稱密鑰方式,也就是加密和解密都用相同的密鑰。
2. 非對稱密鑰加密原理 正因為對稱密鑰加密方法也不是很安全,於是想到了一種稱之為「非對稱密鑰」加密(也稱公鑰加密)方法。所謂非對稱密鑰加密是指加密和解密用不同的密鑰,其中一個稱之為公鑰,可以對外公開,通常用於數據加密,另一個相對稱之為私鑰,是不能對外公布的,通常用於數據解密。而且公/私鑰必須成對使用,也就是用其中一個密鑰加密的數據只能由與其配對的另一個密鑰進行解密。這樣用公鑰加密的數據即使被人非法截取了,因為他沒有與之配對的私鑰(私鑰僅發送方自己擁有),也不能對數據進行解密,確保了數據的安全。