第16章 · 播客 第10集
安全性和保密性设计 · PPP 认证三协议与 RADIUS 的 1812
🎙️ 本集播客:第10集:PPP 的三阶段建立链路;PAP 明文两次握手最不安全;CHAP 挑战口令加 MD5 散列、不定时重发挑战防重放;EAP 在认证阶段才定方法、可做透传代理;RADIUS 是 AAA 协议、UDP 传输、1812 认证授权、1813 计费——端口号题年年有。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
明
阿明
PPP 我知道是拨号上网那套,它跟认证有什么关系?
雅
小雅
点到点协议 PPP 提供了一种在点到点链路上封装网络层协议信息的标准方法,也定义了可扩展的链路控制协议;链路控制协议使用验证协议磋商机制,在链路层上传输网络层协议前验证链路对端。PPP 包含三个部分:在串行链路上封装数据报的方法;建立、配置和测试数据链路连接的链路控制协议 LCP;建立和配置不同网络层协议的一组网络控制协议 NCP。
雅
小雅
PPP 定义了两种验证协议:密码验证协议 PAP 和挑战—握手验证协议 CHAP,此外还有扩展认证协议 EAP。三种的名字先背下来,下面挨个拆。
明
阿明
链路建立分几步?
雅
小雅
典型的 PPP 链路建立过程分三个阶段,顺序不能乱。创建阶段:对基本的通信方式进行选择,链路两端设备通过 LCP 向对方发送配置信息建立链路;注意,这个阶段只是对验证协议进行选择,具体的用户验证过程在认证阶段实现。认证阶段:客户端将自己的身份发送给远端的接入服务器,使用安全的验证方式避免第三方窃取数据或冒充远程客户接管连接;认证成功则转到网络层协商阶段,失败则链路终止。网络层协商阶段:PPP 调用在链路创建阶段选定的各种 NCP 协商高层协议问题,例如 IP 控制协议可以向拨入用户分配动态地址。
明
阿明
「选协议在创建阶段、验证在认证阶段」,这个先后是考点吧?
雅
小雅
是,而且 EAP 那节还会正面考这句。先说 PAP:一种简单的明文验证方式,网络接入服务器要求用户提供用户名和口令,PAP 以明文方式返回用户信息,并且对回送或者重复验证和错误攻击没有保护措施。安全性差——第三方可以很容易地获取被传送的用户名和口令,并利用这些信息与网络接入服务器建立连接获取资源;一旦密码被窃取,PAP 无法提供避免第三方攻击的保障。两个标签:明文、不设防。
明
阿明
CHAP 是它的改进版,怎么改的?
雅
小雅
CHAP 是一种加密的验证方式,能够避免建立连接时传送用户的明文密码。流程:网络接入服务器向远程用户发送一个挑战口令,其中包括会话 ID 和一个任意生成的挑战字串;远程客户端使用 MD5 散列算法返回用户名和加密的挑战口令、会话 ID 及用户口令。因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的散列操作,将结果与用户返回的口令对照。MD5 第四次登场,但它在这里是加密口令的角色。
雅
小雅
CHAP 为每一次验证任意生成一个挑战字串来防止攻击;在整个连接过程中,CHAP 将不定时地随机向客户端重复发送挑战口令,从而避免非法入侵者冒充远程客户。原文列了四条优点:一,通过可变的挑战口令和随机地、重复地发挑战口令,防止了重放攻击;二,该认证方法依赖于认证者和对端共享的密钥,密钥不是通过链路发送的;三,虽然该认证是单向的,但在两个方向都进行 CHAP 协商,同一密钥可以很容易地实现交互认证;四,可以用用户名作为索引在一张大型密钥表中查找正确的密钥,支持多个用户名—密钥对,在会话中随时改变密钥。
明
阿明
四条优点里「密钥不经链路发送」和「不定时重复发挑战」最常考。设计上有什么要求?
雅
小雅
三条设计要求。一,密钥长度必须至少是 1 字节、至少应该不易让人猜出,密钥最好至少是散列算法所选用的散列码的长度,如此可以保证密钥不易受到穷举搜索攻击;所选散列算法必须保证从已知挑战口令和响应值来确定密钥在计算上不可行。二,每一个挑战口令应该是唯一的,否则在同一密钥下重复挑战口令将使攻击者能用以前截获的响应值应答;由于希望同一密钥可以用于地理上分散的不同服务器,挑战口令应该做到全局临时唯一。三,每一个挑战口令也应该是不可预计的,只要能产生不可预计的挑战口令就可以防范大多数主动攻击——虽然 CHAP 不能防止实时地主动搭线窃听攻击。
雅
小雅
再记一句对比:PAP 明文传送用户名口令;CHAP 不直接通过链路发送明文口令,而是用挑战口令以散列算法对口令进行加密。「PAP 与 CHAP 最本质的区别」就答这。
明
阿明
EAP 呢,扩展在哪?
雅
小雅
EAP 是一个用于 PPP 认证的通用协议,可以支持多种认证方法。关键机制原文说得精确:EAP 并不在链路控制阶段而是在认证阶段指定认证方法,这样认证方就可以在得到更多的信息以后再决定使用什么认证方法——呼应前面三阶段那句话。它还允许 PPP 认证方简单地把收到的认证信息传给后方的认证服务器,由后方的认证服务器来真正实现各种认证方法。
雅
小雅
EAP 的认证过程:链路阶段完成以后,认证方向对端发送一个或多个请求报文,报文中有一个类型字指明所请求的信息类型,例如对端的 ID、MD5 的挑战口令、一次性密码及通用密码卡等,MD5 的挑战口令对应于 CHAP 认证协议的挑战口令;典型情况下认证方首先发送一个 ID 请求报文。对端对每一个请求报文响应一个应答报文,也包含对应请求类型的类型字段;认证方再通过发送一个成功或者失败的报文来结束认证过程。
雅
小雅
EAP 的优点两条:可以支持多种认证机制而不需要在建立连接阶段指定;某些设备如网络接入服务器不需要关心每一个请求信息的真正含义,而是作为一个代理把认证报文直接传给后端的认证服务器,设备只需关心认证结果是成功还是失败。缺点两条:需要在 LCP 中增加一个新的认证协议,现有 PPP 要使用 EAP 就必须进行修改;使用 EAP 也和现有的在 LCP 协商阶段指定认证方法的模型不一致。优缺点四条凑齐。
明
阿明
压轴的 RADIUS,端口号那两个数我背过:1812、1813。
雅
小雅
背得对,但先把身份说全:RADIUS 是 Remote Authentication Dial-in User Service,由朗讯公司提出的客户/服务器方式的安全认证协议,能在拨号网络中提供注册、验证功能,现已成为 Internet 的正式协议标准,是当前流行的 AAA 协议——Authentication 认证、Authorization 授权、Accounting 计费。它把拨号和认证两种功能放在两个分离的服务器上:网络接入服务器 NAS 和后台认证服务器即 RADIUS 服务器,后者存放有用户名和相应认证信息的大数据库。
雅
小雅
五个突出特点照抄:一,使用 UDP 进行传输,使用 1812 号端口进行认证以及认证通过后对用户授权,使用 1813 号端口对用户计费——两个号别互换,1812 管认证授权、1813 管计费,干扰项还爱放 1645 这种老号;二,支持多种认证方法,能支持 PAP、CHAP、UNIX Login 及其他认证方法;三,支持认证转接,一个 RADIUS 服务器可以作为另一个 RADIUS 服务器的客户端向它要求认证;四,协议扩展性好,通过协议中变长的属性串能够进一步扩展;五,认证信息都加密传输,服务器与接入服务器之间传递的认证信息用一个事先设置的口令进行加密,安全性高。
明
阿明
「传输用 UDP」这条也得记,容易跟 TCP 混。认证过程四步呢?
雅
小雅
四步走。第一步,接入服务器从用户那里获取用户名和口令——PAP 口令或 CHAP 口令,把它同用户的其他信息如主叫号码、接入号码、占用的端口等组成 RADIUS 认证请求数据包发给 RADIUS 服务器。第二步,RADIUS 服务器收到请求包后,先查看接入服务器是否已经登记,再根据用户名、口令验证用户是否合法:非法则发访问拒绝包;合法则将用户的配置信息——用户类型、IP 地址、连接协议、端口信息、ACL 授权等——组成访问接受包返回。
雅
小雅
第三步,接入服务器收到访问接受或拒绝包时,首先判断包中的签名是否正确,不正确就认为是非法包;验证签名后,收到接受包就接受用户上网请求并用授权信息配置、限制用户对资源的访问,收到拒绝包则拒绝。第四步,用户成功登录后,接入服务器向 RADIUS 服务器发送连接开始的记账信息包,用户断开后再发送连接结束的记账信息包,服务器据此为用户记账。一始一终两个记账包。
雅
小雅
本集必背:PPP 三部分——封装方法、链路控制协议 LCP、网络控制协议 NCP;三阶段——创建、认证、网络层协商,选验证协议在创建阶段、实际验证在认证阶段、认证失败链路终止;PAP 明文返回用户信息、对回送重复验证和错误攻击没有保护;CHAP 加密验证——服务器发含会话 ID 和任意挑战字串的挑战口令、客户端用 MD5 散列返回、不定时重复发挑战防重放、密钥不经链路发送、挑战口令要唯一且不可预计、密钥至少 1 字节;
明
阿明
接着背。
雅
小雅
EAP 通用协议、在认证阶段而非链路控制阶段指定方法、可作代理透传给后端认证服务器;RADIUS 由朗讯提出、AAA 协议、客户端是接入服务器 NAS,UDP 传输、1812 认证及授权、1813 计费,支持 PAP、CHAP、UNIX Login,支持认证转接、变长属性串扩展、认证信息加密传输。
明
阿明
1812 认证授权、1813 计费,这组数字稳了。下一集访问控制三策略?
雅
小雅
对,DAC、MAC、RBAC 三兄弟,加上等级型、拥有型、自由型三种授权——RBAC 为什么「在设计中最受欢迎」,原文有原话等着你。