文档库 最新最全的文档下载
当前位置:文档库 › (强烈推荐)椭圆曲线在密码学中的应用毕业论文设计

(强烈推荐)椭圆曲线在密码学中的应用毕业论文设计

(此文档为word格式,下载后您可任意编辑修改!)

椭圆曲线在密码学中的应用毕业论文

1 前言

密码学是一种非常古老但同时又很年轻的科学,为什么这样讲呢,因为大约从人类社会开始出现战争的时候密码就产生了,而后逐渐地发展形成了一门学科[1],然而到今天为止学者对于密码学的研究仍在继续,所以说密码学既古老又年轻。密码学的出现和成长都与科技飞速发展及各类大小战争脱离不了关系,在它们的刺激下密码学逐步成长并渐渐成熟,其中战争发挥了巨大的作用,直接地积极推进密码学的快速发展。密码学普遍被认为是数学的一个分支,而椭圆曲线作为其中的一种数学研究对象也有大概一百多年的历史了,并随着密码学的发展特别是之后公开密钥密码学的出现及发展而大放异彩,自此开始了从理论知识走向实际应用的道路。

现在国际上比较时髦的密码体制也就是我们说的主流密码有:基于大整数因子分解困难的问题而设计的RSA密码体制、基于离散对数问题的困难性而设计的ELGamal密码体制、还有基于椭圆曲线离散对数问题的困难性而设计的椭圆曲线密码体制[1]。本文主要是在前人的基础之上,对密码学中的一个分支即椭圆曲线密码学进行相关的研究讨论。本文的框架结构是:第一部分是前言;第二部分主要介绍密码学的基本概念以及分类。比方说如果按照历史的发展时间来分类,可以将其划分成古典密码和现代密码;而按照密码学的发展历程来看,又可以将其划分成对称密码和非对称密码[1],其中公开密钥密码就属于非对称密码,比如使用较为广泛的RSA 算法以及本文将着重研究讨论的椭圆曲线密码算法;第三部分则是对椭圆曲线进行介绍,椭圆曲线并不是我们通常认为的椭圆图形的曲线,而是在

平面上光滑的三次曲线;在第四部分中介绍的内容是本文的核心,也就是基于椭圆曲线的密码体制,而这个密码体制主要由椭圆曲线上点的算术运算决定,该算术运算则是依据这条椭圆曲线所依靠的有限域的算数运算来进行定义的[2];第五部分介绍了椭圆曲线密码体制的应用同时也是本文着重讨论的部分,其中在电子商务中的应用是最实用的,另外还有智能卡、数字签名、指纹识别等领域的重要应用;最后就是对椭圆曲线密码学的未来发展给予总结并阐述自己的见解和看法。

2 密码学概述

2.1 密码学的基本概念及密码体制

2.1.1 密码学基本概念

密码学可以被简单的定义为设计密码和分析密码以保证在不安全信道上的安全通信,由于密码学的应用原理与数学理论知识息息相关,所以也可以说密码学是数学技术中的一种。

其实密码学可以简单的理解为将已知的消息进行伪装,方便保护消息使得没有得到授权的人,无法截获信息理解消息的真实含义。为避免这种情况发生可以将数据消息进行一种或几种可逆的数学运算,当完成一次或多次的运算之后就完成了对信息的伪装过程也就是加密过程,最初的原始消息(message)被称为明文(plaintext),通过某种方法一般都是数学运算将其伪装处理后的数据消息叫做密文(ciphertext),伪装隐藏即数据信

息处理的过程被称为加密[2](encrypyion),与之相对应的是解密(decryption)过程:将密文经过与加密过程中相逆运算的变换,也就是处理密文信息消除它的伪装隐藏之后恢复出原始的明文消息[2]。其中加解密的过程都需要在密钥(key)的控制下进行,所以密钥是加密和解密的关键所在[1]。

2.1.2 密码体制

一种密码体制也可以称为一个密码系统,它一般都是由五个部分构成:明文空间(全体明文的集合,用来表示),密文空间(全体密文的集合,用来表示),密钥空间[2](全体密钥的集合,用来表示),加密算法(到的变换由来表示)和解密算法(到的变换由来表示)。其中每个密钥都是由解密密钥和加密密钥构成,即

对于具体的密钥,加密算法就会确定一个加密变换,解密变换就是加密变换的逆交换。明文空间中的每个明文都可以在密钥的控制下通过加密算法来加密成密文,即

同样地在密钥的控制下通过解密算法将密文解密出来同一个明文[2],即

M D E M K K D C K

==。

((,),)(,)

e d d

图1-1表明了这个过程。

图1-1 密码体制

如果密钥和相等或者通过其中的一个非常容易推出另外一个的话,就称其为单密钥密码体制或者是对称密码体制也可称为传统密码体制,反之就称为双密钥密码体制[2]。还有一种情况是即使将加密密钥公开也无法在计算上推出解密密钥,这样就算公开了加密密钥也不会危及到解密密钥的

安全,这种公开了加密密钥的体制称为公开密钥密码体制,这也是密码发展历史上的一个里程碑。

2.2密码学的分类

密码学可以分为密码编码学和密码分析学,而最开始出现的时候是用于战争中,之后便主要应用在军事、外交及政治等相关部门。而除了应用在传统的例如保密通信、安全信息传递外,现如今计算机的操作系统、网络系统、应用系统及数据库的安全保密问题也都成为了密码学研究的新方向。

从密码学的成长历程来看,可以将密码学分成三个在逐渐变得成熟的阶段:首先是手工加密阶段,然后发展成经典加密阶段也就是使用密码机进行加密,最后就是现在的计算机加密阶段[3],其实还有一个阶段是位于经典加密之后,出现了使用一种很少人使用的语言加密方式,本质上就是定义一种新的语言作为密码语言,但是由于这种密码的难解性以及不能普遍使用的特点导致其并没有广泛流传。

而如果依据在使用过程中加密算法是否会发生变化来划分,又可以将密码体制分为变化算法密码体制及固定算法密码体制。如果在把明文加密成为密文的过程中加密算法是一成不变的,那么就有

(,),(,),,(,)000111C E M K C E M K C E M K n n n

==???=, 其中是加密算法,是明文,是密钥,是加密后的密文,此时就将其称为固定算法密码体制;反之,如果在加密的过程中加密算法是不断变化的,那么就有

(,),(,),,(,)00001111C E M K C E M K C E M K n n n n

==???=, 称这种密码体制为变化算法密码体制[2]。

由于加密算法在加密的过程中时受到密钥的控制可任意不断地变化

的,所以这也就极大地提高了密码的强度,未来的密码体制不断变化,如果能够演变成为一种逐渐变强的可以自己发展的密码就称其为演化密码。

还有一种分类也是最广为流传的分类方法就是将密码从时间的维度上划分,可以分为古典密码和现代密码,古典密码中许多的密码在现在看来都是非常不安全的,但是设计编制古典密码的基本思想对现代的密码还是有很多启发的。下面简单的介绍几种古典密码和现代密码。

2.2.1 古典密码

置换密码的应用原理是将明文中的字母通过不同的变化方法重新进行排列,明文中的字母本身是不会发生改变的,但原本所在的位置产生了变化[3]。最简单的就是将全部的字母顺序都倒过来重新排列,再根据明文中字母固定的长度将其划分成相同长度的一组组字母作为密文。复杂一点的就是将明文按照某一种变化的顺序将明文中的字母重新排列成一个矩阵,再用另外一种不同的变化顺序选择矩阵中的字母,然后进行排列形成密文,最后按照固定的长度划分成与原文对应的字母组作为密文[3]。

代替密码的加密需要使用一个或多个密文的字母表,也就是说先架构一个这样的密文字母表,然后使用这个表将明文中的字母替换成表中的字母形成密文。密文中字母及其组成的字母组都不再是原来明文中的字母和字母组,但是字母及其组成的字母组的位置并没有改变,只是本身改变了。根据构架出的并使用的密文字母表的个数,将代替密码分为单表代替密码和多表代替密码,其中单表代替密码就是通过使用一个密文的字母表将需要加密的字母替换形成密文,由此又可以分为四种密码,首先是加法密码,利用密文字母表把明文中的字母按照密文字母表循环的向某个固定方向移动某个固定的位数之后得到密文[3];其次是乘法密码,就是通过某个映像函数将二十六个字母互相替换后得到相应的密文字母表;第三种是仿射密码,就是将前两种替换密码组合在一起,使加法密码和乘法密码结合在一

起,可以构造更多更复杂的多项式密码;最后一种就是密钥词语代替密码,选择一个词语或者词组作为密钥,然后将密钥中一样的字母删除,将剩余的字母放在矩阵的第一行,再从明文字母表中删去密钥,即现在矩阵的第一行字母,余下字母也写入矩阵的其它行,再按照某一个顺序将构造的矩阵中的字母输出构成密文字母表[3]。而多表代替密码就是不再单一的使用一个密文字母表而是转而使用多个密文字母表,同时也就提高了密码强度。而多名代替密码的出现则是为了抵抗分析攻击中的频率攻击,显而易见的方法就是讲密文中字母的频率拉平。通常使用的有用字母替换的Vigenre 方阵以及使用数字替换字母的方法,因为选取是随机的,所以替换后密文的字符频率将会是持平的也就是说增强了密码的强度及安全性。

代数密码就是将密码的密文、密钥和明文都用二元数字的序列表示,也就是说代数密码其实是属于序列密码的,它有一个非常突出的优点就是它的加密算法和解密算法是相同的一个运算。

2.2.2 现代密码学

在古典密码之后出现的就是将要介绍的现代密码学了,按照密钥是否公开进行分类可以将现代密码分为对称密码和非对称密码[2]。下面详细介绍对称密码中的分组密码和非对称密码中的公钥密码[2]。

2.2.2.1对称密码

通过使用不同的密钥以及对明文的差别处理方法,我们可以划分为序列密码和分组密码两种密码体制。序列密码是将密钥和明文均划分成以位(bit )或字符为单位的序列,然后用密钥序列里对应的分量将明文序列中每一位或每一字符加密[3],即

,和,

其中的(,),(1,2,,)C E m k i n i i e i

==???。 而分组密码就是将明文的数据信息划分为明文块,通常这些明文块中每一

部分都含有若干的字符,使用同一个密钥对每个明文块进行加密,即:

其中(,),(1,2,,)C E M K i n i i e

==???。 序列密码体制进行加密的是一个比特或者一个字符,分组密码体制则是对一个明文块进行加密[3]。

对称密码中使用最为广泛的算法就是DES 及AES 算法了,DES 算法的全称是Data Encryption Standard ,它是由美国国家标准局公布的一种加密标准[4]。从这种加密标准公布开始就成为了世界各大领域尤其是金融领域关注的焦点。DES 算法是对称密码中最为显著的代表,DES 的出现使得人们的生活也发生了改变,尤其体现在POS 机,ATM 以及高速公路收费站等领域的应用,同时DES 也是世界上第一个被公布使用的标准加密算法。DES 算法使用了近三十年,期间致力于破译密码的学者通过计算机来对其进行破解,但实际上并没有取得真正意义上的成功。这种算法存在的主要缺点是密钥短。所以之后在美国就出现了征集评选新的加密密码体制,而其中加密思想和运算方法都与DES 基本一致的一个算法脱颖而出,与DES 所不同的是AES 资料加密算法所需要的密钥长度是能够自主选择的,分别可以使用128、192和256位的密钥。通过对这两种算法的比较,从算法的安全性能以及实现的效率上考虑就能够发现 AES 是优于DES 的数据加密算法。

DES 算法中所利用的加解密的密钥是相同的,只是在加密算法和解密算法的过程中使用的先后顺序不同[7],这也是对称密钥的特点。DES 加密和解密的过程如下:

DES 加密过程:116151

()()c E m IP oT oT o oToIP m -==???

DES 解密过程:11216()()m D m IP oToT o oT oIP c -==???

在DES 算法之后出现并被广泛认可投入使用的算法就是AES 算法了,全称是Advanced Encryption Stardand ,由美国国家标准技术研究所研究发现的,研究的目的就是获得更高安全性的加密算法来取代之前使用的DES 加密算法[4]。所以对于AES 算法来说,至少要实现比DES 算法速度快,同时具有高于DES 算法安全性的性能。AES 算法是具备块长及密钥长度可以改变的特点的一种多轮迭代的分组密码算法,其中对于密钥长度的选择有128、192和256比特三种[7]。虽然AES 算法较DES 算法可以及时加密并传输小于分组的数据信息,但是如果其中的一个明文单位遭到破坏或信息损坏就会影响到其他单位中的明文信息,事实上AES 与DES 算法在总体流程上是非常类似的,但是因为加密过程和子密钥生成过程由两个部分组成,所以最终成为了一种新的加密标准即AES 。

2.2.2.2 公钥密码

①公钥密码的基本概念及密码协议的三种方式

随着现代社会的发展,越来越多的更高程度要求的保密通信出现在生活中,如果采用传统原始的密码进行加密来达到保密的要求,就必须要求通信的双方拥有至少一个事先约定好的密钥,只有持有正确的密钥才能进行通信活动。如果只是两个人或几个人之间的通信还可以方便的管理密钥,但是伴随着私人与商业活动之间越来越多的联系,有时需要洽谈生意但又不得不保持商业秘密的私密性及安全性,在这种情况下是很难做到提前约定好密钥的。再比如说计算机网络的应用中,任意的两个用户之间都可以进行通信,为了使每个用户与其它用户之间的通信均能保持私密,每一个密钥都必须经常性的更换[4],而在网络上管理从产生密钥、存储密钥到分配密钥、更换密钥等如此大批量的操作时,复杂程度和不安全程度都是非常高的。因此出现了一种新的概念--公开密钥密码,也就是非对称密码,

同时也开创了一个崭新的现代密码新时代。

通过第一部分关于公开加密密钥而不会暴露解密密钥的介绍我们可以知道一个可以公开密钥的密码是需要满足三个条件的:

1.解密算法和加密算法是互逆的运算,也就是说要满足

同时这也是设计构成一个密码的基本条件;

2.解密算法和加密算法都应该是高效的运算,这是公开密钥密码的工程实用条件,也只有满足这个条件才有实际的使用价值,否则就只有理论价值;

3.不能通过加密密钥计算出解密密钥,在我看来这个条件是最为重要的,因为这是公开密钥密码的安全基础,只有满足了这一点的密码才能是一个有效的高安全性的密码,但是由于现在相关数学方面的研究并没有达到一定的水平,这一条件尚且不能在数学方面证明出来[4]。

一般来说,只要满足了以上的三个条件就可以构成一个公开密钥密码了,但是如果还要确定保证数据的真实性就还需要满足一个条件,即对于明文

应该需要满足,

这是确保数据信息真实性的基本条件。

公钥密码与传统的密码相比在密钥的分配上容易了许多,使用公开密钥密码进行保密通信时需要建立一个密钥管理结构(KMC,Key management structure),每一位用户都将自己的真实数据比如姓名、地址、公开的加密密钥以及其它的一些重要信息在密钥管理结构登记注册,然后再将公开的密钥加入共享的公开密钥数据库(PKDB,Public key database)[4]。这样一来用户就可以十分方便地使用公开密钥进行保密通信,再也不需要互相约定好一个密钥使用了。这种方式特别适合用于计算机的网络应用中,再加上公开密钥密码较传统密码还很容易实现数字签名,所以十分

受欢迎。而公开密钥密码的基本工作方式如下:

我们将明文用来表示,将密文用来表示,将加密密钥作为公开密钥用来表示,将解密密钥作为保密密钥用来表示,将解密的算法用来表示,将加密的算法用来表示,并为每一位用户提供一对密钥,将所有用户的公开加密密钥存储在公开的密钥库PKDB中。如果某位用户(用来表示)想要将某个数据信息(即)保密安全的传送给另外一位用户(用来表示),将有三种通信协议可以使用:第一种,为了确保数据的保密安全,想要传送信息的用户要在公开密钥库PKDB中查询另一位用户的公开加密密钥,然后使用将明文加密后得到密文即

最后用户将密文发送给用户,之后用户会收到,然后使用他的解密密钥,将密文解密就获得了明文[4]即

因为只有用户才有解密密钥,而公开的加密密钥又不能通过计算得到解密密钥[4],所以只有用户才能获得到最初用户想要发送给用户的明文,也就确定保证了数据信息的私密安全性,但是由于公开密钥库是共享的,所以如果有其它的用户假借用户的名义也同样发送给用户一些数据信息,那么假的密文发送给用户时,用户是无法发现的,也就是说这样的协议是无法保证数据信息的真实性的,所以可以采用第二种协议来进行通信。

第二种通信就是用户使用自己保密的解密密钥将明文解密得到密文即

再将得到的密文发送给用户,之后由用户的接收密文并通过公开密钥库PKDB查询用户的公开加密密钥,再用加密得到的密文即

因为只有用户有解密的密钥而公开的加密密钥是不能计算出解密的密钥的,所以只有用户才能发送数据信息明文,其它人是无法传送同样或虚假的信息给用户,也就是保证了数据信息的真实。但是,却不能保证数据信息的私密性,因为公开密钥库是所有用户共享的,而任何一个用户都能查到用户的公开加密密钥,也就是说随便的一个用户都可以获得用户想要发送的数据信息。

第三种就是将前两种方式结合在一起的协议,这样就既能保证数据信息的私密性又能保证数据信息的真实性了。首先用户用他保密的解密密钥对明文解密,获得密文即

然后通过查找公开密钥库PKDB找到用户公开的加密密钥,再利用加密密文得到新的密文即

将新的密文传送给用户。接收密文,用自己保密的解密密钥解密密文即可得到

之后用户查询用户的公开加密密钥利用其加密得到[4]

这个协议满足了数据的私密性和真实性,因为只有用户才有自己保密的解密密钥,并且通过公开解密密钥是无法计算出的,也就是只有这位用户才能发送密文,同样只有用户才有自己保密的解密密钥,公开的加密密钥是无法在计算上推断出的,也就是只有用户才能获得明文,其它人都是无法获取的。

由于公开密钥密码具有很好的密码学特征和很宽广的应用领域,所以公开密钥密码的出现给密码学界带来了空前的繁荣。

②RSA公钥密码

RSA密码被誉为一种风格幽雅的公开密钥密码,是在1978年由美国麻省理工学院的Rivest、Shamir、Aleman三位密码学者提出的,是一种基于大合数因子分解困难性的公开密钥密码[4],简称为RSA密码。主要思想是:公钥由一对整数构成,其中是运算模,由两个随机的素数和相乘得到,其中和的长度是相同的[4]。加密的指数需要满足的整数,而其中的。私钥称作为解密指数,需要满足的整数。下面是RSA密钥对的生成过程、RSA加密过程以及RSA的签名过程。

表2-1 RSA密钥生成机制

RSA算法的运算中最需要花费时间进行的运算就是模幂运算,比如在

加密过程中的和解密过程中的。所以,为了提高加密和解密过程以及数字签名中进行验证签名时的效率,应该选择一个数值较小的,也就是说在实际的算法中可以选择=3或者[4]。同样地,解密算法中的指数与也是一样长的。综上,选择数值较小的加密指数来进行加密解密以及数字签名中验证过程的RSA算法是更有效率的。

③离散对数密码体制

1976年Diffie和Hellman首次提出了密钥协商协议,自此之后直到1984年EIGamal才提出了基于离散对数难解问题的公钥加密方案和公钥签名方案[4]。从此之后还有很多的学者提出了许多相关的密钥方案,但大多数都是基于离散对数问题的公开密钥密码方案的变形。下面将要简单的介绍一下最基本的ELGamal公钥加密方案以及数字签名算法DAS。在基于离散对数问题的密码体制中密钥和公开的参数对是息息相关的,其中是素数,是的素因子,,的阶是,也就是说是满足

的最小正整数。私钥是从区间内随机选择的一个整数,其相应的公钥就是

对于已经确定的参数和,想要得到的数值就是离散对数问题(DLP,Discrete logarithm problem)[4]。下面就简单地介绍DL(Discrete logarithm)的相关理论知识。

表2-2 DL密钥生成机制

2.3 密码的攻击方法

密码攻击者分析密码攻击密码的方法主要有三种:穷举攻击、统计分析攻击和数学分析攻击[13]。第一种穷举分析攻击,是尝试一切密钥的可能性对所获得的密文解密,一直到找到正确的密文为止,或者将全部可能的明文通过一个固定的密钥加密,一直到找到与所获得的密文相同的明文为止,理论上来讲对于任何的密码都能通过这样的方式破解只要有足够多的

资源。第二种统计分析攻击,是利用前人对明文和密文总结统计的一定规律来破解密码,很多的古典密码都无法抵御这种攻击的方法,比如分析密文中字母与字母组出现的次数或者其它的统计参数,对于对抗这种攻击的有效方式就是使密文中找不到明文的统计特性,如此一来,密文中就没有明文的痕迹了,从而抵抗了统计分析攻击的可能,而这一点也成为了近代密码的一项基本要求[5]。最后一种数学分析攻击,是想要破译密码的人通过数学分析的方法来分析密码,针对密码学一些基本的数学知识的特征,找到破解密码的数学解决方案[5]。对于各类主要的密码攻击方式,其中数学分析攻击是最具有难度的,需要选取具有坚实数学基础,同时还要十分复杂难解的加解密算法,才有可能与其对抗。

对于密码的分析者或者说破译人而言,可以利用数据信息的资源来分类,将密码的破解类型划分为四种:仅知道密文的攻击,已经知道明文的攻击,选取明文来攻击或者选取密文来攻击[5]。仅知道密文的攻击就是通过了解分析截获的密文来破解密码,因为此时自由密文可以作为资源来使用,所以这也是对密码破译者最不利的一种情况。所谓的已经知道明文的攻击,就是指密码的破译人通过已经知道的某一些明文和密文对应着来破解,比如说计算机程序檔经过加密后的密文中有大量的诸如“IF”,“BEGIN”,“END”,“THEN”等词,而这些词汇会非常规律地出现在密文之中,密码的破译者可以十分合理的推测出它们,所以近代密码学认为只有能经受住已知明文攻击的密码才会是可取的密码。选取明文来攻击就是在选取明文并且获得相对应的密文来攻击,这是十分有利的情况,比如说计算机的数据库和文件系统就十分容易遭受这样的攻击[5],因为用户通过随意的选择明文并且获得相对应的密文数据库和密文文件。最后一种类型也就是选择密文来攻击,这种情况对破译密码的人来说也是非常有利的,破译者通过选择密文并且获得相对应的明文,再进行破解密码的工作。最

后的这种攻击方式主要是用来攻击公开密钥密码体制,尤其是攻击其数字签名。假如有一个密码是无论密码的分析人获得了多少的密文和明文并使用了任何的技术方法对其进行攻击都不能被破解,就称其为绝对不可破译的,这种情况的出现需要满足三个条件:1、密钥是随机序列2、密钥最短也要和明文是一样长的长度3、一个密钥就只可能是用一次,理论上这种密码是存在的,最为著名的就是“一次一密”密码,密钥是一次性使用的,也正是因为这个原因导致密钥管理十分困难,所以实际上是不能广泛使用的[5]。所以,总的来说只要有充足的信息就能破译实际上可以使用的任何密码。

2.4 密码的设计

由于通讯、计算机以及网络的技术发展,使计算机网络得到了广泛应用[4],同时也将全世界的计算机连在了一起,由此形成了一种巨大的计算能力从而形成了非常大的一种破解密码的能力,是最初十分安全的密码变得不再安全。有学者C.D.shannon曾发表论文,认为从信息论的角度出发,对密钥、加密、密码以及信息源进行详细地数学分析,使用唯一解距离及不确定性测试各类密码体制的安全性能[6],并且阐述纯密码、理论保密、实际保密等相关重要的概念,将密码置于夯实的数学基础上。同时阐明自己的观点,提议采取混淆、扩散及乘积迭代的方法[6],使设计出来的密码更安全。混淆实际上就是让密钥与密文的关联变得复杂化,从而可以使明文密文及密文密钥之间的联系减少也就是降低了它们之间的相关性,统计相关性越小统计分析中的数据信息就越没有作用,从而提高了密码的安全性能;所说的扩散是将明文中每位明文和密钥形成在密文中最大程度的影响,即密文中的每一位都可以成为明文和密钥的一个函数,也就达到了完备性。一般来说设计一个比较复杂的密码是十分困难的,但是设计一个相对简单的密码就很容易了,所以对简单的密码使用乘积迭代的方法,将其

简单密码进行组合迭代,然后获取一个预期的混淆及扩散,最后就能拥有一个相对安全的密码[6]。其实设计一个相对比较安全的密码就是需要寻找一个非常复杂的难解的问题,利用这一问题就能设计出比较理想的密码了。因为一个实用的理想的密码应该是一个不害怕公开加密算法的密码,也就是说一种密码的设计应该遵守公开设计的原则,这样才能使设计出来的密码不会因为加密算法的暴露而功亏一篑,只需要将密钥保密即可,算法公开的密码才能更适应未来的环境。但是,密码中加密算法的公开原则也并不是适用于所有的领域的,比如各国的军事政治核心,这类的密码就都不公开加密算法,所以设计密码和使用密码的正确方式还是在公开原则下对已经测试过安全性能的密码使用保密算法的方式更为稳妥。

密码学既是一门科学也是一门技术,运用科学的知识和理论将其运用到实际中,数据信息通过加密形成密文存储在计算机的文件之中,或者传输在网络信道之中,并只会给合法的用户分配密钥,当然这一切都是在密钥的控制下进行,实用又安全,尤其能适用于现在的网络安全中。

3 椭圆曲线概述

3.1 椭圆曲线的定义及点的加法运算

椭圆曲线其实并不是椭圆形状,只是因为椭圆曲线的方程和计算椭圆周长的方程类似,所以称它为椭圆曲线,椭圆曲线的方程是:

23213246y a xy a y x a x a x a ++=+++

其中,,,,,()123456

a a a a a a F F ∈是一个域,而域既可以是一个有理数域也可以是一个复数域还可以是有限域,通常将满足上述方程的数称为域中椭圆曲线上的点[4]。

假设点和是点椭圆曲线上的两个点并在椭圆曲线上定义加法运算

表示通过连接点和点的直线与椭圆曲线相交,交点关于轴对称的点称为点。如图3-1。

图3-1 点加运算

特别地,如果点和点是重合的,就表示点的切线与椭圆曲线的交点关于轴对称的点,即

这里定义的加法运算需要引进一个零元素,将0定义为一个无穷点即,那么

(,)(,)

∞∞∞∞+=

0+0=000

并且

()(x,y)(x,y)+()(x,y),

∞∞∞∞=

0,+=0,

P P P

假设和是解点,如果

就有

当和不相等的时候就有

(,)+Q(,)=(,)

P x y x y R x y,

112233

其中

,,,

如果点和点是重合的,那么

,,。

由此可知椭圆曲线在有限域上的加法运算,构成了加法交换群并且加法单位元为0[4]。

3.2 有限域上的椭圆曲线

对有理数、实数、复数等常见的数系和它们基本特征的抽象称为域,是由一个集合和加法乘法两种运算来组成的[4]。一个集合域,域中除0以外的数位如果满足以下的特性:

1、域对加法封闭,并对加法运算构成加法交换群;

2、域对乘法封闭,并对乘法运算构成乘法交换群;

3、使分配律成立,对域中任意的数字都有成立,并且这个集合是有限集合,那就称这个域为有限域。

有限域中含有元素的个数被称为这个有限域的阶。如果在有限域上定义出一条椭圆曲线,那么椭圆曲线的个数就称为在有限域上椭圆曲线的阶。

3.3 椭圆曲线的离散对数问题

椭圆曲线离散对数问题就是指在有限域上定义出一条椭圆曲线,在上给定一个基点并计算出阶[4]即

然后在椭圆曲线上寻找任意一点,在的范围内找一个正整数使

成立,这时将正整数称为点对点的椭圆离散对数即将表示为

已知椭圆曲线的离散对数和上的一个基点可以比较容易将点计算出来,但是如果已知点和上的一个基点想要计算出离散对数是十分难的,以至于迄今为止都没有有效的方法来计算,同时也正是因为有这样难解的问题存在,Koblitz和Miller就在这个基础上建立了椭圆曲线密码体制ECC 而这也正是椭圆曲线密码的加密原理[4]。

4 椭圆曲线密码体制

4.1 椭圆曲线密码体制的概念

椭圆曲线密码体制是属于公钥密码体制中的一种,它主要的数学理论基础是源于数论的相关知识,它是通过有限域中椭圆曲线上的点构成的Aebel加法群,在Aebel群中计算椭圆对数[4]。

现在国际上比较流行的密码体制都是以三种难解的理论为依据而设计的,其中一种是基于大整数因子分解问题设计的比如RSA公钥密码体制,还有一种是基于离散对数的难解问题而设计的比如ELGamal公钥密码体制,最后一种就是同样基于离散对数问题设计的椭圆曲线密码体制[4]。

下面简述一下椭圆曲线的离散对数问题,首先我们在有限域上选取一条椭圆曲线,是上的点,是素数,那么集合

{}

=∞???-

P P P P n P

,,2,3,,(1)

是利用生成的椭圆曲线循环子群,其中的素数,椭圆曲线,点和阶构成一个公开的参数组[4]。在区间内随机地选取一个正整数作为算法中的私钥,相对应的公钥就是

而这种需要通过公开的参数组和公钥求得私钥的问题就是椭圆曲线的离散对数问题简称ECDLP[4] (The elliptic curve discrete logarithm problem) [4]。下面将详细地介绍椭圆曲线上生成密钥对、加密和解密的具体过程。以二

相关文档
相关文档 最新文档