① 使用非對稱加密及解密的過程詳解
前面我們知道對稱加密是對一份文件進行加密,且對應的只有一個密碼?例如:A有一份文件,她使用對稱加密演算法加密後希望發給B,那麼密碼肯定也要一起交給B!這中間就會出現安全隱患,如果密碼被第三方L嗅探到並截取,那麼加密的文件就赤裸裸的出現在L的面前。
如果A有很多文件需要加密並發送給很多人!那麼就會生成很多的密鑰,這么多的密鑰保管就成了一個很棘手的問題,況且還要把密鑰發給不同的人!這無疑增添了很多的風險!
如何能改善這種安全性不高的加密演算法,數學家們發現了另一種加密方式。稱之為《非對稱加密》asymmetric encryption。非對稱加密演算法需要兩個密鑰【公開密鑰】(publickey)和【私有密鑰】(privatekey)。下面簡稱【公匙】、【私匙】
【公鑰】與【私鑰】是一對,如果使用公開密匙對數據進行加密,那麼只有對應的私有密匙才能解密;相反,如果使用私有密匙對數據進行加密,那麼只有對應的公開密匙進行解密。因加密解密使用的是兩種不同的密匙,所以這種演算法稱之為【非對稱加密演算法】。
在使用非對稱加密前,A和B先各自生成一對公匙和私匙,然後把各自的公匙交給對方,並把自己的私匙妥善保管!如圖所示:
在A給B發送信息之前,首先使用B發給A的公匙對信息進行加密處理,然後發送給B,B在收到密文之後,使用自己的私匙解密;B在給A回復信息時,先使用A發來的公匙對回復信息加密,然後發出,A收到密文後使用自己的私匙解密即可!如圖所示:
② 加密技術的兩個元素
加密技術包括兩個元素:演算法和密鑰。演算法是將普通的文本(或者可以理解的信息)與一串數字(密鑰)的結合,產生不可理解的密文的步驟,密鑰是用來對數據進行編碼和解碼的一種演算法。在安全保密中,可通過適當的密鑰加密技術和管理機制來保證網路的信息通訊安全。密鑰加密技術的密碼體制分為對稱密鑰體制和非對稱密鑰體制兩種。相應地,對數據加密的技術分為兩類,即對稱加密(私人密鑰加密)和非對稱加密(公開密鑰加密)。對稱加密以數據加密標准(DES,Data Encryption Standard)演算法為典型代表,非對稱加密通常以RSA(Rivest Shamir Adleman)演算法為代表。對稱加密的加密密鑰和解密密鑰相同,而非對稱加密的加密密鑰和解密密鑰不同,加密密鑰可以公開而解密密鑰需要保密。
③ 加密解密技術的簡介
加密技術包括兩個元素:演算法和密鑰。演算法是將普通的信息或者可以理解的信息與一串數字(密鑰)結合,產生不可理解的密文的步驟,密鑰是用來對數據進行編碼和解密的一種演算法。在安全保密中,可通過適當的鑰加密技術和管理機制來保證網路的信息通信安全。
軟體的加密與解密是一個迷人的研究領域,它幾乎可以與任意一種計算機技術緊密結合——密碼學、程序設計語言、操作系統、數據結構。而由於這樣或者那樣的原因,對於這一領域的關注程度一直還處於低溫狀態。而看雪技術論壇相信會為更多對知識懷有渴望的朋友多開辟一條走向這個領域的道路,並且進而推動這個領域的不斷發展。
④ 乘法密碼的加密過程
設明文消息元素個數為n,密鑰為k。
密鑰k在選取的時候應滿足兩個條件:
(1)0<k<n
(2)k與n互素
設明文消息為M,消息元素為m;
則密文消息為C,密文元素為c=m*k mod n;
其解密過程如下:
首先要得到解密密鑰,就是要求得加密密鑰k模n的逆元;
具體求法為k *mod n=1;
然後計算m=c *mod n即可得到明文消息M。
舉例說明如下:
英文字母有26個,即n=26;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
M=m[26]={a , b , c ,d , e , f , g , h , i , j , k , l , m , n , o , p , q , r , s , t , u , v , w , x , y , z };
我們選取密鑰k=5;
現在我們對hello進行加密
hello所對應的數組為[8,5,12,12 15];
由於8*5 (mod 26) =40(mod)26=14;
依次類推,可得到加密後的數組為[ 14 , 25,8,8, 23 ];
對應的密文消息就是nyhhw
現在我們開始對nyhhw解密
首先要求得解密密鑰;
由於5*21(mod 26)=105(mod26)=1;
所以=21;
nyhhw所對應的數組為[ 14 , 25,8,8, 23 ];
由於14*21(mod26)=294(mod26)=8;
依次類推,可得到解密後的數組為[8,5,12,12 15];
對應的明文消息就是hello。
⑤ 在加密過程中必須用到的三個主要元素是
在加密過程中,必須用到的三個主要元素是:所傳輸的信息(明文)、加密鑰匙(Encryption_key)、加密函數。
加密是一個過程,它使信息只對正確的接收者可讀,其他用戶看到的是雜亂無序的信息,使其只能在使用相應的密鑰解密之後才能顯示出本來內容。
通過加密的方法來達到保護數據不被非法人竊取、閱讀的目的。加密在網路上的作用就是防止私有化信息在網路上被攔截和竊取。通過加密可保證信息的機密性、完整性、鑒別性和不可否認性。
⑥ 目前的數字認證和加密演算法的主要技術及其應用
1. 什麼是數字證書?
數字證書就是網路通訊中標志通訊各方身份信息的一系列數據,其作用類似於現實生活中的身份證。它是由一個權威機構發行的,人們可以在交往中用它來識別對方的身份。
最簡單的證書包含一個公開密鑰、名稱以及證書授權中心的數字簽名。一般情況下證書中還包括密鑰的有效時間,發證機關(證書授權中心)的名稱,該證書的序列號等信息,證書的格式遵循ITUT X.509國際標准。
一個標準的X.509數字證書包含以下一些內容:
證書的版本信息;
證書的序列號,每個證書都有一個唯一的證書序列號;
證書所使用的簽名演算法;
證書的發行機構名稱,命名規則一般採用X.500格式;
證書的有效期,現在通用的證書一般採用UTC時間格式,它的計時范圍為1950-2049;
證書所有人的名稱,命名規則一般採用X.500格式;
證書所有人的公開密鑰;
證書發行者對證書的簽名。
使用數字證書,通過運用對稱和非對稱密碼體制等密碼技術建立起一套嚴密的身份認證系統,從而保證:信息除發送方和接收方外不被其它人竊取;信息在傳輸過程中不被篡改;發送方能夠通過數字證書來確認接收方的身份;發送方對於自己的信息不能抵賴。
2. 為什麼要使用數字證書?
由於Internet網電子商務系統技術使在網上購物的顧客能夠極其方便輕松地獲得商家和企業的信息,但同時也增加了對某些敏感或有價值的數據被濫用的風險。買方和賣方都必須保證在網際網路上進行的一切金融交易運作都是真實可靠的,並且要使顧客、商家和企業等交易各方都具有絕對的信心,因而網際網路電子商務系統必須保證具有十分可靠的安全保密技術,也就是說,必須保證網路安全的四大要素,即信息傳輸的保密性、數據交換的完整性、發送信息的不可否認性、交易者身份的確定性。
信息的保密性
交易中的商務信息均有保密的要求,如信用卡的帳號和用戶名被人知悉,就可能被盜用,訂貨和付款的信息被競爭對手獲悉,就可能喪失商機。因此在電子商務的信息傳播中一般均有加密的要求。
交易者身份的確定性
網上交易的雙方很可能素昧平生,相隔千里。要使交易成功首先要能確認對方的身份,商家要考慮客戶端是不是騙子,而客戶也會擔心網上的商店不是一個玩弄欺詐的黑店。因此能方便而可靠地確認對方身份是交易的前提。對於為顧客或用戶開展服務的銀行、信用卡公司和銷售商店,為了做到安全、保密、可靠地開展服務活動,都要進行身份認證的工作。對有關的銷售商店來說,他們對顧客所用的信用卡的號碼是不知道的,商店只能把信用卡的確認工作完全交給銀行來完成。銀行和信用卡公司可以採用各種保密與識別方法,確認顧客的身份是否合法,同時還要防止發生拒付款問題以及確認訂貨和訂貨收據信息等。
不可否認性
由於商情的千變萬化,交易一旦達成是不能被否認的。否則必然會損害一方的利益。例如訂購黃金,訂貨時金價較低,但收到訂單後,金價上漲了,如收單方能否認受到訂單的實際時間,甚至否認收到訂單的事實,則訂貨方就會蒙受損失。因此電子交易通信過程的各個環節都必須是不可否認的。
不可修改性
由於商情的千變萬化,交易一旦達成應該是不能被否認的。否則必然會損害一方的利益。例如訂購黃金,訂貨時金價較低,但收到訂單後,金價上漲了,如收單方能否認收到訂單的實際時間,甚至否認收到訂單的事實,則訂貨方就會蒙受損失。因此電子交易通信過程的各個環節都必須是不可否認的。
數字安全證書提供了一種在網上驗證身份的方式。安全證書體制主要採用了公開密鑰體制,其它還包括對稱密鑰加密、數字簽名、數字信封等技術。
我們可以使用數字證書,通過運用對稱和非對稱密碼體制等密碼技術建立起一套嚴密的身份認證系統,從而保證:信息除發送方和接收方外不被其它人竊取;信息在傳輸過程中不被篡改;發送方能夠通過數字證書來確認接收方的身份;發送方對於自己的信息不能抵賴。
3. 數字認證原理
數字證書採用公鑰體制,即利用一對互相匹配的密鑰進行加密、解密。每個用戶自己設定一把特定的僅為本人所知的私有密鑰(私鑰),用它進行解密和簽名;同時設定一把公共密鑰(公鑰)並由本人公開,為一組用戶所共享,用於加密和驗證簽名。當發送一份保密文件時,發送方使用接收方的公鑰對數據加密,而接收方則使用自己的私鑰解密,這樣信息就可以安全無誤地到達目的地了。通過數字的手段保證加密過程是一個不可逆過程,即只有用私有密鑰才能解密。
在公開密鑰密碼體制中,常用的一種是RSA體制。其數學原理是將一個大數分解成兩個質數的乘積,加密和解密用的是兩個不同的密鑰。即使已知明文、密文和加密密鑰(公開密鑰),想要推導出解密密鑰(私有密鑰),在計算上是不可能的。按現在的計算機技術水平,要破解目前採用的1024位RSA密鑰,需要上千年的計算時間。公開密鑰技術解決了密鑰發布的管理問題,商戶可以公開其公開密鑰,而保留其私有密鑰。購物者可以用人人皆知的公開密鑰對發送的信息進行加密,安全地傳送以商戶,然後由商戶用自己的私有密鑰進行解密。
如果用戶需要發送加密數據,發送方需要使用接收方的數字證書(公開密鑰)對數據進行加密,而接收方則使用自己的私有密鑰進行解密,從而保證數據的安全保密性。
另外,用戶可以通過數字簽名實現數據的完整性和有效性,只需採用私有密鑰對數據進行加密處理,由於私有密鑰僅為用戶個人擁有,從而能夠簽名文件的唯一性,即保證:數據由簽名者自己簽名發送,簽名者不能否認或難以否認;數據自簽發到接收這段過程中未曾作過任何修改,簽發的文件是真實的。
4. 數字證書是如何頒發的?
數字證書是由認證中心頒發的。根證書是認證中心與用戶建立信任關系的基礎。在用戶使用數字證書之前必須首先下載和安裝。
認證中心是一家能向用戶簽發數字證書以確認用戶身份的管理機構。為了防止數字憑證的偽造,認證中心的公共密鑰必須是可靠的,認證中心必須公布其公共密鑰或由更高級別的認證中心提供一個電子憑證來證明其公共密鑰的有效性,後一種方法導致了多級別認證中心的出現。
數字證書頒發過程如下:用戶產生了自己的密鑰對,並將公共密鑰及部分個人身份信息傳送給一家認證中心。認證中心在核實身份後,將執行一些必要的步驟,以確信請求確實由用戶發送而來,然後,認證中心將發給用戶一個數字證書,該證書內附了用戶和他的密鑰等信息,同時還附有對認證中心公共密鑰加以確認的數字證書。當用戶想證明其公開密鑰的合法性時,就可以提供這一數字證書。
5. 加密技術
由於數據在傳輸過程中有可能遭到侵犯者的竊聽而失去保密信息,加密技術是電子商務採取的主要保密安全措施,是最常用的保密安全手段。加密技術也就是利用技術手段把重要的數據變為亂碼(加密)傳送,到達目的地後再用相同或不同的手段還原(解密)。
加密包括兩個元素:演算法和密鑰。一個加密演算法是將普通的文本(或者可以理解的信息)與一竄數字(密鑰)的結合,產生不可理解的密文的步驟。密鑰和演算法對加密同等重要。
密鑰是用來對數據進行編碼和解碼的一種演算法。在安全保密中,可通過適當的密鑰加密技術和管理機制,來保證網路的信息通訊安全。密鑰加密技術的密碼體制分為對稱密鑰體制和非對稱密鑰體制兩種。
相應地,對數據加密的技術分為兩類,即對稱加密(私人密鑰加密)和非對稱加密(公開密鑰加密)。對稱加密以數據加密標准(DES,Data Encryption Standard)演算法為典型代表,非對稱加密通常以RSA(Rivest Shamir Ad1eman)演算法為代表。對稱加密的加密密鑰和解密密鑰相同,而非對稱加密的加密密鑰和解密密鑰不同,加密密鑰可以公開而解密密鑰需要保密。
⑦ 加密和解密過程依靠的兩個元素
總共就三個術語:
原文、密文、密鑰
加密就是把【原文】+【密鑰】生成【密文】
解密就是把【密文】+【密鑰】生成【原文】
⑧ RSA 加密演算法(原理篇)
前幾天看到一句話,「我們中的很多人把一生中最燦爛的笑容大部分都獻給了手機和電腦屏幕」。心中一驚,這說明了什麼?手機和電腦已經成為了我們生活中的一部分,所以才會有最懂你的不是你,也不是你男朋友,而是大數據。
如此重要的個人數據,怎樣才能保證其在互聯網上的安全傳輸呢?當然要靠各種加密演算法。說起加密演算法,大家都知道有哈希、對稱加密和非對稱加密了。哈希是一個散列函數,具有不可逆操作;對稱加密即加密和解密使用同一個密鑰,而非對稱加密加密和解密自然就是兩個密鑰了。稍微深入一些的,還要說出非對稱加密演算法有DES、3DES、RC4等,非對稱加密演算法自然就是RSA了。那麼當我們聊起RSA時,我們又在聊些什麼呢?今天筆者和大家一起探討一下,有不足的地方,還望各位朋友多多提意見,共同進步。
RSA簡介:1976年由麻省理工學院三位數學家共同提出的,為了紀念這一里程碑式的成就,就用他們三個人的名字首字母作為演算法的命名。即 羅納德·李維斯特 (Ron Rivest)、 阿迪·薩莫爾 (Adi Shamir)和 倫納德·阿德曼 (Leonard Adleman)。
公鑰:用於加密,驗簽。
私鑰:解密,加簽。
通常知道了公鑰和私鑰的用途以後,即可滿足基本的聊天需求了。但是我們今天的主要任務是來探究一下RSA加解密的原理。
說起加密演算法的原理部分,肯定與數學知識脫不了關系。
我們先來回憶幾個數學知識:
φn = φ(A*B)=φ(A)*φ(B)=(A-1)*(B-1)。
這個公式主要是用來計算給定一個任意的正整數n,在小於等於n的正整數中,有多少個與n構成互質的關系。
其中n=A*B,A與B互為質數,但A與B本身並不要求為質數,可以繼續展開,直至都為質數。
在最終分解完成後,即 φ(N) = φ(p1)*φ(p2)*φ(p3)... 之後,p1,p2,p3都是質數。又用到了歐拉函數的另一個特點,即當p是質數的時候,φp = p - 1。所以有了上面給出的歐拉定理公式。
舉例看一下:
計算15的歐拉函數,因為15比較小,我們可以直接看一下,小於15的正整數有 1、2、3、4、5、6、7、8、9、10、11、12、13、14。和15互質的數有1、2、4、7、8、11、13、14一共四個。
對照我們剛才的歐拉定理: 。
其他感興趣的,大家可以自己驗證。
之所以要在這里介紹歐拉函數,我們在計算公鑰和私鑰時候,會用到。
如果兩個正整數m 和 n 互質,那麼m 的 φn 次方減1,可以被n整除。
其中 .
其中當n為質數時,那麼 上面看到的公式就變成了
mod n 1.
這個公式也就是著名的 費馬小定理 了。
如果兩個正整數e和x互為質數,那麼一定存在一個整數d,不止一個,使得 e*d - 1 可以被x整除,即 e * d mode x 1。則稱 d 是 e 相對於 x的模反元素。
了解了上面所講的歐拉函數、歐拉定理和模反元素後,就要來一些化學反應了,請看圖:
上面這幅圖的公式變化有沒有沒看明白的,沒看明白的咱們評論區見哈。
最終我們得到了最重要的第5個公式的變形,即紅色箭頭後面的:
mod n m。
其中有幾個關系,需要搞明白,m 與 n 互為質數,φn = x,d 是e相對於x的模反元素。
有沒有看到一些加解密的雛形。
從 m 到 m。 這中間涵蓋了從加密到解密的整個過程,但是缺少了我們想要的密文整個過程。
OK,下面引入本文的第四個數學公式:
我們來看一下整個交換流程:
1、客戶端有一個數字13,服務端有一個數字15;
2、客戶端通過計算 3的13次方 對 17 取余,得到數字12; 將12發送給服務端;同時服務端通過計算3的15次方,對17取余,得到數字6,將6發送給客戶端。至此,整個交換過程完成。
3、服務端收到數字12以後,繼續計算,12的15次方 對 17取余,得到 數字10。
4、客戶端收到數字 6以後,繼續計算,6的13次方 對 17 取余,得到數字 10。
有沒有發現雙方,最終得到了相同的內容10。但是這個數字10從來沒有在網路過程中出現過。
好,講到這里,可能有些人已經恍然大悟,這就是加密過程了,但是也有人會產生疑問,為什麼要取數字3 和 17 呢,這里還牽涉到另一個數學知識,原根的問題。即3是17的原根。看圖
有沒有發現規律,3的1~16次方,對17取余,得到的整數是從1~16。這時我們稱3為17的原根。也就是說上面的計算過程中有一組原根的關系。這是最早的迪菲赫爾曼秘鑰交換演算法。
解決了為什麼取3和17的問題後,下面繼續來看最終的RSA是如何產生的:
還記得我們上面提到的歐拉定理嗎,其中 m 與 n 互為質數,n為質數,d 是 e 相對於 φn的模反元素。
當迪菲赫爾曼密鑰交換演算法碰上歐拉定理會產生什麼呢?
我們得到下面的推論:
好,到這里我們是不是已經看到了整個的加密和解密過程了。
其中 m 是明文;c 是密文; n 和 e 為公鑰;d 和 n 為私鑰 。
其中幾組數字的關系一定要明確:
1、d是e 相對於 φn 的模反元素,φn = n-1,即 e * d mod n = 1.
2、m 小於 n,上面在講迪菲赫爾曼密鑰交換演算法時,提到原根的問題,在RSA加密演算法中,對m和n並沒有原根條件的約束。只要滿足m與n互為質數,n為質數,且m < n就可以了。
OK,上面就是RSA加密演算法的原理了,經過上面幾個數學公式的狂轟亂炸,是不是有點迷亂了,給大家一些時間理一下,後面會和大家一起來驗證RSA演算法以及RSA為什麼安全。
⑨ RSA加解密原理
RSA是目前使用最為廣泛的公鑰密碼演算法,公鑰加密也稱為非對稱加密,與對稱加密的最大區別在於加密與解密使用不同的密鑰。
在RSA中,明文、密文和密鑰都是數字,假設公鑰用二元組(E,N)來表示,私鑰用(D,N)來表示,其中E、D、N都是數字,那麼加解密過程可表示如下:
可見,在RSA中,不論加密還是解密,都可歸結為求x的y次冪對m取余問題。
生成RSA密鑰可分成以下4步:
首先准備兩個很大的質數p和q,那麼N = p * q。
L = lcm(p-1, q-1)
由於存在恆等式gcd(a,b) * lcm(a,b) = a * b,求lcm可轉換為求gcd,而求gcd可通過歐幾里德演算法在對數時間內算出。
E是一個比1大、比L小的數,且滿足E與L互質,即有:gcd(E,L)=1, 1 < E < L。gcd(E,L)=1是為了保證後面要求的數字D一定存在。
可不斷地生成[2,L-1]之間的隨機數作為E的候選數,檢查是否滿足條件,直到找出符合要求的E為止。
至此,E和N都已求出,那麼公鑰(E,N)也就得到了。
數D是由數E計算得到的,D、E和L之間滿足關系:E * D mod L = 1, 1 < D < L。
只要D滿足上述條件,那麼通過E與N加密的內容,就可通過D和N進行解密。
求D也可採用類似求E的方法,不斷產生隨機數去試,直到找出滿足條件的D為止,這樣私鑰(D,N)也准備好了。
為方面說明,這里用較小的數計算。先准備兩個質數,例如,p=17, q=19,那麼N=17*19=323,L=lcd(16,18)=144。
滿足gcd(E,L)=1的數很多,例如5,7,11,13,25等,這里取E=5。
滿足E*D mod L = 1的數也很多,這里取D=29。
到這里,公私鑰都有了,公鑰為(5,323),私鑰為(29,323),公鑰可任意公開,私鑰則保密。
明文必須是小於N的數,因為加密運算中要求mod N。假設明文是123,用公鑰(5,323)對其加密:
再用私鑰(29,323)對密文225進行解密:
解出的明文與原始明文一致。
⑩ 數據加密主要涉及三要素
數據加密主要涉及三要素:明文、密鑰、密文。
非對稱加密:
在加解密的時候,使用的是不同的密鑰:一個是公鑰,一個是私鑰
密鑰的使用:
公鑰加密,私鑰解密
私鑰解密,公鑰加密
密鑰的特點:
公鑰:公共的密鑰,可以發給任何人
私鑰:只有生成密鑰的一端可以持有,其他人不能知曉,所以需要保管好私鑰
加密速度慢,加密效率低(相對於對稱加密)
適合加密少量的數據
加密等級較高(相對於對稱加密)
非對稱加密的密鑰分發指的是公鑰的分發,私鑰需要保存好