一、概述
在安全領(lǐng)域疟暖,利用密鑰加密算法來對通信的過程進(jìn)行加密是一種常見的安全手段卡儒。利用該手段能夠保障數(shù)據(jù)安全通信的三個目標(biāo):
1、數(shù)據(jù)的保密性俐巴,防止用戶的數(shù)據(jù)被竊取或泄露
2骨望、保證數(shù)據(jù)的完整性,防止用戶傳輸?shù)臄?shù)據(jù)被篡改
3欣舵、通信雙方的身份確認(rèn)擎鸠,確保數(shù)據(jù)來源與合法的用戶
而常見的密鑰加密算法類型大體可以分為三類:對稱加密、非對稱加密缘圈、單向加密劣光。下面我們來了解下相關(guān)的算法原理及其常見的算法。
二糟把、對稱加密
在加密傳輸中最初是采用對稱密鑰方式绢涡,也就是加密和解密都用相同的密鑰。
對稱加密過程如下:
1.對稱加密算法采用單密鑰加密遣疯,在通信過程中雄可,數(shù)據(jù)發(fā)送方將原始數(shù)據(jù)分割成固定大小的塊,經(jīng)過密鑰和加密算法逐個加密后,發(fā)送給接收方
2.接收方收到加密后的報文后数苫,結(jié)合解密算法使用相同密鑰解密組合后得出原始數(shù)據(jù)聪舒。
圖示:
優(yōu)點(diǎn)
是效率高,算法簡單虐急,系統(tǒng)開銷小箱残,適合加密大量數(shù)據(jù)。
缺點(diǎn)
安全性差
加解密算法是公開的止吁,因此在這過程中被辑,密鑰的安全傳遞就成為了至關(guān)重要的事了。而密鑰通常來說是通過雙方協(xié)商赏殃,以物理的方式傳遞給對方敷待,或者利用第三方平臺傳遞給對方,一旦這過程出現(xiàn)了密鑰泄露仁热,不懷好意的人就能結(jié)合相應(yīng)的算法攔截解密出其加密傳輸?shù)膬?nèi)容。
擴(kuò)展性差
每對通信用戶之間都需要協(xié)商密鑰勾哩,n個用戶的團(tuán)體就需要協(xié)商n*(n-1)/2個不同的密鑰抗蠢,不便于管理;而如果都使用相同密鑰的話思劳,密鑰被泄漏的機(jī)率大大增加迅矛,加密也就失去了意義。
常見的對稱加密算法
- DES:分組式加密算法潜叛,以64位為分組對數(shù)據(jù)加密秽褒,加解密使用同一個算法。
- 3DES:三重數(shù)據(jù)加密算法威兜,對每個數(shù)據(jù)塊應(yīng)用三次DES加密算法销斟。
- AES:高級加密標(biāo)準(zhǔn)算法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)椒舵,用于替代原先的DES,目前已被廣泛應(yīng)用。
- Blowfish:Blowfish算法是一個64位分組及可變密鑰長度的對稱密鑰分組密碼算法扒吁,可用來加密64比特長度的字符串稳摄。
三、非對稱加密
非對稱加密算法采用公鑰和私鑰兩種不同的密碼來進(jìn)行加解密泼橘。公鑰和私鑰是成對存在涝动,公鑰是從私鑰中提取產(chǎn)生公開給所有人的,如果使用公鑰對數(shù)據(jù)進(jìn)行加密炬灭,那么只有對應(yīng)的私鑰(不能公開)才能解密醋粟,反之亦然。N 個用戶通信,需要2N個密鑰昔穴。
用途
非對稱密鑰加密適合對密鑰或身份信息等敏感信息加密镰官,從而在安全性上滿足用戶的需求。
非對稱加密過程
1.甲使用乙的公鑰并結(jié)合相應(yīng)的非對稱算法將明文加密后發(fā)送給乙吗货,并將密文發(fā)送給乙泳唠。
2.乙收到密文后,結(jié)合自己的私鑰和非對稱算法解密得到明文宙搬,得到最初的明文笨腥。
圖示:
優(yōu)點(diǎn)
具有比對稱密鑰加/解密方式更高的安全性,因?yàn)榧用芎徒饷苡玫氖遣煌荑€勇垛,而且無法從一個密鑰推導(dǎo)出另一個密鑰脖母,且公鑰加密的信息只能用同一方的私鑰進(jìn)行解密。
缺點(diǎn)
1.非對稱密鑰加密的缺點(diǎn)是算法非常復(fù)雜闲孤,導(dǎo)致加密大量數(shù)據(jù)所用的時間較長谆级,只適合對少量數(shù)據(jù)進(jìn)行加密。而且由于在加密過程中會添加較多附加信息讼积,使得加密后的報文比較長肥照,容易造成數(shù)據(jù)分片,不利于網(wǎng)絡(luò)傳輸勤众。
2.無法確認(rèn)公鑰的來源合法性以及數(shù)據(jù)的完整性舆绎。如何確認(rèn)我們接下來會說
常見算法包括:
- RSA:RSA算法基于一個十分簡單的數(shù)論事實(shí):將兩個大素數(shù)相乘十分容易,但那時想要對其乘積進(jìn)行因式分解卻極其困難们颜,因此可以將乘積公開作為加密密鑰吕朵,可用于加密,也能用于簽名窥突。
- DSA:數(shù)字簽名算法努溃,僅能用于簽名,不能用于加解密波岛。
- DSS:數(shù)字簽名標(biāo)準(zhǔn)茅坛,技能用于簽名,也可以用于加解密则拷。
- ELGamal:利用離散對數(shù)的原理對數(shù)據(jù)進(jìn)行加解密或數(shù)據(jù)簽名贡蓖,其速度是最慢的。
四煌茬、單向加密
單向加密算法只能用于對數(shù)據(jù)的加密斥铺,無法被解密,其特點(diǎn)為定長輸出坛善、雪崩效應(yīng)(少量消息位的變化會引起信息摘要的許多位變化)晾蜘。
用途
單向加密算法常用于提取數(shù)據(jù)指紋邻眷,驗(yàn)證數(shù)據(jù)的完整性、數(shù)字摘要剔交、數(shù)字簽名等等肆饶。
單向加密過程
1.發(fā)送者將明文通過單向加密算法加密生成定長的密文串,然后傳遞給接收方岖常。
2.接收方將用于比對驗(yàn)證的明文使用相同的單向加密算法進(jìn)行加密,得出加密后的密文串板惑。
3.將之與發(fā)送者發(fā)送過來的密文串進(jìn)行對比冯乘,若發(fā)送前和發(fā)送后的密文串相一致,則說明傳輸過程中數(shù)據(jù)沒有損壞晒夹;若不一致裆馒,說明傳輸過程中數(shù)據(jù)丟失了领追。
圖示:
常見算法
MD5、sha1舔亭、sha224等等
五钦铺、密鑰交換
密鑰交換IKE(Internet Key Exchange)通常是指雙方通過交換密鑰來實(shí)現(xiàn)數(shù)據(jù)加密和解密
常見的密鑰交換方式有下面兩種:
1矛洞、公鑰加密
將公鑰加密后通過網(wǎng)絡(luò)傳輸?shù)綄Ψ竭M(jìn)行解密沼本,這種方式缺點(diǎn)在于具有很大的可能性被攔截破解锭沟,因此不常用
2族淮、Diffie-Hellman
DH算法是一種密鑰交換算法,其既不用于加密贴妻,也不產(chǎn)生數(shù)字簽名。
DH算法通過雙方共有的參數(shù)澎胡、私有參數(shù)和算法信息來進(jìn)行加密滤馍,然后雙方將計算后的結(jié)果進(jìn)行交換巢株,交換完成后再和屬于自己私有的參數(shù)進(jìn)行特殊算法阁苞,經(jīng)過雙方計算后的結(jié)果是相同的那槽,此結(jié)果即為密鑰骚灸。
如:
A 有p和g兩個參數(shù)甚牲,A還有一個屬于自己的私有參數(shù)x丈钙;
B 有p和g兩個參數(shù)雏赦,A還有一個屬于自己的私有參數(shù)y星岗;
A和B均使用相同的加密算法計算其對應(yīng)的值:value_A=p(x%g)伍茄,value_B=p(y%g)
隨后雙方交換計算后的值敷矫,然后再分別使用自己的私有參數(shù)對去求次方,如:
A拿到value_B值后榨汤,對其求x平方得value_Bx=p(xy%g)收壕;
B拿到value_A值后蜜宪,對其求y平方得value_Ay=p(xy%g);
最終得到的結(jié)果是一致的缝呕。
安全性
在整個過程中摊聋,第三方人員只能獲取p麻裁、g兩個值悲立,AB雙方交換的是計算后的結(jié)果,因此這種方式是很安全的赫悄。
如何確認(rèn)公鑰的來源合法性?
答案:使用公鑰證書
公鑰基礎(chǔ)設(shè)施(PKI)
公鑰基礎(chǔ)設(shè)施是一個包括硬件写隶、軟件倔撞、人員、策略和規(guī)程的集合
用途
用于實(shí)現(xiàn)基于公鑰密碼機(jī)制的密鑰和證書的生成慕趴、管理痪蝇、存儲躏啰、分發(fā)和撤銷的功能
組成
簽證機(jī)構(gòu)CA趁矾、注冊機(jī)構(gòu)RA毫捣、證書吊銷列表CRL和證書存取庫CB。
公鑰證書
公鑰證書是以數(shù)字簽名的方式聲明,它將公鑰的值綁定到持有對應(yīng)私鑰的個人珊佣、設(shè)備或服務(wù)身份。公鑰證書的生成遵循X.509協(xié)議的規(guī)定,其內(nèi)容包括:證書名稱滨巴、證書版本、序列號俺叭、算法標(biāo)識恭取、頒發(fā)者、有效期熄守、有效起始日期攒发、有效終止日期、公鑰 晋南、證書簽名等等的內(nèi)容惠猿。
CA(Certifi_ca_te Authority)證書認(rèn)證的流程
1.客戶A準(zhǔn)備好要傳送的數(shù)字信息(明文)。(準(zhǔn)備明文)
2.客戶A對數(shù)字信息進(jìn)行哈希(hash)運(yùn)算负间,得到一個信息摘要偶妖。(準(zhǔn)備摘要)
3.客戶A用CA的私鑰(SK)對信息摘要進(jìn)行加密得到客戶A的數(shù)字簽名姜凄,并將其附在數(shù)字信息上。(用私鑰對數(shù)字信息進(jìn)行數(shù)字簽名)
4.客戶A隨機(jī)產(chǎn)生一個加密密鑰(DES密鑰)餐屎,并用此密鑰對要發(fā)送的信息進(jìn)行加密檀葛,形成密文。 (生成密文)
5.客戶A用雙方共有的公鑰(PK)對剛才隨機(jī)產(chǎn)生的加密密鑰進(jìn)行加密腹缩,將加密后的DES密鑰連同密文一起傳送給乙屿聋。(非對稱加密,用公鑰對DES密鑰進(jìn)行加密)
6.銀行B收到客戶A傳送過來的密文和加過密的DES密鑰藏鹊,先用自己的私鑰(SK)對加密的DES密鑰進(jìn)行解密润讥,得到DES密鑰。(用私鑰對DES密鑰解密)
7.銀行B然后用DES密鑰對收到的密文進(jìn)行解密盘寡,得到明文的數(shù)字信息楚殿,然后將DES密鑰拋棄(即DES密鑰作廢)。(解密文)
8.銀行B用雙方共有的公鑰(PK)對客戶A的數(shù)字簽名進(jìn)行解密竿痰,得到信息摘要脆粥。銀行B用相同的hash算法對收到的明文再進(jìn)行一次hash運(yùn)算,得到一個新的信息摘要影涉。(用公鑰解密數(shù)字簽名)
9.銀行B將收到的信息摘要和新產(chǎn)生的信息摘要進(jìn)行比較变隔,如果一致,說明收到的信息沒有被修改過蟹倾。(對比信息摘要和信息)
如何保證CA的公鑰沒有被篡改呢匣缘?
答案是沒法保證CA的公鑰沒有被篡改。通常操作系統(tǒng)和瀏覽器會預(yù)制一些CA證書在本地鲜棠。所以發(fā)送方應(yīng)該去那些通過認(rèn)證的CA處申請數(shù)字證書肌厨。這樣是有保障的。
但是如果系統(tǒng)中被插入了惡意的CA證書豁陆,依然可以通過假冒的數(shù)字證書發(fā)送假冒的發(fā)送方公鑰來驗(yàn)證假冒的正文信息柑爸。所以安全的前提是系統(tǒng)中不能被人插入非法的CA證書。
參考:
- http://www.reibang.com/p/ce3893a7be09
- https://www.cnblogs.com/devdeng/p/5334038.html
- https://blog.csdn.net/lycb_gz/article/details/78047417
- https://blog.csdn.net/tanyjin/article/details/61913987
- http://www.reibang.com/p/3d8de6ae87d6
END