COMP128
COMP128 je algoritmus implementovaný v SIM kartách realizující jedním postupem algoritmy A3 a A8. Algoritmus A3 slouží pro ověření (autentizaci) uživatele v síti GSM, A8 pro výběr relačního klíče Kc umožňujícího šifrovat data. Protože oba algoritmy mají stejné vstupní parametry, bývají nahrazeny algoritmem COMP128 se dvěma výstupy (SRES, Kc).
Scénář autentizace
[editovat | editovat zdroj]Scénář autentizace používající algoritmy A3 a A8 je následující:
autorizace uživatele do sítě a výpočet relačního klíče Kc: UŽIVATEL: SÍŤ: odeslání čísla IMSI (International -------128bit IMSI------> po přijetí čísla IMSI je Mobile Subscriber Identity) zapsaného uživateli posláno náhodné v SIM <-----128bit RAND-------- číslo RAND výpočet SRES algoritmem A3 aplikovaným na trvalý klíč Ki a RAND -------32bit SRES ------> porovnání SRES od mobilu a AuC výpočet Kc algoritmem A8 aplikovaným na trvalý klíč Ki a RAND ------- 64bit Kc -------> další komunikace je šifrována pomocí Kc <------ TMSI --------- VLR vygeneruje TMSI a pošle je mobilu; dále se místo IMSI používá TMSI
Problémy se zajištěním bezpečnosti relace autentizace
[editovat | editovat zdroj]V zájmu zachování plné bezpečnosti sítě GSM byl algoritmus COMP128 utajován. V roce 1997 však byl publikován nalezený text „uniklého“ dokumentu obsahujícího poznámky jednoho z inženýrů, kteří algoritmus vytvářeli. V dubnu 1998 Ian Golberg a David Wagner z Kalifornské univerzity v Berkeley zrekonstruovali několik chybějících řádků kódu, získali kompletní kód algoritmu v jazyku C a provedli první úspěšný útok na COMP128.
Pseudokód popisující práci algoritmu:
VOID A3A8 (vstupy RAND[16], Ki[16], výstup SIMoutput[12]) { x[32] - interní buffer - pracuje na bytech, bit[128] - pracovní buffer; T[5][]- substituční bloky zapsané v tabulce (512, 256, 128, 64, 32 bytů); další proměnné a, j, k, l, m, n, y, z, další_bit; uložení RAND do druhých 16 bytů bufferu (x[16...31]) for a=16 to 31 { x[a]=RAND[a] } 8 průchodů smyčkou for a=1 to 8 { uložení Ki do prvních 16 bytů bufferu (x[0...15]) for j=0 to 15 { x[j]=Ki[j] } tzv. motýlová komprese, je jednou z hlavních slabin algoritmu COMP128 for j=0 to 4 { for k=0 to (2^j)-1 { for l=0 to 2^(4-j)-1 { m=l+k2^(5-j) n=m+2^(4-j) y=(x[m]+2x[n]) mod 2^(9-j); z=(2x[m]+x[n]) mod 2^(9-j); x[m]=T[j][y]; x[n]=T[j][z]; } } } přeorganizování bitů v bufferu for j=0 to 31{ for k=0 to 3 { bit[4j+k]=(x[j]>>(3-k))&1 } } provedení permutace; kromě posledního průchodu smyčkou if a<8{ for j=0 to 15{ for k=0 to 7{ další_bit=17(8j+k) mod 128 k-ty bit x[j+16]=bit[další_bit] } } } } komprese 16 bytů do 12 bytů a jejich uložení do SIMoutput[] (x[0...3]-SRES; x[4...11]-Kc); for a=0 to 3 SIMoutput[a]=(x[2i]<<4)|x[2i+1] for a=0 to 5 SIMoutput[4+a]=(x[2i+18]<<6|(x[2i+18+1]<<2)|(x[2i+18+2]>>2) vynulování zbylých 10 bitů klíče Kc SIMoutput[4+6]=(x[26+18]<<6)|(x[26+18+1]<<2) SIMoutput[4+7]=0 }
Goldberg a Wagner zjistili, že ze 64 bitů relačního klíče Kc, který je jedním z výstupů algoritmu COMP128, je poslední 10 bitů nulových, takže klíč má 54 bitů. To představuje více než tisícinásobné oslabení bezpečnosti oproti tomu, co umožňuje specifikace GSM. Tato znalost umožnila Goldbergovi a Wagnerovi provést útok na COMP128 vyžadující 219 dotazů na SIM kartu, které lze provést za méně než 8 hodin. Jejich útok a prolomení algoritmu COMP128 umožnily získat hodnotu trvalého klíče Ki uloženého na kartě SIM, což umožňuje klonování SIM karet (pro využití klonované karty je však potřebné získat její PIN kód).
V květnu 2002 roku Josyula R. Rao, Pankaj Rohatgi, Helmut Scherzer (všichni z firmy IBM) a Stephanie Tinguely (ze švýcarského Hlavního Ústavu Technologii) provedli útok na SIM postranními kanály, tzv. partition attack, umožňující prolomit algoritmus COMP128 za méně než minutu. Svoji práci popsali v článku Partitioning Attacks: Or How to Rapidly Clone Some GSM Cards[1] dostupném na internetu.
Verze algoritmu
[editovat | editovat zdroj]Dosud podařilo se prolomit pouze algoritmus COMP128-V1, neboli jeho první verzi. V současné době probíhají práce na zdokonalení COMP128, a operátoři migrují na novější verze algoritmu:
- COMP128-V2 – odstraňuje některé chyby v první verzi algoritmu
- COMP128-V3 – vytvořený pro generování 64bitového relačního klíče Kc
- COMP128-V4 – vychází z algoritmu 3GPP, který používá AES; práce na této verzi stále probíhají.
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku Comp128 na polské Wikipedii.
- ↑ RAO, Josyula R.; ROHATGI, Pankaj; SCHERZER, Helmut; TINGUELY, Stephane. Partitioning Attacks: Or How to Rapidly Clone Some GSM Cards. Berkeley, Kalifornie: 2002 IEEE Symposium on Security and Privacy Dostupné online. ISBN 0-7695-1543-6. DOI 10.1109/SECPRI.2002.1004360. S. 31–41.[nedostupný zdroj]