NTRU是一个带有专利保护的开源公开密钥加密系统,使用晶格加密算法来加密数据。它包括两部分算法:NTRUEncrypt用来加密,NTRUSign用来进行数字签名。与其他流行的公钥加密系统不同,它可以防止被Shor算法破解,并显著提升了性能。
第一个被命名为NTRU的加密系统版本,是数学家Jeffrey Hoffstein,Jill Pipher,和Joseph H. Silverman于1996年开发的。同年,Daniel Lieman加入了NTRU开发团队,并成立了公司NTRU Cryptosystems, Inc., 获得了该加密系统的专利。[1]2009年,该公司被一家名为Security Innovation的软件安全公司收购。[2]2013年,Damien Stehle和Ron Steinfeld创建了NTRU的一个可靠版本,目前正在由欧盟委员会授权的后量子加密小组进行研究。[3]
2016年5月,Daniel Bernstein,Tanja Lange等人发布了NTRU Prime,[4]通过消除一些令人不安的代数结构以抵抗潜在的攻击。
在同等加密强度下,NTRU执行大开销的私钥操作比RSA算法快得多。[5]RSA算法的私钥操作耗时与密钥长度呈三次方关系,而NTRU相应操作为二次方关系。
据鲁汶大学电子工程部门表示,「使用一块现代的GTX280显卡,在256 bit加密强度下,最高可达每秒二十万次的加密的吞吐量。与最新的对称加密AES实现相比(这并不公平),只慢了大概二十倍。」[6]
与RSA加密演算法和椭圆曲线加密算法(英語:Elliptic Curve Cryptography, ECC)不同,NTRU在基于量子计算机的攻击面前没有已知的弱点。国家标准技术研究所在一份2009年的调查中写到「目前不存在一种能同时兼顾公钥加密和数字签名,并在Shor算法面前没有弱点的可行替代方案」以及「在基于格的众多已有加密方案中,NTRU加密算法族看起来是最可行的」。[7]欧盟的PQCRYPTO计划(Horizon 2020 ICT-645622)正在评估Stehle–Steinfeld可靠版本的NTRU (并非原始版本的NTRU算法),以作为一项潜在的欧洲标准。[3]然而Stehle-Steinfeld版本的NTRU「比原始版本效率要低得多」."[8]
最初,NTRU只有一个带专利保护的付费开源库可用,打算写开源实现的作者收到诉讼威胁。[11][12]直到2011年出现了第一个开源实现,[13]在2013年,Security Innovation豁免了开源项目的专利授权要求,[14]并以GPL v2协议释放了一份NTRU的参考实现。[15]
Security Innovation依然提供付费的专有软件选项。[16]
现在存在两个开源的NTRU实现:
分别在Java和C下可用。
|