java-信息安全(十二)-数字证书、CA证书【Java证书体系实现】
一、概述
https,主要协议tls/ssl,进而需要了解证书机构(CA)、证书、数字签名、私钥、公钥、对称加密、非对称加密。
信息安全问题:信息的保密性、信息的完整性、身份识别。
1.1、信息安全问题
1、信息的保密性(加密算法)
2、信息的完整性(数字签名)
信息传输的途中,我们的信息很有可能被第三方劫持篡改,所以我们需要保证信息的完整性,通用方法是使用散列算法如SHA1,MD5将传输内容hash一次获得hash值,即摘要。
客户端使用服务端的公钥对摘要和信息内容进行加密,然后传输给服务端,服务端使用私钥进行解密获得原始内容和摘要值,这时服务端使用相同的hash算法对原始内容进行hash,然后与摘要值比对,如果一致,说明信息是完整的。
3、身份识别(数字证书)
在信息传输的过程中,我们通常需要验证信息的发送方的身份,这时我们转化一下思路就可以完成,把发送端的公钥发送给接收端,发送端通过把自己的内容使用私钥加密然后发送给接收端,接收端只能用发送端的公钥解密,自然就验证了发送端的身份。
1.2、知识概要说明
1、对称加密
对称加密是指双方持有相同的密钥进行通信,加密速度快,但是有一个安全问题,双方怎样获得相同的密钥。
常见的对称加密算法有DES、3DES、AES等
参看地址:java-信息安全(十八)java加密解密,签名等总结
2、非对称加密
非对称加密,又称为公开密钥加密,是为了解决对称加密中的安全问题而诞生,一个称为公开密钥(public key),即公钥,另一个称为私钥(private key),即私钥。但是它的加密速度相对于对称加密来说很慢。
- 公钥(public key)是对外开放的,私钥(private key)是自己拥有的。
- 公钥(public key)加密的数据,只能用私钥(private key)解密。
- 私钥(private key)加密的数据,只能用公钥(public key)解密。
3、数字证书
注:为什么需要CA颁发数字证书
首先看一下非对称加密时候的加密方式
数字证书是如何保证公钥来自请求的服务器呢?数字证书上由持有人的相关信息,通过这点可以确定其不是一个中间人;但是证书也是可以伪造的,如何保证证书为真呢?
一个证书中含有三个部分:"证书内容,散列算法,加密密文",证书内容会被散列算法hash计算出hash值,然后使用CA机构提供的私钥进行RSA加密。
数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。
证书制作:java-信息安全(十三)-数字证书-格式、编码、keytool、keystore
如果生产一般会直接获取证书文件
示例代码
代码地址:https://github.com/bjlhx15/algorithm-sign.git