SSL协议及理论总结

文章结构____________________________________________________________

 

1、概述

2、handshanke步骤简述

3、java对SSL的支持

4、用到的技术

1、概述____________________________________________________________

 

SSL:Secure Sockets Layer,网景公司(Netscape)在推出Web浏览器首版的同时提出的协议。目前已成为互联网上保密通讯的工业标准,

TLS:Transport Layer Security其继任者。

TLS与SSL在传输层对网络连接进行加密。

参考:

http://tools.ietf.org/html/rfc2246

http://rrsongzi-gmail-com.iteye.com/blog/600816

1、SSL协议提供的服务主要有:

  1)认证用户和服务器,确保数据发送到正确的客户机和服务器,认证对方身份。

  2)防止对方抵赖。

  3)维护数据的完整性,确保数据在传输过程中不被改变。

4)加密数据以防止数据中途被窃取;

2、SSL 握手协议主要负责如下工作:

算法协商:协商密钥加密算法(非对称)、数据加密算法(对称)、摘要算法。 

身份验证:在密钥协商完成后,客户端与服务器端通过证书互相验证对方的身份。 

确定密钥:双方各自根据协商好的密钥交换算法计算出加密密钥,用来对数据进行加密的密钥,不是确认密钥算法;

 

2、handshanke步骤简述____________________________________________________________

SSL-双向-full-handshake,大致步骤

1、Client

发送Client端支持的所有密钥套件,包括非对称加密算法,对称加密算法,摘要算法

2、Server 

server端收到密钥套件列表后,检查套件(是否也支持这个套件,被禁用,符合出口限制),选择第一个通过检查的套件,并通知client。

发送服务器证书链,自己的证书放最前头,根CA证书放列表最后。

请求客户端证书

 

3、Client

验证服务器证书,发送自己的证书,生成预主密码,用服务器证书的公钥加密后发送。

4、server

验证client证书,用自己的私钥取出预主密码,计算出加密数据用的对称密钥

5、client

计算出加密数据用的对称密钥.

借用囧囧有神的图片:

SSL协议及理论总结_第1张图片

 

3、java对SSL的支持____________________________________________________________

 

JCE: Java Cryptography Extension,用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。

它提供对对称、不对称、块和流密码的加密支持,它还支持安全流和密封的对象。

JSSE: Java(TM) Secure Socket Extension 。SSL(Secure Sockets Layer)是JSSE中的重要的部分。

Bouncy Castle

java开放源码的轻量级密码术包。它支持大量的密码术算法,并提供 JCE 1.2.1 的实现。它是在 MIDP 上运行的唯一完整的密码术包。

Security.addProvider( new BouncyCastleProvider() );

Security.getProviders();

 

4、用到的技术____________________________________________________________

 

1、非对称加密算法(asymmetric cryptographic algorithm)又名“公开密钥加密算法”,常见的有RSA

有两个密钥:公开密钥(publickey)和私有密钥(privatekey)。

用公开密钥对数据进行加密,只有用对应的私有密钥才能解密,可以用来加密数据。

用私有密钥对数据进行加密,只有用对应的公开密钥才能解密,可以用来数字签名。

缺点:非对称密钥加密速度慢。

实例:RSA,D-H,ECC

2、数字摘要

目的:验证数据完整性,未被增加,删除,修改

不同明文的摘要总是不同(相同概率非常非常小,取决于选择的Hash函数),相同明文的摘要总是相同,

方法:用单向Hash函数将明文(不管大小)“摘要”成一串固定长度短消息,

实例:

SHA-1(Secure Hash Algorithm)160bits

MD5(Message Digest)128bits,128/4=32位16进制数,

一般官方下载文件时,会提供这两个值,供验证

3、数字摘要算法与加密算法的区别

摘要是单向加密,不可还原出原来明文。

加密算法是可以还原出明文的。

4、数据签名

目的:保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。

依赖:非对称密钥加密、数字摘要

方法:将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送的公钥才能解密被加密的摘要信息,

然后根据原文产生一个摘要,与解密的摘要信息对比。如果相同,证明信息是完整的。

 

5、证书及私钥

提供身份认证的实体,包含了公钥等身份信息

依赖:数字签名

私钥:包含私钥等身份信息

 

6、证书认证中心Certificate Authority (CA)

CA是自签名的证书,用户必须信任。信任CA意味着信任CA签名的所有证书

7、为什么需要CA

假设如下情况:user-A用自己的私钥A-private-key加密数据,user-B接受到数据后,用user-A的公钥A-public-key解密,借此user-B认证为是A发的消息。

但是现在有个user-C,C拦截intercepted修改消息,用自己的私钥C-private-key加密,然后把C的公钥C-public-key发送给B,并告诉B是A-public-key...

这种情况下就需要CA,来证明B接受的是不是A的公钥了。

 

8、证书验证

安装CA证书,即代表信任CA证书

用证书链某个证书的公钥,验证前一个证书。

证书还有吊销机制。

 

你可能感兴趣的:(JAVA-SSL)