Transcript 仲裁式數位簽章
密碼學與網路安全
第13章 數位簽章和認證
協定
數位簽章
訊息認證能保護通訊的雙方防禦第三者,但卻無法防禦對
方
在收發雙方無法完全信任彼此的情況下
光有認證功能還不夠
數位簽章才是解決這個問題的最佳方案
數位簽章的功能和手寫簽章很類似,必須具備以下特性:
傳訊雙方有好幾種爭議
必須能驗證簽章的所有者、日期、和時間
在簽章的同時,必須要能確認文件內容
為了避免紛爭,此簽章必須由第三者驗證
數位簽章的功能包括了認證功能
數位簽章的必備條件
數位簽章必須根據被簽署的訊息
數位簽章必須使用傳送者才有的資訊
才能避免偽造或否認
數位簽章的產生方式必須簡單
數位簽章的辨識和驗證必須簡單
數位簽章應該無法以計算的方式偽造
不論是針對既有的簽章來偽造新訊息或由訊息
來偽造簽章
數位簽章的副本必須實際保留在記憶體
直接式數位簽章
直接式數位簽章只需要傳訊雙方(傳送者、接收
者)參與即可
假設接收者知道傳送者的公開金鑰
數位簽章是以傳送者的私密金鑰加密整個訊息或
傳送者私密金鑰加密訊息的雜湊碼形成
進一步的以接收者的公開金鑰或雙方共有的金鑰
加密整個訊息和數位簽章,就能提供機密性
在發生爭議的情況下,公正的第三者必須同時檢
視訊息和簽章
目前所有直接式簽章的有效性是建立在傳送者私
密金鑰的安全性
仲裁式數位簽章
仲裁者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和架構所衍生
數位簽章演算法(DSA)
產生DSA金鑰
建立DSA簽署
DSA驗證
總結
數位簽章
認證協定(相互及單向)
數位簽章演算法及標準