發(fā)布時(shí)間: 2018-09-23 10:57:52
CHAP認(rèn)證協(xié)議框架和PAP是完全不一樣的
CHAP是非常經(jīng)典的,在其他安全協(xié)議中可以看到CHAP認(rèn)證的影子
在兩端PPP會話初始建立的時(shí)候,依舊是使用LCP協(xié)商建立鏈路和確定驗(yàn)證方式
在協(xié)商的過程中就達(dá)成共識,是使用CHAP進(jìn)行認(rèn)證的
這時(shí)候core router就會發(fā)送challenge<挑戰(zhàn)>信息,是CHAP報(bào)文
challenge<挑戰(zhàn)>信息主要的4個內(nèi)容:
1.code:值為1,表示是challenge消息
2.id:在core router上識別ppp會話的,因?yàn)樵赾ore router上會有很多會話的
3.name:core router的名稱
--同時(shí)路由器會產(chǎn)生一個緩存,存儲遠(yuǎn)端路由器建立請求
4.random:core router 會產(chǎn)生隨機(jī)數(shù),存儲在緩存中。
所以一并納入報(bào)文傳給遠(yuǎn)端路由器
遠(yuǎn)端路由器收到該報(bào)文后,會將chap密碼和認(rèn)證端發(fā)送的隨機(jī)數(shù)、id取出來,進(jìn)行hash
hash是一個散列算法,字符串進(jìn)行hash算法后會生成定長的字符串,如果原始的字符串中有改變,那么新產(chǎn)生的值和原值是完全不一樣的。hash是一個不可逆的過程
得到hash結(jié)果后,remote會發(fā)送response報(bào)文:
1.code:值為2,表示是響應(yīng)報(bào)文
2.id:該值和challenge報(bào)文的id值相同
3.name:遠(yuǎn)端路由器 配置的hostname
4.value:計(jì)算的hash結(jié)果
報(bào)文發(fā)送給,core router,
在core router 在本地有緩存,
所以會把id ,隨機(jī)數(shù)以及本地用戶數(shù)據(jù)庫所保存的值,進(jìn)行hash、
比較response里面value和上一步hash的值,如果比對相同,驗(yàn)證成功;否則失敗
因?yàn)閕d 和隨機(jī)數(shù)都是core router生成的,所以關(guān)鍵是兩邊密碼是否一致
可以發(fā)現(xiàn),在chap認(rèn)證過程中沒有密碼字段,即使整個過程被監(jiān)聽了,也是安全的
但是會帶來一定的資源損耗,因?yàn)橐猦ash,三次報(bào)文
remote(config)#interface serial 0/1/0
remote(config-if)#ip add 192.168.12.1 255.255.255.0
remote(config-if)#no shu
remote(config-if)#ppp pap sent-username remote password togogo
Must set encapsulation to PPP before using PPP subcommands
remote(config-if)#encapsulation ppp
remote(config-if)#ppp chap hostname remote
remote(config-if)#ppp chap password togogo
Core(confit)#username remote password togogo
Core(config)#interface serial 0/1/0
Core(config-if)#ip add 192.168.12.2 255.255.255.0
Core(config-if)#no sh
Core(config-if)#ppp authentication chap
Must set encapsulation to PPP before using PPP subcommands
Core(config-if)#encapsulation ppp
Core(config-if)#ppp authentication chap