密钥安全漫谈:“分发”不是难堪处,“管理”方为大问题!


量子通信工程中存在许多问题,例如“极低的成码率”、“不能与互联网兼容”、“极不安全的可信中继站”、“缺失身份认证机制”等等技术困境,这些问题就是秃子头上的虱子——明摆着的,它们都是由量子通信本身的物理特性和工作原理所决定的,更正确地说这些应该都是“原理性困境”。量子通信从娘胎中带来的基因疾病,是先天不足的问题,本文将换一个视角,从密钥安全角度来审视量子通信工程更为严重的后天失调问题。

密钥是密码系统的重要组成部分。密码系统其实并不神秘,它与日常生活中的密码保险箱的基本工作原理是十分相似的,密码保险箱把信息藏匿起来不让别人“看到”,密码系统把信息彻底打乱不让别人“看懂”,目的都是保障信息的私密性。

现代密码系统使用数学方法把信息彻底打乱,这种专用的数学方法称为“密码算法”。密码算法就对应于密码保险箱,前者把信息打乱、后者把信息藏匿;密码算法对信息加密和解密就对应于密码保险箱的锁门和开门;密码算法加密、解密时使用的参数称为“密钥”,密钥就对应于密码保险箱锁门、开门时输入的“一串数字”。

密码系统是由密码算法和密钥二大部分组成的。尽管密码算法是密码技术的关键,但是现代商用密码产品中的密码算法是公开的,从密码使用的角度来看,密码系统中最机密、最需要保护的就是密钥。

“战战兢兢、如临深渊、如履薄冰。”密钥无时无刻不处于高危状态,密钥在“分发”和“存放使用”过程中面临着不同的安全威胁。在分发过程中,密钥都是用“公钥密码”或“对称密码”加密后以密文形式发送的,所以尽管密钥分发时跨越千山万水,但是相对来说还算比较安全的。在密钥存放使用过程中,密钥在计算机系统中经常是以明文的方式呈现的,攻击者利用计算机系统中的各种漏洞可以直接取得密钥的部分甚至全部信息。所以对于密钥安全而言,“分发”不是难堪处,“管理”方为大问题!

一)密钥在存放使用过程中面临的各种攻击和安全威胁

首先,侧信道攻击一直是密码系统的严重威胁[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),针对加密电子设备在运行过程中的时间消耗、功率消耗或电磁辐射之类的侧信道信息泄露而对加密设备进行攻击的方法被称为测信道攻击。这类新型攻击的有效性远高于密码分析的数学方法,因此给密码设备带来了严重的威胁。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s