六 经典实用技术详解-VPN

点对点协议
因为第2层隧道协议在很大程度上依靠PPP协议的各种特性,因此有必要对PPP协议进行深入的探讨 。PPP协议主要是设计用来通过拨号或专线方式建立点对点连接发送数据 。PPP协议将IP,IPX和NETBEUI包封装在PP桢内通过点对点的链路发送 。PPP协议主要应用于连接拨号用户和NAS 。PPP拨号会话过程可以分成4个不同的阶段 。分别如下:
阶段1:创建PPP链路
PPP使用链路控制协议(LCP)创建,维护或终止一次物理连接 。在LCP阶段的初期,将对基本的通讯方式进行选择 。应当注重在链路创建阶段,只是对验证协议进行选择,用户验证将在第2阶段实现 。同样,在LCP阶段还将确定链路对等双方是否要对使用数据压缩或加密进行协商 。实际对数据压缩/加密算法和其它细节的选择将在第4阶段实现 。
阶段2:用户验证
在第2阶段,客户会PC将用户的身份明发给远端的接入服务器 。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接 。大多数的PPP方案只提供了有限的验证方式,包括口令验证协议(PAP),挑战握手验证协议(CHAP)和微软挑战握手验证协议(MSCHAP) 。
1.口令验证协议(PAP)
PAP是一种简单的明文验证方式 。NAS要求用户提供用户名和口令,PAP以明文方式返回用户信息 。很明显,这种验证方式的安全性较差,第三方可以很轻易的获取被传送的用户名和口令,并利用这些信息与NAS建立连接获取NAS提供的所有资源 。所以,一旦用户密码被第三方窃取,PAP无法提供避免受到第三方攻击的保障措施 。
2.挑战-握手验证协议(CHAP)
CHAP是一种加密的验证方式,能够避免建立连接时传送用户的真实密码 。NAS向远程用户发送一个挑战口令(challenge),其中包括会话ID和一个任意生成的挑战字串(arbitrary challengestring) 。远程客户必须使用MD5单向哈希算法(one-wayhashingalgorithm)返回用户名和加密的挑战口令,会话ID以及用户口令,其中用户名以非哈希方式发送 。;

CHAP对PAP进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以哈希算法对口令进行加密 。因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的操作,并将结果与用户返回的口令进行对照 。CHAP为每一次验证任意生成一个挑战字串来防止受到再现攻击(replay attack).在整个连接过程中,CHAP将不定时的向客户端重复发送挑战口令,从而避免第3方冒充远程客户(remoteclient impersonation)进行攻击 。
3.微软挑战-握手验证协议(MS-CHAP)
与CHAP相类似,MS-CHAP也是一种加密验证机制 。同CHAP一样,使用MS-CHAP时,NAS会向远程客户发送一个含有会话ID和任意生成的挑战字串的挑战口令 。远程客户必须返回用户名以及经过MD4哈希算法加密的挑战字串,会话ID和用户口令的MD4哈希值 。采用这种方式服务器端将只存储经过哈希算法加密的用户口令而不是明文口令,这样就能够提供进一步的安全保障 。此外,MS-CHAP同样支持附加的错误编码,包括口令过期编码以及答应用户自己修改口令的加密的客户-服务器(client-server)附加信息 。使用MS-CHAP,客户端和NAS双方各自生成一个用于随后数据加密的起始密钥 。MS-CHAP使用基于MPPE的数据加密,这一点非常重要,可以解释为什么启用基于MPPE的数据加密时必须进行MS-CHAP验证 。
在第2阶段PPP链路配置阶段,NAS收集验证数据然后对照自己的数据库或中心验证数据库服务器(位于NT主域控制器或远程验证用户拨入服务器)验证数据的有效性 。
阶段3:PPP回叫控制(callbackcontrol)

推荐阅读