计算机网络安全传统加密算法实验报告

北 京 林 业 大 学 2014学年—2015学年第2学期计算机网络安全实验报告书 专 业:计算机科学与技术 班 级: 计算机12-2 姓 名: 侯 丹 学 号: 120824227 实验地点: N01 任课教师:蒋东辰 实验题目:传统加密算法

实验环境:Windows 操作系统,Visual C++ 实验要求:

阅读传统加解密算法,巩固对传统加解密算法原理和流程的理解。

1.编程实现凯撒加密算法Caesar_Encrypt:指定TXT明文文件和秘钥Key,输出指定文件名的TXT密文文件。

2.编程实现凯撒解密算法Caesar_Decrypt,指定TXT密文文件和秘钥Key,输出指定文件名的TXT明文文件。

3.编程实现换位加密算法Trans_Encrypt,指定TXT明文文件、分组长度n和数组秘钥Key,输出指定文件名的TXT密文文件。

4.编程实现换位解密算法Trans_Decrypt,指定TXT密文文件、分组长度n和数组秘钥Key,输出指定文件名的TXT明文文件。

实验内容:编程实现凯撒算法和换位加解密算法。 实验总结:

a) 分别给出凯撒加密/解密程序中每一个函数的完整声明,并说明该函数的功能。

b) 你是如何实现凯撒加密的字符转换的?

if(ch >= 'a'&&ch <= 'z') { num = ch - 'a'; num = (num + n + 26)%26; ch1 = 'a' + num ; cout<<ch1; fputc(ch1,fout); } else { if(ch >= 'A'&&ch <= 'Z') { num = ch - 'A'; num = (num + n + 26)%26; ch1 = 'A' + num; cout<<ch1; fputc(ch1,fout); } else { cout<<ch; fputc(ch,fout); } }

c) 自行选择明文(TXT文件中保存的英文语句)和秘钥,进行凯撒加密,写出获得的密文;验证解密算法看是否能够解密。

原文: 加密:

解密: d) 分别给出换位加密/解密程序中每一个函数的完整声明,并说明该函数的功能。

e) 你是如何实现分组内字符的换位的?

将读入的字符:

ch = fgetc(fin);

while(!feof(fin))

{

for(i = 1;i<=n;i++)

{

if (feof(fin))

{

fputc('0',fout);

}

else

{

fputc(ch,fout);

ch = fgetc(fin);

}

}

}

加密时:

while(!feof(fin)) { for (i=1;i<=n;i++)//对分组进行交换 { b[i] = ch; ch = fgetc(fin); } for(i = 1;i<=n;i++) {

} } c[i] = b[a[i]]; fputc(c[i],fout);

解密时:

while(!feof(fin)) { for (i=1;i<=n;i++)//对分组进行交换 { b[i] = ch; c[a[i]] = b[i]; ch = fgetc(fin); } for(i = 1;i<=n;i++) { fputc(c[i],fout); } }

f) 自行选择明文(TXT文件中保存的英文语句)和秘钥,进行换位加密,写出获得的密文;验证解密算法看是否能够解密。

明文: 加密: 解密: g) 如何利用这两个现有加解密程序构造更复杂的加密算法?写

出你的思路。

将两个凯撒加密和分组换位加密算法联合使用。

 

第二篇:网络安全中加密算法的研究

¨n386

mI女:!堂H-k”]£妇!,pf,i代m—业!!!一甫*——

舟童郁鹰坐碧

硕士学位论文论文题目网络安全中加密算法的研究学生姓名

举夷泓颂051429号

指导教师王锁萍教授

计算机应用技术学科专业

研究方向计算Ot(i!通信t州i向应Ⅲ淹史提变“期

柯京邮电人学硕十研究,上论文摘要

摘要

随着计算机技术的发展和Intemet的广泛应用,人类生活越来越密切地依赖于网络,与此同时,各种网络安全问题层出不穷。如何防范来自网络的威胁,成为人们关注的焦点。在各种网络安全技术中,加密技术是最核心的一种技术,是解决网络信息安全最直接、最有效和最重要的途径。

论文在研究网络安全问题的基础上,对加密技术进行了深入的探讨。首先,研究了目前的两种加密体制(对称加密和公钥加密)各自的代表DES算法和椭圆曲线加密(ECC)算法,分别对其思想、特点和安全性进行了讨论;其次,详细研究了基于素数域C上的椭圆曲线密码算法的具体实现问题,特别是重点讨论了椭圆曲线上点乘运算,在已有算法的基础上,给出了另一种改进的m进制算法,同时进一步地改进了现有滑动窗口算法的滑动方式,提出了一种新的基于滑动窗口的点乘算法,使得算法更加灵活;最后,结合混合加密思想,设计了基于三重DES(3DES)算法和ECC算法的混合加密系统,并且仿真实现了该系统。此外,通过对混合加密系统进行效率、复杂度和安全性的分析,论证了混合加密的合理性和可行性。

本文的创新点在于:1)对ECC算法点乘运算中m进制算法作了进一步改进,在一定程度提高算法效率的同时,大大降低了算法的预计算量以及存储量,使算法能够适应如智能仁等内存受限的环境:2)进一步地改进了现有滑动窗口算法的滑动方式,提出了一种新的基于滑动窗口的点乘算法,使得算法更加灵活,对于各种应用环境具有更好的适应性;3)采用了3DES以及ECC算法来设计混合加密系统。关键词:对称密码,公钥密码,DES,ECC,混合加密

fya二恤二三eelpw,moc,ycn蹦elc恹ife咖eht

Abstract

!塑垒!!!!!生叁::!:!堕±婴窒尘笙茎———————————————————————————————————————————一

ABSTRACT

.8

妣叩

酊m小

叭-鲎

漱m

一妣

==~一一一一一舳

~僦

姗础孙..ol蓦=啦一

一一一一一

砌=盂删赡衙勰肿础㈣岫==一m础一础一

一一~舭一==一

洲池

删.星岖一

一一一~一

姒曲.似耐哪d鼍|Ⅲ脚

base。fknown

improved

on

Sliding

arithmetic,simulttaneity。W州eapfterropoStuseddyinagnallewdsancaallayzirmnugltiitpslisclaidtiiongn

of

designedthesystem

the

mixedcryptogramarithmeticby

哕bility.ofmix.…crypt.ogram

下heinnovations

Windows^‘e…chn。o。l竺=鲫ld竺y=芸盖;?锄饥二me3鲫DES:=imixe叭哨伊a:=i啪ningideal0~加卵的粤¨Ⅲ瞄¨|『:≥二s枷y.

amlg。odriet。hLmasstwly,hiwche

wereprovedbyanalyzingofthree

thisdissertationconsist

r‘ationalityand

POInts?rnmacy,w㈨1plu佰¨¨一…

i—ncrseea硒se。nthede

a?印rtmm:)fmadeit

inadvanceandthestorage,which

calculatorand

so

only

sca?armultiplicationaboutECC,not

can

be.sea3:)nc_,一1‘1『_二=:…,、,,。一nn

wefifi也cise。nmcye,eb州ut的alnsomreend。u。c撤eeth。ce.

R,idjn----证7

on?Secondly,weproposed

new

andanalyzlng

Windowstechnologyafterstudying

scalvzarinmuiltstipslliicdiatngionmoalgdoen,mwhmicwhmmta;ude,-thpe...a.19.。r.i幽.....m..。.r.e1【s驯11塔11Ⅳ哳’”““……一

Keyw。rds:

syTnm哪crypt0留哪,Public

E11iptic

Curves

Key

Crypt。乎孤。a住Encryptions‘an硼'

Cryptography,Mixed

Crypto蓼锄

南京邮电人学硕士研究生论文缩略i可农

缩略词表

DESDSAECCIDEAISOAESTDEANISTSETECDLP

DataEncryptionStandardDigitalSignatureAlgorithmEllipticCurvesCryptographyInternationalDataEncryptionInternationalOrganizationfor

数字加密标准数字签名算法椭圆曲线公钥密码

Algorithm

国际数据加密算法

Standardization国际标准化组织

高级加密标准三重数据加密算法

Technology美国国家标准技术研究所

安全电了商务协议椭圆曲线离散对数问题每秒百万条指令三重数字加密标准极小型加密算法

AdvancedEncryptionStandardTripleDataEncryptionNationalInstitute

Algorithm

and

ofStandards

SecureElectroincTransactions

EllipticCurveDiscreteLogarithmProblem

MIPS

3DESTEA

MillionInstructionPerSecond

TripleDataEncryption

Standard

TinyEncryptionAlgorithm

南京邮电大学学位论文独创性声明

本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得南京邮电大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。

研究生签名:焘踅组日期:龇龟

南京邮电大学学位论文使用授权声明

南京邮电大学、中国科学技术信息研究所、国家图书馆有权保留(包括刊登)论文的全部或部分内容。论文的公布(包括刊登)授权

研究生签名:盘邀研究生签名:农:协导师签名:本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布南京邮电大学研究生部办理。

向京邮电人。≯硕十研究,上论文第‘带绪论

第一章绪论

1.1论文的背景及意义

随着计算机技术的发展和Intemet的广泛应用,计算机信息系统和公众.瓦联网已经渗入了生活的各个领域,基于Intemet的电子商务、电子政务的蓬勃发展,更引起了人类牛活方式的全面改观——我们己经进入了网络时代和信息时代。但是,随着互联网络进一步国际化、社会化、开放化和个性化,网络在给人们带来“技术共享”、“信息共享”等方便的同时,也带来了一些不安全的阴影。由于计算机网络和信息系统的开放性和脆弱性,其信息资源和软、硬件资源客观的存在着已知的或潜在的各种威胁。例如,在银行、保险公司、证券公司等金融机构,国内外有关网络犯罪的报道屡见不鲜;各企事业单位内部的商业秘密不胫而走;计算机网络病毒的泛滥与侵扰等等。因此,网络安全问题显得越来越重要。

网络安全是涉及面很广的问题,不仅涉及到计算机科学一门学科,也涉及到数学、饩:理、法律等学科,主要包括数据保密、访问控制、身份认证、不可否认和信息完整性等问题。其中首要的是数据保密,要保证被保密处理的数据不能被非法用户获取以及解密从而得到相关信息。而访问控制,是指系统对用户和资源分配不同的权限,根据各自的权限,系统可以分配用户资源,可以控制用户对资源的访问。身份认证是在网络中实现对对方身份的数据核实。数字签名则是用来防止签署方否认或抵赖。完整性则是指用户获取的数据没有被非法篡改过。

信息加密技术是保障信息安全最基本、最核心的技术措施。信息加密丰要是通过对数据的加密和数字签名来实现的,其中对数据的加密处理主要是为了防止数据不会被窃听。如果使用非对称加密算法,它还可以保证发送方和接收方身份的确认。而数字签名实际上是由牛成摘要和牛成数字签名两部分构成。其中摘要可以防止文件被篡改,从而保证信息的完整性;而数字签名则是为了保障数据的不可否认性,从而使数据具有法律上的意义。对数据进行加密和数字签名的理论基础是加密算法,对加密算法的研究由来已久,它的基本思想是对原始数据进行复杂的变换,以使非法接收者很难从中破译出原始的信息,而合法用户则可以利用密钥解密密文。

南京邮电人学硕十研究生论文第‘节绪论1.2密码学的发展

信息加密作为一种保障数据安全的技术源远流长,可以追溯到几千年前。在密码学的发展中,曾出现过一些加密技术的经典的应用,比如JuliasCaesar(恺撒大帝)用于战争的恺撒密码。以往关于密码的应用基本上都是出现于战争中,包括美国独立战争,美国内战和两次世界大战。最广为人知的是二战期间德国人用来加密信息的编码机器GermanEnigma机。当初计算机的研究就是为了破解德国人的密码,人们并没有想到计算机的发展给今天所带来翻天覆地的变化…。

1949年,现代信息论的创始人香农(shannon)在“保密系统通信理论”一文中,提出了一整套如今被称为是信息论的基础理论的概念和方法,并且用来度量密码体制的保密性。他首次用概率统计的观点对信息源、密钥源、接收和截获得密文进行了数学描述和定量分析,用不确定性和唯一解距离度量密码体制的保密性,阐明了密码系统、完善保密性、纯密码、理论保密性和实际保密性等重要概念,标志着密码学研究开始走上了科学的轨道。

香农密码体制表示如图1.1所示。

图1-1shannon保密系统的简化模型

上世纪六十年代,由于计算机的广泛应用,促使人们提出了对私人机密和数字化数据进行保护的迫切要求。由IBM公司在七十年代发起,最终成为美国联邦信息处理标准DES(DataEncryptionStandard)力fl密算法是当时世界上著名的对称加密算法。

美国国家标准局即现在的国家标准技术研究所(NIST)在1999年发布了一个新版本的DES标准(FIPSPUB46.3),该标准指出DES仅能用于遗留的系统,同时3DES将取代DES成为新的标准。3DES有两个显著的优点,确保了其能在未来得到广泛的应用。首先它的密钥长度是168位,故能克服DES所面临的穷举攻击问题。其次,3DES的底层加密算法与DES的加密算法相同,该加密算法比任何其他加密算法比任何其他加密算法受到分析的时间长得多,也未能发现有比穷举攻击更有效的、基于算法本身的密码分析攻击方法。相应地,3DES对密码分析攻击有很强的免疫力。如果仅考虑算法安全,3DES能成为未来数十年加密算法标准的合2

白束邮也人学硕十研究,上论文第。‘章绪论适选择。

1976年Diffie和Hellmann的“密码学的新方向”一文【2】导致了密码学上的一场革命。他们首次证明了在发送端和接收端无密钥传输的保密通信是可能的,从而开创了非对称密码学的新纪元。非对称密码学的诞生,使密码学发生了历史上而且也许是唯一真正的革命。在过玄4000年间几乎所有密码编码系统都建立在替代和置换等机制的基础上。公开密钥密码编码学则与以前的所有方法都截然不同:一方面它基于数学函数,另一方面它用到两个不同的密钥,而非对称常规加密的一个密钥。

1977印由麻省理工学院的Rivest、Shamir和Adleman提出了第一个比较完善的非对称密码算法,即著名的RSA算法【3】,从此RSA方案作为唯一被广泛接受并实现的通用公开密钥加密方式而受到推崇。此后,人们基于不同的计算问题,提出了大量的非对称密码算法。

目前比较流行的公钥密码体制主要有三大类【4】:一类是基于大整数因了分解问题,其中最典型的代表是RSA体制;另一类是基于离散对数问趔51,如EIGamal公钥密码体制和DSA(DistalSignatureAlgorithm)公钥密码体制;还有一类是基于椭圆曲线上的离散对数问题,它较通常的离散对数问题更为困难,称为椭圆曲线公钥密码体制。椭圆曲线加密算法自从诞牛之日起,它的安全性和实现效率就被众多的数学家和密码学家所广泛研究。所得的结果表明,较之RSA算法,椭圆曲线加密算法具有更大的优越性,因此它有望取代RSA,成为通用的公钥加密算法。国际上制定了椭圆曲线公钥密码标准IEEEPl363,RSA等一些公司声称他们已开发出符合该标准的椭圆曲线公钥密码。我国学者也提出了一些公钥密码,另外在公钥密码的快速实现方面也做了一定的工作,比如在RSA的快速实现和椭圆曲线公钥密码的快速实现方面都有所突破。公钥密码的快速实现是当前公钥密码研究中的一个热点,包括算法优化和程序优化。另一个人们所关注的问题是椭圆曲线公钥密码的安全性论证问题。

1.3两种密码体制

1.3.1对称密码体制

对称密码加密也称为常规加密、保密密钥或单密钥加密,它是20实际70年代后期公钥加密体制出现之前使用的唯一一种加密体制,是现在最常用的两种加密类型之一。这种体制的特点是:发送方和接收方使用相同的密钥分别进行加密和解密。常规密码体制中,发送方3

南京邮电人訾硕十研究生论文第节绪论把明文P,也就是要传送的文件,利用密钥K通过规定的加密算法加密为密文C:而接收方则利用与发送方相同的密钥足对密文C进行解密,从而得到原来的明文P。换而言之,即加密和解密是瓦为逆变换的关系,具体的变换由变换参数密钥K控制,密钥K必须通过于密文信道不同的保密信道来进行传送。

对称密码体制通常使用的加密算法比较简便高效,密钥简短,数学运算量小,加密与解密速度极快。另外,对称密码体制的密钥不能与密文一起传送,而必须在另外一个保密的安全信道里传送。由于系统的安全性依赖于密钥的安全性,泄漏密钥就意味着任何人都能对加密信息进行解密。所以,在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题。DES算法是目前最为典型的对称密钥密码系统算法,除此之外,比较有代表性的算法还有3DES,IDEA[6J算法等。

1.3.2公钥密码体制

如果一个保密系统能够把加密过程和解密过程分开,并且加密和解密分别使用两个不同的密钥实现,并且由加密密钥推导出解密密钥在计算上是不可行的,则该系统所采用的就是公钥密码体制(非对称密钥密码体制)【‘71。采用公钥密码体制的每个用户都有一对选定的密钥:其中一个是可以公开的,一个由用户自己秘密保存。图1.2是一般公钥密码的示意图。

其中,图中E(e。,m)表示使用用户B的公开密钥%对明文m进行加密,D(九,c)表示用户占使用自己保存的秘密密钥以对密文c进行解密(有时也使用B表示给用户口发送秘密消息时所使用的加密变换,即%=E(e占,?),使用见表示用户丑的解密变换,且lJ岛=D(d疗,?)。

图1.2公钥密码体制

公钥密码的加密变换E(e岸,所)与解密变换D(d口,c)应满足下列要求:

(1)D(d何,c)是E(e曰,m)的逆变换,目U对于任意明文m,均有4

卣京邮电人宁硕十研究生论文第‘章绪论

D(d占,C)=D(d占,E(e口,肌))=m;

(2)在己知加密密钥e。时,E(e。,rl,1)的计算不难;在己知解密密钥d8时,D(98,C)计算也不难:

(3)如果不知道da,那么即使知道%,具体的加密与解密算法过程以及密文C,确定明文的计算是不可行的。

因此,只要妥善保箭好解密密钥d占,即使把用于加密的加密密钥e。公开,也能够保证密码体制的安全性,因为要从加密密钥%推出解密密钥d口在实际上是不可行的。所以加密密钥可以公开进行分配,这样,在常规密码体制中最为棘手的密钥秘密分配和管理问题在公钥密码体制中就完全不存在了。

公钥算法相对于对称加密算法有许多优点,通信双方不需要事先交换密钥,保密性好,在密钥毹;理及分配上有自己的优越性;另外公钥密码可以实现数字签名,保证传输信息的不可否认性。但是,公钥密码是基于数学难题的,在加、解密运算时,在计算上的开销相对于对称加密来说是非常巨大的。特别是在消息明文较大的情况下,更是显现出公钥算法的缺陷。1.4本文的主要工作

本文在讨论网络安全技术的基础上,着重研究了当前网络安全中的加密技术:系统的研究分析了对称加密体制的DES算法和公钥加密体制的F.,CC算法;利用用对称加密算法来加密要传输信息的内容,用公钥加密算法来加密会话密钥的混合加密思想设计了基于ECC和3DES算法的混合加密系统;在此基础上对ECC算法中点乘运算实现作了部分改进。具体的工作如下:

(1)研究了目前各种网络安全技术中的加密技术,特别是研究了目前流行的两类加密体制的代表一对称加密算法DES和公钥加密算法ECC,对其实现原理和过程进行了详细的描述和分析;

(2)本文详细研究了基于大素数域C上的椭圆曲线密码体制算法,其中包括:椭圆曲线域参数的选取、有限域F上的基本运算、椭圆曲线算术运算等算法的实王见问题。

(3)本文重点讨论了椭圆曲线上的点乘运算,在已有算法的基础上,给出了本文改进的肌进制算法,该算法虽然在一定程度上增加了点加运算,但大大减少了预计算量和存储量,同时进一步地改进了现有滑动窗口算法的滑动方式,提出了一种新的基于窗口的点乘算法,使5

椅京邮电人学硕十研究,上论文第‘章绪论得窗口算法更加灵活,对于各种应用环境具有更好的适应性。

(4)在分析和比较的基础上,针对对称加密中密钥管理的问题和公钥加密中算法过于复杂的问题,利用混合加密思想,设计了基于3DES和ECC算法的混合加密系统,并在C++平台下进行仿真实现。

1.5论文的结构安排

本文的结构安排如下:

第一章:绪论。介绍了本文的研究背景,阐述了目前网络安全中的一些问题,介绍了密码学的发展,介绍了当前的两种加密体制;综述了研究工作以及论文的组织结构。

第二章:着重对数据加密标准DES密码算法进行研究,详细讨论该算法的设计原理,并对DES的安全性进行详尽的比较分析,并且针对DES算法密钥短的缺点,讨论了3DES算法。

第二章:对椭圆曲线密码体制ECC这一非对称加密算法进行探讨,阐述实现该算法的数学基础及其依赖的数学难题,探讨ECC加密体制的设计原理,分析ECC的安全性能。

第四章:对基于大素数域C上的椭圆曲线密码算法的具体实现展开了较详细的研究,重点研究讨论了椭圆曲线上的点乘运算,在已有点乘算法的基础上,给出了本文的改进的m进制算法,该算法使预计算量以及存储量大为降低,同时给出一种新的基于滑动窗口的点乘算法,新算法更加灵活,对于各种应用环境具有更好的适应性。

第五章:在讨论混合加密的基础上,设计了基于3DES和ECC算法的混合加密系统,并在C抖平台下进行仿真实现,最后对该系统进行了细致的分析。

第六章:总结。总结了本文的研究工作,对于存在的问题和不足做了总结,提出了进一步的工作方向。6

南京邮电人学硕十研究生论文第‘:章数据加密标准DES密码算法

第二章数据加密标准DES密码算法

本章的目的在于阐明现代对称密码的基本原理,主要探讨了使用最广泛的对称密码:数字加密标准(DES),并分析了其安全性及脆弱性。尽管目前DES之后涌现出大量的对称密码,而且它注定要被高级加密标准代替,fuDES依然是一个极其重要的算法,并且仍然在广泛的应用中。

2.1DES密码系统

DES密码系统是由IBM公司的沃尔特?塔奇曼(W.Tuchman)和卡尔?迈歇尔(C.Meyer)于1971至1972年研制成功的。该算法于1975年3月公开发表,于1977年被美国国家标准局(NBS)批准作为美国数据加密标准(Data

提出的数据加密四个要求:EncryptionStandard)【引。DES算法完全符合美国国家标准局

(1)提供高质量的数据保护,防止数据未经授权的泄漏和未被察觉的修改;

(2)具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握:

(3)DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础:

(4)实现经济,运行有效,并且适用于多种完全不同的应用。

2.2DES算法加,解密过程

DES算法的分组长度为64bit,密钥K也是64bit,但只有56bit有效,其他8位是奇偶校验位。算法主要包括初始置换、16轮迭代的乘积变换、逆初始置换以及16个子密钥产生。64位一组的明文从算法的一端输入,64位的密文从另一端输出。下面我们给出DES加密/解密算法迭代过程的流程图如图2.1所示:7

钉京邮电人学硕十研究生论文第.二章数据加密标准DES密码算法

图2—1DES加密过程

要进77Drl密的一组数据,先要经过初始置换铲的处理,并且要通过一系列的运算,然后经过初始置换的逆置换俨一,给出加密结果191。

(1)初始置换伊:首先对64位的明文按初始置换俨表进行换位。

(2)将置换输出的64位数据分成芹右两半,左一半称为厶,右一半称为R,各32位。(3)计算函数的16次迭代。由加密函数厂实现了密钥K。对R的加密,结果为32位数据组/(R,K),厂(%,墨)再与厶模2相加,又得到一个32位的数据组厶@f(Ro,K。),以厶0f(Ro,K。)作为第二次加密迭代的Rl,以R作为的二次加密的迭代的L。,第一次加密迭代过程结束。第二次迭代至第16次加密迭代分别用予密钥K2,…,Ki。进行,其过程与第一次加密迭代相同。

加密过程可用如下数学公式描述:

厶=R中

墨=厶一。o/(墨小K),i=l,2,…,16f函数将在后面描述,每~个长度为48的比特串K,K2,…,K。。是作为密钥髟的函数而计

I村京邮电人学硕十研究,上论文第:幸数据加密},J:准DES密码算法

算出来的,实际上,每一个K,是K中比特置换后的选择,K。,K,…,K。。组成了密钥编排。

(4)最后一次的迭代厶。放在右边,墨。放在左边。

(5)再经逆初始置换俨~,把数据打乱重排,产生64位密文。

DES在算法结构上采用迭代结构,从而使其结构紧凑,条理清楚,而且算法为对合运算,便于实现。而且它的解密过程和加密过程完全类似,只不过将16圈的予密钥序列K.,心,…,K。。的顺序倒过来,即第一圈用第16个子密钥墨。,第二圈用墨,,其余类推。

2.2.1初始置换I

初始置换和逆初始置换是简单的移位操作。其中初始置换护在第一轮迭代运算之前进

行,对输入64位分组实施如表2.1所示的变换。例如,初始置换把明文的第58位换到第1位的位置,把第50位换到第2位的位置,把第42位换到第3位的位置等等。

逆初始置换俨。1是初始置换IP的逆过程,表2.2列出了该置换。在最后一轮的DES迭代中,寿半部分和右半部分并不交换,而是将足。。和‘。并在一起形成一个分组作为置换伊一的输入,置换的输出为最终结果。

5860626457596163

5052545649515355

4244464841434547

3436384033353739

2628303225272931

18202224171921.23

101214169111315

2468l357

4039383736353433

87654321

4847464544434241

161514131211109

5655545352515049

2423222120191817

6463626160595857

3231302928272625

表2.1初始置换三P

衰2-2逆初始置换妒一

2。2.2

DES子密钥的生成

在DES密码系统的设计中,将64bit的密钥中的56bit用于加密过程,其余8bit(在位置8,16,…,64上的8"卜bit)用于奇偶校验。在DES的每一轮迭代中,经过循环左移和压缩置换,

由京邮电人学硕十研究生论文

第二章数据加密标准DES密码算法

从56bit密钥中产生出不同的161f-48bit子密钥K.,K2,…,Kl。。子密钥的生成丰要过程如下:

(1)首先密钥K经过如表2.3的PC一1的置换,将初始密钥的8个奇偶效验位剔除掉,而留下的56位才是真正的初始密钥:

(2)将置换后的56bit的密钥进行分组,分为左右两部分Co和Do,c0和D0各为28bit;(3)对分组后的密钥Co和哦按照表2-4进行循环左移,得到了G和4厶起来56bit数据;(4)每次循环中,c:一.和口一。分别经过表2—4确定的l位或2位的循环左移,这些经过循环的

值作为下一次循环的输入,这样得到16组56bit的数据:

(5)将这16组56bit的数据依次经过如表2.5的PC一2的置换,得到16个48bit了密钥K。,K:,…,K…其生成过程如图2?2:

图2.2子密钥的产生

57110196371421

49582115562613

41505934754615

3342516039465328

2534435231384520

1726354423303712

91827361522294

143231641304446

172819752404942

1115122731513950

24642037455636

121261347333429

5108255485332

袁2.3PC~1置换表表2.5PC一2置换表

lO

南京邮电人学硕十研究生论文第。:章数据加密标准DES离码算法

迭代顺序

左移位数11213245262728291lO21l21213141516222221

表2-4循环左移表

举例如下:假设C3=C]C:…C28B=西以…吐。,我们查表可知第四次迭代应该左移循环两次,则C4=C3C4…C28Clc2,B=名d4…d28啊以。

DES算法的厂函数2.2.3

一.加密函数/

DES算法中最重要的部分是/函数,而其中的重点又是S盒(SubstitutionBox)替代运算。下图2.3是/函数的计算过程结构。

(E

1,:

…vi,、J

k/1

1r

┃┃IlI

slTs2﹢i

-3数的计算过程

函数厂是DES的核心部分,它的作用在于在第i次加密迭代中用子密钥K对R一。进密。在第i次加密迭代中选择置换运算E(表3.6)对32位的Rf一,的各位进行选择和排列,一个48位的结果,此结果与予密钥K模2相加,然后送入选择函数组J5-盒中,结果得到32位的数据组。此结果再经过置换运算尸(表3.7),将其各位打乱重排。置换运算尸的输为加密函数的输出/(R小墨)。

7r的执行步骤如下:

)选择置换。首先32位的R一。经过选择置换E扩展成长度为48位的比特串,E(忍一,)由.的32个比特以特定方式排列产牛,其中16个比特出现两次:

南京邮电大学硕士研究生论文第二章数据加密标准DES密码算法

(2)选择置换E的48bit为输出,与K作二进制加法(异或操作);(3)将输出的48bit进行分组,作为输入送入选择函数组S盒中;(4)根据输入计算S盒函数;

(5)通过S盒的变换生成32bit的输出;(6)对S盒输出的32bit的串进行P变换。

32

1591317212529

26lO1418222630

5913172125291

1629152321922

712151882713

1l

2028233124330

21

17

8121620242832

81216202428

111519232731

2610149625

表2-6E选择置换表表2—7P置换衷

二.选择函数组S

选择函数组由8个选择函数(也称S盒)组成,8个选择函数分别记为墨,是,S,墨,S,&,品和S。选择函数组输入是一个48位的数据串,从第1位到第48位依次加到S—S的输入端。

每个选择函数有6个输入,4个输出。每个选择函数有一个选择矩阵,规定了其输出与输入的选择规则。选择矩阵有4行16列,每行都是0—15这16个数字,但每行的数字的排列都不相同。而且8个选择矩阵彼此也不同。每个选择函数的6位输入组成一个6位二进制数字串。选择的规则是:输入二进制数字串中的第1和第6两位所组成的二进制数值代表所选中的行号,其余4位所组成的二进制数值代表选中的列号,而处在被选中的行和列的交点处的数字便是选择函数的输出(以二进制形式输出)。

举例如下:下面我们仅给出S表中的S表,如表2-8所示:

OO

213

31

4214134

515269

6111321

781117

8310155

9106121l

1061293

111211714

1259310

1395100

140356

1578O13

14O415

15l12

23

148

82

表2-8

12

S表

I订京邮电人,誓硕十研究生论文第:章数据加密标准DES密码算法我们假定S盒的6个输入端为61626364良玩,在S表中找出6J66行,626364良列的元素,该元素就是S盒的输出。例如S的输入为110010,则岛=1,66=o,b#o=(10):=2,b,b3bA=(1001):=9,由S,表可以查得S(2,9)=12,故S,的输出为(12)2=1100,依次类推可以查得别的输出。2.3DES安全性分析

DES算法的安全强度及脆弱性2.3.1

DES算法的设计目标是设计足够复杂的操作,使攻击者不可能找出明文和密文之间、密钥和密文之间的相互联系。DES综合运用了置换、代替等多种密码技术,在算法结构上采用迭代结构,便于实现,实现效率也高。DES使用了初始置换护和逆初始置换炉。|各一次,置换P16次。安排使用这二个置换的目的是把数据彻底打乱重排.。它们在密码学意义上作用不大,因为它们与密钥无关,置换关系固定,一旦公开后便无多大密码意义。选择置换E一方面把数据打乱重排,另一方面把32位输入扩展为48位。算法中除了选择函数组S是非线性变换外,其余变换均为线性变换,所以保密性的关键是选择函数组S。这个非线性变换的本质是数据压缩,它把6位输入压缩成4位输出。选择函数的输入中任意改变数位,其输出至少变化2位。因为算法中使用了16次迭代,从而使得即使是改变明文或者密钥中的1位,密文都会发牛约32位的变化,大大提高了保密性。DES的子密钥产生与使用上也很有特色,它确保了原密钥中各位的使用次数基本上相等。实验表明,即使明文之间只有一个比特的差别,加密后的密文变化却非常大而且是随机的。经过多年的研究和应用,人们认为DES算法的保密性良好,而且由于可以用硬件实现,其效率也比较高。由于DES算法是公开的,因此其安全性完全取决于密钥本身。同时,人们在研究中也发现了若干DES算法的弱点,但这些弱点尚未严重削弱DES算法的有效性。对于DES的脆弱性,通常有以下观点:

(1)弱密钥和半弱密钥

在DES算法中,如果16次循环中每次使用的子密钥要都相同的话,将会削弱它的加密强度。在这种情况下,加密和解密运算不存在差别,也就是说加密操作等效于解密操作。具有上述特征的密钥我们称为弱密钥。另外,还有一些加密密钥具有类似的特征,它们是成对出王见的,在每一对这样的加密密码中,子密钥相同,而且是倒序的。因此,用其中一个加密密钥进行运算,然后再用另外一个加密密钥对上述加密运算的结果进行加密,就能恢复出明文。

南京邮电大学硕士研究生论文第二章数据加密标准DES密码算法这种密钥我们称为半弱密钥。

在DES中存在着这样一些脆弱的密钥,因此我们应该避免选择这些密钥。在DES中,存在着4个弱密钥和12个半弱密钥。因为它的数量小,在选择密钥时可以有意识的避免。真正对DES算法构成威胁的是差分密码分析与线性密码分析。

(2)DES算法采用64bit的固定分组,这种短组模式不利于有一定长度的明文块加密,由于可能造成密文信息的重复组块,从而有利于攻击者采用统计方法来破译。

(3)在DES算法的设计过程中将一个实际上56bit的密钥分解成16个48bit子密钥序列,每个了密钥在一次迭代或循环运算过程中只作为48bit的参数参加一次模2加法,这种机制功能有限,且过于简单,大大降低了密钥参与运算结果的控制性和有效性。

(4)迄今为止,DES算法中的.5,盒8个选择函数矩阵的设计原理因美国政府方面的干预,不予公布。从这一方面严格地讲DES算法并不是一个真正的公开加密算法。S盒设计中利用了重复因了,致使加密或解密变换的密钥具有多值性,造成使用DES合法用户的不安全性。而且,在DES/Jn密算法的所有部件中,S盒是唯一的具有差分扩散功能的部件(相对于逐位异或),其它都是简单的位置交换,添加或删减等功能,毫无差分扩散能力。这样,DES的安全性几乎全部依赖于S盒,攻击者只要集中力量对付S盒就行了。

(5)密钥的长度人们普遍认为DES算法的密钥不够长。随着计算机技术的飞速发展,攻击者的破译能力也日益增强,用户实际使用的密钥长度为56bit,理论上最大加密强度为256,将难以抵抗穷举攻击。因此,有必要增加算法的密钥长度。

2.3.2DES的变形--3DES

对称加密算法DES的加密速度相当快,但是其密钥长度相对太短,只有56bit。随着计算机技术的飞速发展,这么短的密钥已经不再安全。因此,密码学家对其进行了改进。

3DES是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:在加密信息时,先对明文P使用密钥毛进行DES加密,随后使用密钥k,对加密的结果进行解密,接着再对解密后的结果使用缸进行第二次加密,最终得到我们所需的结果密文C。在此使用了三个密钥,把密钥长度变为原来的二倍。设E()和皿()代表DES算法的加密和解密过程,3DES加密过程可表示为:

C=巨,(俄.(毛.(P)));14

}{!i京邮电人。学硕十研究生论文第’:章数据加密标准DES密码算法

其加密过程如图2.4所示。

文C明

图2.43DES加密流程图

接下来我们来分析一下3DES算法的解密过程,如图2.5所示。其解密过程与加密过程恰恰相反,首先对密文C使用密钥1,3进行解密,随后对解密结果使用密钥岛进行加密,接着对加密结果使用密钥k。进行第二次解密,最终解密出明文P。3DES解密过程为:

P=B.(气(q,(c)))。

密文P

图2.53DES解密流程图

K.,足:,坞决定了算法的安全性,若三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密,在对付强力攻击时是比较安全的。若数据对安全性要求不那么高,令K,=K3。在这种情况下,密钥的有效长度为l12位。在本文实现的混合加密系统中,采用的就是ll2位密钥的3DES。

2.4本章小结

本章主要针对基于对称密码体制的数据加密标准DES进行了探讨。DES是一个分组加密算法(即将数据分块),它用56位的密钥对64位分组对数据加密,其算法具有相当高的复杂性,而且密码体制的安全性不依赖于算法的保密,其安全性仅以加密密钥的保密为基础。同时在此基础上,针对其密钥太短的缺点,研究了它的一种变形3DES算法。DES算法运算速度快,实现简单,作为非机要文件的加密,仍不失为一种好的方案。

南京邮电入学硕十研究生论文第二章椭圆l井}线公钥密码体制

第三章椭圆曲线公钥密码体制

本章的目的在于阐明现代公钥密码体制的基本原理,主要探讨目前最流行的公钥密码算法:椭圆曲线加密算法。椭圆曲线加密是本文重点研究的加密方法。本章对有限域,有限域上椭圆曲线的定义,以及有限域上的加法定义,进行了非常详细的阐述,并在此基础上,给出了椭圆曲线公钥密码体制的基本原理,包括椭圆曲线密码体制的域参数,椭圆曲线公钥密码体制加解密过程,以及椭圆曲线密码体制的数字签名算法等。

3.1引言

椭圆曲线公钥密{i-q(ellipticcurvescryptography,ECC)最早于1985年由Miller[10】和Koblitz【…分别独立地提出。它是利用有限域上椭圆曲线的有限点群代替基于离散对数问题密码体制中的有限循环群所得到的一类密码体制。与RSA密码系统相比,椭圆曲线密码体制有着巨大的安全性和技术优势。利用椭圆曲线建立密码体制具有两大潜在的优点:一是有取之不尽的椭圆曲线可用于构造椭圆曲线有限点群:二是不存在计算椭圆曲线有限点群的离散对数问题的亚指数算法。因此椭圆曲线密码系统被认为是下一代最通用的公钥密码系统。安全的电予商务协议SET(SecureElectroincTransactions)的制定者已经把椭圆曲线密码体制作为下一代SET协议中默认的公钥密码算法,几个国际标准化组织也把椭圆曲线密码体制作为新的信息安全标准。我国也已经将椭圆曲线密码体制作为“十五”期间的重点研究课题。

3.2椭圆曲线密码体制的数学基础

有限域的运算和椭圆曲线上点的运算是ECC的数学基础。这里首先论述群和域的概念,然后介绍椭圆曲线的概念,对实数域、C上的椭圆曲线群及其基本运算进行定义。

3.2.1群论

定义3.1假定G是具有有限个或无限个元素的集合,在G的元素间给出了一个代数运算16

南京邮电人学硕十研究生论文第二章椭圆曲线公钥密码体制幸(加、乘或其它运算),使得

(1)封闭性,即:对任意的n,b∈G,有a堆b∈G;

(2)结合律,即:对任何口,b,C∈G,有a木6牛c=(a?6)木c=a奉(6唯c);

(3)单位元,即:存在一个元素e∈G(称为单位元),对任意元素a∈G,有口幸e=e半日=a;(4)逆元,即:对任意a∈G,存在一个元素a一∈G(称为逆元),使得

a幸a~=a—I幸口=e:

把满足上面性质的代数系统称为群,记作(G,奉)。

定义3.2如果群(G,幸>满足交换律,即对任何以,b∈G,有a幸6=b*a,则称G为交换群(或Abel群、加法群等)。

群具有以下性质【‘2l:

(1)群中的单位元是惟一的:

(2)消去律成立,即对任意的口,b,c∈G,如果a幸b=a,IC,则b=C,如果b木a=c,#a,则b=c:

(3)群中的每一元素其逆元是惟一的。

定义3.3群的阶,用IGl来表示,表示群中元素的个数。元素个数为无限的叫做无限群,元素个数为有限的叫做有限群。

群的一些例子【12】【13J:

(1)所有正有理数集对于乘法形成一个群。

(2)所有整数集对于加法形成一个Abel群。

(3)有理数系Q对加法构成群,它是无限群。

(4)实数系尺对加法构成群,它是无限群。

定义3.4对于任意一个元素g∈G,满足97=e的最小的正整数,,称为元素g的阶用l表示。g

3.2.2有限域理论

定义3.5域是一个代数系统,它由一个(至少包含两个元素的)非空集合F组成,在集合F上定义有两个二元运算:加法(用符号+表示)与乘法(用符号木表示,有时可以将a幸6简写为幻),并满足下面条件:

南京邮电人学硕十研究生论文第二章椭圆曲线公钥密码体制

(1)F的元素关于加法“+”成交换群,记其单位元为“0”(称为域的零元);

(2)F\{0}关于乘法“掌,,成交换群,记其单位元为“1”(仍然称其为域的单位元);

(3)乘法在加法上满足分配律,即:对任意的口,b,c∈F,

a牛(6+C)=t't宰b+口幸C

(口+6)丰C=a幸c+6幸c;

把满足上面性质的代数系统称为域F,并记为<,,+,幸)。

域的几个例掣13】:

(1)定义了普通的加法与乘法运算的复数集合。

(2)定义了普通的加法与乘法运算的实数集合。

(3)定义了普通的加法与乘法运算的有理数集合。

定义3.6如果集合F只包含有有限个元素,则称这时的域F为有限域,也称为伽罗华域或Galois域。

定义3.7域F的阶就是域F中的元素个数。

定义3.8有限域的特征值用char(F)来表示,它是一个最小的正整数/,使得

1+1+…+l=0(/次)‘

定义3.9任何阶为素数的整数次方的有限域都是唯一存在的。这些域可以用GF(p”)来表示,这里P是L个素数,m为正整数。在加密系统,通常采用两种类型的有限域,它们是素数有限域和二进制有限域,下面分别介绍这两种有限域。

一、素数有限域

当m=1,P是一个>3的素数时,称有限域为素数有限域。

有限域的特征值可以用char(F)=P>3来表示。

e={O,1,2,…,p-l},,在素数有限域上的加法运算和乘法运算都是对P取模的。加密时所采用的素数P应该足够的大,使得在有限域C上,ECDLP(椭圆曲线离散对数问题)是不可能解决的。随着对ECDLP攻击的新理论和方法的产生,P值只能变得越来越大fH】。

二、二进制有限域

当P=2,m为正整数时,称有限域为二进制有限域。

二进制有限域C。或GF(2”)的特征值可以用char(GF(2…))=2来表示;可以把二进制有限域f。当成是在E上的m维向量空间。二进制有限域上的元素需要通过某种基来表示。

南京邮电人2≯硕十研究,上论文第三章椭圆曲线公钥密码体制3.3椭圆曲线基本概念

3.3.1Weiserstras方程

设K为一个域,K表不K的代数闭域。K上的Weiserstras方程

y2Z+aIXYZ+n3YZ2=X3+口2.r2Z+a4XZ2+口623(3一1)

(q,a:,口,,a。,a。∈K)决定射影平面P(更)上的一条曲线E,即适合上述方程的所有点(Ⅳ,】,,Z)的集合。当该曲线非奇异【15】时,我们称它为定义在K上的椭圆曲线,以E/K表示。将方程(3.1)改写成形如F(X,y,Z)=0,E为非奇异是指E上不存在奇点,即E上不存在使得B(X,y,Z),6(x,Y,Z),G(x,Y,Z)同时为零的点。可以证明E是一条椭圆曲线,当且仅当判别式4≠0,其中

么=a?+4a2,64=2a4+qa3,66=口;+4‰

68=口;‰+4a2a6一qa3a4+口2%2一%2

c4=酲-24b4,c6=b;+36b2b4-216b6

A=一砖6B-86,3-27b;+962b4b6,

E上有唯一的点(O,l,0)具有坐标Z=0,称该点为无穷远点,记为O。当Z≠0时,令X=X/Z,Y=Y/Z,则方程(3—1)变为:

Y2+alxy+口3Y2x3+口2x2+a4X+a6(3—2)

椭圆曲线E由方N(3.2)所有的解(x,y)及无穷远点O组成。将方程(3—2)改写成形如F(x,y)=0,E上不存在使得只(石,y),E(五y)同时为零的点。E上的每个点(无穷远点除外)都有射影^脸标(X,】,,Z)和仿射坐标(工,y)两种表示方式。今后论述椭圆曲线将主要使用(3—2)的形式。3.3.2椭圆曲线上的加法

运算法则:任意取椭圆曲线E_kNAP,O(若尸,Q两点重合,则做P点的切线)做直线交于椭圆曲线的另一点R‘,将连接尺’与无穷远点0的直线与E的第二个交点记为R,我们规定P+Q=R’,如下图3-1所示:19

I丰i京邮电人。≯硕十研究,上论文

第二章椭Ⅲ曲线公乞日密码体制

…f强

。l‘

j‘i.n势/。6j/。

∥夕‘

1j。1.

l,

l。

:/

:/

:/

y2=x3-x厂、

t5

\訾

一7气。一k

/:

f:

J:.

\;

j—i.5由-6.j

y2=x3-x\彳

一l‘一1.j‘

D6.5I:r¨5

jj

。1.j‘

jj{

:\

?

/j

a)P,Q两点不重合(点加)b)尸,Q两点重合(倍点)

图3.1椭圆曲线上定义的加法

定理3.1运算+具有下述性质【16J:

(1)若直线£与E相交于P,Q,R三点,则P+Q+R=O;(2)对任意P∈E,

O+P=P+O=P;

(3)对任意P∈E,存在E上一点,表示为一尸,使得尸+(一P)=O,称一P为尸的逆元;换句话说,运算+使得E成为一个交换群,零元就是无穷远点O,称为定义在域K上的椭圆曲线群。

由定理3.1可以推导出E的加法运算表达式.设定义E的方程为

f(x,y)=Y2+qxy+a3y-x3一口2戈2

a)设P=(x,Y)∈E,贝0一尸=(x,-y-aIx-a3)

C14X--a6=0,

(3—3)

b)设P≠O,Q≠O,Q≠-p,P=(五,乃),Q=(屯,款),定义P+Q=R=(x3,儿),如果P≠Q,我们称之为点加运算,则

X3

2五2+口l彳一口2一Xl—X2,

Y3=力(zI-x3)-yI一口I玛一码,

(3—4)

兄:丝二丝

而一为

如果P=Q,我们称为倍点运算,则

五:!兰!!±三12兰!±!!二!!羔!。

(3—5)

2M+qXl+口3

20

南京邮电人学硕士研究生论文第三章椭网曲线公钥密码体制3.3.3有限域上的椭圆曲线

前面的椭圆曲线是定义在实数域上的,实数是连续的,所以椭圆曲线也是连续的。fu.对于计算机而言,“连续”是虚无飘渺的,并不适合用于加密;所以,我们必须把椭圆曲线变成离散的点。因此,我们要把椭圆曲线定义在有限域上【"】。在实际应用中,我们一般有两种选择:1.C=Z,={o,1,2,…,p-l},其中P为大素数,即特征P的有限域;2.只.,即特征2的有限域。前者适合于软件实现,而后者适合于硬件实现。本文丰要讨论素数域上的椭圆曲线。

素数域C上椭圆曲线方程总是可以转化为如下形式:

Y2=x3+积+6,其中口,beF。(3-6)

曲线非奇异当且仅当△=-16(4a3+27b2)≠0(modp),C上的椭圆曲线我们记为E(C),E(E)的单位元是无穷远点O。

例如,讨论椭圆曲线E:Y2=x3+z+1,在有限域E,上?共有28个离散的点,包括无穷远点在内,具体的每个点为:

{(0,1),(0,22),(1,16),(3,10),(3,13),(4,0),(5,4),(5,19),(6,4),(6,19),(7,11),

(7,12),(9,7),(9,16),(1l,3),(11,20),(12,4),(12,19),(13,7),(13,16),(17,3),

(17,20),(18,3),(18,20),(19,5),(19,18),O}。

3.4椭圆曲线加密算法设计原理

3.4.1椭圆曲线离散对数问题

我们知道椭圆曲线上所有的点外加一个叫做无穷远点的特殊点构成的集合连同一个定义的加法运算构成一个Abel群。在此基础上同时也定义了它的点乘操作:它定义为点的重复相加’

kP=P+P+…+P=Q(k次)

在上式中,己知k和点P求点Q比较容易,反之己知点Q和点P求k却是相当网难的,这个问题称为椭圆曲线上点群的离散对数问题ECDLP。椭圆曲线密码体制正是利用这个网难问题设计而来【181。2l

出京邮电人学硕十研究生论文第二章椭嘣曲线公钥密码体制3.4。2椭圆曲线的域参数

定义3.10在有限域上椭圆曲线上所有点的个数,包括无穷远点,定义为椭圆曲线的阶,记作存E(C)。

撑E(C)的精确值计算起来比较困难,不过Hasse定理指出它满足如下不等式:

p+l-2√p≤≠}E(C)≤p+l+2√p(3—7)

上面的公式只给出了椭圆曲线阶数计算的估计公式,对于它的具体计算公式,不同的椭圆曲线,不同的有限域是不同的,并且计算比较麻烦。具体可以参见参考文献[19]。NIST标准‘201中对于每个给出的椭圆曲线也给出了相应的阶数。

定义3.11

点尸的阶。

若胛不存在,就说P是无限阶的。事实上,在有限域上定义的椭圆曲线上所有的点的阶刀都是存在的。当丹为椭圆曲线上点的阶时,nP=0,所以为了保证kP≠0,在加密算法中选择的私钥k必须小于基点P的阶刀。NIST标准【201中对于每个给出的基点也给出了相应的阶数。

椭圆曲线密码体制的实现由椭圆曲线的域参数决定,这些参数包括椭圆曲线的基域、曲线方程、曲线的基点和基点的阶等。椭圆曲线域参数是公开的,且由通信双方共享。如果椭圆曲线上一点P存在最小的正整数1"7,使得数乘nP=0,则将门称为

域C上的椭圆曲线域参数指定了椭圆曲线E(C)和E(C)上的基点P(xP,托),它是一个六元数组:

D=(P,口,b,尸,,2,h)

(1)特征为P的有限域C:

(2)参数口和b,定义F上的椭圆曲线E,即夕2=,+锻+6(p>3):

(3)作为基点的阶为厅的椭圆曲线上的点P:

(4)余因.了h,等于椭圆曲线的阶除以,2而得到的因子;最}Jh=#E(Fp)In。

因为与安全性关系最大的参数是行,故ECC密钥的长度就定义为n的二进制位数。

3.4.3ECC加密/解密过程作为一个公钥加密系统,椭圆曲线加密系统也具有公钥加密系统的所有特点。公钥加密

南京邮电人学硕士研究生论文第三章椭圆曲线公钥密码体制系统的加密双方都需要两个密钥:公开的公钥与保密的私钥。每一方的公钥都是通过自己的私钥得到的,加密明文的时候都要用到对方的公钥,解密密文的时候使用自己的私钥。每一个用户A使用ECC建立加密系统时必须以下几步操作…[22】:

1)选择椭圆曲线域参数。以有限域C上的椭圆曲线E(Fp)为例,先选定了域参数D=(P,以,b,P,,2,五);

2)随机选取整数d一∈[1,,l一1];

3)计算点Q=dAP;

4)公开Q作为公钥;

5)保留d。作为私钥。

?这样就产牛用户A的密钥对(九,g)。假设现在有一用户B发送信息M给用户A,B的加

密过程如下:

1)查找A的公钥Q;

2)将信息M表示为一个域元素臃∈C:

3)随机选取一个整数k∈(1,,z一1】;

4)计算点(五,乃)=kP:

’5)计算点(恐,Y:)=蛾,若恐=0,则回到第3步;

6)计算c=m?工2;

7)将已加密数据(而,Y。,c)发送给A。

而A收到密文(X1Y。,c)后的解密过程如下:

I)A使用自己的私钥d。,计算点(z:,Y:)=丸(五,Y。),得出z:∈C,因为

(x2,Y2)=dA(xl,YI)=d一?七P=k?(dAP)=七Q_;

2)计算m=C-工2~,得出信息M。

在这加/解密过程中,如果有一个偷窥者H,他只能看到Q,P,(^,Y。),而通过巴,P求d。或通过(五,Y,),G求k都是相对困难的。因此,H无法得到彳,召之间传送的明文信息。3.4.4椭圆曲线数字签名算法(ECDSA)数字签名的思想由Diffie和Hellman于1976年提出。数字签名对应于手写签名的数字

南京邮电人学硕十研究生论文第二章椭嘲曲线公钥密码体制版本,可用来提供数据源认证、数据完整性和不可否认性。通常由可信任的认证中心使用数字签名来签署将通信实体和其公钥相绑定的证书。

ECDSA(E1lipticCurveDigitalSignatureAlgorithm)是数字签名算法在椭圆曲线上的对等表示,由ScottVanstone于1992年提出的,1998年ISO采用了这一算法,1999年NIST承认其为ANSI标准(ANSIX9.62),2000年IEEE标准(IEEE1363—2000)和FIPS(FIPS186—2)也承认该算法瞄31。

ECDSA是类似于DSA(DigitalSignatureAlgorithm)的一种基于椭圆曲线的数字签字算法,分为签名的生成与验证两部分。首先将待签名的消息用Hash函数变换到一个固定长度的消息摘要,然后对该摘要进行签名,而签名验证要用到签名和原始消息。首先利用参数组牛成算法随机牛成一参数组D=(p,口,b,P,n,h)来唯一确定一条椭圆曲线,随机选择~整数d,且d在区间【l,咒一1]内,计算O=dP(P为椭圆曲线E(C)上具有素数阶门的基点),将d作为私钥,Q为公钥。将D=(P,口,b,P,n,h),Hash函数日,Q公开,d保密。

签名牛成:

签名者AN用上面的参数及公私钥对如下对一消息肌进行签名:

1.随机或伪随机地选择一个整数k,且1≤k≤打一1;

2.计算kP=(‘,Y1),,.=x,modn,如果,.F0,则返回到1:

3.计算k-'mod,z:

4.计算e=S(m)mod,z:?

5.计算:s=k一阽+dr)rood以,如果S=0,则返回到1。

6.用户A传送消息m和它的签名(,.,s)给用户B。

签名验证:

验证者B如下验证(,.,s)是A对消息m的签名:

1.验证(,_,s)是[1,n一1】中的整数,若有一个不是,则拒绝签名:

2.计算e=H(mlmod,z:

3.计算W=S叫modn:

4.计算“l=ewrood,l,“2=rwrood聆:

5.计算(五,M)----UIP+u2Q,NJE,fYLN五roodn----F时,A对信息朋的签名被B认可。24

南京邮电大学硕十研究生论文第三章椭圆曲线公钥密码体制3.5ECC的性能分析

3.5.1椭圆曲线加密算法ECC的安全性

椭圆曲线加密算法的安全性取决于由椭圆曲线定义的群上的离散对数问题的难度,即由公钥Q=护求出私钥k的数学困难问题。一般认为,椭圆曲线上的离散对数问题是比大整数因式分解和有限域上离散对数更困难的问题。基于模运算的整数因式分解问题和离散对数问题都存在亚指数时间复杂度的通用算法,而解ECDLP最有效的算法只有指数时间算法。因此,ECDLP较另两类问题更为难解。人们研究椭圆曲线已经有一百多年的历史,对椭圆曲线加密算法的深入研究也有近二十年的历史。但对如何破解椭圆曲线密码算法没有显著的进展。所有的研究成果都表明:椭圆曲线加密算法是安全的。

到目前为止,计算椭圆曲线离散对数的最好方法是Pollardrho方法【241,它是指数时间算法,需要√丌,z/2(刀是有限群的阶)次椭圆曲线加法。1993年PaulVanOorschot并WMichaelWiener提出了基于Pollardrho方法的并行算法。假如有,.个处理器并行解一个ECDLP,每个处理器需执行√万,z/2/r次加法。

我们假设1MIPS机器每秒能执行4×104次椭圆曲线加法,一台IMIPS计算机一年能执行的椭圆曲线加法次数为:

(4x104x(60x60x24x365)≈240

类似的,如1万台运算速度达到1000MIPS的计算机并行处理,当n≈2160解ECDLP要花6000年。由此可见,在现有的求解方法和计算能力的条件下,求解ECDLP是计算上不可能的,由此可以确保ECC的安全性。

3.5.2椭圆曲线加密算法ECC的优点

ECC的优点主要体现在以下几个方面:

1)安全性能更高

加密算法的安全性能一般通过该算法的抗攻击强度来反映。ECCSLJ其他几种公钥系统相比其抗攻击性具有绝对的优势。如160位ECC与1024位RSA,DSA有相同的安全强度,而210位ECC贝JJ与2048bitRSADSA具有相同的安全强度。

南京邮电大学硕士研究生论文第三章椭圆曲线公钥密码体制

在取得相同级别的安全下,ECC需要的密钥长度比RSA低,如表3-1担剐所示:

RSA和ECC密钥长度比所需工作量MIPS年RSA/DSA密钥长度ECC密钥长度

5127681024204821000

106132160210600

5:6:7:10:

111

104108

10¨10

20

35:l

表3一lECC与RSA/DSA抗攻击性能比较

10

78

2)计算量小处理速度快

虽然在RSA中可以通过选取较小的公钥的方法提高公钥处理速度,即提高加密和签名验证的速度,使其在加密和签名验证速度上与ECC有可比性,但在私钥的处理速度上解密和签名ECC远比RSA和DSA快得多,因此ECC总的速度比RSA以及DSA要快得多。

3)存储空间占用小

ECC的密钥尺寸和系统参数与RSA/DSA相比要小得多,意味着它所占的存储空间要小得多,这对于加密算法在IC卡上的应用以及无线局域网上的应用具有特别重要的意义。

4)带宽要求低

当对较长消息进行加解密时三类密码系统有相同的带宽要求但应用于短消息时ECC带宽要求却低得多,而公钥加密系统多用于短消息,例如用于数字签名和用于对对称系统的会话密钥传递。带宽要求低使ECC在无线网络领域具有广泛的应用前景。

3.6本章小节

本章辛要研究了椭圆曲线密码算法ECC的相关理论。首先介绍ECC的数学基础有限域的概念以及椭圆曲线相关理论,并对它们上面的运算进行了定义。通过引入无穷点的定义,把椭圆曲线上的点和无穷点结合起来,使其构成椭圆曲线群。在这个群上,基于ECDLP这一数学难题,相继介绍了ECC算法包括公钥加密、私钥解密、数字签名、签名验证,同时对ECC算法的安全性以及优点作了探讨。

26

l钉京邮电人学硕十研究尘论文第四章椭恻曲线密码算法丈现及改进

第四章椭圆曲线密码算法实现及改进

上一章中对椭圆曲线加密算法的结构特点做了一个简单的介绍,从介绍中可以看到,这里用户A产生公钥的过程,用户B加密明文的过程以及用户A解密密文的过程的运算都是基于椭圆曲线上的点构成的Abel群上的运算,是椭圆曲线上的点加与点乘。根据椭圆曲线上的点构成的Abel群的运算特点,点乘运算需要转化成点加运算来实现,当椭圆曲线上的点重合的时候点加运算就变成了倍点运算,所以实际上需要的是点加、点乘与倍点运算。而椭圆曲线上的点加、点乘与倍点运算则必须转换成有限域上的运算来实现,需要转化为有限域上的模加、模乘与模逆来实现。所以椭圆曲线加密算法的底层运算为:模加、模乘与模逆。它们的上层运算为:点加、点乘与倍点。本章在研究了素数域E上相关底层运算的基础上,重点研究其上层运算,特别是点乘运算的实现,并且在已有算法的基础上,进行了一些分析及改进(具体见4.3.3,4.3.5小节)。

4.1素数域上相关基本运算的实现

素数域C上的元素是位于[O,P一1]上的大整数,大都为几百位的二进制数,而编程语言中提供的各种标准数据类型中,整型数所能表示的最大的正整数也只有232一l,远远不能满足其要求,因此本文中我们用f个32位的字(Word)来存储一个域元素,即采用Word的数组来存储大整数。比如E,:中的域元素可以用6个Word表示。有限域上的运算实质上是多字运算,

t-!

即假设数组为讲胡=(a,..,口H,…,‰),大整数Ⅳ表示为:N=∑口/木23川。

/=0

4.1.1模加/减运算

实现C的加减法,,首先将两个操作数按低位对齐,然后从右到左对Word数组中的每一个元素进行带进/借位的加减法运算。具体算法如下:

算法4.1(模P上的加法)27

南京邮电大学硕士研究生论文第四章椭暾I曲线密码算法殳王见及改进

输入:模P,整数a,b∈[O,P一1]。

输出:C=(a+b)modP

(1),.卜O,temp卜0,其中,.表示进位;

(2)Forifrom0uptot-Ido

temp4r-乜【门+优妇+,.;

c[力卜temp&OxFFFFFFFF;

,卜temp>>32;

i卜i+1:

(3)c嘲卜,.;

(4)c卜cmodp;

(5)返回C。

算法4.2(模P上的减法)

输入:模P,整数a,6∈[O,P一1],假设a>b。

输出:c=(a-b)modp

(1),.卜0,temp卜0,其中,.表示借位;

(2)Forifrom0uptot一1do

temp卜a[i]-b[i卜,.;

Iftemp<Q,temp七_QxFFFFFFFF七temp.r七一k

c[力卜temp;

(3)C卜cmodp;

(4)返回c。

4.1.2模乘运算

乘法运算的思想仍然是按位相乘,即用一个数组的每一位逐个去乘另外一个数组,然后将每一位相乘的结果移位相加【26】。

算法4.3(模P上的乘法)

输入:整数口,b∈[O,P一1]。输出:C=(口幸b)roodp

南京邮电大学硕士研究生论文第四章椭圆曲线密码算法实现及改进

upto(1)Forifrom0t一1do

厂卜0,temp卜1,

ForJfrom0uptot-1do

temp卜讲,]十6[卅;

temp卜temp+r:

d[j.\七一temp&QxFFFFFFFF;

,卜temp>>32;

/卜/+1;

这里得到的数d就是数b与a的一位相乘的结果;

(2)i卜f+1:

(3)然后将这次相乘得到的数与第一次的得到的数移位相加,以此类推,得到最终的结果c:

(4)c÷-cmodp;

(5)返回c。

4.1.3模逆运算

一般来说,在一个有限域中求倒数即一个元素的乘法逆是费时间的,一般采用欧几里德算法,又称辗转相除法,主要用于因数分解和求公因子。对于整数口,P,若口,P互质,利用欧几里德算法【27】可找出两个常数x,Y,

算法4.4(模P上的乘法逆算法)

输入:模P,整数a∈[O,P一1]。

输出:C=a—modPax+by=1,于是x是口模P的乘法逆,算法如下:

(1)令x1<---O,x2<---0,yl<---O,y2<---O;

(2)令g<---a/p,,卜amodp;

(3)while,.≠0

t<--x2,x2<--.-xl—q幸x2;

xl卜f,r卜y2,少2卜y1-q木y2;

J,1卜f,q卜a/p,,<---aroodp;(9)若x2<0,令z2<---x2+p;;

柯京邮电人’学硕十研究生论文第四章椭网曲线密码算法实现及改进

(5)输出x2,工2就是口模P的乘法逆。

4。1。4求模运算

通用的求模运算一般采用Barrett晗刚归约法,该算法虽然具有通用性,但效率不高,C上的对乘积求模算法的设计与素数P的选取密切相关,我们可以通过选择特殊的素数P来提高素数域C中模乘的速度,本文选择的素数P形如2‘±口(其中口是很小的整数)。有如下简单的求模算法:

算法4.5(大数求模算法)

输入:整数,。

输出:tmodP为不超过P的最小非负整数。

1)令j=f:

2)Whiles≥P,do

m=smod2‘;取S除以2‘的余数

,=s/2‘;

s=m-T-口木Z;求s除以2‘的商

3)输出s。

通常在实现中,k取为计算机字长的倍数。例如对192位的P来说,取k=192。而大整数在前面提到在计算机中的表示是采用2”(w是计算机的字长,一般为32摹64),即

t=to+f12”+f222”+…气一12‘‘一1’”-I-…,

在这种表示下,算法中第二步的计算就变为简单的移位运算,只需要截取相应的部分及可。从而大大的提高了模乘的效率。

4.2椭圆曲线上点加及倍点运算的实现

4.2.1素数域上的加法公式

在3.3.2节已经定义了椭圆曲线上点的加法,在实际计算中,椭圆曲线选择的坐标不同,会影响到椭圆曲线上点的加法的运算效率。有限域C中加法和减法运算的耗时相对于模乘和30

南京邮电人学硕十研究生论文第口q章椭阗曲线密码算法实现及改进模逆运算的耗时,是可以忽略不计的,因此我们在分析计算效率时,只考虑C中的模乘,模平方,模逆运算。

若曲线Y2=z3+纵+6上有两仿射坐标点P≠0,O≠0,O≠一P,P=(五,Y。),Q=(工2,Y:),,则其和P+Q=R=(x3,Y,),如果P≠O,则根据式(3—4)得到:

x3=五2一五一工2(modp),

Y3=五(五一‘)一yl(modP),

五:丝二筮.

X2一五

因此,在仿射挫标下,椭圆曲线上的点加运算做了2次模乘,1次模平方和1次模逆。

如果P=O,则倍点运算公式为:

毛=兄2-2xl(modp),

乃=五(‘一毛)一y,(roodP),

五:三生竺。

2yI

因此,在仿射坐标下,椭圆曲线上的倍点运算做了2次模乘,2次模平方和1次模逆。

可以看出,若用上述公式计算椭圆曲线上的点加和倍点运算,则每次点加都需一次C上的求逆运算,这是相当耗时的。因此在点加和倍点运算中应尽量避免使用求逆运算,而采用射影嫩标表示椭圆曲线上的点,这样所进行的点加和倍点运算将不涉及求逆运算。

4.2.2雅可比射影坐标系下的加法公式

我们引进雅可比(Jacobi)射影华标系㈣表示椭圆曲线上的点。椭圆曲线上的点用Jacobi娥标表示为(彳,j,,Z),它对应的仿射罐标为(工,Y),其中X=X/Z2,Y=Y/Z3,而(0,1,0)表示无穷远点。

在Jacobi坐标下,令工=X/Z2,Y=Y/Z3,则椭圆曲线方程Y2=X3+似+6化为

】,2:Z3+aXZ4+bZ6。

令P≠0,a≠0,Q≠一尸,尸=(x。,X,z1),O=(x2,K,1),P+Q=R=(x3,E,z3),如果P≠a,点加运算为:

南京邮电大学硕士研究生论文第四章椭圆曲线密码算法实现及改进

五=(巧刁一I)2一(置彳一墨)2(五十置zt),

匕=(Kz?一X)(一(x:Z12-X。)2一x,)一巧(五z?一x,)3,

z3=(、X2Z:一Xl、)ZI,

因此,在Jacobi坐标下,椭圆曲线上的点加运算做了8次模乘,3次模平方。

如果P=Q,则有下面的倍点的计算公式:

x3=(3x卜口z∥-8XlX2,

E=(3矸+口z14)(4置12-X,)-8r,4,

Z3=2Y,Z,,

因此,在Jacobi坐标下,椭圆曲线上的倍点运算做了4次模乘,6次模平方。再进一步分析,如果a=一3(modp),贝0

3研+aZ?=3Xt-3Z?=3(Xi—z?)(■+za

这样倍点的运算量可减少为4次模乘,4次模平方。因此我们假设椭圆曲线方程

Y2=工3+ax+6,a,b∈F。

中的n=-3(modp),即Y2=,-3x+b,b∈C

观察在Jacobi坐标系下的加法公式,可以看到虽然增加了模乘与模平方的运算次数,但是不需要每次计算时都要进行模逆运算,在软件的实现时间上还是大大得到了提高。

表4.1列出了在仿射坐标系和Jacobi坐标下计算点加及倍点转化为有限域上操作的次数。表中的M,S和,分别代表模乘,模平方和模逆。

点加运算倍点运算

仿射舷标系2M+1S+1,2』M+2S+l,

Jacobi也标系8M+3S4M七4s

表4.1仿射坐标系与Jacobi射影坐标系下点加及倍点的比较

4.3椭圆曲线上点乘运算的实现及改进

椭圆曲线加密的实质就是要实现椭圆曲线上的点乘操作。从椭圆曲线加密系统的步骤中可以看到,在计算公钥、加密明文、解密密文的时候都要用到椭圆曲线点乘。群的算法特点决定了要把椭圆曲线上的点乘运算转化成椭圆曲线上的点加运算和倍点运算来实王见。由于点乘运算是椭圆曲线中的主要运算,它的效率直接决定了系统的性能,因此设计椭圆曲线密码32

南京邮电人学硕十研究生论文第四章椭圆曲线密码算法实现及改进系统的关键就在于点乘的实现。

实现椭圆曲线上的点乘,可以按照定义对基点P自加k—1次,但是这种方法比较耗时,实际上并不采用,在这个方法的基础上,人们提出了各种各样的改进算法。目前基于点乘算法的快速实现方法主要有:二进制算法【30】、黝进制算法【311、滑动窗口算法【321以及NAF法【33】等。其中尤以二进制表示法的思想简单,也便于实现。

4.3.1二进制算法

点乘护的二进制算法思想:将k表示成二进制数形式(假设k的二进制表示有nbit):

月一l

k=∑12J)kj∈{o,1),即k=(吒.1,k盹,…,ko),其中kj∈{o,1),则

/=0

n—l

kP=(∑k,27)P=2[…2[2(2k.一lP+k。一2P)+吒一3尸】+…+毛P]+koP

算法4.6(点乘运算的二进制算法)

月一l(4—1)

输入:点P,二进制整数尼=∑k/2j,k,∈{o,1}。

/=o

输出:椭圆曲线I-_的AQ=kP。

1)令Q=P;

2)For_,fromn一2downto0do.

Q=2Q;

女口果kj=1,贝UQ=Q+P;

3)输出Q。

该算法中点加运算次数在于二进制表示中非零个数,倍点运算量由二进位数决定。如果k是随机选取的,k中每一位出现O,1的概率相同,则需要平均为n/2次的点加运算及n一1次倍点运算。二进制方法是计算护的经典算法,可适用于各种域上的椭圆曲线,但随着数据的不断增大,计算效率不高,运算代价也较大。

4.3.2改进的m进制算法设m=2’,r≥1,将k表示为m进制,即

南京邮电人学硕十研究生论文第口q章椭嘲曲线密码算法实现及改进

七:∑a-it聊/,l∈{o,l,…,,,z—l},其中厂(d一1)+1≤,z,即d≤旦±刍兰,则

kP=∑k/m’尸=m[..?m[m(mka—IP+kd一2P)+kd一3P]+…+毛P]+koP(4—2)

对于1≤i<2’,利用公式iP=(i-1)P+P预计算fP,然后用类似上面二进制的方法进行计算。二进制法实际上就是r=1的特殊情形。

算法‘4.7(点乘运算的m迸制算法)

输入:点P,二进制整数七=∑k』mj,k,∈{o,1,…,m-l}。

j=o

输出:椭圆曲线上的点Q=kP。

1)令鼻=P,Q=O;

2)Fori=2tom-1,预计算P=只一l+P;

3)For/fromd一1downto0do

Q=mQ;(做,次倍点运算)

Q=Q+气;

4)输出Q。

在该算法中;预计算需要做2’一2次点加运算,在主循环中最多要做(d一1)r≤(n-1)次倍

,.,.

改进的脚进制算法根据(4—2)式的基本计算

mQ+k.P=2’Q+k.,P(4—3)

的一种变形,将(4-3)式中的kj的2因子分离出来与27Q中的一部分一同计算,假设

乃=2'shj,/=o,1,…,d一1,s,<,.,hj≤m一1,且乃为奇数,

则(4。3)式可表示为:

mQ+k』P=27Q+257勺尸=25’(2’。Q+hiP)(4_4)由于hj为奇数,这样可以减少预计算阶段的计算量。首先计算2P,然后利用递归公式点运算,∥-1(W为t中非零的个数)次点加运算。我们假设对任意的0≤/≤d一1,都有ks≠0,这样算法最多需要做d—l+2,一2≤旦竺兰+2,一3:型+2,一2次点加运算,凡一1次倍点运算,那么适当选择尸的大小,可以减少点加运算。

南京邮电大学硕士研究生论文第四章椭圆曲线密码算法实现及改进(2f+1)P=(2i一1)P+P计算出3P,5P,…,(聊一1)P的值。下面是改进的m进制算法:

算法4.8(点乘运算改进的忉进制算法)

输入:点P,二进制整数忌=∑尼/川。,l∈{o,1,…,m一1}。

输出:椭圆曲线上的点Q=—妒。

1)令曰=尸,只=2P,Q=O;

2)For㈦t。孚预计算‰,=糸。峨

3)ForJ

Iffromd-1downto0dol≠0,thendo

Letl=2“hj,hj为奇数

Q=2’57Q;Q=Q+只.;Q=257Q;

ElseQ=mQ;

4)输出Q。

在该算法中,预计算需要做2’1—1次点加运算和1次倍点运算,在主循环中最多要做r/一1次倍点运算,d-1次点加运算。这样算法最多需要做d一1+2,-一一ls尘蔓+2,一-一1次点加运算,刀次倍点运算。

4.3.3本文改进的m进制算法

在素数域上椭圆曲线Y2=工3+似+6上的一点P=(石,y),它的逆元一尸=(z,-y),因此我们很容易由kP求出一kP,这样可以对(4.2)式中k,做如下变形:

kj=研一(聊一七/),(o≤l≤聊一1),

这样当七,<ra2m,巧P的值可直接通过预计算得到;而当乃>詈时,则有m~l<詈,有

尼,尸=(m--(m一乃))P=m尸+(一(m—1))尸,聊尸,(聊一七/)尸的值也可预先算出。因此,在预计算阶段,只需计算2P,3P,…,(m/2)P,m尸,利用递推公式iP=(i-1)P+P和

南京邮电大学硕十研究生论文第四章椭嘲曲线密码算法实现及改进mP=2(罢),只需要进行(罢一1)次点加和1次倍点计算,减少了预处理的计算量和存储兰;三间。

我们将m进制算法的两种改进方案相结合,得到了本文改进的m进制算法。在新算法中预处理阶段只需计算2P,3P,5P,…,(罢一1)尸,m尸。首先计算2P,然后利用递归公式Z

(2i+1)P=(2i一1)P+P计算出3P,5P,…,(詈一1)尸的值,肌P可利用詈P=(等一1)P+P和二二‘

mP=2(;)尸计算,具体算法如下:Z

算法4.9(点乘运算本文改进的m进制算法)

d—l

输入:点尸,二进制整数七=∑屯埘J,kj∈{o'l’.1一,m-l}。

/=O

输出:椭圆曲线上的点Q=kP。

1)令只=尸,最=2P,Q=O;

2)Forf=2t。im,预计算最H=最l-s+P2;

3)乇-Iggm.2e=(im—1)P+P;mP=2(2)P

d一1downto0do4)For,from

Ifo<一sim,thendo

Letkj=2“hj,hj为奇数

Q=2’5’Q;Q=Q+Ph,;Q=257Q;

Ifp争en

Letd。m一乃=2。乃,哆为奇数

Q=2’57Q;Q=Q一最;Q=25’Q;Q=聊P+Q;

ElseIfk,=0,doQ=257Q;

5)输出Q。

在该算法中,预计算需要做竺4—2+1+1=2H次点加运算和2次倍点运算,在主循环中最多要做行一1次倍点运算。我们假设0sJ≤d一1,都有k;>m/2,则算法在最坏情况下所需的36

南京邮电人学硕十研究,上论文第四章椭蜊曲线密码算法艾王见及改进点加运算次数为2(d—1)≤2(尘土)。这样整个算法在最坏情况下最多需要做n+1次倍点运算以

,.

及2(旦兰)+2一次点加运算。

,.

m进制算法,改进的m进制算法与本文的改进的m进制算法相比较,由表4—2可见其预处理阶段的计算量和存储空间明显减小,其中A表示点加运算,D表示倍点运算。

采用的方法

m进制算法预处理阶段计算量(2’一2)A预处理存储量27—2总的计算量(最坏情况)(n-1+2r一2)A+(刀一1)D

,.

改进的m进制算法(2’1—1)A+D27一一1(n-1+2r~一l】A+玎D

,-

本文改进的m进制算法(2’2)A+2D27—2+1(2(盟)+2H)A+(n+1)D,

表4-2三种算法的计算量和存储量的比较

从表中还可以得知,本文的改进的朋进制算法相对于另两种算法来说,最坏情况下的总的计算量不是很理想,这是因为当k,>m/2时,计算尼,P的值时比一般情况下增加了一次点加计算,如果当ki≤聊/2时,此算法在正式计算阶段时的运算量与改进的m进制算法是一样的,而且算法在预处理阶段的计算量和存储量比聊进制算法,改迸的m迸制算法降低了大概1/2以及3/4左右,因此就整体而言,该算法的效率仍有明显改进,适用与无线网络和智能#等内存受限制的叫:境。

4.3.4滑动窗口法

在m进制法中,很显然每次都要处理,.个比特,如果将这r个比特看作是“窗口”,则m迸制法相当于“固定窗口法”,而“滑动窗口法”实际上可以看作是最高为,.宽的窗口由芹向右移动,如果窗口的比特值为零,就将窗121S(S≤r)个比特滑过去,直至遇到非零的k,才划分窗151,使每个窗151的最后一个比特均为l。它的优点在于可以跳过两个连续窗口间连续的0位直接倍点,使得预计算可以只计算窗151内奇数值,而且每次的窗口大小可以在ltg'r间变化,对于不同正整数二进制表示有一定的自适应功能,可以灵活应用窗口内的预计算数值。

算法4.10(点乘运算的滑动窗口法).37

南京邮电大学硕士研究生论文第四章椭圆曲线密码算法实现及改进

输入:点P,二进制整数七=∑_2J,t∈{o,1)。

j=o

输出:椭圆曲线上的点Q=kP。(最高窗口宽设为,.)

1)令日=尸,只=2P,Q=o,J=甩-1;

2)For江1

3)WhiIe

Ifto2’1-1,预计算£f+l=足H+只;doJ≥0kj=0,thenQ=2Q,J=/-1;

Elsedo

取最小的f满足.,一t+1≤,,且毛=1,(找到比特值不为零且宽不超过,.的最大窗口)

令矗』=(1尼川…毛):,(二进制表示)

tQ=2’“’Q+Ph,=一1;

4)输出Q。,J

在此算法中,预计算需要1次倍点运算和2’1一1次点加运算,在丰循环中,最多有n一1次倍点运算,以及平均为n/(r+1)一1次点加运算。所以,滑动窗口法需要做玎次倍点运算,,z/(r+1)+2’‘一2次点加运算。

4.3.5基于滑动窗口的新算法

在前面几节中我们介绍了实现椭圆曲线上点乘运算的三种算法:二进制表示法、m进制表示法以及滑动窗口算法,同时了解N-进制法就是特殊的m进制法,而m进制法其实就是一种固定的窗口法。本文的算法是基于滑动窗口法。

滑动窗口法实际上就是按照最高窗口宽厂来对k的二进制序列划分窗口的,它要使每个窗口的最后一个比特均为1.而两个窗口之间的连续的0作为窗口间隔,这样在预计算的时候,就可以只计算点的奇数倍,从而减少计算量。

我们的新算法是在滑动窗口法上进一步改进而成的。我们注意到在算法每次搜寻窗口的时候,都是由窗口的最大值,.开始向内缩小的,而在缩小的过程中如果遇到l则成功的找到了窗口,不再向内缩小。现在假定,|值取8,那么按照滑动窗口技术的特点则窗口缩小到4以下

1-.一1的概率为吉,以此类推,窗口,.的取值越大,则窗口缩小到iF以下的概率越小,为吉。

出京邮电人学硕十研究生论文第四幸椭劂曲线密码算法灾现及改进

另一方面,当窗口缩小到三以下时,通过分析由下图可以看出在下述情况发生的时候利用小窗口进行一次点加运算还不如继续寻找更大的窗口。

…11010000100…

图4.1足:跫、,:跫…11010000100…图4—2…11010000000100…图4-3

如上图4.1所示,当遇到型如11010000100的二进制序列时,若假定,.=8,则在寻找窗口时找到的窗口大小会缩小到4;如果直接进行一次倍点和点加运算,然后从下一位开始重新寻找窗口,则会找到窗口大小为8的~个大窗口,如图4.2。因此针对11010000100这一二进制串,如果按照图4.1来计算,则可以找到一个大小为4的窗口;如果按照图4.2来计算,则可以找到一个大小为8的窗口,一次点加的效率比图4_1有所提高,可以更加充分的利用预计算中的大窗口来加速点乘运算。

根据以上的分析,本文提出一种基于滑动窗口的新算法,其本质是在滑动窗口的基础上,引入一个窗口变量V=三,在每次寻找窗口时,窗口从,.开始向内缩小,缩小到二2时如果还没有找到合适的窗口则不再继续向内寻找,而是直接进行一次倍点和点加运算,从下一位开始寻找较大的窗口。但是当发生小窗口并且没有一次顺利找到大窗口时,如图4-3所示,也就是当没有找到大窗口而直接进行一次倍点和点加运算以后,从下一位仍然没有寻找到较大的窗口,。新算法会有一定的退化。虽然这种情况发生的概率很小,为尽量避免发生这种情况,我们在搜寻窗口时,还需要对最大窗口,.后面的那个字符进行判断,如果是0,表明右移一位后仍然无法找到大的窗口。这样就从ir继续向内寻找:如果是1,那就可以直接右移一位,可以找到大窗口。具体算法如下:

算法4.1l(点乘运算的基于滑动窗口的新算法)

输入:点P,二进制整数七=∑乃27,乃∈{o,1}。

j=o

输出:椭圆曲线上的点O=kP。(最高窗口宽设为,.)

1)令暑=P,只=2P,Q=O,J=n—l;

2)For

3)WhiI

Ifi=1to2’1-1,预计算昱J+l=只J-I+足;doe_,≥0kj=0,thenQ=2Q,J=J一1;39

南京邮电大学硕士研究生论文

ElSedO第四章椭圆曲线密码算法实现及改进

寻找一个最大的三<f≤,.,使得乃=(1l_I...k一+。):是奇数。若寻找窗口成

功,则Q=2fQ+Ph,J=j-t;

若寻找大窗151失败,我们查看kj一,的值,

Ifkj一,=O,寻找一个最大的,≤.,.,使得哆=(kjkj一。…kj小,):是奇数。

Q=ZQ+Ph,,J=j-t;(退回到滑动窗口法)

Ifkj一,=1,Q=2Q+P,J=j-l;(直接右移一位,做一次点加和倍点)

4)输出Q。

在新算法中,我们可以看到预计算需要1次倍点运算和2’1—1次点加运算,与滑动窗口法一样,在丰循环中,当出现小窗El且在右移后能够顺利找到大窗口时,这样整个的窗口数将会减小,从而减少点加的次数,并且搜寻窗口的时间也会减少,其它情况算法将会退化到滑动窗口法。另外当窗口,.逐渐增大时,由于出现小窗口的概率为昙,将会趋于0,新算法也将退化到滑动窗口法。所以选择合适的窗口大小也可有效提高新算法的性能。

下面我们通过实验来比较点乘运算新算法和滑动窗口算法的效率,实验中软件使用C++结合开源组织提供的大数运算库Mirael库,椭圆曲线采用的是取自NIST推荐的P.192素数域椭圆曲线Y2=,+似+6,具体地定义在曰,:上的椭圆曲线的域参数D=(p,a,b,只疗,Jjl)如下:

P=2192—2“-1,

基点P∽办其中=芸黑淼篙B6以43Acl淼嚣野口=-3,

b=64210519E59C80E70FA7E9AB72243049FEB8DEECCl468981

rl=0XFFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831.

h=l。

限于篇幅的原因,两种点乘算法的实现我们只给出本文的新算法,具体参见附录A;滑动窗口法可以参见Miracl库程序源代码,位于ecn.cpp中,我们将窗口大小从6取到14,以2为步长递增,每个窗121大小重复5次测试取平均值,实验结果见下表4.3:

}+J京邮电人中硕十研究尘论文第四章椭圆曲线密码算法实现及改进

,.=6

247.61

249.05,.=8242.54243.26,.=10窗口,.大小算法平均运行时间(ms)滑动窗口算法新算法,.=12230.46226.95,.=14225.57222.36236.89235.39

表4-3滑动窗口算法与新算法的实验比较结果

通过上表可以看出,随着窗口的增大,新算法的性能逐渐优于滑动窗口算法,当窗口为12时,新算法的运行速度与滑动窗口算法相比差距达到最大,而当继续增大窗口时,新算法与滑动窗口算法相比差距越来越小,这是由于出现小窗口的概率会越来越小,导致新算法会逐渐退化到滑动窗口法。

此外新算法与滑动窗口算法在实现结构上也有着一定的优势,由于引入了一个新的窗口变量v(在本文中将v固定为值三),所以新的算法可以通过控制v的取值进行算法实现上的变

化。若v取值为1,则新的算法退化为原来的滑动窗口算法:若v取值为,-,则算法变为,.进制算法。通过一个变量的引入,从而实现了灵活的结构,由于椭圆曲线密码体制是非常适合于嵌入式的应用的,所以算法结构的灵活性将提高算法应用上的灵活性。

4.4本章小节

本章首先对和椭圆曲线密码体制运算相关的素数域C上的运算进行了分析研究,分别介绍了模加,模减,模乘,模逆,求模等运算的相关算法;接着讨论了在两种坐标系下,椭圆曲线上点加及倍点运算的实现;最后重点研究了椭圆曲线上的点乘运算,以及它的几种现有算法,在此摹础上,给出了本文改进的m进制算法,同时在滑动窗口的基础上,提出了新的点乘算法。4l

南京邮电人学硕十研究生论文第五章基于ECC的混合加密系统的研究灾现

第五章基于ECC的混合加密系统的研究实现

随着对称密钥加密体制和非对称密钥加密体制的广泛应用,以及对这两种密钥加密体制的深入研究,人们逐渐对它们有了比较深刻的认识。对称密钥加密体制和非对称密钥加密体制都有其自身的优势,但同时也存在一些各自难以克服的问题。为了解决这些难题,在此基础上,人们提出了混合加密体制。本章主要阐述了混合加密的思想,并且结合这一思想,设计了基于3DES和ECC算法的混合加密系统,并对其性能作了全面分析。

5.1混合加密概述

前面我们分别对对称加密体制的代表DES和公钥加密体制的代表ECC进行了算法描述和理论研究,并总结了各自的特点。

首先,对称密码算法的加密密钥和解密密钥相同,加密速率高,在软件实现的时候,加密速率每秒可以达到几兆个字节,适合于大量信息的加密。但是对称密码体制在加密的时候,需要通信双方事先交换密钥,在这个过程中,要进行严格的保密,需要防止任何第三方发现或窃取密钥。在密钥管理方面,对称密码体制要求不同用户进行秘密通信应约定不同的密钥。这样,如果网络上用户较多,就会有很大数量的密钥;而大数量的密钥要解决存储问题也是比较的。因此对称密码体制在密码的交换、存储和使用等环节上存在着缺陷,密码容易泄漏,无法解决密钥问题,无法确保消息的不可否认,无法解决身份认证问题。

公钥算法相对于对称加密算法有许多优点,通信双方不需要事先交换密钥,保密性好,在密钥符理及分西己上有自己的优越性;另外公钥密码可以实现数字签名,保证传输信息的不可否认性。虽然公钥密钥加密技术保证的文件加密和传输可靠性,在密钥箭理等有着许多优越的地方,但它并不能完全取代前者。因为公钥密码是基于数字难题的,在加、解密运算时,在计算上的开销相对于对称加密来说是非常巨大的。特别是在消息明文较大的情况下,更显现出公钥算法的缺陷。目前已知的公钥加密算法的运算量都很大,加解密速度较慢,与对称加密算法在速度上有着显著的差距。因此,直接使用公钥密码加密大量的数据信息实王见网上传递,在现阶段是不现实和不成熟的。

鉴于以上分析,对于加密而言,我们可以将对称密码体制和公钥加密体制这两种加密体4.2

出京邮电人学硕十研究生论文第五章基于ECC的混合加密系统的研究实现制优点结合起来。这样,既可以发挥公钥密码体制安全性的优点以及在密钥管理方面及分配方面的优势,又可以利用对称密码体制的速度方面的优点。即通过公钥密码体制来传送对称密码体制的加密密钥,然后用传统密码体制对明文消息进行加密,来实现保密通信,从而构成了一种理想的密码方式。混合加密体制自从提出以后,在安全领域引起了强烈的反响,在这方面的研究也成了一个普遍关注的热点。

5.2基于ECC和3DES的混合加密系统

根据上节的讨论和描述,我们分别选取对称加密体制和公钥加密体制中最典型,应用最广泛的DES算法和ECC算法作为混合加密系统的实施算法。考虑到系统的安全性,我们采用了3DES算法,将密钥位数提高到112bit。具体地,该混合加密算法的加密和解密过程如下:

1)发送方对明文P使用DES算法的密钥K雎。进行加密。为保证密码体制的安全性及实现密钥管理的简单化,加密数据用的密钥%耵最好是只用1次;

2)发送方用接收方的ECC公钥砟∞丑对DES密钥如醪进行加密形成G;

3)发送方用自己的ECC私钥K砌对签名信息M加密形成C0;

4)发送方用DES密钥k器对明文P和密文巳加密,并加上巳形成密文C;

5)接收方使用自己的ECC私钥K舢对巳进行解密,取得DES算法的密钥KD£。;6)接收方用密钥K脚解密密文C,得到明文P;

7)接收方用发送方ECC公钥K尸Ⅲ由cM生成签名信息;

8)最后,发送方和接收方均销去密钥KD船。

该过程如图5.1所示:

这样,基于3DES算法和ECC算法的混和加密系统具有如下优点:

1)由于用ECC方式加密和传送用于数据通信的DES密钥,所以不需要通信前进行密钥的秘密发送:

2)密钥的保密管理与ECC方式情形相同,只对一个解密密钥进行保密管理就行了;

3)加、解密的处理速度大体上与DES方式相同,也就是说,用耗费时间的ECC方式处理的仅仅是DES的密钥。如果通信数据很长,利用ECC方式处理数据几乎是可以忽略不计;

4)由于利用ECC方式发送密钥,所以也可以利用它来进行数字签名。43

南京邮屯入学硕十研究,上论文第1i章基.丁.ECC的混合加甯系统的研究。爻现

发送方加密过程————————+≮一信i争——+噜———一接收方解需过稳——————一

图5.1基于3DES和ECC的混合加密系统加/解密过程

5.3混合加密系统的仿真实现

前面已说明混合加密系统的结构。下面主要讲述混合加密系统具体的实现仿真,丰要包括其实现平台、仿真环境及所需要的支持等。

1)仿真实现的目的

本系统仿真实现的目的是设计公钥加密算法ECC和对称加密算法3DES组成的混合加密系统,分析和测试其安全性能和效率。在测试中,主要是以不同大小的文件作为测试数据。

2)仿真实现的系统模块

本系统是基于WindowsxP平台,使用Microsoft

visual

C++6.0采用OPP(面向对象)方法

设计开发的,丰要包括以下几个模块:ECC密钥对生成和管理,ECC加懈密以及3DES对数

据加/解密,数字签名和验证。如图5.2所示:

广————]i主控模块i

一一一一‘‘…’~‘~…‘一’一一H’…一”——’—’…

一一‘

r一一

。_--—_-。?____。。’—-。。_’_??。一

一一一一一

验证签名

~I

’一。一

密钥管理一数字签名加密文件..解密文件。

密产生

密i’密存储

销毁

’吕

癍蕾

混一加密

;吕混

荤’霆萋

萋,塞

图5-2系统功能模块图

解密

!墨一u坐垒堂121堕塞兰堕兰

3)椭圆曲线参数的选择及算法库的支持墨皇芏堡王!!!塑堡鱼塑要至垫堕婴塞兰型

由于ECC算法比DES算法要复杂得多,实现起来也很困难,因此,我们用含有ECC算法的算法库来实现。现在流行的含有ECC算法的安全加密算法库有borzio.ECClib.c。ypt。什刚等,它们都实现了具有较高运行效率的ECC算法。本仿真实现中,采用crypco++作仿真的算法支持库,

Cz'ypto++实现了ECC算法,并为使用者提供了标准的c++sTL算法接口,其接口都是以IEEEStdl363—2000(IEEEStandardSpecificationsforPublic-Keyc‘yp协鲫hy)为标准的。而椭圆曲线我们仍然采用了NIST推荐的曲线t采用素数只。:作为有限域的阶,片。:是安全性年¨效率折中后的选择,并且由于参数已知而省去了曲线建立的代价,从而提高了混合密码系统的效率。

下面给出论文设计的基于ECC和3DES的混合加密系统的具体实现过程:

1)ECc密钥的牛成

如图5-3所不,用户点击“产生私钥”,系统调用库中的函数牛成一个随机数作为私钥,然后再点击“计算公钥”,系统将进行点乘计算得到公钥,公钥实际上是椭圆曲线上的个点,由相应的ty坐标组成,都显不为一个16进制的字符串。然后点击“保存”,将私钥以及产牛的公钥保存到磁盘上默认的文件中,虬便解密时使用。

目5-3ECC密钊的生成

2)用3DES算法对文件进行加/解密

如图5-4所不,用户在输入两个DES密钥后,点击“浏览”选择欲加密的明文文件.点击“加密”按钮,系统开始调用3DES算法对文件进行加密处理,加密后牛成的加密文件名为源文件名加上后缀名“des”。解密与加密相似。

mi“m^*M十研究±*Z*Ⅲt《fECC∞*自∞*§统∞Ⅲ宄*M

圈54文件N/解密

3)生成数字签名

如图55所示,选择用户后.系统从数据库中获得相应的私钥后,点击“浏览”从磁盘中选择欲签名的文件,点击“签名”,系统开始牛成签名,由于签名前利用安全散列函数(本系统选用MD5算法)将文件转换为128位的摘要,因此签名信息实际上是对摘要的加密,从而大大加快了签名的速度。

签名完成后,点击“保存”按钮将签名文件名以及产生的签名信息同时保存到数据库中,以便验证。

图55数字签名

4)签名验证

如图56所示,选择签名用户,同时从数据库中导八该用户签名的文件、公钥以及签名信息,点击“签名验证”后,系统进行签名认证。

第A¥≤fEcc∞%自加密系统的研R口现

髓5-6簦名验证

5)用ECC对DES密钥进行加密

如图57所示。选择发送方用户后,并输人发送方的DES密钥后,再选择接收方,从磁盘文件中导入接收方的公钥,点击“加密”按钮,系统开始调用椭圆曲线加密算法对发送方的DES密钥进行加密运算,计算后的密文显示在文本框中。然后点击“保存”将发送方的DES密钥信息保存到磁盘上的文件中,以便解密时使用。

图5—7密钥加密

6)对用ECC加密的密钥块进行解密

如图58所示,选择接收方用户,从磁盘文件中导出接收方的私钥,然后选择发送方获得DES密钥加密后的密文,点击“解密”按钮,系统调用解密算法对密文进行解密运算产生DES的两个密钥信息,可以看到解密后得到的数据与加密前的明文致。

凶。一6t训解世

南京邮电大学硕十研究生论文第五章基于ECC的混合加密系统的研究实现

这样在网络中传送文件时,为保证数据的安全性和不可抵赖性,本系统采用对文件既加密又签字,这是最安全的方式。通过此混合加密系统,发件人可以放心地相信只有收件人才能阅读文件内容,保证了数据的安全性。收件人也可以放心地确信文件的确是出自发件人的。5.4混合加密系统的性能分析

5.4.1安全性分析

基于ECC和3DES算法的混合加密系统的安全性主要依赖于两个算法各自的安全性,根据前面的分析,ECC算法的安全性是基于椭圆曲线离散对数问题的,比基于大整数因式分解和有限域上离散对数问题更为难解,因此,和其他的公钥密码系统相比,ECC抗攻击性具有绝对的优势。椭圆曲线的离散对数问题计算困难性在计算复杂度上目前完全是指数级,而RSA是亚指数级的。这体现出ECC比RSA的每比特安全性能更高,是目前最安全的实用算法。所有的研究结果表明:在现有的求解方法和计算能力的条件下,求解ECDLP是计算上不可能的,由此可以确保ECC的安全性。

而在DES算法中,由于采用了16轮迭代,从而使得即使改变明文或者密钥中的l位,密文都会发生约32位的变换,其中,56位密钥的每位的使用次数都在12.15次之间,这些都大大提高了系统的保密性。对付DES的16轮迭代设计进行攻击,在目前己被证明最有效的攻击方法是穷举搜索。由于DES是使用的56位的密钥进行加密的,因此在如今的计算机水平下,已经变的不再安全,但是本文采用了3DES算法,把密钥提高了一倍,大大增加了破译的难度:其次,在此混合加密算法中,使用的是随机数来作为DES算法的密钥的,而且此密钥只使用一次,每次加密的密钥都不相同,因此更好的防范了密码分析者的破译。

由于混合加密系统的各组成算法在目前来说都是高度安全的,因此,我们可以说,此混合加密系统在目前来说是高度安全的。

5.4.2复杂度分析

根据算法实现的几个不同的组成部分,分别对算法的复杂度进行分析。

首先来分析对会话密钥进,77;hn密的ECC算法。在此混合加密算法中,无论要加密的明文的长度有多大,ECC算法要加密的对象始终是用来作为3DESll2位的密钥,因此,不管ECC48

南京邮电大学硕士研究生论文第五章基于ECC的混合加密系统的研究实现算法多么复杂,因为其所加密的对象长度固定,那么,ECC算法的开销是一定的。也就是说,随着加密明文长度的变化,ECC算法的时间复杂度和空间复杂度都是不变的。那么,设要加密的明文长度为胆,则混合加密算法中ECC算法的时间复杂度为常量o(1),空间复杂度也为常量D(1)。

其次,对于加密明文的3DES算法,从其实现过程的不同阶段来进行说明。在初始置换阶段,所要进行的操作是对明文分块根据一定的规则进行位置上的置换,这个过程同要加密的明文的长度是成线性关系的,因此这一阶段的时间复杂度为o(n),空间复杂度为o(n)。然后是子密钥生成阶段,在这~部分,所进行的操作无论是对密钥的置换选择,还是了密钥牛成过程的循环左移,其操作对象都是定长的,因此,这一过程的时间复杂度和空间复杂度都是常量。在DES算法最重要的加密变换部分,首先是一个选择置换和模加运算,这一过程和明文长度是成线性关系的;其次是通过选择函数组S的操作,这一过程是3DES算法的保密性的关键所在。选择函数组中每个选择函数的6位输入组成一个6位二进制数字组。选择的规矩是:输入二进制数字组中的第1和第6两位所组成的二进制数值代表所选中的行号,其余4位所组成的二进制数值代表选中的列号,而处在被选中的行和列的交点处的数字便是选择函数的输出。虽然这一过程是一种非线性变换,但其对于每一个明文分块来说,所进行的操作都是有限步的,而且在加密明文的过程中,每一步操作都是在明文分块内进行,因此这一过程的时间复杂度为D(,z),空间复杂度为o(n)。即就是DES算法的时间复杂度为o(n),?空间复杂度为D(刀)。

根据上面的讨论,可以得到如下结论:混合加密算法的时间和空间复杂度都为o(n)。

5.4.3加密速度分析

在这里,我们对混合加密算法加密速度进行一个分析,通过与ECC加密算法的加密速度比较来进行说明。

对于相同的明文,用混合加密算法和ECC算法分别对其进行加密,对其加密速度进行比较。为了更好的比较混合加密算法和ECC算法的性能,我们选取不同大小的明文进行实验,对其应用这两种算法进行加密的时间予以统计。根据结果,我们有如下的明文大小和加密时间对应关系表(表5.1):49

南京邮电大学硕士研究生论文第五章基于ECC的混合加密系统的研究实现

明文大小(字节)lK10K50K100K500K1M

加密ECC算法0.0620.6533.4326.73434.5772.21

时间混合算法0。0040.063O,2420.3941.6323.681

(秒)

表5.1混合加密算法与ECC算法的加密速度比较

从表中可以看出,当明文较小时,混合加密算法的加密时间和ECC算法的加密时间比较来说相差不多。而随着明文大小的增加,混合加密的时间远远的小于ECC加密的时间。

从加密过程来看,当明文较小时,用ECC算法直接加密只经过一次对明文的加密过程,运算量相对来说也比较小;而对于混合加密算法,其加密过程要经过对3DES密钥进行ECC加密和对明文进行3DES加密这样两个加密过程,其加密时间为3DES加密的时间加上ECC加密时间这一基数。虽然说3DES加密的速度远远的大于ECC加密的速度,fu.是当明文长度较小时,对3DES的密钥进行ECC加密这一过程的时间开销占了很大一个部分。

而当明文逐渐增大以后,混合加密算法的加密时间明显地小于ECC算法的加密时间,而且明文长度越大,混合加密算法的速度优势越明显。因为随着明文长度的增加,直接用ECC加密算法对明文进行加密,运算量越来越大,时间开销越来越大;利用混合加密算法进行对明文的加密,ECC加密3DES的密钥的开销不变,而3DES加密过程的时间开销随着明文的增加远远的小于用ECC直接加密明文的时间开销。并且随着明文长度的越来越大,混合算法中的对密钥进行ECC加密的时间开销相对于对明文的加密时间来说几乎可以忽略不计p",因此可以认为这时混合算法的加密速度等同于3DES的加密速度。

5.5本章小节

本章首先对混合加密进行了概述,描述了混合加密算法的结构,在此基础上设计了基于ECC和3DES算法的混合加密系统,同时在C抖平台下进行系统的仿真实现。最后通过系统安全性,复杂度以及加密速度分析了该算法的抗攻击性和执行效率。研究结果表明:基于3DES和ECC的混和加密算法具有更高的安全性和执行性能,可有效增强数据安全性。50

南京邮电人?≯硕士研究生论文第六章总结和展颦

第六章总结和展望

随着可.联网络的迅速发展和普及,人类生活越来越密切的依赖于网络。与此同时,各种网络安全问题也层出不穷,网络安全技术的研究成为人们研究的焦点。在各种网络安全技术中,加密技术无疑是最核心的一种技术,密码学是解决网络信息安全最直接、最有效和最重要的途径。目前,有关各种加密技术的研究要么开辟新的途径,发展新的加密技术,要么是对已有的加密算法进行各种改进或者组合。在总结前人工作的基础上,本文所作的工作丰要有以下几点:

(1)研究了当前的加密技术。对密码学的各种概念进行了介绍,分析了当前的两种密码体制,特别对DES算法,3DES算法和ECC算法进行了研究。

(2)本文详细研究了基于大素数域C上的椭圆曲线密码算法,其中包括:椭圆曲线域参数的选取、有限域C上的基本运算、椭圆曲线算术运算等算法的实现问题,特别是重点讨论了椭圆曲线上点乘运算,在已有算法的基础上,给出了本文改进的m迸制算法,同时迸一步的改进了现有滑动窗口算法的滑动方式,提出了一种新的点乘算法,使得算法更加灵活,对于各种应用列:境具有更好的适应性。

(3)对于混合加密算法进行了详细的研究,描述了混合加密算法的结构,利用混合加密思想,设计了基于3DES和ECC算法的混合加密系统,并在C++平台下进行仿真实现。通过安全性,复杂度以及加密速度分析了该算法的抗攻击性和执行效率。

在本文中,重点研究YECC算法,并且结合混合加密思想,设计了基于3DES矛/JECC算法的混合加密系统。但是由于时间和水平的关系,研究和开发工作都不是很完善,存在着一定的不足。本文的后续工作主要有:

1)本文采用的对称加密算法采用的是3DES算法,可以采用其它的对称加密算法;

2)椭圆曲线密码体制是否存在安全性漏洞问题;

3)椭圆曲线上点乘算法的设计依然没有达到最优的算法,近年来一些更加智能的自适应算法和一些人工智能算法被越来越多的应用到点乘算法的设计上,但是也正因为如此,算法的复杂性增加,速度减慢。如何针对实际的应用情况找到更优的点乘算法仍是一个有待研究的问题。

南京邮电人学硕士研究生论文致谢

致谢

本论文是在我的导师王锁萍教授的悉心教诲和无微不至的关怀下完成的。从论文的选题,收集资料以及最终论文的架构与写作方法等方面,都浸透着王老师的心血。王老师渊博的知识、实事求是的治学态度、平易近人的处世风格,给我留下了极深的印象,为我做出了榜样。三年来,王老师在学业和生活上给了我许多关心和帮助,使论文得以顺利完成,这些我会永远铭记在心。在此特向导师表示衷心的感谢。

感谢我的家人对我的支持鼓励。在我困难失意时,是他们用无尽的关爱与支持帮我渡过难关。在这里,我要向他们表达我最真诚的谢意,并致以最高的敬意。

感谢在校期间所有关心和帮助过的老师和同学们,他们的帮助令我终生难忘。

最后,感谢评阅、评审论文和出席论文答辩会的各位专家在百忙之中给予的悉心指导。52

南京邮电人学硕十研究生论文参考文献

参考文献

[1]MichaelA.Caloyarmides,EncryptionWars:EarlyBattles

DirectionsinIEEESpectrum,2000.4on[2]Diffie.W,andHellmanM.,¨New

InformationCryptography”,IEEETransactionsTheory,22(1976):644.654

and【3]Rivest,ShamirAdleman,”AMethodforObtainingDigitalSignaturesandPublic.Key

Cryptosystems”,CommunicationsoftheACM,21(1978):120.126

[4]刘荫铭、李金海、刘国丽,计算机安全技术,清华大学出版社,2000年

[5]牛晓华,王擎天,赵洪利,数字签名技术的现状发展与应用,电子技术,1999年第9期[6]卢开澄,计算机密码学——计算机网络中的数据保密与安全(第二版),清华大学出版社,

1998年

[7]王衍波,薛通,应用密码学,机械工业出版社,2003

【8]MarieA.Wright.The

1、:11-14evolutionoftheAdvancedEncryptionStandard.NetworkSecurity,1999,1999(1

[9]BruceSchneier著,吴世忠,祝世雄,张文政等译,应用密码学协议、算法和C源程序f第

二版),机械工业出版社,2000年

【1O]V.Miller,UsesofEllipticCurvesinCryptography[M].AdvancesinCryptology—Crypto’85.

Springer?Verlag.1986:417-426

[11】N.Koblitz,Elliptic

。209CurveCryptosystems[J】.Mathematicsofcomputation,1987,48(177):203

[12]JosephA.Gallian.ContemporaryAbstract

[13】朱平天,近似代数,科学出版社,2001Algebra.HoughtonMifflinCompany,1998

[14]“ECC力Iq密算法Xf-]介绍”,http:Hwww.pediy.com/

[15]LuJianke.BoundaryValueProblemforAnalyticFunctions.Singapore:WorldScience,1992,

3:65—72

[16】唐柳英,李宝,椭圆曲线密码体制实现的若干问题浅谈[J],中国科学院研究牛院学

报,2001,18(2):186—192

[17]孟凡牛,基于椭圆曲线的混合加密系统的研究实现[M],大连理工大学,硕士论文53

[18]夏先智,赵毅,基于椭圆曲线加密算法技术优势的探讨,计算机科学,2003.30(10)181.183

【19]NASTechnicalReport.ASurveyofEltipticCurveCryptosystems,Partl:Introductory.NASA堕塞堕生查竺堡主堕窒竺笙奎一

Advanced参考文献Supercomputing(NAS)Division--ResearchBranch(INR),InformationSciences&TechnologyDirectorateNASAAmesResearchCenter,MofetField,CA94043NAS.03.012。August2003

【20]NIST.Recommended

【21]STANDARDSFOR

CerticomResearchEllipticCurveforFederalGovernmentUse.July1999EFFICIENTCRYPTOGRAPHY.SEC1:EllipticCurveCryptographyContact:secg—talk@lists.certicom.corn.September20,2000,Version1.0

【22]STANDARDSFOREFFICIENTCRYPTOGRAPHY.SEC2:RecommendedEllipticCurve

DomainParameters.CerticomResearch

2000,Version1.0Contact:.secg-talk@lists.certicom.com.September20,

[23]DarrelHankerSon,AlfredMenezes,ScottVanstone.GuidetoEllipticCurveCryptography.

Springer—Verlag,2004

[24】SutiknoS,SuryaA,EffendiR.AnimplementationofE1Gamalellipticcurvecryptosystems.

IntegratedSystemLaboratory,2004,(13):483.486

[25】LamerK.Theadvantagesofellipticcalvecryptographyforwirelesssecurity叽Wireless

Communications,IEEE,2004,11(1):62.67

[26]M.Brown,D,Hankerson,J.LopezandA.Menezes,SoftwareImplementationoftheNIST

EllipticCurvesOverPrimeFields,Topicsin

250.265Cryptology.CT.RSA2001,LNCS2020(2001),

[27]Menezes,van

1996Oorschot,andVanstoneS,HandbookofAppliedCryptography[M]CRCPress,

[28]P.D.Barrett,”Implementing

onatheRivestShamirandAdlemanpublickeyencryptionalgorithmstandarddigitalsignalprocessor,”AdvancesinCryptology,Proc.Crypto’86,LNCS263,A.M.Odlyzko,Ed.,Springer-Verlag,1987:PP.311-323

[29]H.Cohen,A.MiyajiandT.Ono.EfficientEllipticCurveExponentiation[J].Advancesin

Cryptology’ProceedingsofICICS’97LectureNotesinComputersScience,Springer-Verlag,1334r1997):282—290

[30]杨帆,郝林.一种快速实现椭圆曲线密码体制的贪,tl,算法,微机发展,2005,15(3):34—37[31】郝林,罗平.椭圆曲线密码体制中点的数乘的一种快速算法,电子与信息学报,2003,

25(2):275-278

[32]KKoyama,YTsuruoka.SpeedingupEllipticCryptosystemsbyUsingaSignedBinary

南京邮电人学硕十研究,上论文参考文献

inCryptology—ProceedingsofCrypto’92,LectureNotesinWindowMethod.Advances

ComputerScience,Springer—Verlag,1993,345—357

[33]JASolinas.Animprovedalgorithmforarithmeticonafamilyofellipticcurves.InAdvances

inCryptology,CRYPTO’97,Springer—Verlag,LNCS1294(1997):357-371

[34]http:llwww.cryptopp.corn/

[35]雷倩睿,李鹏文,刘守义.网络安全防御中数据加密技术的研究,信息技术,第27卷第

1期,2003年1月55

}串i京邮电人。学硕十研究生论文附录A基丁.滑动窗几的改进算法代码实现

附录A基于滑动窗口的改进算法代码实现

本文基于滑动窗口的新算法的代码如下:

//L!tJ韭的窗fl滑动法,返pf寻找到的窗|Ⅲ]『人J的二进剖串的值,如果没仃找到合适窗|1fJl0返MO,如爪kL纶绝爪则返…I一1

intMultk::NewSwWindow(intwidth,int&factWidth)

if(current<1)return-l;

inti,result,start,end;

St踟’t=Current;{

if((start-width+1)>=1)

for(end=start?width+l;k.get(end)一0;end一)

if((start.end+1)<=width/2)//,7‘找合j玉的人r…、l"-:IcJ谢II火收

iffk.get(start.width+2)--=1)returnO;//判惭域人1j;『IJ后‘f口的Lr.牛,'ifl’f

else

for(end=start.width/2+l;k.get(end)一0;end一)//j星化别滑动街rl法.继续、l?找

else

for(end=l;k.get(end)一0;en小斗)//遇剑结尾的习j戈合适的窗1

if((start—end+1)<=width/2)returnO;J

factWidth=start.end+l;t/J区1.I。丈际的窗I1人小

for(i=(1<<(factWidth-1)),result=0;start>=end;start一,》>1)

result+=k.get(start)木i;lfLt+算谢门的值

current=start;

returnresult;

//祈!;.}:法的点乘运算:的实现

ECnECn::NewSwMult(Multk&k,intwidth)

LARGE—INTEGERopen,close,frequent;

inti,j,S,w;

ECnresult,*e;

南京邮电人学硕十研究生论文附录A基于滑动窗[1的改进算法代码实现

ECn[(1<<width)+1];

//.1'1;L汁}7:e=new

QueryPerformanceCounter(&open);

for(i=l;i<=(1<<width);i++)e[i]=eli?1】+(唪this);

QueryPerformanceCotmter(&close);

QueryPerformanceFrequency(&frequent);

preMultTime(double)(close.QuadPart-open.QuadPart)/(double)frequent.QuadPart;

/蹦I’动窗lI铭i‘』i

QueryPerformanceCounter(&open);

for(s=0;s<=50;s++)

result.clear();

doubleCount=O;

addCount=O;

while(k.GetCurrentPositionO>O){

if(k.GetCurrentBitO—1){

i--k.NewSwWindow(width,w);//调用j二面的气手找窗f1函数,找剑宙f1计鲜

if(i!=O){

for(j=O;j<w;j++)result+--result;

doubleCount+--w;

result+=e[i];addCount++;

else

result+--result;

doubleCount++;

result+=(奉this);

addCount++;

k.MoveNextPositiaon0;

else//滑过连续的零

while(k.GetCurrentBit()一---0&&k.GetCurrentPosition0>0)

result+---result;

doubleCount++;

k.MoveNextPosition0;

k.Clear();

QueryPerformanceCounter(&close);

QueryPerformanceFrequency(&frequent);

multTime((double)(close.QuadPart—open.QuadPart)/(double)frequent.QuadPart);

delete[】e;

returnresult;57

网络安全中加密算法的研究

网络安全中加密算法的研究作者:

学位授予单位:夷泓南京邮电大学

本文链接:http://d..cn/Thesis_Y1411386.aspx

相关推荐