220 likes | 477 Views
密碼學與網路安全 第 13 章 數位簽章和認證協定. 數位簽章. 訊息認證能保護通訊的雙方防禦第三者,但卻無法防禦對方 傳訊雙方有好幾種爭議 在收發雙方無法完全信任彼此的情況下 光有認證功能還不夠 數位簽章才是解決這個問題的最佳方案 數位簽章的功能和手寫簽章很類似,必須具備以下特性: 必須能驗證簽章的所有者、日期、和時間 在簽章的同時,必須要能確認文件內容 為了避免紛爭,此簽章必須由第三者驗證 數位簽章的功能包括了認證功能. 數位簽章的必備條件. 數位簽章必須根據被簽署的訊息 數位簽章必須使用傳送者才有的資訊 才能避免偽造或否認
E N D
數位簽章 • 訊息認證能保護通訊的雙方防禦第三者,但卻無法防禦對方 • 傳訊雙方有好幾種爭議 • 在收發雙方無法完全信任彼此的情況下 • 光有認證功能還不夠 • 數位簽章才是解決這個問題的最佳方案 • 數位簽章的功能和手寫簽章很類似,必須具備以下特性: • 必須能驗證簽章的所有者、日期、和時間 • 在簽章的同時,必須要能確認文件內容 • 為了避免紛爭,此簽章必須由第三者驗證 • 數位簽章的功能包括了認證功能
數位簽章的必備條件 • 數位簽章必須根據被簽署的訊息 • 數位簽章必須使用傳送者才有的資訊 • 才能避免偽造或否認 • 數位簽章的產生方式必須簡單 • 數位簽章的辨識和驗證必須簡單 • 數位簽章應該無法以計算的方式偽造 • 不論是針對既有的簽章來偽造新訊息或由訊息來偽造簽章 • 數位簽章的副本必須實際保留在記憶體
直接式數位簽章 • 直接式數位簽章只需要傳訊雙方(傳送者、接收者)參與即可 • 假設接收者知道傳送者的公開金鑰 • 數位簽章是以傳送者的私密金鑰加密整個訊息或傳送者私密金鑰加密訊息的雜湊碼形成 • 進一步的以接收者的公開金鑰或雙方共有的金鑰加密整個訊息和數位簽章,就能提供機密性 • 在發生爭議的情況下,公正的第三者必須同時檢視訊息和簽章 • 目前所有直接式簽章的有效性是建立在傳送者私密金鑰的安全性
仲裁式數位簽章 • 仲裁者A • A會測試訊息及簽章,藉以檢查來源和內容 • 接著訊息會被附上日期並傳送給Y • 這才表示訊息已通過仲裁者的檢查 • 這類架構的仲裁者扮演了重要且關鍵的角色,而且所有的參與者都必須信任仲裁架構能正確的運作 • 可利用私密或公開金鑰演算法實作 • 仲裁者不一定看得見訊息
認證協定 • 這類協定能讓通訊雙方相互識別並交換連線金鑰 • 可以是相互或單向認證 • 具認證功能的金鑰交換有兩項考量: • 機密性:保護連線金鑰 • 時效性:防止重送攻擊 • 公開的協定經常被找出漏洞而需要修改
重送攻擊 • 重送攻擊的例子: • 單純重送 • 能被記錄的重送 • 無法偵測的重送 • 回送未修改的訊息 • 對付重送攻擊的方法: • 流水號 • 時戳 • 盤查/回應
使用對稱式加密 • 如之前所提,兩個層級的對稱式加密金鑰,能在分散式環境提供機密性的訊息交換 • 通常要利用可信任的金鑰分送中心(KDC) • 每個通訊端都有一把與KDC共用的稱為主金鑰 • 若兩端要傳訊,KDC會負責產生連線金鑰供雙方暫時使用 • 為了將連線金鑰安全分送到兩端,KDC在分送之前會先以主金鑰加密連線金鑰
Needham-Schroeder協定 • 原始的第三方金鑰分送協定 • A、B雙方由KDC協調 • 這個協定能歸納如下: 1. A->KDC: IDA|| IDB|| N1 2. KDC ->A: EKa[Ks|| IDB|| N1 || EKb[Ks||IDA] ] 3. A -> B: EKb[Ks||IDA] 4. B -> A: EKs[N2] 5. A -> B: EKs[f(N2)]
Needham-Schroeder協定 • 能讓A、B安全的分送通訊所需的新連線金鑰 • 但若雙方的舊金鑰已遭洩漏就可能遭受攻擊 • 攻擊者只要重送步驟3的訊息給B,就能冒充A而騙B使用舊的連線金鑰 • 為了克服這些缺點: • 加入時戳( Denning ) • 使用額外的隨意值(Neuman 93)
使用公開金鑰加密 • 利用公開金鑰加密來分送連線金鑰 • 這個協定假設雙方都擁有對方的公開金鑰 • 在這種情況下,中央系統被稱為認證伺服器(AS) • 因為它並不實際負責分送連線金鑰,而是提供公開金鑰的憑證 • 現有的數種協定使用時戳或隨意值
Denning的AS協定 • Denning 81提供了一個利用時戳的協定: 1. A ->AS: IDA|| IDB 2. AS -> A: EPRas[IDA||PUa||T] || EPRas[IDB||PUb||T] 3. A -> B: EPRas[IDA||PUa||T] || EPRas[IDB||PUb||T] || EPUb[EPRas[Ks||T]] • 連線金鑰是由A選取並加密,因此沒有被AS洩漏的風險 • 時戳能防止外洩金鑰的重送
單向認證 • 當傳送端和接收端並非同時通訊(例如電子郵件)就需要單向認證 • 電子郵件訊息的「信封」或檔頭必須夠清楚,SMTP或是X.400的儲存轉寄協定才能正確處理郵件 • 應該要加密電子郵件訊息,才能讓郵件處理系統不知道解密金鑰的情況下加密郵件
使用對稱式加密 • 經過若干修改的KDC方法,就很適合用在加密的電子郵件: 1. A->KDC: IDA|| IDB|| N1 2. KDC -> A: EKa[Ks|| IDB|| N1 || EKb[Ks||IDA] ] 3. A -> B: EKb[Ks||IDA] || EKs[M] • 此協定無法抵抗重送攻擊 • 雖然加入時戳能改善這些弱點,但因為電子郵件在傳送過程可能有所延遲,因此這類時戳的效用有限
使用公開金鑰加密 • 已經介紹過適用於電子郵件的公開金鑰加密方法 • 如果機密性是主要考量,以下作法或許更有效率:A->B: EPUb[Ks] || EKs[M] • 這個情況會以使用一次即丟的一次秘密金鑰來加密訊息 • 如果認證是主要考量,可以使用數位簽章:A->B: M || EPRa[H(M)] || EPRas[T||IDA||PUa] • 這個方法保證A無法否認曾經送出的訊息,但卻會製造另一種詐騙方式
數位簽章標準(DSS) • DSS是NIST聯邦資訊處理標準(FIPS PUB 186) • 首先是在1991年由NIST和NSA所發展 • 在1993年根據各方回應而發佈修訂版本 • 1996年發佈細部修改的新版本 • 2000年發佈擴充版FIP 186-2 • 最新版本包含了以RSA和橢圓曲線加密法為基礎的數位簽章演算法
數位簽章演算法(DSA) • 以512~1024位元建立320位元簽章 • 比RSA小且快速 • 只具有數位簽章架構 • 安全性與計算離散對數的困難度有關 • 是由ElGamal和Schnorr和架構所衍生
總結 • 數位簽章 • 認證協定(相互及單向) • 數位簽章演算法及標準