COMP128

COMP128 merupakan implementasi dari algoritme A3 dan A8 yang didefinisikan dalam standar GSM.

A3 digunakan untuk otentikasi Stasiun Bergerak (Mobile Station)ke jaringan. A8 digunakan untuk menghasilkan kunci sesi yang digunakan oleh algoritme A5 untuk mengenkripsi data yang dikirimkan antara stasiun bergerak dan BTS.

Algoritme awalnya bersifat rahasia. Penjelasan parsial bocor pada tahun 1997 dan diselesaikan melalui reverse engineering. Hal ini menyebabkan publikasi sepenuhnya pada tahun 1998.

Pengantar 
Untuk rincian tentang cara A3 dan A8 digunakan lihat Authentication Center, dimana Authentication centre (AuC) berisi parameter authentikasi pelanggan untuk mengakses jaringan GSM

A3 dan A8 keduanya mengambil kunci 128 bit (Ki) dan 128 bits challenge (RAND) sebagai masukan. A3 menghasilkan respon 32 bit (SRES) dan A8 menghasilkan 64 bit kunci sesi (Kc).

COMP128 menggabungkan fungsi A3 dan A8. COMP128-1 dibangun di sekitar fungsi kompresi dengan dua masukan 128 bit dan satu keluaran 128 bit. Fungsi ini memiliki delapan putaran dan didasarkan pada struktur kupu-kupu dengan lima tahap.

Algoritme COMP128 

Beberapa algoritme COMP128 yang dirancang:

 COMP128-1 algoritme pertama yang dikenal lemah
 COMP128-2 menggantikan COMP128-1, tapi masih menetapkan 10 bit paling kanan dari Kc ke 0), sengaja melemahkan pengacakan A5
 COMP128-3 sama dengan algoritme COMP128-2, tetapi semua 64-bit dari Kc di generat
 COMP128-4 didasarkan atas algoritme 3GPP (3rd Generation Partnership Project) ("Milenage"), yang menggunakan AES

Deskripsi COMP128-1 
T0[512], T1[256], T2[128], T3[64] and T4[32] are compression tables.

 comp128: RAND, Ki -> SRES, Kc
 {
  x[32]:      array of bytes
  bit[128]:   array of bits
  m, n, y, z: integers
 
  x[16..31]:= RAND
  for i:= 1 to 8
    x[0..15]:= Ki
    for j:= 0 to 4
      for k:= 0 to 2j-1
        for l:= 0 to 24-j-1
          m:= l + k * 25-j
          n:= m + 24-j
          y:= (x[m] + 2 * x[n]) mod 29-j
          z:= (2 * x[m] + x[n]) mod 29-j
          x[m]:= Tj[y]
          x[n]:= Tj[z]    
    for j:= 0 to 31
      for k:= 0 to 3
        bit[4 * j + k]:= x[j]3-k
    if i < 8  
      for j:= 0 to 15
        for k:= 0 to 7
          x[j + 16]7-k:= bit[((8 * j + k) * 17) mod 128]
  SRES:= bit[0..31]
  Kc:= bit[74..127]  00000000002
 }

Keamanan 
Fungsi hash COMP128-1 dianggap lemah karena tidak cukup diffusion perubahan kecil di masukan.

Serangan praktis telah membuktikan bahwa dapat memulihkan kunci pelanggan dari SIM. Penggantian algoritme sudah sejak dikembangkan.

Selain kunci sesi dihasilkan oleh COMP128 hanya memiliki 54 bit entropi. Hal ini secara signifikan melemahkan A5.

Referensi 
<ref name="AuC">

Pranala luar 
 
 
 
 

Standar GSM
Standar Telekomunikasi