一图文让你成为密码算法安全专家:国密算法与国际算法揭秘
整理分享一图文让你成为密码算法安全专家:国密算法与国际算法揭秘 ,希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:,内容如对您有帮助,希望把内容链接给更多的朋友!
密码安全 1.对称密码(现在最常用的基础密码算法) 对称密码是一种用相同的密钥进行加密和解密的技术,用于确保消息的机密性。对称密码 对称算法有几大类: DES算法(你的门禁用的就是这个算法哦) DES(DataEncryptionStandard)是年美国联邦信息处理标准中所采用的一种对称码。 DES是一种将比特的明文加密成比特的密文的对称密码算法,它的密钥长度是比特。尽管从规格上来说,DES的密钥长度是比特,但由于每隔7比特会设置一个用于错误检查的比特,因此实质上其实密钥长度是比特。由于DES的密文可以在短时间内被破译,因此除了用它来解密以前的密文以外,现在我们不应该运用DES了。 三重DES(3DES) 三重DES是为了增加DES的强度,将DES重复3次所得到的一种密码算法,也称为TDEA,通常缩写为3DES。尽管三重DES现在还被银行等机构运用,但其处理速度不高,除了特别注重向下兼容性的情况以外,很少被用于新的用途。 AES AES(AdvancedEncryptionStandard)是取代其前任标准(DES)而成为新标准的一种对称密码算法(Rijndael)。Rijndael是由比利时密码学家JoanDaemen和VincentRijmen规划的分组密码算法,于年被选为新一代的标准密码算法——AES。Rijndael的分组长度和密钥长度可以分别以比特为单位在比特到比特的范围内进行选择。不过在AES的规格中,分组长度固定为比特,密钥长度只有、、和比特三种。 2.公钥密码(非对称密码算法,安全度更高的算法,*取钱的时候会用到哦) 公钥密码(非对称密码)中,密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。公钥算法主要用于身份认证领域。非对称算法 RSA RSA是一种公钥密码算法,它的名字是由它的三位开发者,即RonRivest、AdiShamir和LeonardAdleman的姓氏的首字母组成的(Rivest-Shamir-Adleman)。RSA的加密是求“E次方的modN”,而解密则是求“D次方的modN” 密文=明文^EmodN明文=密文^DmodN 椭圆曲线密码(ECC) 椭圆曲线密码(EllipticCurveCryptography,ECC)是最近备受关心的一种公钥密码算法。它的特点是所需的密钥长度比RSA短。椭圆曲线密码是通过将椭圆曲线上的特定点进行特殊的乘法运算来实现的,它利用了这种乘法运算的逆运算非常困难这一特点。运用公钥密码能够搞定密钥配送问题。公钥密码是密码学界的一项*性发明,现代计算机和互联网所运用的密码技术都得益于公钥密码。 尽管公钥密码能够搞定对称密码中的密钥交换问题,但存在通过中间人攻击被伪装的风险,因此需要对带有数字签名的公钥进行认证。即使已经有了公钥密码,对称密码也不会消失。公钥密码的运行速度远远低于对称密码,因此在一般的通信过程中,往往会配合运用这两种密码,即用对称密码提升处理速度,用公钥密码搞定密钥配送问题。这样的方式称为混合密码*。 3.单向散列函数(HASH) 单向散列函数有一个输入和一个输出,其中输入称为消息(message),输出称为散列值(hashcode)。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。散列值的长度和消息的长度无关。无论消息是1比特,还是MB,甚至是GB,单向散列函数都会计算出固定长度的散列值。以SHA-单向散列函数为例,它所计算出的散列值的长度永远是比特(字节)。为了能够确认完整性,消息中哪怕只有1比特的改变,也会产生不一样的散列值。 单向散列函数输出的散列值也称为消息摘要(messagedigest)或者指纹(fingerprint)HASH MD(MessgeDigest)4是由Rivest于年规划的单向散列函数,能够产生比特的散列值。现在它已经不安全了。MD(MessgeDigest)5是由Rivest于年规划的单向散列函数,能够产生比特的散列值。MD5的强抗碰撞性已经被攻破。也就是说,现在已经能够产生具备相同散列值的两条不一样的消息,因此它也不安全了。 SHA-1、SHA-、SHA-、SHA SHA-1是由N*T(美国国家标准技术研究所)规划的一种能够产生比特的散列值的单向散列函数。现在已不推荐运用。SHA-、SHA-、SHA都是由N*T规划的单向散列函数,它们的散列值长度分别为比特、比特、和比特。这些单向散列函数合起来统称SHA-2。 SHA-1的强抗碰撞性已于年被攻破,不过,SHA-2还尚未被攻破。 单向散列函数能够辨别出“篡改”,但无法辨别出“伪装”,这时就需要进行认证。 4.消息认证码 消息认证码(MessageAuthenticationCode)是一种确认完整性并进行认证的技术,简称为MAC。 消息认证指的是“消息来自正确的发送者”这一性质。消息认证码的输入包括任意长度的消息和一个发送者与接受者之间共享的密钥,它可以输出固定长度的数据,这个数据成为MAC值。 要计算MAC必须持有共享密钥,没有共享密钥的人就无法计算MAC值,消息认证码正是利用这一性质来完成认证的。此外,和单向散列函数的散列值一样,哪怕消息中发生1比特的变化,MAC值也会产生变化,消息认证码正是利用这一性质来确认完整性的。消息认证码可以说是一种与密钥相关联的单向散列函数。消息认证码可以运用单向散列函数和对称密码等技术来实现。MAC与HASH比较MAC流程 HMAC HMAC是一种运用单向散列函数来构造消息认证码的方式,其中HMAC的H就是Hash的意思。 消息认证码也不能搞定所有的问题,例如“对第三方证明”,和“防止否认”,这两个问题就无法通过消息认证码来搞定。 5.数字签名 消息认证码之所以无法防止否认,是因为消息认证码需要在发送者和接收者两者之间共享一个密钥。 数字签名是一种能够对第三方进行消息认证,并能够防止通信对象作出否认的认证技术。 数字签名中也同样会运用公钥和私钥组成的密钥对,不过这两个密钥的用法和公钥密码是相反的,即用私钥加密相当于生成签名,而用公钥解密则相当于验证签名。生成签名和验证签名 实现数字签名运用的算法如下: RSA RSA是一种公钥密码算法,它的名字是由它的三位开发者,即RonRivest、AdiShamir和LeonardAdleman的姓氏的首字母组成的(Rivest-Shamir-Adleman)。 用RSA生成签名和验证签名的过程可用下列公式来表述: 签名=消息^DmodN由签名得到的消息=密文^EmodNEIGamalEIGamal方式是由TaherEIGamal规划的公钥算法。利用了modN下求离散对数的困难度。EIGamal方式可以被用于公钥密码和数字签名。DSADSA(DigitalSignatureAlgorithm)是一种数字签名算法,是由N*T于年制定的数字签名规范。DSA是Scnorr算法与EIGammal方式的变体,只能被用于数字签名。ECDSAECDSA(EllipticCurveDigitalSignatureAlgorithm)是一种利用椭圆曲线密码来实现的数字签名算法。Rabin方式Rabin方式是由M.O.Rabin规划的公钥算法。利用了在modN下求平方根的困难度。Rabin方式可以被用于公钥密码和数字签名。用数字签名既可以识别出篡改和伪装,还可以防止否认,但是无法确认用于验证签名的公钥属于真正的发送者的。要确认公钥是否合法,可以对公钥施加数字签名,这就是证书。 6.证书 公钥证书(Public-KeyCertificate,PKC)其实和*很相似,里面记有姓名、组织、邮箱、*等个人信息,以及属于此人的公钥,并由认证机构(CertificationAuthority,CA)施加数字签名。只要看到公钥证书,我们就可以知道认证机构认定该公钥的确属于此人。公钥证书也简称为证书。认证机构就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织。消息发送者利用认证机构向消息接收者发送密文X.X.是一种证书生成和交换的标准规范。7.PKI(身份认证,银行U盾就是这个体系啦)PKI(Public-KeyInfrastructure)是为了能够更有效地运用公钥而制定的一系列规范和规格的总称。X.也是PKI的一种。密钥各种不一样的密钥1.对称密码的密钥与公钥密码的密钥2.消息认证码的密钥与数字签名的密钥3.用于确保机密性的密钥与用于认证的密钥4.会话密钥与主密钥当我们访问以 8.随机数(比特币钱包的最爱) 随机数的用处生成密钥:用于对称密码和消息认证码。生成密钥对:用于公钥密码和数字签名。生成初始化向量(IV):用于分组密码的CBC、CFB和OFB模式。生成nonce:用于防御重放攻击以及分组密码的CTR模式等。生成盐:用于基于口令的密码等。 随机数的性质随机性(弱伪随机数)不可预测性(强伪随机数)不可重现性(真随机数) 真随机数生成器 通过硬件生成的随机数列,是根据传感器收集的热量、声音的变化等事实上无法预测和重现的自然现象信息来生成的。像这样的硬件设备就称为随机数生成器。 伪随机数生成器 而可以生成随机数的软件则称为伪随机数生成器。因为仅靠软件无法生成真随机数,因此要加上一个“伪”字。 9.国密算法:中国自主的密码算法标准(国家金融安全的核心,要强烈支持) 保证安全最根本的方式是基础软件和基础硬件都是自己控制,现在我国无法短期国产化的情况下,数据加密是最好的方式。如果加密算法以及实现都是外国提供的,安全性从何说起,所以我国国家密码局发布了自主可控的国密算法,包含SM1\SM2\SM3\SM4算法 SM1算法 分组密码算法是分组对称加解密算法,分组长度为位,密钥长度都为比特,算法*强度及相关软硬件实现性能与AES相当,算法不公开,仅以IP核的形式存在于芯片中。采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛使用于电子政务、电子商务及国民经济的各个使用领域(包括国家政务通、警务通等重要领域)。 SM4分组密码算法 是用于监听局域网和可信计算*的专用分组密码算法,该算法的分组长度为比特,密钥长度为比特。SM4算法是我国制定WAPI标准的组成部分,同时也可以用于其它环境下的数据加密保护。 SM1算法和SM4算法是我国自主规划的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。SM1算法和SM4算法均可以用于网络数据的加密保护,以及储存数据或文件的加密保护。 SM1算法和SM4算法还能够抵抗针对分组密码算法的各种攻击方式,包括穷举搜索攻击、差分攻击、线性攻击等,在实际使用中能够抵抗这些攻击手段。国际上常见的分组密码算法,包括国际上的DES算法、AES算法、IDEA算法等。 SM2算法 由国家密码管理局于年月日发布,全称为椭圆曲线算法。椭圆曲线并不是椭圆,之所以称为椭圆曲线是因为它们是用三次方程来表示的,并且该方程与计算椭圆周长的方程相似。 摘要算法——国产SM3 摘要函数在密码学中具有重要的地位,被广泛使用在数字签名,消息认证,数据完整性检测等领域。摘要函数通常被认为需要满足三个基本特点:碰撞稳固性,原根稳固性和第二原根稳固性。SM3密码摘要算法是中国国家密码管理局年公布的中国商用密码杂凑算法标准。SM3算法适用于商用密码使用中的数字签名和验证,是在SHA-基础上改进实现的一种算法。SM3算法采用Merkle-Damgard结构,消息分组长度为位,摘要值长度为位。 SM3算法的压缩函数与SHA-的压缩函数具有相似的结构,但是SM3算法的规划更加复杂,比如压缩函数的每一轮都运用2个消息字。 现今为止,SM3算法的安全性相对较高。 当然,算法本身安全了,并不表示就安全了。在很多流程中,都有可能出现漏洞。举个例子,保险箱虽然很*,但是,保险箱的钥匙如果被偷走,那保险箱就没什么安全性了。 因此,无论算法的数学理论有多*,如果运行算法的过程不是安全的,就容易泄露秘钥。 对算法的攻击,一种常见的手段是SCA(sidechannelattack)。可以很容易的攻击得到算法的密钥。RSA/AES/DES都可以被攻破。作为follow国际算法的国密算法SM2、SM4,也是一样的道理。 所以,金融领域的产品,都要求必须经过算法的安全认证,在这里,带*算法引擎的安全硬件就非常重要了。认证过程就是要多算法实现的安全性进行认证。具体的,就是做各种各样的攻击,看是否能得到密钥。同样的,国密局要求,内置了国密算法的安全产品,要想过国密的认证,就必须要做到算法实现的安全性。物联网那些事