stm32_RSA、 AES 加密、 解密原理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

加密、解密使用手册加密、解密使用手册..............................................................................................................11.RSA、AES加密、解密原理................................................................................................21.1RSA算法原理.................................................................................................................21.2AES算法原理.................................................................................................................22.RSA、AES的应用.................................................................................................................42.1RSA加密..........................................................................................................................42.2RSA解密......................................................................................错误!未定义书签。2.3RSA签名以及认证.........................................................................................................62.4AES加密..........................................................................................................................72.5AES解密......................................................................................错误!未定义书签。3.polarssl开源库的使用.....................................................................................................133.1polarssl开源库介绍....................................................................................................133.2polarsslrsa接口说明..................................................................................................133.3polarsslaes接口说明..................................................................................................143.4移植polarssl开源库...................................................................................................143.5polarss开源库的使用................................................................................................181.RSA、AES加密、解密原理1.1RSA算法原理RSA公钥加密算法是1977年由Ron.Riverst、Adi.Shamir和Leonard.Adleman一起提出,RSA就是他们三个人姓氏开头字母拼在一起的。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉及三个参数,n、e1、e2。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2modn;B=A^e1modn;(公钥加密体制中,一般用公钥加密,私钥解密)e1和e2可以互换使用,即:A=B^e1modn;B=A^e2modn;1.2AES算法原理高级加密标准(英语:AdvancedEncryptionStandard,缩写:AES),在密码学中又称Rijndael加密法。严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128比特,密钥长度则可以是128,192或256比特;而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256比特为上限。加密过程中使用的密钥是由Rijndael密钥生成方案产生。大多数AES计算是在一个特别的有限域完成的。AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。(Rijndael加密法因支持更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:AddRoundKey—矩阵中的每一个字节都与该次轮秘钥(roundkey)做XOR运算;每个子密钥由密钥生成方案产生。SubBytes—通过个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。ShiftRows—将矩阵中的每个横列进行循环式移位。MixColumns—为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。2.RSA、AES的应用2.1RSA加密和解密一般,RSA加密算法,在进行加密,之前,会生成一对密钥,分为公钥和私钥,私钥是不公开的,公钥公开,如下如所示:图2-1生成的公钥图2-2生成的私钥接下来,我们来做一个简单的加密例子,增强大家对这个RSA算法的理解。(1)设计公私密钥(e,n)和(d,n)。令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3与20互质)则e×d≡1modf(n),即3×d≡1mod20。d怎样取值呢?可以用试算的办法来寻找。试算结果见下表:图2-3通过试算我们找到,当d=7时,e×d≡1modf(n)同余等式成立。因此,可令d=7。从而我们可以设计出一对公私密钥,加密密钥(公钥)为:KU=(e,n)=(3,33),解密密钥(私钥)为:KR=(d,n)=(7,33)。(2)英文数字化。将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值,即:图2-4则得到分组后的key的明文信息为:11,05,25。(3)明文加密用户加密密钥(3,33)将数字化明文分组信息加密成密文。由C≡Me(modn)得:图2-5因此,得到相应的密文信息为:11,31,16。(4)密文解密。用户B收到密文,若将其解密,只需要计算,即:图2-6用户B得到明文信息为:11,05,25。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。2.3RSA签名以及认证因为数字摘要的长度比较短,减少了传输的数据量;而且根据相同的明文会生成相同的数字摘要,从而用来验证数据的完整性“数字签名”一般的做法是:A先计算出文件M的HASH码,再对HASH码进行加密(这个步骤就是签名),再把M(文件M不要加密,第三方可以查阅)和加密后的HASH码传送给B,B再用A的公钥来解密刚才得到的加密HASH码,如果能解密,那就说明这个文件是A发的,具有法律效应。再计算出得到的文件M的HASH码,再和刚才解密出来的HASH码比较(这个步骤叫验证签名),如果一致就说明文件M在传输过程中没有被修改。数字签名原理中定义的是对原文做数字摘要和签名并传输原文,在很多场合传输的原文是要求保密的,要求对原文进行加密的数字签名方法如何实现?这里就要涉及到“数字信封”的概念。“电子信封”基本原理是将原文用对称密钥加密传输,而将对称密钥用收方公钥加密发送给对方。收方收到电子信封,用自己的私钥解密信封,取出对称密钥解密得原文。其详细过程如下:(1)发方A将原文信息进行哈希运算,得一哈希值即数字摘要MD;(2)发方A用自己的私钥PVA,采用非对称RSA算法,对数字摘要MD进行加密,即得数字签名DS;(3)发方A用对称算法DES的对称密钥SK对原文信息、数字签名SD及发方A证书的公钥PBA采用对称算法加密,得加密信息E;(4)发方用收方B的公钥PBB,采用RSA算法对对称密钥SK加密,形成数字信封DE,就好像将对称密钥SK装到了一个用收方公钥加密的信封里;(5)发方A将加密信息E和数字信封DE一起发送给收方B;(6)收方B接受到数字信封DE后,首先用自己的私钥PVB解密数字信封,取出对称密钥SK;(7)收方B用对称密钥SK通过DES算法解密加密信息E,还原出原文信息、数字签名SD及发方A证书的公钥PBA;(8)收方B验证数字签名,先用发方A的公钥解密数字签名得数字摘要MD;(9)收方B同时将原文信息用同样的哈希运算,求得一个新的数字摘要MD’;(10)将两个数字摘要MD和MD’进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。这样就做到了敏感信息在数字签名的传输中不被篡改,未经认证和授权的人,看不见原数据,起到了在数字签名传输中对敏感数据的保密作用。2.4AES加密和解密AES加解密的流程图如下:图2-1AES加密过程涉及到4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16字节的明文、密文和轮密钥都以一个4x4的矩阵表示。图中左边是加密流程,右边是解密流程,其中,Plaintext为明文,Ciphertext为密文,密钥长度可变,可指定为128、192、256比特,不同密钥长度决定了加解密算法的轮数(128位:10轮,192位:12轮,256位:14轮),算法征集之初,6轮迭代便可抵抗当时世界上已知的所有攻击,AES标准中至少留了4轮余量,按照这种说法,可以推知轮数越多,AES破解难度越大,也就是密钥

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功