(57)【特許請求の範囲】
【請求項１】
（Ａ）一つもしくは複数のオフセットをメモリに記憶するステップと、
（Ｂ）前記メモリから前記一つもしくは複数のオフセットを入手するステップと、
（Ｃ）入手した前記一つもしくは複数のオフセットを用いて、ｔｂｏｘ関数への入力を置き換えするステップと、該入力は暗号処理されるメッセージ又はそれから導出されたものであり、
（Ｄ）暗号化プロセッサにおいて、置き換えした前記入力に、前記ｔｂｏｘ関数を適用し、最終処理済メッセージを入手するステップと、
（Ｅ）前記最終処理済メッセージをトランシーバへルーティングするステップと、
（Ｆ）前記最終処理済メッセージを前記トランシーバから送信するステップと
を有することを特徴とする通信デバイスにより処理される呼におけるメッセージの強化された暗号処理方法。
【請求項２】
（Ｇ）秘密値をメモリに記憶するステップと、
（Ｈ）前記秘密値を前記メモリから入手するステップと、
（Ｉ）入手した前記秘密値に基づいて、第１秘密オフセットおよび第２秘密オフセットを生成する生成ステップと
をさらに有することを特徴とする請求項１に記載の方法。
【請求項３】
前記（Ｉ）の生成ステップは、前記第１秘密オフセットおよび第２秘密オフセットのそれぞれに関し、入手した秘密値のうちのいくつかを、前記予め暗号化されたメッセージオクテットの対と組み合わせており、
前記予め暗号化されたメッセージオクテットの対は、呼の第１メッセージを、初期化値で代替したものである
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記秘密値は、前記第１秘密オフセットおよび第２秘密オフセットのそれぞれに関し、１５ビット値および１６ビット値である
ことを特徴とする請求項３に記載の方法。
【請求項５】
前記初期化値は１６ビット値である
ことを特徴とする請求項４に記載の方法。
【請求項６】
呼のｎ番目のメッセージに対する第１オフセットは、
式offset1n＝（（（２Ｋ1＋１）＊ＣＴn-1＋Ｋ2）ｍｏｄ  ６４Ｋ）＞＞８
で表され、
ｉが奇数の場合にＫiは１５ビット値であり、
ｉが偶数の場合にＫiは１６ビット値であり、
Ｋiは呼に関しすべて一定であり、
ＣＴn-1は（ｎ−１）番目の暗号文メッセージの最初の２オクテットであり、呼のｎ番目のメッセージに対する第２オフセットは、
式offset2n＝（（（２Ｋ3＋１）＊ＣＴn-1＋Ｋ4）ｍｏｄ  ６４Ｋ）＞＞８
で表され、
ｉが奇数の場合にＫiは１５ビット値であり、
ｉが偶数の場合にＫiは１６ビット値であり、
Ｋiは呼に関しすべて一定であり、
ＣＴn-1は（ｎ−１）番目の暗号文メッセージの最初の２オクテットであり、ｍｏｄ  ６４Ｋはｍｏｄ  ６５，５３６である
ことを特徴とする請求項５に記載の方法。
【請求項７】
（Ａ）第１秘密オフセット、第２秘密オフセット、第３秘密オフセットおよび第４秘密オフセットをメモリに記憶するステップと、
（Ｂ）前記第１秘密オフセットおよび第２秘密オフセットを前記メモリから入手する第１入手ステップと、
（Ｃ）入手した前記第１秘密オフセットおよび第２秘密オフセットを用いて、メッセージのオクテットを置き換えする第１置換えステップと、
（Ｄ）暗号化プロセッサにおいて、１回目のＣＭＥＡプロセスを実行する１回目のＣＭＥＡプロセス実行ステップと、
前記（Ｄ）の１回目のＣＭＥＡプロセス実行ステップは、
（Ｄ１）前記（Ｃ）の結果に、ｔｂｏｘ関数を適用し、中間暗号文を入手するステップと、
を有し、
（Ｅ）前記第３秘密オフセットおよび第４秘密オフセットを前記メモリから入手する第２入手ステップと、
（Ｆ）入手した前記第３秘密オフセットおよび第４秘密オフセットを用いて、前記中間暗号文のオクテットを置き換すえる第２置き換えステップと、
（Ｇ）前記暗号化プロセッサにおいて、２回目のＣＭＥＡプロセスを実行する２回目のＣＭＥＡプロセス実行ステップと、
前記（Ｇ）の２回目のＣＭＥＡプロセス実行ステップは、
（Ｇ１）前記（Ｆ）の結果に、ｔｂｏｘ関数を適用し、最終処理済メッセージを入手するステップと、
を有し、
（Ｈ）前記最終処理済メッセージをトランシーバへルーティングするステップと、
（Ｉ）前記最終処理済メッセージを前記トランシーバから送信するステップと
を有することを特徴とする通信デバイスにより処理される呼におけるメッセージの強化された暗号処理方法。
【請求項８】
（Ｊ）秘密値をメモリに記憶するステップと、
（Ｋ）前記秘密値を前記メモリから入手するステップと、
（Ｌ）入手した前記秘密値に基づいて、第１秘密オフセット、第２秘密オフセット、第３秘密オフセット、第４秘密オフセットを生成する生成ステップと
をさらに有することを特徴とする請求項７に記載の方法。
【請求項９】
前記（Ｌ）の生成ステップは、前記第１秘密オフセット、第２秘密オフセット、第３秘密オフセット、第４秘密オフセットのそれぞれに関し、入手した前記秘密値のうちのいくつかを、予め暗号化されたメッセージオクテットの対と組み合わせ、
前記予め暗号化されたメッセージオクテットの対は、呼の第１メッセージを、初期化値で代替したものである
ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記秘密値は、前記第１秘密オフセット、第２秘密オフセット、第３秘密オフセット、第４秘密オフセットのそれぞれに対して１５ビット値および１６ビット値である
ことを特徴とする請求項９に記載の方法。
【請求項１１】
前記初期化値は１６ビット値である
ことを特徴とする請求項１０に記載の方法。
【請求項１２】
呼のｎ番目のメッセージに対する第１オフセットは、
式offset1n＝（（（２Ｋ1＋１）＊ＣＴn-1＋Ｋ2）ｍｏｄ  ６４Ｋ）＞＞８
で表され、
ｉが奇数の場合にＫiは１５ビット値であり、
ｉが偶数の場合にＫiは１６ビット値であり、
Ｋiは呼に関しすべて一定であり、
ＣＴn-1は（ｎ−１）番目の暗号文メッセージの最初の２オクテットであり、呼のｎ番目のメッセージに対する第２オフセットは、
式offset2n＝（（（２Ｋ3＋１）＊ＣＴn-1＋Ｋ4）ｍｏｄ  ６４Ｋ）＞＞８
で表され、
ｉが奇数の場合にＫiは１５ビット値であり、
ｉが偶数の場合にＫiは１６ビット値であり、
Ｋiは呼に関しすべて一定であり、
ＣＴn-1は（ｎ−１）番目の暗号文メッセージの最初の２オクテットであり、呼のｎ番目のメッセージに対する第３オフセットは、
式offset3n＝（（（２Ｋ5＋１）＊ＣＴn-1＋Ｋ6）ｍｏｄ  ６４Ｋ）＞＞８
で表され、
ｉが奇数の場合にＫiは１５ビット値であり、
ｉが偶数の場合にＫiは１６ビット値であり、
Ｋiは呼に関しすべて一定であり、
ＣＴn-1は（ｎ−１）番目の暗号文メッセージの最初の２オクテットであり、呼のｎ番目のメッセージに対する第４オフセットは、
式offset4n＝（（（２Ｋ7＋１）＊ＣＴn-1＋Ｋ8）ｍｏｄ  ６４Ｋ）＞＞８
で表され、
ｉが奇数の場合にＫiは１５ビット値であり、
ｉが偶数の場合にＫiは１６ビット値であり、
Ｋiは呼に関しすべて一定であり、
ＣＴn-1は（ｎ−１）番目の暗号文メッセージの最初の２オクテットであり、ｍｏｄ  ６４Ｋはｍｏｄ  ６５，５３６である
ことを特徴とする請求項１１に記載の方法。
【請求項１３】
（Ａ）第１秘密オフセット、第２秘密オフセット、第３秘密オフセットおよび第４秘密オフセットをメモリに記憶するステップと、
（Ｂ）暗号化されたメッセージをトランシーバで受信するステップと、
（Ｃ）前記暗号化されたメッセージを前記トランシーバから復号化プロセッサへルーティングするステップと、
（Ｄ）前記第３秘密オフセットおよび第４秘密オフセットを前記メモリから入手する第１入手ステップと、
（Ｅ）入手した前記第３秘密オフセットおよび第４秘密オフセットを用いて、メッセージのオクテットを置き換えする第１置き換えステップと、
（Ｆ）復号化プロセッサにおいて、１回目のＣＭＥＡプロセスを実行する１回目のＣＭＥＡプロセス実行ステップと、
前記（Ｆ）の１回目のＣＭＥＡプロセス実行ステップは、
（Ｆ１）前記（Ｅ）の結果に、ｔｂｏｘ関数を適用し、中間暗号文を入手するステップとを有し、
（Ｇ）前記第１秘密オフセットおよび第２秘密オフセットを前記メモリから入手する第２入手ステップと、
（Ｈ）入手した前記第１秘密オフセットおよび第２秘密オフセットを用いて、前記中間暗号文のオクテットを置き換えする第２置換ステップと、
（Ｉ）前記復号化プロセッサにおいて、２回目のＣＭＥＡプロセスを実行する２回目のＣＭＥＡプロセス実行ステップとを有し、
前記（Ｉ）の２回目のＣＭＥＡプロセス実行ステップは、
（Ｉ１）前記（Ｈ）の結果に、ｔｂｏｘ関数を適用し、最終処理済メッセージを入手するステップと有する
ことを特徴とする通信デバイスにより処理される呼における暗号化されたメッセージに対する強化された暗号処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、無線（ワイヤレス）電話暗号法に関し、特に、大量のシステム資源を追加することを必要とせずに、無線電話システムにおける高速でセキュリティの高い暗号化のための改善されたセキュリティ暗号方式に関する。
【０００２】
【従来の技術】
無線電話は、例えば、ステータス情報の伝送、動作モードの再設定、呼着信処理、ならびに、加入者の電子シリアル番号および電話番号のようなシステムおよびユーザのデータや、ユーザによって送信される会話およびその他のデータの伝送を含む、いくつかの目的のためにメッセージングを使用する。中央サービス局が電話線によって各加入者に接続され、権限のない者（攻撃者）による盗聴や傍受からのかなりの程度の保護を保証する通常の有線電話とは異なり、無線電話サービス局（すなわち基地局）は、加入者の物理的位置に関わらず、メッセージを無線信号で送受信しなければならない。
【０００３】
基地局はどこにいる加入者ともメッセージを送受信することができなければならないため、メッセージングプロセスは、加入者機器との間で送受信される信号に完全に依存する。信号は、無線伝送されるため、適当な機器を有する盗聴者あるいは侵入者によって傍受される可能性がある。
【０００４】
信号が無線電話機によって平文で送信される場合、盗聴者が信号を傍受してそれを用いて加入者になりすますこと、あるいは、ユーザによって送信された秘密データを傍受することの危険が存在する。このような秘密データには、会話の内容も含まれることがある。秘密データはまた、例えば、無線電話機に接続されたモデムを通じて送信されるコンピュータデータのような、ユーザによって送信される非音声データを含むこともあり、また、一般にキー押下によって送信される銀行口座やその他の秘密のユーザ情報を含むこともある。会話を聞き、あるいは、非音声データを傍受する盗聴者は、ユーザから秘密情報を取得する可能性がある。暗号化されていない電話信号（すなわち平文信号）のメッセージ内容は、適当に調整した受信機によって比較的容易に傍受される。
【０００５】
あるいは、傍受者は、より高い送信電力を用いることによって、確立されている接続に侵入し、基地局へ信号を送信し、会話の当事者になりすますことも可能である。
【０００６】
無線信号によって伝送されているメッセージに暗号方式を適用することがない場合、電話資源の無権限使用、メッセージの盗聴、および会話中の発呼者または被呼者になりすますことが可能である。このような無権限の傍受や盗聴は実際に重大な問題であることが分かっており、極めて好ましくない。
【０００７】
【発明が解決しようとする課題】
無線電話アプリケーションへの暗号方式の応用は、上記のセキュリティ問題への解決法を提供するが、標準的な暗号方法を無線電話に適用することは、それらの方法が大きい計算量を要するという性質により、大きい困難に遭遇している。特に、これらの方法は、小さい無線ハンドセットを供給するという要求によって課される制約と、ハンドセットの小さいサイズによって課される処理電力に対する制約を受ける。一般的な無線ハンドセットにある処理電力は、ＤＥＳ(Data Encryption Standard)のような周知の暗号アルゴリズムの処理要求を扱うには不十分である。一般的な無線電話システムにおいてこのような周知の暗号アルゴリズムを実装することは、信号を処理（すなわち、暗号化および復号）するのに要する時間を増大させ、それにより、加入者にとって受け入れられない遅延を引き起こす可能性がある。
【０００８】
無線電話のための暗号方式の１つが、米国特許第５，１５９，６３４号（発明者：Reeds）に記載されている。この米国特許には、ＣＭＥＡ(Cellular Message Encryption Algorithm)として知られる暗号プロセスが記載されている。ＣＭＥＡの動作の中心にｔｂｏｘ関数がある。これは、秘密鍵を秘密ルックアップテーブルに拡張する。初期インデックスから開始して、鍵データとテーブルデータを複数回組み合わせて秘密ルックアップテーブルを生成する。テーブルが生成されると、後述のアルゴリズムに従って鍵のオクテットがメッセージのオクテットに適用され、その結果として得られた値がルックアップテーブルへのインデックスとして用いられる。ｔｂｏｘ関数は、関数呼出し（ファンクションコール）として、または、静的メモリにあるテーブルとして実装可能である。このテーブルの目的は、後者の場合のように実装されるときには、与えられたセキュリティレベルでの暗号化の速度を大幅に速めることである。
【０００９】
従来のＣＭＥＡアルゴリズムは、以下で詳細に説明するように大幅に改善される。このような改善により、セキュリティの程度が高くなり、非常に有効である。
【００１０】
【課題を解決するための手段】
本発明は、ｔｂｏｘ関数の使用法を修正することによりＣＭＥＡのような暗号アルゴリズムのセキュリティの程度を高くする。ｔｂｏｘ関数の使用法の改善はＣＭＥＡを改善し、移動無線トランシーバで一般に用いられるような小さいコンピュータにおいて高速かつ効率的に動作するように実装可能である。
【００１１】
本発明によるｔｂｏｘ関数の改善された使用法は、オフセットを用いてｔｂｏｘ関数への入力を置換する。各オフセットは、２つの秘密値および外部暗号同期(cryptosync)値を用いて生成される。秘密値は、いくつかの当業者に周知の技術のうちのいずれによって生成することも可能である。一部のアプリケーションでは、呼の最初のメッセージを暗号化するために用いられる外部暗号同期値は初期化ベクトルである。後続のメッセージに対しては、外部暗号同期値は、前に暗号化されたメッセージの最初の２オクテットの暗号文である。
【００１２】
本発明によるｔｂｏｘ関数の改善された使用は、好ましくは、少なくとも２回のＣＭＥＡを用いる強化されたＣＭＥＡプロセスにより達成される。強化ＣＭＥＡプロセスの場合、第１から第４までのオフセットが生成される。各オフセットは、好ましくは、１５ビットの秘密値、１６ビットの秘密値、および外部暗号同期値を使用する。各オフセットは、相異なる秘密値対を使用する。秘密値は、いくつかの当業者に周知の技術のうちのいずれによって生成することも可能である。第１および第２のオフセットは、第１回のＣＭＥＡプロセス中にｔｂｏｘ関数に入力され、第３および第４のオフセットは第２回のＣＭＥＡプロセス中にｔｂｏｘ関数に入力される。
【００１３】
暗号化された文（テキスト）は、本発明によれば、暗号文を導入し、平文を暗号化するために適用されたステップを逆順に逆に作用させることによって復号される。
【００１４】
本発明のもう１つの特徴によれば、本発明による装置は、テキストを生成し、それをＩ／Ｏインタフェースに供給する。Ｉ／Ｏインタフェースは、そのテキストを生成されたテキストとして識別し、そのテキストおよびその識別を暗号化／復号プロセッサに供給する。続いて暗号化／復号プロセッサは、そのテキストを暗号化して、送信するためにトランシーバに供給する。本発明の装置がトランシーバを通じて通信を受信すると、その通信は入力暗号文として識別され、その暗号文およびその識別は暗号化／復号プロセッサに供給される。暗号化／復号プロセッサは、その暗号文を復号して、宛先へ転送するためにＩ／Ｏプロセッサに供給する。
【００１５】
【発明の実施の形態】
図１は、通話中に送信される可能性のあるいくつかの重要なユーザデータの暗号化のためにＣＭＥＡ鍵を用いる従来の方法１００を説明する流れ図である。ＣＭＥＡ鍵は、２５６バイトの秘密配列ｔｂｏｘ（ｚ）を作成するために用いられる。あるいは、ｔｂｏｘ関数は、関数呼出しとして実装されることも可能である。これによりＲＡＭの使用量は減少するが、処理時間は約１桁増大する。
【００１６】
ステップ１０２で、未処理のテキストが導入される。ステップ１０４で、ｔｂｏｘを関数呼出しとしてではなく静的テーブルとして実装するシステムでは、静的ｔｂｏｘテーブルが導出される。ｔｂｏｘテーブルは次のように導出される。
０≦ｚ＜２５６の範囲の各ｚに対して、
tbox(z) = C(((C(((C(((C((z XOR k0)+k1)+z)XOR k2)+k3)+z)XOR k4)+k5)+z)XOR k6)+k7)+z
ただし「＋」は２５６を法とする加算を表し、「ＸＯＲ」はビットごとの排他的論理和演算子であり、「ｚ」は関数の引数であり、ｋ０，...，ｋ７はＣＭＥＡ鍵の８個のオクテットであり、Ｃ（）はＣＡＶＥ(Cellular Authentication, Voice Privacy and Encryption)８ビットテーブルルックアップの結果である。以下で説明する強化がない場合、ｔｂｏｘ関数は当業者に周知である。しかし、図２〜図５に関して以下で説明する強化により、ｔｂｏｘ関数のセキュリティの程度が大幅に増大する。
【００１７】
ＣＭＥＡは、連続する３つのステージからなり、各ステージは、データバッファ内の各バイト列を変更する。ステップ１０６、１０８および１１０で、ＣＭＥＡプロセスの第１、第２および第３のステージが、以下で説明するようにそれぞれ実行される。長さｄバイトのデータバッファ（各バイトをｂ（ｉ）で表す。ｉは０≦ｉ＜ｄの範囲の整数である。）は３ステージで暗号化される。
【００１８】
ＣＭＥＡの第１ステージ（Ｉ）は以下の通りである。
１．変数ｚを０に初期化する。
２．０≦ｉ＜ｄの範囲の連続する整数値ｉに対して、
ａ．ｑ＝ｚ（ｉの下位バイト）、によって変数ｑを形成する。ただし、はビットごとの排他的論理和演算子である。
ｂ．ｋ＝ＴＢＯＸ（ｑ）、によって変数ｋを形成する。
ｃ．ｂ（ｉ）＝ｂ（ｉ）＋ｋ  ｍｏｄ  ２５６、によりｂ（ｉ）を更新する。
ｄ．ｚ＝ｂ（ｉ）＋ｚ  ｍｏｄ  ２５６、によりｚを更新する。
【００１９】
ＣＭＥＡの第２ステージ（ＩＩ）は次の通りである。
１．０≦ｉ＜（ｄ−１）／２の範囲のｉのすべての値に対して、ｂ（ｉ）＝ｂ（ｉ）（ｂ（ｄ−１−ｉ）ＯＲ  １）。ただし、ＯＲはビットごとの論理和演算子である。
【００２０】
ＣＭＥＡの最後すなわち第３のステージ（ＩＩＩ）は、第１ステージの逆である復号である。
１．変数ｚを０に初期化する。
２．０≦ｉ＜ｄの範囲の連続する整数値ｉに対して、
ａ．ｑ＝ｚ（ｉの下位バイト）、によって変数ｑを形成する。
ｂ．ｋ＝ＴＢＯＸ（ｑ）、によって変数ｋを形成する。
ｃ．ｚ＝ｂ（ｉ）＋ｚ  ｍｏｄ  ２５６。
ｄ．ｂ（ｉ）＝ｂ（ｉ）−ｋ  ｍｏｄ  ２５６、によりｂ（ｉ）を更新する。
【００２１】
ステップ１１２で、最後の処理結果が出力される。
【００２２】
上記のＣＭＥＡプロセスは自己反転的である。すなわち、同じ順序で適用される同じステップが、平文を暗号化するためおよび暗号文を復号するための両方に使用される。従って、暗号化または復号のいずれが実行されているかを判定する必要がない。残念ながら、上記のＣＭＥＡプロセスは、呼に対して用いられるＣＭＥＡ鍵の回復を可能にする攻撃を受ける可能性がある。
【００２３】
顧客情報に対する追加セキュリティを提供するために、本発明による暗号化方式は、ｔｂｏｘ関数への入力を秘密オフセットによって置換（permutating; 置き換え又は並び換え）することによりｔｂｏｘ関数の使用を改善する。ｔｂｏｘ関数の改善された使用法は、好ましくは、強化ＣＭＥＡ（ＥＣＭＥＡ(enhanced CMEA)）プロセスの一部として使用される。この場合、メッセージは２回のＣＭＥＡプロセスを受ける。
【００２４】
図２は、本発明の１つの特徴によるｔｂｏｘ関数の改善された使用を含む暗号化プロセス２００を示す流れ図である。図２に示される暗号化プロセスにおいて、ｔｂｏｘ関数の各使用は、秘密オフセットを用いたｔｂｏｘ関数入力の置換を受ける。ステップ２０２で、平文が暗号化プロセスに導入される。ステップ２０４で、ｔｂｏｘを関数呼出しとしてではなく静的テーブルとして実装するシステムでは、静的ｔｂｏｘテーブルが導出される。ステップ２０６で、秘密オフセットを生成する際に用いるための秘密値のセットＫ1〜Ｋ4が生成される。Ｋi（ｉは奇数）は１５ビット値であり、Ｋi（ｉは偶数）は１６ビット値である。この秘密値セットは、いくつかの当業者に周知の技術のうちのいずれによって生成することも可能である。すべての秘密値Ｋ1〜Ｋ4は、好ましくは、各無線電話呼ごとに生成され、また、その呼を通じて一定であることが好ましい。ステップ２０８で、平文は、ＣＭＥＡ鍵を用いて、ＣＭＥＡ関数が１回適用される。ＣＭＥＡ関数はｔｂｏｘ関数を含む。ただし、ｔｂｏｘ関数への入力は、前のメッセージの暗号化されたテキストを用いて生成された秘密オフセットを用いて置換されている。各ｔｂｏｘ関数入力は、置換を受け、置換結果を生成する。ｔｂｏｘ関数入力を例えばｘと定義すると、置換結果は（（（ｘoffset1）＋offset2）ｍｏｄ２５６）の値である。ｔｂｏｘ入力の置換結果はｔｂｏｘ関数の適用を受ける。すなわち、各ｔｂｏｘ入力ｘに対して、使用される関数はtbox（（（ｘoffset1）＋offset2）ｍｏｄ  ２５６）である。offset1およびoffset2は、好ましくは、秘密の８ビット値である。新たな秘密オフセット値のセットは、好ましくは、無線呼の各メッセージごとに作成される。
【００２５】
ｔｂｏｘ入力のｔｂｏｘ置換のための秘密オフセット値は、呼のｎ番目のメッセージに対して以下の公式を用いて作成される。
offset1n＝（（（２Ｋ1＋１）＊ＣＴn-1＋Ｋ2）ｍｏｄ  ６４Ｋ）＞＞８
offset2n＝（（（２Ｋ3＋１）＊ＣＴn-1＋Ｋ4）ｍｏｄ  ６４Ｋ）＞＞８
ただし、Ｋ1〜Ｋ4は上で定義した通りである。ＣＴn-1の値は、（ｎ−１）番目の暗号文メッセージの最初の２オクテットであり、ＣＴ0は、好ましくは、呼の最初のメッセージに対する秘密の１６ビット初期化値で置換される。この説明では、ｍｏｄ  ６４Ｋは、通常の計算機科学用語に従って、ｍｏｄ（６５，５３６）を意味すると理解すべきである。offset1nおよびoffset2nはそれぞれ８ビット値である。ｔｂｏｘ入力の置換は実質的にｔｂｏｘエントリの位置を各メッセージごとにシフトさせ、攻撃の困難性を大幅に増大させる。ステップ２１０で、最終的な暗号文が生成される。
【００２６】
図３は、本発明のもう１つの特徴によるｔｂｏｘ関数の改善された使用を含む暗号化プロセス３００を示す流れ図である。メッセージに対する追加セキュリティを達成するためには、第１および第２の鍵を用いて、ＣＭＥＡ関数を２回使用することが好ましい。ＣＭＥＡ関数の各実行は、本発明によるｔｂｏｘ関数の改善された使用法を用いる。ＣＭＥＡ関数の各実行は、ｔｂｏｘ関数への入力の置換のために相異なる秘密オフセットの対を用いる。
【００２７】
ステップ３０２で、平文が暗号化プロセスに導入される。ステップ３０４で、ｔｂｏｘを関数呼出しとしてではなく静的テーブルとして実装するシステムでは、静的ｔｂｏｘテーブルが導出される。ステップ３０６で、秘密オフセットを生成する際に用いるための秘密値のセットＫ1〜Ｋ8が生成される。Ｋi（ｉは奇数）は１５ビット値であり、Ｋi（ｉは偶数）は１６ビット値である。この秘密値セットは、いくつかの当業者に周知の技術のうちのいずれによって生成することも可能である。すべての秘密値Ｋ1〜Ｋ8は、好ましくは、各無線電話呼ごとに生成され、また、その呼を通じて一定であることが好ましい。ステップ３０８で、平文は、第１のＣＭＥＡ鍵を用いて、修正されたＣＭＥＡプロセスの１回目が適用される。１回目のＣＭＥＡプロセスで用いられるｔｂｏｘ関数の使用法は、第１および第２の秘密オフセットによりｔｂｏｘ入力を置換することによって強化される。各ｔｂｏｘ関数入力がまず置換されて置換結果を生成する。ｔｂｏｘ関数入力が例えばｘである場合、置換結果は（（（ｘoffset1）＋offset2）ｍｏｄ２５６）の値である。置換結果はｔｂｏｘ関数の適用を受ける。すなわち、各ｔｂｏｘ入力ｘに対して、使用される関数はtbox（（（ｘoffset1）＋offset2）ｍｏｄ  ２５６）である。
【００２８】
ステップ３１０で、１回目が完了し、中間暗号文が生成される。ステップ３１２で、中間暗号文は、第２のＣＭＥＡ鍵を用いて、修正されたＣＭＥＡプロセスの２回目が適用される。２回目のプロセスで用いられるｔｂｏｘ関数の使用法は、第３および第４の秘密オフセットによりｔｂｏｘ入力を置換することによって強化される。各ｔｂｏｘ関数入力がまず置換されて置換結果を生成する。ｔｂｏｘ関数入力が例えばｘである場合、置換結果は（（（ｘoffset3）＋offset4）ｍｏｄ  ２５６）の値である。置換結果はｔｂｏｘ関数の適用を受ける。すなわち、各ｔｂｏｘ入力ｘに対して、使用される関数はtbox（（（ｘoffset3）＋offset4）ｍｏｄ  ２５６）である。ステップ３１４で、２回目が完了し、最終暗号文が生成される。offset1、offset2、offset3、およびoffset4は、好ましくは、それぞれ８ビット値である。新たな秘密オフセット値のセットは、好ましくは、無線呼の各メッセージごとに作成される。
【００２９】
ｔｂｏｘ置換のための４個の秘密オフセット値は、呼のｎ番目のメッセージに対して以下の公式を用いて作成される。
offset1n＝（（（２Ｋ1＋１）＊ＣＴn-1＋Ｋ2）ｍｏｄ  ６４Ｋ）＞＞８
offset2n＝（（（２Ｋ3＋１）＊ＣＴn-1＋Ｋ4）ｍｏｄ  ６４Ｋ）＞＞８
offset3n＝（（（２Ｋ5＋１）＊ＣＴn-1＋Ｋ6）ｍｏｄ  ６４Ｋ）＞＞８
offset4n＝（（（２Ｋ7＋１）＊ＣＴn-1＋Ｋ8）ｍｏｄ  ６４Ｋ）＞＞８
ただし、Ｋ1〜Ｋ8は上で定義した通りである。ＣＴn-1の値は、（ｎ−１）番目の暗号文メッセージの最初の２オクテットであり、ＣＴ0は、好ましくは、呼の最初のメッセージに対する秘密の１６ビット初期化値で置換される。上記の説明でも、ｍｏｄ  ６４Ｋは、通常の計算機科学用語に従って、ｍｏｄ（６５，５３６）を意味すると理解すべきである。１回目のＣＭＥＡ関数の適用に第１および第２のオフセット値を使用し、２回目のＣＭＥＡ関数の適用に第３および第４のオフセットを使用することにより、ｔｂｏｘエントリの位置は単に各メッセージごとにだけでなく、単一のメッセージの暗号化の各実行ごとにシフトする。ステップ３１４で、最終暗号文が生成される。
【００３０】
本発明によるｔｂｏｘ関数の改善された使用法は、ＣＭＥＡプロセスの任意のアプリケーションで用いることが可能であるが、図３の説明に関連して記述した強化ＣＭＥＡプロセスは、さらにセキュリティを追加し、好ましい。図３に示される暗号化方式は、２つの鍵の連続適用を要求するため、自己反転的ではない。すなわち、同じ順序で適用される同じ作用は、平文の暗号化でも暗号文の復号でもない。従って、以下で説明するように、別個の復号プロセスが必要である。
【００３１】
図４は、本発明のもう１つの特徴による復号プロセス４００を説明する流れ図である。本質的に、図４に示されるステップは、逆順であることを除いて、図３と同様である。ステップ４０２で、暗号文が復号プロセスに導入される。ステップ４０４で、暗号文は、図３の説明に関して上記で述べたように、ｔｂｏｘ関数への入力がoffset3およびoffset4によって置換された１回目のＣＭＥＡプロセスの適用を受ける。この１回目の実行に用いられる鍵は第２のＣＭＥＡ鍵である。ステップ４０６で、中間暗号文が生成される。次に、ステップ４０８で、中間暗号文は、図３の説明に関して上記で述べたように、ｔｂｏｘ関数への入力がoffset1およびoffset2によって置換された２回目のＣＭＥＡプロセスの適用を受ける。この２回目の実行に用いられる鍵は第１のＣＭＥＡ鍵である。最後に、ステップ４１０で、平文が出力される。第１から第４までのオフセットは、図３に関して上記で説明した通りである。
【００３２】
図５は、メッセージが暗号化または復号を必要とするかどうかを認識するための設備、および、適当な暗号化または復号を実行する設備を備えた、本発明によるメッセージ伝送および暗号化／復号を実行するための無線電話機５００を示す図である。電話機５００は、トランシーバ５０２、入出力（Ｉ／Ｏ）インタフェース５０４、暗号化／復号プロセッサ５０６、および鍵ジェネレータ５０８を有する。鍵ジェネレータ５０８は、鍵生成のために記憶されている秘密データを受け取り使用する。記憶されている秘密データは、好ましくは、ＥＥＰＲＯＭやフラッシュメモリのような不揮発性メモリ５１０に記憶される。鍵ジェネレータはまた、オフセットを生成するために用いられる秘密値Ｋ1〜Ｋ8も生成する。Ｋi（ｉは奇数）は１５ビット値であり、Ｋi（ｉは偶数）は１６ビット値である。鍵ジェネレータは、いくつかの当業者に周知の技術のうちのいずれを用いて秘密値Ｋ1〜Ｋ8を生成するように設計されることも可能である。秘密値のセットＫ1〜Ｋ8は、好ましくは、各無線電話呼ごとに生成され、その値Ｋ1〜Ｋ8は、その呼を通じて一定であることが好ましい。鍵ジェネレータ５０８は、生成された鍵および秘密値Ｋ1〜Ｋ8をメモリ５１２に格納する。暗号化／復号プロセッサはまた、鍵ジェネレータ５０８から受け取った鍵、オフセットの生成に用いる初期化値、オフセットを生成するために用いられる暗号文メッセージオクテット、および、ｔｂｏｘ関数を静的テーブルとして実装したい場合に生成され用いられる静的ｔｂｏｘテーブルを記憶するためのメモリ５１４を有する。電話機５００はまた、メッセージジェネレータ５１６を有する。メッセージジェネレータ５１６は、暗号化／復号プロセッサ５０６によって暗号化されトランシーバ５０２によって送信されるメッセージを生成する。
【００３３】
内部で生成されたメッセージが電話機５００によって暗号化され送信される場合、メッセージは、メッセージジェネレータ５１６からＩ／Ｏインタフェース５０４へ送られる。Ｉ／Ｏインタフェース５０４は、そのメッセージを、暗号化されるべき内部生成メッセージとして識別し、その識別とともに、暗号化／復号プロセッサ５０６へ送る。暗号化／復号プロセッサ５０６は、鍵ジェネレータ５０８から１つ以上の鍵を受け取り、それを用いてメッセージを暗号化する。好ましくは、暗号化／復号プロセッサ５０６は、鍵ジェネレータ５０８から２個の鍵を受け取り、それを用いて、図２および図３に関して上記で説明したようなｔｂｏｘ関数の改善された使用法を用いて２回のＣＭＥＡ暗号化を実行する。
暗号化／復号プロセッサ５０６がメッセージジェネレータ５１６から平文メッセージを受け取ると、メッセージは、鍵ジェネレータ５０８から受け取った第１ＣＭＥＡ鍵を用いた修正ＣＭＥＡプロセスの１回目の適用を受ける。１回目のプロセスにおけるｔｂｏｘ関数への入力は置換を受ける。使用される関数はtbox（（（ｘoffset1）＋offset2）ｍｏｄ  ２５６）である。１回目が完了すると、中間暗号文が生成されメモリ５１４に格納される。次に、中間暗号文は、第２ＣＭＥＡ鍵を用いた修正ＣＭＥＡプロセスの２回目の適用を受ける。２回目のプロセスにおけるｔｂｏｘ関数への入力は、同様の置換を受ける。すなわち、使用される関数はtbox（（（ｘoffset3）＋offset4）ｍｏｄ  ２５６）である。offset1、offset2、offset3、およびoffset4は、好ましくは、それぞれ８ビット値である。オフセット値のセットは、好ましくは、無線呼の各メッセージごとに作成される。
【００３４】
ｔｂｏｘ置換のための４個の秘密オフセット値は、呼のｎ番目のメッセージに対して以下の公式を用いて作成される。
offset1n＝（（（２Ｋ1＋１）＊ＣＴn-1＋Ｋ2）ｍｏｄ  ６４Ｋ）＞＞８
offset2n＝（（（２Ｋ3＋１）＊ＣＴn-1＋Ｋ4）ｍｏｄ  ６４Ｋ）＞＞８
offset3n＝（（（２Ｋ5＋１）＊ＣＴn-1＋Ｋ6）ｍｏｄ  ６４Ｋ）＞＞８
offset4n＝（（（２Ｋ7＋１）＊ＣＴn-1＋Ｋ8）ｍｏｄ  ６４Ｋ）＞＞８
ただし、Ｋi（ｉは奇数）は１５ビットの秘密値であり、Ｋi（ｉは偶数）は１６ビットの秘密値であり、すべてこの呼に対して一定である。ＣＴn-1の値は、（ｎ−１）番目の暗号文メッセージの最初の２オクテットであり、ＣＴ0は、好ましくは、呼の最初のメッセージに対する秘密の１６ビット初期化値で置換される。上記の説明でも、ｍｏｄ  ６４Ｋは、通常の計算機科学用語に従って、ｍｏｄ（６５，５３６）を意味すると理解すべきである。１回目のＣＭＥＡ関数の適用に第１および第２のオフセット値を使用し、２回目のＣＭＥＡ関数の適用に第３および第４のオフセットを使用することにより、ｔｂｏｘエントリの位置は単に各メッセージごとにだけでなく、単一のメッセージの暗号化の各実行ごとにシフトする。
【００３５】
２回目が完了すると、最終暗号文が生成されてメモリ５１４に格納され、また、送信のためにＩ／Ｏインタフェース５０４へ、および、トランシーバ５０２へ転送される。
【００３６】
暗号化されたメッセージが復号のために電話機５００によって受信されると、トランシーバ５０２はそれをＩ／Ｏインタフェース５０４に送る。Ｉ／Ｏインタフェースはそのメッセージを暗号化されたメッセージとして識別し、その識別を、メッセージととともに、暗号化／復号プロセッサ５０６へ送る。暗号化／復号プロセッサ５０６は、鍵ジェネレータ５０８から１つ以上の鍵を受け取り、好ましくは図４に関して上記で説明したような２回のＣＭＥＡ復号プロセスを用いて、メッセージを復号する。暗号化／復号プロセッサ５０６がＩ／Ｏインタフェース５０４から暗号文を受け取ると、暗号文は、修正ＣＭＥＡプロセスの１回目の適用を受ける。ｔｂｏｘ関数への入力は、offset3およびoffset4を用いた置換を受ける。この１回目に用いられる鍵は第２ＣＭＥＡ鍵である。中間暗号文が生成されメモリ５１４に格納される。次に、中間暗号文は修正ＣＭＥＡプロセスの２回目の適用を受ける。ｔｂｏｘ関数への入力は、offset1およびoffset2を用いた置換を受ける。この２回目に用いられる鍵は第１ＣＭＥＡ鍵である。最後に、暗号化／復号プロセッサ５０６は平文を出力し、平文メッセージをＩ／Ｏインタフェース５０４へ送る。Ｉ／Ｏインタフェース５０４はそれを最終的な使用のために転送する。
【００３７】
速度要求およびメモリ制約に応じて、電話機は、ｔｂｏｘを、関数として、あるいは、静的テーブルとして実装するように設計されることが可能である。静的テーブルとしてのｔｂｏｘの実装によりメモリの増大が必要となるが速度も増大する。また、電話機５００を、ｔｂｏｘ関数への入力がoffset1およびoffset2を用いた置換を受ける１個のｔｂｏｘ関数を使用する１回だけのＣＭＥＡプロセスを実装するように設計することも可能である。
【００３８】
ＣＭＥＡプロセスの上記の強化は、大幅にセキュリティを向上させるが、処理あるいはシステムの資源をあまり増大させないため、無線電話システムのような環境での使用に適している。このようなシステムにおける移動機は、処理電力が制限されることが多い。
【００３９】
本発明について、現在好ましい環境に関して説明したが、当業者には認識されるように、上記の説明および請求の範囲に従って、さまざまな実装が使用可能である。
【図面の簡単な説明】
【図１】従来技術のＣＭＥＡ鍵生成プロセスと、ＣＭＥＡに基づく暗号化の実装におけるその利用法の特徴を説明する流れ図である。
【図２】ｔｂｏｘ関数を用いるＣＭＥＡ暗号化法を説明する流れ図である。ｔｂｏｘ関数は、本発明に従って第１および第２のオフセットによって置換されたｔｂｏｘ関数への入力を有するｔｂｏｘルックアップを含む。
【図３】複数回のＣＭＥＡを用いる強化ＣＭＥＡ暗号化法を説明する流れ図である。各ＣＭＥＡ実行はｔｂｏｘ関数を使用する。ｔｂｏｘ関数はｔｂｏｘルックアップを含み、ｔｂｏｘ関数への入力は、本発明に従って、１回目のＣＭＥＡ実行中は第１および第２のオフセットによって置換され、２回目の実行中は第３および第４のオフセットによって置換される。
【図４】強化ＣＭＥＡプロセスによって暗号化された暗号文を本発明に従って復号する方法を説明する流れ図である。
【図５】
本発明による強化ＣＭＥＡ暗号化を用いた暗号化／復号電話機を説明する流れ
図である。
【図１】
0003792657.tif 000002
【図２】
0003792657.tif 000003
【図３】
0003792657.tif 000004
【図４】
0003792657.tif 000005
【図５】
0003792657.tif 000006