公开密钥加密算法总是基于一个数学上的难题,比如RSA加密算法的安全性基于数论中大素数分解的困难性,所以,RSA需采用足够大的整数。因子分解越困难,密码就越难以破译,加密强度就越高。椭圆曲线加密算法的提出正好可以解决这个问题,其依据就是定义在椭圆曲线点群上的离散对数问题的难解性。
一、椭圆曲线加密算法
1、椭圆曲线基本协议
设椭圆曲线为E(Fq),在加法群中的阶为n,我们设点P0(1,1)为该椭圆曲线上的点,A和B为进行通信的双方用户。该椭圆曲线上的消息加密及解密协议如下:
设素数p和q满足q=p;A的公钥为点Pa=ka×P0,私钥为ka;B的公钥为点Pb=kb×P0,私钥为kb;m为消息。
(1)随机产生k,计算(x,y)=k×Pb;计算R=k×P0;计算c=m×x(modp);发送密文(R,c)->b。
(2)计算(x,y)=kb×R;计算m=c÷x(modp),m即为经由解密得到的明文。
2、椭圆曲线加密体制中的有关计算
作为公开密钥加密算法的一种,椭圆曲线加密体制要用到点乘、点加、模乘、模加、模逆、模幂这些基本运算,点加和点乘属于椭圆曲线群上的运算,它们的执行速度直接决定着椭圆曲线的加密速度。为了提高速度,可从采用高速算法或实现并行性两方面解决。
二、大数计算的典型算法
对于大数,大家比较关心的是整型数据类型,因此仅对整型数据类型部分展开讨论。
1、大数的常规运算的实现
对于加减法运算,通过将A、B按位对齐;低位开始逐位相加(减);对结果做进进(借)位调整即可实现。乘法运算引入sum2、sum1作为中间量;在n的每一位上处理m;通过每一层循环,实现乘法的加法化;对结果做进借位调整。出发运算则要引入al来标识a的长度,bl来标识b的长度;测算a和b的长度;从高位开始,对位做减法,并完成借位;然后高位开始逐位计算商并整理商,产生余数。余数也可作为取模的结果。
2、大数模乘算法
大数模乘算法在密码学领域有广泛的应用,它是公钥密码的基本运算。模乘一般表示为:C=(AB)modN,0≤A,B<N,其中A、B、N都为k比特二进制大整数。
以下是目前具有代表性的几种大数模乘算法:
(1)Blakley的加法型模乘算法
Blakley算法每次计算都对累加中间结果C进行模简化,以使结果小于N。Blakley算法不含乘法和除法,但加法法和模简化过程只能逐位处理,实现效率不够理想。针对Blakley算法,人们相继提出了不少改进方法,这些改进主要可分为二大类:减少乘法过程的加法次数,即减少乘数中非0个数;提高模简化速度等。F.E.Su和T.H.Wang于1996年提出了一种无需大数比较而直接将C限制在范围内的模简化方法,明显提高了效率。围绕减少加法次数,Koc利用窗口技术,通过以m位为一组结合冗余二进制数方法从右到左对乘数重编码和预计算,提出了窗口模乘算法。不久又出现了有符号滑动窗口模乘算法和无符号滑动窗口模乘算法,也是目前较为理想的加法型模乘算法。
(2)Knuth算法
Knuth算法的优点是将商计算转化为一个25位数与t位数的除法,由于算法中仍含除法,实现效率受影响较大。1987年Barrett提出了第一种无除法的估商型模乘算法,其基本思想是用乘法和预计算替代除法。Barrett算法的最大优点在于整个计算不含除法,仅用最基本的字乘和字加即可完成。1992年Quisquater提出了另一种估商型模乘算法,其特点是可快速进行商计算,后来Walter亦提出了类似的思想。Quisquater算法进一步简化了估商计算,但整个模幂过程中需附加一次归范化和反归范化计算。
(3)Montgomery算法
Montgomery算法采用模加右移法,避免了公钥加密中求模算法的除法运算,使运算量大为减少。Montgomery算法不含除法,基本运算为字乘和字加,通过剩余系转换方法计算模乘,极大地提高了模乘计算速度,被广泛应用于各种软硬件实现中,人们也从高效率、低空间、高安全等角度对算法进行了各种改进。Montgomery型算法最后都需对作一次条件减法,由于不同乘数所耗费的时间和能量不同,给时间攻击、能量攻击及电磁攻击留下了余地,为此Walter、Hachez和Quisquater通过深入研究,提出了一种可有效阻止这些攻击的Montgomery型无减法模乘算法,而且实现效率也相当理想。
3、大数分解
大数分解问题涉及到高可信度的计算问题及很多数学技术的进一步研究和运用,包括信息论,竞争的复杂性等。数论学者和计算机学者已经得到了许多实际有效的方法并已经引起人们的普遍关注。大数分解质因子问题涉及到了素数判别和大数分解两方面的内容。
而进行素数判别和大数分解最直接的方法就是试除法,即对于整数n来说,用2,…,n-1去试除,然后判定n是否素数,分解式是什么。作为最简单的一个方法,试除法对较大的数(20位左右)进行分解是要耗费很多时间。费马方法给定n,若n是两数平方差n=a2-b2,则n=(a+b)(a-b)是n的一个因子分解,但该方法只有当n有两个几乎相等的因子时,才比较快。
三、椭圆曲线加密的实现
encryptogram()//加密
{
inti;time_tt;
srand((unsigned)time(&t));
rando(p2);
intproduct〔301〕,quo〔301〕,arith〔201〕;
for(i=1;i<301;i++) product〔i〕=0;multiply(p1,p2,product);
rando(p3);
division(product,p3,quo,arith);
intp4〔101〕,prod〔301〕;
random(p4);
for(i=1;i<301;i++)prod〔i〕=0;
multiply(p4,arith,prod);
}
decryptogram()//解密
{
intpro〔301〕,qu〔301〕,arit〔201〕,q〔301〕,ari〔201〕;
for(i=1;i<301;i++)pro〔i〕=0;
multiply(p1,p2,pro);
division(pro,p3,qu,arit)division(prod,arit,q,ari);
return0;
}
小知识之加密算法
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
电子文档管理系统的重要性:企业数字化转型的得力助手
在这个智能信息爆炸的时代,数据成为了企业最宝贵的资产之一。如何有效地管理和使用这种信息,已成为每个企业必须面对的重要课题。电子文档管理系统是解决这一问题的关键工具。今日,我们将探讨电子文档管理系统的重要性。在热点话题中,我们经常听到数据泄漏、信息安全等事件。这些事件不仅给企业带来了极大的经济损失,并且严重影响到企业的声...
it资产管理系统:IT资产大管家
在这个智能飞速发展的时代,公司的IT资产如同无形金矿,非常有价值。可是您有没有经历过这种困扰:IT资产种类繁多,数量庞大,管理耗时费力,还常常担忧数据安全和合规性?别担心,今天就给大家介绍一个IT资产管家——安企神IT资产管理系统。一、IT资产管理,为何如此重要?随着企业业务的不断增加,IT资产的数量和种类也在增加。这...
PHP线上加密解密:确保数据安全的有效途径
在如今智能化快速发展的时代,数据安全成为了人或单位不可忽视的重要话题。据最新统计,过去一年超出50%的企业遭到黑客入侵,数据泄露事件高发,给企业信誉和经济损失导致双重打击。在这种情况下,PHP线上加密解密技术的发展至关重要,既能提升数据安全性,又能帮助企业有效防范潜在威胁。一、PHP在线加密解密是什么意思?PHP是一种...
U盘管理工具大曝光:管理便捷,安全无忧!
在这个信息爆炸的时代,U盘已经成为我们日常生活中不可或缺的小帮手。不论是工作材料的备份或是学习课件的存储,U盘都以其小巧便携、容积丰富的特征受到大家的喜爱。但是,随着U盘的广泛使用,管理里的不便也随之而来。别担心,下面我就给大家介绍一款优秀的U盘管理工具,使你的U盘管理更安全!一、U盘管理,为何这么重要?想象一下,你U...
桌面管理软件怎样帮企业提高管理效益?
近日,一家知名科技公司因为桌面管理不当,造成内部数据泄漏,导致了业内的高度重视。这一事件不但揭露了桌面管理在企业管理中的作用,也催生了对高效安全桌面管理软件的需求。在此背景下,安企神桌面管理软件因其卓越的性能和全面的功能迅速成为很多企业的新宠。一、桌面管理:企业安全高效的基石桌面管理不仅关系到企业日常办公的顺利进行,也...