加密基礎(chǔ)知識(shí)二 非對(duì)稱加密RSA算法和對(duì)稱加密

參考【philippica】萌萌噠弱受RSA和強(qiáng)攻wiener
想像這樣一個(gè)場(chǎng)景,一堆情侶狠怨,每天早上alice站在東邊的山頭项鬼,bob找在西邊的山頭,隔著大山用擴(kuò)音喇叭說著羞羞臉的情話盯质。這時(shí)候兩座山之間的山谷中總會(huì)坐著一個(gè)吃瓜群眾philippica,聽著兩個(gè)人的小秘密。alice和bob當(dāng)然不喜歡被他聽到他們的情話概而,于是機(jī)智的alice就大聲的說:"bob,以后每次說話我們都把說的字母按著字母表順序往后數(shù)8個(gè)字母呼巷,也就是用凱撒密碼移動(dòng)8位,這樣philippica就不知道我們?cè)谡f什么了赎瑰!"
接著bob想說:“I love u”,他按著字母表abcd的順序把字母移動(dòng)了8位王悍,變成了q twdm c,然后他大聲地喊出了這些字母餐曼,只見alice拿出小本將凱撒密碼解開后熱淚迎眶压储,一對(duì)情侶淚眼朦朧,在看山谷里的吃瓜八卦者philippica,它也聽到了alice說凱撒密碼移動(dòng)8位晋辆,于是他放下西瓜渠脉,也拿出了筆記本算了一下,然后露出了意味深長(zhǎng)的笑容瓶佳,接著繼續(xù)吃瓜芋膘。
“這根本不起任何作用,我們說的任何加密方式philippica也會(huì)聽到,他只要用聽到的密鑰解開我們的密碼为朋,那我們做啥都是徒勞的臂拓。”bob絕望的說习寸。
alice說:“沒關(guān)系胶惰,我們有rsa,現(xiàn)在我告訴你一組公鑰(3233, 17) 你現(xiàn)在腦子里想一個(gè)0~25的數(shù)字作為凱撒密碼的移動(dòng)位數(shù)霞溪,假設(shè)這個(gè)數(shù)字是m孵滞,那么你現(xiàn)在把m^17 Mod 3233這個(gè)結(jié)果告訴我⊙炱ィ”
bob覺得現(xiàn)在的alice很6,所以他選擇移動(dòng)位數(shù)為6,他會(huì)快速冪的方法坊饶,所以很快就把6^17 mod 3233的結(jié)果算了出來結(jié)果是824,他大聲喊出了這個(gè)數(shù)字。
alice聽到后很開心殴蓬,她這里有一組私鑰:(3233,2753)匿级,她用類似的方法計(jì)算824^2753 mod 3233,結(jié)果發(fā)現(xiàn)是6!于是她很開心的和bob用密鑰是6的凱撒說情話了染厅。
再看pilippica這邊痘绎,他也知道rsa密碼的流程,也聽到了兩人報(bào)的數(shù)字,他知道Bob想了一個(gè)數(shù)字m肖粮,并且m^17 mod 3233 = 824孤页,可他沒有高效的方法去解這個(gè)方程,只能看著alice和Bob媚眼傳情涩馆,共訴情話而自己在一邊郁悶的吃瓜了散庶。
因此rsa的本質(zhì)就是找這么三個(gè)數(shù),(e, d, n)使得對(duì)于任意的數(shù)字(在這里是指明文)m凌净,(me)d mod n = m,接著把(e, n)公開作為公鑰,自己留著d屋讶,別人把要加密的數(shù)自乘e次后mod n冰寻,告訴自己,自己只要把發(fā)來的結(jié)果再自乘d次mod n就是原來的明文了皿渗。

一斩芭、RSA的計(jì)算過程

上述過程中,出現(xiàn)了公鑰(3233,17)和私鑰(3233,2753)乐疆,這兩組數(shù)字是怎么找出來的呢划乖?參考RSA算法原理(二)
首字母縮寫說明:E是加密(Encryption)D是解密(Decryption)N是數(shù)字(Number)。

1.隨機(jī)選擇兩個(gè)不相等的質(zhì)數(shù)p和q挤土。
alice選擇了61和53琴庵。(實(shí)際應(yīng)用中,這兩個(gè)質(zhì)數(shù)越大,就越難破解迷殿。)

2.計(jì)算p和q的乘積n儿礼。
n = 61×53 = 3233
n的長(zhǎng)度就是密鑰長(zhǎng)度。3233寫成二進(jìn)制是110010100001庆寺,一共有12位蚊夫,所以這個(gè)密鑰就是12位。實(shí)際應(yīng)用中懦尝,RSA密鑰一般是1024位知纷,重要場(chǎng)合則為2048位。

3.計(jì)算n的歐拉函數(shù)φ(n)陵霉。稱作L
根據(jù)公式φ(n) = (p-1)(q-1)
alice算出φ(3233)等于60×52琅轧,即3120。

4.隨機(jī)選擇一個(gè)整數(shù)e撩匕,也就是公鑰當(dāng)中用來加密的那個(gè)數(shù)字
條件是1< e < φ(n)鹰晨,且e與φ(n) 互質(zhì)。
alice就在1到3120之間止毕,隨機(jī)選擇了17模蜡。(實(shí)際應(yīng)用中,常常選擇65537扁凛。)

5.計(jì)算e對(duì)于φ(n)的模反元素d忍疾。也就是密鑰當(dāng)中用來解密的那個(gè)數(shù)字
所謂"模反元素"就是指有一個(gè)整數(shù)d,可以使得ed被φ(n)除的余數(shù)為1谨朝。ed ≡ 1 (mod φ(n))
alice找到了2753卤妒,即17*2753 mode 3120 = 1

6.將n和e封裝成公鑰,n和d封裝成私鑰字币。
在alice的例子中则披,n=3233,e=17洗出,d=2753士复,所以公鑰就是 (3233,17),私鑰就是(3233, 2753)翩活。

上述故事中阱洪,blob為了偷偷地傳輸移動(dòng)位數(shù)6,使用了公鑰做加密菠镇,即6^17 mode 3233 = 824冗荸。alice收到824之后,進(jìn)行解密利耍,即824^2753 mod 3233 = 6蚌本。也就是說盔粹,alice成功收到了blob使用的移動(dòng)位數(shù)。

再來復(fù)習(xí)一下整個(gè)流程:
p=17,q=19
n = 1719 = 323
L = 16
18 = 144
E = 5(E需要滿足以下兩個(gè)條件:1<E<144,E和144互質(zhì))
D = 29(D要滿足兩個(gè)條件魂毁,1<D<144,D mode 144 = 1)
假設(shè)某個(gè)需要傳遞123玻佩,則加密后:123^5 mode 323 = 225
接收者收到225后,進(jìn)行解密席楚,225^ 29 mode 323 = 123

二咬崔、RSA的安全性和缺點(diǎn)

回顧上面的密鑰生成步驟,一共出現(xiàn)六個(gè)數(shù)字:
p
q
n
L即φ(n)
e
d
這六個(gè)數(shù)字之中烦秩,公鑰用到了兩個(gè)(n和e)垮斯,其余四個(gè)數(shù)字都是不公開的。其中最關(guān)鍵的是d只祠,因?yàn)閚和d組成了私鑰兜蠕,一旦d泄漏,就等于私鑰泄漏抛寝。那么熊杨,有無可能在已知n和e的情況下,推導(dǎo)出d盗舰?
(1)ed≡1 (mod φ(n))晶府。只有知道e和φ(n),才能算出d钻趋。
(2)φ(n)=(p-1)(q-1)川陆。只有知道p和q,才能算出φ(n)蛮位。
(3)n=pq较沪。只有將n因數(shù)分解,才能算出p和q失仁。
結(jié)論:如果n可以被因數(shù)分解尸曼,d就可以算出,也就意味著私鑰被破解萄焦。
可是骡苞,大整數(shù)的因數(shù)分解,是一件非常困難的事情楷扬。目前,除了暴力破解贴见,還沒有發(fā)現(xiàn)別的有效方法烘苹。維基百科這樣寫道:"對(duì)極大整數(shù)做因數(shù)分解的難度決定了RSA算法的可靠性。換言之片部,對(duì)一極大整數(shù)做因數(shù)分解愈困難镣衡,RSA算法愈可靠霜定。假如有人找到一種快速因數(shù)分解的算法,那么RSA的可靠性就會(huì)極度下降廊鸥。但找到這樣的算法的可能性是非常小的望浩。今天只有短的RSA密鑰才可能被暴力破解。到2008年為止惰说,世界上還沒有任何可靠的攻擊RSA算法的方式磨德。只要密鑰長(zhǎng)度足夠長(zhǎng),用RSA加密的信息實(shí)際上是不能被解破的吆视。"

然而典挑,雖然RSA的安全性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度與大數(shù)分解難度等價(jià)啦吧。即RSA的重大缺陷是無法從理論上把握它的保密性能如何您觉。此外,RSA的缺點(diǎn)還有:
A)產(chǎn)生密鑰很麻煩授滓,受到素?cái)?shù)產(chǎn)生技術(shù)的限制琳水,因而難以做到一次一密。
B)分組長(zhǎng)度太大般堆,為保證安全性在孝,n 至少也要 600bits以上,使運(yùn)算代價(jià)很高郁妈,尤其是速度較慢浑玛,較對(duì)稱密碼算法慢幾個(gè)數(shù)量級(jí);且隨著大數(shù)分解技術(shù)的發(fā)展噩咪,這個(gè)長(zhǎng)度還在增加顾彰,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。因此胃碾,使用RSA只能加密少量數(shù)據(jù)涨享,大量的數(shù)據(jù)加密還要靠對(duì)稱密碼算法

三仆百、RSA的由來(數(shù)學(xué)證明過程參考原文)

參考
RSA的證明
不給力啊厕隧,老濕!”:RSA加密與破解
“不給力啊俄周,老濕吁讨!”:RSA加密與破解
加密和解密是自古就有技術(shù)了。經(jīng)陈屠剩看到偵探電影的橋段建丧,勇敢又機(jī)智的主角,拿著一長(zhǎng)串毫無意義的數(shù)字苦惱波势,忽然靈光一閃翎朱,翻出一本厚書橄维,將第一個(gè)數(shù)字對(duì)應(yīng)頁碼數(shù),第二個(gè)數(shù)字對(duì)應(yīng)行數(shù)拴曲,第三個(gè)數(shù)字對(duì)應(yīng)那一行的某個(gè)詞争舞。數(shù)字變成了一串非常有意義的話:
Eat the beancurd with the peanut. Taste like the ham.

這種加密方法是將原來的某種信息按照某個(gè)規(guī)律打亂。某種打亂的方式就叫做密鑰(cipher code)澈灼。發(fā)出信息的人根據(jù)密鑰來給信息加密竞川,而接收信息的人利用相同的密鑰,來給信息解密蕉汪。就好像一個(gè)帶鎖的盒子流译。發(fā)送信息的人將信息放到盒子里,用鑰匙鎖上者疤。而接受信息的人則用相同的鑰匙打開福澡。加密和解密用的是同一個(gè)密鑰,這種加密稱為對(duì)稱加密(symmetric encryption)驹马。

如果一對(duì)一的話革砸,那么兩人需要交換一個(gè)密鑰。一對(duì)多的話糯累,比如總部和多個(gè)特工的通信算利,依然可以使用同一套密鑰。但這種情況下泳姐,對(duì)手偷到一個(gè)密鑰的話效拭,就知道所有交流的信息了。二戰(zhàn)中盟軍的情報(bào)戰(zhàn)成果胖秒,很多都來自于破獲這種對(duì)稱加密的密鑰缎患。

為了更安全,總部需要給每個(gè)特工都設(shè)計(jì)一個(gè)不同的密鑰阎肝。如果是FBI這樣龐大的機(jī)構(gòu)挤渔,恐怕很難維護(hù)這么多的密鑰。在現(xiàn)代社會(huì)风题,每個(gè)人的信用卡信息都需要加密判导。一一設(shè)計(jì)密鑰的話,銀行怕是要跪了沛硅。

對(duì)稱加密的薄弱之處在于給了太多人的鑰匙眼刃。如果只給特工鎖,而總部保有鑰匙摇肌,那就容易了鸟整。特工將信息用鎖鎖到盒子里,誰也打不開朦蕴,除非到總部用唯一的一把鑰匙打開篮条。只是這樣的話,特工每次出門都要帶上許多鎖吩抓,太容易被識(shí)破身份了涉茧。總部老大想了想疹娶,干脆就把造鎖的技術(shù)公開了伴栓。特工,或者任何其它人雨饺,可以就地取材钳垮,按照?qǐng)D紙?jiān)戽i,但無法根據(jù)圖紙?jiān)斐鲨€匙额港。鑰匙只有總部的那一把饺窿。

上面的關(guān)鍵是鎖和鑰匙工藝不同。知道了鎖移斩,并不能知道鑰匙肚医。這樣,銀行可以將“造鎖”的方法公布給所有用戶向瓷。每個(gè)用戶可以用鎖來加密自己的信用卡信息肠套。即使被別人竊聽到,也不用擔(dān)心:只有銀行才有鑰匙呢猖任!這樣一種加密算法叫做非對(duì)稱加密(asymmetric encryption)你稚。非對(duì)稱加密的經(jīng)典算法是RSA算法。它來自于數(shù)論與計(jì)算機(jī)計(jì)數(shù)的奇妙結(jié)合朱躺。

1976年刁赖,兩位美國(guó)計(jì)算機(jī)學(xué)家Whitfield Diffie 和 Martin Hellman,提出了一種嶄新構(gòu)思室琢,可以在不直接傳遞密鑰的情況下乾闰,完成解密。這被稱為"Diffie-Hellman密鑰交換算法"盈滴。這個(gè)算法啟發(fā)了其他科學(xué)家涯肩。人們認(rèn)識(shí)到,加密和解密可以使用不同的規(guī)則巢钓,只要這兩種規(guī)則之間存在某種對(duì)應(yīng)關(guān)系即可病苗,這樣就避免了直接傳遞密鑰。這種新的加密模式被稱為"非對(duì)稱加密算法"症汹。

1977年硫朦,三位數(shù)學(xué)家Rivest、Shamir 和 Adleman 設(shè)計(jì)了一種算法背镇,可以實(shí)現(xiàn)非對(duì)稱加密咬展。這種算法用他們?nèi)齻€(gè)人的名字命名泽裳,叫做RSA算法。從那時(shí)直到現(xiàn)在破婆,RSA算法一直是最廣為使用的"非對(duì)稱加密算法"涮总。毫不夸張地說,只要有計(jì)算機(jī)網(wǎng)絡(luò)的地方祷舀,就有RSA算法瀑梗。


image.png
四、非對(duì)稱加密RSA通俗解釋和數(shù)字簽名

參考如何用通俗易懂的話來解釋非對(duì)稱加密?

1.能“撞”上的保險(xiǎn)箱(非對(duì)稱/公鑰加密體制裳扯,Asymmetric / Public Key Encryption)

數(shù)據(jù)加密解密和門鎖很像抛丽。最開始的時(shí)候,人們只想到了那種只能用鑰匙“鎖”數(shù)據(jù)的鎖饰豺。如果在自己的電腦上自己加密數(shù)據(jù)亿鲜,當(dāng)然可以用最開始這種門鎖的形式啦,方便快捷哟忍,簡(jiǎn)單易用有木有狡门。

但是我們現(xiàn)在是通信時(shí)代啊,雙方都想做安全的通信怎么辦呢锅很?如果也用這種方法其馏,通信就好像互相發(fā)送密碼保險(xiǎn)箱一樣…而且雙方必須都有鑰匙才能進(jìn)行加密和解密。也就是說爆安,兩個(gè)人都拿著保險(xiǎn)箱的鑰匙叛复,你把數(shù)據(jù)放進(jìn)去,用鑰匙鎖上發(fā)給我扔仓。我用同樣的鑰匙把保險(xiǎn)箱打開褐奥,再把我的數(shù)據(jù)鎖進(jìn)保險(xiǎn)箱,發(fā)送給你翘簇。

這樣看起來好像沒什么問題撬码。但是,這里面最大的問題是:我們兩個(gè)怎么弄到同一個(gè)保險(xiǎn)箱的同一個(gè)鑰匙呢版保?好像僅有的辦法就是我們兩個(gè)一起去買個(gè)保險(xiǎn)箱呜笑,然后一人拿一把鑰匙,以后就用這個(gè)保險(xiǎn)箱了彻犁〗行玻可是,現(xiàn)代通信社會(huì)汞幢,絕大多數(shù)情況下別說一起去買保險(xiǎn)箱了驼鹅,連見個(gè)面都難,這怎么辦啊输钩?

于是豺型,人們想到了“撞門”的方法。我這有個(gè)可以“撞上”的保險(xiǎn)箱买乃,你那里自己也買一個(gè)這樣的保險(xiǎn)箱触创。通信最開始,我把保險(xiǎn)箱打開为牍,就這么開著把保險(xiǎn)箱發(fā)給你。你把數(shù)據(jù)放進(jìn)去以后岩馍,把保險(xiǎn)箱“撞”上發(fā)給我碉咆。撞上以后,除了我以外蛀恩,誰都打不開保險(xiǎn)箱了疫铜。這就是RSA了,公開的保險(xiǎn)箱就是公鑰双谆,但是我有私鑰壳咕,我才能打開。

2.數(shù)字簽名
這種鎖看起來好像很不錯(cuò)顽馋,但是鎖在運(yùn)輸?shù)倪^程中有這么一個(gè)嚴(yán)重的問題:你怎么確定你收到的開著的保險(xiǎn)箱就是我發(fā)來的呢谓厘?對(duì)于一個(gè)聰明人,他完全可以這么干:
(a)裝作運(yùn)輸工人寸谜。我現(xiàn)在把我開著的保險(xiǎn)箱運(yùn)給對(duì)方竟稳。運(yùn)輸工人自己也弄這么一個(gè)保險(xiǎn)箱,運(yùn)輸?shù)臅r(shí)候把保險(xiǎn)箱換成他做的熊痴。
(b)對(duì)方收到保險(xiǎn)箱后他爸,沒法知道這個(gè)保險(xiǎn)箱是我最初發(fā)過去的,還是運(yùn)輸工人替換的果善。對(duì)方把數(shù)據(jù)放進(jìn)去诊笤,把保險(xiǎn)箱撞上。
(c)運(yùn)輸工人往回運(yùn)的時(shí)候巾陕,用自己的鑰匙打開自己的保險(xiǎn)箱讨跟,把數(shù)據(jù)拿走。然后復(fù)印也好惜论,偽造也好许赃,弄出一份數(shù)據(jù),把這份數(shù)據(jù)放進(jìn)我的保險(xiǎn)箱馆类,撞上混聊,然后發(fā)給我。
從我的角度,從對(duì)方的角度句喜,都會(huì)覺得這數(shù)據(jù)傳輸過程沒問題预愤。但是,運(yùn)輸工人成功拿到了數(shù)據(jù)咳胃,整個(gè)過程還是不安全的植康,大概的過程是這樣:


image.png

這怎么辦啊展懈?這個(gè)問題的本質(zhì)原因是销睁,人們沒辦法獲知,保險(xiǎn)箱到底是“我”做的存崖,還是運(yùn)輸工人做的冻记。那干脆,我們都別做保險(xiǎn)箱了来惧,讓權(quán)威機(jī)構(gòu)做保險(xiǎn)箱冗栗,然后在每個(gè)保險(xiǎn)箱上用特殊的工具刻上一個(gè)編號(hào)。對(duì)方收到保險(xiǎn)箱的時(shí)候供搀,在權(quán)威機(jī)構(gòu)的“公告欄”上查一下編號(hào)隅居,要是和保險(xiǎn)箱上的編號(hào)一樣,我就知道這個(gè)保險(xiǎn)箱是“我”的葛虐,就安心把數(shù)據(jù)放進(jìn)去胎源。大概過程是這樣的:


image.png

如何做出刻上編號(hào),而且編號(hào)沒法修改的保險(xiǎn)箱呢挡闰?這涉及到了公鑰體制中的另一個(gè)問題:數(shù)字簽名乒融。

要知道,刻字這種事情吧摄悯,誰都能干赞季,所以想做出只能自己刻字,還沒法讓別人修改的保險(xiǎn)箱確實(shí)有點(diǎn)難度奢驯。那么怎么辦呢申钩?這其實(shí)困擾了人們很長(zhǎng)的時(shí)間。直到有一天瘪阁,人們發(fā)現(xiàn):我們不一定非要在保險(xiǎn)箱上刻規(guī)規(guī)矩矩的字撒遣,我們干脆在保險(xiǎn)箱上刻手寫名字好了。而且管跺,刻字有點(diǎn)麻煩义黎,干脆我們?cè)谏厦媾獜埣垼屓酥苯釉谏厦鎸懟砼埽?jiǎn)單不費(fèi)事廉涕。具體做法是,我們?cè)诒kU(xiǎn)箱上嵌進(jìn)去一張紙,然后每個(gè)出產(chǎn)的保險(xiǎn)箱都讓權(quán)威機(jī)構(gòu)的CEO簽上自己的名字狐蜕。然后宠纯,CEO把自己的簽名公開在權(quán)威機(jī)構(gòu)的“公告欄”上面。比如這個(gè)CEO就叫“學(xué)酥”层释,那么整個(gè)流程差不多是這個(gè)樣子:


image.png

這個(gè)方法的本質(zhì)原理是婆瓜,每個(gè)人都能夠通過筆跡看出保險(xiǎn)箱上的字是不是學(xué)酥CEO簽的。但是呢贡羔,這個(gè)字體是學(xué)酥CEO唯一的字體廉白。別人很難模仿。如果模仿我們就能自己分辨出來了乖寒。要是實(shí)在分辨不出來呢蒙秒,我們就請(qǐng)一個(gè)筆跡專家來分辨。這不是很好嘛宵统。這個(gè)在密碼學(xué)上就是數(shù)字簽名。

上面這個(gè)簽字的方法雖然好覆获,但是還有一個(gè)比較蛋疼的問題马澈。因?yàn)楹炞值臉幼邮枪_的,一個(gè)聰明人可以把公開的簽字影印一份弄息,自己造個(gè)保險(xiǎn)箱痊班,然后把這個(gè)影印的字也嵌進(jìn)去。這樣一來摹量,這個(gè)聰明人也可以造一個(gè)相同簽字的保險(xiǎn)箱了涤伐。解決這個(gè)問題一個(gè)非常簡(jiǎn)單的方法就是在看保險(xiǎn)箱上的簽名時(shí),不光看字體本身缨称,還要看字體是不是和公開的字體完全一樣凝果。要是完全一樣,就可以考慮這個(gè)簽名可能是影印出來的睦尽。甚至器净,還要考察字體是不是和其他保險(xiǎn)柜上的字體一模一樣。因?yàn)槁斆魅藶榱似垓_大家当凡,可能不影印公開的簽名山害,而影印其他保險(xiǎn)箱上的簽名。這種解決方法雖然簡(jiǎn)單沿量,但是驗(yàn)證簽名的時(shí)候麻煩了一些浪慌。麻煩的地方在于我不僅需要對(duì)比保險(xiǎn)箱上的簽名是否與公開的筆跡一樣,還需要對(duì)比得到的簽名是否與公開的筆跡完全一樣朴则,乃至是否和所有發(fā)布的保險(xiǎn)箱上的簽名完全一樣权纤。有沒有什么更好的方法呢?

當(dāng)然有,人們想到了一個(gè)比較好的方法。那就是许溅,學(xué)酥CEO簽字的時(shí)候吧损敷,不光把名字簽上,還得帶上簽字得日期坐榆,或者帶上這個(gè)保險(xiǎn)箱的編號(hào)。這樣一來冗茸,每一個(gè)保險(xiǎn)箱上的簽字就唯一了席镀,這個(gè)簽字是學(xué)酥CEO的簽名+學(xué)酥CEO寫上的時(shí)間或者編號(hào)。這樣一來夏漱,就算有人偽造豪诲,也只能偽造用過的保險(xiǎn)箱。這個(gè)問題就徹底解決了挂绰。這個(gè)過程大概是這么個(gè)樣子:


image.png

3 造價(jià)問題(密鑰封裝機(jī)制屎篱,Key Encapsulation Mechanism)
解決了上面的各種問題,我們要考慮考慮成本了… 這種能“撞”門的保險(xiǎn)箱雖然好葵蒂,但是這種鎖造價(jià)一般來說要比普通的鎖要高交播,而且鎖生產(chǎn)時(shí)間也會(huì)變長(zhǎng)。在密碼學(xué)中践付,對(duì)于同樣“結(jié)實(shí)”的鎖秦士,能“撞”門的鎖的造價(jià)一般來說是普通鎖的上千倍。同時(shí)永高,能“撞”門的鎖一般來說只能安裝在小的保險(xiǎn)柜里面隧土。畢竟,這么復(fù)雜的鎖命爬,裝起來很費(fèi)事安芸!而普通鎖安裝在多大的保險(xiǎn)柜上面都可以呢饲宛。如果兩個(gè)人想傳輸大量數(shù)據(jù)的話卖毁,用一個(gè)大的保險(xiǎn)柜比用一堆小的保險(xiǎn)柜慢慢傳要好的多呀。怎么解決這個(gè)問題呢落萎?人們又想出了一個(gè)非常棒的方法:我們把兩種鎖結(jié)合起來亥啦。能“撞”上的保險(xiǎn)柜里面放一個(gè)普通鎖的鑰匙。然后造一個(gè)用普通的保險(xiǎn)柜來鎖大量的數(shù)據(jù)练链。這樣一來翔脱,我們相當(dāng)于用能“撞”上的保險(xiǎn)柜發(fā)一個(gè)鑰匙過去。對(duì)方收到兩個(gè)保險(xiǎn)柜后媒鼓,先用自己的鑰匙把小保險(xiǎn)柜打開届吁,取出鑰匙错妖。然后在用這個(gè)鑰匙開大的保險(xiǎn)柜。這樣做更棒的一個(gè)地方在于疚沐,既然對(duì)方得到了一個(gè)鑰匙暂氯,后續(xù)再通信的時(shí)候,我們就不再需要能“撞”上的保險(xiǎn)柜了啊亮蛔,在以后一定時(shí)間內(nèi)就用普通保險(xiǎn)柜就好了痴施,方便快捷嘛。

以下參考數(shù)字簽名究流、數(shù)字證書辣吃、SSL、https是什么關(guān)系芬探?
4.數(shù)字簽名(Digital Signature)
數(shù)據(jù)在瀏覽器和服務(wù)器之間傳輸時(shí)神得,有可能在傳輸過程中被冒充的盜賊把內(nèi)容替換了,那么如何保證數(shù)據(jù)是真實(shí)服務(wù)器發(fā)送的而不被調(diào)包呢偷仿,同時(shí)如何保證傳輸?shù)臄?shù)據(jù)沒有被人篡改呢哩簿,要解決這兩個(gè)問題就必須用到數(shù)字簽名,數(shù)字簽名就如同日常生活的中的簽名一樣酝静,一旦在合同書上落下了你的大名卡骂,從法律意義上就確定是你本人簽的字兒,這是任何人都沒法仿造的形入,因?yàn)檫@是你專有的手跡,任何人是造不出來的缝左。那么在計(jì)算機(jī)中的數(shù)字簽名怎么回事呢亿遂?數(shù)字簽名就是用于驗(yàn)證傳輸?shù)膬?nèi)容是不是真實(shí)服務(wù)器發(fā)送的數(shù)據(jù),發(fā)送的數(shù)據(jù)有沒有被篡改過渺杉,它就干這兩件事蛇数,是非對(duì)稱加密的一種應(yīng)用場(chǎng)景。不過他是反過來用私鑰來加密是越,通過與之配對(duì)的公鑰來解密耳舅。
第一步:服務(wù)端把報(bào)文經(jīng)過Hash處理后生成摘要信息Digest,摘要信息使用私鑰private-key加密之后就生成簽名倚评,服務(wù)器把簽名連同報(bào)文一起發(fā)送給客戶端浦徊。
第二步:客戶端接收到數(shù)據(jù)后,把簽名提取出來用public-key解密天梧,如果能正常的解密出來Digest2盔性,那么就能確認(rèn)是對(duì)方發(fā)的。
第三步:客戶端把報(bào)文Text提取出來做同樣的Hash處理呢岗,得到的摘要信息Digest1冕香,再與之前解密出來的Digist2對(duì)比蛹尝,如果兩者相等,就表示內(nèi)容沒有被篡改悉尾,否則內(nèi)容就是被人改過了突那。因?yàn)橹灰谋緝?nèi)容哪怕有任何一點(diǎn)點(diǎn)改動(dòng)都會(huì)Hash出一個(gè)完全不一樣的摘要信息出來。

5.數(shù)字證書(Certificate Authority)
數(shù)字證書簡(jiǎn)稱CA构眯,它由權(quán)威機(jī)構(gòu)給某網(wǎng)站頒發(fā)的一種認(rèn)可憑證愕难,這個(gè)憑證是被大家(瀏覽器)所認(rèn)可的,為什么需要用數(shù)字證書呢鸵赖,難道有了數(shù)字簽名還不夠安全嗎务漩?有這樣一種情況,就是瀏覽器無法確定所有的真實(shí)服務(wù)器是不是真的是真實(shí)的它褪,舉一個(gè)簡(jiǎn)單的例子:A廠家給你們家安裝鎖饵骨,同時(shí)把鑰匙也交給你,只要鑰匙能打開鎖茫打,你就可以確定鑰匙和鎖是配對(duì)的居触,如果有人把鑰匙換了或者把鎖換了,你是打不開門的老赤,你就知道肯定被竊取了轮洋,但是如果有人把鎖和鑰匙替換成另一套表面看起來差不多的,但質(zhì)量差很多的抬旺,雖然鑰匙和鎖配套弊予,但是你卻不能確定這是否真的是A廠家給你的,那么這時(shí)候开财,你可以找質(zhì)檢部門來檢驗(yàn)一下汉柒,這套鎖是不是真的來自于A廠家,質(zhì)檢部門是權(quán)威機(jī)構(gòu)责鳍,他說的話是可以被公眾認(rèn)可的(呵呵)碾褂。
同樣的, 因?yàn)槿绻腥耍◤埲┯米约旱墓€把真實(shí)服務(wù)器發(fā)送給瀏覽器的公鑰替換了历葛,于是張三用自己的私鑰執(zhí)行相同的步驟對(duì)文本Hash正塌、數(shù)字簽名,最后得到的結(jié)果都沒什么問題恤溶,但事實(shí)上瀏覽器看到的東西卻不是真實(shí)服務(wù)器給的乓诽,而是被張三從里到外(公鑰到私鑰)換了一通。那么如何保證你現(xiàn)在使用的公鑰就是真實(shí)服務(wù)器發(fā)給你的呢咒程?我們就用數(shù)字證書來解決這個(gè)問題问裕。數(shù)字證書一般由數(shù)字證書認(rèn)證機(jī)構(gòu)(Certificate Authority)頒發(fā),證書里面包含了真實(shí)服務(wù)器的公鑰和網(wǎng)站的一些其他信息孵坚,數(shù)字證書機(jī)構(gòu)用自己的私鑰加密后發(fā)給瀏覽器粮宛,瀏覽器使用數(shù)字證書機(jī)構(gòu)的公鑰解密后得到真實(shí)服務(wù)器的公鑰窥淆。這個(gè)過程是建立在被大家所認(rèn)可的證書機(jī)構(gòu)之上得到的公鑰,所以這是一種安全的方式巍杈。

五忧饭、常見的對(duì)稱,非對(duì)稱加密算法應(yīng)用

常見的對(duì)稱加密算法有DES筷畦、3DES词裤、AES、RC5鳖宾、RC6吼砂。非對(duì)稱加密算法應(yīng)用非常廣泛,如SSH,
HTTPS, TLS鼎文,電子證書渔肩,電子簽名,電子身份證等等拇惋。
參考DES/3DES/AES區(qū)別

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末周偎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撑帖,更是在濱河造成了極大的恐慌蓉坎,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胡嘿,死亡現(xiàn)場(chǎng)離奇詭異蛉艾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)衷敌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門勿侯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逢享,你說我怎么就攤上這事∥庠澹” “怎么了瞒爬?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)沟堡。 經(jīng)常有香客問我侧但,道長(zhǎng),這世上最難降的妖魔是什么航罗? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任禀横,我火速辦了婚禮,結(jié)果婚禮上粥血,老公的妹妹穿的比我還像新娘柏锄。我一直安慰自己酿箭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布趾娃。 她就那樣靜靜地躺著缭嫡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抬闷。 梳的紋絲不亂的頭發(fā)上妇蛀,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音笤成,去河邊找鬼评架。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炕泳,可吹牛的內(nèi)容都是我干的纵诞。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼喊崖,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼挣磨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起荤懂,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤茁裙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后节仿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晤锥,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年廊宪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矾瘾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡箭启,死狀恐怖壕翩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情傅寡,我是刑警寧澤放妈,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站荐操,受9級(jí)特大地震影響芜抒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜托启,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一宅倒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屯耸,春花似錦拐迁、人聲如沸蹭劈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽链方。三九已至,卻和暖如春灶搜,著一層夾襖步出監(jiān)牢的瞬間祟蚀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工割卖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留前酿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓鹏溯,卻偏偏與公主長(zhǎng)得像罢维,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丙挽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容