❶ 密碼學的密碼破譯
密碼破譯是隨著密碼的使用而逐步產生和發展的。1412年,波斯人卡勒卡尚迪所編的網路全書中載有破譯簡單代替密碼的方法。到16世紀末期,歐洲一些國家設有專職的破譯人員,以破譯截獲的密信。密碼破譯技術有了相當的發展。1863年普魯士人卡西斯基所著《密碼和破譯技術》,以及1883年法國人克爾克霍夫所著《軍事密碼學》等著作,都對密碼學的理論和方法做過一些論述和探討。1949年美國人香農發表了《秘密體制的通信理論》一文,應用資訊理論的原理分析了密碼學中的一些基本問題。
自19世紀以來,由於電報特別是無線電報的廣泛使用,為密碼通信和第三者的截收都提供了極為有利的條件。通信保密和偵收破譯形成了一條斗爭十分激烈的隱蔽戰線。
1917年,英國破譯了德國外長齊默爾曼的電報,促成了美國對德宣戰。1942年,美國從破譯日本海軍密報中,獲悉日軍對中途島地區的作戰意圖和兵力部署,從而能以劣勢兵力擊破日本海軍的主力,扭轉了太平洋地區的戰局。在保衛英倫三島和其他許多著名的歷史事件中,密碼破譯的成功都起到了極其重要的作用,這些事例也從反面說明了密碼保和散密的重要地位和意義。
當今世界各主要國家的政府都十分重視密碼工作,有的設立龐大機構,撥出巨額經費,集中數以萬計的專家和科技人員,投入大量高速的電子計算機和其他先進設備進行工作。與此同時,各民間企業和學術界也對密碼日益重視,不少數學家、計算機學家和其他有關學科的專家也投身於密碼學的研究行列,更加速了棗知密碼學的發展。
在密碼已經成為單獨的學科,從傳統意義上來說,密碼學是研究如何把信息轉換成一種隱蔽的方式並阻止其他人得到它。
密碼學是一門跨學科科目,從很多領域衍生而來:它可以被看做是信息理論,卻使用了大量的數學領域的工具,眾所周知的如數論和有限數學。
原始的信息,也就是需要被密碼保護的信息,被稱為明文。加密是把原始信息轉換成不可讀形式,也就是密碼的過程。解密是加密的逆過程,從加密過的信息中得到原始信息。cipher是加密和解密時使用的演算法。
最早的隱寫術只需紙筆,加密法,將字凳棚消母的順序重新排列;替換加密法,將一組字母換成其他字母或符號。經典加密法的資訊易受統計的攻破,資料越多,破解就更容易,使用分析頻率就是好辦法。經典密碼學仍未消失,經常出現在智力游戲之中。在二十世紀早期,包括轉輪機在內的一些機械設備被發明出來用於加密,其中最著名的是用於第二次世界大戰的密碼機Enigma。這些機器產生的密碼相當大地增加了密碼分析的難度。比如針對Enigma各種各樣的攻擊,在付出了相當大的努力後才得以成功。
❷ Hello,密碼學:第三部分,公鑰密碼(非對稱密碼)演算法
在 《Hello,密碼學:第二部分,對稱密碼演算法》 中講述了對稱密碼的概念,以及DES和AES兩種經典的對稱密碼演算法原理。既然有對稱密碼的說法,自然也就有非對稱密碼,也叫做公鑰密碼演算法。 對稱密碼和非對稱密碼兩種演算法的本質區別在於,加密密鑰和解密密鑰是否相同 :
公鑰密碼產生的初衷就是為了解決 密鑰配送 的問題。
Alice 給遠方的 Bob 寫了一封情意慢慢的信,並使用強悍的 AES-256 進行了加密,但她很快就意識到,光加密內容不行,必須要想一個安全的方法將加密密鑰告訴 Bob,如果將密鑰也通過網路發送,很可能被技術高手+偷窺癖的 Eve 竊聽到。
既要發送密鑰,又不能發送密鑰,這就是對稱密碼演算法下的「密鑰配送問題」 。
解決密鑰配送問題可能有這樣幾種方法:
這種方法比較高效,但有局限性:
與方法一不同,密鑰不再由通信個體來保存,而由密鑰分配中心(KDC)負責統一的管理和分配。 雙方需要加密通信時,由 KDC 生成一個用於本次通信的通信密鑰交由雙方,通信雙方只要與 KDC 事先共享密鑰即可 。這樣就大大減少密鑰的存儲和管理問題。
因此,KDC 涉及兩類密鑰:
領略下 KDC 的過程:
KDC 通過中心化的手段,確實能夠有效的解決方法一的密鑰管理和分配問題,安全性也還不錯。但也存在兩個顯著的問題:
使用公鑰密碼,加密密鑰和解密密鑰不同,只要擁有加密密鑰,所有人都能進行加密,但只有擁有解密密鑰的人才能進行解密。於是就出現了這個過程:
密鑰配送的問題天然被解決了。當然,解密密鑰丟失而導致信息泄密,這不屬於密鑰配送的問題。
下面,再詳細看下這個過程。
公鑰密碼流程的核心,可以用如下四句話來概述:
既然加密密鑰是公開的,因此也叫做 「公鑰(Public Key)」 。
既然解密密鑰是私有的,因此也叫做 「私鑰(Private Key) 。
公鑰和私鑰是一一對應的,稱為 「密鑰對」 ,他們好比相互糾纏的量子對, 彼此之間通過嚴密的數學計算關系進行關聯 ,不能分別單獨生成。
在公鑰密碼體系下,再看看 Alice 如何同 Bob 進行通信。
在公鑰密碼體系下,通信過程是由 Bob 開始啟動的:
過程看起來非常簡單,但為什麼即使公鑰被竊取也沒有關系?這就涉及了上文提到的嚴密的數學計算關系了。如果上一篇文章對稱密鑰的 DES 和 AES 演算法進行概述,下面一節也會對公鑰體系的數學原理進行簡要說明。
自從 Diffie 和 Hellman 在1976年提出公鑰密碼的設計思想後,1978年,Ron Rivest、Adi Shamir 和 Reonard Adleman 共同發表了一種公鑰密碼演算法,就是大名鼎鼎的 RSA,這也是當今公鑰密碼演算法事實上的標准。其實,公鑰密碼演算法還包括ElGamal、Rabin、橢圓曲線等多種演算法,這一節主要講述 RSA 演算法的基本數學原理。
一堆符號,解釋下,E 代表 Encryption,D 代表 Decryption,N 代表 Number。
從公式種能夠看出來,RSA的加解密數學公式非常簡單(即非常美妙)。 RSA 最復雜的並非加解密運算,而是如何生成密鑰對 ,這和對稱密鑰演算法是不太一樣的。 而所謂的嚴密的數學計算關系,就是指 E 和 D 不是隨便選擇的 。
密鑰對的生成,是 RSA 最核心的問題,RSA 的美妙與奧秘也藏在這裡面。
1. 求N
求 N 公式:N = p × q
其中, p 和 q 是兩個質數 ,而且應該是很大又不是極大的質數。如果太小的話,密碼就容易被破解;如果極大的話,計算時間就會很長。比如 512 比特的長度(155 位的十進制數字)就比較合適。
這樣的質數是如何找出來的呢? 需要通過 「偽隨機數生成器(PRNG)」 進行生成,然後再判斷其是否為質數 。如果不是,就需要重新生成,重新判斷。
2. 求L
求 L 公式:L = lcm(p-1, q-1)
lcm 代表 「最小公倍數(least common multiple)」 。注意,L 在加解密時都不需要, 僅出現在生成密鑰對的過程中 。
3. 求E
E 要滿足兩個條件:
1)1 < E < L
2)gcd(E,L) = 1
gcd 代表 「最大公約數(greatest common divisor)」 。gcd(E,L) = 1 就代表 「E 和 L 的最大公約數為1,也就是說, E 和 L 互質 」。
L 在第二步已經計算出來,而為了找到滿足條件的 E, 第二次用到 「偽隨機數生成器(PRNG)」 ,在 1 和 L 之間生成 E 的候選,判斷其是否滿足 「gcd(E,L) = 1」 的條件。
經過前三步,已經能夠得到密鑰對種的 「公鑰:{E, N}」 了。
4. 求D
D 要滿足兩個條件:
1)1 < D < L
2)E × D mod L = 1
只要 D 滿足上面的兩個條件,使用 {E, N} 進行加密的報文,就能夠使用 {D, N} 進行解密。
至此,N、L、E、D 都已經計算出來,再整理一下
模擬實踐的過程包括兩部分,第一部分是生成密鑰對,第二部分是對數據進行加解密。為了方便計算,都使用了較小的數字。
第一部分:生成密鑰對
1. 求N
准備兩個質數,p = 5,q = 7,N = 5 × 7 = 35
2. 求L
L = lcm(p-1, q-1) = lcm (4, 6) = 12
3. 求E
gcd(E, L) = 1,即 E 和 L 互質,而且 1 < E < L,滿足條件的 E 有多個備選:5、7、11,選擇最小的 5 即可。於是,公鑰 = {E, N} = {5, 35}
4. 求D
E × D mod L = 1,即 5 × D mod 12 = 1,滿足條件的 D 也有多個備選:5、17、41,選擇 17 作為 D(如果選擇 5 恰好公私鑰一致了,這樣不太直觀),於是,私鑰 = {D, N} = {17, 35}
至此,我們得到了公私鑰對:
第二部分:模擬加解密
明文我們也使用一個比較小的數字 -- 4,利用 RSA 的加密公式:
密文 = 明文 ^ E mod N = 4 ^ 5 mod 35 = 9
明文 = 密文 ^ D mod N = 9 ^ 17 mod 35 = 4
從這個模擬的小例子能夠看出,即使我們用了很小的數字,計算的中間結果也是超級大。如果再加上偽隨機數生成器生成一個數字,判斷其是否為質數等,這個過程想想腦仁兒就疼。還好,現代晶元技術,讓計算機有了足夠的運算速度。然而,相對於普通的邏輯運算,這類數學運算仍然是相當緩慢的。這也是一些非對稱密碼卡/套件中,很關鍵的性能規格就是密鑰對的生成速度
公鑰密碼體系中,用公鑰加密,用私鑰解密,公鑰公開,私鑰隱藏。因此:
加密公式為:密文 = 明文 ^ E mod N
破譯的過程就是對該公式進行逆運算。由於除了對明文進行冪次運算外, 還加上了「模運算」 ,因此在數學上, 該逆運算就不再是簡單的對數問題,而是求離散對數問題,目前已經在數學領域達成共識,尚未發現求離散對數的高效演算法 。
暴力破解的本質就是逐個嘗試。當前主流的 RSA 演算法中,使用的 p 和 q 都是 1024 位以上,這樣 N 的長度就是 2048 位以上。而 E 和 D 的長度和 N 差不多,因此要找出 D,就需要進行 2048 位以上的暴力破解。即使上文那個簡單的例子,算出( 蒙出 ) 「9 ^ D mod 35 = 4」 中的 D 也要好久吧。
因為 E 和 N 是已知的,而 D 和 E 在數學上又緊密相關(通過中間數 L),能否通過一種反向的演算法來求解 D 呢?
從這個地方能夠看出,p 和 q 是極為關鍵的,這兩個數字不泄密,幾乎無法通過公式反向計算出 D。也就是說, 對於 RSA 演算法,質數 p 和 q 絕不能被黑客獲取,否則等價於交出私鑰 。
既然不能靠搶,N = p × q,N是已知的,能不能通過 「質因數分解」 來推導 p 和 q 呢?或者說, 一旦找到一種高效的 「質因數分解」 演算法,就能夠破解 RSA 演算法了 。
幸運的是,這和上述的「離散對數求解」一樣,當下在數學上還沒有找到這種演算法,當然,也無法證明「質因數分解」是否真的是一個困難問題 。因此只能靠硬算,只是當前的算力無法在可現實的時間內完成。 這也是很多人都提到過的,「量子時代來臨,當前的加密體系就會崩潰」,從算力的角度看,或許如此吧 。
既不能搶,也不能算,能不能猜呢?也就是通過 「推測 p 和 q 進行破解」 。
p 和 q 是通過 PRNG(偽隨機數生成器)生成的,於是,又一個關鍵因素,就是採用的 偽隨機數生成器演算法要足夠隨機 。
隨機數對於密碼學極為重要,後面會專門寫一篇筆記 。
前三種攻擊方式,都是基於 「硬碰硬」 的思路,而 「中間人攻擊」 則換了一種迂迴的思路,不去嘗試破解密碼演算法,而是欺騙通信雙方,從而獲取明文。具體來說,就是: 主動攻擊者 Mallory 混入發送者和接收者之間,面對發送者偽裝成接收者,面對接收者偽裝成發送者。
這個過程可以重復多次。需要注意的是,中間人攻擊方式不僅能夠針對 RSA,還可以針對任何公鑰密碼。能夠看到,整個過程中,公鑰密碼並沒有被破譯,密碼體系也在正常運轉,但機密性卻出現了問題,即 Alice 和 Bob 之間失去了機密性,卻在 Alice 和 Mallory 以及 Mallory 和 Bob 之間保持了機密性。即使公鑰密碼強度再強大 N 倍也無濟於事。也就是說,僅僅依靠密碼演算法本身,無法防禦中間人攻擊 。
而能夠抵禦中間人攻擊的,就需要用到密碼工具箱的另一種武器 -- 認證 。在下面一篇筆記中,就將涉及這個話題。
好了,以上就是公鑰密碼的基本知識了。
公鑰密碼體系能夠完美的解決對稱密碼體系中 「密鑰配送」 這個關鍵問題,但是拋開 「中間人攻擊」 問題不談,公鑰密碼自己也有個嚴重的問題:
公鑰密碼處理速度遠遠低於對稱密碼。不僅體現在密鑰對的生成上,也體現在加解密運算處理上。
因此,在實際應用場景下,往往會將對稱密碼和公鑰密碼的優勢相結合,構建一個 「混合密碼體系」 。簡單來說: 首先用相對高效的對稱密碼對消息進行加密,保證消息的機密性;然後用公鑰密碼加密對稱密碼的密鑰,保證密鑰的機密性。
下面是混合密碼體系的加解密流程圖。整個體系分為左右兩個部分:左半部分加密會話密鑰的過程,右半部分是加密原始消息的過程。原始消息一般較長,使用對稱密碼演算法會比較高效;會話密鑰一般比較短(十幾個到幾十個位元組),即使公鑰密碼演算法運算效率較低,對會話密鑰的加解密處理也不會非常耗時。
著名的密碼軟體 PGP、SSL/TLS、視頻監控公共聯網安全建設規范(GB35114) 等應用,都運用了混合密碼系統。
好了,以上就是公鑰密碼演算法的全部內容了,拖更了很久,以後還要更加勤奮一些。
為了避免被傻啦吧唧的審核機器人處理,後面就不再附漂亮姑娘的照片(也是為了你們的健康),改成我的攝影作品,希望不要對收視率產生影響,雖然很多小伙兒就是沖著姑娘來的。
就從喀納斯之旅開始吧。
❸ 密碼學基礎1:RSA演算法原理全面解析
本節內容中可能用到的符號說明如下:
質數和合數: 質數是指除了平凡約數1和自身之外,沒有其他約數的大於1的正整數。大於1的正整數中不是素數的則為合數。如 7、11 是質數,而 4、9 是合數。在 RSA 演算法中主要用到了質數相關性質,質數可能是上帝留給人類的一把鑰匙,許多數學定理和猜想都跟質數有關。
[定理1] 除法定理: 對任意整數 a 和 任意正整數 n,存在唯一的整數 q 和 r,滿足 。其中, 稱為除法的商,而 稱為除法的余數。
整除: 在除法定理中,當余數 時,表示 a 能被 n 整除,或者說 a 是 n 的倍數,用符號 表示。
約數和倍數 : 對於整數 d 和 a,如果 ,且 ,則我們說 d 是 a 的約數,a 是 d 的倍數。
公約數: 對於整數 d,a,b,如果 d 是 a 的約數且 d 也是 b 的約數,則 d 是 a 和 b 的公約數。如 30 的約數有 1,2,3,5,6,10,15,30,而 24 的約數有 1,2,3,4,6,8,12,24,則 30 和 24 的公約數有 1,2,3,6。其中 1 是任意兩個整數的公約數。
公約數的性質:
最大公約數: 兩個整數最大兆李的公約數稱為最大公約數,用 來表示,如 30 和 24 的最大公約數是 6。 有一些顯而易見的性質:
[定理2] 最大公約數定理: 如果 a 和 b 是不為0的整數,則 是 a 和 b 的線性組合集合 中的最小正元素。
由定理2可以得到一個推論:
[推論1] 對任意整數 a 和 b,如果 且 ,則 。
互質數: 如果兩個整數 a 和 b 只有公因數 1,即 ,則我們就稱這兩個數是互質數(coprime)。比如 4 和 9 是互質數,但是 15 和 25 不是互質數。
互質數的性質:
歐幾里得演算法分為樸素歐幾里得演算法和擴展歐幾里得演算法,樸素法用於求兩個數的最大公約數,而擴展的歐幾里得演算法則有更多廣泛應用,如後面要提到的求一個數對特定模數的模逆元素等。
求兩個非負整數的最大公約數最有名的是 輾轉相除法,最早出現在偉大的數學家歐幾里得在他的經典巨作《幾何原本》中。輾轉相除法演算法求兩個非負整數的最大公約數描述如下:
例如, ,在求解過程中,較大的數縮小,持續進行同樣的計算可以不斷縮小這兩個數直至其中一個變成零。
歐幾里得演算法的python實現如下:
擴展歐幾里得演算法在 RSA 演算法中求模反元素有很重要的應用,定義如下:
定義: 對於不全為 0 的非負整數 ,則必然存在整擾哪數對 ,使得
例如,a 為 3,b 為 8,則 。那麼,必然存在整數對 ,滿足 。簡單計算可以得到 滿足要求。
擴展歐幾里得演算法的python實現如下:
同餘: 對於正整數 n 和 整數 a,b,如果滿足 ,即 a-b 是 n 的倍數,則我們稱 a 和 b 對模 n 同餘,記號如下: 例如,因為 ,於是有 。
對於正整數 n,整數 ,如果 則我們可以得到如下性質:
譬如,因為 ,則可以推出 。
另外,若 p 和 q 互質,且 ,則可推出:
此外,模的四則運算還有如下一些性質,證明也比較簡單,略去。
模逆元素: 對整數 a 和正整數 n,a 對模數 n 的模逆元素是指滿足以下條件的整數 b。 a 對 模數 n 的 模逆元素不一定存在,a 對 模數 n 的模逆元素存在的充分必要條件是 a 和 n 互質,這個在後面我們會有證明。若模逆元素存在,也不是唯一的。例如 a=3,n=4,則 a 對模數 n 的模逆元素為 7 + 4k,即 7,11,15,...都是整數 3 對模數 4 的模逆元素。如果 a 和 n 不互質,如 a = 2,n = 4,則不存在模逆元素。
[推論2] 模逆元素存在的充分必要條件是整數 a 和 模數 n 互質。
[定理3] 唯一質數分解定理: 任何一個大於1的正整數 n 都可族李遲以 唯一分解 為一組質數的乘積,其中 都是自然數(包括0)。比如 6000 可以唯一分解為 。
由質數唯一分解定理可以得到一個推論: 質數有無窮多個 。
[定理4] 中國剩餘定理(Chinese remainder theorem,CRT) ,最早見於《孫子算經》(中國南北朝數學著作,公元420-589年),叫物不知數問題,也叫韓信點兵問題。
翻譯過來就是已知一個一元線性同餘方程組求 x 的解:
宋朝著名數學家秦九韶在他的著作中給出了物不知數問題的解法,明朝的數學家程大位甚至編了一個《孫子歌訣》:
意思就是:將除以 3 的余數 2 乘以 70,將除以 5 的余數 3 乘以 21,將除以 7 的余數 2 乘以 15,最終將這三個數相加得到 。再將 233 除以 3,5,7 的最小公倍數 105 得到的余數 ,即為符合要求的最小正整數,實際上, 都符合要求。
物不知數問題解法本質
求解通項公式
中國剩餘定理相當於給出了以下的一元線性同餘方程組的有解的判定條件,並用構造法給出了解的具體形式。
模數 兩兩互質 ,則對任意的整數: ,方程組 有解,且解可以由如下構造方法得到:
並設 是除 以外的其他 個模數的乘積。
中國剩餘定理通項公式證明
❹ 密碼學——DES解密問題
你這問題比較耗時間,不過不難,給你個網址你棚拿態自己分析分析就出來了敏局。http://en.wikipedia.org/wiki/Data_Encryption_Standard,這里是演算法基本描述。http://en.wikipedia.org/wiki/DES_supplementary_material,這里是各種變換的影射關系,你按照這個圖里的影射變換就找到某一個bit怎麼鏈源來的了。
❺ 密碼學的基本簡介
密碼學(在西歐語文中,源於希臘語kryptós「隱藏的」,和gráphein「書寫」)是研究如何隱密地傳遞信息的學科。在現代特別指對信息以及其傳輸的數學性研究,常被認為是數學和計算機科學的分支,和資訊理論也密切相關。著名的密碼學者Ron Rivest解衫虧釋道:「密碼學是關於如何在敵人存在的環境中通訊」,自工程學的角度,這相當於密碼學與純數學的異同。密碼學是信息安全等相關議題,如認證、訪問控制的核心。密碼學的首要目的是隱藏信息的涵義,並不是隱藏信息的存在。密碼學也促進了計算機科學,特別是在於電腦與網路安全所使用的技術,如訪問控制與信息的機密性。密碼學已被應用在日常生活:包括自動櫃員機的晶元卡、電腦使用者存取密碼、電子商察岩務等等。
密碼是通信雙方按約定的法則進行信息特殊變換的一種重要保密手段。依照這些法則,變明文為密文,稱為加密變換;變密文為明文,稱為脫密變換。密碼在早期僅對文字或數碼進行或沒神加、脫密變換,隨著通信技術的發展,對語音、圖像、數據等都可實施加、脫密變換。
❻ 密碼演算法的密碼學
(1) 發送者和接收者
假設發送者想發送消息給接收者,且想安全地發送信息:她想確信偷聽者不能閱讀發送的消息。
(2) 消息和加密
消息被稱為明文。用某種方法偽裝消息以隱藏它的內容的過程稱為加密,加了密的消息稱為密文,而把密文轉變為明文的過程稱為解密。
明文用M(消息)或P(明文)表示,它可能是比特流(文本文件、點陣圖、數字化的語音流或數字化的視頻圖像)。至於涉及到計算機,P是簡單的二進制數據。明文可被傳送或存儲,無論在哪種情況,M指待加密的消息。
密文用C表示,它也是二進制數據,有時和M一樣大,有時稍大(通過壓縮和加密的結合,C有可能比P小些。然而,單單加密通常達不到這一點)。加密函數E作用於M得到密文C,用數學表示為:
E(M)=C.
相反地,解密函數D作用於C產生M
D(C)=M.
先加密後再解密消息,原始的明文將恢復出來,下面的等式必須成立:
D(E(M))=M
(3) 鑒別、完整性和抗抵賴
除了提供機密性外,密碼學通常有其它的作用:.
(a) 鑒別
消息的接收者應該能夠確認消息的來源;入侵者不可能偽裝成他人。
(b) 完整性檢驗
消息的接收者應該能夠驗證在傳送過程中消息沒有被修改;入侵者不可能用假消息代替合法消息。
(c) 抗抵賴
發送者事後不可能虛假地否認他發送的消息。
(4) 演算法和密鑰
密碼演算法也叫密碼,是用於加密和解密的數學函數。(通常情況下,有兩個相關的函數:一個用作加密,另一個用作解密)
如果演算法的保密性是基於保持演算法的秘密,這種演算法稱為受限制的演算法。受限制的演算法具有歷史意義,但按現在的標准,它們的保密性已遠遠不夠。大的或經常變換的用戶組織不能使用它們,因為每有一個用戶離開這個組織,其它的用戶就必須改換另外不同的演算法。如果有人無意暴露了這個秘密,所有人都必須改變他們的演算法。
但是,受限制的密碼演算法不可能進行質量控制或標准化。每個用戶組織必須有他們自己的唯一演算法。這樣的組織不可能採用流行的硬體或軟體產品。但竊聽者卻可以買到這些流行產品並學習演算法,於是用戶不得不自己編寫演算法並予以實現,如果這個組織中沒有好的密碼學家,那麼他們就無法知道他們是否擁有安全的演算法。
盡管有這些主要缺陷,受限制的演算法對低密級的應用來說還是很流行的,用戶或者沒有認識到或者不在乎他們系統中內在的問題。
現代密碼學用密鑰解決了這個問題,密鑰用K表示。K可以是很多數值里的任意值。密鑰K的可能值的范圍叫做密鑰空間。加密和解密運算都使用這個密鑰(即運算都依賴於密鑰,並用K作為下標表示),這樣,加/解密函數現在變成:
EK(M)=C
DK(C)=M.
這些函數具有下面的特性:
DK(EK(M))=M.
有些演算法使用不同的加密密鑰和解密密鑰,也就是說加密密鑰K1與相應的解密密鑰K2不同,在這種情況下:
EK1(M)=C
DK2(C)=M
DK2 (EK1(M))=M
所有這些演算法的安全性都基於密鑰的安全性;而不是基於演算法的細節的安全性。這就意味著演算法可以公開,也可以被分析,可以大量生產使用演算法的產品,即使偷聽者知道你的演算法也沒有關系;如果他不知道你使用的具體密鑰,他就不可能閱讀你的消息。
密碼系統由演算法、以及所有可能的明文、密文和密鑰組成的。
基於密鑰的演算法通常有兩類:對稱演算法和公開密鑰演算法。下面將分別介紹: 對稱演算法有時又叫傳統密碼演算法,就是加密密鑰能夠從解密密鑰中推算出來,反過來也成立。在大多數對稱演算法中,加/解密密鑰是相同的。這些演算法也叫秘密密鑰演算法或單密鑰演算法,它要求發送者和接收者在安全通信之前,商定一個密鑰。對稱演算法的安全性依賴於密鑰,泄漏密鑰就意味著任何人都能對消息進行加/解密。只要通信需要保密,密鑰就必須保密。
對稱演算法的加密和解密表示為:
EK(M)=C
DK(C)=M
對稱演算法可分為兩類。一次只對明文中的單個比特(有時對位元組)運算的演算法稱為序列演算法或序列密碼。另一類演算法是對明文的一組比特亞行運算,這些比特組稱為分組,相應的演算法稱為分組演算法或分組密碼。現代計算機密碼演算法的典型分組長度為64比特——這個長度大到足以防止分析破譯,但又小到足以方便使用(在計算機出現前,演算法普遍地每次只對明文的一個字元運算,可認為是序列密碼對字元序列的運算)。 公開密鑰演算法(也叫非對稱演算法)是這樣設計的:用作加密的密鑰不同於用作解密的密鑰,而且解密密鑰不能根據加密密鑰計算出來(至少在合理假定的長時間內)。之所以叫做公開密鑰演算法,是因為加密密鑰能夠公開,即陌生者能用加密密鑰加密信息,但只有用相應的解密密鑰才能解密信息。在這些系統中,加密密鑰叫做公開密鑰(簡稱公鑰),解密密鑰叫做私人密鑰(簡稱私鑰)。私人密鑰有時也叫秘密密鑰。為了避免與對稱演算法混淆,此處不用秘密密鑰這個名字。
用公開密鑰K加密表示為
EK(M)=C.
雖然公開密鑰和私人密鑰是不同的,但用相應的私人密鑰解密可表示為:
DK(C)=M
有時消息用私人密鑰加密而用公開密鑰解密,這用於數字簽名(後面將詳細介紹),盡管可能產生混淆,但這些運算可分別表示為:
EK(M)=C
DK(C)=M
當前的公開密碼演算法的速度,比起對稱密碼演算法,要慢的多,這使得公開密碼演算法在大數據量的加密中應用有限。 單向散列函數 H(M) 作用於一個任意長度的消息 M,它返回一個固定長度的散列值 h,其中 h 的長度為 m 。
輸入為任意長度且輸出為固定長度的函數有很多種,但單向散列函數還有使其單向的其它特性:
(1) 給定 M ,很容易計算 h ;
(2) 給定 h ,根據 H(M) = h 計算 M 很難 ;
(3) 給定 M ,要找到另一個消息 M『 並滿足 H(M) = H(M』) 很難。
在許多應用中,僅有單向性是不夠的,還需要稱之為「抗碰撞」的條件:
要找出兩個隨機的消息 M 和 M『,使 H(M) = H(M』) 滿足很難。
由於散列函數的這些特性,由於公開密碼演算法的計算速度往往很慢,所以,在一些密碼協議中,它可以作為一個消息 M 的摘要,代替原始消息 M,讓發送者為 H(M) 簽名而不是對 M 簽名 。
如 SHA 散列演算法用於數字簽名協議 DSA中。 提到數字簽名就離不開公開密碼系統和散列技術。
有幾種公鑰演算法能用作數字簽名。在一些演算法中,例如RSA,公鑰或者私鑰都可用作加密。用你的私鑰加密文件,你就擁有安全的數字簽名。在其它情況下,如DSA,演算法便區分開來了??數字簽名演算法不能用於加密。這種思想首先由Diffie和Hellman提出 。
基本協議是簡單的 :
(1) A 用她的私鑰對文件加密,從而對文件簽名。
(2) A 將簽名的文件傳給B。
(3) B用A的公鑰解密文件,從而驗證簽名。
這個協議中,只需要證明A的公鑰的確是她的。如果B不能完成第(3)步,那麼他知道簽名是無效的。
這個協議也滿足以下特徵:
(1) 簽名是可信的。當B用A的公鑰驗證信息時,他知道是由A簽名的。
(2) 簽名是不可偽造的。只有A知道她的私鑰。
(3) 簽名是不可重用的。簽名是文件的函數,並且不可能轉換成另外的文件。
(4) 被簽名的文件是不可改變的。如果文件有任何改變,文件就不可能用A的公鑰驗證。
(5) 簽名是不可抵賴的。B不用A的幫助就能驗證A的簽名。 加密技術是對信息進行編碼和解碼的技術,編碼是把原來可讀信息(又稱明文)譯成代碼形式(又稱密文),其逆過程就是解碼(解密)。加密技術的要點是加密演算法,加密演算法可以分為對稱加密、不對稱加密和不可逆加密三類演算法。
對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。對稱加密演算法在分布式網路系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有DES和IDEA等。美國國家標准局倡導的AES即將作為新標准取代DES。
不對稱加密演算法 不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文;收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。廣泛應用的不對稱加密演算法有RSA演算法和美國國家標准局提出的DSA。以不對稱加密演算法為基礎的加密技術應用非常廣泛。
不可逆加密演算法 的特徵是加密過程中不需要使用密鑰,輸入明文後由系統直接經過加密演算法處理成密文,這種加密後的數據是無法被解密的,只有重新輸入明文,並再次經過同樣不可逆的加密演算法處理,得到相同的加密密文並被系統重新識別後,才能真正解密。顯然,在這類加密過程中,加密是自己,解密還得是自己,而所謂解密,實際上就是重新加一次密,所應用的「密碼」也就是輸入的明文。不可逆加密演算法不存在密鑰保管和分發問題,非常適合在分布式網路系統上使用,但因加密計算復雜,工作量相當繁重,通常只在數據量有限的情形下使用,如廣泛應用在計算機系統中的口令加密,利用的就是不可逆加密演算法。近年來,隨著計算機系統性能的不斷提高,不可逆加密的應用領域正在逐漸增大。在計算機網路中應用較多不可逆加密演算法的有RSA公司發明的MD5演算法和由美國國家標准局建議的不可逆加密標准SHS(Secure Hash Standard:安全雜亂信息標准)等。
❼ 密碼系統的解密(Decrypt)
把己加密的信息(密文做吵)恢復成原始信息明文的過程,也稱為脫密。
密碼演算法(Cryptography Algorithm)
也簡稱密碼(Cipher),通常是指信豎加、解密過程所使用的信息變換規則,是用於信息加密和解密的數學函數。
對滑胡大明文進行加密時所採用的規則稱作加密演算法,而對密文進行解密時所採用的規則稱作解密演算法。加密演算法和解密演算法的操作通常都是在一組密鑰的控制下進行的。
❽ 密碼學原理
密碼學包括密碼編碼學和密碼分析學,是一門研究密碼演算法和安全協議設計、使用和分析的學科,密碼技術是提供網路安全認證、保護信息安全最重要的技術手段。密碼學是研究編制密碼和破譯密碼的技術科學。研究密碼變化的客觀規律,應用於編制密碼以保守通信秘密的,稱為編碼學;(8)密碼學演算法脫密問題是什麼擴展閱讀
在通信過程中,待加密的.信息稱為明文,已被加密的信息稱為密文,僅有收、發雙方知道的信息稱為密鑰。在密鑰控制下,由明文變到密文的過程叫加密,其逆過程叫脫密或解密。在密碼系統中,除合法用戶外,還有非法的截收者,他們試圖通過各種辦法竊取機密(又稱為被動攻擊)或竄改消息(又稱為主動攻擊)。
現代密碼學所涉及的學科包括:資訊理論、概率論、數論、計算復雜性理論、近世代數、離散數學、代數幾何學和數字邏輯等。
主要包括古典密碼及其分析、序列密碼、香農理論、對稱分組密碼的設計思想和演算法、線性分析和差分分析、工作模式和短塊處理、散列函數及其安全性、非對稱密碼演算法的原理和應用、數字簽名、計算安全性、密鑰管理、密碼學應用實例和高級密碼演算法等。
❾ 加密密鑰是公開的,脫密密鑰是保密的是什麼意思
公開密鑰密碼體制是現代密碼學的最重要的發明和進展。一般理解密碼學(Cryptography)就是保護信息傳遞的機密性。
但這僅僅是當今密碼學主題的一個方面。對信息發送與接收人的真實身份的驗證、對所發出/接收信息在事後的不可抵賴以及保障數據的完整段敬性是現代密碼學主題的另一方面。
公開密鑰密碼體制對這兩方面的問題都給出了出色的解答,並正在繼續產生許多新的思想和方案。在公鑰體制笑燃衫中,加密密鑰不同於解密密鑰。人碰腔們將加密密鑰公之於眾,誰都可以使用;而解密密鑰只有解密人自己知道。迄今為止的所有公鑰密碼體系中,RSA系統是最著名、使用最廣泛的一種。
❿ 密碼學的理論基礎
在通信過程中,待加密的信息稱為明文,已被加密的信息稱為密文,僅有收、發雙方知道的信息稱為密鑰。在密鑰控制下,由明文變到密文的過程叫加密,其逆過程叫脫密或解密。在密碼系統中,除合法用戶外,還有非法的截收者,他們試圖通過各種辦法竊取機密(又稱為被動攻擊)或竄改消息(又稱為主動攻擊)。
一個密碼通信系統可如圖3所示。
對於給定的明文m和密鑰k,加密變換Ek將明文變為密文c=f(m,k)=Ek(m),在接收端,利用脫密密鑰k,(有時k=k,)完成脫密操作,將密文c恢復成原來的明文m=Dk,(c)。一個安全的密碼體制應該滿足:①非法截收者很難從密文C中推斷出明文m;②加密和脫密演算法應該相當簡便,而且適用於所有密鑰空間;③密碼的保密強度只依賴於密鑰;④合法接收者能夠檢驗和證實消息的完整性和真實性;⑤消息的發送者無法否認其所發出的消息,同時也不能偽造別人的合法消息;⑥必要時可由仲裁機構進行公斷。
現代密碼學所涉及的學科包括:資訊理論、概率論、數論、計算復雜性理論、近世代數、離散數學、代數幾何學和數字邏輯等。