NTRU

更新时间:2022-08-25 16:07

NTRU(Number Theory Research Unit)算法是1996年由美国布朗大学三位数学教授发明的公开秘密体制。NTRU一种比较新的公开密钥体制,由于NTRU产生的密钥方法比较容易,加密、解密的速度比RSA等著名算法快得多,NTRU成为当前公钥体制研究的一个热点。

简介

这是一个基于多项式环的密码体制。它的安全性依赖于格中最短向量问题(SVP)。相对于离散对数或大数分解等公开秘密体制来说,它有许多优势。在安全性方面,NTRU算法具有抵抗量子计算攻击的能力,而RSA和ECC算法是无法抵抗量子计算的。当前,对于用什么公钥密码来替代正在大量使用的RSA和ECC,主要有以下互相竞争的技术解决方案:NTRU公钥密码体制、McEliece 公钥密码体制、MQ 公钥密码体制。

McEliece 公钥密码体制的安全性基于纠错码问题,安全性强,但计算效率低。MQ 公钥密码体制,即多变元二次多项式公钥密码体制(Multivariate Quadratic Polynomials in Public KeyCryptosystem),基于有限域上的多变元二次多项式方程组的难解性,在安全性方面的缺点比较明显。相比之下,NTRU公钥加密体制算法简洁、计算速度快、占用存贮空间小。

国内外研究现状

随着信息技术的迅猛发展和一些高技术武器设备、通信指挥系统等的需要,未来军事部门将大量地使用公钥密码技术。由于RSA 和ECC 不能抗量子计算攻击,而NTRU 能抗量子计算攻击,且速度快和安全性高,特别别适合用于诸如智能卡,保密蜂窝电话系统,保密传真、无线保密数据网,以及认证系统等业务,这也扩大了公钥密钥体制的应用范围。有理由相信NTRU 算法完全有可能在公钥密钥体制中占有主导地位。

自从该密码体制被提出来后,就引起国外一流的密码学家的关注,这包括Don Coppersmith Johan Hastad, Andres Odlyzko,and Adi Shamir 等。到目前为止,有很多讨论NTRU 算法安全性。但还没有哪一种分析方法能破译该密码体制。从现阶段研究来看,NTRU 所基于的困难问题是安全的。接下来的研究主要集中在体制的参数设置和适当的使用填充方案。

在2000 年,Jaulmes 和Joux 论证了仔细的选择填充方案可以防止选择密文攻击,Howgrave-Graham 等的研究结果显示了仔细的选择参数集可以使得解密失败概率降为几乎为0,一旦正确的参数的选择和适当填充方案的使用,任何对NTRU 的攻击都可以转化为对困难格问题的求解。

为了充分利用在学术界和商界的专家的经验和知识,提供一个完善的、有效的、能共同操作的,正确使用NTRU 公钥密码系统的方法,在2002 年10 月出版了一个标准EESS1v1:NTRU 加密和签名的实施,2003 年5 月对第一版进行完善和修改出台二版:EESS1v2。

历史

第一个被命名为NTRU的加密系统版本,是数学家Jeffrey Hoffstein,Jill Pipher,和Joseph H. Silverman于1996年开发的。同年,Daniel Lieman加入了NTRU开发团队,并成立了公司NTRU Cryptosystems, Inc., 获得了该加密系统的专利。2009年,该公司被一家名为Security Innovation的软件安全公司收购。2013年,Damien Stehle和Ron Steinfeld创建了NTRU的一个可靠版本,目前正在由欧盟委员会授权的后量子加密小组进行研究。

2016年5月,Daniel Bernstein,Tanja Lange等人发布了NTRU Prime,通过消除一些令人不安的代数结构以抵抗潜在的攻击。

性能

在同等加密强度下,NTRU执行大开销的私钥操作比RSA算法快得多。RSA算法的私钥操作耗时与密钥长度呈三次方关系,而NTRU相应操作为二次方关系。

据鲁汶大学电子工程部门表示,“使用一块现代的GTX280显卡,在256 bit加密强度下,最高可达每秒二十万次的加密的吞吐量。与最新的对称加密AES实现相比(这并不公平),只慢了大概二十倍。”

防止量子计算机破解

RSA加密算法和椭圆曲线加密算法(英语:Elliptic Curve Cryptography, ECC)不同,NTRU在基于量子计算机

标准

发行方式

最初,NTRU只有一个带专利保护的付费开源库可用,打算写开源实现的作者收到诉讼威胁。直到2011年出现了第一个开源实现,在2013年,Security Innovation豁免了开源项目的专利授权要求,并以GPL v2协议释放了一份NTRU的参考实现。

Security Innovation依然提供付费的专有软件选项。

现在存在两个开源的NTRU实现:

分别在Java和C下可用。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}