秘話
技術 > デジタル方式 > 携帯電話 > 携帯電話の暗号化方式の詳細

デジタル方式の第2世代携帯電話の初期のものとしてGSMがある。1987年に規格の基本部分が決められ、音声の暗号化のためA5/1と呼ばれる方式が採用され主にヨーロッパで使用された。その後A5/1の暗号強度を落とした派生方式のA5/2も採用され、その他の地域で使用されている。これらの方式には脆弱性があることがわかっており、鍵ストリーム生成のコアとなるアルゴリズムとしてKASUMIを使用するA5/3と呼ばれる方式も2002年に標準として採用された。
A5/1はストリーム暗号の一種で、鍵ストリームの生成には3つの線形帰還シフトレジスタ (LFSR) を組み合わせて使用する。各シフトレジスタにはクロックビットがあり、これらの多数決の結果と自身のクロックビットが等しい場合のみシフトを行わせる。クロックを不規則にすることで単純なLSFRより解読が難しくなる。暗号鍵の長さは64ビットで、同じ鍵ストリームの生成を防ぐためシフトレジスタの初期値には暗号鍵と22ビットのフレーム番号とを用いる。
A5/1のアルゴリズムは非公開だったが、GSMは比較的早い時期から広く使われていたためアルゴリズムの解析やA5/1の解読方法の研究も早い時期から行われた。GSM携帯端末のリバースエンジニアリングにより1999年にアルゴリズムが解析され、一般に公開されていたテストデータにより結果が検証された。2000年には通常のPCを使いリアルタイムで暗号鍵を見つけ出すことができる方法が論文として発表された。またGSMのプロトコル上の脆弱性を利用し最も暗号強度の弱いA5/2を使わせることで秘密鍵を見つけ出す方法も考案されている。
第2世代携帯電話として日本で使われたPDC (Personal Digital Cellular) も、暗号鍵で初期化されたLFSRを使うストリーム暗号が使われた。
第3世代携帯電話であるCDMA2000方式とW-CDMA方式にもそれぞれ音声暗号化方式が定義されている。いずれの方式でもストリーム暗号により暗号化を行う。また両者とも鍵ストリーム生成にブロック暗号を応用したアルゴリズムが最初の標準として採用された。ブロック暗号では線形解読法や差分解読法、高階差分攻撃法などさまざまな解読方法が知られており、それらに対する解読の難しさについての理論的研究も進んでいるため、暗号の解読されにくさの評価が行いやすい。
W-CDMAでは、鍵ストリーム生成のために'f8'と呼ばれる鍵ストリーム生成アルゴリズムが仕様書で定義され、そのコアとなる暗号化アルゴリズムとして、日本で開発されたブロック暗号のKASUMIが標準として登録されている。KASUMIには致命的なものではないがいくつかの脆弱性が見つかったため、SNOW 3Gと呼ばれる暗号化アルゴリズムも2006年に標準として追加された。同じような脆弱性を持たないようアルゴリズムはまったく異なったものが選ばれ、KASUMIがブロック暗号アルゴリズムなのに対し、SNOW 3Gは線形帰還シフトレジスタ (LFSR) を複雑化したストリーム暗号アルゴリズムである。これらで使用する暗号鍵の長さは128ビットで、認証の際にも同じ暗号化アルゴリズムが使用される。鍵ストリーム生成アルゴリズムの入力には暗号鍵以外に、32ビットの暗号シーケンス番号である COUNT-C、5ビット長の無線ベアラ識別子 BEARER、1ビットの方向識別子 DIRECTION があり、同じ鍵ストリームが短期間に繰り返し生成されないような工夫がされている。
CDMA2000方式では、ブロック暗号の128ビットAESがストリーム暗号化の鍵ストリーム生成用に、認証のためにはCAVE (Cellular Authentication and Voice Encryption)、あるいはより新しいAKA (Authentication and Key Agreement) アルゴリズムが使用される。2.5世代携帯電話とも呼ばれたcdmaOneから段階的に発展したCDMA2000方式は過去の規格やアルゴリズムを土台に新しい機能が追加されてきた。AESによるストリーム暗号化やAKAによる認証はそのような拡張機能の1つである。
CAVEアルゴリズムを認証に用いる古典的な方式では、A-Key (Authentication key) と呼ばれる64ビットの秘密鍵（マスターキー）を元にSSD (Shared Secret Data) と呼ばれる128ビットの二次的な鍵を生成し、認証と暗号化に使用する。R-UIMカード（SIMカード）を用いる場合、A-Key、SSD共にカード内に格納され通常外部から読み取ることはできない。これらのパラメータを使った計算もカード内部で行われる。SSD_Aと呼ばれるSSDの上位64ビットが認証、SSD_Bと呼ばれる下位64ビットが暗号化に使われる。暗号化のためにORYXと呼ばれるアルゴリズムが定義されているがあまり使われず、後述のボイスプライバシー (Voice Privacy) と呼ばれる方式が主に使用されてきた。
AKAアルゴリズムを用いる方式はより新しいもので、128ビットの鍵である'K'をマスターキーとして用い、これから生成した64ビットの認証鍵と128ビットの暗号化鍵を用い認証とAESアルゴリズムによる暗号化を行う。音声の暗号化の際には128ビットの暗号化鍵をAESアルゴリズムの入力とする。W-CDMAと同様、同じ鍵ストリームの繰り返しを避けるためシステム時間を基準とした32ビットのカウンタ値など複数のパラメータも暗号化アルゴリズムの入力として与える。
CDMA2000方式では暗号化とは別にボイスプライバシーと呼ばれる傍受しにくくする仕組みも組み込まれている。CDMA2000で使われる通信方式である符号分割多元接続方式（CDMA方式）では端末毎に固有の拡散符号を用いてスペクトラム拡散を行い、受信側では同じ符号を用いて逆拡散を行い元の信号を復元する。通常の通信では端末毎に割り当てられたESN (Electronic Serial Number) と呼ばれるパラメータから拡散符号（パブリックロングコードマスク）を計算し用いる。しかし秘話通信を行う場合は、認証に使われるSSD (Shared Secret Data) から計算した特別な拡散符号（プライベートロングコードマスク）を使用する。ESNは基地局間のメッセージ内で平文でやり取りされ盗聴可能だが、SSDは直接やり取りされないためどのような拡散符号を用いているか盗聴している第三者にはわからない。この場合逆拡散が正しくできないため信号は単なる広帯域のノイズにしか聞こえず、端末からの信号の受信自体が難しくなる。
携帯電話用の新しい通信規格であるLTE (Long Term Evolution) はデータ通信専用の規格で音声データが直接やり取りされることは無いが、音声データをIP (Internet Protocol) 上のパケットデータとしてやり取りすることは可能である。この方式はVoLTE (Voice over LTE) と呼ばれる。LTEでも無線でやり取りされるビット列の暗号化のためにストリーム暗号が用いられる。鍵ストリーム生成に使用される暗号化アルゴリズムとしてW-CDMAの標準の一つでもあるSNOW 3Gと、CDMA2000で使われるAESの2種類が定義されている。鍵ストリーム生成に使用される暗号化鍵の生成には、元の鍵（マスターキー）を元に二次的な鍵、三次的な鍵と順次鍵を生成し階層的に管理する方式が使われている。これは基地局間の切り替わりであるハンドオーバー時や事業者間の切り替わりであるローミング時の鍵生成を高速化し、さらに鍵の1つが危険にさらされた場合の被害を最小にするためである。