下文主要從加密算法的特征、常用加密算法和加密工具等方面惕它,梳理和比較對(duì)稱加密怕午、單向加密和公鑰加密的概念及其之間的聯(lián)系。
1. 對(duì)稱加密
采用單鑰密碼的加密方法淹魄,同一個(gè)密鑰可以同時(shí)用來加密和解密郁惜,這種加密方法稱為對(duì)稱加密,也稱為單密鑰加密甲锡。常用的單向加密算法:
- DES(Data Encryption Standard):數(shù)據(jù)加密標(biāo)準(zhǔn)兆蕉,速度較快,適用于加密大量數(shù)據(jù)的場(chǎng)合缤沦;
- 3DES(Triple DES):是基于DES恨樟,對(duì)一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密,強(qiáng)度更高疚俱;
- AES(Advanced Encryption Standard):高級(jí)加密標(biāo)準(zhǔn)劝术,是下一代的加密算法標(biāo)準(zhǔn),速度快呆奕,安全級(jí)別高养晋,支持128、192梁钾、256绳泉、512位密鑰的加密;
- Blowfish
算法特征:
- 1姆泻、加密方和解密方使用同一個(gè)密鑰零酪;
- 2、加密解密的速度比較快拇勃,適合數(shù)據(jù)比較長(zhǎng)時(shí)的使用四苇;
- 3、密鑰傳輸?shù)倪^程不安全方咆,且容易被破解月腋,密鑰管理也比較麻煩;
加密工具:
- openssl瓣赂,它使用了libcrypto加密庫(kù)榆骚、libssl庫(kù)即TLS/SSL協(xié)議的實(shí)現(xiàn)庫(kù)等。TLS/SSL是基于會(huì)話的煌集、實(shí)現(xiàn)了身份認(rèn)證妓肢、數(shù)據(jù)機(jī)密性和會(huì)話完整性的TLS/SSL庫(kù)。openssl官網(wǎng)苫纤。
- gpg
2. 單向散列加密
單向加密又稱為不可逆加密算法碉钠,其密鑰是由加密散列函數(shù)生成的纲缓。單向散列函數(shù)一般用于產(chǎn)生消息摘要,密鑰加密等放钦,常見的有:
- 1、MD5(Message Digest Algorithm 5):是RSA數(shù)據(jù)安全公司開發(fā)的一種單向散列算法恭金,非可逆操禀,相同的明文產(chǎn)生相同的密文;
- 2横腿、SHA(Secure Hash Algorithm):可以對(duì)任意長(zhǎng)度的數(shù)據(jù)運(yùn)算生成一個(gè)160位的數(shù)值颓屑。其變種由SHA192,SHA256耿焊,SHA384等揪惦;
- 3、CRC-32罗侯,主要用于提供校驗(yàn)功能器腋;
算法特征:
- ① 輸入一樣,輸出必然相同钩杰;
- ② 雪崩效應(yīng)纫塌,輸入的微小改變,將會(huì)引起結(jié)果的巨大變化讲弄;
- ③ 定長(zhǎng)輸出措左,無論原始數(shù)據(jù)多大,結(jié)果大小都是相同的避除;
- ④ 不可逆怎披,無法根據(jù)特征碼還原原來的數(shù)據(jù);
下圖展示了sha1算法的雪崩效應(yīng)瓶摆,微小的改變凉逛,引起結(jié)果的巨大變化。
加密工具:
- md5sum
- sha1sum
- openssl dgst
3. 非對(duì)稱加密
非對(duì)稱密鑰加密也稱為公鑰加密群井,由一對(duì)公鑰和私鑰組成鱼炒。公鑰是從私鑰提取出來的◎蚪瑁可以用公鑰加密昔瞧,再用私鑰解密,這種情形一般用于公鑰加密菩佑;也可以用私鑰加密自晰,用公鑰解密,常用于數(shù)字簽名稍坯,因此非對(duì)稱加密的主要功能就是加密和數(shù)字簽名酬荞。
特征:
- 秘鑰對(duì)搓劫,公鑰(public key)和私鑰(secret key)
- 主要功能:加密和簽名
- 發(fā)送方用對(duì)方的公鑰加密,可以保證數(shù)據(jù)的機(jī)密性(公鑰加密)混巧;
- 發(fā)送方用自己的私鑰加密潮改,可以實(shí)現(xiàn)身份驗(yàn)證(數(shù)字簽名)兵钮;
圖解非對(duì)稱加密的主要功能:加密解密和數(shù)字簽名
公鑰加密算法很少用來加密數(shù)據(jù),速度太慢,通常用來實(shí)現(xiàn)身份驗(yàn)證雳锋;事實(shí)上拧篮,非對(duì)稱加密的主要作用也就是身份驗(yàn)證;
基于非對(duì)稱加密的特性蠢壹,又產(chǎn)生了以下兩個(gè)問題区匠。
問題1:如何確認(rèn)通信方證書的合法性呢?
借助于第三方機(jī)構(gòu):CA(Certificate Authority)蛙埂。CA為每個(gè)使用公開密鑰的用戶簽發(fā)一個(gè)含CA簽名的證書倦畅,該證書的作用是證明證書中的用戶合法擁有證書中的公開密鑰,CA機(jī)構(gòu)的數(shù)字簽名使得攻擊者不能偽造和篡改證書绣的。
CA自身也擁有一個(gè)證書和私鑰叠赐。任何人都可以得到CA的證書,并用該證書驗(yàn)證它所簽發(fā)證書有效性屡江。
假設(shè)機(jī)構(gòu)A向CA發(fā)出一個(gè)證書簽發(fā)請(qǐng)求:(證書簽發(fā)流程)
- CA首先生成一對(duì)公鑰和私鑰燎悍,并自簽署一個(gè)CA證書certificate;
- A向CA提供自己的基本信息和自己的公鑰盼理;
- CA先對(duì)A的基本信息和公鑰計(jì)算一個(gè)特征碼谈山,然后再使用自己的私鑰對(duì)特征碼進(jìn)行加密,加密生成的字符串(數(shù)字簽名)宏怔、A的公鑰奏路、A的基本信息共同組成了CA簽發(fā)的數(shù)字證書;
有了CA簽發(fā)的數(shù)字證書臊诊,就可以通過CA來確認(rèn)證書擁有者的身份鸽粉,也就解決了通信中身份確認(rèn)的問題。那身份確認(rèn)完之后抓艳,如何保證數(shù)據(jù)的機(jī)密性呢触机?
問題2:通過CA實(shí)現(xiàn)了身份驗(yàn)證,那如何保證數(shù)據(jù)的機(jī)密性呢玷或?
保證數(shù)據(jù)的機(jī)密性儡首,無非就是給數(shù)據(jù)加密,非對(duì)稱加密的加密速度慢偏友,不適合對(duì)通信數(shù)據(jù)進(jìn)行加密蔬胯,而在實(shí)際通信過程中,身份確認(rèn)完畢之后位他,通常使用對(duì)稱加密方式來加密數(shù)據(jù)氛濒。那如何協(xié)商對(duì)稱加密的秘鑰呢产场?通常有以下兩種方法。
方法1:秘鑰交換(Internet Key Exchange, IKE)算法
Diffie-Hellman算法秘鑰協(xié)商流程舞竿,假設(shè)A/B雙發(fā)進(jìn)行通信京景,
- ① A/B通信前,先生成p,g兩個(gè)大素?cái)?shù)骗奖,作為生成數(shù)
- ② A選定一個(gè)數(shù)x确徙,B選定一個(gè)數(shù)y
- ③ A/B加密結(jié)果如下:
- A加密之后傳遞給B的內(nèi)容: g^x%p --> B
- B加密之后傳遞給A的內(nèi)容: g^y%p --> A
- 注意:互聯(lián)網(wǎng)上的用戶可以看到:p,g,gx%p,gy%p
- ④ A/B獲得到數(shù)據(jù)之后解密得到相同的結(jié)果
- A: (gx%p)x=g^xy%p
- B: (gy%p)y=g^xy%p
圖解秘鑰交換
這樣A/B就協(xié)商出了一個(gè)共同的秘鑰g^xy%p,A/B雙方使用非對(duì)稱加密確認(rèn)完身份之后重归,就可以是用該秘鑰加密通信數(shù)據(jù)了米愿。
方法2:公鑰加密的方式協(xié)商秘鑰
① A隨機(jī)生成一個(gè)字符串STR作為秘鑰厦凤,A先使用自己的私鑰加密STR得到STR1鼻吮,A再使用B的公鑰加密得到STR2,A將STR2發(fā)送給B较鼓;
② B接收到STR2椎木,先使用B的公鑰私鑰解密,再使用A的公鑰解密博烂,最后得到秘鑰STR香椎;
這樣A、B就完成了秘鑰的協(xié)商禽篱,協(xié)商的秘鑰為隨機(jī)字符串STR。
常用的非對(duì)稱加密算法
- RSA:由 RSA公司發(fā)明躺率,是一個(gè)支持變長(zhǎng)密鑰的公共密鑰算法玛界,需要加密的文件塊的長(zhǎng)度也是可變的;既可以實(shí)現(xiàn)加密慎框,又可以實(shí)現(xiàn)簽名
- DSA(Digital Signature Algorithm):數(shù)字簽名算法,是一種標(biāo)準(zhǔn)的 DSS(數(shù)字簽名標(biāo)準(zhǔn))后添;
- ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼笨枯;
ECC和RAS對(duì)比遇西。ECC和RSA相比,在許多方面都有對(duì)絕對(duì)的優(yōu)勢(shì)粱檀,主要體現(xiàn)在以下方面:
① 抗攻擊性強(qiáng)硫嘶,相同的密鑰長(zhǎng)度,其抗攻擊性要強(qiáng)很多倍沦疾。
② 計(jì)算量小称近,處理速度快。ECC總的速度比RSA哮塞、DSA要快得多。
③ 存儲(chǔ)空間占用小,ECC的密鑰尺寸和系統(tǒng)參數(shù)與RSA忆畅、DSA相比要小得多衡未,意味著它所占的存貯空間要小得多家凯。這對(duì)于加密算法在IC卡上的應(yīng)用具有特別重要的意義。
④ 帶寬要求低绊诲,當(dāng)對(duì)長(zhǎng)消息進(jìn)行加解密時(shí)送粱,三類密碼系統(tǒng)有相同的帶寬要求,但應(yīng)用于短消息時(shí)ECC帶寬要求卻低得多掂之。帶寬要求低使ECC在無線網(wǎng)絡(luò)領(lǐng)域具有廣泛的應(yīng)用前景抗俄。
Public Key Infrastructure (PKI)
總結(jié)
加密方法通常需要具備機(jī)密性、完整性和身份確認(rèn)的功能世舰。對(duì)稱加密可以保證機(jī)密性且加密速度快动雹,但是不能進(jìn)行身份確認(rèn);非對(duì)稱加密因其加密速度慢跟压,一般不會(huì)用做加密胰蝠,而是用作為身份驗(yàn)證。通常震蒋,非對(duì)稱加密和對(duì)稱加密茸塞、散列函數(shù)、秘鑰交換等結(jié)合使用喷好,共同完成整個(gè)網(wǎng)絡(luò)加密的過程翔横,如:TLS/SSL。