密钥, 数字签名, 数字证书

密钥

        密钥就是秘密钥匙的简称. 密钥分为两种: 对称密钥和 非对称密钥.

a)       对称加密:信息的发送方和接收方使用同一个密钥去加密和解密数据。

b)       非对称加密:又称公钥密钥加密。它需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。每把密钥执行一种对数据的单向处理,每把的功能恰恰与另一把相反,一把用于加密时,则另一把就用于解密。用公钥加密的文件只能用私钥解密,而私钥加密的文件只能用公钥解密

数字签名

        就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。

a)        数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

b)       “发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用密钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。

c)        数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。不同的文件将得到不同的数字摘要。一次数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。”

数字证书

        数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,是身份认证机构盖在数字身份证上的一个章或印。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。

a)        数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。

b)       数字证书还有一个重要的特征就是只在特定的时间段内有效。

c)        数字证书颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。

扫描二维码关注公众号,回复: 2039871 查看本文章

数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样信息就可以安全无误地到达目的地了。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密。

用户也可以采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。采用数字签名,能够确认以下两点:1. 保证信息是由签名者自己签名发送的,签名者不能否认或难以否认。 2. 保证信息自签发后到收到为止未曾作过任何修改,签发的文件是真实文件。

数字证书的格式普遍采用的是X.509V3国际标准,一个标准的X.509数字证书包含以下一些内容:

证书的版本信息;

  证书的序列号,每个证书都有一个唯一的证书序列号;

  证书所使用的签名算法;

  证书的发行机构名称,命名规则一般采用X.500格式;

  证书的有效期,通用的证书一般采用UTC时间格式,它的计时范围为1950-2049;

  证书所有人的名称,命名规则一般采用X.500格式;

  证书所有人的公开密钥;

  证书发行者对证书的签名。

#openssl x509 -inform pem -in xxx.pem -text


密钥,签名,证书使用

    如果A给B发送一个加密的有数字签名的文件,会怎么样呢?

        A有自己的公钥和私钥:A_public_key, A_private_key

        B也有自己的公钥和私钥:   B_public_key, B_private_key

            A和B互换公钥

            A将文件用hash算法生成摘要,用A_private_key对摘要加密,得到的就叫数字签名

            用B_public_key对文件加密

            A将加密的文件和数字签名一起发给B

        ------B收到内容后

            用B_private_key解密文件,得到明文

            用A_public_key解密数字签名,得到内容摘要

            将明文的文件内容用同样hash算法得到摘要,

            对比摘要,相同则证明内容和来源都正确。

    解密数字签名时,需要事先知道发送方A的公钥,那怎么才知道自己得到的公钥是发送方A的呢?

        例如:C知道B的公钥,然后偷偷把B手里A的公钥A_public_key换成自己的公钥C_public_key,那么以后C给B发送的东西,B还一直以为是A发送的。因为B不知道自己手里公钥就是A的。

        怎么办呢?使用数字证书

        A找证书中心(CA)申请自己的证书,CA把A的公钥和一些信息作为证书内容写入,然后用CA自己的私钥生成数字签名一并写入证书。A给B发数据时把用B的公钥加密的数据、A的数字签名、A的数字证书一起发过去。B的电脑安装有根证书(操作系统带的,知道CA的公钥),用CA的公钥验证A的数字证书里面签名的合法性,合法后从证书内容里读出A的公钥。再用A的公钥解密A的数字签名验证数据完成性。最后用B的私钥解密数据。

http://support.huawei.com/huaweiconnect/enterprise/thread-306509.html




猜你喜欢

转载自blog.csdn.net/lcxhjg/article/details/80968548