zoukankan      html  css  js  c++  java
  • 非对称密码学(Asymmetric Cryptography) 转载

    转载:http://www.cnblogs.com/artech/archive/2011/05/23/2054725.html

        作者:Artech

        出处:http://artech.cnblogs.com/

     

    按照维基百科的定义,密码学(Cryptography)一种关于信息隐藏(Hiding Information)的研究或者实践。当代密码学是一种跨学科的研究,涉及的学科主要包括数学、计算机科学和工程学。站在消息交换的角度,密码学就是帮助我们实现对整个消息或者对消息的某个部分进行数字签名和加密的理论和方法。

         数字签名和加密依赖于相应的加密算法(Cryptographic Algorithm),从数学的角度来讲,加密算法是就是将被加密的数据和密钥作为自变量,将加密后的数据作为因变量的函数。与加密相对的操作是解密。按照加密和解密采用的密钥是否相同,我们将加密算法分为对称加密算法和非对称加密算法。前者采用相同的密钥进行加密和解密,后者则采用一组相互配对的密钥分别进行加密和解密。对于非对称加密,我们选择秘钥对中某一个密钥对消息进行加密,该密文只有通过另一个秘要方能解密。非对称密码学具有两个主要的应用:

    直接通过对消息进行加密解决机密性问题;

    通过数字签名实现身份认证和数据一致性的问题。

    1.1     消息加密(Encryption

    非对称加密依赖一组由公钥/私钥(Public Key /Private Key)组成的密钥对,所以采用非对称加密又被称为公钥加密(Public Key Cryptography)。具体来说,公钥和私钥均可以用于加密。如果密钥对中的其中一个用于加密,另一个则用于解密。公钥公诸于众,不具有隐私性,任何人均可以获取;而私钥专属于拥有该密钥对的实体,属于绝对隐私。

    对于消息交换来说,通过非对称的方式对消息进行加密是能够确保消息的机密性。具体的做法是:消息的发送方采用接收方的公钥进行加密,接收方通过自己的私钥进行解密。由于私钥仅供接收方所有,所有其他人不能对密文进行解密。

    1.2     数字签名(Digital Signature

    我们所说的数字签名实际上包括两项主要的工作,签名(Signing)和检验(Verification),前者创建一个数字签名,后者验证签名的有效性。接下来,我们来简单介绍一下在消息交换场景下的签名和检验是如何实现的。

     

    签名的过程其实很简单,整个流程如上图所示。整个流程包括两个步骤:首先,发送方首先采用某种算法对整个消息的内容实施哈希计算,得到一个哈希码。然后,发送使用自己的私钥对该哈希码就行加密,加密后得到的密文就是数字签名。该数字签名最终会连同发送方密钥对中的公钥(该公钥一般会内嵌于一个数字证书中)附加到原消息上一并发予接收方。

    这三项被接收方接收之后,它就可以借助这个数字签名验证发送方的真实身份和消息的完整性,这个过程被称为数字签名的验证。整个数字签名检验流程如下图所示。首先,原消息被提取出来,通过相同的哈希算法得到一个哈希码。然后,数字签名被提取出来,采用相同的算法利用公钥对数字签名进行解密,得到生成数字签名的那个哈希码。两个哈希码进行比较,如果一致则可以证明数字签名的有效性以及消息本身的完整性。

     

    采用非对称密码学对消息加密解决的是消息的机密性问题,而数字签名的作用则体现在如下三个方面:

    身份认证(Authentication数字证书可以帮助我们验证消息发送源的真实身份,因为数字签名的内容是由一个私钥决定的,发送方只有通过专署于他的密钥对中的私钥生成数字签名,采用通过对方利用公钥实施的数字签名检验。而私钥是属于拥有者的私密信息,不对外公开的。对数字证书的检验实际上就确认消息的发送源是否是私钥的真正拥有者。

    防止抵赖(Non-repudiation:防止抵赖在这里的代表对于接收到的经过数字签名的消息,如果接收方采用某个实体的公钥对数字签名检验成功,那么这个实体就是消息的发送方,不容对方抵赖。原因很简单,能够通过公钥对某个数字签名成功检验,证明生成该数字签名使用的是正确的私钥。

    消息一致性(Integrity:而数字签名确实可以确保整个消息内容的一致性的,因为最初被用于私钥加密的哈希码是针对整个消息的内容进行哈希计算获得的。消息的内容一旦出现任何的改变,最终对数字签名的检验都将失败。

        在上面介绍数字签名的流程时,我们说发送方的公钥会连同生成的数字签名会附加到消息中,一并传送给接收方,以辅助接收方对发送进行身份验证。实际上,这个公钥在一般情况下是通过数字证书的形式进行传递的。数字证实在这里作为发送方的凭证。

     

  • 相关阅读:
    vim 显示行号 临时&永久
    ubuntu redis config IP password
    Vulnerability Scanning Tools
    Tomcat清理无用应用防止漏洞
    XSS平台-学习
    Amazon aws s3 加速
    XSS的DOS攻击之 server limit dos
    Linux Nginx naxsi
    Acunetix Web Vulnerability Scanner abbr. AWVS
    nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
  • 原文地址:https://www.cnblogs.com/huazai8204/p/2644498.html
Copyright © 2011-2022 走看看