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