GSM加密系統(tǒng)里涉及的三種算法:A3算法、A5算法和A8算法

A3算法是用于對(duì)全球移動(dòng)通訊系統(tǒng)(GSM)蜂窩通信進(jìn)行加密的一種算法。實(shí)際上,A3算法和 A8算法通常被同時(shí)執(zhí)行(也叫做 A3/A8算法)。一個(gè) A3/A8 算法在用戶識(shí)別SIM卡和在 GSM 網(wǎng)絡(luò)認(rèn)證中心中執(zhí)行。它被用于鑒別用戶和產(chǎn)生加密語(yǔ)音和數(shù)據(jù)通信的密鑰。GSM中的A3和A8算法都是基於密鑰的單向碰撞函數(shù)。它們通常合在一起,統(tǒng)稱為COMP128。COMP128算法目前被用在鑒別過(guò)程中,存儲(chǔ)在SIM卡和AuC中。3的輸入是GSM網(wǎng)絡(luò)發(fā)給移動(dòng)電話的一個(gè)128比特的隨機(jī)數(shù)呼叫和單個(gè)用戶鑒別密鑰(Ki),輸出為一個(gè)32比特的標(biāo)示響應(yīng)。這個(gè)標(biāo)示響應(yīng)發(fā)回到網(wǎng)絡(luò),與網(wǎng)絡(luò)自己生成的結(jié)果進(jìn)行比較。如果二者相符,用戶便得到了鑒別。A8的輸入也是隨機(jī)數(shù)和Ki,輸出為一個(gè)64比特的加密密鑰(Kc)。

A5算法被用于加密全球移動(dòng)通信系統(tǒng)(GSM)蜂窩通信。一個(gè) A5加密算法在電話聽筒和基站之間攪亂用戶語(yǔ)音和數(shù)據(jù)傳輸來(lái)提供私密。一個(gè) A5算法被在電話聽筒和基站子系統(tǒng)(BSS)兩者中執(zhí)行。GSM系統(tǒng)中的移動(dòng)電話和基站之間的信令和數(shù)據(jù)通過(guò)加密算法A5使用從A8中得到的加密密鑰(Kc)進(jìn)行加密和解密。當(dāng)前有三種A5算法在使用中。A5/1被認(rèn)為是這三種中性能最好的加密算法,被應(yīng)用在西方國(guó)家。A5/2比A5/1在性能上差很多,被用在由于出口限制而禁用A5/1的地區(qū)。A5/0雖然也是A5算法的一種,但實(shí)際并不對(duì)數(shù)據(jù)進(jìn)行加密。

每張 SIM 卡里面一般都存著一個(gè)全球唯一的標(biāo)志號(hào),叫做 IMSI,這是用來(lái)唯一標(biāo)識(shí)你 SIM 卡的,手機(jī)在開機(jī)時(shí)候會(huì)從卡里面讀出這個(gè)號(hào)發(fā)給移動(dòng)網(wǎng)絡(luò),移動(dòng)那里有一個(gè)很大的數(shù)據(jù)庫(kù),描述了 IMSI 和手機(jī)號(hào)的對(duì)應(yīng)關(guān)系,除了 IMSI ,還有 16 個(gè)字節(jié)的密鑰數(shù)據(jù),這個(gè)數(shù)據(jù)是無(wú)法通過(guò) SIM 卡的接口讀出的,通常稱為 Ki, Ki 在移動(dòng)網(wǎng)絡(luò)那邊也保存了一份。

在手機(jī)登錄移動(dòng) 網(wǎng)絡(luò)的時(shí)候,移動(dòng)網(wǎng)絡(luò)會(huì)產(chǎn)生一個(gè) 16 字節(jié)的隨機(jī)數(shù)據(jù)發(fā)給手機(jī),手機(jī)將這個(gè)數(shù)據(jù)發(fā)給 SIM 卡, SIM 卡用自己的密鑰 Ki 和 RAND 做運(yùn)算以后,生成一個(gè) 4 字節(jié)的應(yīng)答發(fā)回給手機(jī),并轉(zhuǎn)發(fā)給移動(dòng)網(wǎng)絡(luò),與此同時(shí),移動(dòng)網(wǎng)絡(luò)也進(jìn)行了相同算法的運(yùn)算,移動(dòng)網(wǎng)絡(luò)會(huì)比較一下這兩個(gè)結(jié)果是否相同,相同就表明這 個(gè)卡是我發(fā)出來(lái)的,允許其登錄。這個(gè)驗(yàn)證算法在 GSM 規(guī)范里面叫做 A3,m = 128 bit, k = 128 bit, c=32 bit,很顯然,這個(gè)算法要求已知 m 和 k 可以很簡(jiǎn)單的算出 c ,但是已知 m 和 c 卻很難算出 k 。A3 算法是做在 SIM 卡里面的,因此如果運(yùn)營(yíng)商想更換加密算法,他只要發(fā)行自己的 SIM 卡,讓自己的基站和 SIM 卡都使用相同的算法就可以了,手機(jī)完全不用換。

在移動(dòng)網(wǎng)絡(luò)發(fā)送 RAND 過(guò)來(lái)的時(shí)候,手機(jī)還會(huì)讓 SIM 卡對(duì) RAND 和 Ki 計(jì)算出另一個(gè)密鑰以供全程通信加密使用,這個(gè)密鑰的長(zhǎng)度是 64 bits, 通常叫做 Kc, 生成 Kc 的算法是 A8算法 ,因?yàn)?A3算法和 A8算法接受的輸入完全相同,所以實(shí)現(xiàn)者偷了個(gè)懶,用一個(gè)算法同時(shí)生成 SRES 和 Kc 。

在通信過(guò)程中的加密就是用 Kc 了,這個(gè)算法叫做 A5算法,因?yàn)?A5 的加密量很巨大,而且 SIM 卡的速度很慢,因此所有通信過(guò)程中的加密都是在手機(jī)上面完成的,這樣一來(lái),除非天下所有 GSM 手機(jī)都至少支持一種相同的 A5算法,否則就沒法漫游了。