文章结构____________________________________________________________
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
计算出加密数据用的对称密钥.
借用囧囧有神的图片:
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证书
用证书链某个证书的公钥,验证前一个证书。
证书还有吊销机制。