`
eclipse_spring
  • 浏览: 117071 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

详解公钥、私钥、数字证书的概念

阅读更多

加密和认证
  首先我们需要区分加密和认证这两个基本概念。
  加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。

 
公钥和私钥
      公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。

      在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。

  公钥私钥的原则:

  1. 一个公钥对应一个私钥。
  2. 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
  3. 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
  4. 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

      用电子邮件的方式说明一下原理。
      使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的:
      1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。
      2. 必须保证是我发送的邮件,不是别人冒充我的。
      要达到这样的目标必须发送邮件的两人都有公钥和私钥。
      公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上 密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能 用公钥解密。
      比如说,我要给你发送一个加密的邮件。首先,我必须拥有你的公钥,你也必须拥有我的公钥。
      首先,我用你的公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。你收到邮件后,用你的私钥就可以解密,就能看到内容。
      其次我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。

 

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

 

基于公开密钥的加密过程

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

  1. Bob将他的公开密钥传送给Alice。
  2. Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
  3. Bob用他的私人密钥解密Alice的消息。

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

 

基于公开密钥的认证过程

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

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

  1. Alice用她的私人密钥对文件加密,从而对文件签名。
  2. Alice将签名的文件传送给Bob。
  3. Bob用Alice的公钥解密文件,从而验证签名。

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

 

根证书

       根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。

 

总结

 

      根据非对称密码学的原理,每个证书持有人都有一对公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由证书持人自己持有,并且必须妥善保管和注意保密。

      数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。  

      可以这样说,数字证书就是经过CA认证过的公钥,而私钥一般情况都是由证书持有者在自己本地生成的,由证书持有者自己负责保管。具体使用时,签名操作是发送方用私钥进行签名,接受方用发送方证书来验证签名;加密操作则是用接受方的证书进行加密,接受方用自己的私钥进行解密。

 

分享到:
评论
10 楼 doraeimo 2013-12-03  
对签名的描述是错误的
9 楼 hardPass 2013-05-26  
这么老的文章,但是现在看到依然感觉受益匪浅,例子很清晰。

把加密和认证说的很清晰。

8 楼 一个人旅行 2013-04-07  
写的真好,受教了!
7 楼 337240552 2012-08-03  
这次总算看懂了 好惭愧
6 楼 nizen 2012-07-24  
关于非对称加密的例子,貌似其他地方页看过举例Alice和Bob,楼主是哪里看到这个例子的呢
或者公布下参考文章的链接
5 楼 鱼吃猫 2012-06-07  
加密==签名?
4 楼 yanzhexian 2011-12-09  
mark之。
3 楼 seeallsea 2011-10-13  
写的比较清楚,明白了加密和认证这两个概念,以前看到的文章都是把这个两个概念混在一起,没有清楚的分开陈述,不错的文章。

另外问一下博主,如果我想实现传送的数据既要实现加密传输,同时又要实现身份认证,是不是应该发送时要加密两次(一次为加密传输,另一次为身份认证),接受时再解密两次?
2 楼 caowei3047 2010-08-20  
你这篇文章是我这几天看过的说的最清晰,易懂的好文章。
1 楼 haiyang 2009-01-13  
好文…………………………

相关推荐

    公钥私钥加密解密数字证书数字签名详解.docx

    ### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...

    公钥私钥加密

    ### 公钥私钥加密详解 #### 一、公钥私钥加密原理 **公钥私钥加密**是一种非对称加密技术,它基于一对密钥:公钥和私钥。其中,公钥可以公开分享给任何需要的人,而私钥则由密钥所有者独自保管,不得泄露。这种...

    数字证书格式详细说明

    数字证书是公钥加密系统中不可或缺的一部分,它用于身份验证、数据加密和数字签名。常见的数字证书格式有 X.509,它定义了两种证书:公钥证书和属性证书。 X.509 证书格式由以下部分组成: * 证书元数据...

    生成公钥密钥工具(Openssl) 64位

    - **数字签名**:私钥可以用于生成数字签名,公钥用于验证签名的合法性,确保数据未被篡改。 - **SSH连接**:在SSH协议中,公钥被放在远程服务器上,允许客户端使用相应的私钥进行安全登录。 **5. 其他OpenSSL命令*...

    轻松理解数字签名和数字证书

    ### 数字签名与数字证书详解 #### 一、数字签名概览 数字签名是一种用于验证电子文档完整性和来源的技术手段,常被应用于电子商务、电子政务以及其他需要确保信息安全传输的领域。数字签名通过加密技术实现,具体...

    通俗易懂的数字证书原理

    ### 数字证书原理详解 #### 一、基础知识 在深入探讨数字证书之前,我们需要了解一些基本的概念和技术背景,包括公钥密码体制、对称加密算法、非对称加密算法、RSA算法及其应用。 ##### 1.1 公钥密码体制(Public...

    数字签名详解(讲的非常通俗)

    1. **数字证书的生成**:鲍勃向CA申请数字证书,CA使用自己的私钥对鲍勃的公钥及个人信息进行加密,生成数字证书。 2. **数字证书的应用**:在发送加密消息时,鲍勃除了附带数字签名外,还会附上数字证书,以便苏珊...

    数字证书的代码以及文档说明

    本文将深入探讨Java中的数字证书概念,生成过程,以及相关的文档说明。 一、数字证书概述 数字证书是网络安全的基础,它类似于现实生活中的身份证,通过权威机构(称为证书颁发机构,或CA)进行签名,以证明持有者...

    数字证书格式 相关知识 和 方法

    《数字证书格式详解与操作指南》 数字证书在网络安全中扮演着至关重要的角色,它用于确认网络实体的身份,确保信息传输的安全性。本文将深入探讨常见的数字证书格式、它们的区别以及相关的操作方法。 1. 数字证书...

    个人数字证书与CA认证

    ### 个人数字证书与CA认证知识点详解 #### 一、数字证书的概念与作用 - **定义**:数字证书是一种用于在网络环境中验证用户身份的技术手段,它由一系列数据组成,包括用户的个人信息及其对应的数字签名。 - **功能...

    java安全通信数字证书

    【Java安全通信与数字证书详解】 在Java编程中,安全通信是确保数据在传输过程中不被篡改或窃取的关键。数字证书作为一种重要的安全机制,用于验证通信双方的身份,保证信息的真实性。本篇文章将深入探讨Java中如何...

    基于.net的RSA私钥加密 公钥解密的源码

    - 私钥不应以明文形式存储,应采用安全方式如证书存储或加密后存储。 - 在传输过程中,公钥也需要保护,以防中间人攻击。 - 加密数据的长度有限制,通常小于RSA密钥长度的一半。 8. **应用场景**: RSA常用于...

    X.509数字证书

    **X.509数字证书详解** X.509是一种国际标准,定义了公钥证书的格式,用于在开放的网络环境中验证身份。这个标准由国际电信联盟电信标准部门(ITU-T)的X系列建议制定,编号为X.509。X.509证书是网络安全体系中的...

    数字证书X509编解码

    **X509数字证书详解** X509是一种国际标准,用于定义公钥基础设施(PKI)中数字证书的格式。这个标准由国际电信联盟(ITU)的T组(Telecommunication Standardization Sector)制定,具体是X.509v3版本。X509证书...

    RSA公私钥pkcs8转换为C#用的xml

    公钥和私钥是RSA的核心组成部分,其中公钥用于加密,私钥用于解密。PKCS#8(Public-Key Cryptography Standards #8)是RSA公钥加密标准的一个版本,它定义了私钥的存储格式。然而,C#的.NET框架默认支持XML格式的...

    Kubernetes中的证书工作机制详解

    - 服务器端证书:证明服务器身份的数字证书,包含服务器的公钥和身份信息。 - 服务器端私钥:与服务器端证书的公钥配对,用于证明服务器持有证书。 - 客户端证书:证明客户端身份的数字证书,包含客户端的公钥和身份...

    java数字证书

    ### Java数字证书详解 #### 一、加密算法概述 在探讨Java数字证书之前,我们首先需要理解加密算法的基础知识。加密算法是确保网络通信安全的关键技术之一,它通过将原始数据转换成一种不可读的形式来保护信息不被...

    IIS 6 部署服务器数字证书视频指南

    **IIS 6.0 服务器数字证书部署详解** 在互联网通信中,为了保障数据的安全传输,服务器证书扮演着至关重要的角色。特别是对于运行在Windows Server 2003上的IIS 6.0(Internet Information Services)应用程序...

Global site tag (gtag.js) - Google Analytics