经典实用技术详解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以及用户口令,其中用户名以非哈希方式发送。 
经典实用技术详解VPN(六)

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)
微软设计的PPP包括一个可选的回叫控制阶段。该阶段在完成验证之后使用回叫控制协议(CBCP)如果配置使用回叫,那么在验证之后远程客户和NAS之间的连接将会被断开。然后由NAS使用特定的电话号码回叫远程客户。这样可以进一步保证拨号网络的安全性。NAS只支持对位于特定电话号码处的远程客户进行回叫。
阶段4:调用网络层协议
在以上各阶段完成之后,PPP将调用在链路创建阶段(阶段1)选定的各种网络控制协议(NCP).例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态地址。在微软的PPP方案中,考虑到数据压缩和数据加密实现过程相同,所以共同使用压缩控制协议协商数据压缩(使用MPPC)和数据加密(使用MPPE)。

  • 经典实用技术详解VPN(六)
    给力
    (0票)
  • 经典实用技术详解VPN(六)
    动心
    (0票)
  • 经典实用技术详解VPN(六)
    废话
    (0票)
  • 经典实用技术详解VPN(六)
    专业
    (0票)
  • 经典实用技术详解VPN(六)
    标题党
    (0票)
  • 经典实用技术详解VPN(六)
    路过
    (0票)
getcountscom(11877,11); getcountscom(11877,12); getcountscom(11877,13); getcountscom(11877,14); getcountscom(11877,15); getcountscom(11877,16);

更多相关文章
  • 易网科技讯 3月22日消息,余承东今日在IT领袖峰会接受易网科技采访.对于小米今年出货一亿台的目标,余承东表示,靠低端机提高出货量的目标是很容易做的,但华为正往中高端去发展,正在减少低端,也不会做特别低端的.关于Apple Watch与华为智能手表的竞争,余承东说,消费品牌就适合不同人群,有的东西卖 ...
  •   在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:将多个查询的结果组合到一个查询结果之中,并去掉重复值 UNION ALL:将多个查询结果组合到一个查询结果中,但是包含重复值 INTERSECT:返回多个查询结果相同的部分 MI ...
  • 如何使用WPFToolKit Chart private void button1_Click(object sender, EventArgs e) { var s = new Series(); s.ChartType = SeriesChartType.Line; var d = new Da ...
  • ////// the Select target Auto Select value extension plugin // // -- // (function ($) { $.extend($.fn, { // AutoSelect: function (options) { // defaul ...
  •   实验平台:win7,VS2010   先上结果截图(文章最后下载程序,解压后直接运行BIN文件夹下的EXE程序): a.鼠标拖拽旋转物体,类似于OGRE中的“OgreBites::CameraStyle::CS_ORBIT”.        b.键盘WSAD键移动镜头,鼠标拖拽改变镜头方向,类似 ...
  • 闭包原型应该是OC中的block 还记得block的写法嘛 int (^myBlock)(int, int) = ^(int a, int b) { return a + b; };  
一周排行
  • 为UINavigationBar 写一个分类.UINavigationItem+correct_offset.h  转载 http://www.colabug.com/thread--1.html  #i ...
  • using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System ...
  • 都是年轻人哎,别打银行的主意 美国司法部门16日说,一名曾经利用计算机病毒侵入25万台计算机,并窃取个人数据的计算机黑客,已经承认犯罪事实,他将面临最高达60年的牢狱之灾. 据台湾中广新闻网报道,这名黑客名为约翰?席 ...
  • 所需jar包 : commons-dbutils-1.6.jar DbUtils类  1.DbUtils :提供如关闭连接.装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的.主要方法如下:   -pu ...
  •    使用了fontawesome以后,也想自己创建一些字体图标.以下是创建的步骤.  下载软件inkscape https://inkscape.org/en/ 打开软件,创建图标.好像用它自带的那些图形来画出来的 ...
  • 最近大家都在用自己学习的VB知识来实现自己的小作品了,但是当我们的作品功能慢慢接近尾声的时候,我们忽然意识到一个很令人头疼的问题,作品的界面太难看了,那么怎么修饰一下它,然后让大家更喜欢自己的作品呢?这就涉及到了作品 ...
  • #include<iostream> #include<cstdio> using namespace std; int n,m,mx,f[3201],v[61][3],p[61][3]; i ...
  • IE6 背景透明    第 1 种方法:定义一个样式,给某个div应用这个样式后,div的透明png背景图片自动透明了.(注意两处图片的路径写法不一样,本例中,icon_home.png图片与html文件在相同目录) ...
  • 图解classloader加载class的流程及自定义ClassLoader sun.applet.AppletClassLoader
  • 在php的官方手册中写道,   检查一个变量是否为空. 如果 var 是非空或非零的值,则 empty() 返回 FALSE.换句话说,"".0."0".NULL.FALSE. ...