数字签名算法

密码学在互联网领域应用的四个目标:机密性、完整性、身份验证性、防抵赖性

加密算法分为对称加密算法和非对称加密算法,其中对称加密算法,加密和解密的密钥相同,非对称加密算法的加密密钥和解密密钥不同,此外还存在着不需要密钥的散列算法。

常见的对称加密算法有DES、AES等,非对称加密算法有RSA、DSA等,散列算法有SHA-1、MD5等。

单向散列函数可以对消息进行完整性校验。

非对称加密算法又称为公开密钥加密算法。它需要两个密钥,一个称为公开密钥,即公钥,一个称为私有密钥,即私钥。

数字签名算法_第1张图片

1.如果使用公钥对数据进行加密,只有用对应的私钥才可以解密。

2.如果使用私钥对数据进行加密,只有用对应的公钥才可以解密。

数字签名简单来说就是通过可鉴别的数字信息验证自身身份的一种方式。一套数字签名通常定义两种互补的运算,一种用于签名、一种用于验证。分别由发送者持有能够代表自己身份的私钥(私钥不可泄露),由接收者持有与私钥对应的公钥,能够在接受发送者发送信息时验证其身份。

数字签名算法_第2张图片

如果出现第三方攻击者想要欺骗接收方的情况,将接收方保存的发送方的公钥篡改为第三方攻击者的公钥,此时,第三方攻击者就可以冒充发送方,发送消息给接收方。

这种情况下,如果出现接收方想要验证自己所保存的公钥是否属于真实的发送方,于是出现了数字证书的概念。

数字证书:数字证书是一种权威性的电子文档,它提供了一种在 Internet 上验证身份的方式。 其作用类似于司机的驾驶执照或日常生活中凭证。 它是由一个权威机构——CA证书授权(Certificate Authority)中心发行的,人们可以在互联网交往中用它来识别对方的身份。即以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性,以及交易实体身份的真实性,签名信息的不可否认性。当然在数字证书认证的过程中,数字证书认证中心(CA)作为权威的、公正的、 可信赖的第三方,其作用是至关重要的。数字证书也必须具有唯一性和可靠性。

数字证书采用公钥密码体制,即利用一对互相匹配的密钥进行加密、解密。每个用户拥有一把仅为本人所掌握的私有密钥(私钥),用它进行解密和签名;同时拥有一把公共密钥(公钥)并可以对外公开,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样,信息就可以安全无误地到达目的地了,即使被第三方截获,由于没有相应的私钥,也无法进行解密。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密。在公开密钥密码体制中,常用的一种是RSA体制。

发送者请求第三方权威结构(CA),为自己的公钥做认证,证书中心用自己的私钥,对发送方的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

数字签名算法_第3张图片

常见的签名加密算法---MD5

MD5用的哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。严格来讲,MD5不是一种加密算法而是摘要算法。无论多长的输入,MD5都会输出长度为128bits的一个串(通常16进制表示为32个字符)。

MD5具有如下特点:(1)压缩性:任意长度的数据,算出来的MD5值是固定的;(2)非可逆性:MD5是一种单向加密算法,无法通过哈希值反推出原始消息;(3)不冲突性:MD5算法保证两个不同的消息生成的哈希值不同,即使输入数据只差一个字节,也会生成完全不同的数据。(4)速度快:MD5运算速度很快,适合对大量数据进行哈希运算。

MD5存在的安全问题:(1)容易受到碰撞:由于MD5的压缩函数具有可逆性,攻击者key通过特殊的构造方法生成两个不同的消息,使得他们的哈希值相同,这种情况称为哈希碰撞,攻击者可以伪造数据、篡改数据从而导致导致安全问题。(2)预测性。(3)易受长度攻击。

消息认证码技术是一种确认完整性并进行认证的技术,英文名称为message authentication code,简称MAC。

认证的基本流程:1.发送者使用共享密钥对消息计算MAC值;(2)发送者将消息和MAC值一起发送给接收者;(3)接收者收到MAC值和消息后,使用同一个共享密钥对消息计算MAC值;(4)对比计算出来的MAC值和接收的MAC值是否一致,一致则认证成功。

HMAC是一种使用单向散列函数构造消息认证码的方法,其中H就是hash函数的意思。HMAC中的单向散列函数并不局限于一种,任何高强度的单向散列函数都可以被用于HMAC。

CMAC(基于分组加密的消息认证码),一般用作消息的签名。与HMAC相同的是都需要一把秘钥来加密内容得到MAC,只是MAC的产生方法不同,一个是用hash算法,一个是用分组加密算法。

SM2基础知识:SM2是公钥密码算法。在我国的商用密码体系中,常用SM2替换RSA算法。

SM2性能更优更安全,密码复杂度更高,处理速度快,机器性能消耗更小。 

SM2是非对称加密,椭圆曲线算法,破解难度高于RSA,主要流程类似于数字签名算法,签名者生成(d,P),其中d为私钥,P为公钥,d用于签名者签名,P用于接收者验签。

杂凑算法:

杂凑运算又称hash函数,Hash函数(也称杂凑函数或杂凑算法)就是把任意长的输入消息串变化成固定长的输出串的一种函数。

SM3也是一种杂凑算法,SM3适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法,其安全性和SHA-256相当。SM3和MD5的迭代过程类似,也采用Merkle-Damgard结构。消息分组长度为512位,摘要值长度为256位。

SM4是一种分组密码算法,由我国国家密码管理局在2012年发布,常用于无线互联网加密等领域。SM4是一种分组密码算法,其分组长度为128位(即16字节4字),密钥长度也为128位(即16字节4字)。其加解密过程采用了32轮迭代机制(与DES、AES类似),每一轮需要一个轮密钥(与DES、AES类似)。

CMAC(基于分组加密的消息认证码),一般用作消息的签名。与HMAC相同的是都需要一把秘钥来加密内容得到MAC,只是MAC的产生方法不同,一个是用hash算法,一个是用分组加密算法。

你可能感兴趣的:(密码学,密码学)