认证概述散列函数数字签名
文章目錄
- 1、認證概述
- 2、散列函數(shù)(Hash)
- 2.1、Hash的概念
- 2.2、Hash的特點
- 2.3、Hash的應(yīng)用
- 2.4、Hash函數(shù)需要滿足的需求
- 2.5、Hash函數(shù)的安全要求
- 3、數(shù)字簽名
- 3.1、數(shù)字簽名的概述
- 3.2、數(shù)字簽名的原理
- 3.3、數(shù)字簽名的要求及具有的性質(zhì)
- 3.4、數(shù)字簽名的主要功能
- 3.5、數(shù)字簽名的實現(xiàn)方法
1、認證概述
在進行密鑰分發(fā)的時候,如果沒有身份認證,密鑰的分發(fā)經(jīng)常是不安全的。在通信過程中不但需要認證通信伙伴的身份,還需要確保消息在傳輸?shù)倪^程中沒有被修改、插入、刪除或重放,即確認消息的完整性
認證是一種不同于保密的安全機制,也是一種安全服務(wù)
- 用來防止惡意第三方冒充通信中的一方欺騙通信伙伴
- 用來防止通信消息被偽造、被篡改
認證包含了兩部分
- 身份認證(確認消息源)
- 消息完整性認證(確認消息是源發(fā)出的消息,內(nèi)容沒有改變、消息順序沒有改變,產(chǎn)生消息的時間等所有屬性都沒有改變)
加密與認證的區(qū)別
數(shù)據(jù)保密性
使用加密的安全機制,保護數(shù)據(jù)免于非授權(quán)泄露
認證
使用一些安全機制,保證通信實體是它所聲稱的實體,保證通信內(nèi)容是發(fā)送者發(fā)出的內(nèi)容
- 對等實體認證:用于邏輯連接時連接的實體的身份提供可信性
- 數(shù)據(jù)源認證:保證收到的信息來源是聲稱的來源
2、散列函數(shù)(Hash)
2.1、Hash的概念
Hash,一般翻譯做散列、雜湊,或音譯為哈希,是把任意長度的輸入(又叫做預(yù)映射pre-image)通過散列算法變換成固定長度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來確定唯一的輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)
2.2、Hash的特點
散列函數(shù)必須具備兩個基本特征:單向性、碰撞約束
- 單向性是指其的操作方向的不可逆性,在散列函數(shù)中是指只能從輸入推導(dǎo)出輸出,而不能從輸出計算出輸入
- 碰撞約束是指不能找到一個輸入使其輸出結(jié)果等于一個已知的輸出結(jié)果 或者 不能同時找到兩個不同的輸入使其輸出結(jié)果完全一致
2.3、Hash的應(yīng)用
Hash算法在信息安全方面的應(yīng)用主要體以下的3個方面
- (1)文件校驗
我們比較熟悉的校驗算法有奇偶校驗和CRC校驗,這2種校驗并沒有抗數(shù)據(jù)篡改的能力,它們一定程度上能檢測并糾正數(shù)據(jù)傳輸中的信道誤碼,但卻不能防止對數(shù)據(jù)的惡意破壞。
MD5 Hash算法的"數(shù)字指紋"特性,使它成為應(yīng)用最廣泛的一種文件完整性校驗和(Checksum)算法,不少Unix系統(tǒng)有提供計算md5 checksum的命令。
- (2)數(shù)字簽名
Hash算法也是現(xiàn)代密碼體系中的一個重要組成部分。由于非對稱算法的運算速度較慢,所以在數(shù)字簽名協(xié)議中,單向散列函數(shù)扮演了一個重要的角色。對Hash值,又稱"數(shù)字摘要"進行數(shù)字簽名,在統(tǒng)計上可以認為與對文件本身進行數(shù)字簽名是等效的。而且這樣的協(xié)議還有其他的優(yōu)點。
- (3) 鑒權(quán)協(xié)議
如下的鑒權(quán)協(xié)議又被稱作挑戰(zhàn)—認證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。以上就是一些關(guān)于hash以及其相關(guān)的一些基本預(yù)備知識。
2.4、Hash函數(shù)需要滿足的需求
- 1)輸入可以為任意長度
- 2)輸出數(shù)據(jù)長度固定
- 3)容易計算,給定任何x,容易計算出x的Hash值H(x)s
- 4)單向函數(shù):即給出一個Hash值,很難反向計算出原始輸入
- 5)碰撞性:即難以找到兩個不同的輸入會得到相同的Hash輸出值(在計算上是不可行的)
2.5、Hash函數(shù)的安全要求
- 單向性:已知y ,找出x,使得Hash k (x)=y困難
- 弱碰撞:已知x ,找出x’≠x,使得Hash k(x’)= Hash k(x)困難
- 強碰撞:找出任意x’≠x,使得Hash k(x’)= Hash k(x)困難·困難性具有遞增關(guān)系
3、數(shù)字簽名
3.1、數(shù)字簽名的概述
數(shù)字簽名(又稱公鑰數(shù)字簽名)是只有信息的發(fā)送者才能產(chǎn)生的別人無法偽造的一段數(shù)字串
這段數(shù)字串同時也是對信息的發(fā)送者發(fā)送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領(lǐng)域的技術(shù)來實現(xiàn)的,用于鑒別數(shù)字信息的方法
一套數(shù)字簽名通常定義兩種互補的運算,一個用于簽名,另一個用于驗證。數(shù)字簽名是非對稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用
3.2、數(shù)字簽名的原理
- 所謂數(shù)字簽名就是附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對數(shù)據(jù)單元所作的密碼變換
- 這種數(shù)據(jù)或變換允許數(shù)據(jù)單元的接收者用以確認數(shù)據(jù)單元的來源和數(shù)據(jù)單元的完整性并保護數(shù)據(jù),防止被人(例如接收者)進行偽造
- 它是對電子形式的消息進行簽名的一種方法,一個簽名消息能在一個通信網(wǎng)絡(luò)中傳輸。基于公鑰密碼體制和私鑰密碼體制都可以獲得數(shù)字簽名
- 主要是基于公鑰密碼體制的數(shù)字簽名。包括普通數(shù)字簽名和特殊數(shù)字簽名
- 普通數(shù)字簽名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir數(shù)字簽名算法、Des/DSA,橢圓曲線數(shù)字簽名算法和有限自動機數(shù)字簽名算法等
- 特殊數(shù)字簽名有盲簽名、代理簽名、群簽名、不可否認簽名、公平盲簽名、門限簽名、具有消息恢復(fù)功能的簽名等
- 與具體應(yīng)用環(huán)境密切相關(guān)
3.3、數(shù)字簽名的要求及具有的性質(zhì)
對數(shù)字簽名的要求:
1、必須有認證功能
2、必須能被第三方仲裁
3、必須能被驗證
4、產(chǎn)生、識別、驗證數(shù)字簽名比較容易,保存副本可行
數(shù)字簽名應(yīng)該具有的性質(zhì)
1、簽名是對文檔的一種映射,不同的文檔內(nèi)容所得到的映射結(jié)果是不一樣的,即簽名與文檔具有――對應(yīng)關(guān)系(精確性)
2、簽名應(yīng)基于簽名者的唯一性特征(如私鑰),從而確定簽名的不可偽造性和不可否認性(唯一性)
3、簽名應(yīng)該具有時間特征,防止簽名的重復(fù)使用(時效性)
3.4、數(shù)字簽名的主要功能
網(wǎng)絡(luò)安全,主要是網(wǎng)絡(luò)信息安全,需要取相應(yīng)的安全技術(shù)措施,提供適合的安全服務(wù)
數(shù)字簽名機制作為保障網(wǎng)絡(luò)信息安全的手段之一,可以解決偽造、抵賴、冒充和篡改問題
數(shù)字簽名的目的之一就是在網(wǎng)絡(luò)環(huán)境中代替?zhèn)鹘y(tǒng)的手工簽字與印章,有著重要作用
- 防冒充(偽造)
私有密鑰只有簽名者自己知道,所以其他人不可能構(gòu)造出正確的
- 可鑒別身份
由于傳統(tǒng)的手工簽名一般是雙方直接見面的,身份自可一清二楚。在網(wǎng)絡(luò)環(huán)境中,接收方必須能夠鑒別發(fā)送方所宣稱的身份
- 防篡改(防破壞信息的完整性)
對于傳統(tǒng)的手工簽字,假如要簽署一份200頁的合同,是僅僅在合同末尾簽名呢?還是對每一頁都簽名?如果僅在合同末尾簽名,對方會不會偷換其中的幾頁? 而對于數(shù)字簽名,簽名與原有文件已經(jīng)形成了一個混合的整體數(shù)據(jù),不可能被篡改,從而保證了數(shù)據(jù)的完整性
- 防重放
如在日常生活中,A向B借了錢,同時寫了一張借條給B,當(dāng)A還錢的候,肯定要向B索回他寫的借條撕毀,不然,恐怕他會再次用借條要求A還錢。在數(shù)字簽名中,如果采用了對簽名報文添加流水號、時間戳等技術(shù),可以防止重放攻擊
- 防抵賴
如前所述,數(shù)字簽名可以鑒別身份,不可能冒充偽造,那么,只要保存好簽名的報文,就好似保存好了手工簽署的合同文本,也就是保留了證據(jù),簽名者就無法抵賴。那如果接收者確已收到對方的簽名報文,卻抵賴沒有收到呢? 要預(yù)防接收者的抵賴。在數(shù)字簽名體制中,要求接收者返回一個自己的簽名表示收到的報文,給對方或者第三方或者引入第三方機制。如此操作,雙方均不可抵賴
- 機密性(保密性)
手工簽字的文件(如同文本)是不具備保密性的,文件一旦丟失,其中的信息就極可能泄露。數(shù)字簽名可以加密要簽名消息的雜湊值,不具備對消息本身進行加密,當(dāng)然,如果簽名的報名不要求機密性,也可以不用加密
數(shù)字簽名技術(shù)是將摘要信息用發(fā)送者的私鑰加密,與原文一起傳送給接收者。接收者用自己的公鑰解密被加密的摘要信息,然后用Hash函數(shù)對收到的原文產(chǎn)生一個摘要信息,與解密的摘要信息對比。如果相同,則說明收到的信息是完整的,在傳輸過程中沒有被修改,否則說明信息被修改過,因此數(shù)字簽名能夠驗證信息的完整性
數(shù)字簽名是個加密的過程,數(shù)字簽名驗證是個解密的過程
3.5、數(shù)字簽名的實現(xiàn)方法
數(shù)字簽名算法依靠公鑰加密技術(shù)來實現(xiàn)的。在公鑰加密技術(shù)里,每一個使用者有一對密鑰:一把公鑰和一把私鑰。公鑰可以自由發(fā)布,但私鑰則秘密保存;還有一個要求就是要讓通過公鑰推算出私鑰的做法不可能實現(xiàn)
普通的數(shù)字簽名算法包括三種算法:
- 密碼生成算法
- 標記算法
- 驗證算法
數(shù)字簽名技術(shù)大多基于哈希摘要和非對稱密鑰加密體制來實現(xiàn)
如果簽名者想要對某個文件進行數(shù)字簽名,他必須首先從可信的第三方機構(gòu)(數(shù)字證書認證中心CA)取得私鑰和公鑰,這需要用到PKI技術(shù)
哈希算法的數(shù)字簽名與驗證
- 哈希函數(shù)是一種“壓縮函數(shù)”
- 利用哈希函數(shù)可以把任意長度的輸入經(jīng)由散列函數(shù)算法變換成固定長度的輸出,該輸出的哈希值就是消息摘要,也稱數(shù)字摘要
- 在正式的數(shù)字簽名中,發(fā)送方首先對發(fā)送文件采用哈希算法,得到一個固定長度的消息摘要( Message Digest)
- 再用自己的私鑰( Secret key,SK)對消息摘要進行簽名,形成發(fā)送方的數(shù)字簽名
- 數(shù)字簽名將作為隊件和原文一起發(fā)送給接收方
- 接收方首先用發(fā)送方的公鑰對數(shù)字簽名進行解密得到發(fā)送方的數(shù)字摘要
- 然后用相同的哈希函數(shù)對原文進行哈希計算,得到一個新的消息摘要
- 最后將消息摘要與收到的消息摘要做比較
具體過程如圖所示
基于非對稱密鑰加密體制的數(shù)字簽名與驗證
- 發(fā)送方首先將原文用自己的私鑰加密得到數(shù)字簽名,然后將原文和數(shù)字簽名一起發(fā)送給接收方
- 接收方用發(fā)送方的公鑰對數(shù)字簽名進行解密,最后與原文進行比較
【參考鏈接:百度百科】
總結(jié)
以上是生活随笔為你收集整理的认证概述散列函数数字签名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RSA算法详解
- 下一篇: ARP协议SMTP协议MIME