蕪湖做的好的招聘網(wǎng)站百度seo在哪里
目錄:
目錄:
一、什么是單項(xiàng)散列函數(shù)?
1.1 如何驗(yàn)證文件是否被修改過
?1.2 單項(xiàng)散列函數(shù):
二、單向hash抗碰撞
????????2.1 弱抗碰撞(Weak Collision Resistance)
????????2.2 強(qiáng)抗碰撞(Strong Collision Resistance)
????????2.3 安全性問題
????????2.4 當(dāng)前推薦使用的哈希函數(shù)
三、單向hash應(yīng)用場景
3.1? 文件完整性(檢查下載的軟件是否被篡改):
3.2 口令加密:
3.3?消息認(rèn)證(確保消息未被篡改):
3.4 偽隨機(jī)數(shù)生成器(PRNG):
3.5?數(shù)字簽名和非對稱加密:
3.6?比特幣的工作量證明(Proof of Work, PoW):
?四、常用hash算法
4.1 MD5:
4.2 SHA1:
4.3 SHA2:
4.4 SHA-256:
4.5 SHA3:
一、什么是單項(xiàng)散列函數(shù)?
1.1 如何驗(yàn)證文件是否被修改過
當(dāng)文件首次創(chuàng)建或被認(rèn)為是處于可信狀態(tài)時(shí),這個(gè)已存儲(chǔ)的文件在傳輸文件過程中由于安全性原因可能會(huì)中途被攻擊者篡改信息,當(dāng)我們拿到文件后如何知道信息是否被篡改保證信息的安全性呢?
這里我們首先將已存儲(chǔ)的文件先做一個(gè)已存儲(chǔ)文件副本,當(dāng)我們已存儲(chǔ)文件傳輸?shù)轿覀冞@里時(shí),我們想要知道信息是否完整,我們可以通過與之前的已存儲(chǔ)文件副本進(jìn)行比對,校驗(yàn)確認(rèn)完整性。
已存儲(chǔ)文件在形成已存儲(chǔ)文件副本和傳輸文件時(shí),我們可以認(rèn)為這個(gè)過程的安全性都是相同的,都是有可能篡改的,而且在形成與校驗(yàn)過程中開銷相對來說也是比較大的。
用指紋代替文件比對,將已存儲(chǔ)文件形成一個(gè)指紋文件,指紋文件比較小,對于指紋文件的安全管理相對變得容易,而且開銷也相對文件來說會(huì)小很對。
我們可以用一臺(tái)可信服務(wù)器來放我們的安全屬性,這樣安全保存的成本更低,獲取指紋的開銷也比較小。
?
這里指紋需要滿足的特點(diǎn):計(jì)算開銷小、存儲(chǔ)空間開銷小、已存儲(chǔ)文件改變之后指紋文件跟著改變
?1.2 單項(xiàng)散列函數(shù):
根據(jù)指紋所需要滿足的特點(diǎn),解決這樣的問題,我們就用到的單項(xiàng)散列函數(shù)
單項(xiàng)散列函數(shù)也稱為哈希函數(shù),是一種從輸入數(shù)據(jù)(通常稱為“消息”)生成固定大小輸出(通常稱為“哈希值”或“哈希碼”)的算法。單向散列函數(shù)的關(guān)鍵特性之一是它們的單向性和抗碰撞性,這意味著從哈希值反推原始數(shù)據(jù)是非常困難的,并且找到兩個(gè)不同的輸入數(shù)據(jù),使其產(chǎn)生相同的哈希值也非常困難。
(1)任意長度數(shù)據(jù) => 固定長度散列:無論輸入數(shù)據(jù)的大小或長度如何,哈希函數(shù)都會(huì)輸出一個(gè)固定長度的哈希值。這使得哈希函數(shù)非常適用于處理大型數(shù)據(jù)集
(2)減少匹配開銷:通過比較兩個(gè)哈希值,而不是兩個(gè)完整的數(shù)據(jù)集,可以大大減少匹配開銷。這在比如文件完整性檢查、數(shù)據(jù)庫索引創(chuàng)建等場景中非常有用。
(3)快速計(jì)算:哈希函數(shù)通常設(shè)計(jì)得非常高效,可以快速計(jì)算出輸入數(shù)據(jù)的哈希值。
(4)快速驗(yàn)證:由于哈希值的固定大小,驗(yàn)證哈希值比驗(yàn)證原始數(shù)據(jù)更快更簡單。
(5)消息變化=>散列值變化:哈希函數(shù)的另一個(gè)關(guān)鍵特性是,即使輸入數(shù)據(jù)的微小變化也會(huì)導(dǎo)致哈希值的大幅度變化。這就意味著,如果文件或消息被修改,哈希值也會(huì)改變,從而可以通過比較哈希值來檢測修改。
(6)驗(yàn)證修改:通過對比文件或消息的原始哈希值和新的哈希值,可以驗(yàn)證它們是否被修改過。
(7)單向不可逆:從哈希值無法(或至少在計(jì)算上不可行)反推出原始輸入數(shù)據(jù),這是哈希函數(shù)的關(guān)鍵安全特性之一。
(8)抗碰撞:找到兩個(gè)不同的輸入,它們產(chǎn)生相同的哈希值是非常困難的。這稱為哈希函數(shù)的抗碰撞性。這是哈希函數(shù)在眾多用途,如密碼學(xué)、數(shù)據(jù)完整性校驗(yàn)等方面的關(guān)鍵屬性。
二、單向hash抗碰撞
2.1 弱抗碰撞(Weak Collision Resistance)
弱抗碰撞是指對于一個(gè)給定的輸入 𝑥,很難找到另一個(gè)不同的輸入 x′,使得 𝑥≠𝑥′ 且 ?(𝑥)=?(𝑥′)。換句話說,給定一個(gè)特定的哈希值,很難找到另一個(gè)不同的輸入,使得它們的哈希值相同。
2.2 強(qiáng)抗碰撞(Strong Collision Resistance)
強(qiáng)抗碰撞是指很難找到任意兩個(gè)不同的輸入 𝑥和 𝑥′,使得 𝑥≠𝑥′且 ?(𝑥)=?(𝑥′)。換句話說,找到任何兩個(gè)具有相同哈希值的不同輸入是非常困難的。
2.3 安全性問題
-
MD5:MD5是一種廣泛使用的哈希函數(shù),但由于其設(shè)計(jì)上的缺陷,已經(jīng)證明不再具有強(qiáng)抗碰撞性。這意味著可以找到兩個(gè)不同的輸入,它們具有相同的MD5哈希值。因此,MD5不再被推薦用于需要高安全性的應(yīng)用,如數(shù)字簽名。
-
SHA-1:SHA-1也是一種曾經(jīng)廣泛使用的哈希函數(shù)。然而,由于密碼學(xué)分析的進(jìn)展,SHA-1的強(qiáng)抗碰撞性也被攻破。雖然找到實(shí)際的碰撞需要大量的計(jì)算資源,但這已經(jīng)表明SHA-1不再安全。因此,SHA-1也不再被推薦用于需要高安全性的應(yīng)用。
2.4 當(dāng)前推薦使用的哈希函數(shù)
為了確保安全性,推薦使用更現(xiàn)代的哈希函數(shù),如SHA-256、SHA-3等。這些哈希函數(shù)目前被認(rèn)為是安全的,具有良好的抗碰撞性。
三、單向hash應(yīng)用場景
3.1? 文件完整性(檢查下載的軟件是否被篡改):
通過比如 MD5, SHA1 或 SHA256 等散列算法來驗(yàn)證文件的完整性。下載文件時(shí)通常會(huì)提供一個(gè)哈希值,用戶可以通過計(jì)算下載文件的哈希值并與提供的哈希值進(jìn)行比較來確保文件未被篡改。
3.2 口令加密:
口令應(yīng)通過哈希函數(shù)進(jìn)行存儲(chǔ),而非明文。為增加安全性,常與加鹽技術(shù)(salt)結(jié)合使用,這樣即使兩個(gè)相同的密碼,由于加鹽不同,其最終的哈希值也會(huì)不同。常用的哈希算法包括 bcrypt, PBKDF2 或 Argon2。
3.3?消息認(rèn)證(確保消息未被篡改):
HMAC(Hash-based Message Authentication Code)是一種基于密鑰的哈希算法,用于驗(yàn)證消息的完整性和真實(shí)性。它結(jié)合了哈希函數(shù)和一個(gè)密鑰,只有知道密鑰的人才能驗(yàn)證哈希值,從而確保消息的安全。
3.4 偽隨機(jī)數(shù)生成器(PRNG):
在密碼學(xué)中,高質(zhì)量的偽隨機(jī)數(shù)對于生成安全的密鑰和密碼非常重要。PRNG應(yīng)具備高熵(隨機(jī)性)以確保產(chǎn)生的數(shù)值不可預(yù)測。
3.5?數(shù)字簽名和非對稱加密:
通過使用非對稱加密技術(shù),可以生成數(shù)字簽名來驗(yàn)證一個(gè)消息或文件的真實(shí)性和完整性。發(fā)送者使用私鑰簽名,接收者則可以用相應(yīng)的公鑰來驗(yàn)證簽名。
3.6?比特幣的工作量證明(Proof of Work, PoW):
這是一種共識(shí)機(jī)制,用于在沒有中央權(quán)威的情況下達(dá)成網(wǎng)絡(luò)共識(shí)。它要求參與者解決一個(gè)計(jì)算密集型的問題,解決問題的過程需要大量的計(jì)算資源,這樣可以防止惡意攻擊和垃圾交易。
?四、常用hash算法
4.1 MD5:
MD5(Message-Digest Algorithm 5)已經(jīng)不再被視為安全的哈希函數(shù),因?yàn)樗?span style="color:#fe2c24;">碰撞抵抗性較弱,即存在兩個(gè)不同的輸入可能產(chǎn)生相同的輸出的情況。然而,它仍然廣泛用于非加密目的的數(shù)據(jù)完整性檢查。
4.2 SHA1:
安全哈希算法1(SHA-1)比MD5更安全,但是同樣因?yàn)?span style="color:#fe2c24;">碰撞抵抗性較弱而不再建議用于密碼學(xué)哈希。
4.3 SHA2:
SHA-2是一組哈希函數(shù),包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256等。SHA-256、SHA-384和SHA-512分別輸出256位、384位和512位長的哈希值,被廣泛應(yīng)用在安全協(xié)議和系統(tǒng)中。
4.4 SHA-256:
SHA-256是應(yīng)用最廣泛的SHA-2函數(shù),比特幣的工作量證明(PoW)就是采用的SHA-256哈希函數(shù)。
4.5 SHA3:
SHA-3(Keccak)是SHA-2的后續(xù)版本,采用全新的設(shè)計(jì)。Keccak256(256位長的SHA-3版本)用于以太坊中生成地址和交易哈希。
4.6 國密SM3:
SM3是中國國家密碼管理局推出的密碼哈希函數(shù)標(biāo)準(zhǔn),輸出256位長的哈希值,主要應(yīng)用在中國的安全系統(tǒng)和產(chǎn)品中。
盡管哈希函數(shù)的輸出看起來是隨機(jī)的,但它們都是確定性的:同一輸入總是產(chǎn)生相同的輸出。而安全的哈希函數(shù)還應(yīng)具有以下性質(zhì):碰撞抵抗(難以找到兩個(gè)不同輸入產(chǎn)生相同輸出)、預(yù)圖像抵抗(給定哈希值難以找到對應(yīng)的輸入)和次預(yù)圖像抵抗(給定輸入難以找到另一輸入產(chǎn)生相同的輸出)。