一下是我整理的數(shù)據(jù)加密的一些基礎(chǔ)知識(shí),囊括數(shù)據(jù)加密的所有種類概括以及大部分常用數(shù)據(jù)加密的介紹;
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供龍文網(wǎng)站建設(shè)、龍文做網(wǎng)站、龍文網(wǎng)站設(shè)計(jì)、龍文網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、龍文企業(yè)網(wǎng)站模板建站服務(wù),10年龍文做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
前提:
加密技術(shù)是電子商務(wù)采取的主要安全保密措施,是最常用的安全保密手段,利用技術(shù)手段把重要的數(shù)據(jù)變?yōu)閬y碼(加密)傳送,到達(dá)目的地后再用相同或不同的手段還原(解密)。加密技術(shù)的應(yīng)用是多方面的,但最為廣泛的還是在電子商務(wù)和×××上的應(yīng)用,深受廣大用戶的喜愛(ài)。
分類:
一、按照加密時(shí)對(duì)明文的處理方式,密碼算法可分為序列密碼和分組密碼算法.
1、序列密碼算法是對(duì)明文消息按字符逐位進(jìn)行處理,它利用少量的密鑰通過(guò)某種復(fù)雜的運(yùn)算產(chǎn)生大量的偽隨機(jī)位流,用于對(duì)明文位流的加密;密鑰在每次使用之前必須更換,一般存儲(chǔ)在密碼設(shè)備內(nèi)部或是從外部輸入密碼設(shè)備的;它的優(yōu)點(diǎn)在于運(yùn)算速度快,適合干線信息加密:其缺點(diǎn)是密鑰變換過(guò)于頻繁,密鑰分配較難,密鑰同步問(wèn)題嚴(yán)重。
2、分組密碼算法是把密文分成等長(zhǎng)的組分別加密,由于它適應(yīng)了網(wǎng)絡(luò)數(shù)據(jù)成塊處理的需要以及易于解決密碼同步問(wèn)題,成為了商用密碼的主流。
二、按照加解密時(shí)密鑰是否相同來(lái)分類,可以將加密算法分為對(duì)稱密碼算法(或稱單鑰制密碼算法)和公鑰制密碼算法Hash算法.
1、對(duì)稱算法在日稱密碼算法中,收信方和發(fā)信方使用相同的密鑰(簡(jiǎn)稱密鑰).即加密密鑰和解密密鑰是相同或等價(jià)的.比較著名的對(duì)稱密碼算法是美國(guó)的DES及其各種變形,比如DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6、AESTriple、FEAL-N、LOKI-91、Skipjack等。對(duì)稱密碼的缺點(diǎn)是密鑰分配問(wèn)題嚴(yán)重,因?yàn)樗枰粋€(gè)單獨(dú)的安全信道,對(duì)N個(gè)用戶相互通信而言,需要N(N-1)/2組密鑰。
AES
隨著對(duì)稱密碼的發(fā)展,DES數(shù)據(jù)加密標(biāo)準(zhǔn)算法由于密鑰長(zhǎng)度較小(56位),已經(jīng)不適應(yīng)當(dāng)今分布式開(kāi)放網(wǎng)絡(luò)對(duì)數(shù)據(jù)加密安全性的要求,因此1997年NIST公開(kāi)征集新的數(shù)據(jù)加密標(biāo)準(zhǔn),即AES[1]。經(jīng)過(guò)三輪的篩選,比利時(shí)Joan Daeman和VincetRijmen提交的Rijndael算法被提議為AES的最終算法。此算法將成為美國(guó)新的數(shù)據(jù)加密標(biāo)準(zhǔn)而被廣泛應(yīng)用在各個(gè)領(lǐng)域中。盡管人們對(duì)AES還有不同的看法,但總體來(lái)說(shuō),AES作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn)匯聚了強(qiáng)安全性、高性能、高效率、易用和靈活等優(yōu)點(diǎn)。
BLOWFISH
BlowFish算法用來(lái)加密64Bit長(zhǎng)度的字符串。
BlowFish算法使用兩個(gè)“盒”——ungigned long pbox[18]和unsigned long sbox[4,256]。
BlowFish算法中,有一個(gè)核心加密函數(shù):BF_En(后文詳細(xì)介紹)。該函數(shù)輸入64位信息,運(yùn)算后, 以64位密文的形式輸出。 用BlowFish算法加密信
息,需要兩個(gè)過(guò)程: 1.密鑰預(yù)處理 2.信息加密
DES
數(shù)據(jù)加密算法(Data Encryption Algorithm,DEA)是一種對(duì)稱加密算法,很可能是使用最廣泛的密鑰系統(tǒng),特別是在保護(hù)金融數(shù)據(jù)的安全中,最初
開(kāi)發(fā)的DEA是嵌入硬件中的。通常,自動(dòng)取款機(jī)(Automated Teller Machine,ATM)都使用DEA。它出自IBM的研究工作,IBM也曾對(duì)它擁有幾年的專利
權(quán),但是在1983年已到期后,處于公有范圍中,允許在特定條件下可以免除專利使用費(fèi)而使用。1977年被美國(guó)政府正式采納。
還有DES2和DES3等算法。
3DES
3DES(即Triple DES)是DES向AES過(guò)渡的加密算法,它使用3條64位的密鑰對(duì)數(shù)據(jù)進(jìn)行三次加密。是DES的一個(gè)更安全的變形。它以DES為基本模塊,通
過(guò)組合分組方法設(shè)計(jì)出分組加密算法。比起最初的DES,3DES更為安全。
RC2
RC2是由著名密碼學(xué)家Ron Rivest設(shè)計(jì)的一種傳統(tǒng)對(duì)稱分組加密算法,它可作為DES算法的建議替代算法。它的輸入和輸出都是64比特。密鑰的長(zhǎng)度是
從8字節(jié)到128字節(jié)可變,但目前的實(shí)現(xiàn)是8字節(jié)(1998年)。
RC4
RC4加密算法是大名鼎鼎的RSA三人組中的頭號(hào)人物Ron Rivest在1987年設(shè)計(jì)的密鑰長(zhǎng)度可變的流加密算法簇。之所以稱其為簇,是由于其核心部分的
S-box長(zhǎng)度可為任意,但一般為256字節(jié)。該算法的速度可以達(dá)到DES加密的10倍左右,且具有很高級(jí)別的非線性。RC4起初是用于保護(hù)商業(yè)機(jī)密的。但
是在1994年9月,它的算法被發(fā)布在互聯(lián)網(wǎng)上,也就不再有什么商業(yè)機(jī)密了。RC4也被叫做ARC4(Alleged RC4——所謂的RC4),因?yàn)镽SA從來(lái)就沒(méi)有
正式發(fā)布過(guò)這個(gè)算法。
RC5
RC5密碼是1994由麻薩諸塞技術(shù)研究所的RonaldL.Rivest教授發(fā)明的。它是一種非??焖偾液?jiǎn)單的算法由塊尺寸,輪數(shù),和密鑰長(zhǎng)度參數(shù)化。這些參數(shù)
能被調(diào)整以滿足不同的安全目的,性能和出口能力。合并的RSA數(shù)據(jù)安全已經(jīng)歸檔了RC5密碼的專利的申請(qǐng)和RC5,RC5-CBC,RC5-CBC-Pad,RC5-CTS并
分類了各種變更
ECDSA
橢圓曲線數(shù)字簽名算法(ECDSA)設(shè)計(jì)的數(shù)學(xué)原理是基于橢圓曲線離散對(duì)數(shù)問(wèn)題的難解性。EC點(diǎn)上離散對(duì)數(shù)的研究現(xiàn)狀表明:所使用的ECDSA密鑰至少需
要192比特,才能保證有足夠的中長(zhǎng)期安全。
SKIPJACK
Skipjack分組加密算法是由美國(guó)國(guó)家安全局(NSA)從1985年開(kāi)始設(shè)計(jì),1990年完成評(píng)估,于1993年由美國(guó)政府正式對(duì)外宣布的,是"Capstone"(美國(guó)政
府根據(jù)1987年國(guó)會(huì)通過(guò)的計(jì)算機(jī)安全法案所訂立的長(zhǎng)遠(yuǎn)計(jì)劃)中的一個(gè)項(xiàng)目(另外三個(gè)項(xiàng)目分別是數(shù)字簽名標(biāo)準(zhǔn)(DSA)、安全散列函數(shù)(SHA)及密鑰交換
方法)。Skipjack算法曾經(jīng)被列為“機(jī)密”等級(jí)。
2、在公鑰密碼中,收信方和發(fā)信方使用的密鑰互不相同,而且?guī)缀醪豢赡苡山饷苊荑€(簡(jiǎn)稱公鑰)推導(dǎo)出加密密鑰(簡(jiǎn)稱私鑰)。比較著名的公鑰密碼算法有:RSA、McEliece密碼、Diffe-Hcllman、Rabin、Ong-Fiat Shamir、零知識(shí)證明的算法、ECC、EIGamal算法等公鑰制密碼算法的優(yōu)點(diǎn)在于它密鑰分配很方便.不需要單獨(dú)的安全密鑰信道,并且N個(gè)用戶相互通信時(shí)只要N組密鑰(公鑰和私鑰),從公鑰到私鑰的過(guò)程是不可逆的。同時(shí)它還具有身份的認(rèn)證性,可滿足當(dāng)前數(shù)字簽名等認(rèn)證的需受.例如RSA DSA(數(shù)字簽名)
RSA
RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA公鑰加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美
國(guó)麻省理工學(xué)院)開(kāi)發(fā)的。RSA取名來(lái)自開(kāi)發(fā)他們?nèi)叩拿?。RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的所有密碼***,
已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。RSA算法基于一個(gè)十分簡(jiǎn)單的數(shù)論事實(shí):將兩個(gè)大素?cái)?shù)相乘十分容易,但那時(shí)想要對(duì)其乘積進(jìn)行因式分解卻極其困
難,因此可以將乘積公開(kāi)作為加密密鑰。
DSA
Digital Signature Algorithm (DSA)是Schnorr和ElGamal簽名算法的變種,被美國(guó)NIST(美國(guó)國(guó)家標(biāo)準(zhǔn)局)作為數(shù)字簽名標(biāo)準(zhǔn)(DigitalSignature
Standard)。同樣屬于公匙密碼體系,并使用Secure Hash Algorithm(SHA/SHA-1)作為中間單向計(jì)算算法。
DH
Diffie-Hellman算法(D-H算法),密鑰一致協(xié)議。是由公開(kāi)密鑰密碼體制的奠基人Diffie和Hellman所提出的一種思想。簡(jiǎn)單的說(shuō)就是允許兩名用戶在
公開(kāi)媒體上交換信息以生成"一致"的、可以共享的密鑰。換句話說(shuō),就是由甲方產(chǎn)出一對(duì)密鑰(公鑰、私鑰),乙方依照甲方公鑰產(chǎn)生乙方密鑰對(duì)
(公鑰、私鑰)。以此為基線,作為數(shù)據(jù)傳輸保密基礎(chǔ),同時(shí)雙方使用同一種對(duì)稱加密算法構(gòu)建本地密鑰(SecretKey)對(duì)數(shù)據(jù)加密。這樣,在互通了
本地密(SecretKey)算法后,甲乙雙方公開(kāi)自己的公鑰,使用對(duì)方的公鑰和剛才產(chǎn)生的私鑰加密數(shù)據(jù),同時(shí)可以使用對(duì)方的公鑰和自己的私鑰對(duì)數(shù)據(jù)
解密。不單單是甲乙雙方兩方,可以擴(kuò)展為多方共享數(shù)據(jù)通訊,這樣就完成了網(wǎng)絡(luò)交互數(shù)據(jù)的安全通訊!該算法源于中國(guó)的同余定理—中國(guó)馀數(shù)定理
ECC
2000年10月,國(guó)際密碼學(xué)界在德國(guó)ESSEN召開(kāi)了學(xué)術(shù)大會(huì)(ECC2000),在這次會(huì)議上,來(lái)自世界各國(guó)的密碼學(xué)家、數(shù)學(xué)家證明了對(duì)ECC算法的最快破解
效率是高于亞指數(shù)級(jí)的,而RSA算法的最快破解效率是亞指數(shù)級(jí)的。ECC2000的召開(kāi)進(jìn)一步從學(xué)術(shù)上奠定了ECC算法的安全性,極大的推動(dòng)了它在世界各
國(guó)的應(yīng)用。
3、HASH 算法:HASH算法是一種單向算法。通過(guò)單項(xiàng)三列函數(shù),一類特殊的加密算法,一般用來(lái)認(rèn)證,輸入變長(zhǎng)的數(shù)據(jù)可獲得定長(zhǎng)的輸出,輸入數(shù)據(jù)發(fā)生變化輸出數(shù)據(jù)立即發(fā)生變化。通過(guò)特定HASH算法可以對(duì)原始數(shù)據(jù)生成特定的HASH值數(shù)據(jù),但是反向不可逆的;例如MD5 ,主要用于密碼存儲(chǔ)。例如各大型門戶網(wǎng)站存儲(chǔ)的用戶密碼的數(shù)據(jù)形式應(yīng)該是HASH算法之后的形式。有:MD5、RSA、MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
SHA
SHA(即Secure Hash Algorlthm,安全散列算法)是一種常用的數(shù)據(jù)加密算法.它由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)局(Natlonal Instituteof Standards and
Technology)于1993年作為聯(lián)邦信息處理標(biāo)準(zhǔn)公布(即第一代SHA算法——SHA-0)。在1995年和2002年.其改進(jìn)版本SHA-1、SHA-2也分別正式公布
(SHA-1和SHA-2具有比SHA-0更高的安全性)。SHA算法與MD5算法的設(shè)計(jì)原理類似.同樣也按2blt數(shù)據(jù)塊為單位來(lái)處理輸入
SHA-1
SHA-1雜湊算法起初是針對(duì)DSA算法而設(shè)計(jì)的,其設(shè)計(jì)原理與Ron Rivest提出的MD2,MD4,尤其是MD5雜湊函數(shù)的設(shè)計(jì)原理類似。
MD2
Rivest在1989年開(kāi)發(fā)出MD2算法。在這個(gè)算法中,首先對(duì)信息進(jìn)行數(shù)據(jù)補(bǔ)位,使信息的字節(jié)長(zhǎng)度是16的倍數(shù)。然后,以一個(gè)16位的檢驗(yàn)和追加到信息
末尾。并且根據(jù)這個(gè)新產(chǎn)生的信息計(jì)算出散列值。后來(lái),Rogier和Chauvaud發(fā)現(xiàn)如果忽略了檢驗(yàn)將和MD2產(chǎn)生沖突。MD2算法加密后結(jié)果是唯一
的-----即沒(méi)有重復(fù)。
MD4
MD4是麻省理工學(xué)院教授Ronald Rivest于1990年設(shè)計(jì)的一種信息摘要算法。它是一種用來(lái)測(cè)試信息完整性的密碼散列函數(shù)的實(shí)行。其摘要長(zhǎng)度為128
位。這個(gè)算法影響了后來(lái)的算法如MD5、SHA 家族和RIPEMD等。
MD5
MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for ComputerScience和RSA Data Security Inc的
Ronald L. Rivest開(kāi)發(fā)出來(lái),經(jīng)MD2、MD3和MD4發(fā)展而來(lái)。
HAMC
HAMC是密鑰相關(guān)的哈希運(yùn)算消息認(rèn)證碼(keyed-Hash Message Authentication Code),HMAC運(yùn)算利用哈希算法,以一個(gè)密鑰和一個(gè)消息為輸入,生成
一個(gè)消息摘要作為輸出。HMAC引擎提供HMAC運(yùn)算功能,發(fā)揮兩方面的作用:
(1)驗(yàn)證TPM接受的授權(quán)數(shù)據(jù)和認(rèn)證數(shù)據(jù);
(2)確認(rèn)TPM接受到的命令請(qǐng)求是已授權(quán)的請(qǐng)求,并且,命令在傳送的過(guò)程中沒(méi)有被改動(dòng)過(guò)。
HMAC_SHA1
HMAC_SHA1(Hashed Message Authentication Code, Secure Hash Algorithm)是一種安全的基于加密hash函數(shù)和共享密鑰的消息認(rèn)證協(xié)議。它可以有
效地防止數(shù)據(jù)在傳輸過(guò)程中被截獲和篡改,維護(hù)了數(shù)據(jù)的完整性、可靠性和安全性。HMAC_SHA1消息認(rèn)證機(jī)制的成功在于一個(gè)加密的hash函數(shù)、一個(gè)加
密的隨機(jī)密鑰和一個(gè)安全的密鑰交換機(jī)制。HMAC_SHA1 其實(shí)還是一種散列算法,只不過(guò)是用密鑰來(lái)求取摘要值的散列算法。
HMAC_SHA1算法在身份驗(yàn)證和數(shù)據(jù)完整性方面可以得到很好的應(yīng)用,在目前網(wǎng)絡(luò)安全也得到較好的實(shí)現(xiàn)
三、除了以上幾類密碼外,近些年米,國(guó)內(nèi)外還在研究的多種其他新型密碼,
如量子密碼(Quantum Cryptography).熱流密碼(Heat Flow Cryptography).混沌密碼(Chaos Cryptography)和圖視密碼(Visual Cryptography)。
這些都還處于預(yù)研段,特別是其安全性和可靠性需要研究.離實(shí)用尚有距離.