LOKI91算法在数据传输中的应用--通信与电子信息专业综合实践.doc_第1页
LOKI91算法在数据传输中的应用--通信与电子信息专业综合实践.doc_第2页
LOKI91算法在数据传输中的应用--通信与电子信息专业综合实践.doc_第3页
LOKI91算法在数据传输中的应用--通信与电子信息专业综合实践.doc_第4页
LOKI91算法在数据传输中的应用--通信与电子信息专业综合实践.doc_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

齐齐哈尔大学通信与电子工程学院 通信2008本 综合实践 1 报告(论文)综合实践1报告 实践项目名称:LOKI91算法在数据传输中的应用班 级:通信工程 班姓 名: 学 号: 指导老师: 完成时间:2010-06-07第I页 共29页摘要 本文介绍了一种64位的数据和64位密钥的对称分组算法LOKI91。LOKI91算法将明文和密钥分组,然后通过16轮异或运算,扩展置换,S-盒和盒P-盒置换最终达数据的加密目的。同时文中应用C+语言对LOKI91算法进行实现。关键词:信息安全;加密算法;LOKI91摘要I第1章 绪论11.1 课题背景11.2 信息安全及其发展现状11.3 本文研究的主要内容3第2章 密码学基础42.1 密码学术语42.2 常见加密算法比较62.3 LOKI91算法概述72.4 本章小结7第3章 C+基础知识83.1 面向对象程序设计83.2 C+对面向对象的支持83.3 C+程序构成和书写83.4 C+的字符集和关键字93.5 C+程序的编译环境93.6 本章小结9第4章 LOKI91加密算法原理及实现104.1 LOKI91加密原理104.2 LOKI91算法的实现124.3 LOKI91算法在数据传输中的应用18结论20参考文献21附录22LOKI91加密算法源程序22II第1章 绪论随着现代通信技术和计算机网络技术的迅速发展,各种形式的通信变得越来越频繁。而现代通信技术不仅限于民用通信,在军事、政治、外交、商业等诸多社会活动中都有频繁而广泛的应用。因此,通信中的信息安全问题就显得尤为重要了。为了确保在通信过程中信息不被窃取或篡改,就有必要对数据进行加密,以保证数据的安全传输。而所谓的加密,就是用基于数学方法的程序和保密的密钥对信息进行编码,把数据变成一堆杂乱无章难以理解的字符串,只允许合法的接收者恢复数据的本来面目,而对于非法窃取者,即使得到了密文,也无法辨认原始数据。通过解密则可恢复数据原型。1.1 课题背景随着现代通信技术和计算机网络技术的迅速发展,各种形式的通信变得越来越频繁。而现代通信技术不仅限于民用通信,在军事、政治、外交、商业等诸多社会活动中都有频繁而广泛的应用。因此,通信中的信息安全问题就显得尤为重要了。而信息安全已成为世界性的现实问题,信息安全与国家安全、民族兴衰、战争胜负、经济安全、社会稳定,以及人们的工作于生活息息相关。没有信息安全,就没有完全意义上的国家安全,也没有真正意义上的政治安全、军事安全、经济安全和社会稳定,实际上也没有真正意义上的信息化应用。面对日益明显的经济、信息全球化趋势、我们既要看到它带来的发展机遇,也要正视它所引发的挑战。加速信息安全的研究和发展,提高信息安全保障能力已成为我国信息化进程中的重大事情,成为国民经济领域信息化的重要课题。而信息加密作为一种安全保障技术手段而广泛地被使用,因此对加密技术的研究则有很强的实用价值。而密码算法及其计算机实现则是加密技术的具体实现方式。1.2 信息安全及其发展现状1.2.1 信息安全的内涵与属性信息安全是指信息在产生、传输、处理和存储过程中不会被泄露和破坏,确保信息的可用性、保密性、完整性和不可否认性,并保证信息系统的可靠性和可控性。信息安全包含三层含义。一是系统安全,即系统实体安全。二是系统中的信息安全,即通过对用户权限的控制、数据加密等确保信息不被非授权者获取和篡改。三是管理安全,即用综合手段对信息资源和系统安全运行进行管理。信息安全保密已信息的可靠性为前提,可靠性和安全性是其基本属性。信息加密和密码技术已成为一种保障信息安全的重要方式而被广泛应用。1.2.2 信息加密和算法在整个通信系统中,最主要和最易受到攻击的地方就是通信系统中的详细的安全。攻击者可以通过窃取、篡改等手段而达到破坏通信的目的。为了确保在通信过程中信息不被窃取或篡改,就有必要对数据进行加密,以保证数据的安全传输。而所谓的加密,就是用基于数学方法的程序和保密的密钥对信息进行编码,把数据变成一堆杂乱无章难以理解的字符串,只允许合法的接收者恢复数据的本来面目,而对于非法窃取者,即使得到了密文,也无法辨认原始数据。而对通信信息机密就需要要通过一定的数学运算对信息编码,这种对信息进行编码的数学运算规则则称为加密算法。随着计算机的产生和应用,人们通过计算机以及计算机语言编程来实现加密和解密的密码算法。计算机密码算法有很多种,最常用的有:DES、RSA、DSA以及他们的替代算法。DES是对称算法;RSA是公开密钥示算法,可用作加密和数字签名;DSA也是一种公开密钥算法,只用作数字签名。LOKI91则是DES的一种替代算法。1.2.3 信息安全的发展与现状 信息安全在其发展过程中经历了三个阶段。早在20世纪初期,通信技术还不发达,面对电话、电报、传真等信息交换过程中存在的安全问题,人们强调的主要是信息的保密性,对安全理论和技术的研究也只侧重于密码学,这一阶段的信息安全可以简单称为通信安全,即COMSEC(Communication Security)。20世纪60年代后,半导体和集成电路技术的飞速发展推动了计算机软硬件的发展,计算机和网络技术的应用进入了实用化和规模化阶段,人们对安全的关注已经逐渐扩展为以保密性、完整性和可用性为目标的信息安全阶段,即INFOSEC(Information Security)。20世纪80年代开始,由于互联网技术的飞速发展,信息无论是对内还是对外都得到极大开放,由此产生的信息安全问题跨越了时间和空间,信息安全的焦点已经不仅仅是传统的保密性、完整性和可用性三个原则了,由此衍生出了诸如可控性、抗抵赖性、真实性等其他的原则和目标,信息安全也转化为从整体角度考虑其体系建设的信息保障(Information Assurance)阶段。 国外目前不仅在密码基础理论方面的研究做的很好,而且在实际应用方面也做的非常好。制定了一系列的密码标准,特别规范。算法的征集和讨论都已经公开化,但密码技术作为一种关键技术,各国都不会放弃自主权和控制权,都在争夺霸权地位。我国在密码基础理论的某些方面的研究做的很好,但在实际应用方面与国外的差距较大,没有自己的标准,也不规范。 目前最为人们所关注的实用密码技术是PKI技术。国外的PKI应用已经开始,开发PKI的厂商也有多家。许多厂家,如Baltimore,Entrust等推出了可以应用的PKI产品,有些公司如VerySign等已经开始提供PKI服务。网络许多应用正在使用PKI技术来保证网络的认证、不可否认、加解密和密钥管理等。尽管如此,总的说来PKI技术仍在发展中。DC公司的Internet安全资深分析家认为:PKI技术将成为所有应用的计算基础结构的核心部件,包括那些越出传统网络界限的应用。B2B电子商务活动需要的认证、不可否认等只有PKI产品才有能力提供这些功能。 目前国际上对非数学的密码理论与技术(包括信息隐形,量子密码,基于生物特征的识别理论与技术等)非常关注,讨论也非常活跃。1.3 本文研究的主要内容 本文从信息安全这个话题入手,介绍了信息安全和密码学基础知识。着重讨论了LOKI91加密算法的加密原理。在此基础上阐述了该算法的实现原理和过程,尤其对算法的加密过程进行了详细的描述。然后对其使用C+程序设计语言进行了编程实现,并对算法程序进行了测试。最后对算法的应用做了理论上的探讨。第2章 密码学基础密码学是研究信息系统安全保障的科学。它保含两个分支密码编码学和密码分析学。密码编码学是对信息进行编码,实现隐蔽信息的一门学科,而密码分析学是研究分析破译密码的学科,两者相互对立,而又相互促进地向前发展。在信息系统中使用密码技术的目的是为了保护信息的保密性、完整性和可用性。加密的基本思想是通过变换信息的表示形式来伪装需要保护的敏感信息,使非授权者不能了解被保护的信息内容。密码系统由算法以及所有可能的明文和密文组成。2.1 密码学术语2.1.1 消息和加密消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,被加密的消息称为密文,而把密文转变为明文的过程称为解密,如图2-1所示。解密加密 明文 密文 原始明文图2-1 加密和解密明文用M或P表示,他可能是位序列、文本文件、位图、数字化语音或数字的视频等等。对于计算机,M指简单地指二进制数据。明文可被传输和存储,M一般指待加密的消息。 密文用C表示,它也是二进制数据,有时和M一样大,有时略大于明文。加密函数E作用于M得到密文C,用数学表示为: E(M)=C相反,解密函数D作用于C产生明文M: D(C)=M先加密后解密,原始的明文将恢复: D(E(M)=M2.1.2 算法和密钥密码算法也叫密码,是用于加密和解密的数学函数。如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。而受限制的算法存在很多不足,它不利于在现代商业应用中的使用。现代密码学用密钥(key)解决了受限制算法的不足,密钥用K表示。K可以是很多数值里的任意值。密钥K的可能取值叫做密钥空间.如果加密和解密运算都使用这个密钥,加/解密函数可表示为: E(M)=C D(C) =M这些函数具有以下性质,原理如图2-2所示: D(E(M)=M 密钥 密钥解密加密 明文 密文 原始明文 图2-2 同一密钥加/解密若加密和解密使用的不同,也就是说加密密钥K1和解密密钥K2不同,则表示为: E(M)=C D(C) =M D( E(M) =M原理如图2-3所示。 加密密钥 解密密钥解密加密 明文 密文 原始明文图2-3 不同密钥加/解密所有这些算法的安全性都基于密钥的安全性;而不是基于算法的细节安全性。2.1.3 对称算法对称算法,也称作传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加/解密密钥是相同的。这些算法也叫密钥算法或单密算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥。2.1.4 密码分析密码分析是在不知道密钥的情况下,恢复出明文的活动。成功的密码分析能恢复出消息的明文或密钥,也可以发现算法的弱点。对密码进行分析的尝试称为攻击,常用的密码分析攻击有:唯密文攻击、已知明文攻击、选择明文攻击、选择明文攻击、选择密钥攻击等。2.1.5 计算机算法 计算机算法是指通过计算机以及计算机语言编程实现加密和解密的密码算法。计算机密码算法有很多种,最常用的有:DES、RSA、DSA以及他们的替代算法。DES是对称算法;RSA是公开密钥示算法,可用作加密和数字签名;DSA也是一种公开密钥算法,只用作数字签名。LOKI91则是DES的一种替代算法。2.2 常见加密算法比较 计算机算法有很多中,其中最常用的有DES、RSA和DSA。在这些算法都有各自的特点和用途。DES是最通用的一种对称机算法,加密和解密使用相同的密钥。DES是美国和国际标准,是分组密码的一个典型代表。DES是重复使用移位变换和替代的强块密码,属于一种抗破译能力更强的乘积密码体制。它把明文按64位分组输入,在64位密钥控制下,将明文转化为等长的64位密文输出。RSA是最流行的公开密钥算法,它能用作数据加密和数字签名。在这一体制中,每个用户拥有两个密钥:公开密钥PK和秘密密钥SK。公开密钥PK用于加密,也称加密密钥,可以公布在网络等载体。秘密密钥SK用于解密,也称解密密钥,必须保密。由于该算法要进行大素数计算,因此计算速度较慢,在大量数据传输中应用效果不佳。密管理也比较困难。DSA数字签名算法,是一种公开算法,它不能用于加密,只用作数字签名。DSA不能用于加密或密钥分配,且DSA的运算要比RSA还慢。2.3 LOKI91算法概述LOKI作为DES的一种潜在替换算法,它使用64位的数据分组和64位密钥。但是该算法利用差分分析能比穷举攻击更快地破译小于12轮的LOKI。并且,该算法存在一个8位的互补特性,这使得穷举攻击的复杂性降低256倍。这使得LOKI的加密安全性有所降低,为了对付这些攻击,LOKI的设计者去掉了一些已公开的却缺陷,修改了该算法,从而出现了LOKI91为了使该算法更加能抵抗差分攻击并消除互补特性,LOKI91在LOKI的基础上做了一些变化:()改变了子密钥的产生方法,使得每两轮交换左右两半部分,而不是每轮交换;().改变了子密钥的产生方法,使得左子密钥交替进行向左环移12位和13位;().取消了数据和密钥的初始和最终异或运算; ().S盒具有更好的异或差分特性(可阻止差分分析),同时取消了x 的任意值以满足f()0,此处是盒、S盒和P盒的组合。 LOKI91和数据加密标准DES类似,原理如图4-1所示。它是一个分组算法,它以64位为分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出。2.4 本章小结随着计算机的产生和应用,人们广泛地使用计算机以及计算机语言编程来实现加密和解密的密码算法。在众多的计算机算法中,它们各自都有自己的特点和应用领域。密码技术是保护通信网络传输安全的重要手段,是保障信息安全的核心技术,它能实现对信息的加密。而密码算法及其计算机实现则是加密技术的具体实现方式。随着计算机的产生和应用,人们广泛地使用计算机以及计算机语言编程来实现加密和解密的密码算法。第3章 C+基础知识C+语言是在C语言的基础上发展起来的。它包括了C语言的全部语言成分,同时又添加了尤为重要的面向对象的完全支持。既可以进行过程化程序设计,也可以进行面向对象程序设计,是目前编程人员使用最广泛的语言工具之一。3.1 面向对象程序设计面向过程的程序设计是方法采用函数来完成对数据的操作,但又将函数和所操作的数据结构分离开来。如果数据结构发生变化,则相应的函数也要发生变化。这样面向过程的程序设计方法编写大程序不但难于编写,而且也难于测试、修给和维护。因此,人们对面向过程的程序设计方法进行继承和发展,产生了面向对象程序设计方法。汲取了面向过程的程序设计方法的优点,同时考虑到用其实现现实世界的实体。面向对象程序设计方法通过对数据和代码建立分块的内存区域,对程序进行模块化。面向对象程序设计方法有三个特征,即封装、继承和多态。3.2 C+对面向对象的支持 C+允许数据抽象、支持封装、继承和多态等特征,C+支持数据封装,c+类包含私有、公有和保护成员,通过发送消息来处理对象,允许友元破坏封装,允许函数名和运算符重载,支持动态联编。兼有C语言自上而下的设计方式,也支持自下而上的方法。3.3 C+程序构成和书写 一个C+程序可以由一个程序单位或多个程序单位构成。第一个程序单位作为一个文件。在程序编译时,编译系统分别对各个文件进行编译。在一个程序单元中一般包括以下部分: (1).预处理命令; (2).全局声明部分:包括用户自己定义的数据类型声明和程序中用到的变量定义。 (3).函数:其中必须且仅有一个主函数main()。3.4 C+的字符集和关键字C+程序是一个字符序列,有一定的字符集构成.3.4.1 字符集C+语言规定C+程序只能有以下字符构成: (1).大小写的英文字母:AZ,az (2).数字字符:09 (3).下列特殊字符:空格(space) ! ? # % & * _ + = - / “ : ; , . ( ) 3.4.2 关键字关键字是C+语言预定义的特殊意义的标识符,只能按照C+的规定意义使用,也成为保留字。常用的有:auto、bool、break、case、class、continue、do、double、else、for、if、int、long、public、return、short、switch、this、ture、using、void、while等等。3.5 C+程序的编译环境C+是一种编译型程序设计语言,在计算机上实现通常要经过六个阶段:编辑、预处理、编译、链接、装入和执行。以上过程通常在软件开发商提供的集成开发环境C+ IDE中完成,常见的有Visual C+、 C+ Builder 等。3.6 本章小结C+程序设计语言作为一种面向对象编程语言,它被编程人员广范使用。他继承了C语言的各种优点,又支持现阶段最为流行的面向对象编程思想,以用于很多领域的程序编写及算法实现。 第4章 LOKI91加密算法原理及实现4.1 LOKI91加密原理LOKI91与数据加密标准DES类似,原理如图4-1所示。它是一个分组算法,它以64位为分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出。LOKI91是一个对称算法:机密和解密使用同一算法。 ROL12明文密钥K密文ROL13ROL12ROL13ROL12ROL12PSEESPESPPSEESPESE 图4-1 LOKI91原理图 LOKI91对64位的明文分组进行操作,首先将数据分组成左半部分和有半部分并运行16轮。在每一轮中,右半部分首先与子密钥相异或,然后通过一个扩展置换,扩展置换表见表4.1。4, 3, 2, 1, 32, 31, 20, 29, 28, 27, 26, 25, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 1720, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9,12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1表4.1 扩展置换48-位输出被划分为4个12-位分组,每一组进入一个S-盒代替,S-盒代替如下:取每12-位作为输入,用它的最左2位和最右2位形成一个数r,中间8位形成数c,S-盒的输出O定义为: O(r,c)=(c+(r17)0xff&0xff)31mod PrPr在表4.2中给出:r:12345678Pr:375379391395397415419425r:910111213141516Pr:433445451463471477487499表4.2 Pr然后,4个8-位输出重新组合成32-位数据,并通过表4.3描述的置换。最后,与左半部分异或的右半部分形成新的左半部分,原来的左半部分与右半部分异或变成新的右半部分。在16轮后,数据分组再次与密钥异或产生密文。32,24,16,8,31,23,15,7,30,22,14,6,29,21,13,528,20,12,4,27,19,11,3,26,18,10,2,25,17, 9,1表4.3 P-盒置换从密钥中产生子密钥的方法比较简单。64-位密钥被分成左半部分和右半部分,在每一轮中,子密钥是左半部分。左半部分随后向左环移12位或13位,然后在每两轮之间左半部分和右半部分交换。像DES一样,加密和解密使用同一算法。4.2 LOKI91算法的实现4.2.1 LOKI91加密流程 LOKI91将一组明文转换为密文需要进行16轮运算,首先将明文进行64位分组成左右32位两部分,同时64位密钥也分为左右两部分。其每轮运算规则如下:第一轮:明文右半部分与密钥左半部分进行异或运算,之后进行扩展置换,将32位扩展为48位,而且48位被分为4个12位分组,用12位分组的最左部分和最右部分形成个数r,中间8位形成数c。之后,进入S-盒置换进行O(r,c)=(c+(r17)0xff&0xff)31mod Pr运算,4个48位重新组合为32位数据并进行P-盒置换,输出作为第二轮的右半部分,第一轮中的右半部分明文作为第二轮的左半部分;第二轮:右半部分与进行12位环移的左半部分密钥异或后,进行扩展置换,S-盒置换,P-盒置换,于第二轮的左半部分异或后作为第三轮的右半部分;第一轮的输出即第二轮的右半部分作为第三轮的左半部分;右半部分密钥环移13为后参与第五轮运算;第三轮:密钥的右32位与此轮的右半部分进行和第一轮类似的运算;此轮的左半部分运算与前两轮类似;第四轮:密钥的右32密钥环移12位进行与第一轮类似运算;密钥的右半部分环移13位后参与第7轮运算;依次规则进行十六轮运算,即得到密文。其流程如图4-2所示。 解密是加密的逆运算,而且LOKI91是一种对称算法,加密和解密使用相同的算法,只是在密钥的顺序上有所不同。这里不再讨论。左32位右32位异或异或 扩展置换S-盒:O(r,c)P-盒置换异或左32位右32位交换分组分组开始输入64位明文64位密钥右32位左32位右32位左32位环移12位环移13位依次进行15轮运算 输出64位密文 注:虚线框内按照第一轮运算规则再进行15轮运算,然后输出64位密文。图4-2 加密流程图4.2.2 LOKI91的编程实现 加密算法要在实际当中使用,则都必须通过一定的方式来实现。比如硬件实现和软件实现。而软件实现当今最为流行的方式,它易于修该和移植。 这里采用C+程序设计语言编程实现LOKI91算法,其程序代码见附录。程序是为了实现LOKI91的原理而设计,对程序可作相应的修改后可移植到具体的应用软件中。 在每轮运算中都涉及异或运算、扩展置换、S-盒置换和P-盒置换。以下为程序的核心代码:1. 主要函数说明:#define LOKIBLK 8 /定义一个8字节数据块 LOKIBLK#define ROUNDS 16 /定义加密轮数ROUNDStypedef unsigned long Long; /说明一个与long相同类型的字符Longextern Long lokikey2; /定义Long外部函数:LOKI91的密钥 2. 库函数声明,定义算法进出口enloki、deloki,以及密钥设置函数setlokikey。#ifdef _STDC_extern void enloki(char *b);extern void deloki(char *b);extern void setlokikey(char keyLOKIBLK);#elseextern void enloki(),deloki(),setlokikey();#endif _STDC_3. S-盒置换程序块:实现子密钥的12-位和13-位环移。在S-盒中进行O(r,c)=(c+(r17)0xff&0xff)31mod Pr运算。static Long f();static short s();#define ROL12(b) b=(b20); /密钥环移#define ROL13(b) b=(b19); /密钥环移#ifdef LITTLE_ENDIAN#define bswap(cb) register char c; c=cb0;cb0=cb3;cb3=c; c=cb1;cb1=cb2;cb2=c; c=cb4;cb4=cb7;cb7=c; c=cb5;cb5=cb6;cb6=c; #endif4. 密钥管理程序块:该块实现密钥的设置,产生左、右子密钥。以及左右子密钥的交换。为十六轮运算提供密钥。voidsetlokikey(loki_ctx *c,char *key) /密钥设置函数 register i; register Long KL,KR;#ifdef LITTE_ENDIAN bswap(key); /密钥交换#endif KL=(Long *)key)0; /左子密钥KL KR=(Long *)key)1; /右子密钥RL for (i=0;iloki_subkeysi=KL; ROL12(KL); c-loki_subkeysi+1=KL; ROL13(KL); c-loki_subkeysi+2=KR; ROL12(KR); c-loki_subkeysi+3=KR; ROL13 (KR); #ifdef LITTE_ENDIAN bswap(key);#endif5. 异或运算程序块:这里实现第一轮运算中左子密钥与右半部分明文的异或运算,以及P-盒置换后与左半部分明文的异或运算。从第二轮运算开始,实现每轮对应子密钥与相应的上一轮运算输出数据的运算。Void enloki(loki_ctx *c,char *b) register i; register Long L,R; /左、右半部分数据#ifdef LITTLE_ENDIAN / 交换左右数据 bswap(b);#endif L=(Long *)b)0; /LR=X XOR K R=(Long *)b)1; for (i=0;iloki_subkeysi); R =f (L,c-loki_subkeysi+1); (Long *)b)0=R; /Y=LR XOR K (Long *)b)1=L;#ifdef LITTE_ENDIAN bswap(b);#endif6. 扩展置换和P-盒置换程序块:实现扩展置换,将每轮密钥与右半部分数据异或后的32-位输出扩展为4组12-位的48位,在每组12-位数据的最左和最右2位生成数r,中间8位数生成数c.然后数据进入S-盒,之后进行P-盒置换将数据还原为32-位数据组。#define MASK12 0x0fff /4组12位数据进行扩展置换static Longf(r,k)register Long r;Long k;Long a,b,c; / 32位S-盒输出,P-盒输入a = r k; / A=R(i-1)XOR k(i)b = (Long)s(a &MASK12) )| / B=S(E(R(i-1)k(i)(Long)s(a8) &MASK12) 16)&MASK12)24|(a8)&MASK12)24);perm32(&c,&b,p); / C=P(SE(R(i-1)XOR k(i)return(c); / f 返回到C的结果4.2.3 LOKI91算法程序测试 将程序在Visual C+ 6.0环境下编译运行后:输入64位明文:computer的ASCII码表示为:M = 01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010输入64位密钥:security 的ASCII码表示为:K= 01110011 01100101 01100011 01110101 01110010 01101001 01110100 01111001如图4-3所示。 图4-3 明文和密钥输入 则输出64位密文为:C = 00100011 01100001 00000010 10011011 01011001 01110100 01100101 01110010如图4-4所示。 图4-4 加密结果输出 在程序测试中,程序编译和执行时间较快。体现了LOKI91算法加密速度快的特点。4.3 LOKI91算法在数据传输中的应用 从信息在网络中传输的角度看,信息加密是保护传输安全的重要手段。而网络中的主要加密方式有两种:链-链加密、端-端加密。链-链加密:通常物理层接口是标准的且容易连接硬件加密设备的。这些设备通过对它们的所有数据进行加密,包括数据、路由信息、协议信息等,它们可以被用于任何类型的数据通信链路上。另一方面,发送端与接收端之间的任何智能交换或存储节点都必须在这些数据序列之前对其进行解密。 端-端加密:是将加密设备放在网络层和传输层之间,加密设备必须根据低三层的协议理解数据,并且只加密传输层的数据单元。这些加密的数据单元与未加密的路由信息重新结合,然后送到下一层进行传输。这种方法避免了在物理层中的加解密问题。通过端-端加密,数据一直保持加密状态,直到到达目的地才被解密,如图4-5所示。 只有安全的算法和安全的加密方式相结合才能实现各自的性能,确保安全性。在以上两种加密方式中,端-端加密更适合于现代网络通信对数据加密的需求,在各种应用软件中更易于实现。 节点1 节点2 节点3 节点4DkEk P 链1 链2 链3 P 图4-5 端-端加密 我们知道,不论是图像、声音还是文字信息,在传输过程中都必须转换为二进制代码进行传输。而在上述两种信息加密方式中,端-端加密只加密传输层数据单元,这样就为算法的使用提供了方便,我们只需将算法程序嵌入到信息处理软件中即可实现对数据的加密,在传输数据时只需相应地注入密钥即可。而LOKI91算法数据加密的安全性高和加密运算速度快,密钥易于管理等特点在这种加密方式使用则相得益彰。 随着互联网的普及和发展,越来越多的信息通过互联网传输,而端-端加密则为网络信息的加密提供了有效的方式。在信息涉及数据传输的应用软件中都可以使用这种方式和LOKI91算法。4.4 本章小结 本章对LOKI91算法原理和加密的具体过程进行研究,用C+语言编程实现。讨论了数据加密方式和LOKI91在数据传输中应用的优势。结论LOKI91算法作为一种对称分组算法,具有安全性高,运算速度快,密钥管理方便。通过对LOKI91算法的研究表明,该算法在数据传输中使用具有一定的优势,在应用软件中易于实现。对LOKI91的密码分析中,它能够安全地对抗差分密码分析,也能够很好地抗击相关密钥攻击和穷举攻击。在选择明文攻击中,它比穷举攻击的复杂性就降低了差不多,这一点暴露了LOKI91的弱点,应用时在这方面应多加注意。参考文献1 (美)Bruce Schneier著,吴世忠等译.应用密码学M.北京:机械工业出版社, 2005. 2 刘娜娜主编.C+程序设计M.北京:北京航空航天大学出版社,2009.3 戴宗坤主编.信息安全基础M. 重庆: 重庆大学出版社,2005.4 蔡红柳,何新华主编.信息安全技术及应用实验M.北京:科学出版社,2004.5 王五一,唐刚,张勇敏.谈信息加密及对称密钥加密技术J.计算机应用研究, 1999, 16 (12) : 26-27.6 马雪英, 章华, 金勤.一个数据传输加密方案的设计与实现J.计算机应用研 究,2005,(5):173.7 姚茂群. 网络中传输数据的加密技术J.计算机时代.1999.(9):38-39.8 秦志光.密码算法的现状和发展研究J.计算机应用.2004,(2):3-4.9 郭福亮,徐炳良.数据加密实现方法J.海军工程学院报.1993,(3):87-88.10 Rivest R L,Shamir A,Adleman L.A method forobtaining digital signatures and publickey cryptosystemsJ.Communications of the ACM,1978,21(2):12012611 Sobhy M I.Secure computer communication using chaoticalgorithmsJ 弟 Int.J.Bif.Chaos,2000,10(12):28312839.甲 附录LOKI91加密算法源程序#include#define LOKIBLK 8#define ROUNDS 16typedef unsigned long Long;extern Long lokikey2;extern char *loki_lib_ver;#ifdef _STDC_extern void enloki(char *b);extern void deloki(char *b);extern void setlokikey(char keyLOKIBLK);#elseextern void enloki(),deloki(),setlokikey();#endif _STDC_char p32=31,23,15,7,30,22,14,6, 29,21,13,5,28,20,12,4,27,19,11,3,26,18,10,2,25,17,9,1,24,16,8,0;typedf struct short gen; short exp; sfn_desc;sfn_desc sfn=/*101110111*/ 375,31,/*101111011*/ 379,31,/*110000111*/ 391,31,/*110001011*/ 395,31,/*110001101*/ 197,31,/*110011111*/ 415,31,/*110100011*/ 419,31,/*110101001*/ 425,31,/*110110001*/ 433,31,/*110111101*/ 445,31,/*111000011*/ 451,31,/*111001111*/ 463,31,/*111010111*/ 471,31,/*111011101*/ 477,31,/*111100111*/ 487,31,/*111110011*/ 499,31,00,00 ;typedf struct Long loki_subkeysROUNDS; loki_ctx;static Long f();static short s();#define ROL12(b) b=(b20);#define ROL13(b) b=(b19);#ifdef LITTLE_ENDIAN#define bswap(cb) register char c; c=cb0;cb0=cb3;cb3=c; c=cb1;cb1=cb2;cb2=c; c=cb4;cb4=cb7;cb7=c; c=cb5;cb5=cb6;cb6=c; #endifvoidsetlokikey(loki_ctx *c,char *key) register i; register Long KL,KR;#ifdef LITTE_ENDIAN bswap(key);#endif KL=(Long *)key)0; KR=(Long *)key)1; for (i=0;iloki_subkeysi=KL; ROL12(KL); c-loki_subkeysi+1=KL; ROL13(KL); c-loki_subkeysi+2=KR; ROL12(KR); c-loki_subkeysi+3=KR; ROL13 (KR); #ifdef LITTE_ENDIAN bswap(key);#endifvoidenloki(loki_ctx *c,char *b) registe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论