




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【蘩蘩】 【关键字】 本文谨蹋芗卜缀了掰熬黉级蕊密标准a e s 算法( r i j n d a e l ) 静蕊密祭 密流程,分析了该算法自身的特点,解开了算法阿部的轮循环,代 之以流水线的方式实现。而且本文还分析了每次轮操作的内部过程, 对轮操雩罄肉部戆撬嚣逸行台著黧篱纯,觚嚣裹遴窳瑗了a e s 舞法豹 加密和解密。 a e s 算法、流水线、轮操作 a b s t r a c t i nt h i s p a p e r i td e s c r i b e st h ef l o w o fc r y p t i o na n d d e c r y p t i o no f a e sa l g o r i t h m ( r i j n d a e l ) ,a n a l y z e st h ea t t r i b u t e o fa e s ,a n di m p l e m e n t si tu s i n gp i p e l i n eb yu n l o o p i n gi t si n n e r r o u n do p e r a t i o 矗a n db ya n a l y z i n gt h ei n n e rp r o c e s so fe a c h r o u n do p e r a t i o n ,t h i sp a p e r a c h i e v e st h eh i g h s p e e d i m p l e m e n t a t i o n o fa e su s i n gc o m b i n a t i o na n ds i m p l i f i c a t i o nf o r p r o c e s s k e y w o r d a e sa l g o r i t h m ,p i p e l i n e ,r o u n do p e r a t i o n 浙江大学硕士生毕业论文 1 加密标准背景概述 本世纪7 0 年代到8 0 年代,随着计算机技术的普及应用,尤其是军队和政府 对计算技术的需求量增大,人们发现计算机安全成了当务之急。需要解决的问题 是确保信息系统中硬件、软件及正在处理、存储、传输信息的保密性、完整性和 可用性。这一时代的标志就是1 9 7 7 年美国国家标准局( n b s ) 公布的国家数据 加密标准( d e s ) 。 由i b m 于2 0 世纪7 0 年代初开发的数据加密标准( d a t ae n e r y p t i o ns t a n d a r d , d e s ) 于1 9 7 7 年被美国政府采用后,作为商业和非保密信息的( 加密) 标准, 在政府和银行业得到了广泛的应用,成为全世界最广泛使用的加密算法。这种广 泛使用的加密方法的逻辑被植入硬件( v l 斟芯片) 而使它速度更快。 然而,随着社会的发展的科技的进步,d e s 在其初期就取得的硬件方面的优 势已经成为阻碍其发展的因素,日益显出衰老的痕迹。一方面,d e s 尽管很复 杂,它还是不够安全。因为d e s 算法的有效密钥只有5 6 比特。2 “e7 x 1 0 ”种 可能的密钥值。然而,随着更快的处理器的出现和大规模并行处理系统的发展, 使得计算机比以前的计算速度快得多。因此,这个数字并不像以前那样巨大,在 某种意义上说,它是很小的。另一方面,有些人觉得d e s 算法中替换的合理性 从来就没有完全解释清楚。他们的担心是在替换中可能有些东西会损坏密文的完 整性,或者在d e s 算法中存在不为人知的“后门”。所有这些,都使得人们开始 期待一种更安全、更为公开的加密标准的出现。 1 9 9 7 年4 月1 5 日美国国家标准和技术研究所n i s t 发起了征集a e s 算法的 活动,并成立了专门的a e si 作组,目的是为了确定一个非保密的公开披露的 全球免费使用的分组密码算法,用于保护下一世纪政府的敏感信息,并希望成为 秘密和公开部门的数据加密标准。1 9 9 7 年9 月1 2 日在联邦登记处公布了征集 a e s 候选算法的通告。a e s 的基本要求是:比三重d e s 快,而且至少和三重 d e s 一样安全,分组长度1 2 8 比特,密钥长度为1 2 8 1 9 2 2 5 6 比特。1 9 9 8 年8 月 2 0 日n i s t 召开了第一次候选大会并公布了1 5 个候选算法。1 9 9 9 年3 月2 2 日 举行了第二次a e s 候选会议,从中选出5 个a e s 将成为新的公开的联邦信息处 鞭汪太学硬士擞毕魏论文 理标准( f i p s - f e d e r a li n f o r m a t i o np r o c e s s i n gs t a n d a r d ) ,用予荧图政府组织保护 敏感信息的种特殊的加密算法。美国国家标准技术研究所( n i s n 预测,a e s 会技广泛地应用于组织学院及个人。入选a e s 的五种算法怒m a r s 、r c 6 、 s e r p e n t 、t w o f i s h 羁戤j n d a e l 。2 0 0 0 年1 0 胄2 瓣,美嚣囊务鼙部妖n o r m a n ¥m i n e t a 宣布,经过三年来世界溪名密码专家之间驹竞争,r j j n d a e l 数獬加密算法最终获 胜。为此而在全球范围内角逐了数年的激烈竞争宣告结束。这新加密标准的问 世将取代d e s 数据加搿标准成为2 1 世纪保护国家敏感信息的糍级算法。 蘧黄网终逶痿熬发矮,传送数据量抟不凝矮大,在菜些盛耀场会,对热解密 蘧发豹需求成为对a e s 髯法的最关键要求。嚣瑟,本文详缨分析了a e s 算法酌 特点,对算法进行了改进,提出了一种高速实现a e s 的硬件设计方法。 2 浙牲大学硕士嫩毕业论文 符号和习惯用语 1 。1 输入和输出 a e s 算法的输入和输出各由一个1 2 8 一b i t 的序列组成。该序列有对也被表示 为数据块,并且它们的长度用所甑含的比特数来表示。a e s 算法的密铜是一个 1 2 8 ,1 9 2 蠛2 5 6 b i t 的序列。其余的输入,输出和密钥长发不受限傣虬 序列中的比特被从0 到数据块的长发减1 避行编号。与一个比特相对应的数 字f 是它戆- f 标,莠量奁0 s f s l 2 8 ,0 f 1 9 2 或者0 ;2 5 6 戆范围之痰,蔹 赖于数据块的长度和密钥的长度。4 1 2 字节( b y t e ) 在a e s 算法运算中的基本单位是一个字节,一个作为单独实体的8 比特序 列。逶过怒输入、藏出蟊密锈戆院特亭蘸按每8 令连续毯:特迸舒瓠分可驻擒或字 节的数组。如果用口来代表输入、输出或密钥,那么得到的数组中的字节可以用 下面两种形式之一来表示:a n 或a 嘲,弹处于下掰凡个范围之一之中: 密钥长发一1 2 8 b i t ,0 蔓辩 1 6 ;数攒块长度一1 2 8 b i t ,0 s ”1 6 ; 密钥长魔= 1 9 2b i t ,0 篓栉 2 4 ; 密钥长痰= 2 5 6 酸,0 拧 3 2 。 在a e s 算法中,所有字节的值用括号中单独比特值的依次串联来表示 侈,6 6 ,b 5 ,钆,b 3 ,b 。,b ;, 。这些掌节靥多项式表示霹解释为有限躐中静元豢: 7 岛茗7 苫+ 热茹5 + 毛芏4 岛z 3t 恐了2 氟薯,氐= 龟x 。 弦1 ) i - o 铡籁, 0 1 1 0 0 0 1 l ;虢代表了特定豹鸯陵蠛嚣豢+ x 5 + x + i 。 这也是一种惯例,将字节的馕分成两个四比特用十六避制的符号来表示,如 图l 所示。 新江太学镬士生毕业论文 院特籍专毖褥簿母豫特搀号魄特蓉号 0 0 0 000 1 0 0 4 1 0 0 0 8 1 1 0 0e 0 0 0 1 lo l o lsl l9l l o d 0 0 1 0 2o l l 06i 番1 0al i l oe 0 0 1 l30 1 1 171 0 1 1b1 1 1 1f 妥毙鐾瓣焱进铹蓑零 霆鼗,元素静| l o l l 藏哥致被液示为 6 3 1 ,瓣魄特缀孛鼷学簸嘉净芍豹跑 特在左边。 一些荫限域豹搽伟会在一个g - b i t 字节驹左选鞭添加一个院特散) 。当簧液示 这一个姆辩,会显嚣为玲l 嚣嚣紧鼹菪一个8 - b i t 豹字繁;移l | 强,一个9 - b i t & 窿魏会被袭示袋酗搀磅。 。 1 。3 掌带数缝 字节数缀会用以下的形式表示: 。 a o a t a 2 + a 1 5 字繁帮掌蒂孛波特豁暇痔添爨1 2 8 - b i t 秘赣入侉捌 i n p u t 。i n p u t l i n p u t 2 趣掣f l 描l ,妒镌籍 按以下方式: 球。= 蠢骂别,i n p u t , ,施矽掰7 ; 啦= i p u t 8 ,i n p u t ,i n p u t l s ; 一 鞠5 = 螽驴l 疗1 2 0 ,i n p u t l 2 l ,i n p u t , 玎 。 这一模式哥疆棱扩展戮更长静寄裂( 魄蠹说 1 9 2 - t 匪2 5 6 - b i t 戆蜜爨t 羧戴, 通常: 浙江大学硕士生毕业论文 a 。= i n p u t b 。,i n p u t 8 。+ 1 ,i n p u t 8 。+ 7 )( 2 2 ) 图2 显示了在每个字节中比特是如何被编号的。 输入序列 ol234567891 01 l1 21 31 4】5 字节编号 0l 比特编号 7 6 5432l0 065 4 3210 1 4 状态矩阵( s t a t e ) 图2 字节和比特编号 在内部,a e s 算法的操作是在一个二维的字节数组上进行的,这个数组我们 叫它状态矩阵。状态矩阵智四行,每行包含了 仍个字节,这里6 等于数据块 的长度除以3 2 。在用j 表示的状态矩阵中,每个字节有两个下标,一个是行号, 0 r 4 :一个是列号c ,0 c n b 。这样状态矩阵中的一个字节可以被表示 为s 。或者j p ,c 。在这一标准中,册= 4 ,也就是说,0 c 4 。 在加密或解密的开始,输入一一字节数i n 。,加l ,一,i n 。,一一被拷贝到状态矩 阵中,如图3 所示。然后,加密或解密操作在状态矩阵中被执行,执行完毕后, 最终的结果被拷贝到输出一一字节数组o u t o ,o u t l ,o u t l 5 。 输入字节 状态矩阵输出字节 圈3 状态矩阵及输入、输出 因此,在加密或解密之初,输入数组,i n ,被拷贝到状态矩阵中,依照下面 公式: 浙江火学硕士生毕业论文 s p ,c - - m p + 4 c 】 o 墨, 4 ,o 墨c n b ,( 2 3 ) 并且,在加密兢解密结束后,状态矩阵被拷贸到输出数组,o u t ,依照下面 公式: o u t r + 4 c = j p ,c 1 0 r 4 , 0 c n b 。( 2 4 ) 1 5 状态矩阵可被视为列的数组 状态矩阵中每一列的四个字节构成一个3 2 - b i t 的双字( w o r d ) ,在每个双字中, 稽骛,可髂为每个字节静编号:嚣魏,捩态矩箨哥被解释为一个3 2 - b i t 双字豹一 维数组,w o 屹,该数组中列号c 可提供索弓i 。因此,在阁3 的例子中,状态 矩降可被视为一个包含四个双字的数组,如下: 。s o ,o s l ,o s 2 ,0 s 3 0 w 22 2 s l 。2 s 2 。2 s 3 ,2 55 0 i s l 。1 5 2 ,i s 3 ,1w 3 = 3 0 3 8 1 , 3 s 2 。,j 3 j ( 2 t 5 ) 6 浙江大学硕士生毕业论文 2数学基本知识 a e s 算法中的所有字节都用在2 2 节中介绍的符号表示为有限域中的元素。 有限域的元素可以进行加和乘的运算,不过这些运算有别有数字的加和乘。下面 的部分介绍一些基本的数学概念,以为后面的运用打基础。 2 1加法 有限域中两个元素的加法是通过将这两个元素的多项式表示中的对应幂的 系数进行“加”来实现的。加法用异或操作来执行( 用。表示) 一一也就是说, 取2 的模一一因此1 0 1 = 0 ,1 0 0 = 1 ,以及0 0 0 = 0 。因此,多项式减法和多 项式加法相同。 或者,有限域元素的加法可描述为,字节中的对应比特相加再取2 的模。对 于两个字节 a t a 。吒口。口3 口:a ,口o ) 和 6 ,6 6 6 5 b 。b 3 b 2 b l b 。) ,和为 c ,c 。c 。c 3 c :q 岛 ,这里 c = a ,( g b ,( 也就是说,c 7 = a ,( g b 7 ,c 6 - - 巩o b 6 ,c o = a o ( 9 b o ) 。 例如,下面的表达式彼此间都是相等的: b 6 + x 4 + x 2 + x + 1 ) + b 7 + x + 1 ) = x 7 + x 6 + x 4 + x 2 ( 多项式表示) 0 1 0 1 0 1 1 l o l o o o o o l l ) = 1 1 0 1 0 1 0 0 ( 二进制表示) 5 7 e 8 3 ) = d 4 ) 2 2 乘法 ( 十六进制表示) 在多项式表达中,g f ( 2 8 ) 上的乘法( 用表示) 对应于,将两个多项式相乘 的结果再对一个模为8 的不可约分多项式取模。一个多项式如果除数只有1 和它 自己时,该多项式是不可约简的。在a e s 算法中,该不可约分多项式为: m g ) = x 8 + x 4 + x 3 + h 1 一( 3 1 ) 浙江大学硕士生毕业论文 或者用十六进制表示为: 0 1 o b l 。 例如, 5 7 8 3 = 。l ,计算过程是这样的 然后 g 6 + x 4 + x 2 + x + 1 ) 0 7 + x + 1 ) = g ”+ x ”+ x 9 + x 8 + x ) + g + + x 3 + x 2 + x ) + g 6 + 工4 + x 2 + x + 1 ) = x 1 3 + x + x 9 + x 8 + 工6 + x 5 + x 4 + x 3 + 1 对m g ) 取模保证了得到的结果将是一个度小于8 的二进制多项式,因此可 以用一个字节来表示。不像加法,在字葸星没有简单的操作与乘法相对应。 上面定义的乘法是可结合的,元素 o l 是乘法标志。对于任何度小于8 的非 零二进制多项式6 g ) ,b ( x ) n 乘逆mb - i g ) 表示,可以这样得到:扩展欧几里德 算法被用于计算多项式口g ) 和c g ) ,使得 6 g k g ) + m g g ) = 1 一 ( 3 2 ) 因此,口g ) b ( x ) m o d m ( x ) = 1 ,这就意味着 一= a ( x ) m o d m ( x ) ( 3 3 ) 此外,对于域中任何口g ) ,6 g ) 和c ( x ) ,有 口g ) 0 g ) + c g ) ) = 口( 0 6 g ) + 口g ) c g ) 。 对于2 5 6 种可能的字节值,及上面定义的加法和乘法的集合,仍然所有有限 域g f ( 2 8 1 的结构。 2 2 1 乘x 运算 将方程( 2 1 ) 中定义的二进制多项式乘以多项式x 得到 6 7 x 8 + 6 6 x 7 + 6 5 x 6 + 占4 z5 + 6 3 x 4 + 6 2 x 3 + 6 1 x 2 + b o x ( 3 4 ) 要得到x 6 0 ) 的结果还要将上式对m g ) 取模,如方程( 2 1 ) 中定义的那样。 、j 【+x+ 3 x+ 4 x+ 8 l p d0m 、17 l+ , x+ 4 x 5 x+ 6 x+ 8 x+ 9 x + l i + x 6 + x3 _ i l 主, = 浙江大学硕士生毕业论文 如果b 7 = 0 ,那么该结果就等于简化后的结果了。如果b ,= 1 ,那么上式还要减 去( 也就是说,异或) 多项式m g ) 。或者,乘工( 也就是, o o o o o o i 0 1 或 0 2 ) 运算也可以通过字节级的左移紧跟一个有条件的与 1 6 进行比特异或来实现。这 一字节操作用x t i m e ( ) 来表示。与x 的更高次幂相乘能通过重复性的删m p ( ) 运算 来实现。通过将中间结果相加,与任何常数相乘也可以被实现。 例如, 5 7 1 3 ) = 坼j ,因为 5 7 1 0 2 ) = x t i m e ( 5 7 ) = 妞) f 5 7 1 0 4 = x t i m e ( a e ) = 4 7 5 7 ) 0 8 = x t i m e ( 4 7 ) ) = b e 5 7 ) 1 0 = x t i m e ( s e ) = 0 7 , 因此, 5 7 ) 1 3 = 5 7 ) ( 0 1 o 0 2 ) 毋 1 0 ) = 5 7 ) o 如) o 0 7 ) = 掘j 2 3 g f ( 2 8 ) 中的带系数多项式 四项多项式可以按如下定义一其系数也是有限域的元素: a 0 ) = n 3 x 3 + a 2 x 2 + 口1 x + a o ( 3 5 ) 如果以k ,q ,口:,q 】这种形式表示,那可视为一个双字。得注意到,这一节 中的多项式操作与用于定义有限域元素中的多项式有些不同,虽然这两种多项式 都用同一个不确定符号x 表示。这一节中的系数就是有限域元素自己,也就是说, 字节,而不是比特;此外,四项多项式的乘法选用了一个不同的约减多项式,将 在下面定义。从前后文看,区别将会很明显。 为了说明加法和乘法操作,让 6 g ) = 6 3 x 3 + 6 2 x 2 + 6 l x + 6 0 ( 3 6 ) 浙江犬学硕士生毕业论文 定义出第二个四项多项式。加法操作就是把具有相同的x 的幂的有限域系数相 蕊。燕法辩痤予每个双字巾对应字带的要躐操作一一换訇话说,撼楚个双字豹蓬 进行异或。 透诧,乖j 角方程( 3 5 ) 秘( 3 6 ) , 掰0 ) + 6 g ) = 白,昏6 3 b 3 + q :e 兢2 + 0 ;世壤b + 。毋) ( 3 7 ) 乘法要通过两步来实现。在第一步中,多项式的积c g ) = 口g ) 6 e ) 被代数扩 展,褶同次幂的系数被相加,就褥到 c g ) = 气茗+ 。5 x 5 + c 4 x 4 + c 3 x 3 + 。2 x 2 钰x + 岛( 3 g ) 这里 c o = 口o 1 壤= 焉* b o e 氏。热 q 。0 。b l a 2 。5 2 国q b 3 岛= 魄o h :o 嚣2 毛 c 2 = a 2 * b o o 口l 6 l o 口。b 2# s = 口3 b 3 ( 3 9 ) 屯= 吒b o o a 2 b l o a i 。如o a o b 3 结果,c ,不是一个蹭项多项式。豳j 逝,乘操作豹第二步楚把c g ) 辩一个 度强4 懿多项式取模;甄缮到的结莱裁可以鲍减成一个度夺于4 弱多项式。慰于 a e s 算法来说,这个多项式为x 4 + 1 ,因此 x 。m o d ( x 4 + 1 ) = m “4 ( 3 1 0 ) 取模鬣瓣g 每) 耪殛r ) 懿积,爨挺0 ) 9 鑫舀表示,胃褥嚣疆多瑗裁矗) ,定义 如下: d = 或矿+ d 2 x 3 + d l x + d o ( 3 1 1 ) 这里 d o = 0 。氏) o g ,6 i ) 由白:如) 国h 也) d 。= a 。) o ( 口。岛) o 如6 :) o 如:b 3 ) ( 3 1 2 ) d := 囊:玩) e q ;6 1 ) o 6 :) 国0 ,岛) o 浙江大学硕士生毕业论文 或= a 3 6 0 ) 0 0 :b 1 ) 0 0 。屯) o g 。b ,) 当口b ) 是一个同定多项式时,方程( 2 1 1 ) 定义的操作可以写成矩阵的形式: 疵 凼 以 强曩3 群2 d 1口o盯3 拄2痒l魄 d 3口2d i i n y lx 4 + a 黼o f ( 2 3 孛一令不霹约分赘多项式,掰戳与令整定豹霹矮 多项式的莱法也不必可逆转。然而,a e s 算法选定了一个固定的四项多项式, 却其有可逆转的毪质: 撑b ) = 0 3 橐+ 静l 扛2 + 扣l 净+ 0 2 ( 3 。1 4 ) a - i g ) = 0 6 扛3 + o d 扣2 + 0 9 扛+ o e ) ( 3 1 5 ) 另一个在a e s 算法中会用到的多项式( 看4 2 节中的r o t w o r d ( ) 函数) 有: a o = a ,= 群:= o o ;黻及q 一 o l j ,瞧就是多顼式。霉爨察土蔼鹃方程( 3 :1 3 ) 可 发现,它的效果就怒在输入双字中对字节进行循环移位来构成输出双亨。这就意 昧稽,【6 0 ,b l ,b :,6 3 】被转换成【6 1 ,如,b ,b o 。 哟0 柑、,。;,l飘鹏 盛m 磊加 浙扛火学硕士生毕业论文 3算法说明 对于a e s 算法来说,输入数据块、输如数据块和状;数矩阵的长度都是1 2 8 比特。那么 珞= 4 ,这表示袄态斑阵中3 2 - b i t 双字的数目。 对于a e s 算法,密钥足的长度可以怒1 2 8 、1 9 2 或2 5 6 比特。密钥长度用 n k = 4 , 6 ,8 来表示,这代表了在密钥中3 2 _ b i t 双字的数目。 对于a e s 算法来说,算法执行牵轮循环静次数壶密锎长度决定。轮循环辩 次数用n r 表示,当a r k = 4 时n r = 1 0 ,当a r k = 6 时n r = 1 2 ,当n k = 8 时n r = 1 4 。 此标壤所要遵从的密锎一数据挟一轮循环组合细图4 所示。因为算法的执行 秘密钥长度、数据块长度秘轮循环次数有关。 密镇长发( a r k )数糖块长发( 舾,耱琚拜次数( n r ) a e s - 1 2 84 41 0 a e s 1 9 2641 2 f a e s 一2 5 6841 4 圈4 密钥一数据块一轮循环组台 不论是加密还怒解密,a e s 算法采用一种轮函数,它由四个不同的字节导向 懿交换组成: 1 ) 用替换表( s b o x ) 进行字替换, 2 ) 状态矩阵每行进嚣不强镳移鬃瓣爨稼,。, 3 ) 将状态矩阵中每列的数据进行混否 。 一 4 ) 把状态矩阵莓子密钠相加。 这些变换( 及其逆变换) 将在肟甄4 1 1 4 。1 4 帮和4 3 。l - 4 3 4 麓中有详细论 述。加密和解密分别在4 1 节和4 3 节中论述,密钠生成在4 2 节中有论述。 烟密秽鳃密斡滚程如图5 魇示。一 浙江火学硕士生毕业论文 3 1加密 图5a e s 算法加密、解密流程 在加密的开始,输入按2 4 节中的约定被拷贝剩状态斑阵。在缀过一个初始 的予密钥热压,状态矩阵经过l o ,1 2 或1 4 次( 依赖于密钱的长度) 轮函数鲍变 换,只有最后一轮向前册一l 轮略肖不同。最后的状态矩阵按2 4 节中描述的那 髯被拷哭裂竣塞。 轮函数通过密钥进度被参数化,密钥进度通过在4 2 节中叙述的密钥扩展流 程翻西字节双字的一维数缝构成。 加密流程在圈6 中用伪码表示。每个独立的变换一一s u b b y t e s 0 、 狮甄太学磺生毕监论文 s h i f l r o w s 0 、m i x c o l u n m s 0 和a d d r o t m d k e y 0 - - - - 对状态矩阵进行处理,谯下面 章节串饔谨缨叙述。瓣6 孛,数缀键】存褚魇窍予密鲷,这农4 2 节串露锻述。 c i p h e r ( b y t ei nf 4 。n b 】,b y t e 七 4 * n b 】,w o r dw 【胁。c 黼+ 1 ) 】) b e g i n b y t e 8 t a r e 4 ,糯】 e n d a d d r o u n d k e y ( s t a t e ,wc o ,l b 1 】) f o rr o u n d - 1s t e p 王t on r - 1 s u b 研e s ( e t a t e ) s h i f t r o w e ( s t a t e ) m i x c o l u m n s ( s t a t e ) a d d r o u n d k e y ( s t a t e ,w 【r o u n d * n b ,( r o u n d + 1 ) ¥懒一1 】 e n df o r s u b b y t e s ( s t a t e s h i f t r o w s ( s t a t e ) a d d r o u n d k e y s t a t e ,w l 舭n b ,( n r + 1 ) l 洳- 1 1 ) 囱6 加密算法之伪鹋袭示 魏爨6 联示,耩蠢斯轮郡是稳阏懿,豫了簸震一轮,宅不起撬m i x c o l u n m s o 变换。 3 1 1 s u b b y t e s o 变换 s u b b y t e s o 变换鼹一个非线性字节替换,利用替换表( s - b o x ) 其操作独立于 状态矩阵中的每个字节。s - b o x 是可逆转的,它邋过两步变换褥到: 1 旋有瀑蠛g f 臼3 ) 孛求褥乘逆,热3 2 繁串所述;元索汹 被映射要g 它本 府。 2 。逛鼹下嚣驰传魑交换( 锣0 ) 审) : b ;= 6 f 0 6 0 + 4 ) 。o d 8 0 缸) 删m 8 06 ( f 6 ) m o d 8 0 + 7 ) r o o d s 审c , ( 4 1 ) 0 i 8 ,趣是字节孛的第严比特,c ,怒字节c 中蛉第妒t e 特,e 的徨 为 6 3 或 0 1 1 0 0 0 l l 。这里或者别处,交量士的一撇( 如:b ) 表示这个变 塑鋈杰鲎堡圭皇兰些造塞 量臆羞它右边的傻的改变丽变。 薅短阵影式,s - b o x 串静镑瓣交换胃袅承为: 琏 玛 6 二 联 毽 髓 l0001111 ll0 0 0lll llloo 0ll ll1lo o ol l11ll00 0 olllllo o 蛰ol1lllo oo ol1l11 趣 如 6 3 饥 纨 魂 籼 + 图7 说明了s u b b y t e s 0 变换在状态矩阵上的效果。 1 1 e o o : l l o ( 4 2 ) 囝7 s u b b y t e s 0 蒋s - b o x 应燕手状态矩阵魏每个掌节 在s u b b y t e s 0 变抉中用到的s - b o x 以十六进制的方式如图8 所示。 o123 56789 bdf os 37 c7 7 7 b2轴6 口53 0 0 16 2 b d 7i :b7 6 1c 8 2 c 97 d5 94 7f o t dd 4 29 口 哇7 2c o 2b 7d9 32 6 3 63 7 3 4巨5sf 1 7 1d 83 11 s 30 4e 72 3 c 31 89 6o s 9 0 71 2e oe 2 b2 7b 27 5 40 98 32 c 1 z b6 s a o s 23 bd 6b 3 2 90 32 f8 哇 s5 3 d 1o oe d2 0f cb 1 5 b6 ac b五 3 9哇&4 c5 9o 6d oe f b34 d 3 38 s4 5 90 27 fs o3 c 9 f 8 7s 1 丑34 08 f9 29 d 3 e士5b cb 6 d 2 11 0f f 3d 2 8c d o c1 3 5 9 74 41 7 c 4甜 7 3 d6 4s d1 9 7 3 96 08 i 矗d e2 2 2 9 08 8 4 6h 81 哇 d s eo b d b e o3 23 a o 岳90 62 4 5 cc 2d 3 6 29 19 5 e 47 9 be 7c 8 3 76 a e dd 54 曩96 cs 6 46 5 7 t0 8 b i7 82 52 e 1 c6 b 4c 58 d d7 41 哇bb d8 b e a d 7 03 eb 5 6 64 8 0 3f 60 e6 1 3 55 7b 9 8 6c 1 1 d9 e e 1皇e 9 81 16 9 8 e9 49 b 1 08 79 5 52 8d f f8 0量18 9 o ab fe 6唾2 6 94 19 9 2 d0 量b os 喜 b b1 6 图8s - b o x 字节x y ( 十六进制) 的替换值 例如,如果s 。: 5 3 ,那么替换值将由图8 中编号为5 的行和编号为 3 ,的列的交叉点决定。那么s 厶的结果为p d ) 。 3 1 2s h i f l r o w s o 变换 在s l l i 胀o w s o 变换中,状态矩阵最后三行中的字节被循环偏移了不同字节 数。第一行,:0 ,不动。 特定来说,s h i f i i 沁粥o 变换是这样处理的: s :。= s ,。+ “班( ,m ”。o d m ,o , 4 o c n b( 4 3 ) 这里,偏移l s h i f t ( r ,册) 由行号,r 决定,如下( 这里册= 4 ) s h r i o ,4 ) = 1 ;s h f l ( 2 ,4 ) = 2 ;s h f i ( 3 ,4 ) = 3 ( 4 4 ) 这个效果就是在一行内将字节向更“低”的位置移( 也就是说,给定行中c 的值越小) 。同时“最低位”的字节被移到行的“最高位”( 也就是说,给定行中 c 的值最高) 。 一 图9 说明了s h i t k r o w s o 变换。 浙江太学碗士生毕业溏义 s o ,0s o , 1 电o s 0 , 3 黾。 黾l& 2 8 1 , 3 嘶气l赎2s 2 a l黾2岛,3 虞囡 虞磐 腰坠 s 3 0 。0黾屯2岛。 珀最2煎3文o 3 2 , z 屯,如。屯1 岛3鼍。岛。1矗2 图9s h i f t r o w s 0 对状态矩阵中最后量行进行循环移位 3 1 3 m i x c o l u m n o 变换 m i x c o t m n n o 变换一刭一列地对状态矩阵进行变换,它把每一列褫势一个四 项多项嬲:,如3 3 节中所述。每一列被视为6 f ( 2 8 ) 中静多项武,与一个固定多项 式口相莱后并对x + l 取模,有 d e ) = 3 3 十 o l 扣2 + 和l 扣+ 0 2 4 。5 ) 如3 3 节中所说,可以写成矩阵乘的形式。让 s g ) = 窭g ) o s e ) : 瓯。 爿。 墨。 嚣。 0 20 3 0 10 2 o lo l 0 3o l 0 1 0 1 0 3o l 0 20 3 o l0 2 s q # s 址 篷。 肇。 0 c s n b ( 4 6 ) 作为乘法的结果,一列中的四个字节用下蕊代替 盛,= 如2 & ,$ ( 0 3 ,) 。s :,。$ 是, 墨。= s o 。o ( 0 2 蜀,) o ( 0 3 ) s :,) 国 浙江大学硕士生毕业论文 s o ,= s 吣。钆e g 0 2 s :。) o ( 0 3 ) 是。) s o ,= ( 0 3 ) s 吣) o s ,o s :,o ( 0 2 ) s 。) 图1 0 说明了m i x c o l u m n 0 变换。 图1 0 m i x c o l u m n ( ) - - 列列地处理状态矩阵 3 1 4 a d d r o u n d k e y o 变换 在a d d r o u n d k e y 0 变换中,仅仅通过简单的按位异或,一个子密钥被状态矩 阵进行相加。每个子密钥由密钥扩展( 见4 2 节) 得到,各包含n b 个双字。这n b 个双字分别与状态矩阵的各列相加,这样 k ,s l 。,g ,。j = i s ,s 。,是,墨。j o 【1 。】0 sc h r b ( 4 7 ) 这里【w f 】就是4 2 节中将介绍到的密钥,r o u n d 是在范围o sr o u n d n b 中的一个 值。在加密过程中,初始子密钥加发生在r o u n d = 0 时,位于第一次轮函数操作 之前( 看图6 ) 。当1 兰r o u n d 6 时,a d d r o u n d k e y 0 变换应用于加密的r 次轮 操作中。 这一变换如图1 1 所示,这里,= r o u n d n b 。密钥扩展的每个双字中的字节 地址按2 1 节中所述。 图1 1 a d d r o u n d k e y 0 将状态矩阵中辨锦判与子密钥申的双掌谶行暴或 3 。2 密钥扩展 a e s 冀法褥弱裙戆密锈,翼,然嚣藏舒一个密镅扩震翟黟苏产生瑟毒手蜜 葫。密钳扩展总共产生 协( 船+ 1 ) 个双字:算法栅始需要一个n b 个双字的集合, 接着每个轮操作都需要舳个双字的密钥数攒。最终的密钥流程必包含了一个4 字节敢字的线性数组,用k 】表示,0s j 蚤舶渺1 ) 。 输入密镄扩聂豹整个过程鲡鋈1 2 孛豹镄妫辑示。 s u b w o r d o 是一个函数,它以一个四字节的双字为输入,澍每个字节进行 s - b o x 替换产生输出双字。函数r o t ,0 r d 0 以个双字k ,q ,d 2 ,岛】为输入,进行 循环麓换,返回b ,a 2 ,瓤,a o 】。常数数组,r c 绷【f 】,包含了通过b “, o o , 0 0 1 , 0 0 1 褥捌静毽,x i - i 是育隈域唧。) 中苫豹幂( x 为2 ) ,如3 2 慧巾掰述。褥注意 的摄,这里,从1 开始,搿不是0 。 从图1 2 中可以看到,被扩展密钥的前 臀个双字就是用初始密钥填充的。接 下浓鹣每个双字,w 西,簿予霞子它裁瑶的挪个双字,雌一l l ,移位于它燎个 位置乏前的双字,谁一脓】,的异或。对予织予嬲:静倍数位鬣童豹双字,在异 或之前,首先对w d l 】进行变换,紧接着再跟一个轮常数,r 肘【f 】,进行异或。 这一变欹包括双字中字节的循环移位( r o t w o r d o ) ,紧接着对双簪中每个字节进 辑茳夫学疆圭生肇照论文 行s - b o x 替换( s u b w o r d o ) 。 一定要注意到,对予2 5 6 b i t 加密密钥( a r k :8 ) 的密钥扩展岛1 2 8 和1 9 2 - b i t 加密密锶驰密锯扩展略肖不同。如果a r k = 8 辨且j 一4 是 碡的倍数,那么在异或 之莉s u b w 6 皤0 褥被运羯予坤一l 】。 k o y e x p a n s i o n ( b y t ek 群yh 韬日,w o r d vc 腩。 n r + 1 ) i ,n 麓 b e g a n+ w o r d t 目i 学 i 冀0 w h i l e i ¥淑 w l 圭】# w o r d ( k e y 唾量主】,k 拿 4 w i 粤1 ,k e y 毒主+ 2 3 ,冀e 甲【圣+ i 3 】, i 鲁i t x e n dw h a l e i _ 篾k w h i l 母i 掰( n r + l 】 t e m p - w 【i l l i f ii an k - e t e m p - s u b w o r d ( r o t w o r a 乞糊紫) 脯rr c o 矗t i t 撤 e l s ei fe n k sa n dir o o d 捌k _ 4 ) e e 衄p s u b w o r d ( t e m p ) e n di f w i i j - w f i 一枷c l 黼rt 鲫巾 i_i+1 e n dw h i l e e n d 3 3 解密 圈1 2 密钥扩袋走伪码表示 4 。1 苓孛熬燕密交羧愚霹羧遂转,爱枣羧露藏莓壹按对a e s 簿法送行舞密。 在瓣密过程中用到的几个独立的变换一一i n v s h i r r o w s o 、i n v s u b b y t e s ( ) 、 i n v m i x c o l u n m s 0 和a d d r o u n d k e y 0 - - 一也是对状态矩阵进行处瑷,在下面章节 中有详细叙述。 熬令瓣密滚程在謦1 3 孛露镑羁攒述窭袋。在嚣1 3 孛,数缝谴】惫鸯掰鸯子 密锎,这在之前的4 2 节中有说明。 2 0 一 墅坚缝堡圭圭皇些篓塞 x n v c i i ,h e r ( b y t ei n 4 鼢】t 艟e 孽o u t 强女鳓l ,w o r dw 鳓( n r 十1 ) 】) b e g i n 埘# # s t a t ef 4 ,掘,l s t a t e - i n a d d r o u n d k e y s t a t e ,w n r * n b 。 l k + :,* 勘m1 1 f o r 鬻o t 髓ll l 擎一王s t e p - 1d o w n t o 王 i n v s h i f t r o w s ( s t a t e ) i n v s u b b y t e s ( s t a t s a d d r o u n d k e y ( s t a t e w 【r o u n d * n b ,i 嚣o u n d + l l * n b - i l ) i n v m i x c o l u m n s s t a t e ) e n df o r y m v s h i t r o w s ( s t a t e ) i n v s u h b y t e s s t a t e ) a d d r o u n d k e y ( t a t e ,w ,n - i i o u tws t a t e e n d 穗憾嘏密算法之伪鹤表零 3 3 1i n v s h i f t r o w s o 交换 珏撑s 燃拽r a w s 0 是s h i f f r o w s o 燮换的逆变换。状态矩阵翳三萼亍的书带被德嚣 编移了不闲字节数。对于第一行,r = 0 ,绦潦不变。底下三符被循环移动 n b s 蠢游p ,硒) 拿字节,这爨,编攀童藤雾争,粥) 蠢霉亍号决定,瘗方纛+ 鲶窭。 特建的,在i n v s h i f - r o w s o 变换罴懿下处理瓣: s :( 。+ 妯一( , * ”。喇 胁= s ,一r 0 r 4 0 蛙口n b ( 4 ,8 ) 篷1 4 说弱了t n v s h i f i k o w s o 交换。 2 l s o os o 1s o , 2s ” 燕。o s l l3 1 , 2s l o 是1 s 2 , 2岛3 屯- ol焉2s 3 3 s s o 。0 1 5 0 , 2s o 。j 巍3最0 j 堪 是2 嘶龟j甑os 2 , 1 墨1 屯。2屯。3岛o 冒1 4 i n v s h i f t r o w s 0 对状态楚塔盼器三 亍进行循环移位 3 3 2i n v s u b b y t e s o 变换 h w s u b b y t e s o 是字节臀换变换的逆变换,这里逆s - b o x 被用于状态矩阵中的 每个字肇。这是逶过对谚瓣交换( 4 1 ) 取发:,器紧躁着求其在6 妒q 8 ) 中的乘遂 +_ 褥劐静。 一一 i n v s u b b y t e s o 变换中用到的逆s - b o x 如图1 5 所示: 0123 4 s 679争bdf 0s 2 0 96 暑d s3 03 sl s3 8b 量4 0t 3 9 e8 土3f b 王了e t 33 拿8 29 b2 f壬霉73 唾8 e圣3 te 毒,矗e e 9c b 2 矗7 b9 , 13 2鱼艿c 22 33 矗 e拿s强 2 氇0 3垂鸯 30 8 2 e虹6 s盘8聃2 毫奢| 2 譬鑫s ba 24 拿聪8 bd l2 s 47 2f e5 若48 蓐。6 8擘8土6融a 4s c5 矗6 5b 6,2 56 c 7 04 8s o主ddb 9“5 e土5哇65 7 - 7 审d 9 d暑4 69 0 d 8吐o o尊喀b c曲d t舯4 s 8o sb 0b 34 50 6 7i 差o2 e1 e8 f3 fo f0 2e 1 曩b e l0 30 11 38 &6 b 窖 3 量 9 王1 l4 土嚷6 9d e擘7f 2c o赫4e s7 3 9宴s 垂 2 2 t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全培训效果评估课件
- 2025河南驻马店市新蔡县公益性岗位招聘7人模拟试卷及一套答案详解
- 安全培训效果评价结论表课件
- 2025广东中山市粮食储备经营管理有限公司招聘5人考前自测高频考点模拟试题及完整答案详解
- 2025年度上半年河北唐山市消防救援支队政府专职消防队员招聘113人模拟试卷附答案详解(完整版)
- 2025贵州岑巩县医共体总医院招聘乡村医生模拟试卷及答案详解(各地真题)
- 2025辽宁铁岭市调兵山市招聘临床医师10人模拟试卷附答案详解(典型题)
- 2025包头市昆都仑区发展和改革委员会竞争性比选工作人员的考前自测高频考点模拟试题及答案详解一套
- 网络设备安装维修合同
- 履行合作协议升级版承诺函4篇范文
- GB/T 31155-2014太阳能资源等级总辐射
- 工程施工停工令模板
- 2023年蒸汽管路设计
- 耳部解剖及急慢性中耳炎课件
- 工程项目投资与融资讲义 课件
- 食品质量安全抽检数据分析模型优质资料
- 承插型盘扣式钢管进场验收记录表
- 军事训练教学法模板课件
- 物流设施与设备ppt课件(完整版)
- 交通运输安全管理整套教学课件
- 安检员X射线机培训-共86页课件
评论
0/150
提交评论