COMP128アルゴリズムは、 GSM標準で定義されている A3 および A8 機能の実装です。A3は、モバイル ステーションをネットワークに対して認証するために使用されます。A8 は、モバイル ステーションとBTS間で送信されるデータを暗号化するために A5 で使用されるセッション キーを生成するために使用されます。
COMP128には3つのバージョンがあります。これらは元々機密でした。最初のバージョンの一部の説明は1997年に漏洩し、リバースエンジニアリングによって完成しました。これにより、1998年に完全な公開につながりました。 [1] 2番目と3番目のバージョンは、SIMカードのコンプライアンスを検証するソフトウェアのリバースエンジニアリングによって取得されました。[2]
導入
A3 および A8 の使用方法の詳細については、認証センターを参照してください。
A3 と A8 はどちらも、128 ビットのキー ( K i ) と 128 ビットのチャレンジ( RAND ) を入力として受け取ります。A3 は 32 ビットの応答 ( SRES ) を生成し、A8 は 64 ビットのセッション キー ( K c ) を生成します。A3/A8 は、 K iとRAND を入力として、SRESとK c を出力として組み合わせた関数です。
A3 と A8 はそれ以上指定されていないため、オペレーターは A3 と A8 に使用される具体的なアルゴリズムを自由に選択できます。
COMP128アルゴリズム
COMP128 アルゴリズムは A3/A8 機能を実装します。次の 3 つがあります。
- COMP128-1 – 既知の弱点を持つオリジナルアルゴリズム
- COMP128-2 – K cの右端10ビットをクリアする強力なアルゴリズム
- COMP128-3 – COMP128-2と同じアルゴリズムで、K cの64ビットすべてが生成される
これらはすべて、2 つの 128 ビット入力と 1 つの 128 ビット出力を持つ圧縮関数を中心に構築されているため、その名前が付けられています。K iとRAND は、圧縮関数の入力として使用されます。その出力のビットは、SRESとK c を埋めるために使用されます。
COMP128-1の説明
COMP128-1 は、5 段階のバタフライ構造に基づく 8 ラウンドの圧縮関数を使用します。SRESには、出力の最初の 32 ビットが格納されます。K cには、出力の最後の 54 ビットとそれに続く 10 個のゼロが格納されます。
アルゴリズムの詳細な説明については、OsmocomBB の実装を参照してください。
COMP128-2/3の説明
COMP128-2 と COMP128-3 の実装は、COMP128-1 よりも明らかに複雑です。アルゴリズムの完全な説明については、Secrets of Sim [2]の記事のPython コードに基づく OsmocomBB 実装または FreeRADIUS 実装を参照してください。COMP128-2 は、最後にK cの右端の 10 ビットをクリアする点を除いて、COMP128-3 と同じです。
安全
COMP128-1ハッシュ関数は、入力の小さな変更が十分に拡散されないため弱いと考えられています。SIMから加入者キーを復元できる実用的な攻撃が実証されています。 [3]
COMP128-1 および COMP128-2 によって生成されるセッション キーには、意図的に 54 ビットのエントロピーしかありません。これにより、A5 または A6 暗号化が大幅に弱まります。
参考文献
- ^ Briceno, Marc; Goldberg, Ian; Wagner, David (1998)、COMP128 の実装、2009-03-18 のオリジナルからアーカイブ
- ^ ab Tamas, Jos (2013)、「SIMの秘密」、2014年12月24日時点のオリジナルよりアーカイブ、 2014年12月24日取得
- ^ ブルムリー、ビリー(2004)、A3/A8&COMP128 (PDF)
外部リンク
- ブリセノ、マーク、ゴールドバーグ、イアン(1998)、GSMクローニング
- ハンドシュー、ヘレナ、パリエ、パスカル(2000)、疑わしい競合品の衝突確率の低減128、CiteSeerX 10.1.1.141.1033
