灵通163百科在线-实用的手机,证券免费资源网站

您现在的位置:首页 > Android资源 > 软件工具 >

Android VPN实现原理介绍

教程来源:www.lt163.com     点击数:     更新时间:2017-12-19 23:13

编者按: InfoQ开设栏目“品味书香”,精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大家关注。本文节选自Nikolay Elenkov所著《Android安全架构深究》(译者为刘惠明、刘跃)一书中的“VPN支持”。介绍了Android系统所支持的几种VPN安全协议、系统内置VPN原理,以及基于应用的VPN(如OpenVPN)。

虚拟专用网络(Virtual Private Network,VPN)能够在不使用专用物理连接的情况下,将一个虚拟的网络扩展到全网,因此所有连接到VPN中的设备可如同物理连接到同一私有网络中一样,发送并接收数据。如果个人设备使用VPN接入目标私有网络,这种方式也叫作远程访问VPN;当VPN用来连接两个远程网络的时候,被称为site-to-site VPN。

远程访问VPN可以将特定设备与一个静态IP连接,设备如同远程办公室中的一台电脑;但是对于移动设备来说,更常用的是可变网络连接和动态地址的配置方法。这样的配置通常被称为road warrior配置,而且是Android VPN中最常用的配置。

相关厂商内容

深度学习框架演进漫谈-by老师木 智能写手——智能文本生成在双十一的应用 深度学习在红豆Live直播推荐系统中的应用 美团骑手智能助手的技术与实践 浏览器技术感知调研 60秒赢百元话费

相关赞助商

为了保证通过VPN传输数据的私密性,VPN一般会使用一个安全隧道协议以认证远程客户端并实现数据保密。由于VPN协议需要同时在多个网络层工作而且为了兼容不同的网络配置,常常需要进行多层封装,所以非常复杂。对于VPN的详细讨论超出了本书范围,但是在下面几节中会简单介绍主流的VPN协议,而且会主要专注于Android中可用的VPN类型。

PPTP

Point-to-Point Tunneling Protocol(PPTP)使用TCP的信道来建立连接,并使用Generic Routing Encapsulation(GRE)隧道协议来封装Point-to-Point Protocol(PPP)的数据包。支持的认证方法有密码认证协议(Password Authentication Protocol,PAP)、握手问题认证协议(Challenge-Handshake Authentication Protocol,CHAP)和微软扩展MS-CHAP v1/v2,以及EAP-TLS。其中当前仍然被认为安全的只有EAP-TLS。

PPP的载荷可以使用微软点对点加密(MPPE)协议进行加密,其中使用了RC4流加密方法。因为MPPE并不支持任何密文认证,所以无法防范位翻转(bit-flipping)攻击。除此之外,RC4加密近年来也出现过多次问题,大大减弱了MMPE和PPTP的安全性。

L2TP/IPSec

二层隧道协议(Layer 2 Tunneling Protocol,L2TP)类似于PPTP,工作在数据链路层(OSI模型中的第二层)。因为L2TP本身并不提供任何加密或者保密功能(依赖于隧道协议实现这些特性),L2TP VPN一般使用L2TP和IPSec协议套件的组合实现,由IPSec完成认证,进行机密性和完整性的保证。

在L2TP/IPSec的配置中,首先会使用IPSec建立一个安全信道,然后L2TP隧道将会在这个安全信道之上建立。L2TP的包会被封装到IPSec包中,因此保证了安全。IPSec的连接需要建立一个安全关联(Security Association,SA),这是密钥算法和模式、加密密钥和建立安全信道所需的其他参数的组合。

SA使用网络安全关联和密钥管理协议(ISAKMP)建立。ISAKMP不会定义一个特殊的密钥交换方法,而是使用人工指定的预先共享的密钥或者使用网络密钥交换(IKE和IKEv2)协议。IKE使用X.509证书进行对方身份的验证(与SSL类似),并使用Diffie-Hellman密钥交换创建一个共享密文,并使用其生成实际的会话加密密钥。

IPSec Xauth

IPSec扩展认证(Xauth)对IKE进行了扩展,包含了额外的用户认证交换。这样就允许使用一个已存在的用户数据库或者RADIUS架构来认证远端请求访问的客户端,并且能够集成双因素认证。

Mode-configuration(Modecfg)是另一个IPSec扩展,经常被用于远程访问场景。Modecfg可以让VPN服务端向客户端推送网络配置信息,比如私有IP地址和DNS服务器地址。如果同时使用Xauth和Modecfg,能够生成一个纯IPSec的VPN解决方案,不需要使用任何额外协议进行认证和隧道操作。

基于SSL的VPN

基于SSL的VPN使用SSL或者TLS(见第6章)建立安全连接和网络数据传输隧道。然而并不存在一个标准来定义基于SSL的VPN,所以为了建立安全信道并封装数据包,在不同实现中会使用不同的策略。

OpenVPN是一个很流行的开源VPN应用,使用SSL进行认证和密钥交换(同样支持预先配置的共享静态密钥),并使用定制的加密协议 对数据包进行加密和认证。OpenVPN使用多路SSL会话进行认证和密钥交换以及加密包的传输,而且仅仅使用单一的UDP(或者TCP)端口。多路协议为SSL在UDP上提供了一个可靠的传输层,但是基于UDP的加密数据隧道并没有一定的可靠性。可靠性通过隧道协议本身来提供,通常是TCP。

没有相关教程
UC浏览器 最先进实用的手机端浏览器,最大限度节省页面浏览流量,点击下载
老虎地图 绿色纯免费GPS定位省流量的最佳手机地图,点击下载
网秦手机安全系列 手机杀毒防盗,防火墙,构建手机安全,点击进入
塞班精品游戏 最流行最给力的塞班S60免签名名精品游戏合集,点击进入
阿里通 手机上轻松拨打网络电话和收发短信,高音质超省话费,资费标准
爱科手机电话 国内最好的手机网络电话领先品牌,价格低廉,点击查看
愤怒的小鸟2 全民挑战超流行休闲游戏力推新作-愤怒的小鸟2,点击查看
魔力旺旺 淘宝卖家首选的交易工具

资源下载排行
文章阅读排行