信息安全是近年来的热门话题,尤其是近年来随着物联网的普及,安全已经成为移动支付、智能家居等领域发展的核心问题,安全的本质是算法和安全系统。看完这篇文章,你就可以成为安全算法领域的专家了。
密码安全
1.对称密码(最常用的基本密码算法)
对称密码是一种使用相同密钥进行加密和解密的技术,用于确保消息的机密性。
对称密码
有几种类型的对称算法:
DES算法(此算法用于你的门禁)
DES(数据加密标准)是1977年美国联邦信息处理标准中采用的对称码。
DES是将64位明文加密成64位密文的对称密码算法,密钥长度为56位。虽然DES的密钥长度在规范上是64位,但是由于每7位设置一位用于检错,所以它的密钥长度实际上是56位。由于DES的密文可以在短时间内被破译,所以现在除了破译之前的密文之外,不应该使用DES。
三重DES(3DES)
三重DES是为了增加DES的强度而重复三次DES得到的密码算法,也称为TDEA,通常缩写为3DES。虽然目前银行等机构仍在使用三重DES,但处理速度不高,除了特别注意向后兼容的情况外,很少用于新的用途。
俄歇电子能谱
AES(高级加密标准)是取代其前身(DES)成为新标准的对称密码算法(Rijndael)。Rijndael是由比利时密码学家琼·代蒙和文森特·里曼设计的分组密码算法。2000年,Rijndael被选为新一代标准密码算法——AES。Rijndael的包长度和密钥长度可以从128位到256位中选择,单位为32位。但是,在AES规范中,数据包长度固定在128位,密钥长度只有128、192和256位。
2.公钥密码(非对称密码算法,安全性较高的算法,银行卡取款时会用到)
在公钥密码(非对称密码)中,密钥分为加密密钥和解密密钥。发送方用加密密钥加密消息,接收方用解密密钥解密密文。公钥算法主要用于身份认证领域。
不对称算法
南非共和国(Republic of South Africa)
RSA是一种公钥密码算法,它的名字由它的三个开发者的姓氏首字母组成,他们是罗恩·瑞文斯特、阿迪·萨莫尔和伦纳德·阿德曼(Rivest-Shamir-Adleman)。RSA的加密是求“mod N到e的幂”,解密是求“mod N到d的幂”
密文 = 明文^E mod N明文 = 密文^D mod N椭圆曲线密码体制
椭圆曲线密码是近年来备受关注的一种公钥密码算法。其特点是所需密钥长度比RSA短。椭圆曲线密码是通过在椭圆曲线上的特定点上执行特殊的乘法运算来实现的,这利用了这种乘法运算的逆运算非常困难的事实。使用公钥密码可以解决密钥分发问题。公钥密码是密码学领域的一项革命性发明,现代计算机和互联网中使用的密码技术得益于公钥密码。
公钥密码虽然可以解决对称密码中的密钥交换问题,但存在被中间人攻击掩盖的风险,因此需要用数字签名对公钥进行认证。即使有公钥密码,对称密码也不会消失。公钥密码的运行速度远低于对称密码。因此,在一般的通信过程中,这两种密码学往往是一起使用的,即对称密码提高了处理速度,公钥密码解决了密钥分配问题。这种方式称为混合密码体制。
3.单向hash函数(HASH)
单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列码。单向哈希函数可以根据消息的内容计算哈希值,哈希值可以用来检查消息的完整性。哈希值的长度与消息的长度无关。无论消息是1位、100MB甚至100GB,单向哈希函数都会计算固定长度的哈希值。以SHA-256单向散列函数为例,SHA-256计算的散列值的长度总是256位(32字节)。为了确认完整性,即使消息中只有一个比特改变,也会产生不同的哈希值。
单向散列函数输出的散列值也称为消息摘要或指纹
切碎
干货分享时间:想了解更多移动设备安全方案信息,请关注此微信微信官方账号“物联网芯片”,私求免费获取唯一信息。
MD4,MD5(还记得电影和文件下载的MD5验证吗?)
MD(Messge Digest)4是Rivest在1990年设计的单向散列函数,可以产生128位的散列值。现在不安全。MD(Messge Digest)5是Rivest在1991年设计的单向散列函数,可以产生128位的散列值。MD5强大的防碰撞能力已经被打破。也就是说,现在可以生成两个不同的哈希值相同的消息,所以也不安全。
SHA-1、SHA-256、SHA-384、SHA512
SHA-1是NIST(国家标准与技术研究所)设计的单向散列函数,可以产生160位的散列值。现在不推荐。SHA-256、SHA-384和SHA512都是NIST设计的单向散列函数,它们的散列值分别为256位、384位和512位。这些单向散列函数统称为SHA-2。
SHA-1强大的防撞性能在2005年被突破,但SHA-2至今未被突破。
单向散列函数可以区分“篡改”而不能区分“伪装”,因此需要认证。
4.消息验证码
消息认证码是一种确认完整性和认证的技术。
消息认证指的是“消息来自正确的发送者”的性质。报文认证码的输入包括任意长度的报文和发送方和接收方的共享密钥,可以输出固定长度的数据,这个数据成为MAC值。
为了计算MAC,需要持有共享密钥,没有共享密钥的人无法计算MAC值。消息身份验证代码使用此属性来完成身份验证。另外,就像单向散列函数的散列值一样,消息即使改变1位,MAC值也会改变,消息认证码使用这个属性来确认完整性。消息认证码可以说是与密钥关联的单向散列函数。
消息认证码可以通过使用单向散列函数和对称密码来实现。
MAC和HASH的比较
媒体访问控制进程
HMAC
HMAC是一种利用单向哈希函数构造消息认证码的方法,其中HMAC的H表示哈希。
消息认证码并不能解决“向第三方证明”、“防止否认”等消息认证码无法解决的所有问题。
5.数字签名
消息认证码之所以不能防止拒绝,是因为消息认证码需要在发送方和接收方之间共享一个密钥。
数字签名是一种能够认证第三方并防止通信对象拒绝的认证技术。
在数字签名中也使用由公钥和私钥组成的密钥对,但是这两个密钥的使用与公钥加密相反,即使用私钥加密相当于生成签名,而使用公钥解密相当于验证签名。
生成签名并验证签名
用于实现数字签名的算法如下:
南非共和国(Republic of South Africa)
RSA是一种公钥密码算法,它的名字由它的三个开发者的姓氏首字母组成,他们是罗恩·瑞文斯特、阿迪·萨莫尔和伦纳德·阿德曼(Rivest-Shamir-Adleman)。
用RSA生成和验证签名的过程可以用以下公式表示:
签名 = 消息^D mod N由签名得到的消息 = 密文^E mod NEIGamal
EIGamal方法是塔赫尔EIGamal设计的公钥算法。利用了mod N下求离散对数的困难。EIGamal可用于公钥加密和数字签名。
目录系统代理(Directory System Agent)
数字签名算法是一种数字签名算法,是NIST于1991年制定的数字签名标准。
DSA是Scnorr算法和EIGammal方法的变种,只能用于数字签名。
椭圆曲线数字签名
Ecdsa(椭圆曲线数字签名算法)是一种基于椭圆曲线密码体制的数字签名算法。
拉宾模式
拉宾模式是M.O .拉宾设计的公钥算法,利用了在mod N下求平方根的困难。拉宾可以用于公钥密码和数字签名。
数字签名不仅可以识别篡改和伪装,还可以防止否认,但不能确认用于验证签名的公钥属于真实的发送者。
要确认公钥是否合法,您可以对公钥应用数字签名,这是一个证书。
6.证书
事实上,公钥证书(PKC)非常类似于驾照,它包含个人信息,如姓名、组织、电子邮件地址和属于此人的公钥,并由证书颁发机构进行数字签名。只要看到公钥证书,就可以知道认证机构相信公钥确实属于这个人。公钥证书也简称为证书。
证书颁发机构是能够识别“公钥确实属于此人”并能够生成数字签名的个人或组织。
消息发送方使用认证机制向消息接收方发送密文
X.509
X.509是证书生成和交换的标准规范。
7.PKI(身份认证,银行u盾就是这个系统)
公钥基础设施是为更有效地使用公钥而制定的一系列规范和规范的总称。X.509也是PKI的一种。
钥匙
各种不同的钥匙
1.对称密码的密钥和公钥密码的密钥
2.消息验证码的密钥和数字签名的密钥
3.用于确保机密性的密钥和用于认证的密钥
4.会话密钥和主密钥
当我们访问以https://开头的网页时,网页服务器和浏览器之间会进行基于SSL/TLS的加密通信。在这种通信中使用的密钥是限于该通信的一次性密钥,不能在下一次通信中使用。这种每次通信只能使用一次的密钥称为会话密钥。
与每次都改变的会话密钥相比,重复使用的密钥称为主密钥。
5.用于加密内容的密钥和用于加密密钥的密钥
一般来说,加密的对象是用户直接使用的消息(内容),这种情况下使用的密钥称为CEK(Contents Encrypting Key);相反,用于加密密钥的密钥被称为KEK(密钥加密密钥)。
上面提到的所有会话密钥都用作CEK,而主密钥用作KEK。
CEK和KEK
CEK和KEK.png
迪夫-赫尔曼密钥交换
迪夫-赫尔曼密钥交换是怀特菲尔德·迪夫和马丁·赫尔曼于1976年发明的一种算法。利用该算法,双方可以通过交换一些公共信息来生成一个共享的秘密号,该秘密号可以作为对称密码的密钥。
迪菲-赫尔曼密钥交换
8.随机数(比特币钱包的最爱)
随机数的有用性
生成密钥:用于对称密码和消息认证码。
生成密钥对:用于公钥加密和数字签名。
生成初始化向量(四):分组密码的CBC、CFB和OFB模式。
生成随机数:CTR模式,用于防御重放攻击和分组密码等。
生成salt:用于基于密码的密码等。
随机数的性质
随机性(弱伪随机数)
不可预测性(强伪随机数)
不可复制性(真随机数)
真随机数发生器,TRNG
硬件产生的随机序列是根据传感器采集的热量、声音等自然现象的信息产生的,实际上无法预测和重现。像这样的硬件设备叫做随机数发生器。
伪随机数发生器
能产生随机数的软件叫伪随机数发生器。因为单靠软件无法生成真随机数,所以要加一个“伪”字。
9.国家秘密算法:中国独立密码算法标准(国家金融安全核心,应该大力支持)
保证安全最根本的办法就是基础软件和基础硬件自己控制。在中国短期内无法本土化的情况下,数据加密是目前最好的方式。如果加密算法和实现都是国外提供的,那么安全性从何说起?因此,中国国家密码局发布了自主可控的国家秘密算法,包括SM1 SM2 SM3 SM4算法
SM1算法
分组密码算法是一种分组对称加密和解密算法。块长度为128位,密钥长度为128位。算法的安全强度和相关软硬件性能与AES相当。算法不公开,只以ip核的形式存在于芯片中。利用该算法开发了系列芯片、智能IC卡、智能密钥、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务、国民经济等各个应用领域(包括国家政务通信、警务通信等重要领域)。
SM4分组密码算法
它是一种适用于无线局域网和可信计算系统的特殊分组密码算法。该算法的块长度为128位,密钥长度为128位。SM4算法是中国制定的WAPI标准的组成部分,也可以用于其他环境下的数据加密和保护。
SM1算法和SM4算法是国内自行设计的分组对称密码算法,用于实现数据加密/解密操作,保证数据和信息的机密性。SM1算法和SM4算法都可以用于网络数据的加密保护和存储数据或文件的加密保护。
SM1算法和SM4算法还可以抵抗针对分组密码算法的各种攻击,包括穷举搜索攻击、差分密码分析、线性攻击等。,在实际应用中可以抵抗这些攻击。世界上常见的分组密码算法,包括DES算法、AES算法、IDEA算法等。
SM2算法
国家密码管理局于2010年12月17日发布,名为椭圆曲线算法。椭圆曲线不是椭圆,所以称之为椭圆曲线,是因为它是用三次方程表示的,类似于计算椭圆周长的那些方程。
抽象算法-国产SM3
函数在密码学中起着重要的作用,广泛应用于数字签名、消息认证、数据完整性检测等领域。函数一般认为满足三个基本特征:碰撞稳定性、原根稳定性和次原根稳定性。SM3密码摘要算法是中国国家密码管理局2010年公布的中国商用密码哈希算法标准。SM3算法是一种基于SHA-256的改进算法,适用于商业密码应用中的数字签名和验证。SM3算法采用Merkle-Damgard结构,消息包长度为512位,摘要值长度为256位。
SM3算法的压缩函数与SHA-256的结构相似,但SM3算法的设计更复杂,例如每轮压缩函数使用两个消息字。
到目前为止,SM3算法的安全性还是比较高的。
当然,算法本身是安全的,并不代表它就是安全的。很多过程中,可能会有漏洞。比如保险箱虽然牛逼,但是如果保险箱的钥匙被偷了,保险箱就不安全了。
所以,算法的数学理论再强大,如果算法运行的过程不安全,也很容易泄露密钥。
SCA(边信道攻击)是攻击算法的常用方式。很容易攻击得到算法密钥。可以攻破RSA/AES/DES。跟随国际算法的国家秘密算法SM2和SM4也有同样的道理。
所以金融领域的所有产品都需要算法的安全认证。这里,具有独立算法引擎的安全硬件非常重要。认证过程就是用多种算法的安全性进行认证。具体就是做各种攻击,看能不能拿到钥匙。同样,国家保密局要求内置国家保密算法的安全产品要想认证国家保密,必须达到算法的安全性。
想了解更多移动设备安全和算法安全信息,请关注微信微信官方账号“物联网芯片”,私求免费获取唯一信息。
1.《密码算法 一文让你成密码算法专家:国密算法与国际算法揭秘》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《密码算法 一文让你成密码算法专家:国密算法与国际算法揭秘》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/1528021.html