加密,认证疑难名词总结----RSA, 公钥,私钥,CA,数字签名,数字证书

在网络和操作系统安全通信中经常涉及到这几个名词: RSA, 公钥,私钥,CA,数字签名,数字证书。
我找了很多资料,很少有把疑难点讲全面的。但不讲清楚这几个,很难有一个清晰的认识和理解。
我现在也尝试这样的方式,自己总结,以便后来查看,同时也希望能帮助一些人少走弯路,省去baidu, google, 看RFC的时间。

  1. 对称和非对称,公钥和私钥:
    加密的两种方式:对称加密和非对称加密。
    对称加密:加密的密钥也叫公钥和解密的密钥(也叫私钥)相同。特点是算法公开、计算量小、加密速度快、加密效率高。
    非对称加密:加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。RSA是一种非对称加密算法。
    RSA是取的研究这个算法的三个专家的首字母。

    加密算法中,公钥用于对数据进行加密,私钥用于对数据进行解密。当然了,这个也可以很直观的理解:
    公钥就是公开的密钥,其公开了大家才能用它来加密数据。私钥是私有的密钥,谁有这个密钥才能够解密密文。
    在签名算法中,私钥用于对数据进行签名,公钥用于对签名进行验证。这也可以直观地进行理解:
    对一个文件签名,当然要用私钥,因为我们希望只有自己才能完成签字。验证过程当然希望所有人都能够执行。
    大家看到签名都能通过验证证明确实是我自己签的。如果你用私钥加密了,所有人都能查到公钥并解密,所以其实不能叫加解密。

  2. 数字签名

数字签名并不是签一个字来证明这个东西是我的,而是做了一个数学计算。数字签名(Digital Signature)是 先对消息内容做Hash得到一串数字,然后用私钥对这个数字进行加密
数字签名就两个目的:证明这消息是你发的;证明这消息内容确实是完整的。(认证和完整性)。

 对消息做一次哈希(md5或者sha1都行),然后用你的私钥加密这段哈希作为签名,并一起公布出去

当别人收到你的公告时,他可以用你的公钥解密你的签名,如果解密成功,并且解密出来的哈希值确实和你的公告原文一致,
那么他就证明了两点:这消息确实是你发的,而且内容是完整的。
我们在网上下载文件,经常会有一个长串的字符 MD5值。我们下载资料后,linux可以用md5sum 检查一下这个资料,命令输出得到的值和网站上的md5值比较。如果一致,说明文件下载完整。如果不一致,说明下载的文件发生改变。windows可以用winmd5等软件验证。

3.数字证书Digital Certificate和证书中心Certificate Authority
“服务器”要对外发布公钥,那“服务器”如何把公钥发送给“客户”呢?我们第一反应可能会想到以下的两个方法:
a)把公钥放到互联网的某个地方的一个下载地址,事先给“客户”去下载。
b)每次和“客户”开始通信时,“服务器”把公钥发给“客户”。
但是这个两个方法都有一定的问题,
对于a)方法,“客户”无法确定这个下载地址是不是“服务器”发布的,你凭什么就相信这个地址下载的东西就是“服务器”发布的而不是别人伪造的呢,万一下载到一个假的怎么办?另外要所有的“客户”都在通信前事先去下载公钥也很不现实。
对于b)方法,也有问题,因为任何人都可以自己生成一对公钥和私钥,他只要向“客户”发送他自己的私钥就可以冒充“服务器”了。

为了解决这个问题,数字证书出现了,它可以解决我们上面的问题。先大概看下什么是数字证书,一个证书包含下面的具体内容:

  • 证书的发布机构
  • 证书的有效期
  • 公钥
  • 证书所有者(Subject)
  • 签名所使用的算法
  • 指纹以及指纹算法

    证书发布机构除了给别人发布证书外,他自己本身也有自己的证书。证书发布机构的证书是哪里来的呢???
    这个证书发布机构的数字证书(一般由他自己生成)在我们的操作系统刚安装好时(例如windows xp等操作系统),
    这些证书发布机构的数字证书就已经被微软(或者其它操作系统的开发机构)安装在操作系统中了,
    微软等公司会根据一些权威安全机构的评估选取一些信誉很好并且通过一定的安全认证的证书发布机构,
    把这些证书发布机构的证书默认就安装在操作系统里面了,并且设置为操作系统信任的数字证书
    这些证书发布机构自己持有与他自己的数字证书对应的私钥,他会用这个私钥加密所有他发布的证书的指纹作为数字签名。

数字证书总结:
两个前提:CA是可以信任的(CA是一家实实在在的公司,有信誉)。微软已经把CA的数字证书(公钥)默认安装在操作系统中,也就是说操作系统中有CA的公钥。
服务器向CA申请数字证书。CA生成服务器的数字证书(包含了服务器的公钥)和私钥给服务器。客户端请求网页,然后客户端收到服务器发来的信息和数字证书。客户端用CA公钥解开服务器数字证书,得到服务器公钥。
有了服务器公钥,客户端就可以解开服务器的加密网页。

如何自己创建证书
每个证书发布机构都有自己的用来创建证书的工具,不同类型的证书都有一定的格式和规范,微软为我们提供了一个用来创建证书的工具makecert.exe,在安装Visual Studio的时候会安装上。如果没有安装也无所谓,可以上网去下一个,搜索makecert就可以了。证书创建工具 (Makecert.exe)。

++++++++++++++++++++++++++++++++++++++
1.排版有点麻烦,要排的好看,还要花时间。
2.自己想的与写的文字有差距。
++++++++++++++++++++++++++++++++++++++

原文地址:http://blog.51cto.com/jsahz/2178599

时间: 2024-10-13 04:33:54

加密,认证疑难名词总结----RSA, 公钥,私钥,CA,数字签名,数字证书的相关文章

公钥 私钥 数字签名 数字证书

经常会听到公钥和私钥的概念,今天来讨论一下我对公钥和私钥的理解. 公钥和私钥是非对称加密的一种,有别于对称加密中,双方都持有相同的密钥,非对称加密,加解密双方持有不同的密钥,公开给对方的密钥被称为公钥,自己保留的密钥 被称为私钥.由公钥加密的内容只有私钥能解开,反之,由私钥加密的内容只能被公钥解开. 那么,公钥和私钥的用处在哪里呢.首先来了解一下对称加密,对称加密双方都持有相同的密钥,只要得不到密钥就解不开密文,但这是建立在双方都互相信任的基础上, 如果两边都可能存在不信任,那么随便把密钥交给对

php RSA公钥私钥加解密和验证用法

现在很多项目中会使用到rsa加解密和验证相关的技术,分别整理代码如下,方便记忆和使用. [签名和验证] 1 //获得签名 2 function getSign($data) { 3 $pem = 'my_rsa_private_key.pem'; 4 $privateKey = openssl_get_privatekey(file_get_contents($pem)); 5 openssl_sign($data, $sign, $privateKey); 6 openssl_free_key

ssl 中的公钥私钥,不涉及证书(未整理)

参考文档: http://blog.csdn.net/chaijunkun/article/details/7275632 生成私钥 openssl genrsa -out rsa_private_key.pem 1024 用私钥产生公钥 openssl rsa -in rsa_private_key.pem -out public_key.pem -pubout 私钥加工(PKCS#8编码) openssl pkcs8 -topk8 -in rsa_private_key.pem -out p

https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL

转自:https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL 因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结. 1. 首先推荐几个文章: 数字证书: http://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html 数字证书和SSL: http://www.2cto.com/Article/201203/121534.html 数字签名: http://www.

加密、解密原理和openssl自建CA过程详解

一.加密和解密相关知识简介 1.信息安全标准 NIST(National Institute of Standards and Technology)美国国家标准与技术研究院,制定了网络信息安全与保密的三个要素: 保密性(confidentiality):信息不泄露给非授权用户.实体或过程,或供其利用的特性.(一般包括数据保密性.隐私性.) 完整性(Integrity):数据未经授权不能进行改变的特性.即信息在存储或传输过程中保持不被修改.不被破坏和丢失的特性.(一般包括数据完整性.系统完整性.

苹果证书和公钥私钥加密

今天看了点关于公私钥加密的内容,赶快记下省的忘记了. 这里有几个概念:公钥,私钥,加密,认证,认证中心(CA),数字证书. 公钥和私钥是属于非对称性加密,公钥和私钥是完全不同的,但是相互对应的.一把私钥只能对应一把公钥.顾名思义,公钥是对外开放的,所有人都可以获得,私钥是自己保管的. 加密与认证 基于公钥的加密 加密的目的是保证密文只能由特定人读取,其他人都不能获知里面的内容.公钥的作用就是加密.举例说明:Alices发信息给Bob.她会用Bob给的公钥对明文进行加密.Bob得到密文后,用自己的

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

详解公钥.私钥.数字证书的概念 加密和认证 首先我们需要区分加密和认证这两个基本概念. 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击.其重点在于数据的安全 性.身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限.其重点在于用户的真实性.两者的侧重点是不同的. 公钥和私钥      公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高. 在现代密码体制中加密

Android 获取签名公钥 和 公钥私钥加解密

public class GetPublicKey { /** * 获取签名公钥 * @param mContext * @return */ protected static String getSignInfo(Context mContext) { String signcode = ""; try { PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo( GetAppInfo.getPack

密码学-详解公钥、私钥、数字证书的概念

加密和认证 首先我们需要区分加密和认证这两个基本概念. 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击.其重点在于数据的安全 性.身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限.其重点在于用户的真实性.两者的侧重点是不同的. 公钥和私钥      公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高. 在现代密码体制中加密和解密是采用不同的密钥(公开密钥