1、 本科毕业论文 ( 20 届) 混合密码体制的研究 所在学院 专业班级 信息与计算科学 学生姓名 学号 指导教师 职称 完成日期 年 月 I 摘要 近年来 , 有不少专家和学者致力于密码学的研究 , 并研发出相关的安全产品 , 为推动网络通信、数字签名等的发展作出了巨大的贡献 . 对称加 密 密钥 算法具有高速 、 高效和便于实现的特点 , 但它存在密钥分配和管理上的缺陷 . 而非对称加密 密钥 算法具有密钥分发和管理简单 , 但是速度比较慢的特点 . 本文使用 AES 对称加密 密钥 算法 进行 加密 ,并且生成 报文数据 , ECC 非对称加密 密钥 算法生成数字签名 , 从而既保障了数据
2、在网络传输过程中的安全性 , 又完成了数字签名 . 这种基于AES 和 ECC 的混合体制可以有效提高信息传输的安全性和高效性 . 关键词: 密码学 ; AES; ECC; 混合密码体制 ; 网络安全 II Abstract In recent years, many experts and scholars have worked at the study of cryptography and have developed related security products, which make the enormous contribution to the development o
3、f network communication and digital signature. Symmetric algorithm is characterized with high speed, high efficiency and easy implementation, but it has defects in key distribution and management. Asymmetric algorithm has simple key distribution and management, but its speed is slow. This paper uses
4、 AES and ECC to encrypt messages and create digital signatures respectively, which not only provide strong security guarantee in the course of data transmission, but also realize digital signature. This hybrid cryptosystem based on AES and ECC can effectively enhance the security and efficiency in d
5、ata transmission. Keywords: Cryptography; AES; ECC; Hybrid cryptosystem; Network security III 目 录 摘要 . I Abstract . II 1. 前言 . 1 1.1 研究的相关背景 . 1 1.2 密码技术的发展历史 . 1 1.3 密码学的研究现状 . 2 1.3.1 对称算法的现状 . 2 1.3.2 公钥密码算法的现状 . 2 2. AES 和 ECC 密码体制 . 4 2.1 AES 算法的实现 . 4 2.1.1 AES 算法的数学基 础 . 4 2.1.2 AES 算法的结构描述 .
6、 5 2.1.3 AES 算法的轮变换 . 5 2.1.4 AES 算法的加解密 . 8 2.2 ECC 算法实现 . 9 2.2.1 ECC(椭圆曲线算法 )的数学基础 . 9 2.2.2 椭圆曲线 .11 2.2.3 椭圆曲线的运算法则 . 13 2.2.4 椭圆曲线密码体制的参数选取 . 14 2.2.5 椭圆曲线密码的加解密 . 15 3. 基于 AES 和 ECC 的混合密码体制 . 17 3.1 混合密码体制 (AEC+ECC)的工作原理 . 17 3.2 混合密码体制 (AEC+ECC)在电子文档 (ED)中的应用 . 17 4. 小结 . 19 参考文献 . 20 致谢 . 错
7、误 !未定义书签。 1 1. 前言 1.1 研究的相关背景 随 着计算机和网络 技术的快速发展和广泛使用 , 通信的网络化 , 数字化和智能化的不断加快 , 人们生活中对计算机和网络的依赖性也越来越大 . 工作在各个行业和领域的人员越来越多地利用计算机和网络来进行数据的储存 , 传递和互换 , 用户对于信息的安全和保护的要求越来越迫切 . 倘若计算机和网络系统的安全受到危害 , 那么就会危 及 个人 、 集体甚至是国家的安全 , 并会造成重大的损失 . 因此 , 如何有效地保障计算机和网络系统的安全已经成为信息化建设和发展的关键研究领域 . 为了保护网络通信的安全和电子商务技术的快速发展 ,
8、技术人员对网路通信 , 特 别是电子商务和电子政务 1的安全技术进行了大量的研究和探讨 , 发展自主的加密技术已经成为一个首当其冲的课题 . 近年来 , 有不少专家和学者致力于密码学的研究 , 并研发出相关的安全产品 , 为推动网络通信 、 数字签名等 的发展 作出 了 巨大的贡献 . 1.2 密码技术的发展历史 说到密码学 , 最早时期的密码应用可以追溯到几千年前的古罗马 . 正如人类历史进程中其它技术的发展一样 , 密码 加减密 技术的发展 也 经历了人工阶段 , 机械阶段和电子阶段 这 3个不同的阶段 . 经过了长期的发展 , 密码技术也日趋与人类的生活和科技的发展紧密的结合在一起 .
9、并且使得近代密码学成为了现如今重要而且热门的学科 : 密码学 2. 其实 , 在第一次世界大战之前 , 密码技术的进展很少 被人们所认知 , 一直到 1918年学者William F. Friedman 发表了 论文 “ 重合指数及其在密码学中的应用 ” , 情况才有所转变 . 1949年 , Claude Shannon 也发表了 论文 “ 保密系统的通信理论 ” , 为密码学的发展奠定了坚实的理论基础 3. 直 至 1967 年,密码学文献 其实还 都 近乎 空白 . 1967 年 , David Kahn 收集并整理了一战和二战的大量史料 , 并创 作出版了图书破译者 , 其为密码技术的
10、公开化 , 大众化拉开了新的篇章 . 此后 , 密码学的 大量的资料和文章被人们所认知 . 20 世纪 70 年代是密码学发展的重要时期 , 其中有两件重大事件发生 : 一是美国国家标准局 NBS(National Bureau of Standards)开始数据加密标准的征集 . 1975 年 3 月 7 日 , NBS 在 Federal Register 上 向学者们 公布了一个候选算法 , 并且在 次年被正式确认为联邦标准 DES. 授权在政府通信中使用 , 并于1977 年被 NBS 公布实施 . 从而 它的加密算法 被公 诸于世 . 从那之后 , 密码学的神秘面纱终于被揭开 4;
11、二是 Diffie 与 Hellman 于 1976 年 11 月 发表的 革命性论文 “ 密码学新方向 ” , 它2 向世人公布了 公开密钥密码学研究的新领域 , 并且成为了 现代密码学的一个里程碑 . 在密码学的发展过程中 , 数学和计算机科学这两者之间是密不可分的 . 密码学涉及到数学中的许多分支知识 , 譬如数论 , 概率统计 , 信息论 , 椭圆曲线理论 , 算法复杂性理论和编码理论等 . 并且密码学的迅速发展还推动了并行算法的发展和研究 , 从而密码学成为了学者和专家们近年来一个引人入胜的研究领 域 5. 1.3 密码学的研究现状 1.3.1 对称算法的现状 对称算法 (symme
12、tric algorithm) 6, 有时又被称为传统密码算法 , 其加密密钥能够从解密密钥中推算出来 , 反之 , 解密密钥也 能 从加密密钥中推算出来 . 而在大多数的对称 密钥 算法中 , 加密密钥和解密密钥其实是相同的 . 所以也称这种加密算法为秘密密钥算法或者是单密钥算法 . 使用它之前 , 必须要保证发送方和接收方提前约定 一个密钥 . 对称算法的安全性完全 依赖于密钥 的安全性 , 泄漏 了 密钥就意味着 其他 任何人都可以对发送或接收的 两方 消息进行 非法窃取或 者破坏 , 因此 , 使用对称算法我们必须保证密钥的保密性 . 对称加密的优点在于算法实现的效率高 , 速度快 .
13、 然而这也暴露出许多缺陷的地方 . 首先是密钥量的问题 . 在 单密 钥密码系统中 , 每一对相互通信的使用者 就需要一对密钥 , 长此以往 , 随着用户的增加 ,密钥量也会随之成倍地增长 . 因此 , 在计算机网络通信中 , 密钥的大量产生就会是一个庞大而繁重的工程 . 其次 , 是 密钥的分发问题 . 在单 密 钥密码系统中 , 通信者之间 的安全 问题就 完全依赖于 他们 对密钥的保护 , 但由于发送者和接受者使用的是相同的密钥, 而这个密钥他们也都 是必须知道的 , 所以为了保证密钥的安全性 , 我们 必须使用一些其他一些相对安全的渠道来分发密钥 , 譬如我们使用专门的信使来 分发 密
14、钥 . 然而 事实上 , 此 种 做法 的 工作量 是 非常巨大 的 , 甚至 可以 认为 是完全不现实的 , 尤其是在当今人们对计算机的普遍使用的情况下 , 如果通信者之间使用网络来传送加密的文件时却需要另外的更为安全的信道来分发密钥 , 这使得简单的密钥分发过程变得需要更为复杂的密钥产生过程 . 因 此 , 这样一个复杂的问题需要人们研究出新的解决方法 . 我们常用的对称加密算法有DES, DEA 和 AES 等 . 1.3.2 公钥密码算 法的现状 从上面对对称密码的阐述中我们可以知道 对称密码系统存在难以解决的缺点 , 因此发展一种新型的 、 更有效的密码体制 就 显得 极 为迫切和
15、重要 . 在这种情况下 , 人们研究出一种新的公钥密码体制 , 它突破性地解决了困扰着无数科学家的难题 , 密钥分发的问题 . 这一全3 新的思想是 在 21 世纪 70 年代 由 美国斯坦福大学的两 位著名 学者 Diffie 和 Hellman 提出的 ,单 密 钥密码 体制与其 最大的不同 在于 : 在公钥密码系统中 , 加密 密钥与 解密 密钥是不同的 7 (较 于对称密钥 , 我们也经常 把它 称做 非对称密钥 ), 并且 这两个密钥之间存 在着 一定 的 关联性 , 无论使用 其中 哪一个 密钥加密 (加密密钥或解密密钥 ), 其获得 的 结果 只能 由 另一个密钥来 进行解密 .
16、 这也令通信者之间 无需 相互 交换密钥就可进行安全 的 通信 . 另外还有一个显著的特点就是 , 公钥密码系统中的 加密密钥和算法是 向世人 公开的 , 任何人 都可以通过使用这个 加密 密钥 对文件进行 加密 , 然后发 送给对方 . 加密密钥称为公钥 , 当对方 收到加密 后 文件 , 他 就 可以使用自己的解密密钥 对收件进行解密 , 而 这个密钥是由 收信者独自 掌管的 , 并不需要分发给其他人 , 这样别人也不可能知道这个解密密钥 , 故而我们 称 之 为私 钥 , 从而我们就解决了密钥分发的难题 . 4 2. AES 和 ECC 密码体制 2.1 AES 算法的实现 2.1.1
17、AES 算法的数学基础 l) 有限域与域上的多项式 有限域是 指有 限个元素的域 , 域的阶 就是其 中元素个数 . q 阶域存在当且仅当 nqp ,并称为有限域的特征 是 p , 并且 p 是素数 , 有限域记为 ()nGFp . AES 算法中 有 如下 两种 形式的 2 域上的多项式 : 2 3 4 5 6 70 1 2 3 4 5 6 7( ) , ( 2 )ib x b b x b x b x b x b x b x b x b G F , (2.1) 2 3 81 2 3( ) , ( 2 )ia x a x a x a x a G F , (2.2) 其中 ()bx 表示 AES
18、 算法中的单字节 (Byte)数据 , ()ax 表示 AES 算法中的 4 字节 (4Bytes)或字 (word)数据 . 单字节也可以用数据向量 0 1 2 3 4 5 6 7 , , , , , , , b b b b b b b b六进制数 , mn 表示 . 2) 字节运算与字运算 (1) 单字节 (Byte)运算 单字节运算是两个 类似于 (2.1)和 (2.2)的多项式运算 . a) 单字节加法 : 两多项式相同指数项系数的模 2 加 , 用符号 表示 . b) 单字节乘法 : 两多项式模 ()mx 乘,用符号 表示 . ()mx 为 8 次既约多项式8 4 3 1x x x
19、x , 模 ()mx能保证 相 乘后的多项式始终在 8(2)GF 上 . (2) 字 (Word)运算 字运算为两个形如下的多项式的运算 : a) 字加法 : 两多项式的相同指数项系数的对应比特的模 2 加 . 例 2.1 230 1 2 3()a x a a x a x a x , 230 1 2 3()b x b b x b x b x , 则 230 0 1 1 2 2 3 3( ) ( ) ( ) ( ) ( ) ( )a x b x a b a b x a b x a b x . (2.3) b) 字乘法 : 两多项式模 ()mx 乘,用符号 表示 . ()mx 是可约多项式 4 1
20、x , 模上()mx 后保证字乘之后的结果仍为一个字 . 由于 ()mx 不是 8(2)GF 上的不可约多项式 . 故5 并非所有的多项式在 ()mx 下均有乘法逆元 . 2.1.2 AES 算法的结构描述 Rijndael8算法是一个密钥长 和 数据块长 都可变 的分组迭代加密算法 , 密钥长 和 数据块长 可以是 128, 192 或 256 比特 , 但是为了满足 AES 算法 的要求 , 密钥长度为 128, 192 或 256比特 , 分组长度为 128 比特 . 在数据处理中 , 需要对 数据块 进行 多次的转换 , 并且 每次 的 转换操作 都会 产生一个中间 值 , 我们也称之
21、为 状态 . 状态可表示为二维字节数组 , 它有四行 , Nb 列 , 并且 Nb 的值等于 数据块 的总 长 度 除以 32 所得到的值 , 我们称之为 状态矩阵 9, 在标准 的 AES 里 Nb 默认为 4. 同理 , 密钥也可 以 表示 成 四行 , Nk 列 的 二维字节数组 , Nk 的值 等于密钥块 的总 长 度 除以 32 所得到的值 . Nb 和 Nk 决定 了 算法转换的轮数 Nr, 具体值列在表2.1 中 . 表 2.1 在不同 Nk 和 Nb 下轮的数值 Nr Nr Nb=4 Nb=6 Nb=8 Nk 10 12 14 Nk 12 12 14 Nk 14 14 14 A
22、ES 采用的是替代 /置换 (SP)网络结构 . 每一轮由 3 层组成 : 1) 非线性层 : 进行 SubByte 变换 (即 S 盒替换 ), 起到混淆的作用 . 2) 线性混合层 : 进行 ShiftRow 行变换运算和 MixColumn 列变换运算以确保多轮之上的高度扩散 . 3) 密钥加层 : 子密钥简单的异或到中间状态上 . 2.1.3 AES 算法的轮变换 轮变换由 S 盒变换 , 行变换 , 列变换和轮密钥加 这 4 种 不同的变换组成 , 下面我们 用 C#语言伪代码 来阐述 : Round(State,RoundKey) SubByte(State); ShiftRow(
23、State); MixColumn(State); AddRoundKey(State, RoundKey); 6 最后一轮稍有不同 , 少了 MixColumn(State)函数 , 即为 : FinalRoond(State, RoundKey) SobByte(State); ShiftRow(State); AddRoundKey(State, RoundKey); 关于轮变换中的各个变换介绍如下 : l) SubByte变换 SubByte变 换即 S盒运算 , 这个 S盒 (也称之为替换表 )是可逆的 , 并且它是由两个变换 之间相互 复合而成 , 每 一 个字节 S盒 中都进行了
24、 非线性运算 . 其中的 两个变换 分别如下 : (l)在有限域 8(2)GF 中 , 求出 所有的子字节 的 乘法逆 , 其中 规定 了 00的逆为 00, 01的逆为 01; (2) 由第一步 的 处理 之 后 的结果再 进行 下面 的仿射转换 : 00112233445566771 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 01 1 1 1 0 0 0 01 1 1 1 1 0 0 01 1 1 1 1 1 0 10 1 1 1 1 1 1 10 0 1 1 1 1 1 0yxyxyxyx . 其 中 S 盒就是由这两部的变换构造出来的 , 每一个字节在 S 盒内的 变换运算 用SubByte(State)来记 . 此变换是由 S 盒表 来查找 这个字节对应的多项式 , 然后 再 对 该字节 进行替换 . 类似 , 逆 S 变换 运算其实也 是通过查 找到相应的 逆 S 盒 中的 表 , 然后在对该 字节 进行替换 , 我们也称这种变换运算为 逆仿射变换运算 , 最后通过之前的步骤 求 出所需要 字节 的 乘法逆 . C#代码 的详细内容 请参见附录代码 SubBytes. 2) ShiftRow变换 ShiftRow变换 即将其中每个状态的行 以不同的位移 进行左平移 . 第 0行不 移动 , 第 1行 向