一個好的加密演算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,並用它來加密明文,不同的密碼或密鑰產生不同的密文。這又分為兩種方式:對稱密鑰演算法和非對稱密鑰演算法。所謂對稱密鑰演算法就是加密解密都使用相同的密鑰,非對稱密鑰演算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密演算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數學理論上講,幾乎沒有真正不可逆的演算法存在。例如,對於一個輸入『a』執行一個操作得到結果『b』,那麼我們可以基於『b』,做一個相對應的操作,導出輸入『a』。在一些情況下,對於每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數為0)。對於一個沒有定義的操作來講,基於加密演算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密演算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。
rsa加密演算法使用了兩個非常大的素數來產生公鑰和私鑰。即使從一個公鑰中通過因數分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至於在現實上是不可行的。加密演算法本身也是很慢的,這使得使用rsa演算法加密大量的數據變的有些不可行。這就使得一些現實中加密演算法都基於rsa加密演算法。pgp演算法(以及大多數基於rsa演算法的加密方法)使用公鑰來加密一個對稱加密演算法的密鑰,然後再利用一個快速的對稱加密演算法來加密數據。這個對稱演算法的密鑰是隨機產生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。
我們舉一個例子:假定現在要加密一些數據使用密鑰『12345』。利用rsa公鑰,使用rsa演算法加密這個密鑰『12345』,並把它放在要加密的數據的前面(可能後面跟著一個分割符或文件長度,以區分數據和密鑰),然後,使用對稱加密演算法加密正文,使用的密鑰就是『12345』。當對方收到時,解密程序找到加密過的密鑰,並利用rsa私鑰解密出來,然後再確定出數據的開始位置,利用密鑰『12345』來解密數據。這樣就使得一個可靠的經過高效加密的數據安全地傳輸和解密。
② 公鑰加密的常見演算法
RSA、ElGamal、背包演算法、Rabin(Rabin的加密法可以說是RSA方法的特例)、Diffie-Hellman
(D-H)
密鑰交換協議中的公鑰加密演算法、Elliptic
Curve
Cryptography(ECC,橢圓曲線加密演算法)。使用最廣泛的是RSA演算法(由發明者Rivest、Shmir和Adleman姓氏首字母縮寫而來)是著名的公開金鑰加密演算法,ElGamal是另一種常用的非對稱加密演算法。
③ 公鑰和私鑰加密主要演算法有哪些,其基本思想是什麼
加密演算法
加密技術是對信息進行編碼和解碼的技術,編碼是把原來可讀信息(又稱明文)譯成代碼形式(又稱密文),其逆過程就是解碼(解密)。加密技術的要點是加密演算法,加密演算法可以分為對稱加密、不對稱加密和不可逆加密三類演算法。
對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。對稱加密演算法在分布式網路系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有DES和IDEA等。美國國家標准局倡導的AES即將作為新標准取代DES。
不對稱加密演算法不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文;收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。廣泛應用的不對稱加密演算法有RSA演算法和美國國家標准局提出的DSA。以不對稱加密演算法為基礎的加密技術應用非常廣泛。
不可逆加密演算法 不可逆加密演算法的特徵是加密過程中不需要使用密鑰,輸入明文後由系統直接經過加密演算法處理成密文,這種加密後的數據是無法被解密的,只有重新輸入明文,並再次經過同樣不可逆的加密演算法處理,得到相同的加密密文並被系統重新識別後,才能真正解密。顯然,在這類加密過程中,加密是自己,解密還得是自己,而所謂解密,實際上就是重新加一次密,所應用的「密碼」也就是輸入的明文。不可逆加密演算法不存在密鑰保管和分發問題,非常適合在分布式網路系統上使用,但因加密計算復雜,工作量相當繁重,通常只在數據量有限的情形下使用,如廣泛應用在計算機系統中的口令加密,利用的就是不可逆加密演算法。近年來,隨著計算機系統性能的不斷提高,不可逆加密的應用領域正在逐漸增大。在計算機網路中應用較多不可逆加密演算法的有RSA公司發明的MD5演算法和由美國國家標准局建議的不可逆加密標准SHS(Secure Hash Standard:安全雜亂信息標准)等。
加密技術
加密演算法是加密技術的基礎,任何一種成熟的加密技術都是建立多種加密演算法組合,或者加密演算法和其他應用軟體有機結合的基礎之上的。下面我們介紹幾種在計算機網路應用領域廣泛應用的加密技術。
非否認(Non-repudiation)技術 該技術的核心是不對稱加密演算法的公鑰技術,通過產生一個與用戶認證數據有關的數字簽名來完成。當用戶執行某一交易時,這種簽名能夠保證用戶今後無法否認該交易發生的事實。由於非否認技術的操作過程簡單,而且直接包含在用戶的某類正常的電子交易中,因而成為當前用戶進行電子商務、取得商務信任的重要保證。
PGP(Pretty Good Privacy)技術 PGP技術是一個基於不對稱加密演算法RSA公鑰體系的郵件加密技術,也是一種操作簡單、使用方便、普及程度較高的加密軟體。PGP技術不但可以對電子郵件加密,防止非授權者閱讀信件;還能對電子郵件附加數字簽名,使收信人能明確了解發信人的真實身份;也可以在不需要通過任何保密渠道傳遞密鑰的情況下,使人們安全地進行保密通信。PGP技術創造性地把RSA不對稱加密演算法的方便性和傳統加密體系結合起來,在數字簽名和密鑰認證管理機制方面採用了無縫結合的巧妙設計,使其幾乎成為最為流行的公鑰加密軟體包。
數字簽名(Digital Signature)技術 數字簽名技術是不對稱加密演算法的典型應用。數字簽名的應用過程是,數據源發送方使用自己的私鑰對數據校驗和或其他與數據內容有關的變數進行加密處理,完成對數據的合法「簽名」,數據接收方則利用對方的公鑰來解讀收到的「數字簽名」,並將解讀結果用於對數據完整性的檢驗,以確認簽名的合法性。數字簽名技術是在網路系統虛擬環境中確認身份的重要技術,完全可以代替現實過程中的「親筆簽字」,在技術和法律上有保證。在公鑰與私鑰管理方面,數字簽名應用與加密郵件PGP技術正好相反。在數字簽名應用中,發送者的公鑰可以很方便地得到,但他的私鑰則需要嚴格保密。
PKI(Public Key Infrastructure)技術 PKI技術是一種以不對稱加密技術為核心、可以為網路提供安全服務的公鑰基礎設施。PKI技術最初主要應用在Internet環境中,為復雜的互聯網系統提供統一的身份認證、數據加密和完整性保障機制。由於PKI技術在網路安全領域所表現出的巨大優勢,因而受到銀行、證券、政府等核心應用系統的青睞。PKI技術既是信息安全技術的核心,也是電子商務的關鍵和基礎技術。由於通過網路進行的電子商務、電子政務等活動缺少物理接觸,因而使得利用電子方式驗證信任關系變得至關重要,PKI技術恰好能夠有效解決電子商務應用中的機密性、真實性、完整性、不可否認性和存取控制等安全問題。一個實用的PKI體系還必須充分考慮互操作性和可擴展性。PKI體系所包含的認證中心(CA)、注冊中心(RA)、策略管理、密鑰與證書管理、密鑰備份與恢復、撤銷系統等功能模塊應該有機地結合在一起。
加密的未來趨勢
盡管雙鑰密碼體制比單鑰密碼體制更為可靠,但由於計算過於復雜,雙鑰密碼體制在進行大信息量通信時,加密速率僅為單鑰體制的1/100,甚至是 1/1000。正是由於不同體制的加密演算法各有所長,所以在今後相當長的一段時期內,各類加密體制將會共同發展。而在由IBM等公司於1996年聯合推出的用於電子商務的協議標准SET(Secure Electronic Transaction)中和1992年由多國聯合開發的PGP技術中,均採用了包含單鑰密碼、雙鑰密碼、單向雜湊演算法和隨機數生成演算法在內的混合密碼系統的動向來看,這似乎從一個側面展示了今後密碼技術應用的未來。
在單鑰密碼領域,一次一密被認為是最為可靠的機制,但是由於流密碼體制中的密鑰流生成器在演算法上未能突破有限循環,故一直未被廣泛應用。如果找到一個在演算法上接近無限循環的密鑰流生成器,該體制將會有一個質的飛躍。近年來,混沌學理論的研究給在這一方向產生突破帶來了曙光。此外,充滿生氣的量子密碼被認為是一個潛在的發展方向,因為它是基於光學和量子力學理論的。該理論對於在光纖通信中加強信息安全、對付擁有量子計算能力的破譯無疑是一種理想的解決方法。
由於電子商務等民用系統的應用需求,認證加密演算法也將有較大發展。此外,在傳統密碼體制中,還將會產生類似於IDEA這樣的新成員,新成員的一個主要特徵就是在演算法上有創新和突破,而不僅僅是對傳統演算法進行修正或改進。密碼學是一個正在不斷發展的年輕學科,任何未被認識的加/解密機制都有可能在其中佔有一席之地。
目前,對信息系統或電子郵件的安全問題,還沒有一個非常有效的解決方案,其主要原因是由於互聯網固有的異構性,沒有一個單一的信任機構可以滿足互聯網全程異構性的所有需要,也沒有一個單一的協議能夠適用於互聯網全程異構性的所有情況。解決的辦法只有依靠軟體代理了,即採用軟體代理來自動管理用戶所持有的證書(即用戶所屬的信任結構)以及用戶所有的行為。每當用戶要發送一則消息或一封電子郵件時,代理就會自動與對方的代理協商,找出一個共同信任的機構或一個通用協議來進行通信。在互聯網環境中,下一代的安全信息系統會自動為用戶發送加密郵件,同樣當用戶要向某人發送電子郵件時,用戶的本地代理首先將與對方的代理交互,協商一個適合雙方的認證機構。當然,電子郵件也需要不同的技術支持,因為電子郵件不是端到端的通信,而是通過多個中間機構把電子郵件分程傳遞到各自的通信機器上,最後到達目的地。
④ 公鑰加密演算法有哪些它與對稱加密演算法之間的關系是什麼
簡單來說,如果攻擊者獲得了對稱加密的加密方法或加密思路,那麼可以在短時間內破解密文。
但是對於公鑰加密,即使攻擊者獲得了加密方法,如果拿不到密鑰的話,則無法在短時間內破解密文。
最經典的公鑰加密演算法是RSA演算法,該演算法利用大數難以拆分的特性對明文進行加密。
祝你成功。
⑤ 公鑰密碼→RSA詳解
在對稱密碼中,由於加密和解密的密鑰是相同的,因此必須向接收者配送密鑰。用於解密的密鑰必須被配送給接收者,這一問題稱為 密鑰配送問題 ,如果使用公鑰密碼,則無需向接收者配送用於解密的密鑰,這樣就解決了密鑰配送問題。可以說公鑰密碼是密碼學歷史上最偉大的發明。
解決密鑰配送問題的方法
在人數很多的情況下,通信所需要的密鑰數量會增大,例如:1000名員工中每一個人都可以和另外999個進行通信,則每個人需要999個通信密鑰,整個密鑰數量:
1000 x 999 ÷ 2 = 499500
很不現實,因此此方法有一定的局限性
在Diffic-Hellman密鑰交換中,進行加密通信的雙方需要交換一些信息,而這些信息即便被竊聽者竊聽到也沒有問題(後續文章會進行詳解)。
在對稱密碼中,加密密鑰和解密密鑰是相同的,但公鑰密碼中,加密密鑰和解密密鑰卻是不同的。只要擁有加密密鑰,任何人都可以加密,但沒有解密密鑰是無法解密的。
公鑰密碼中,密鑰分為加密密鑰(公鑰)和解密密鑰(私鑰)兩種。
公鑰和私鑰是一一對應的,一對公鑰和私鑰統稱為密鑰對,由公鑰進行加密的密文,必須使用與該公鑰配對的私鑰才能夠解密。密鑰對中的兩個密鑰之間具有非常密切的關系——數學上的關系——因此公鑰和私鑰是不能分別單獨生成的。
發送者:Alice 接收者:Bob 竊聽者:Eve
通信過程是由接收者Bob來啟動的
公鑰密碼解決了密鑰配送的問題,但依然面臨著下面的問題
RSA是目前使用最廣泛的公鑰密碼演算法,名字是由它的三位開發者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏的首字母組成的(Rivest-Shamir-Adleman)。RSA可以被使用公鑰密碼和數字簽名(此文只針對公鑰密碼進行探討,數字簽名後續文章敬請期待)1983年在美國取得了專利,但現在該專利已經過期。
在RSA中,明文、密鑰和密文都是數字,RSA加密過程可以用下列公式來表達
密文 = 明文 E mod N
簡單的來說,RSA的密文是對代表明文的數字的 E 次方求mod N 的結果,換句話說:將明文和自己做 E 次乘法,然後將結果除以 N 求余數,這個余數就是密文。
RSA解密過程可以用下列公式來表達
明文 = 密文 D mod N
對表示密文的數字的 D 次方求mod N 就可以得到明文,換句話說:將密文和自己做 D 次乘法,在對其結果除以 N 求余數,就可以得到明文
此時使用的數字 N 和加密時使用的數字 N 是相同的,數 D 和數 N 組合起來就是RSA的解密密鑰,因此 D 和 N 的組合就是私鑰 。只要知道 D 和 N 兩個數的人才能夠完成解密的運算
根據加密和解密的公式可以看出,需要用到三個數—— E 、 D 和 N 求這三個數就是 生成密鑰對 ,RSA密鑰對的生成步驟如下:
准備兩個很大的質數 p 和 q ,將這兩個數相乘,結果就是 N
N = p x q
L 是 p-1 和 q-1 的最小公倍數,如果用lcm( X , Y )來表示 「 X 和 Y 的最小公倍數」 則L可以寫成下列形式
L = lcm ( p - 1, q - 1)
E 是一個比1大、比 L 小的數。 E 和 L 的最大公約數必須為1,如果用gcd( X , Y )來表示 X 和 Y 的最大公約數,則 E 和 L 之間存在下列關系:
1 < E < L
gcd( E , L ) = 1 (是為了保證一定存在解密時需要使用的數 D )
1 < D < L
E x D mod L = 1
p = 17
q = 19
N = p x q = 17 x 19 = 323
L = lcm ( p - 1, q - 1) = lcm (16,18) = 144
gcd( E , L ) = 1
滿足條件的 E 有很多:5,7,11,13,17,19,23,25,29,31...
這里選擇5來作為 E ,到這里我們已經知道 E = 5 N = 323 這就是公鑰
E x D mod L = 1
D = 29 可以滿足上面的條件,因此:
公鑰: E = 5 N = 323
私鑰: D = 29 N = 323
要加密的明文必須是小於 N 的數,這是因為在加密運算中需要求 mod N 假設加密的明文是123
明文 E mod N = 123 5 mod 323 = 225(密文)
對密文225進行解密
密文 D mod N = 225 29 mod 323 = 225 10 x 225 10 x 225 9 mod 323 = (225 10 mod 323) x (225 10 mod 323) x (225 9 mod 323) = 16 x 16 x 191 mod 323 = 48896 mod 323 = 123(明文)
如果沒有mod N 的話,即:
明文 = 密文 D mod N
通過密文求明文的難度不大,因為這可以看作是一個求對數的問題。
但是,加上mod N 之後,求明文就變成了求離散對數的問題,這是非常困難的,因為人類還沒有發現求離散對數的高效演算法。
只要知道 D ,就能夠對密文進行解密,逐一嘗試 D 來暴力破譯RSA,暴力破解的難度會隨著D的長度增加而加大,當 D 足夠長時,就不能再現實的時間內通過暴力破解找出數 D
目前,RSA中所使用的 p 和 q 的長度都是1024比特以上, N 的長度為2048比特以上,由於 E 和 D 的長度可以和N差不多,因此要找出 D ,就需要進行2048比特以上的暴力破解。這樣的長度下暴力破解找出 D 是極其困難的
E x D mod L = 1 L = lcm ( p - 1, q - 1)
由 E 計算 D 需要使用 p 和 q ,但是密碼破譯者並不知道 p 和 q
對於RSA來說,有一點非常重要,那就是 質數 p 和 q 不能被密碼破譯這知道 。把 p 和 q 交給密碼破譯者與把私鑰交給密碼破譯者是等價的。
p 和 q 不能被密碼破譯者知道,但是 N = p x q 而且 N 是公開的, p 和 q 都是質數,因此由 N 求 p 和 q 只能通過 將 N 進行質因數分解 ,所以說:
一旦發現了對大整數進行質因數分解的高效演算法,RSA就能夠被破譯
這種方法雖然不能破譯RSA,但卻是一種針對機密性的有效攻擊。
所謂中間人攻擊,就是主動攻擊者Mallory混入發送者和接收者的中間,對發送者偽裝成接收者,對接收者偽裝成發送者的攻擊,在這里,Mallory就是「中間人」
這種攻擊不僅針對RSA,而是可以針對任何公鑰密碼。在這個過程中,公鑰密碼並沒有被破譯,所有的密碼演算法也都正常工作並確保了機密性。然而,所謂的機密性並非在Alice和Bob之間,而是在Alice和Mallory之間,以及Mallory和Bob之間成立的。 僅靠公鑰密碼本身,是無法防禦中間人攻擊的。
要防禦中間人攻擊,還需要一種手段來確認所收到的公鑰是否真的屬於Bob,這種手段稱為認證。在這種情況下,我們可以使用公鑰的 證書 (後面會陸續更新文章來進行探討)
網路上很多伺服器在收到格式不正確的數據時都會向通信對象返回錯誤消息,並提示「這里的數據有問題」,然而,這種看似很貼心的設計卻會讓攻擊者有機可乘。 攻擊者可以向伺服器反復發送自己生成的偽造密文,然後分析返回的錯誤消息和響應時間獲得一些關於密鑰和明文的信息。
為了抵禦這種攻擊,可以對密文進行「認證」,RSA-OAEP(最優非對稱加密填充)正是基於這種思路設計的一種RSA改良演算法。
RSA-OAEP在加密時會在明文前面填充一些認證信息,包括明文的散列值以及一定數量的0,然後用RSA進行加密,在解密的過程中,如果解密後的數據的開頭沒有找到正確的認證信息,則可以判定有問題,並返回固定的錯誤消息(重點是,不能將具體的錯誤內容告知開發者)
RSA-OAEP在實際應用中,還會通過隨機數使得每次生成的密文呈現不同的排列方式,從而進一步提高安全性。
隨著計算機技術的進步等,以前被認為是安全的密碼會被破譯,這一現象稱為 密碼劣化 ,針對這一點:
⑥ 什麼是公鑰密碼演算法
20世紀70年代,美國學者Diffie和Hellman,以及以色列學者Merkle分別獨立地提出了一種全新的密碼體制的概念。Diffie和Hellman首先將這個概念公布在1976年美國國家計算機會議上,幾個月後,他們這篇開創性的論文《密碼學的新方向》發表在IEEE雜志資訊理論卷上,由於印刷原因,Merkle對這一領域的貢獻直到1978年才出版。他們所創造的新的密碼學理論,突破了傳統的密碼體制對稱密鑰的概念,豎起了近代密碼學的又一里程碑。
不同於以前採用相同的加密和解密密鑰的對稱密碼體制,Diffie和Hellman提出了採用雙鑰體制,即每個用戶都有一對選定的密鑰:一個是可以公開的,另一個則是秘密的。公開的密鑰可以像電話號碼一樣公布,因此稱為公鑰密碼體制或雙鑰體制。
公鑰密碼體制的主要特點是將加密和解密的能力分開,因而可以實現多個用戶的信息只能由一個用戶解讀;或只能由一個用戶加密消息而由多個用戶解讀,前者可以用於公共網路中實現保密通信,而後者可以用於認證系統中對消息進行數字簽名。
公開密鑰密碼的基本思想是將傳統密碼的密鑰一分為二,分為加密密鑰Ke和解密密鑰Kd,用加密密鑰Ke控制加密,用解密密鑰Kd控制解密。而且由計算復雜性確保加密密鑰Ke在計算上不能推導出解密密鑰Kd。這樣,即使將Ke公開也不會暴露Kd,也不會損害密碼的安全。於是便可以將Ke公開,而只對Kd保密。由於Ke是公開的,只有Kd是保密的,因此從根本上克服了傳統密碼在密鑰分配上的困難。
公開密鑰密碼滿足的條件
根據公開密鑰密碼的基本思想,可知一個公開密鑰密碼應當滿足下面三個條件:
條件1是構成密碼的基本條件,是傳統密碼和公開密鑰密碼都必須具備的起碼條件。
條件2是公開密鑰密碼的安全條件,是公開密鑰密碼的安全基礎,而且這一條件是最難滿足的。目前尚不能從數學上證明一個公開密鑰密碼完全滿足這一條件,而只能證明它不滿足這一條件。
條件3是公開密鑰密碼的工程實用條件。因為只有演算法E和D都是高效的,密碼才能實用。否則,密碼只有理論意義,而不能實際應用。
滿足了以上三個條件,便可構成一個公開密鑰密碼,這個密碼可以確保數據的秘密性。然而還需要確保數據的真實性,則還需滿足第四個條件。
4.對於所有明文M都有E(D(M,Kd),Ke)=M。
條件4是公開密鑰密碼能夠確保數據真實性的基本條件。如果滿足了條件1、2、4,同樣可以構成一個公開密鑰密碼,這個密碼可以確保數據的真實性。
如果同時滿足以上四個條件,則公開密鑰密碼可以同時確保數據的秘密性和真實性。此時,對於所有的明文M都有D(E(M,Ke),Kd)= E(D(M,Kd),Ke)=M。
公開密鑰密碼從根本上克服了傳統密碼在密鑰分配上的困難,利用公開密鑰密碼進行保密通信需要成立一個密鑰管理機構(KMC),每個用戶將自己的姓名、地址和公開的加密密鑰等信息在KMC登記注冊,將公鑰記入共享的公開密鑰資料庫。KMC負責密鑰的管理,並對用戶是可信賴的。這樣,用戶利用公開密鑰密碼進行保密通信就像查電話號碼簿打電話一樣方便,再也不需要通信雙方預約密鑰,因此特別適合計算機網路應用,而且公開密鑰密碼實現數字簽名容易,所以特別受歡迎。
下圖是公鑰密碼體制的框圖,主要分為以下幾步:
這就是公開密鑰的原理~
(轉載需向本人獲取許可權)
⑦ 【前端】常用加密方法
• JavaScript 加密後傳輸(具體可以參考後面的常見加密方法)
• 瀏覽器插件內進行加密傳輸
• Https 傳輸
在加密演算法中又分為對稱加密和非對稱加密。
對稱加密採用了對稱密碼編碼技術,它的特點是文件加密和解密使用相同的密鑰加密.也就是加密和解密都是用同一個密鑰,這種方法在密碼學中叫做對稱加密演算法.
對稱加密演算法使用起來簡單快捷,密鑰較短,且破譯困難,除了數據加密標准(DES),另一個對稱密鑰加密系統是國際數據加密演算法(IDEA),它比DES的加密性好,而且對計算機功能要求也沒有那麼高.
常見的對稱加密演算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
注意: 因為前端的透明性,對於登錄密碼等敏感信息,就不要使用JavaScript來進行對稱加密. 因為別人可以從前端得到密匙後,可以直接對信息進行解密!
非對稱加密演算法需要兩個密鑰:公鑰(publickey)和私鑰(privatekey)。 公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密;如果用私鑰對數據進行加密,那麼只有用對應的公鑰才能解密。 因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。
非對稱加密演算法實現機密信息交換的基本過程是:甲方生成一對密鑰並將其中的一把作為公鑰向其它方公開;得到該公鑰的乙方使用該密鑰對機密信息進行加密後再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密後的信息進行解密。甲方只能用其專用密鑰解密由其公鑰加密後的任何信息。
常見的非對稱加密演算法有:RSA、ECC(移動設備用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)
⑧ 公鑰和私鑰加密主要演算法有哪些,其基本思想是什麼
加密演算法nbsp;nbsp;nbsp;nbsp;加密技術是對信息進行編碼和解碼的技術,編碼是把原來可讀信息(又稱明文)譯成代碼形式(又稱密文),其逆過程就是解碼(解密)。加密技術的要點是加密演算法,加密演算法可以分為對稱加密、不對稱加密和不可逆加密三類演算法。nbsp;nbsp;nbsp;nbsp;對稱加密演算法nbsp;nbsp;對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。對稱加密演算法在分布式網路系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有DES和IDEA等。美國國家標准局倡導的AES即將作為新標准取代DES。nbsp;nbsp;nbsp;nbsp;不對稱加密演算法不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文;收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。廣泛應用的不對稱加密演算法有RSA演算法和美國國家標准局提出的DSA。以不對稱加密演算法為基礎的加密技術應用非常廣泛。nbsp;nbsp;nbsp;nbsp;不可逆加密演算法nbsp;nbsp;不可逆加密演算法的特徵是加密過程中不需要使用密鑰,輸入明文後由系統直接經過加密演算法處理成密文,這種加密後的數據是無法被解密的,只有重新輸入明文,並再次經過同樣不可逆的加密演算法處理,得到相同的加密密文並被系統重新識別後,才能真正解密。顯然,在這類加密過程中,加密是自己,解密還得是自己,而所謂解密,實際上就是重新加一次密,所應用的「密碼」也就是輸入的明文。不可逆加密演算法不存在密鑰保管和分發問題,非常適合在分布式網路系統上使用,但因加密計算復雜,工作量相當繁重,通常只在數據量有限的情形下使用,如廣泛應用在計算機系統中的口令加密,利用的就是不可逆加密演算法。近年來,隨著計算機系統性能的不斷提高,不可逆加密的應用領域正在逐漸增大。在計算機網路中應用較多不可逆加密演算法的有RSA公司發明的MD5演算法和由美國國家標准局建議的不可逆加密標准SHS(Securenbsp;Hashnbsp;Standard:安全雜亂信息標准)等。加密技術nbsp;nbsp;nbsp;nbsp;加密演算法是加密技術的基礎,任何一種成熟的加密技術都是建立多種加密演算法組合,或者加密演算法和其他應用軟體有機結合的基礎之上的。下面我們介紹幾種在計算機網路應用領域廣泛應用的加密技術。nbsp;nbsp;nbsp;nbsp;非否認(Non-repudiation)技術nbsp;nbsp;該技術的核心是不對稱加密演算法的公鑰技術,通過產生一個與用戶認證數據有關的數字簽名來完成。當用戶執行某一交易時,這種簽名能夠保證用戶今後無法否認該交易發生的事實。由於非否認技術的操作過程簡單,而且直接包含在用戶的某類正常的電子交易中,因而成為當前用戶進行電子商務、取得商務信任的重要保證。nbsp;nbsp;nbsp;nbsp;PGP(Prettynbsp;Goodnbsp;Privacy)技術nbsp;nbsp;PGP技術是一個基於不對稱加密演算法RSA公鑰體系的郵件加密技術,也是一種操作簡單、使用方便、普及程度較高的加密軟體。PGP技術不但可以對電子郵件加密,防止非授權者閱讀信件;還能對電子郵件附加數字簽名,使收信人能明確了解發信人的真實身份;也可以在不
⑨ 什麼是公鑰加密
什麼是公鑰加密
公鑰加密,也叫非對稱(密鑰)加密(public key encryption),屬於通信科技下的網路安全二級學科,指的是由對應的一對唯一性密鑰(即公開密鑰和私有密鑰)組成的加密方法。它解決了密鑰的發布和管理問題,是目前商業密碼的核心。在公鑰加密體制中,沒有公開的是明文,公開的是密文,公鑰,演算法。
常見演算法
RSA、ElGamal、背包演算法、Rabin(Rabin的加密法可以說是RSA方法的特例)、Diffie-Hellman (D-H) 密鑰交換協議中的公鑰加密演算法、Elliptic Curve Cryptography(ECC,橢圓曲線加密演算法)。使用最廣泛的是RSA演算法(由發明者Rivest、Shmir和Adleman姓氏首字母縮寫而來)是著名的公開金鑰加密演算法,ElGamal是另一種常用的非對稱加密演算法。
緣起
該思想最早由雷夫·莫寇(Ralph C. Merkle)在1974年提出,之後在1976年。狄菲(Whitfield Diffie)與赫爾曼(Martin Hellman)兩位學者以單向函數與單向暗門函數為基礎,為發訊與收訊的兩方創建金鑰。
非對稱
是指一對加密密鑰與解密密鑰,這兩個密鑰是數學相關,用某用戶密鑰加密後所得的信息,只能用該用戶的解密密鑰才能解密。如果知道了其中一個,並不能計算出另外一個。因此如果公開了一對密鑰中的一個,並不會危害到另外一個的秘密性質。稱公開的密鑰為公鑰;不公開的密鑰為私鑰。
如果加密密鑰是公開的,這用於客戶給私鑰所有者上傳加密的數據,這被稱作為公開密鑰加密(狹義)。例如,網路銀行的客戶發給銀行網站的賬戶操作的加密數據。
如果解密密鑰是公開的,用私鑰加密的信息,可以用公鑰對其解密,用於客戶驗證持有私鑰一方發布的數據或文件是完整准確的,接收者由此可知這條信息確實來自於擁有私鑰的某人,這被稱作數字簽名,公鑰的形式就是數字證書。例如,從網上下載的安裝程序,一般都帶有程序製作者的數字簽名,可以證明該程序的確是該作者(公司)發布的而不是第三方偽造的且未被篡改過(身份認證/驗證)。
⑩ 公鑰演算法原理
這是一種不對稱加密演算法。公鑰演算法包括快速公鑰演算法與傳統公鑰演算法。快速公鑰演算法與傳統公鑰演算法相比具有更廣泛地應用前景,對快速公鑰系統的研究是當前公鑰系統研究的一個熱點。
定義
不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信者使用收信者的公鑰加密信件,收信者使用自己的私鑰鑰解密信件。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。廣泛應用的不對稱加密演算法有RSA演算法和美國國家標准局提出的DSA。以不對稱加密演算法為基礎的加密技術應用非常廣泛。
工作原理
1976 年,Whitfield Diffe 和 Martin Hellman 創建了公鑰加密。公鑰加密是重大的創新,因為它從根本上改變了加密和解密的過程。
Diffe 和 Hellman 提議使用兩個密鑰,而不是使用一個共享的密鑰。一個密鑰(稱為「私鑰」)是保密的。它只能由一方保存,而不能各方共享。第二個密鑰(稱為「公鑰」)不是保密的,可以廣泛共享。這兩個密鑰(稱為「密鑰對」)在加密和解密操作中配合使用。密鑰對具有特殊的互補關系,從而使每個密鑰都只能與密鑰對中的另一個密鑰配合使用。這一關系將密鑰對中的密鑰彼此唯一地聯系在一起:公鑰與其對應的私鑰組成一對,並且與其他任何密鑰都不關聯。
由於公鑰和私鑰的演算法之間存在特殊的數學關系,從而使得這種配對成為可能。密鑰對在數學上彼此相關,例如,配合使用密鑰對可以實現兩次使用對稱密鑰的效果。密鑰必須配合使用:不能使用每個單獨的密鑰來撤消它自己的操作。這意味著每個單獨密鑰的操作都是單向操作:不能使用一個密鑰來撤消它的操作。此外,設計兩個密鑰使用的演算法時,特意設計無法使用一個密鑰確定密鑰對中的另一個密鑰。因此,不能根據公鑰確定出私鑰。但是,使得密鑰對成為可能的數學原理也使得密鑰對具有對稱密鑰所不具有的一個缺點。這就是,所使用的演算法必須足夠強大,才能使人們無法通過強行嘗試,使用已知的公鑰來解密通過它加密的信息。公鑰利用數學復雜性以及它的單向特性來彌補它是眾所周知的這樣一個事實,以防止人們成功地破解使用它編碼的信息。
如果將此概念應用於前面的示例,則發件人將使用公鑰將純文本加密成密碼。然後,收件人將使用私鑰將密碼重新解密成純文本。
由於密鑰對中的私鑰和公鑰之間所存在的特殊關系,因此一個人可以在與許多人交往時使用相同的密鑰對,而不必與每個人分別使用不同的密鑰。只要私鑰是保密的,就可以隨意分發公鑰,並讓人們放心地使用它。使許多人使用同一個密鑰對代表著密碼學上的一個重大突破,因為它顯著降低了密鑰管理的需求,大大提高了密碼學的可用性。用戶可以與任意數目的人員共享一個密鑰對,而不必為每個人單獨設立一個密鑰。
公鑰加密是郵件安全中的一個基本要素。如果沒有公鑰加密,那麼是否存在實用的郵件安全解決方案是值得懷疑的,因為在公鑰加密出現之前,密鑰管理是一件很麻煩的事情。在了解了公鑰加密的基本概念之後,接下來便是了解如何藉助這些概念來實現郵件安全性。