aka鉴权 ims_宋月:IMS鉴权过程中各参数的用途
按照目前的國(guó)際規(guī)范,IMS認(rèn)證方式主要有IMS AKA、SIP Digest、NASS-IMS Bundled Authentication(NBA)以及GPRS-IMS Bundled Authentication(GBA)幾種方式。其中NBA和GBA認(rèn)證的主要思路是IMS核心網(wǎng)信任接入網(wǎng)絡(luò)(NASS、GPRS)為用戶分配的IP地址,因此不涉及鑒權(quán)參數(shù)的使用,本文僅根據(jù)個(gè)人理解列舉了IMS AKA和SIP Digest過(guò)程中各參數(shù)的用途。
IMS AKA
username
即用戶的IMPI。
K
IMS AKA認(rèn)證過(guò)程中的根密鑰,除RAND之外的其他鑒權(quán)參數(shù)計(jì)算過(guò)程中全部需要使用K。K分別存儲(chǔ)在ISIM(或終端)以及HSS中,永遠(yuǎn)不會(huì)在網(wǎng)絡(luò)上傳輸。
RAND
由HSS生成的隨機(jī)數(shù),HSS和ISIM(或終端)通過(guò)RAND和K可以計(jì)算IK/CK/RES/XRES。RAND在鑒權(quán)過(guò)程中會(huì)從HSS一直傳遞至終端。
XRES
XRES由HSS通過(guò)K和RAND計(jì)算得到,這個(gè)參數(shù)從HSS傳遞至S-CSCF,不會(huì)繼續(xù)向下傳輸。S-CSCF通過(guò)比對(duì)從XRES和從終端得到的RES來(lái)對(duì)用戶身份進(jìn)行認(rèn)證。
RES
RES由終端通過(guò)K和RAND計(jì)算得到,并在鑒權(quán)響應(yīng)中攜帶該參數(shù)。該參數(shù)從終端傳送至S-CSCF。
IK
完整性密鑰。終端和HSS分別計(jì)算該參數(shù),HSS計(jì)算的IK會(huì)一直傳遞至P-CSCF。終端與P-CSCF之間建立IPSec所使用的完整性密鑰即為該參數(shù)。
CK
加密密鑰。終端和HSS分別計(jì)算該參數(shù),HSS計(jì)算的CK會(huì)一直傳遞至P-CSCF。終端與P-CSCF之間建立IPSec所使用的加密密鑰即為該參數(shù)。
SQN
終端與HSS同步的序列號(hào)。這個(gè)序列號(hào)是計(jì)算AUTN的中間值。當(dāng)網(wǎng)絡(luò)與終端的SQN失配時(shí),終端會(huì)從新發(fā)起REGISTER請(qǐng)求,攜帶auts參數(shù),用于SQN同步。這個(gè)參數(shù)不會(huì)在網(wǎng)絡(luò)上傳輸,分別由終端和HSS本地維護(hù)。
AUTN
用于終端對(duì)網(wǎng)絡(luò)的認(rèn)證。該參數(shù)從HSS一直傳遞至終端,終端收到鑒權(quán)挑戰(zhàn)后,會(huì)根據(jù)SQN計(jì)算XAUTN,然后與收到的AUTN進(jìn)行比對(duì),以此來(lái)對(duì)網(wǎng)絡(luò)進(jìn)行認(rèn)證。
SIP Digest
username
即用戶的IMPI。
password
該參數(shù)的性質(zhì)與IMS AKA中的K類(lèi)似,即終端與網(wǎng)絡(luò)之間共享的一個(gè)“秘密”,用于網(wǎng)絡(luò)對(duì)終端的認(rèn)證,這個(gè)參數(shù)同樣不會(huì)在網(wǎng)絡(luò)上傳輸。但是與K也有不同,password通常不會(huì)直接用于計(jì)算鑒權(quán)結(jié)果,而是使用對(duì)password的哈希結(jié)果,即通常所說(shuō)的H(A1),HSS會(huì)在Cx查詢(xún)時(shí)將H(A1)傳遞給S-CSCF。在終端與P-CSCF之間使用TLS時(shí),建立TLS使用的密鑰不一定根據(jù)這個(gè)password生成。
nonce
該參數(shù)與IMS AKA中的RAND類(lèi)似,用于計(jì)算認(rèn)證結(jié)果,與IMS AKA不同的是nonce值由S-CSCF生成,而不是從HSS得到。
response
該參數(shù)與IMS AKA中的RES類(lèi)似,終端首先通過(guò)password計(jì)算得到H(A1),然后再結(jié)合nonce值計(jì)算得到response。這里需要注意一點(diǎn),當(dāng)需要進(jìn)行完整性保護(hù)(見(jiàn)qop)時(shí),計(jì)算response的輸入需要增加消息體,也就是SIP消息的body部分(不包括Header)。
qop
也就是"quality of protection",可以取的值目前有auth和auth-int。當(dāng)鑒權(quán)過(guò)程中包含了qop參數(shù)時(shí),計(jì)算response的輸入須加入cnonce和nonce-count。當(dāng)qop取值為auth-int時(shí),表示需要進(jìn)行完整性保護(hù)(見(jiàn)response)。終端發(fā)出第一條REGISTER請(qǐng)求時(shí)不會(huì)攜帶qop,S-CSCF返回401響應(yīng)時(shí)攜帶qop參數(shù)并在其中包含網(wǎng)絡(luò)支持的qop能力,終端再次發(fā)起REGISTER請(qǐng)求時(shí)攜帶qop參數(shù),由終端確定使用的qop能力。這里有個(gè)問(wèn)題:在TS24.229的描述中,沒(méi)有出現(xiàn)qop的auth-int取值,我最初的想法是P-CSCF會(huì)修改REGISTER消息(如加入via頭),這樣就破壞了消息的完整性從而導(dǎo)致鑒權(quán)失敗,但是轉(zhuǎn)念一想SIP Digest完整性保護(hù)的是SIP消息體而不會(huì)保護(hù)消息頭,那么就是說(shuō)P-CSCF有可能修改消息體,但是REGISTER消息中又不會(huì)攜帶消息體,為什么3GPP沒(méi)有使用SIP Digest的完整性保護(hù)能力呢?這件事目前還沒(méi)有想明白,望大俠指點(diǎn)。
cnonce
簡(jiǎn)單的理解就是client nonce,即終端產(chǎn)生的nonce。在RFC 2617的描述中,該參數(shù)主要有兩個(gè)用途,一是供終端對(duì)網(wǎng)絡(luò)進(jìn)行認(rèn)證;另一個(gè)是避免一種叫做"chosen plaintext"的攻擊(不太清楚這種攻擊的機(jī)理)。對(duì)于作用一,網(wǎng)絡(luò)側(cè)收到REGISTER消息應(yīng)后,會(huì)通過(guò)cnonce計(jì)算rspauth參數(shù)并在200 OK中返回給終端,終端以此對(duì)網(wǎng)絡(luò)進(jìn)行認(rèn)證(類(lèi)似于IMS AKA中使用AUTN的方式)。對(duì)于作用二,RFC 2617是這樣解釋的:中間人攻擊者可以隨意生成nonce并讓終端通過(guò)nonce計(jì)算response值,這樣攻擊者就可以比較方便地分析出用戶的秘密,有了cnonce之后就可以避免遭受這種攻擊。我個(gè)人理解是這樣的:攻擊者可以通過(guò)設(shè)計(jì)一組有特殊性質(zhì)的nonce值,讓終端分別計(jì)算response值,對(duì)于隨機(jī)的一組nonce和response是不可能反算出password的,但是由于攻擊者設(shè)計(jì)的一組nonce值具有特殊性質(zhì),那通過(guò)這組特殊的nonce和相應(yīng)的response就有可能推算出password。在這種情況下,用戶計(jì)算response時(shí)的輸入添加了cnonce(見(jiàn)qop),那么就相當(dāng)于破壞了攻擊者設(shè)計(jì)的nonce之間的關(guān)聯(lián)性,也就難以反算出password。當(dāng)然,由于專(zhuān)業(yè)不是這方面的,這只是我的推測(cè)。
nonce-count
nonce的計(jì)數(shù)器,用戶每使用同一個(gè)nonce計(jì)算一次response就會(huì)將nonce-count增加(至于是否一定是遞增1我還不確定,規(guī)范中似乎也沒(méi)明確),由于nonce-count也參與response的計(jì)算,這也就降低了重放攻擊的可能性。
nextnonce
在SIP Digest過(guò)程中,不一定每次認(rèn)證(即使在同一會(huì)話中)都使用同樣的nonce,此時(shí)網(wǎng)絡(luò)側(cè)可通過(guò)使用nextnonce來(lái)指定下一次鑒權(quán)使用的nonce值,終端下次發(fā)送消息直接使用nextnonce計(jì)算response從而省掉了一次challenge-response的過(guò)程。
相關(guān)博文推薦:
更多精彩內(nèi)容推薦:
總結(jié)
以上是生活随笔為你收集整理的aka鉴权 ims_宋月:IMS鉴权过程中各参数的用途的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: shell实现论坛灌水机
- 下一篇: 测试工作绝不仅限于点点点