A. 什么是非对称加密,数字签名,数字证书
今天,我读到一篇好文章。
它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。
我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出来了。
====================================================
数字签名是什么?
作者:David Youd
翻译:阮一峰
1.
如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。
(完)
B. PKI的身份认证过程是CA发布的证书来实现的还是通过非对称签名以及验证算法来实现的
对,签名是用的是私钥,验签是用的是公钥,所以叫非对称算法。只有验证通过才能确认该证书的身份,公私钥才配对。
C. 私钥、公钥、证书的区别和关系
私钥是要求你输入个人密码才可访问的,一般网上银行之类可用到。
公钥不要求设专置密码,是已属经默认了的,一般上一些安全性要求不高的网站或共享资源,如局域网。
证书是一种网站加密浏览方式,只有允许了才可访问,一般为安全性较高的网站,如网上银行;可以访止黑客盗取客户资料。
D. 赛门铁克的SSL证书采用的是什么非对称加密算法
主流的RSA加密算法
使用主流的RSA非对称加密算法,只需要公钥即可实现数据加密,服务端使用私钥解密,拥有较好的安全性,相对以往的算法具有更好的保护功能,使您的网站传输的数据更安全更可靠。
E. SSL中,公钥,私钥,证书的后缀名都是些啥
SSL证书后缀
CSR – Certificate Signing Request,即证书签名请求,这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥(当然还附带了一些别的信息),在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好.做过iOS APP的朋友都应该知道是怎么向苹果申请开发者证书的吧.
KEY– 通常用来存放一个RSA 公钥或者私钥,并非X.509证书,编码同样的,可能是PEM,也可能是DER.
CRT– CRT应该是certificate的三个字母,其实还是证书的意思,常见于*NIX系统,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码。本站提供的CRT格式等同于CER,等同于PEM。
PEM – Privacy Enhanced Mail的缩写,以文本的方式进行存储。打开看文本格式,以”—–BEGIN…”开头, “—–END…”结尾,内容是编码. 查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout Apache和*NIX服务器偏向于使用这种编码格式.
CER– 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码.
DER – Distinguished Encoding Rules的缩写,以二进制方式进行存储,文件结构无法直接预览,查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout Java和Windows服务器偏向于使用这种编码格式.
PFX/P12 – predecessor of PKCS#12,对*nix服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX通常会有一个”提取密码”,你想把里面的东西读取出来的话,它就要求你提供提取密码,PFX使用的时DER编码,如何把PFX转换为PEM编码?
JKS – 即Java Key Storage,这是Java的专利,跟OpenSSL关系不大,利用Java的一个叫”keytool”的工具,可以将PFX转为JKS,当然了,keytool也能直接生成JKS。
F. 什么是非对称加密
非对称密钥,是指一对加密密钥与解密密钥,这两个密钥是数学相关,用某用户加密密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。
如果加密密钥是公开的,这用于客户给私钥所有者上传加密的数据,这被称作为公开密钥加密(狭义)。例如,网络银行的客户发给银行网站的账户操作的加密数据。
如果解密密钥是公开的,用私钥加密的信息,可以用公钥对其解密,用于客户验证持有私钥一方发布的数据或文件是完整准确的,接收者由此可知这条信息确实来自于拥有私钥的某人,这被称作数字签名,公钥的形式就是数字证书。例如,从网上下载的安装程序,一般都带有程序制作者的数字签名,可以证明该程序的确是该作者(公司)发布的而不是第三方伪造的且未被篡改过(身份认证/验证)。
优点
与对称密钥加密相比,优点在于无需共享的通用密钥,解密的私钥不发往任何用户。即使公钥在网上被截获,如果没有与其匹配的私钥,也无法解密,所截获的公钥是没有任何用处的。
过程
假设两个用户A,B进行通信,公钥为c,私钥为d,明文为x.
A用公钥对明文进行加密形成密文c(x),然后传输密文;
B收到密文,用私钥对密文进行解密d(c(x)),得到要通信的明文x。
希望能帮到你!
G. 什么是非对称加密密钥为什么可以证明我的身份
公钥私钥是非对称加密的典型例子。公钥负责加密,私钥负责解密。使用非对称加密,连接方式只有一条路。浏览器使用非对称加密来验证公私钥对,以及扩展证书本身。为此,浏览器将使用随时可用的公钥来加密一小撮一次性数据。 如果服务器能够解密这个数据并以明文形式发回,那么它证明了它的私钥对应于公钥。至此,浏览器和服务器可以开始他们的加密链接了。
H. 非对称加密,公钥,密钥,证书,签名的区别和联系
答:非对称加密的主要用途就是:密钥交换和数字签名。 数字签名的作用主要是:确保发送的报文没有被篡改。 数字签名: 1、发送方A对发送的报文M生成一个摘要X1。(大多使用hash) 2、发送方A用自己的私钥加密这个摘要X1。 3、接收方B对使用A的公钥解...
I. 老师你好,在ssl证书中,cer是公钥证书,key是私钥证书,crt是证书链对吗
一、SSL证书文件
如图所示,就是一些SSL证书文件。上图带有root CA 字样的证书文件就是根证书, 然后带intermediate ca 字样的就是中间证书文件, 最后一个 ssl servercertificate 字样的证书即为证书文件。
了解认识SSL证书文件,才能更好的去安装SSL证书。虽然大部分时候直接安装证书文件,浏览器也会显示安全,但是由于一些浏览器会自动补齐证书链,但是证书链缺失的话,一些手机端或者部分浏览器可能会报不安全的提醒,所以在安装的时候建议安装完整的证书文件,补齐证书链。
二、SSL证书格式
在SSL证书源文件中你会发现有很多格式。不同的web服务器对于证书的格式是有要求的,接下来也带大家了解下不同格式的证书文件。
PEM:- Privacy Enhanced Mail,打开看文本格式,以”—–BEGIN…”开头, “—–END…”结尾,内容是BASE64编码.上述一般证书文件 ,中间证书和根证书,证书文件很多都是pem格式的。Apache和NIgnix服务器偏向于使用这种编码格式.
DER:这种格式也是常见的证书格式,跟pem类似,中间证书和根证书,证书文件很多都是DER的,Java和Windows服务器偏向于使用这种编码格式。
JKS :jks是Java密钥库(KeyStore)比较常见的一种格式。一般可用通过cer 或者pem 格式的证书以及私钥的进行转化为jks格式,有密码保护。所以它是带有私钥的证书文件,一般用户tomcat环境的安装
PFX:pfx格式的证书 也是由cer 或者pem格式的证书文件以及私钥转化而来,所以该证书文件也是带有私钥的证书文件,一般用于iis 环境的证书安装。
J. 什么是公钥证书
所谓的公钥认证,实际上是使用一对加密字符串,一个称为公钥(public key),任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。
ssh 的公钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥和密钥。为了说明方便,以下将使用这些符号。
Ac 客户端公钥
Bc 客户端密钥
As 服务器公钥
Bs 服务器密钥
在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。
认证过程分为两个步骤。
会话密钥(session key)生成
客户端请求连接服务器,服务器将 As 发送给客户端。
服务器生成会话ID(session id),设为 p,发送给客户端。
客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
客户端将 r 用 As 进行加密,结果发送给服务器。
服务器用 Bs 进行解密,获得 r。
服务器进行 r xor p 的运算,获得 q。
至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
认证
服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
客户端使用 Bc 解密 S(x) 得到 x
客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
服务器计算 q + x 的 md5 值 m(q+x)
客户端将 n(q+x) 发送给服务器
服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功