徐令予博客

考槃在澗,碩人之寬。獨寐寤言,永矢弗諼。考槃在阿,碩人之薖。獨寐寤歌,永矢弗過。考槃在陸,碩人之軸。獨寐寤宿,永矢弗告。
個人資料
正文

密鑰安全漫談:“分發”不是難堪處,“管理”方為大問題!

(2021-01-25 11:07:30) 下一個

密鑰安全漫談:“分發”不是難堪處,“管理”方為大問題!

作者:徐令予


量子通信工程中存在許多問題,例如“極低的成碼率”、“不能與互聯網兼容”、“極不安全的可信中繼站”、“缺失身份認證機製”等等技術困境,這些問題就是禿子頭上的虱子——明擺著的,它們都是由量子通信本身的物理特性和工作原理所決定的,更正確地說這些應該都是“原理性困境”。量子通信從娘胎中帶來的基因疾病,是先天不足的問題,本文將換一個視角,從密鑰安全角度來審視量子通信工程更為嚴重的後天失調問題。

密鑰是密碼係統的重要組成部分。密碼係統其實並不神秘,它與日常生活中的密碼保險箱的基本工作原理是十分相似的,密碼保險箱把信息藏匿起來不讓別人“看到”,密碼係統把信息徹底打亂不讓別人“看懂”,目的都是保障信息的私密性。

現代密碼係統使用數學方法把信息徹底打亂,這種專用的數學方法稱為“密碼算法”。密碼算法就對應於密碼保險箱,前者把信息打亂、後者把信息藏匿;密碼算法對信息加密和解密就對應於密碼保險箱的鎖門和開門;密碼算法加密、解密時使用的參數稱為“密鑰”,密鑰就對應於密碼保險箱鎖門、開門時輸入的“一串數字”。

密碼係統是由密碼算法和密鑰二大部分組成的。盡管密碼算法是密碼技術的關鍵,但是現代商用密碼產品中的密碼算法是公開的,從密碼使用的角度來看,密碼係統中最機密、最需要保護的就是密鑰。

“戰戰兢兢、如臨深淵、如履薄冰。”密鑰無時無刻不處於高危狀態,密鑰在“分發”和“存放使用”過程中麵臨著不同的安全威脅。在分發過程中,密鑰都是用“公鑰密碼”或“對稱密碼”加密後以密文形式發送的,所以盡管密鑰分發時跨越千山萬水,但是相對來說還算比較安全的。在密鑰存放使用過程中,密鑰在計算機係統中經常是以明文的方式呈現的,攻擊者利用計算機係統中的各種漏洞可以直接取得密鑰的部分甚至全部信息。所以對於密鑰安全而言,“分發”不是難堪處,“管理”方為大問題!

一)密鑰在存放使用過程中麵臨的各種攻擊和安全威脅

首先,側信道攻擊一直是密碼係統的嚴重威脅[1]。對於密鑰的不同取值,計算機在密碼算法執行過程中會產生外部狀態的細微差異(例如,功率消耗、電磁輻射、計算時間、高速緩存狀態等等),攻擊者通過觀測收集計算機外部狀態數據就可獲得密鑰的全部或者部分信息。密碼算法不論以軟件形式或者硬件形式實現,密鑰安全都會受到側信道攻擊的威脅。

其次,在計算機係統中,密鑰就是內存空間中的數據變量,所以現有計算機係統中對內存數據的所有攻擊手段也同樣會威脅到密鑰。這類型的安全威脅又可細分為如下三個方麵。

1)物理攻擊

攻擊者與計算機係統有物理接觸,然後利用物理接觸條件讀取敏感數據。最典型的物理攻擊是冷啟動攻擊和 DMA 攻擊。

冷啟動攻擊利用動態隨機訪問內存(DRAM)的剩餘特性(remanence effect),即停止供電之後存儲內容隨時間慢慢消失,整個過程持續好幾秒,如果利用製冷劑可以將時間延長到幾小時。攻擊者可以直接取出計算機係統的內存芯片,放在攻擊者控製的計算機上讀取其中的密鑰數據。

DMA 攻擊是指攻擊者插入惡意外設,發起 DMA 請求、繞過操作係統的訪問控製,直接訪問內存讀取密鑰數據。

2)軟件攻擊

攻擊者利用計算機係統的軟件漏洞非法讀取內存中的密鑰數據。例如,操作係統軟件漏洞會導致惡意進程繞過內存的隔離機製,讀取其他進程甚至內核空間中的密鑰數據。

軟件係統的一些常用工具程序也有可能導致內存數據泄露,例如 Core dump 或者Crash report 就有可能使得內存中的密鑰數據外泄。

密碼算法軟件運行中也會導致密鑰泄露。OpenSSL的心跳處理(heartbeat)程序沒有檢測請求數據包的長度是否和後續的數據塊長度相符合,攻擊者可以利用這一點,構造異常的數據包,來獲取心跳數據所在的內存區域的後續數據。這些數據中可能包含了證書私鑰、用戶名、用戶口令、用戶郵箱等敏感信息。該漏洞導致攻擊者從內存中讀取多達64KB的數據。

3)硬件攻擊

近年來有多個 CPU 硬件漏洞被披露(包括 Meltdown、Spectre、Foreshadow/L1TF 和ZombieLoad 等),這些漏洞都有可能使得攻擊者讀取到內存中包括密鑰等一些敏感數據。

 

二)保護密鑰安全的技術方案

在通用的計算機係統上執行密碼算法過程中如何保護密鑰安全,一直都是密碼學術界和IT業界關注的焦點。主要的進展有以下四個方麵。

1)Windows操作係統的 CSP (Cryptographic Service Provider) 和 CNG (Cryptographic Next Generation) 都支持在內核空間中執行密碼運算,保證密鑰數據僅出現在係統的內核內存空間。同樣,Linux 操作係統在 v2.5.45 之後,也有內核空間的密碼計算服務,稱為 Crypto API。由於密鑰數據僅出現在內核空間,攻擊者必須獲得係統權限方可讀取內核空間數據,因而密鑰安全有了保障。

2)基於寄存器(Register)的密鑰安全技術可以有效地防範冷啟動攻擊。2010年,TRESOR 利用 Intel CPU 的 AES-NI 指令,完成了隻使用寄存器實現的 AES 算法,有效抵抗冷啟動攻擊。後續研究工作將其推廣到 RSA 算法,在 Intel CPU 計算機上完成寄存器實現的 RSA 算法 ,同樣能夠抵抗冷啟動攻擊。

3)2014年,中科院 DCS 中心研究團隊第一次完成了基於 CPU 高速緩存的密碼算法軟件實現,在 Intel 的 CPU 上、利用高速緩存的工作模式配置,將 RSA 私鑰計算限定在 CPU 高速緩存內。相比基於寄存器的密碼算法軟件實現,高速緩存的存儲空間足夠大,又能夠支持更多類型的密碼算法,而且支持高級語言實現、不需要使用匯編實現。

4)使用 Intel TSX (Transactional Synchronization Extension) 硬件的事務內存特性,完成密鑰保護方案。在執行 RSA 簽名或解密時,以事務內存模式運行: 先將 RSA 私鑰的明文解密到內存中(進入 Write-Set),然後執行 RSA 私鑰計算,最後清除殘餘的敏感數據並結束事務內存任務。在 RSA 私鑰計算期間,惡意的內存信息泄露攻擊如果讀取 RSA 私鑰,就會導致事務回滾,RSA 私鑰被自動清除,攻擊者不能獲得任何信息。同時,結合了基於寄存器的AES算法實現:沒有RSA計算任務時,RSA私鑰使用AES算法加密後以密文形式存儲在內存中,而AES的密鑰隻存儲在CPU的寄存器中。

總上所述,可以得到以下兩個結論:

1)計算機執行密碼算法時,在密鑰的提取、使用和存放過程中對密鑰構成了嚴重的安全隱患。攻擊者可以利用計算軟件、硬件等各種漏洞竊取密鑰的全部或部分信息,攻擊的手段五花八門、防不勝防。密鑰的最大安全隱患不在分發而在存放使用環節。

2)在計算機中保護密鑰的要訣是:密鑰應盡量遠離計算機內存;密鑰與密碼算法進程應盡量靠近不要分離;密鑰應隨用隨生成,盡量不要積餘貯存。

通過上麵的分析討論,對密鑰安全問題就有了全麵深入了解,再回頭重新審視所謂的量子通信就不難作出更為客觀公正的判斷。

所有已建或在建的量子通信工程根本不是一種新的通信技術,在京滬量子通信幹線上想從上海送一聲’Hello’到北京都辦不到。量子通信工程根也不是保證通信安全的獨立完整的新的密碼係統,密碼係統的核心是加密算法,量子通信工程使用的都是傳統對稱密碼的加密算法。量子通信工程也與量子糾纏毫無關係,它隻是利用量子偏振態作密鑰分發的一種硬件技術,是對稱密碼係統中可有可無的一個小配角,簡稱“量子密鑰分發”技術(QKD)。

事實已經證明,“極低的成碼率”、“不能與互聯網兼容”、“極不安全的可信中繼站”和“缺失身份認證機製”是量子通信工程無法逾越的四座大山;“量子通信的無條件安全性是可以用數學證明的”、“隻有量子通信可以拯救公鑰密碼危機”是兩個毫無科學根據的神話故事。現在讓我們退一萬步,讓我們忽略QKD種種的工程困境,也不再計較它低劣的技術指標和性價比,甚至對它的嚴重安全隱患也暫時閉上一隻眼,那麽如此理想化的量子通信技術就有正麵意義了嗎?可惜答案依然是否定的。

眾所周知,密鑰分發過程中是有密碼加密保護的,如果將來的量子計算機對公鑰密碼構成威脅,那麽就用抗量子公鑰密碼(PQC),大不了使用對稱密碼就是了,哪裏有QKD的份?況且,本文的結論已經明確指出,密鑰的最大安全隱患不在分發而在存放使用環節,QKD避重就輕,使用昂貴的硬件方案在次要環節上糾纏不休純屬浪費資源。請記住奧卡姆剃刀原理,“如無必要,勿增實體。”

量子密鑰分發(QKD)是用量子物理原理以明文方式分發傳統的密鑰,而不是分發量子的密鑰。量子通信的要害是以“明文”分發“傳統”的密鑰。因此,高度敏感的密鑰從產生、通過計算機外設接口、進入內存、直至被密碼算法進程調用全是以明文形式一路裸奔的,整個過程為攻擊者提供了許許多多的機會。QKD完全違背了上述保護密鑰安全的三條原則。

在傳統密鑰分發過程中,密鑰的明文僅出現在計算機的內核空間或寄存器中,它與密碼算法進程緊密結合、須臾不離。密鑰需要分發時立即被加密,隻有加密後的密鑰才會離開安全的內核空間進入內存、外設接口、最後進入外網傳輸,不給攻擊者任何下手機會。

而且由於QKD的成碼率極低,密鑰生成速度遠遠趕不上消耗,所以常常被迫提早啟動密鑰分發過程,把生成的密鑰貯存後備用。其結果是密鑰以明文形式存在的時間大大 長,這正是攻擊者求之不得的。

QKD導致密鑰以明文形式在空間和時間兩個尺度上的曝露程度都遠遠超過了傳統密鑰分發技術,因此,從密鑰總體安全角度衡量,量子密鑰分發是遠不及傳統密鑰分發技術的。

必須強調指出,以上結論是在假設“量子密鑰分發”本身絕對安全的條件下得到的。而在現實工程環境下,量子通信分發密鑰存在嚴重的安全隱患,量子通信還麵臨四大難以克服的工程技術障礙。由此可知,量子通信QKD對於保護密鑰安全沒有任何現實意義。

 

[1]側信道攻擊(side channel attack 簡稱SCA),針對加密電子設備在運行過程中的時間消耗、功率消耗或電磁輻射之類的側信道信息泄露而對加密設備進行攻擊的方法被稱為測信道攻擊。這類新型攻擊的有效性遠高於密碼分析的數學方法,因此給密碼設備帶來了嚴重的威脅。

[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.