logo资料库

基于单片机的实时3DES 加密算法的实现.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
Ξ 第 3 期 2000 年 8 月 微 处 理 机 M ICRO PROCESSOR S N o. 3 A ug. , 2000 基于单片机的实时 3D ES 加密算法的实现 郑 磊  易 波 国防科技大学电子工程学院 (长沙 410073)   摘 要 首先简要介绍了 3D ES 加密算法, 接着给出了用单片机来实时实现该算 法时为了提高运算速度而采用的两种方法, 并给出了实际测试结果。 关键词 信息安全 3D ES 并行存储 并行处理 The Im p lem e n ta tion of the Re a l- tim e 3D ES Enc ryp tion A lgo rithm B a s e d on the S ing le C h ip C om pute r ZhengL ei, et al C olleg e of E lectron ic E ng ineering , N a tiona l U n iversity of D ef ence T echnology , C hang sha 410073   Abstract T he 3D ES encryp tion algo rithm is b riefly in troduced in th is p ap er at first, and tw o m ethod s w h ich are u sed to save com p u ting tim e in the im p lem en tation of th is algo rithm are p rovided, at last the resu lt of the p ractical test is attached. Keywords info rm ation secu rity, 3D ES, p aralle sto rage, p aralle p rocessing 1 引 言 2 3D ES 加密算法简介 现代社会已进入信息时代, 社会的发展越 来越需要信息安全技术的广泛应用。 而单片机 技术是迄今为止发展较为成熟且应用非常广泛 的一门技术, 如果能够将单片机技术和信息安 全技术紧密结合起来将对信息安全技术的广泛 应用起到强有力的推动作用。 数据加密技术是信息安全技术的核心, 许 多优秀、成熟的加密算法 (如 3D ES 1 、R SA 2 ) 的运算复杂度都非常大。 由于单片机的工作频 率一般不高, 机器字长较短, 指令的位运算功能 不强, 因此使用它来实现这些算法时运算速度 通常无法满足实时应用的要求, 如何提高用单 片机实现这些算法时的实时运算速度已成为实 现这一结合急待解决的问题。 本文针对这一问 题给出了用单片机来实现 3D ES 加密算法时提 高实时运算速度的两种方法。 男, 24 岁, 硕士研究生, 研究方向: 数据压缩和数据加密  收稿日期: 1999- 11- 26 3D ES (又名 3 重 D ES) 加密算法是基于 (D ata Encryp tion Standard) 且强度更高 D ES 2 的一种加密算法, 其算法可以用式 (1. 1) 和式 (1. 2) 表示。 令 D ESK 表示密钥 K 作用下的加 密变换, 且 D ES- 1 K 为相应的解密变换。 128b it 密钥 K 被分成密钥 KL (K 的左边 64 b it) 和 KR (K 的右边 64 b it)。 明文M 被加密成 C= D ESKL [D ES- 1 (1. 1) KR [D ESKL (M ) 密文 C 的解密过程是加密的逆过程 KL (C) KL [D ESKR [D ES- 1 M = D ES- 1 (1. 2) 由式 (1. 1) (1. 2) 不难看出, 提高 3D ES 运 算速度的关键是如何提高D ES 算法的运算速 度。D ES 算法的运算步骤如图 1, 其中耗时最多 的是乘积变换部分 (其原理见图 2, 图中L I- 1 和 R I- 1分别是进行一次迭代时的左边 32 比特和右 边 32 比特) , 如果能减少这部分的用时则整个算
 3 期 郑磊等: 基于单片机的实时 3D ES 加密算法的实现 ·14· 法的运算速度将得以提高。 下面给出了用单片机 来实现该算法时提高运算速度的两种方法。 3 通过改进选择压缩运算 S 的查找策 略来提高 3D ES 的运算速度 传 统 的 选 择 压 缩 运 算 S 将 前 面 送 来 的 48b it 数据自左至右分成 8 组, 每组 6b it, 而后 并行送入 8 个 S 盒, 每个 S 盒输出 4b it。 以 S1 (见表 1) 为例, 当输入的数据为 x 6x 5x 4x 3x 2x 1 时, 先 找 到 x 6x 1 对 应 的 S1 中 的 一 行, 再 找 x 5x 4x 3x 2 对应的 S1 中的一列, 行列交叉处的数 据即为 x 6x 5x 4x 3x 2x 1 经过 S1 的输出, 这种查找 方法是二维查找。用单片机实现这一过程时, 首 先要从 x 6x 5x 4x 3x 2x 1 这六个比特位中提取 x 6x 1 这两位, 分别计算出 x 6x 1 和 x 5x 4x 3x 2 的值, 然 后在表 S1 中进行二维查找。由于用单片机实现 位提取时要用到多句的位运算指令, 这就使得 在完成乘积变换的 16 次迭代时要在这部分耗 去大量的时间, 而且二维查找也使算法执行速 度降低。 图 2 乘积变换框图 ( I= 1~ 16) 表 1 S1 函数 列 行 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 1 4 8 2 15 2 6 9 2 14 13 4 13 7 14 8 4 15 1 12 14 0 4 15 11 13 2 1   通过改进选择压缩运算 S 中的查找策略可 以大量减少位运算且将原来的二维查找变为一 维查找, 而运算结果与原来的选择压缩运算 S 的运算结果完全一致。 在选择压缩运算 S 中改 进后的查找策略是将原有的各 S 盒重新排列, 得到新的 S′盒, 其输出是输入的线性函数且与 S 盒等价。 具体的排列方法是这样的: 以 S1 为 例, 将 S1 表中的每个值按其对应的二进制数 x 6x 5x 4x 3x 2x 1 (x 6 是最高位, x 1 是最低位) 按由小 到大的顺序排列成一个一维数组 S1′(见表 2) , 当 输 入 为 x 6x 5x 4x 3x 2x 1 时, 输 出 为 S1′ [ x 6x 5x 4x 3x 2x 1 ]。 例 如, 输 入 x 6x 5x 4x 3x 2x 1 = 101100 时, 按以前的查找方法将在 S1 的第二 行 (x 6x 1= 10) 第六列 (x 5x 4x 3x 2= 0110) 交叉处找 到 输 出 值 2; 而 采 用 新 的 查 找 方 法 只 需 由 12 11 7 14 6 12 9 2 9 5 10 0 5 9 3 10 10 6 12 11 3 10 15 5 8 1 11 7 x 6x 5x 4x 3x 2x 1 = 101100 = 38 在 S1′中 找 到 S1′ 38 = 2 。 其它七个 S 盒也采用类似方法进行 重排。 7 8 0 13 0 3 5 6 新的查找方法不需要进行位提取, 这就省 去了大量的位操作, 而且新的查找方法进行的 是一维查找, 因此使得整个运算速度得以提高。 在用单片机实现加密算法时可以将重新排列得 到 S1′盒按一维数组的方式存放在内部 ROM 中, 每个 S1′盒占用 ROM 中连续的 64 个字节。 4 采用数据并行存放的方式来提高运算 速度 通常人们使用硬件来实现 3D ES 加密算法 时, 明文、密文以及中间数据都是按位连续存放 的。 如 64b it 数据 d1d2d3. . . d63d64在 RAM 中的 存放方式见表 3。
·24· 微 处 理 机 表 2 S1′函数 2000 年  输入 x 6x5x 4x3x 2x 1 输出 输入 x 6x5x4x 3x2x 1 输出 输入 x6x 5x4x 3x 2x1 输出 输入 x6x5x 4x3x 2x 1 输出 000000 000001 000010 000011 000100 000101 000110 000111 001000 001001 001010 001011 001100 001101 001110 001111 14 0 4 15 13 7 1 4 2 14 15 2 11 13 8 1 010000 010001 010010 010011 010100 010101 010110 010111 011000 011001 011010 011011 011100 011101 011110 011111 3 10 10 6 6 12 12 11 5 9 9 5 0 3 7 8 100000 100001 100010 100011 100100 100101 100110 100111 101000 101001 101010 101011 101100 101101 101110 101111 4 15 1 12 14 8 8 2 13 4 6 9 2 1 11 7 110000 110001 110010 110011 110100 110101 110110 110111 111000 111001 111010 111011 111100 111101 111110 111111 15 5 12 11 9 3 7 14 3 10 10 0 5 6 0 13 表 3 一般的数据存放方式 d1d2d3d4d5d6d7d8 d9d10d11d12d13d14d15d16 …d57d58d59d60d61d62d63d64    第一字节    第二字节       …   第八字节 这种存放方式使得在乘积变换中对数据进 行选择扩展运算 E 和置换运算 P 时要用到大 量的位运算, 从而严重影响了 3D ES 的运算速 度, 限制了它的实时应用。 我们将采用一种新的数据存放方式, 即将 每组数据的 64 个比特位分开分别存放到 64 个 字节中, 属于同一组数据的各个比特占用每个 字节中相同位置的比特位, 这样 64 个字节可以 并行存放 8 组数据。 例如有 8 组数据 a~ h, 每 个字母代表一组 64b it 的数据, 属于同一组数 据的不同比特位用字母加下标表示, 这样这八 组数据的存放方式如表 4。 表 4 改进后的数据存放方式 第 1 字节 第 2 字节 第 3 字节 第 4 字节 … 第 63 字节 第 64 字节 高位    低位 a1b1c1d1e1f1g1h 1 a2b2c2d2e2f2g2h 2 a3b3c3d3e3f3g3h 3 a4b4c4d4e4f4g4h 4 … a63b 63c63d63e63f63g63h 63 a64b 64c64d64e64f64g64h 64 数据采用这种方式存放后, 在进行选择扩 展运算 E 和置换运算 P 时将不必象以往那样 频繁地使用位操作指令, 替代它们的是简捷的 字节交换; 而且由于数据是按位并行存储的, 所 以每做一次换位运算时八组数据同时得到了处 理, 这种并行处理的方式大大提高了整个算法 的运算速度。 数据采用这种方式存放后在进行 选择压缩运算 S 时, 先要从不同的字节中提出 属于同一组数据的连续 6 个比特位, 然后计算 出它们表示的二进制值, 因此使得采用这种方 式存放后的选择压缩运算 S 耗时比以前略长, 但是由于有并行处理的优势 (对于机器字长越 长的单片机这种优势越明显, 当机器字长为 16 位时可以并行处理 16 组数据) , 整个 3D ES 算 法的速度还是有了很大的提高。 5 实际测试结果 笔者用 A T 89C51 3 实现 3D ES 加密算法 时 (使用 8M 的外部时钟) , 采用以上介绍的两 种方法后对 64 byte 字节明文进行加密所用的 时间由以前的 150m s 提高到 12m s (也即42. 7k s) , 完全满足了通过调制解调器进行串行 b it 通信的需要。 由以上的分析和实际测试的结果我们可看 出, 本文给出的两种方法切实可行, 而且可以作 为用单片机实现别的加密算法时提高运算速度 的借鉴。 参考文献 1 刘尊全著. 刘氏高强度公开加密算法设计原理与装 置. 北京: 清华大学出版社, 1998 2 王育民, 何大可著. 保密学—— 基础与应用. 西安: 西安电子科技大学出版社, 1990 3 余永权著. A TM EL 89 系列 (M CS- 51 兼容) F lash 单片机原理及应用. 北京: 电子工业出版社, 1997
分享到:
收藏