李新炜
【摘要】 本文讨论了Android系统里使用SOCKET通信时的安全性问题。通过对比不同的加密方式和网络协议,论证了采用加密的SOCKET通讯的优点和可行性。
【关键词】 Android Socket通信 加密
为了追求通信的高效和速度,很多系统采用不安全的UDP通信方式和未经加密处理的SOCKET进行通信,导致该系统在进行通信时存在一定的安全隐患。本文对于基于Android系统中的SOCKET通信和信息传输加密方式进行探讨分析。
根据底层协议的不同,Socket通信也是不同的,在TCP/ IP协议中主要类型有两种,分别是流套接字和数据报套接字。[1]
数据报套接字使用UDP协议,提供数据打包和发送服务。效率高,但安全性较低。流套接字将TCP协议作为其端对端的一个可信赖的字节流服务。
如果是基于TCP协议的Socket,则由服务器端声明一个指定端口号的ServerSocket对象,然后调用Serversocket的accept()方法来接收客户端的数据。如果accept()方法没有接收数据则处于堵塞状态。如果接收到数据,则通过input-stream读取数据。
先在客户端创建一个Socket对象,使用SOCKET方法指定服务器端的ip地址及端口号,最后用inputstream读取数据,获取服务器准备发出的数据,完成三次握手的最后一次数据获取。最后将要发送的数据写入outputstream即可进行TCP协议的socket数据传输。[2]
如果是基于UDP协议的SOCKET通信,则先由服务器创建一个指定监听端口号的DatagramSocket对象,并且创建一个空的DatagramSocket对象用于接收数据,然后使用DatagramSocket的receive方法接收客户端发送的数据。[3]
Socket的传输效率远远高于其他通信协议的传输效率,但是由于大部分设计采用了UDP模式的Socket通信,且使用了明文传输,所以信息容易被拦截并解析。……