密鑰
由于公開了可靠安全的加密算法,密鑰這一只有通信雙方或一方知道的數(shù)據(jù)信息就極為重要挠蛉,可以說祭示,密鑰=明文。就算作廢的密鑰泄露出去谴古,攻擊者也可能利用來解密歷史消息质涛。因此注銷數(shù)字證書需要登記,而每次驗(yàn)證數(shù)字證書也要檢查該證書是否已注銷(和信用卡手機(jī)號(hào)等標(biāo)識(shí)個(gè)人身份來發(fā)送/接收消費(fèi)/語音信息的載體的注銷掰担,是一樣一樣的)
對(duì)稱密鑰被同時(shí)用于加密和解密汇陆,需要被通信雙方共享,配送密鑰成了問題恩敌,配送密鑰的解決方案有:
- 使用公鑰密鑰加密 (通常的混合密碼策略都使用這種方法)
- Deffie-Hellman方法配送對(duì)稱密鑰
- 選取一個(gè)很大的質(zhì)數(shù)P, 以及它的一個(gè)生成元G瞬测,P和G不用保密
- 通信方S生成隨機(jī)數(shù)A,并計(jì)算GA mod P發(fā)給通信方R纠炮;同時(shí)通信方R生成隨機(jī)數(shù)B月趟,并計(jì)算GBmod P發(fā)給通信方S
- S持有隨機(jī)數(shù)A,并對(duì)A保密恢口;R持有隨機(jī)數(shù)B孝宗,并對(duì)B保密。而雙方發(fā)送的GAmod P和GB mod P不用保密
- S拿到GB mod P再A次方后mod P耕肩,就是用于加密和解密的密鑰因妇,R拿到GB mod P再B次方后mod P就是密鑰问潭。配送密鑰完成,除了雙方自己生成的隨機(jī)數(shù)A和B外婚被,其他信息都可公開 (太牛B了狡忙!)
- 類似于公開消息的單向散列函數(shù)的值也無法倒推消息本身一樣,公開了GA mod P和G址芯、P也無法倒推A
- 很容易可以證明以上計(jì)算步驟等價(jià)于密鑰 = GA×B mod P = GB×A mod P
- 質(zhì)數(shù)P灾茁,生成元G等都是數(shù)論和抽象代數(shù)的知識(shí)。數(shù)學(xué)渣表示不想深究
PBE-基于口令的密碼
簡單說來就是將口令拼上隨機(jī)數(shù)(salt谷炸,注:需要保存在安全處供解密使用)生成散列值作為密碼(KEK-用來加密密鑰的密鑰)北专,加密另一個(gè)需要被保護(hù)的密鑰比如保存在本地的私鑰。PBE是非常常用的技術(shù)
隨機(jī)數(shù)
隨機(jī)數(shù)有三個(gè)強(qiáng)度:一隨機(jī)性旬陡,二不可預(yù)測性拓颓,三不可重復(fù)性
舉例來說擲骰子同時(shí)滿足這三個(gè)條件
由于機(jī)器生成隨機(jī)數(shù)依賴于其內(nèi)部狀態(tài),因此都算是偽隨機(jī)數(shù)描孟,對(duì)安全要求高的場合還會(huì)采集不可重現(xiàn)的環(huán)境信息加入到生成隨機(jī)數(shù)的過程中驶睦,比如要求隨意敲鍵盤移動(dòng)鼠標(biāo)等。
生成隨機(jī)數(shù)用到了單向散列函數(shù)和加密方法画拾,可以參見具體的ANSI X9.31
PGP的信任網(wǎng)絡(luò)
PGP是一款有名的密碼軟件啥繁,最初的設(shè)計(jì)就是不信任第三方權(quán)威機(jī)構(gòu),它引入了安全網(wǎng)絡(luò)的概念
安全網(wǎng)絡(luò):若A信任B的公鑰青抛,可以對(duì)B的公鑰進(jìn)行數(shù)字簽名旗闽,其他人收到B的公鑰的同時(shí)也能收到A的數(shù)字簽名,相當(dāng)于A公開表達(dá)了對(duì)B的信任蜜另。而C還可以對(duì)A的意見設(shè)置級(jí)別适室,比如若C認(rèn)為A信賴的值得他完全信賴,那么C收到帶有A數(shù)字簽名的B的公鑰举瑰,也會(huì)直接信任B的公鑰捣辆,這樣的傳遞關(guān)系構(gòu)成了網(wǎng)絡(luò)。
注意若A完全信賴B此迅,B完全信賴C是不能推出A可以完全信賴C的汽畴,因此這種傳遞關(guān)系只有一層。試考慮信任網(wǎng)絡(luò)中的公鑰和數(shù)字證書的區(qū)別耸序,某人的數(shù)字證書是其數(shù)字證書的公鑰+第三方權(quán)威機(jī)構(gòu)對(duì)該公鑰的數(shù)字簽名忍些,也就是說唯一的第三方權(quán)威機(jī)構(gòu)頒發(fā),而PGP安全網(wǎng)中的公鑰則包含所有信任該公鑰的人/機(jī)構(gòu)/團(tuán)體的數(shù)字簽名
對(duì)他人的數(shù)字簽名(主觀判斷)的信任也可以分等級(jí)坎怪,還可以設(shè)置至少有n個(gè)信任等級(jí)為c的數(shù)字簽名的公鑰即可被信任罢坝。
這種去中心化的網(wǎng)絡(luò)實(shí)際上也是我們下意識(shí)采用的信任模式,很容易被理解
SSL&TLS
TLS是數(shù)據(jù)傳輸加密協(xié)議搅窿,位于應(yīng)用層協(xié)議之下嘁酿。承載HTTP時(shí)被稱為HTTPS隙券,當(dāng)然也可以保護(hù)SMTP/POP3等其它協(xié)議。
TLS協(xié)議工作有兩個(gè)階段:
-
握手協(xié)議:這個(gè)階段雙方要
- 確定即將使用的加密算法以及若解密失敗的替代算法
- 交換數(shù)字證書(服務(wù)器可選擇不要求客戶端證書)
- 交換生成會(huì)話密鑰需要的信息闹司,比如公鑰或Deffie-Hellman方法中的GA mod P娱仔。
握手協(xié)議階段交換的信息都是公開的
記錄協(xié)議:負(fù)責(zé)執(zhí)行消息的壓縮、加密和認(rèn)證
還有值得一提的兩點(diǎn)
- SSL&TLS中所協(xié)商的加密算法开仰,散列值生成算法等算法都是可以配置替換的拟枚,實(shí)際上現(xiàn)在的協(xié)議和軟件大多都有這種特性
- SSL&TLS不保護(hù)加密前的數(shù)據(jù)薪铜,不保護(hù)加密后的數(shù)據(jù)众弓,實(shí)際上它只保護(hù)了通信傳輸階段的信息安全
不完美的安全
- 攻易守難:防御必須不間斷且所有環(huán)節(jié)無薄弱點(diǎn),而攻擊只要針對(duì)最虛弱的時(shí)間或最薄弱的環(huán)節(jié)
- 只有完美的密碼隔箍,沒有完美的人
攻擊者不需要和密碼算法硬碰硬谓娃,比如可以攻擊存儲(chǔ)/顯示信息的電腦,攻擊打印機(jī)蜒滩,盜竊滨达,翻垃圾桶,甚至冒充工作人員或政府部門直接進(jìn)行欺騙和套問俯艰。如果人本身是整個(gè)鏈條上最不安全的一環(huán)捡遍,不管用什么樣的加密認(rèn)證技術(shù)都不能保證安全
END