⑴ 非對稱加密中的公私鑰究竟是如何工作的
一直以來,對於加解密這塊接觸的非常少,遇到問題也只能咨詢同事,尷尬的是越解釋越糊塗,考慮到網路安全和數據加密也是微服務開發中的一個重要環節,同時為了盡可能弄明白加解密這塊,遂將一些有用的思考整理下來,分享給大家。
在加解密的領域中,非對稱加密(Asymmetric Cryptographic Algorithm)已經滲入到網路交互的各個環節中了,我們都知道其中主流的RSA加密演算法包含一對公私鑰(Public Key & Private Key),但他們究竟是如何一起工作的?
下面會用微服務對接為例子來解釋公私鑰的交互過程。
正如在圖中看到的,在服務雙方對接之前,雙方需要交換各自的公鑰,這樣Service A就會有:
下面開始交互過程。
這里解釋一下,「數據簽名/加簽」其實就是用自己的私鑰去給數據Hash做一層加密,對方在收到數據簽名的時候,可以使用對方的公鑰來解密這個簽名,就會得到來自對方的數據Hash,緊接著用自己的私鑰解密出數據並Hash,來比較兩個Hash數據看是否一致來確認是否有被第三方篡改。
在Service B收到Service A的請求後,它需要先使用B_private.key 來解密Data得到明文數據,然後使用A_public.key來驗證簽名,對比簽名中的Hash和自己手上的數據Hash是否一致,這就是Service B中的驗簽流程。
在驗簽和解密通過後,它就可以繼續走自己的業務邏輯了。
對於Service B往Service A發送請求,和上面的流程一樣只是流程方向反過來了。
⑵ 目前具體的數據加密實現方法有哪兩種
對稱/非對稱密鑰加密演算法
數據加密技術 所謂數據加密(Data Encryption)技術是指將一個信息(或稱明文,plain text)經過加密鑰匙(Encryption key)及加密函數轉換,變成無意義的密文(cipher text),而接收方則將此密文經過解密函數、解密鑰匙(Decryption key)還原成明文。加密技術是網路安全技術的基石。
數據加密技術要求只有在指定的用戶或網路下,才能解除密碼而獲得原來的數據,這就需要給數據發送方和接受方以一些特殊的信息用於加解密,這就是所謂的密鑰。其密鑰的值是從大量的隨機數中選取的。按加密演算法分為專用密鑰和公開密鑰兩種。
專用密鑰,又稱為對稱密鑰或單密鑰,加密和解密時使用同一個密鑰,即同一個演算法。如DES和MIT的Kerberos演算法。單密鑰是最簡單方式,通信雙方必須交換彼此密鑰,當需給對方發信息時,用自己的加密密鑰進行加密,而在接收方收到數據後,用對方所給的密鑰進行解密。當一個文本要加密傳送時,該文本用密鑰加密構成密文,密文在信道上傳送,收到密文後用同一個密鑰將密文解出來,形成普通文體供閱讀。在對稱密鑰中,密鑰的管理極為重要,一旦密鑰丟失,密文將無密可保。這種方式在與多方通信時因為需要保存很多密鑰而變得很復雜,而且密鑰本身的安全就是一個問題。
對稱密鑰是最古老的,一般說「密電碼」採用的就是對稱密鑰。由於對稱密鑰運算量小、速度快、安全強度高,因而目前仍廣泛被採用。
DES是一種數據分組的加密演算法,它將數據分成長度為64位的數據塊,其中8位用作奇偶校驗,剩餘的56位作為密碼的長度。第一步將原文進行置換,得到64位的雜亂無章的數據組;第二步將其分成均等兩段;第三步用加密函數進行變換,並在給定的密鑰參數條件下,進行多次迭代而得到加密密文。
公開密鑰,又稱非對稱密鑰,加密和解密時使用不同的密鑰,即不同的演算法,雖然兩者之間存在一定的關系,但不可能輕易地從一個推導出另一個。有一把公用的加密密鑰,有多把解密密鑰,如RSA演算法。
非對稱密鑰由於兩個密鑰(加密密鑰和解密密鑰)各不相同,因而可以將一個密鑰公開,而將另一個密鑰保密,同樣可以起到加密的作用。
在這種編碼過程中,一個密碼用來加密消息,而另一個密碼用來解密消息。在兩個密鑰中有一種關系,通常是數學關系。公鑰和私鑰都是一組十分長的、數字上相關的素數(是另一個大數字的因數)。有一個密鑰不足以翻譯出消息,因為用一個密鑰加密的消息只能用另一個密鑰才能解密。每個用戶可以得到唯一的一對密鑰,一個是公開的,另一個是保密的。公共密鑰保存在公共區域,可在用戶中傳遞,甚至可印在報紙上面。而私鑰必須存放在安全保密的地方。任何人都可以有你的公鑰,但是只有你一個人能有你的私鑰。它的工作過程是:「你要我聽你的嗎?除非你用我的公鑰加密該消息,我就可以聽你的,因為我知道沒有別人在偷聽。只有我的私鑰(其他人沒有)才能解密該消息,所以我知道沒有人能讀到這個消息。我不必擔心大家都有我的公鑰,因為它不能用來解密該消息。」
公開密鑰的加密機制雖提供了良好的保密性,但難以鑒別發送者,即任何得到公開密鑰的人都可以生成和發送報文。數字簽名機制提供了一種鑒別方法,以解決偽造、抵賴、冒充和篡改等問題。
數字簽名一般採用非對稱加密技術(如RSA),通過對整個明文進行某種變換,得到一個值,作為核實簽名。接收者使用發送者的公開密鑰對簽名進行解密運算,如其結果為明文,則簽名有效,證明對方的身份是真實的。當然,簽名也可以採用多種方式,例如,將簽名附在明文之後。數字簽名普遍用於銀行、電子貿易等。
數字簽名不同於手寫簽字:數字簽名隨文本的變化而變化,手寫簽字反映某個人個性特徵,是不變的;數字簽名與文本信息是不可分割的,而手寫簽字是附加在文本之後的,與文本信息是分離的。
值得注意的是,能否切實有效地發揮加密機制的作用,關鍵的問題在於密鑰的管理,包括密鑰的生存、分發、安裝、保管、使用以及作廢全過程。
⑶ 非對稱加密和對稱加密
非對稱加密和對稱加密在加密和解密過程、加密解密速度、傳輸的安全性上都有所不同,具體介紹如下:
1、加密和解密過程不同
對稱加密過程和解密過程使用的同一個密鑰,加密過程相當於用原文+密鑰可以傳輸出密文,同時解密過程用密文-密鑰可以推導出原文。但非對稱加密採用了兩個密鑰,一般使用公鑰進行加密,使用私鑰進行解密。
2、加密解密速度不同
對稱加密解密的速度比較快,適合數據比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量數據的使用。
3、傳輸的安全性不同
對稱加密的過程中無法確保密鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,安全性相對較低。
非對稱加密演算法中私鑰是基於不同的演算法生成不同的隨機數,私鑰通過一定的加密演算法推導出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。所以安全性較高。
一、對稱加密演算法
指加密和解密使用相同密鑰的加密演算法。對稱加密演算法用來對敏感數據等信息進行加密,常用的演算法包括DES、3DES、AES、DESX、Blowfish、、RC4、RC5、RC6。
DES(Data Encryption Standard) :數據加密標准,速度較快,適用於加密大量數據的場合。
3DES(Triple DES) :是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard) :高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;
二、非對稱加密演算法
指加密和解密使用不同密鑰的加密演算法,也稱為公私鑰加密。假設兩個用戶要加密交換數據,雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密。常見的非對稱加密演算法:RSA、DSA(數字簽名用)、ECC(移動設備用)、Diffie-Hellman、El Gamal。
RSA: 由 RSA 公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的;
DSA(Digital Signature Algorithm) :數字簽名演算法,是一種標準的 DSS(數字簽名標准);
ECC(Elliptic Curves Cryptography) :橢圓曲線密碼編碼學。
ECC和RSA相比,在許多方面都有對絕對的優勢,主要體現在以下方面:
(1)抗攻擊性強。相同的密鑰長度,其抗攻擊性要強很多倍。
(2)計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。
(3)存儲空間佔用小。ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密演算法在IC卡上的應用具有特別重要的意義。
(4)帶寬要求低。當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用於短消息時ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網路領域具有廣泛的應用前景。
三、散列演算法(Hash演算法---單向加密演算法)
散列是信息的提煉,通常其長度要比信息小得多,且為一個固定長度。加密性強的散列一定是不可逆的,這就意味著通過散列結果,無法推出任何部分的原始信息。任何輸入信息的變化,哪怕僅一位,都將導致散列結果的明顯變化,這稱之為雪崩效應。散列還應該是防沖突的,即找不出具有相同散列結果的兩條信息。具有這些特性的散列結果就可以用於驗證信息是否被修改。
Hash演算法: 特別的地方在於它是一種單向演算法,用戶可以通過Hash演算法對目標信息生成一段特定長度的唯一的Hash值,卻不能通過這個Hash值重新獲得目標信息。因此Hash演算法常用在不可還原的密碼存儲、信息完整性校驗等。
單向散列函數一般用於產生消息摘要,密鑰加密等,常見的Hash演算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
MD5(Message Digest Algorithm 5): 是RSA數據安全公司開發的一種單向散列演算法,非可逆,相同的明文產生相同的密文。
SHA(Secure Hash Algorithm): 可以對任意長度的數據運算生成一個160位的數值;
SHA-1與MD5的比較
因為二者均由MD4導出,SHA-1和MD5彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
(1)對強行供給的安全性:最顯著和最重要的區別是SHA-1摘要比MD5摘要長32 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD5是2^(128)數量級的操作,而對SHA-1則是2^(160)數量級的操作。這樣,SHA-1對強行攻擊有更大的強度。
(2)對密碼分析的安全性:由於MD5的設計,易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊。
速度:在相同的硬體上,SHA-1的運行速度比MD5慢。
四、 加密演算法的選擇
1.由於非對稱加密演算法的運行速度比對稱加密演算法的速度慢很多,當我們需要加密大量的數據時,建議採用對稱加密演算法,提高加解密速度。
2.對稱加密演算法不能實現簽名,因此簽名只能非對稱演算法。
3.由於對稱加密演算法的密鑰管理是一個復雜的過程,密鑰的管理直接決定著他的安全性,因此當數據量很小時,我們可以考慮採用非對稱加密演算法。
4.在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的密鑰,然後用對稱加密演算法加密數據,這樣我們就集成了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點。
那採用多少位的密鑰呢?
RSA建議採用1024位的數字,ECC建議採用160位,AES採用128為即可。
⑷ 簡要說說對稱加密和非對稱加密的原理以及區別是什麼
對稱加密的原理是數據發送方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。接收方收到密文後,若想解讀原文,則需要使用加密密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。
非對稱加密的原理是甲方首先生成一對密鑰同時將其中的一把作為公開密鑰;得到公開密鑰的乙方再使用該密鑰對需要加密的信息進行加密後再發送給甲方;甲方再使用另一把對應的私有密鑰對加密後的信息進行解密,這樣就實現了機密數據傳輸。
對稱加密和非對稱加密的區別為:密鑰不同、安全性不同、數字簽名不同。
一、密鑰不同
1、對稱加密:對稱加密加密和解密使用同一個密鑰。
2、非對稱加密:非對稱加密加密和解密所使用的不是同一個密鑰,需要兩個密鑰來進行加密和解密。
二、安全性不同
1、對稱加密:對稱加密如果用於通過網路傳輸加密文件,那麼不管使用任何方法將密鑰告訴對方,都有可能被竊聽。
2、非對稱加密:非對稱加密因為它包含有兩個密鑰,且僅有其中的「公鑰」是可以被公開的,接收方只需要使用自己已持有的私鑰進行解密,這樣就可以很好的避免密鑰在傳輸過程中產生的安全問題。
三、數字簽名不同
1、對稱加密:對稱加密不可以用於數字簽名和數字鑒別。
2、非對稱加密:非對稱加密可以用於數字簽名和數字鑒別。
⑸ 科普知識—對稱加密和非對稱加密
區塊鏈技術中廣泛應用到非對稱加密技術,非對稱加密技術保證了信息在傳輸過程中的安全性,非對稱加密技術是在對稱加密技術上發展來的。本文主要闡述對稱加密技術和非對稱加密技術的概念和特點,並舉例說明。
對稱加密就是用相同的密鑰對原文進行加密和解密,通信雙方共用一個密鑰。
基於對稱加密演算法傳輸信息「ABC」的步驟。
(1)發送方通過密鑰對原文"ABC"進行加密,得到密文"abc",並發送給接收方。密鑰為將字母轉換為對應的小寫字母,大寫A轉換為小寫a,「BC」同理轉換為「bc」。
(2)發送方將密鑰發送給接收方。
(3)接收方通過密鑰對密文進行解密,反推出原文「ABC」。
對稱加密演算法的缺點:無法確保密鑰被安全傳遞。
密鑰就是傳說中的「密碼本」。密文在傳輸過程中是可能被第三方截獲的,關鍵就落在「密碼本」上,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,所以經常看到電影、電視劇的情節中通過各種手段保護密碼本的安全送達。
非對稱加密技術很好的解決了對稱加密技術密鑰無法安全傳遞的問題。
非對稱加密有兩個密鑰,即公鑰(Public Key)和私鑰(Private Key),對數據進行加密和解密使用不同的密鑰。使用公鑰進行加密,使用私鑰進行解密。
非對稱加密演算法中私鑰就是一個隨機數,基於不同的演算法生成不同的隨機數,如:SHA256演算法生成的是256位的隨機數,通常是調用操作系統的隨機數生成器來生成私鑰,私鑰通過一定的加密演算法推導出公鑰,私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。
基於非對稱加密演算法傳輸信息「hello world」的步驟。
(1)發送方使用接收方的公鑰對待發送信息「hello world」加密,此處需注意:信息發送給誰,使用誰的公鑰進行加密,公鑰是可以公開的,類似於銀行卡賬戶。
(2)發送方將加密後的密文通過網路發送給接收方。
(3)接收方接收到密文後,使用自己的私鑰對密文進行解密,從而獲得傳輸信息「hello world」。
採用非對稱加密演算法即使第三方在網路上截獲到密文,但其無法獲得接收方的私鑰,也就無法對密文進行解密,作為接收方務必保證自己私鑰的安全,所以非對稱加密技術解決了密鑰傳輸過程的安全性問題。
本文主要闡述對稱加密技術和非對稱加密技術的概念和特點,並舉例說明。對稱加密是通信雙方共用密鑰,無法保證密鑰的安全傳遞;非對稱加密使用接收方的公鑰對數據加密,接收方使用自己的私鑰解密,即使信息被第三方截獲,由於沒有接收方的私鑰,也無法破解密文。