173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

加密算法实例图

keros@mark 2022-10-21 资讯中心

本文目录一览

常见加密算法原理及概念

在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段。利用该手段能够保障数据安全通信的三个目标:

而常见的密钥加密算法类型大体可以分为三类:对称加密、非对称加密、单向加密。下面我们来了解下相关的算法原理及其常见的算法。

对称加密算法采用单密钥加密,在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收方收到加密后的报文后,结合密钥和解密算法解密组合后得出原始数据。由于加解密算法是公开的,因此在这过程中,密钥的安全传递就成为了至关重要的事了。而密钥通常来说是通过双方协商,以物理的方式传递给对方,或者利用第三方平台传递给对方,一旦这过程出现了密钥泄露,不怀好意的人就能结合相应的算法拦截解密出其加密传输的内容。

对称加密算法拥有着算法公开、计算量小、加密速度和效率高得特定,但是也有着密钥单一、密钥管理困难等缺点。

常见的对称加密算法有:

DES:分组式加密算法,以64位为分组对数据加密,加解密使用同一个算法。

3DES:三重数据加密算法,对每个数据块应用三次DES加密算法。

aes:高级加密标准算法,是美国联邦政府采用的一种区块加密标准,用于替代原先的DES,目前已被广泛应用。

Blowfish:Blowfish算法是一个64位分组及可变密钥长度的对称密钥分组密码算法,可用来加密64比特长度的字符串。

非对称加密算法采用公钥和私钥两种不同的密码来进行加解密。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密,那么只有对应的私钥才能解密,反之亦然。

下图为简单非对称加密算法的常见流程:

发送方Bob从接收方Alice获取其对应的公钥,并结合相应的非对称算法将明文加密后发送给Alice;Alice接收到加密的密文后,结合自己的私钥和非对称算法解密得到明文。这种简单的非对称加密算法的应用其安全性比对称加密算法来说要高,但是其不足之处在于无法确认公钥的来源合法性以及数据的完整性。

非对称加密算法具有安全性高、算法强度负复杂的优点,其缺点为加解密耗时长、速度慢,只适合对少量数据进行加密,其常见算法包括:

RSA :RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,可用于加密,也能用于签名。

DSA :数字签名算法,仅能用于签名,不能用于加解密。

DSS :数字签名标准,技能用于签名,也可以用于加解密。

ELGamal :利用离散对数的原理对数据进行加解密或数据签名,其速度是最慢的。

单向加密算法常用于提取数据指纹,验证数据的完整性。发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。接收方在收到加密的报文后进行解密,将解密获取到的明文使用相同的单向加密算法进行加密,得出加密后的密文串。随后将之与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应。常见的算法包括:MD5、sha1、sha224等等,其常见用途包括:数字摘要、数字签名等等。

密钥交换IKE(Internet Key Exchange)通常是指双方通过交换密钥来实现数据加密和解密,常见的密钥交换方式有下面两种:

1、公钥加密,将公钥加密后通过网络传输到对方进行解密,这种方式缺点在于具有很大的可能性被拦截破解,因此不常用;

2、Diffie-Hellman,DH算法是一种密钥交换算法,其既不用于加密,也不产生数字签名。DH算法的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。DH算法通过双方共有的参数、私有参数和算法信息来进行加密,然后双方将计算后的结果进行交换,交换完成后再和属于自己私有的参数进行特殊算法,经过双方计算后的结果是相同的,此结果即为密钥。

如:

在整个过程中,第三方人员只能获取p、g两个值,AB双方交换的是计算后的结果,因此这种方式是很安全的。

公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合,用于实现基于公钥密码机制的密钥和证书的生成、管理、存储、分发和撤销的功能,其组成包括:签证机构CA、注册机构RA、证书吊销列表CRL和证书存取库CB。

PKI采用证书管理公钥,通过第三方可信任CA中心,把用户的公钥和其他用户信息组生成证书,用于验证用户的身份。

公钥证书是以数字签名的方式声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务身份。公钥证书的生成遵循X.509协议的规定,其内容包括:证书名称、证书版本、序列号、算法标识、颁发者、有效期、有效起始日期、有效终止日期、公钥 、证书签名等等的内容。

CA证书认证的流程如下图,Bob为了向Alice证明自己是Bob和某个公钥是自己的,她便向一个Bob和Alice都信任的CA机构申请证书,Bob先自己生成了一对密钥对(私钥和公钥),把自己的私钥保存在自己电脑上,然后把公钥给CA申请证书,CA接受申请于是给Bob颁发了一个数字证书,证书中包含了Bob的那个公钥以及其它身份信息,当然,CA会计算这些信息的消息摘要并用自己的私钥加密消息摘要(数字签名)一并附在Bob的证书上,以此来证明这个证书就是CA自己颁发的。Alice得到Bob的证书后用CA的证书(自签署的)中的公钥来解密消息摘要,随后将摘要和Bob的公钥发送到CA服务器上进行核对。CA在接收到Alice的核对请求后,会根据Alice提供的信息核对Bob的证书是否合法,如果确认合法则回复Alice证书合法。Alice收到CA的确认回复后,再去使用从证书中获取的Bob的公钥加密邮件然后发送给Bob,Bob接收后再以自己的私钥进行解密。

理解椭圆曲线加密算法

椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密。

一般椭圆曲线方程式表示为:(其中a,b,c,d为系数)

y2=ax3+ bx2+cx+d

典型的椭圆曲线如:y2=x3−4x2+16

先摆一个栗子:

小米很难算到的那个数,就是公钥密码算法中的私钥(一个公钥密码算法安全的必要条件(非充分)是“由公钥不能反推出私钥”),公钥密码算法最根本的原理是利用信息的不对称性:即掌握私钥的人在整个通信过程中掌握最多的信息。

椭圆曲线加密算法是一个基于加法阶数难求问题的密码方案。 对于椭圆曲线来讲,椭圆曲线的基点就是例子里面的5,而私钥就是基点的加法阶数(例子里面的11),公钥是基点(5)进行对应阶数的加法(11次)得到的结果(55)。

简单描述就是:G * k = K (G,K公开,k保密)

上述例子相对简单,椭圆曲线加密算法里的加法建立在 “有限域上的二元三次曲线上的点”上 ,组成一个“有限加法循环群”。具体的说,这个加法的几何定义如下图,两个点的加法结果是指这两点的连线和曲线的交点关于x轴的镜像。

如果我们从某一点出发(所谓的单位元,比如正整数域的1,代表一个空间里的最基本单元),不停做自增操作(所谓群操作,比如++),枚举出整个空间的集合元素。如图:

因此给定椭圆曲线的某一点G,从G出发,不停做切线,找对称点,依次得到-2G,2G,-4G,4G,-8G,8G... 。即:当给定G点时,已知x,求xG点并不困难。反之,已知xG点,求x则非常困难。即Q = NG,N就是我们的私钥,Q就是我们的公钥。

现在我们知道了公钥(Q)和私钥(N)的生成的原理,我们在看看椭圆曲线数字签名算法(ECDSA)的过程,椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。

私钥主要用于 签名,解密 ;公钥主要用于 验签,加密 ,可以通过私钥可以计算出公钥,反之则不行。

公钥加密:公钥加密的内容可以用私钥来解密——只有私钥持有者才能解密。

私钥签名:私钥签名的内容可以用公钥验证。公钥能验证的签名均可视为私钥持有人所签署。

通常需要六个参数来描叙一个特定的椭圆曲线:T = (p, a, b, G, n, h).

p: 代表有限域Fp的那个质数 a,b:椭圆方程的参数 G: 椭圆曲线上的一个基点G = (xG, yG) n:G在Fp中规定的序号,一个质数。 h:余因数(cofactor),控制选取点的密度。h = #E(Fp) / n。

这里以secp256k1曲线(比特币签名所使用的曲线)为例介绍一下公私钥对的产生的过成。

secp256k1的参数为:

本质上ECDSA的私钥就是一个随机数满足在曲线G的n阶里及k∈(0,n),根据Q=kG可以计算出公钥,生成的私钥一般为32字节大小,公钥通常为64个字节大小。如:

ECDSA签名算法的输入是数据的哈希值,而不是数据的本身,我们假设用户的密钥对:(d, Q);(d为私钥,Q为公钥) 待签名的信息:M; e = Hash(M);签名:Signature(e) = ( r, s)。

签名接口:

验证接口:

一个例子:

密码学基础(二):对称加密

加密和解密使用相同的秘钥称为对称加密。

DES:已经淘汰

3DES:相对于DES有所加强,但是仍然存在较大风险

aes:全新的对称加密算法。

特点决定使用场景,对称加密拥有如下特点:

速度快,可用于频率很高的加密场景。

使用同一个秘钥进行加密和解密。

可选按照128、192、256位为一组的加密方式,加密后的输出值为所选分组位数的倍数。密钥的长度不同,推荐加密轮数也不同,加密强度也更强。

例如:

aes加密结果的长度由原字符串长度决定:一个字符为1byte=4bit,一个字符串为n+1byte,因为最后一位为'\0',所以当字符串长度小于等于15时,aes128得到的16进制结果为32位,也就是32 4=128byte,当长度超过15时,就是64位为128 2byte。

因为对称加密速度快的特点,对称加密被广泛运用在各种加密场所中。但是因为其需要传递秘钥,一旦秘钥被截获或者泄露,其加密就会玩完全破解,所以aes一般和RSA一起使用。

因为RSA不用传递秘钥,加密速度慢,所以一般使用RSA加密aes中锁使用的秘钥后,再传递秘钥,保证秘钥的安全。秘钥安全传递成功后,一直使用aes对会话中的信息进行加密,以此来解决aes和RSA的缺点并完美发挥两者的优点,其中相对经典的例子就是HTTPS加密,后文会专门研究。

本文针对ECB模式下的aes算法进行大概讲解,针对每一步的详细算法不再该文讨论范围内。

128位的明文被分成16个字节的明文矩阵,然后将明文矩阵转化成状态矩阵,以“abcdefghijklmnop”的明文为例:

同样的,128位密钥被分成16组的状态矩阵。与明文不同的是,密文会以列为单位,生成最初的4x8x4=128的秘钥,也就是一个组中有4个元素,每个元素由每列中的4个秘钥叠加而成,其中矩阵中的每个秘钥为1个字节也就是8位。

生成初始的w[0]、w[1]、w[2]、w[3]原始密钥之后,通过密钥编排函数,该密钥矩阵被扩展成一个44个组成的序列W[0],W[1], … ,W[43]。该序列的前4个元素W[0],W[1],W[2],W[3]是原始密钥,用于加密运算中的初始密钥加,后面40个字分为10组,每组4个32位的字段组成,总共为128位,分别用于10轮加密运算中的轮密钥加密,如下图所示:

之所以把这一步单独提出来,是因为ECB和CBC模式中主要的区别就在这一步。

ECB模式中,初始秘钥扩展后生成秘钥组后(w0-w43),明文根据当前轮数取出w[i,i+3]进行加密操作。

CBC模式中,则使用前一轮的密文(明文加密之后的值)和当前的明文进行异或操作之后再进行加密操作。如图所示:

根据不同位数分组,官方推荐的加密轮数:

轮操作加密的第1轮到第9轮的轮函数一样,包括4个操作:字节代换、行位移、列混合和轮密钥加。最后一轮迭代不执行列混合。

当第一组加密完成时,后面的组循环进行加密操作知道所有的组都完成加密操作。

一般会将结果转化成base64位,此时在iOS中应该使用base64编码的方式进行解码操作,而不是UTF-8。

base64是一种编码方式,常用语传输8bit字节码。其编码原理如下所示:

将原数据按照3个字节取为一组,即为3x8=24位

将3x8=24的数据分为4x6=24的数据,也就是分为了4组

将4个组中的数据分别在高位补上2个0,也就成了8x4=32,所以原数据增大了三分之一。

根据base64编码表对数据进行转换,如果要编码的二进制数据不是3的倍数,最后会剩下1个或2个字节怎么办,Base64用\x00字节在末尾补足后,再在编码的末尾加上1个或2个=号,表示补了多少字节,解码的时候,会自动去掉。

举个栗子:Man最后的结果就是TWFu。

计算机中所有的数据都是以0和1的二进制来存储,而所有的文字都是通过ascii表转化而来进而显示成对应的语言。但是ascii表中存在许多不可见字符,这些不可见字符在数据传输时,有可能经过不同硬件上各种类型的路由,在转义时容易发生错误,所以规定了64个可见字符(a-z、A-Z、0-9、+、/),通过base64转码之后,所有的二进制数据都是可见的。

ECB和CBC是两种加密工作模式。其相同点都是在开始轮加密之前,将明文和密文按照128/192/256进行分组。以128位为例,明文和密文都分为16组,每组1个字节为8位。

ECB工作模式中,每一组的明文和密文相互独立,每一组的明文通过对应该组的密文加密后生成密文,不影响其他组。

CBC工作模式中,后一组的明文在加密之前先使用前一组的密文进行异或运算后再和对应该组的密文进行加密操作生成密文。

为简单的分组加密。将明文和密文分成若干组后,使用密文对明文进行加密生成密文

CBC

加密:

解密:

简单的加密算法——维吉尼亚密码

学号:16030140019

姓名:   莫益彰

【嵌牛导读】:凯撒密码是一种简单的加密方法,即将文本中的每一个字符都位移相同的位置。如选定位移3位:

原文:a b c

密文:d e f

由于出现了字母频度分析,凯撒密码变得很容易破解,因此人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。

【嵌牛鼻子】密码学,计算机安全。

【嵌牛提问】维吉尼亚怎么破解,8位维吉尼亚是否可破?维吉尼亚算法的时间复杂度?

【嵌牛正文】

维吉尼亚密码的加密

维吉尼亚密码由凯撒密码扩展而来,引入了密钥的概念。即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:

TO BE OR NOT TO BE THAT IS THE QUESTION

当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:

密钥:RE LA  TI  ONS  RE LA TION   SR ELA TIONSREL

明文:TO BE OR NOT TO BE THAT  IS  THE QUESTION

密文:KS ME HZ  BBL  KS ME MPOG AJ XSE JCSFLZSY

图解加密过程:

        在维吉尼亚(Vigenère)的密码中,发件人和收件人必须使用同一个关键词(或者同一文字章节),这个关键词或文字章节中的字母告诉他们怎么样才能前后改变字母的位置来获得该段信息中的每个字母的正确对应位置。

维吉尼亚密码的破解

维吉尼亚密码分解后实则就是多个凯撒密码,只要知道密钥的长度,我们就可以将其分解。

如密文为:ABCDEFGHIJKLMN

如果我们知道密钥长度为3,就可将其分解为三组:

组1:A D G J N

组2:B E H K

组3:C F I M

分解后每组就是一个凯撒密码,即组内的位移量是一致的,对每一组即可用频度分析法来解密。

所以破解维吉尼亚密码的关键就是确定密钥的长度。

确定密钥长度

确定密钥长度主要有两种方法,Kasiski 测试法相对简单很多,但Friedman 测试法的效果明显优于Kasiski 测试法。

Kasiski 测试法

在英文中,一些常见的单词如the有几率被密钥的相同部分加密,即原文中的the可能在密文中呈现为相同的三个字母。

在这种情况下,相同片段的间距就是密文长度的倍数。

所以我们可以通过在密文中找到相同的片段,计算出这些相同片段之间的间距,而密钥长度理论上就是这些间距的公约数。

然后我们需要知道重合指数(IC, index of coincidence)的概念。

重合指数表示两个随机选出的字母是相同的的概率,即随机选出两个A的概率+随机选出两个B的概率+随机选出两个C的概率+……+随机选出两个Z的概率。

对英语而言,根据上述的频率表,我们可以计算出英语文本的重合指数为

P(A)^2 + P(B)^2+……+P(Z)^2 = 0.65

利用重合指数推测密钥长度的原理在于,对于一个由凯撒密码加密的序列,由于所有字母的位移程度相同,所以密文的重合指数应等于原文语言的重合指数。

据此,我们可以逐一计算不同密钥长度下的重合指数,当重合指数接近期望的0.65时,我们就可以推测这是我们所要找的密钥长度。

举例来说,对密文ABCDEABCDEABCDEABC

首先测试密钥长度=1,对密文ABCDEABCDEABCDEABC统计每个字符出现的次数:

A: 4 B: 4 C: 4 D:3 E:3

那么对于该序列的重合指数就为:(4/18)^2 + (4/18)^2 + (4/18)^2 +(3/18)^2 +(3/18)^2 != 0.65

然后测试密钥长度=2,将密文ABCDEABCDEABCDEABC分解为两组:

组1:A C E B D A C E B

组2:B D A C E B D A C

我们知道如果密钥长度真的是2,那么组1,组2都是一个凯撒密码。对组1组2分别计算重合指数。

如果组1的重合指数接近0.65,组2的重合指数也接近0.65,那么基本可以断定密钥长度为2。

在知道了密钥长度n以后,就可将密文分解为n组,每一组都是一个凯撒密码,然后对每一组用字母频度分析进行解密,和在一起就能成功解密凯撒密码。

上文已经说到,自然语言的字母频度是一定的。字母频度分析就是将密文的字母频度和自然语言的自然频度排序对比,从而找出可能的原文。

产品的开发快则一个月,慢则一年,那么如何杜绝市面上各种山寨也成为了我们必须要关注的问题,加密芯片可以做到这点,在保障开发者权益的同时也保护了消费者权益,KEROS加密芯片作为该领域的领头者,一直在尽力贡献一份力。特点如下:接口:标准I2C协议接口;算法: 标准aes256 / KAS算法;特殊接口:Random Stream Cipher for Interface;工作温度:工业级 -40℃ ~+85℃;频率:400Khz;存储:2K字节EEPROM(可选);电压:1.8V~3.6V;封装:SOT23-6,SOP8,TDFN-6。加密算法实例图的介绍就聊到这里吧,感谢你花时间阅读本站内容,谢谢。

本文标签:加密算法实例图

产品列表
产品封装
友情链接