數位簽章標準

在1980年代,由於加密技術的停滯,國家與數位隱私活動家之間存在著某種程度的和解。1982年,Ron Rivest嘗試在麻省理工學院開發一款能進行RSA加密的電路板,但該板卡過於昂貴,無法普遍使用;Rivest回憶說:“這項技術還不成熟”,當時市場需求不足以促進進一步的投資或實現規模經濟,“我們有些興趣,但散布得很分散。”在公開密鑰密碼學得以廣泛採用之前,存在三個關鍵依賴因素。第一個是可負擔的個人電腦。1984年,只有8%的美國公民擁有家用電腦,到了1989年這一比例上升至15%,1993年達到23%;而直到1997年,互聯網普及率才達到19%的家庭。第二個依賴因素是具有比1980年代可用電腦更強大計算能力的個人電腦,因為當時的電腦無法支持處理器密集型的加密運算。第三個依賴因素是一種能夠充分利用1990年代初期家用電腦仍然較為匱乏的處理能力,快速生成公開密鑰加密所需的大質數,並且執行效率不至於影響用戶體驗的加密算法。儘管加密技術已經被納入主流產品中,如Lotus 1-2-3電子表格程式和Microsoft Word 2.0,解密功能卻經常很容易獲得,這顯示出算法的弱點和實現上的不足。例如,AccessData公司以185美元的價格出售對包括Lotus和Word在內的產品的解密功能。加密技術的弱點在AccessData創始人Eric Thompson的評論中得到了體現,他表示他的解密程序運行速度非常快,以至於他編寫了延遲循環來增加客戶對解密複雜性的感知。然而,隨著新十年的到來,這十年將見證萬維網的興起,一個公開密鑰簽章和密鑰交換標準急需問世,以促進電子商務的發展。

美國國家標準與技術研究院(NIST),即國家標準局(NBS)的繼任機構,於1991年8月發布了數位簽章標準(DSS)提案。美國政府及社會的數位化和自動化提供了提高效率的機會,如果能夠數位化地複製書面簽章的可信度。NIST計算機安全副主任Lynn McNulty解釋說,數位簽章:

將是重塑我們在政府和社會其他領域中多年間使用的商業實踐的重要部分……在某些領域,簽章將是絕對關鍵的,因為根據法規或慣例,我們目前仍然要求使用書面簽章。

簽章對於技術活動也至關重要,例如軟體更新——如果用戶無法驗證更新來自正確的來源,他們可能會被欺騙安裝惡意軟體。NIST最早於1982年呼籲公開密鑰簽章和密鑰交換標準的提案。公開密鑰數位簽章將提供作者身份的真實性,而公開密鑰交換則允許兩個從未見過面的當事人之間的保密性(加密)。為了向前推進,1982年NIST需要NSA同意或開發任何提議的解決方案。1993年政府的總會計辦公室報告發現,NIST 1982年提案的失敗是“由於NSA和FBI的擔憂”。報告指出,雖然NSA和NIST進行了多次會議“討論NSA的擔憂”,但這些會議的結果是,NIST終止了該項目“因為NSA的要求”。

NIST在1989年重新將公開密鑰密碼學提上議程。NIST和NSA之間的關係依然複雜。雙方的權力動態,以及NSA對非機密信息系統的影響,使得1980年代中期國會對此產生了關切,結果於1987年通過了計算機安全法(CSA),將NIST置於負責制定非機密系統標準的角色,而NSA則被降格為支持性角色。然而,1989年NSA和NIST之間的諒解備忘錄(MOU)似乎削弱了CSA。該備忘錄可以解讀為將NSA和NIST置於平等地位;而不是前者屈從於後者,一些人甚至認為該文件使NSA成為主導方。該備忘錄建立了由NSA和NIST共同組成的技術工作小組,該小組將“審查和分析有關保護處理敏感或其他非機密信息系統的問題”。該工作小組將審查:

在公開披露之前,所有關於技術系統安全技術的事項,這些技術將用於保護聯邦計算機系統中的敏感信息,以確保它們與美國的國家安全保持一致。如果NIST和NSA無法在60天內解決此問題,任何一方可以選擇將此問題提交給國防部長和商務部長。這樣的問題也可能通過國家安全委員會(NSC)轉交總統解決。

該備忘錄還指出,NIST將:

要求NSA協助所有與密碼算法和密碼技術有關的事宜,包括但不限於研究、開發評估或背書。

CPSR的華盛頓辦公室主任Marc Rotenberg向國會作證,表示該備忘錄“削弱了計算機安全法,將國會原本打算保留在商務部(NIST的母機構)的權限轉交給位於梅德堡的NSA”。另外,來自總會計辦公室(GAO)的Milton J. Scolar特別助理也支持Rotenberg的觀點,表示:

整份文件……賦予NSA這樣的特權,在我看來,這大大削弱了NIST可能採取的任何行動,而這些行動同時會遭到NSA的反對……對我而言,這份備忘錄並未完全表達出是NSA應對NIST負責的意圖。相反,它暗示著,在NIST和NSA之間若有任何分歧,最終由NSA掌控權力的杠桿。

NIST與NSA在1989年的會議中討論了公開密鑰計劃,並表示他們“更希望有一個可以同時處理數位簽章和密鑰分發的公開密鑰(非對稱)加密算法。”NIST認為,支持兩種不同的算法標準會很困難,因為其中一個標準就足夠了,而且“支持與更廣泛的用戶接受度相對立的標準會非常困難”——這背後的含義是,考慮到RSA在行業中的主導地位及其經過嚴格的密碼分析測試,公眾預期RSA會成為標準。NIST偏向於RSA。NIST的資深科學家Roy Saltman博士將RSA形容為“一個最具靈活性的公開密鑰系統”,並承認該算法是事實上的國際標準。NIST向NSA尋求幫助,對他們的候選算法進行評估,其中包括RSA。NIST的標準包括:該算法必須是公開的,能夠在軟體和硬體中實現,並且該算法應該同時支持身份認證(數位簽章)和保密性(密鑰交換)。NSA還被NIST要求提供“當現有算法無法滿足NIST要求時的新算法”。NSA承認,推出任何他們應該產出的算法是一個挑戰;他們在1989年5月的第一次NSA-NIST技術工作小組會議上表示:“任何NSA提供的公開密鑰解決方案必須能夠經受住公眾的密切審查和討論。”

儘管NSA和NIST經常會面討論潛在的公開密鑰加密標準,但NIST首次請求協助後的七個月,NSA告知NIST,RSA已被排除在候選算法之外。NSA通知NIST,他們正在開發自己的數位簽章算法,但該算法無法滿足NIST要求的密鑰交換標準。Fort Meade的算法作者,NSA員工David W. Kravitz在普林斯頓防禦分析研究所的通信研究中心休假期間編寫了這個算法。為了生成數位簽章,對用戶要創建簽章的文件進行哈希運算,生成一個稱為哈希值的字符字符串。所使用的哈希算法是政府的安全哈希算法(SHA-1),該算法將於1993年成為標準。哈希值隨後使用作者的私鑰進行加密,生成數位簽章。文件的接收者然後使用作者的公鑰來解密數位簽章,從而顯示文件的哈希值。接收者再使用哈希算法生成自己對該文件的哈希值——如果兩個哈希值匹配,則文件被認證為屬於該作者(假設密鑰擁有權是正確的)。NSA排除RSA,轉而選擇Kravitz算法(儘管該算法基於公開的El Gamal算法)的理由被歸為極為機密,且只有經過適當安全審查的NIST高級官員才能在NSA總部查看。

在1989年和1990年,NIST和NSA每週會面,但在達成同意的公開密鑰算法標準方面進展緩慢。NIST的Lynn McNulty後來回顧說:

“我們和NSA的對口人開了很多會,也寫了很多備忘錄,但我們NIST的技術部門感覺自己被拖慢了進度……事後看來,顯然NSA真正的計劃是……密鑰託管。”

密鑰託管是一種系統,其中加密密鑰由政府存儲,這樣在擁有授權令的情況下,政府就能訪問通信內容。政府的密鑰託管計劃於1993年公布,並被稱為Clipper晶片。

1990年1月的NIST報告指出:“越來越明顯的是,通過這種方法,將NSA、NIST和公眾的關切和需求調和在一起變得越來越困難,甚至是不可能的。”FBI也擔心公開密鑰加密技術及其對監聽活動的影響。FBI局長William Sessions向CIA和NSA的局長、司法部長以及國防和商務部長寫信,請求開會協商公開密鑰政策,並“最終提交給國家安全委員會”;隨後,FBI加入了制定DSS的工作小組。NIST對該計劃的控制逐漸減弱。NIST的一份備忘錄表達了他們的沮喪,指出DSS的專利問題需要解決,“如果我們的NSA問題能解決的話。”

為了克服NIST對於無法同時提供簽章和密鑰交換的標準的阻力,NSA在1990年10月19日的一份內部備忘錄中列出了與NIST的Ray Kammer安排的會議,展示他們的“整套提案(哈希函數、數位簽章密鑰交換和數據保密性標準提案)”。備忘錄指出:“如果Kammer不接受我們的提案,我們將不得不考慮升級這個問題。”升級路徑不明確;然而,很可能是通過國防部長向總統報告。NSA局長William Studeman於1991年2月寫信給NIST局長John Lyons,施加更多壓力:

“我們的目標是發布我們選定的哈希算法和數位簽章算法的詳細描述。我們預計哈希算法不會引起問題,但我們的數位簽章提案可能會引發一些爭議……有了您的支持,我們希望能夠縮短辯論時間,並繼續進行需要進行的工作,以提供所需的保護。”

Kammer於1991年4月同意了NSA的提案,並且不久後,DSS(數位簽章標準)正式對外公布。公眾得知,DSS將提供證明某個個人/組織(密鑰持有者)創建了某個文件的身份認證,但不提供密鑰交換功能。除了替代手寫簽章外,NIST還建議數位簽章可以“作為保護政府和商業軟體免受駭客和病毒攻擊的有用工具”。NIST宣佈計劃使DSS免費提供給全球用戶——NIST認為他們的算法是可專利的,並且該算法沒有其他專利適用。

1991年9月,RSA數據安全公司(RSADSI)總裁Jim Bidzos對一個競爭對手的出現感到憤怒,這個競爭對手正試圖將其公開密鑰產品標準推向市場,這個競爭對手的標準是RSA算法。Bidzos寫信給來自北卡羅來納州的民主黨代表Tim Valentine,當時他是技術與競爭力小組委員會的主席,要求國會對DSS的起源進行調查。Bidzos爭辯道:“NIST的做法看起來像是在試圖顛覆全球行業和標準制定的重大趨勢。”他寫道,NIST並沒有“額外付出努力”與業界合作開發公開密鑰加密標準,而是“遠離業界合作,提出與NSA秘密合作制定的有缺陷的提案”。Ron Rivest,另一位如果RSA不被選為首選算法將遭受財務損失的人,也寫道:

“現在是時候停止在秘密後台的談判中設計國家加密標準了,這些標準基於隱秘的議程。NIST應該放棄目前的提案,重新開始。”

如果政府選擇使用RSA算法,政府將可免費使用,因為所有參與的學者都得到了聯邦資金支持其相關研究,但商業實體則需要向RSA支付授權費用。Bidzos爭辯道,業界已經表示願意購買RSA加密技術:“一個經過充分研究且受到高度尊重的公開密鑰系統是值得支付合理價格的。”Bidzos還表示,如果不採納事實上的RSA,已經部署了RSA的企業將“受到懲罰”,並且這樣做將“對創新技術的採用產生不良影響。”儘管Bidzos對RSA被取代的評論具有高度偏見,但他所提出的觀點並不一定完全不代表密碼學社群的聲音。最大位數為512位的DSS密鑰被認為過於脆弱;Bidzos評論道:“任何包含不必要限制密鑰大小的提案……本身就包含了導致其最終失敗的原因。”他寫道,他“深感擔憂,因為NIST和NSA很可能會限制DSS的使用條件,以促使它們能夠‘破解這個系統’。” Bidzos還指出:

“一個‘可破解’的系統是通過強迫使用一個單一的數字或小範圍的數字來實現的,政府可以‘破解’這些數字,但他們相信其他人無法破解。NIST提案的數字大小似乎剛好適合這種情況。”

Bidzos認為這樣的能力將賦予政府“不當、不必要且不受歡迎的權力,來侵犯個人隱私”。他還表示,這樣做也可能帶來“數位珍珠港”事件,其中外國政府也能破解數位簽章標準,從而“造成整個國家金融和商業交易系統安全的災難性損失。” Rivest質疑設定固定密鑰大小的理由:

“基於固定的512位密鑰大小的國家標準將對我們國家帶來很大的不利——這樣的提案不必要地冒著我們的金融、工業和政府信息處理系統完整性遭受災難性失敗的風險。”

Martin Hellman則認為,雖然應強制設定最小的密鑰大小來保證足夠的安全性,但對於設定上限則沒有理由——如果設定了上限,Hellman建議應將其提高到1024位。NIST回應批評,將密鑰長度增加到Hellman建議的1024位。隨著時間的推移,數位權利活動家,並且後來還包括政府官員為了爭取資金,將會不斷提起未遵循他們偏好的路徑所導致的國家危機。

Rivest還認為,NIST對DSS的專利申請帶有惡意,認為NIST的唯一動機是“通過授權要求迫使用戶使用比他們自然願意使用的更短的密鑰大小”。Rivest稱DSA的選擇過程為“有缺陷的……DSS算法由NSA創建,並由NIST作為其提案接受,並未徵詢美國業界的意見。”Rivest寫道:“NIST在開發DSS時的封閉式做法……造成了NIST和美國業界之間的對抗,而不是合作。”他還補充道,儘管在業界的批評後,公眾評論期從三個月延長至六個月,但這樣的時間仍然不足以“進行數學研究來驗證新的提案。”為了進一步加劇這一挑戰,DSS的設計標準並未公開——CPSR要求公開DSS設計標準的資訊自由請求被拒絕。Rivest認為,DSS的弱點是更大計劃的一部分,即“將弱加密技術作為國家標準安裝,而NIST這麼做是為了取悅NSA和聯邦執法機構。”他繼續表示:

“儘管DSS名義上只是簽章標準,但有幾種已知的公開密鑰加密算法可以利用分布式DSS公開密鑰。一個強簽章算法可以擴展到一個強公開密鑰加密算法;關於這一可能性的擔憂,可能是NIST選擇基於‘弱加密’的方案的主要原因。假如DSS稍後被擴展成為公開密鑰加密標準,弱加密技術將會內建於國家加密標準和國家簽章標準中。”

Bruce Schneier也表達了類似的擔憂:

“應該有一個NIST的公開密鑰加密標準。NIST對美國人民犯下了一個重大不公,未能實施公開密鑰加密標準。NIST提出一個不能用於加密的數位簽章標準,這點讓人懷疑。”

Martin Hellman指出,使用DSS作為共模系統存在脆弱性,並且缺乏足夠的警告來使用它。Hellman反思道,雖然共模系統在密鑰生成速度上有優勢,但也有其負面特點:

“使用共模就像讓所有人員在一個組織內使用10位數字組合的鎖,但前9位是所有用戶共同使用的。這樣設置組合更簡單……但也讓對手能夠將對一個鎖的攻擊成本分攤到大量的鎖上,然後輕鬆破解……需要有清楚的警告來減少安全性。”

然而,除了共模系統,DSS還有其他使用模式。Bidzos、Rivest和Hellman在DSS算法上有利益衝突。Bruce Schneier反思了這場“激烈的批評和指控”:

“這場爭論更多的是政治性而非學術性……他們[RSADSI]想要的是RSA,而不是其他算法,作為標準……RSADSI通過授權RSA算法賺取大量收入,一個免版稅的數位簽章標準將直接影響其底線。”

NIST回應批評時指出,DSS是根據既定程序開發的,遵循CSA,並借鑒了NSA的專業知識:

“在正常的標準開發過程中,NIST確定標準的需求,根據來自不同來源的意見提出技術規格,然後徵求政府和公眾對提案的評論。在評論期結束後,會對評論進行分析,作出適當的更改,並發布標準……這一公開過程正被遵循。”

NSA則通過《休斯敦紀事報》記者Joe Abernathy的採訪來回應批評,表示:

“我們可以斷言,在正確使用和實施的情況下,任何人,包括NSA,都不可能偽造DSS簽章。”

此外,NSA還表示,他們已經審查了“針對DSS的不安全性論證,並對其有效性持懷疑態度。”NSA指出,DSS已經經過了“強烈的評估”,並獲得批准用於“某些情報系統中簽署未分類數據處理,甚至在選定系統中簽署機密數據”。NSA還表示,DSS甚至被用於“國防消息系統的試點項目,以確保關鍵指揮與控制信息的電子消息的真實性。”NSA進一步說明了其在DSS選擇中的角色:

“NIST要求NSA評估NIST提出的數位簽章標準候選算法,並在現有算法無法滿足美國政府需求時提供新算法。在為美國政府開發數位簽章的兩年過程中,NIST和NSA審查了各種已知的算法及其變體,包括RSA。”

NSA還表示,他們“在限制美國公眾使用加密方案的能力上沒有角色”並且關於加密技術出口問題,NSA指出:

“分析顯示,美國在信息安全技術的製造和出口方面領先全球。在國務院要求出口許可的加密產品中,我們一直批准超過90%的案件。”

CPSR對DSS開發文件的資訊自由請求最終於1993年獲得批准。這些文件揭示了NSA在過程中的主導作用。CPSR的律師David Sobel表示:“這些超級秘密的NSA主導了建立民用計算機系統安全標準的過程,這違反了國會於1987年頒布的法案的意圖。”Sobel補充說:

“DSS是CSA分工的第一次考驗……新釋放的文件顯示,NSA繼續主導政府的計算機安全工作,並將過程保持在秘密中,這與國會的明確意圖相違背。”

Brook的總會計辦公室報告還發現,DSS開發過程中,NIST與NSA的實際操作與其法定職責之間存在不一致:“儘管1987年的CSA重申了NIST負責為敏感非機密信息的安全制定聯邦信息處理標準,但NIST在開發某些加密標準時仍然跟隨NSA的領導。”

計算機系統安全與隱私諮詢委員會(CSSPAB)向NIST寫信,表達了對DSS草案的“嚴重關切”。這個由政府和業界組成的13人委員會是根據CSA設立的,旨在“識別與計算機系統和隱私相關的管理、技術、行政和物理保護問題”。在1992年3月,RAND公司(非營利性智庫)的人物Willis Ware擔任CSSPAB的主席;政府席位由來自NASA、NSA以及財政部和交通部的代表擔任。由於公眾評論大多是負面的,CSSPAB派Ware去向NIST主席John Lyons表達他們的關切。Lyons告訴Ware,公眾必須明確說明DSS的負面影響,才能要求改變。由於NIST對CSSPAB的關切無動於衷,1992年3月,CSSPAB決定呼籲對密碼學政策進行全國性的公開審查,因為“選擇這個[數位簽章]算法的因素顯示出更大範圍的問題,並加劇了進行全國審查的需求。”CSSPAB發布了一系列決議,表示在審查完成之前不會支持DSS,商務部長也不應該支持它。這一呼籲得到了政府各部門的廣泛支持,但NSA局長Vice Admiral John M. McConnell對於進行公開辯論表示“嚴重保留”。McConnell寫信表示:

“然而,我們支持確保政府決策者了解各方利益相關者在加密政策上尋求影響時的衝突……只要能夠確保國家安全不會受到公開辯論的危害,我們願意與NIST合作,採取措施解決董事會提出的問題。”

CSSPAB還向即將卸任的布希政府和即將上任的克林頓政府寫信,提醒他們國家密碼學的重要性,並敦促他們支持這一審查。1993年初,加上密鑰託管問題的爭議,克林頓總統指示他的政府進行所需的全國加密政策審查——國家安全委員會將主持這一審查。

DSS還面臨重大專利問題。擁有Diffie-Hellman和RSA專利的Public Key Partners(PKP)聲稱,DSS侵犯了他們的知識產權。為了消除專利障礙,NIST於1993年6月宣布打算授予PKP全球獨家許可。PKP的Robert Fougner表示:“只有那些從製造或銷售產品,或認證數位簽章中獲得商業利益的方,才需要支付使用DSA的版稅”,因此DSS將對個人、非商業用途和政府用途免費。CSSPAB向NIST提出建議,認為他們的PKP計劃“可能對國家和公眾帶來潛在的不利後果”;CSSPAB通過一項決議表示,“數位簽章標準原本應免費提供給公眾的目標已經丟失”,並且“在達成與Public Key Partners的獨家許可協議過程中,國家的經濟後果尚未得到解決。” 這一消息遭到了業界的強烈反對,並導致了1994年4月的立場反轉,當時白宮宣布:“政府已決定此類技術不應該受到私有版稅支付的限制,並將採取措施確保數位簽章的使用不需要支付版稅。”

NIST於1994年5月13日宣布DSS批准,表示它已經解決了109名個人和組織提出的問題,並且“已經處理了可能的專利侵權問題,並得出結論認為沒有有效的侵權主張。”這一消息並未受到熱烈歡迎,甚至財政部和國稅局威脅要採用RSA而不是DSS。1995年6月,許多主要技術公司,包括蘋果、微軟和網景,與RSA數據安全公司合作成立了Verisign,這家公司將成為世界上最重要的數位簽章認證機構之一,使用RSA算法與NIST的DSS競爭。到1997年,DSS的進展緩慢;Bruce Schneier和David Banisar回顧道:“到目前為止,DSS的實現非常有限。”

政府對DSS的處理顯示出它在應對公眾情緒方面的無能,而克林頓政府也在密碼戰爭中開啟了另一場戰線,這場戰線在許多方面將界定這場衝突:密鑰託管。