Java网络编程——网络通信安全与加密
2018-01-24 22:43
573 查看
网络通信安全与加密
在网络数据传输时,传输双方的数据可能会被第三方非法监听获取。因此,在真实网络环境中,通常会使用一些加密技术对网络数据进行保护。加密技术一般使用SSL加密和TLS加密。这两种加密是基于TCP/IP协议的,IP协议在网络层,TCP协议在传输层,SSL和TLS在安全套接字层,应用层是一些HTTP、Telnet、FTP之类的面向用户的协议。SSL除了对数据进行加密外,还采用了身份认证机制,也就是安全证书认证。安全证书可以从权威机构购买,也可以自己创建自我签名证书。不过,自己创建的自我签名证书只有自己通过认证,不具有权威性。
SSL通过握手来确认如何对网络数据进行加密和解密。SSL通过公钥/私钥来加解密数据,公钥加密的数据只能用私钥来解密,私钥加密的数据也只能用公钥来解密。首先A方会把公钥发给B方,B方把数据用公钥加密,再发给A方, 这时,A方就可以用密钥来解密了,在数据传输过程中,就算数据被意外截取了,不法分子也无法得知加密数据的原数据,因为只有A方的私钥可以解密,这样就保证了数据在网络传输过程中的安全。SSL握手主要是为了确认加密参数、协商使用的加密套件,确定使用的算法等信息。
首先客户端会将自己的SSL版本号、加密参数与会话相关数据等发送给服务器,服务器也把一些相关参数发送给客户端,如果服务器还需要其他安全认证的话,服务器还会向客户端提出安全认证请求。客户端验证服务器的证书,如果验证失败,则SSL握手失败,如果成功,则生成 本次会话的预备主密码,并用服务器提供的公钥进行加密发送给服务器。服务器通过某些算法用预备主密码生成本次本次会话的主密码,客户端与服务器均使用此主密码生成本次会话的会话密钥,这个会话密钥是对称的,客户端通知服务器此后发送消息都使用这个会话密钥进程加密
,告知服务器SSL握手未完成,服务器也通知客户端此后发送消息都使用这个会话密钥进行加密,并告知客户端SSL握手完成。
相关文章推荐
- VC++网络安全编程范例(11)-SSL高级加密网络通信
- VC++网络安全编程范例(11)-SSL高级加密网络通信
- VC++网络安全编程范例(11)-SSL高级加密网络通信(转)
- Java网络编程之UDP通信例子
- java例程练习(网络编程[简单双向通信试验])
- Java网络通信编程:BufferedWriter问题
- 网络安全实验_基于通信加密的聊天工具
- Java网络编程之服务器与客户端通信
- 20145337实验五Java网络编程及安全
- 20145311实验五"Java网络编程及安全"
- 20145301实验五 Java网络编程及安全
- Java网络通信基础编程
- Java基础知识强化之网络编程笔记16:Android网络通信之 使用Http的Get方式读取网络数据(基于HTTP通信技术)
- Java网络通信基础编程(必看篇)
- Java程序员从笨鸟到菜鸟之(十三)java网络通信编程
- Java网络编程之TCP通信
- Java安全编程:基于口令加密(PBE)
- Java程序员从笨鸟到菜鸟之(十三)java网络通信编程
- 【java面试系列之网络编程】TCP和UDP的区别、TCP协议的三次握手和四次挥手、TCP协议的通信状态、网络编程时的同步、异步、阻塞、非阻塞、进程间的通信方式、TCP的流量控制和拥塞控制
- 实验五Java网络编程及安全——20135337朱荟潼