数字证书以及非对称加密

  1. 加密和认证
    • 加密:将数据资料加密,使得非法用户即使取得加密郭的资料,也无法获取正确的资料内容,所哟数据加密可以保护数据,防止监听攻击。
    • 认证:判断身份的真实性,确认身份后,系统才可以依据不同的身份基于不同的权限。

    数字证书的主要用处就是加密和认证,那么首先来了解下加密和认证的概念:

    加密和认证的侧重点不同,加密主要是负责数据的安全性,而认证主要是负责用户身份的真实性。

  2. 公钥和私钥

    公钥和私钥的原则:

    • 一个公钥对应一个私钥;
    • 公钥是对外公布的,让大家知道的,私钥是只有自己知道的,保密的;
    • 密钥对中一个用于加密,则只有对应的密钥才可以解密;
    • 如果其中一个密钥可以解密数据,则必然是对应的密钥对该数据进行的加密;

    按照加密和解密采用的密钥是否相同,我们将加密算法分为对称加密算法和非对称加密算法。前者采用相同的密钥进行加密和解密,后者则采用一组相互配对的密钥分别进行加密和解密。对于非对称加密,我们选择秘钥对中某一个密钥对消息进行加密,该密文只有通过另一个秘要方能解密。

    公钥和私钥就是非对称加密方式,在非对称加密系统中每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以相互加密和解密。其中公钥是公开的,而私钥是有持有人自己保存,并且必须妥善保管。

  3. 以邮件发送为例来说明公钥私钥使用原理
    • 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。
    • 必须保证是我发送的邮件,不是别人冒充我的。
    • 我用你的公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。你收到邮件后,用你的私钥就可以解密,就能看到内容。
    • 我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。

    使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的:

    要达到这样的目标必须发送邮件的两人都有公钥和私钥。

    公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。

    私钥,就是自己的,必须非常小心保存,最好加上密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。

    公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。

    比如说,我要给你发送一个加密的邮件。首先需要公钥互换,我必须拥有你的公钥,你也必须拥有我的公钥。流程如下:

  4. 公钥加密和公钥认证的过程
    • 基于公开密钥的加密过程
      • Bob将他的公开密钥传送给Alice。
      • Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
      • Bob用他的私人密钥解密Alice的消息。

      比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

      Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。 

    • 基于公开密钥的认证过程
      • Alice用她的私人密钥对文件加密,从而对文件签名。
      • Alice将签名的文件传送给Bob。
      • Bob用Alice的公钥解密文件,从而验证签名。

      身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。

      还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名 发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整 个身份认证的过程如下:

      Alice使用自己的私钥加密,BobAlice的公钥进行解密。 

    非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别:

  5. 数字签名(Digital Signature)
    • 身份认证(Authentication: 数字证书可以帮助我们验证消息发送源的真实身份,因为数字签名的内容是由一个私钥决定的,发送方只有通过专署于他的密钥对中的私钥生成数字签名,采用通过 对方利用公钥实施的数字签名检验。而私钥是属于拥有者的私密信息,不对外公开的。对数字证书的检验实际上就确认消息的发送源是否是私钥的真正拥有者。
    • 防止抵赖(Non-repudiation:防止抵赖在这里的代表对于接收到的经过数字签名的消息,如果接收方采用某个实体的公钥对数字签名检验成功,那么这个实体就是消息的发送方,不容对方抵赖。原因很简单,能够通过公钥对某个数字签名成功检验,证明生成该数字签名使用的是正确的私钥。
    • 消息一致性(Integrity:而数字签名确实可以确保整个消息内容的一致性的,因为最初被用于私钥加密的哈希码是针对整个消息的内容进行哈希计算获得的。消息的内容一旦出现任何的改变,最终对数字签名的检验都将失败。

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

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

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

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

  6. 数字证书

    证书,又称数字证书(Digital Certificate)或者公钥证书(Public Key Certificate),是一种数字签名的声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务的标识。由于大多数普通用途的证书基于 X.509 V3 证书标准,所以我们有将其称为X.509证书。X.509证书广泛地被应用于加密(Encryption)和数字签名(Digital Signature),以提供认证的实现和确保数据的一致性(Integrity)和机密性(Confidentiality)。

    站在公钥密码学的角度来讲,X.509证书就是一个将某个密钥对中的公钥与某个主题(Subject)进行绑定的文件。具体来讲,和公钥进行绑定的 不仅仅包括相应主题的可辨别名称(DN:Distinguished Name),可以包括主题相关的其它可选名称,比如Email地址、DNS名称等,如下图。

  7. 数字证书的颁发

    对于数字证书,尤其是用于商业用途的数字证书,也具有相应的官方办法机构,我们将这样的机构称之为认证权威机构(CA:Certification Authority,以下简称CA)。我们熟悉的CA包括VeriSign、Thawte(OpenSSL)等。证书的颁发机构体系是一个树形结构,每一 个CA可以具有一到多个子CA,最上层的CA被称为根CA。

    从上面给出的数字证书我们知道,证书中不仅仅包括CA的基本信息,还包括一个数字签名和签名采用的算法。CA通过自己的私钥对证书的数据部分进行签 名,并将此签名连同签名采用的算法置于证书之中。按照我们前面介绍的关于数字签名的原理,如果我们具有CA的公钥,我们不仅仅可以验证证书的CA,也能校 验证书的内容是否被篡改。那么在对证书进行验证的时候,CA的公钥从何而来呢?

    实际上,CA的公钥也保存在一个数字证书之中,并被存储于一个受信任的证书存储之中。按照证书代表身份的不同,我们可以将其分为两种类型:CA证书 (CA Certificate)和终端实体证书(End Entity Certificate),其中前者代表CA,后者代表接受CA证书的最终实体。实际上,CA证书和终端实体证书并没有本质的区别。除了最顶层的根CA, 所有的CA证书颁发者是它的上一级CA,即上级的CA作为该CA证书的CA。CA的这种层级关系组成了一种信任链(Trust Chain)。

    为了存储数字证书,Windows中具有相应的证书存储区(Certificate stores)。根据目的或者信任范围的不同,不同的证书被存储于不同的存储区。

    在若干证书存储区中,有一个被称为“受信任的根证书颁发机构”(Trusted Root Certification Authorities)的存储区,它里面存储的所有CA证书代表所信任的证书颁发机构。在默认情况下,对于一个待验证的证书,如果基于该证书CA信任链 上的任何一个CA在该存储区中存在一个证书,那么这个证书是合法的。

  8. 通过凭证三个属性来分析X.509证书
    • 凭证与申明的一致性:证书的申明反映在于公钥绑定的于主题相关的信息;
    • 持有人对凭证的拥有性:在绝大部分的认证过程中,都需要被认证方提供的数字证书具有相应的私钥。私钥的私有性在某种程度上证明了数字证书持有者就是该证书的拥有者;
    • 证书的合法性:这可以通过颁发者对证书的数字签名来验证。

    在上面中我们站在非对称密码学得角度对数字证书进行了相应的介绍,在这里我们从用户凭证的角度进一步地认识数字证书。我们照例采用用户凭证的三个属性来分析数字证书:

    如果被认证方通过一个数字证书作为用户凭证,认证方一般采用信任链(Trust Chain)模式对其实施认证。在该模式下,认证方从数字证书的直接颁发机构向上追溯,如果具有任何一个颁发机构是受信任的,那么认证成功。 不过,有时我们还是会采用其他的认证模式,比如严格比较证书主题信息甚至是序列号。

出处:http://www.zhaiqianfeng.com    
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/zhaiqianfeng/p/4617738.html