量子计算机的出现可能会极大改变密码学的格局,它能够在多项式时间内解决传统计算机无法解决的复杂问题,这意味着许多现有的加密算法将不再安全。
例如,RSA、ECC等基于数学难题的公钥加密算法,在量子计算机面前可能变得不堪一击,密码学界迫切需要探索新的加密技术,以应对量子计算带来的威胁,但密码算法的更新换代并非一蹴而就。
3月5日,NIST发布白皮书
该报告深入探讨了实现加密灵活性的方法及其挑战,并确定提供操作机制的方法,以在保持互操作性的同时实现加密灵活性,并进一步讨论关键工作领域。
来源:Considerations for Achieving Crypto Agility
加密灵活性:密码算法的“结界锁”
计算能力、密码学研究和密码分析技术的进步周期性地产生了“用被认为是安全的算法替换不再为其用例提供足够安全性的算法”的需求。例如,未来加密相关量子计算机(CRQC)对公钥加密技术构成的威胁需要紧急迁移到抗量子加密技术,这样的过渡成本高昂,需要时间,会引起互操作性问题,并中断运营。
加密灵活性描述了在不中断运行的系统流的情况下为协议、应用程序、软件、硬件和基础设施替换和调整加密算法以实现弹性所需的功能。
需要适当设计的操作机制,将加密灵活性考虑因素纳入其中,以促进快速平稳地过渡到新算法,而不会引入安全漏洞或操作中断。
加密灵活性的定义和描述有很多种。例如,2016年NIST的演讲将加密灵活性描述为:
机器能够在真实的时间内并基于它们的组合安全功能来选择它们的安全算法;
能够向现有硬件或软件添加新的密码特征或算法,从而产生新的、更强的安全特征;
能够优雅地淘汰已经变得脆弱或过时的密码系统。
在所提出的定义中,加密灵活性被描述为一种与算法无关的能力,以支持系统、协议、软件和硬件中的多种加密算法。
加密灵活性有助于加密算法之间的迁移,而无需对使用这些算法的应用程序进行重大更改,必须针对每个特定的实施环境考虑加密灵活性。
密码算法在软件和硬件中实现,以便于它们在应用中的使用。例如,替换应用程序中的加密算法将需要更改应用程序编程接口(API)和软件库,还可能需要更换硬件以包含新的硬件加速器,这无疑增加了成本和管理的复杂性;
而在软件层面,应用程序与密码算法的紧密耦合使得算法的替换变得困难重重,许多应用程序将密码算法直接写入源代码,一旦要更新算法,就需要对代码进行大量修改,不仅增加开发成本,还可能引入新的安全漏洞。
在系统中,加密灵活性是采用新的加密算法并停止在应用程序中使用弱算法而不中断运行系统的能力;
在通信协议中,各方必须商定一个通用密码套件,这是一组用于密钥建立、签名、哈希函数、加密和/或数据认证的密码算法;
在协议中,加密灵活性是在引入新的加密算法和防止使用弱算法时保持互操作性的能力。
实现加密灵活性不仅是产品设计师或实施者的任务,也是从业人员、安全政策制定者和IT管理员的任务。
实践加密灵活性的组织应该能够在发现漏洞时快速关闭弱加密算法的使用,并采用新的加密算法,而无需对基础设施进行重大更改,也就免遭不必要的中断。
实现加密灵活性需要一种系统方法来提供机制,以便以无缝的方式过渡到新算法,同时保持安全性和可接受的操作。
报告调查了不同实施环境中的加密灵活性方法,并提出实现各种应用程序敏捷性需求的策略。还讨论了不同背景下的加密灵活性,强调利益相关者之间所需的协调。
该报告的目的是确定将在即将举行的研讨会上讨论的关键工作领域,以确定实现加密灵活性所需的未来工作。
密码算法演进中的挑战与实践
(一)后量子时代的“过渡沙盒”中有哪些挑战?
1977年,数据加密标准(DES)成为第一个发布的加密标准。DES算法有一个64位的块大小和一个56位的密钥,由于对DES的56位密钥的实际暴力攻击的威胁,Triple DES被引入作为一个临时解决方案。
虽然这种更强大的算法,称为高级加密标准(AES)(具有128位,192位或256位密钥的选项),在2001年被标准化,但Triple DES直到2024年才被禁止。
从Triple DES到AES的23年过渡支持存在重大的过渡挑战。
对向后兼容性的需求也可能成为过渡的障碍。
SHA-1是一种输出长度为160位的散列函数,预计将提供80位的抗冲突性和160位的前映像性。然而,在2005年,SHA-1被发现提供不到80位的抗冲突性。2006年,NIST做出回应,敦促联邦机构“在2010年底前停止依赖使用SHA-1生成的数字签名”。
这个例子表明,当一些应用程序不具有加密灵活性并且不能及时转换时,为了向后兼容性,必须允许弱算法比它应该的时间更长。
对于公钥密码算法,安全强度由参数选择决定,鉴于许多设备的使用寿命很长,从一开始就为这种过渡进行设计通常更具成本效益。
一般的过渡,尤其是过渡到后量子算法,面临许多挑战。某些算法参数集的公钥、签名和密文的大小将比以前使用的更大,而且过渡到新的算法可能会挑战通信网络的容量,并增加发送带有签名或密文的消息的时间。
这便意味着在加密过渡期间出现的许多问题导致过渡期非常长,通常比计划的要长。
(二)如何实现安全协议的加密灵活性?
许多安全协议使用加密算法来提供机密性、完整性、认证和/或不可否认性,通信对等体必须就一组通用的加密算法(称为密码套件)达成一致,以使安全协议正常工作。
安全协议的这一方面被称为密码套件协商,包括用于完整性保护、认证、密钥导出、密钥建立、加密和数字签名的算法,以提供所需的安全服务。
当安全协议可以轻松地从一个密码套件转换到另一更理想的密码套件时,就实现了加密灵活性。
每个安全协议通常指定一个强制实现算法,以确保支持基本的互操作性,安全协议也应是模块化以增强加密灵活性,并方便插入新的算法或密码套件。
同时,加密灵活性意味着安全协议必须支持一个或多个算法或密码套件标识符,并期望强制实现的算法集会随着时间的推移而变化。
来源:Considerations for Achieving Crypto Agility
报告中呼吁开发新的加密灵活性,并将密码算法的过渡机制纳入协议、系统和应用程序的安全评估中。
实现加密灵活性可以让我们在面对新的安全威胁时,快速响应并更新密码算法,从而保障信息安全。
(三)程序的加密灵活性:从API到软件库或硬件
加密应用程序编程接口(crypto API)将利用加密算法的应用程序的实现(例如,电子邮件和Web应用程序)从加密算法本身的实现中获得。
这种分离允许应用程序专注于高级的、特定于应用程序的细节,而加密算法由提供程序或库实现,以处理对称加密、数字签名生成和验证、散列、随机数生成、密钥建立等。
来源:Considerations for Achieving Crypto Agility
(四)越灵活,越要谨慎
实现加密灵活性需要加密人员、开发人员、实施人员和从业人员之间的协作和沟通,以管理使用加密技术保护数据的风险,加密灵活性要求必须针对每个实施和应用环境而具体化。
资源限制是实现加密灵活性最难应对的挑战,协议设计者、硬件实现者和密码学家应该考虑到加密灵活性的提高会给协议和系统带来复杂性。
组织中的所有利益相关者应多方考虑建立加密灵活性成熟度模型,根据行业标准和最佳实践来衡量和跟踪加密灵活性状态的成熟度,以适应加密需求的不断变化。
如图所示的加密灵活性战略计划汇集了治理、加密和数据资产、风险管理和自动化工具等关键功能,以告知不同技术级别的加密迁移/过渡,组织需要在系统的整个生命周期中多次转换或迁移其加密使用。
来源:Considerations for Achieving Crypto Agility
任何加密灵活性工作都必须考虑标准、法规和授权对加密算法过渡要求的影响。
在对每个协议、系统和应用程序进行加密灵活性评估时,必须将加密安全策略实施视为一个重要因素。
加密灵活性是应对变化的未来策略,它要求密码学家、开发人员、实现者和从业者之间进行通信,以适应不断变化的安全性、性能和互操作性挑战。
追求加密灵活性的能力涉及探索新技术和管理方案,必须为每个环境开发新的加密灵活性要求,对协议、系统和应用程序的安全性分析和评估也必须包括转换机制。
来源
https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.39.ipd.pdf
声明:本文来自光子盒,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。