數字簽名的概念
- 數字簽名就是附加在數據單元上的一些數據,或是對數據單元所作的密碼變換。這種數據或變換允許數據單元的接收者用以確認數據單元的來源和數據單元的完整性並保護數據,防止被人(例如接收者)進行偽造。
- 消息認證碼和數字簽名的區別:
消息的(未加密的)散列,如果附加到消息本身,只能防止對消息(或散列本身)的意外更改,因為修改消息的攻擊者可以簡單地計算一個新的散列並使用它而不是原來的。所以這只會提供完整性。
如果散列通過不同的受保護通道傳輸,它還可以保護消息免受修改。這有時與非常大的文件(如 ISO 映像)的哈希一起使用,其中哈希本身通過 HTTPS 傳遞,而大文件可以通過不安全的通道傳輸。
甲消息認證碼(MAC)(有時也被稱為密鑰的散列)由誰不知道的秘密密鑰(由發送者和接收者共享)可防止消息偽造。
這意味着接收者可以偽造任何消息——因此我們擁有完整性和認證(只要接收者沒有分裂的個性),但不是不可否認性。
此外,攻擊者可以重放使用相同密鑰驗證的早期消息,因此協議應該對此采取措施(例如,通過包括消息編號或時間戳)。(另外,在雙方對話的情況下,確保雙方擁有不同的密鑰,或者通過另一種方式確保攻擊者無法將來自一方的消息發送回這一方。)
MAC 可以從未加密的散列(例如使用 HMAC 構造)創建,或直接創建為 MAC 算法。
使用私鑰創建(數字)簽名,並使用非對稱密鑰對的相應公鑰進行驗證。只有私鑰的持有者才能創建這個簽名,通常任何知道公鑰的人都可以驗證它。數字簽名不能阻止前面提到的重放攻擊。
指定驗證者簽名有一種特殊情況,只有知道另一個密鑰的人才能驗證,但這通常不是說“簽名”時的意思。
因此,這提供了所有完整性、身份驗證和不可否認性。
大多數簽名方案實際上是在散列函數的幫助下實現的。此外,它們通常比 MAC 慢,因此通常僅在還沒有共享機密或不可否認性很重要時才使用。
可以參考:HASH、MAC和數字簽名有什么不同?
數字簽名的要求
-
傳統簽名的基本特點:
① 必須能驗證簽名者、簽名時間
② 必須能夠認證被簽名的消息內容
③ 簽名能夠由第三方仲裁,以解決爭執 -
數字簽名是傳統簽名的數字化,基本要求:
① 簽名必須是與消息相關的二進制位串
② 簽名必須使用發送方特有的信息,防偽造或否認
③ 簽名的產生和識別比較容易
④ 偽造數字簽名在計算上是不可行的
⑤ 保存數字簽名的拷貝是可行的
數字簽名體制
數字簽名的分類
- 直接數字簽名:只涉及通信雙方
- 仲裁數字簽名:可信第三方介入
直接數字簽名
- 直接數字簽名方法1:用發送方的私鑰對整條消息進行簽名
- 直接數字簽名方法2:用發送方的私鑰對消息的Hash碼進行簽名
這里和消息認證碼MAC同理,先加密后簽名不如先簽名后加密的方案。
直接數字簽名的缺點:
- 依賴於發送方的保密密鑰
發送方要抵賴發送某一消息時,可能會聲稱其私有密鑰丟失或被竊,從而他人偽造了他的簽名。
通常需要采用與私有密鑰安全性相關的行政管理控制手段來制止或至少是削弱這種情況,但威脅在某種程度上依然存在。
改進的方式例如可以要求被簽名的信息包含一個時間戳(日期與時間),並要求將已暴露的密鑰報告給一個授權中心。 - X的私鑰確實在時間T被竊取,敵方可以偽造X的簽名及早於或等於時間T的時間戳。
仲裁數字簽名
- 工作原理:通常的做法是所有從發送方X到接收方Y的簽名消息首先送到仲裁者A,A將消息及其簽名進行一系列測試,以檢查其來源和內容,然后將消息加上日期並與已被仲裁者驗證通過的標識一起發給Y。
- 仲裁者在這一類簽名模式中扮演敏感和關鍵的角色。所有的參與者必須極大地相信這一仲裁機制工作正常。
- 仲裁數字簽名模式1
- 仲裁數字簽名模式2
- 仲裁數字簽名模式3
仲裁數字簽名:相對於接收方而言,簽名具有唯一性。
通俗地講,仲裁數字簽名模式2在仲裁數字簽名模式1的基礎上實現了讓仲裁者A看不到明文,但是依然無法解決合謀的問題(這是對稱密鑰帶來的問題)。於是有了仲裁數字簽名模式3,利用公鑰密碼體系,既保證了仲裁者看不到明文M,又保證了不會存在仲裁者與任意一方合謀的問題。
身份認證
對用戶身份的證實,用以識別合法或非法的用戶,組織非授權用戶訪問資源。
數字簽名和鑒別技術的一個最主要的應用領域就是身份認證。
在網絡應用環境中,網絡資源的安全性保障通常采用基於用戶身份的資源訪問控制策略。
身份認證的作用是對用戶身份進行鑒別,能夠保護網絡中的數據和服務不被未授權的用戶所訪問。
單向身份認證
收發雙方不需要同時在線聯系,例如電子郵件。
-
對稱加密方法:
-
公鑰加密方法:
雙向身份認證
最常用的協議,該協議使得通信雙方各方互相認證鑒別各自的身份,然后交換會話密鑰。
- 解決重放攻擊的方法:序列號、時間戳、挑戰/應答
- 對稱加密方法:
改進的方法:
- 公鑰加密方法
數字簽名標准DSS
DSS僅提供數字簽名的功能,不能用於加密或密鑰分配。
- RSA與DSS的比較
簽名過程
- 輸入:明文的Hash函數、為簽名而產生的隨機數k
- 控制參數:發送方的私鑰\(KR_a\)、一組公共參數\(KU_G\),稱為全局公鑰
- 輸出:包含兩部分:s和r
- DSS簽名和驗證:
DSS算法的安全性依賴於離散對數求解的困難性。DSS和DSA算法的k必須每次不同,否則可能會暴露私鑰。同時,即使對相同明文簽名,結果也不同。
其他數字簽名方式
- 群簽名:一個群體中的任意一個成員可以以匿名的方式代表整個群體對消息進行簽名。
- 限制簽名次數的簽名方案:在很多實際應用中,需要控制簽名的隨意性,可在RSA基礎上,設計控制簽名次數的方案,其缺點是要使用“可信中心”和“信用中心”
- 授權簽名或稱代理簽名:是一種特殊形式的簽名。它在現代企業活動中具有重要意義。
- 盲簽名:與其他簽名的不同處在於,簽名者並不知道(或不需要知道)所簽發消息的具體內容
※ Kerberos工作原理
- Kerberos提供了一個集中式的認證服務器結構,認證服務器的功能是實現用戶與其訪問的服務器間的相互鑒別。Kerberos建立的是一個實現身份認證的框架結構。其實現采用的是對稱密鑰加密技術,而未采用公開密鑰加密。
Kerberos的設計目標
總的來說,Kerberos協議設計目標是提供一種可信的第三方的身份認證服務。
- 安全性:能夠有效防止攻擊者假扮成另一個合法的授權用戶。
- 可靠性:分布式服務器體系結構,提供相互備份。
- 對用戶透明性
- 可伸縮:能夠支持大數量的客戶和服務器
Kerberos設計的基本思路
- 使用一個(或一組)獨立的認證服務器(AS)為網絡中的客戶提供身份認證服務
- 認證服務器(AS),用戶口令由AS保存在數據庫中
- AS與每個服務器共享一個唯一保密密鑰(已被安全分發)
Kerberos V4認證協議
- 認證過程示意圖:
Kerberos領域(realm)
- 構成:一個完整的Kerberos環境包括一個Kerberos服務器,一組工作站和一組應用服務器。
- 具有如下特征:
① Kerberos服務器數據庫中擁有所有的用戶ID和口令散列碼;所有用戶需要向Kerberos服務器注冊。
② 每個應用服務器都與Kerberos服務器共享一個密鑰
③ 所有用戶均在Kerberos服務器上注冊
④ 所有服務器均在Kerberos服務器上注冊
⑤ 領域的划分是根據網絡的管理邊界來划定的 - Kerberos領域間的互通
① 跨領域的服務訪問
② 領域間互通的前提 - 遠程服務訪問的認證過程:
Kerberos v4的缺陷
- 依賴性:加密系統對IP協議的依賴性和對時間依賴性
- 字節順序:用戶自定義
- 票據有效期:8位字段來表示,有效期最小為5分鍾,最大約為21小時
- 認證轉發能力:不允許簽發給一個用戶的鑒別證書轉發給其他工作站或其他客戶使用
- 領域間的鑒別:管理起來困難
- 加密操作缺陷:非標准形式的DES加密(傳播密碼分組鏈接PCBC)方式,易受攻擊
- 會話密鑰:存在着攻擊者重放會話報文進行攻擊的可能
- 口令攻擊:未對口令提供額外的保護,攻擊者有機會進行口令攻擊
Kerberos v5的改進
- 加密系統:支持使用任何加密技術
- 通信協議:IP協議外,還提供了對其他協議的支持
- 報文字節順序:采用抽象語法表示(ASN.1)和基本編碼規則(BER)來進行規范
- 票據的有效期:允許任意大小的有效期,有效期定義為一個開始時間和結束時間
- 提供了鑒別轉發能力
- 更有效的方法來解決領域間的認證問題
- 抗口令攻擊:提供了一種預鑒別機制,使口令攻擊更加困難,但不能完全避免口令攻擊。