加密算法應(yīng)用之密碼保護(hù)_第1頁(yè)
加密算法應(yīng)用之密碼保護(hù)_第2頁(yè)
加密算法應(yīng)用之密碼保護(hù)_第3頁(yè)
加密算法應(yīng)用之密碼保護(hù)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

加密算法應(yīng)?之密碼保護(hù)?前,各企、事業(yè)單位和國(guó)家機(jī)關(guān)紛紛建?了??的信息系統(tǒng),并且各信息系統(tǒng)的規(guī)模在不斷擴(kuò)?,地位和作?也越來(lái)越突出,安全問(wèn)題也就逐漸被?們所重視。?們關(guān)注較多的是?絡(luò)傳輸?shù)陌踩??系統(tǒng)后臺(tái)服務(wù)器存放的?戶(hù)?令的泄密也會(huì)給企業(yè)帶來(lái)不可估量的損失。因此,建??套完善的安全機(jī)制,以有效保護(hù)?戶(hù)?令同樣重要。本?以?戶(hù)登錄模塊為應(yīng)?場(chǎng)景,從、傳輸、存儲(chǔ)三??,介紹如何對(duì)?戶(hù)的密碼進(jìn)?保護(hù),才不會(huì)導(dǎo)致?戶(hù)信息泄露。涉及的知識(shí)點(diǎn):加密算法、消息摘要算法、安全隨機(jī)函數(shù)、硬件加密設(shè)備、?戶(hù)登錄最佳實(shí)踐等。數(shù)據(jù)泄露事件(數(shù)據(jù)來(lái)源于互聯(lián)?)2011年12?,國(guó)內(nèi)最?的程序員社區(qū)CSDN遭拖庫(kù),600萬(wàn)個(gè)賬戶(hù)信息泄露。2014年5?,??論壇涉及800萬(wàn)?戶(hù)信息遭泄露,信息包括?戶(hù)名、密碼、注冊(cè)IP、郵箱等。2015年10?,?易郵箱遭攻擊,近5億條?戶(hù)信息被泄露,包括?戶(hù)名、密碼、密碼保護(hù)信息、登陸IP以及?戶(hù)??等多個(gè)原始信息。2016年,UBER泄露的數(shù)據(jù)包括五千萬(wàn)名優(yōu)步客戶(hù)的姓名、電?郵件和電話號(hào)碼,?約七百萬(wàn)司機(jī)個(gè)?資料2017年6?,美國(guó)共和黨全國(guó)委員會(huì)承包商托管在AWSS3上的數(shù)據(jù)庫(kù)泄露,暴露了超過(guò)1.98億美國(guó)公民1.1TB的資料,約占投票??的61%,泄露的數(shù)據(jù)包含美國(guó)選民的個(gè)?信息。2018年8?華住5億條數(shù)據(jù)泄露,包括1.23億條官?注冊(cè)資料、1.3億條?住登記?份信息以及2.4億條詳細(xì)開(kāi)房記錄。當(dāng)天股價(jià)下跌4.36%2018年6?3?,以?列DNA測(cè)試?站Myheritage9230萬(wàn)個(gè)?戶(hù)的郵箱地址和哈希密碼泄露。并沒(méi)有發(fā)現(xiàn)這些泄露數(shù)據(jù)遭到濫?的情況,?且?客只是獲取了?戶(hù)郵箱地址。2018年6?13?凌晨,AcFun(A站)發(fā)布公告稱(chēng),A站受到?客攻擊,近千萬(wàn)條?戶(hù)數(shù)據(jù)外泄,2017年7?7?之后從未登陸過(guò)的?戶(hù)以及密碼強(qiáng)度低的?戶(hù)需要?刻更改密碼,?跟A站?戶(hù)信息中密碼保持?致的,也要?并更改。對(duì)稱(chēng)加密:采?單鑰密碼系統(tǒng)的加密?法,同?個(gè)密鑰可以同時(shí)?作信息的加密和解密,這種加密?法稱(chēng)為對(duì)稱(chēng)加密,也稱(chēng)為單密鑰加密。常?對(duì)稱(chēng)加密算法:AES、SM4、3DES、TDEA、Blowfish、RC5、IDEA、SKIPJACK、DES、XXTEA加密:Aes(“密鑰”,“要加密的值”)?對(duì)稱(chēng)加密:?對(duì)稱(chēng)加密算法需要兩個(gè)密鑰:公開(kāi)密鑰(publickey)和私有密鑰(privatekey)。公開(kāi)密鑰與私有密鑰是?對(duì),如果?公開(kāi)密鑰對(duì)數(shù)據(jù)進(jìn)?加密,只有?對(duì)應(yīng)的私有密鑰才能解密;如果?私有密鑰對(duì)數(shù)據(jù)進(jìn)?加密,那么只有?對(duì)應(yīng)的公開(kāi)密鑰才能解密。常?加密算法:ECC、RSA、Elgamal、Diffie-Hellman、DSA(數(shù)字簽名)、SM2ECC和RSA區(qū)別:數(shù)據(jù)安全,RSA的密鑰需要不斷增加,但密鑰的長(zhǎng)度導(dǎo)致其加解密的速度?為降低。1985年ECC發(fā)明,并推?迅速.ECC的優(yōu)勢(shì):抗攻擊性強(qiáng)、CPU占?少,內(nèi)容使?少,加密速度快消息摘要算法(Hash算法):Hash,?般翻譯做“散列”,也有直接?譯為“哈RSA在1976年發(fā)明,為了保障?!钡摹>褪前讶我忾L(zhǎng)度的輸?通過(guò)散列算法變換成固定長(zhǎng)度的輸出(消息摘要),該輸出就是散列值。不推薦的Hash算法:MD5、SHA-1?般Hash算法:SM3、SHA3-512、SHA3-256、SHA2-512、SHA2-256、HAVAL、RipeMD、WHIRLPOOL慢Hash:bcrypt、PBKDF2、scrypt密鑰Hash:HMAC擴(kuò)展閱讀:算?(也稱(chēng)哈希率)是計(jì)算機(jī)計(jì)算哈希函數(shù)輸出的速度。在?特幣“挖礦”中,對(duì)于數(shù)學(xué)難題的求解需要找到相應(yīng)的數(shù)學(xué)解,?對(duì)于任意?個(gè)給定范圍內(nèi)的Hash值,其求解只能通過(guò)?動(dòng)?成的隨機(jī)數(shù),因此?個(gè)挖礦機(jī)每秒能做多少次求解過(guò)程就是算?的代表,其單位為Hash/s。例如,當(dāng)達(dá)到10Th/s的哈希率時(shí),意味著它可以每秒進(jìn)?10萬(wàn)億次計(jì)算。截??2018年8?,?特幣全?算?約為45EH/s。(450億兆哈希/秒)什么是加鹽哈希假如密碼是“a123456.”,md5的結(jié)果如下:Md5(“a123456.”)=9A40BF57F7C5C6D317AC689DFD359F89簡(jiǎn)單密碼,是很容易被逆推出來(lái)的。但是假如我們往簡(jiǎn)單密碼?加點(diǎn)鹽:Md5(“a123456.”+“%&d73h*”)=42CF9F20BF02D6FFA36557BE6334469F那么散列值就會(huì)安全很多加鹽的正確?法:不要使?固定不變的salt。每個(gè)?戶(hù)的salt都需要不同。salt要保持?定的長(zhǎng)度。salt必須由服務(wù)端使?安全的隨機(jī)函數(shù)?成。防?隨機(jī)數(shù)被預(yù)測(cè)。客戶(hù)端運(yùn)算需要的salt需要從服務(wù)端動(dòng)態(tài)獲取??蛻?hù)端加鹽hash的結(jié)果并不是最終服務(wù)端存盤(pán)的結(jié)果。

密鑰哈希算法介紹只要攻擊者可以檢測(cè)對(duì)?個(gè)密碼的猜測(cè)是否正確,那么他們就可以進(jìn)?字典攻擊或暴?攻擊。通過(guò)軟件實(shí)現(xiàn)更安全的密碼,那么可以向哈希計(jì)算中增加?個(gè)密鑰,只有知道這個(gè)密鑰的?才能校驗(yàn)密碼。有了這層加固,即使數(shù)據(jù)被拖庫(kù),攻擊者也?法從hash的結(jié)果逆推回原始密碼。?如使?AES算法;將密鑰包含到哈希字符串中,或使?密鑰哈希算法HMAC。加密:Hmac(“密鑰”,“HASH值”)使?建議:1.?部分針對(duì)數(shù)據(jù)庫(kù)的?侵都是由于SQL注?攻擊,因此不要給攻擊者進(jìn)?本地?件系統(tǒng)的權(quán)限(禁?數(shù)據(jù)庫(kù)服務(wù)訪問(wèn)本地?件系統(tǒng)2.不要將密鑰硬編碼到代碼?,尤其是多套部署時(shí),應(yīng)該在安裝時(shí)隨機(jī)?成。3.使?加密協(xié)議傳輸KEY,對(duì)訪問(wèn)者進(jìn)?驗(yàn)證,只允許特定的機(jī)器有權(quán)限訪問(wèn)。4.如果攻擊者獲取了進(jìn)?系統(tǒng)的最?權(quán)限,那么?論密鑰被儲(chǔ)存在哪,他們都可以竊取到。5.?論如何,這個(gè)措施?沒(méi)有好。慢哈希介紹慢哈希(是?種密鑰擴(kuò)展技術(shù))這類(lèi)算法使??個(gè)安全因?或迭代次數(shù)作為參數(shù),這個(gè)值決定了哈希函數(shù)會(huì)有多慢。PBKDF2PBKDF2是?個(gè)?較簡(jiǎn)單的算法,它根據(jù)’iterations’參數(shù)??,執(zhí)?N次HMAC運(yùn)算。HW數(shù)據(jù)庫(kù)密碼存儲(chǔ)的最低安全要求是,1000次HMAC-SHA256計(jì)算,推薦的是1萬(wàn)次。使?GPU陣列、或FPGA來(lái)破解PBKDF2仍相對(duì)容易。注意這?說(shuō)的是相對(duì),為了?較接下來(lái)提到的另外兩種算法。BCryptBCrypt在1999年發(fā)明,基于Blowfish加密算法變形?來(lái)。bcrypt最?的好處是有?個(gè)參數(shù)(workfactor),可?于調(diào)整計(jì)算強(qiáng)度,?且workfactor是包括在輸出的摘要中的。bcrypt經(jīng)過(guò)了很多安全專(zhuān)家的仔細(xì)分析,使?在以安全著稱(chēng)的OpenBSD中,?般認(rèn)為它?PBKDF2更能承受隨著計(jì)算能?加強(qiáng)?帶來(lái)的風(fēng)險(xiǎn)。bcrypt也有?泛的函數(shù)庫(kù)?持,因此建議使?這種?式存儲(chǔ)密碼。ScryptScrypt于2009年產(chǎn)?,和上述兩種?案不同,scrypt不僅計(jì)算所需時(shí)間長(zhǎng),?且占?的內(nèi)存也多,使得并?計(jì)算多個(gè)摘要異常困難。據(jù)scrypt?站稱(chēng),“針對(duì)scrypt的硬件暴?攻擊的成本?約是類(lèi)似bcrypt攻擊的成本的4000倍”。scrypt沒(méi)有在?產(chǎn)環(huán)境中?規(guī)模應(yīng)?,并且缺乏仔細(xì)的審察和?泛的函數(shù)庫(kù)?持。但是,scrypt在算法層?只要沒(méi)有破綻,它的安全性應(yīng)該?于PBKDF2和bcrypt。springsecurity中默認(rèn)使?的BCryptPasswordEncoder慢哈希?法,每次加密的結(jié)果都不?樣。采?Blowfish+隨機(jī)鹽+密鑰對(duì)密碼進(jìn)?加密。其中:$是分割符;2a是bcrypt加密版本號(hào);14是cost的值(2的指數(shù),10是1024次),?于指定Hash的次數(shù),(范圍:4-31);?后的前22位是salt值;再然后的字符串就是密碼的密?了。使?建議:如果在?個(gè)Web程序中使?密鑰擴(kuò)展,需要額外的資源處理?量認(rèn)證請(qǐng)求,并且密鑰擴(kuò)展也使得?站更容易遭受拒絕服務(wù)攻擊(DoS)。不過(guò)把迭代次數(shù)設(shè)定得低?點(diǎn),應(yīng)該基于認(rèn)證請(qǐng)求最?峰時(shí)的剩余硬件資源來(lái)計(jì)算迭代次數(shù)。要求?戶(hù)每次登錄時(shí)輸?驗(yàn)證碼可以消除拒絕服務(wù)的威脅。另外,可以把系統(tǒng)設(shè)計(jì)為迭代次數(shù)可隨時(shí)調(diào)整的。執(zhí)??個(gè)簡(jiǎn)短的性能基準(zhǔn)測(cè)試,找到使哈希函數(shù)?約耗費(fèi)0.5秒的值。這樣,程序就可以盡可能保證安全,??不影響到?戶(hù)體驗(yàn)。本?中的代碼在?較哈希值的時(shí)候,都是經(jīng)過(guò)固定的時(shí)間才返回結(jié)果以上算法都也都運(yùn)?了“慢?較”技術(shù),?如Bcrypt.matches?法舉個(gè)例?,使?標(biāo)準(zhǔn)的?法?較“xyzabc”和“abcxyz”,由于第?個(gè)字符就不同,不需要檢查后?的內(nèi)容就可以馬上返回結(jié)果。相反,如果?較“aaaaaaaaaaB”和“aaaaaaaaaaZ”,?較算法就需要遍歷最后?位前所有的“a”,然后才能知道它們是不相同的。有?已經(jīng)實(shí)現(xiàn)了運(yùn)?計(jì)時(shí)攻擊破解密碼,因此在?較密碼時(shí)要注意什么是安全的隨機(jī)數(shù)?在安全應(yīng)?場(chǎng)景,隨機(jī)數(shù)應(yīng)該使?安全的隨機(jī)數(shù)。密碼學(xué)意義上的安全隨機(jī)數(shù),要求必須保證其不可預(yù)測(cè)性。不可預(yù)測(cè)性是指每個(gè)數(shù)都統(tǒng)計(jì)獨(dú)?于其他數(shù),因?不可預(yù)測(cè)。不能讓攻擊者從先前的隨機(jī)數(shù)推導(dǎo)出后?的隨機(jī)數(shù)。使?計(jì)算機(jī)?成隨機(jī)數(shù)的主要?法有兩種:偽隨機(jī)數(shù)?成器(PRNGs)和真隨機(jī)數(shù)?成器(TRNGs)。這兩種?法有不同的特點(diǎn),各有利弊。偽隨機(jī)數(shù):并不是你所期望的那種隨機(jī)數(shù)字,?是?種算法。它使?數(shù)學(xué)公式或簡(jiǎn)單的預(yù)計(jì)算表來(lái)?成隨機(jī)出現(xiàn)的數(shù)字序列。線性同余法是PRNG的?個(gè)很好的例?。偽隨機(jī)數(shù)特點(diǎn):?效、可預(yù)測(cè)性、有周期偽隨機(jī)數(shù)在Linux系統(tǒng)中調(diào)?:/dev/urandom真隨機(jī)數(shù):從物理現(xiàn)象中提取隨機(jī)性并將其引?計(jì)算機(jī)。?成真實(shí)隨機(jī)數(shù)的過(guò)程都涉及到識(shí)別數(shù)據(jù)中不可預(yù)測(cè)的微?變化。例如,HotBits在放射性衰變和隨機(jī)衰變之間的延遲上?乎沒(méi)有變化。ORG使?了??噪聲振幅的微?變化。真隨機(jī)數(shù)特點(diǎn):效率低、不可預(yù)測(cè)、沒(méi)有周期真隨機(jī)數(shù)在Linux系統(tǒng)中調(diào)?:/dev/random各語(yǔ)?安全的隨機(jī)函數(shù):PHPmcrypt_create_iv,openssl_random_pseudo_bytesjava.security.SecureRandomJavaDotNET(C#,VB)RubySystem.Security.Cryptography.RNGCryptoServiceProviderSecureRandomPythonos.urandomPerlMath::Random::SecureC/C++(WindowsAPI)CryptGenRandomAnylanguageonGNU/LinuxorUnixReadfrom/dev/random真隨機(jī)數(shù)JAVA實(shí)現(xiàn)例?byte[]salt=newbyte[128];SecureRandomsecureRandom=newSecureRandom();secureRandom.nextBytes(salt);不要??指定種?。如:secureRandom.setSeed(System.currentTimeMillis());應(yīng)當(dāng)使?系統(tǒng)隨機(jī)源。系統(tǒng)默認(rèn)的隨機(jī)源是什么?這取決于$JAVA_HOME/jre/lib/security/java.security配置中的securerandom.source屬性。例如jdk1.8中該配置為:securerandom.source=file:/dev/random使??參構(gòu)造函數(shù)實(shí)例化SecureRandom,在?多數(shù)系統(tǒng)中,默認(rèn)的算法是“nativePRNG”,從/dev/random獲取隨機(jī)數(shù)。硬件加密設(shè)備介紹硬件加密設(shè)備包括加密U盾、安全模塊(HSM)、加密機(jī)等通過(guò)加密算法和加密密鑰將明?轉(zhuǎn)變?yōu)槊?進(jìn)?數(shù)據(jù)保護(hù)的安全技術(shù)。硬件加密設(shè)備的核?是密碼學(xué)。加密設(shè)備?前仍是?數(shù)據(jù)時(shí)代保護(hù)信息的?種最可靠的辦法。為什么使?硬件加密設(shè)備?從技術(shù)實(shí)現(xiàn)的?式來(lái)看,?前存在兩類(lèi)加密機(jī)制:軟件加密和硬件加密。軟件加密實(shí)現(xiàn)容易,投資較?,但密鑰及算法易于外泄,安全級(jí)別較低。當(dāng)采?硬件加密時(shí),密鑰存放在加密設(shè)備中,任何?都?法獲得加密設(shè)備中的密鑰,同時(shí)?端的加密設(shè)備如加密機(jī)??的安全性也作了周全的設(shè)計(jì),使其不僅具有物理鎖防撬、打開(kāi)機(jī)蓋密鑰?動(dòng)銷(xiāo)毀的防拆設(shè)計(jì),?且在情況緊急時(shí),如斷電的情況下,也能快速地進(jìn)???毀鑰等技術(shù)?段,來(lái)有效地防?內(nèi)、外部?員的攻擊。硬件加密機(jī)如何保證安全?1.制度上,對(duì)主密鑰永遠(yuǎn)保密處理(?多分量機(jī)制)2.滲透的每個(gè)?戶(hù)的密碼(?機(jī)?密或?戶(hù)?密)3.每個(gè)機(jī)器或每戶(hù)都有相應(yīng)的主密鑰和?作

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論