(57)【特許請求の範囲】
【請求項１】
暗号化アルゴリズムの使用において、暗号キーＫc（ｘ）を演算することによって暗号化キーＫ'c（ｘ）を計算する通信装置（２００）であって、
暗号キーＫc（ｘ）を取得する手段と、
最大暗号キー長Ｌを判定する手段と、
最大使用可能暗号キー長Ｌmaxを判定する手段と、
多項式ｇ1（ｘ）を取得する手段と、
前記暗号化キーＫ'c（ｘ）の開始点を拡散させるための多項式ｇ2（ｘ）を取得する手段と、
前記暗号化キーＫ'c（ｘ）＝ｇ2(L)（ｘ）［Ｋc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）］を計算する手段と、
１つ以上の多項式を記憶するメモリ素子（２０２）と、
それぞれが第１入力、第２入力及び出力を有する複数のスイッチング素子（２０４）であって、前記スイッチング素子の第１入力は前記メモリ素子（２０２）に接続されている、複数のスイッチング素子（２０４）と
それぞれが入力及び出力とを有する複数の遅延素子（２０６）であって、前記複数の遅延素子の１つの出力は、前記スイッチング素子の第２入力に接続されている、複数の遅延素子（２０６）と、
それぞれが第１入力と、第２入力及び出力とを有する複数の加算機能（２０８）とを備え、
前記複数の加算機能の第１入力は、前記複数の遅延素子の１つ以外のすべての出力に接続され、
前記複数の加算機能の第２入力は、前記複数のスイッチング素子の１つ以外のすべての出力に接続され、
前記複数の加算機能の出力は、前記複数の遅延素子の１つ以外のすべての入力に接続されている
ことを特徴とする通信装置。
【請求項２】
前記複数のスイッチング素子は、ＡＮＤゲートである
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記メモリ素子は、多項式ｇ1（ｘ）を記憶し、
0004668428.tif 000005
ここで、ｗはワード長であり、Ｌは前記暗号キーのワード数である
ことを特徴とする請求項１に記載の通信装置。
【請求項４】
前記メモリ素子は、多項式ｇ2（ｘ）を記憶し、
0004668428.tif 000006
ここで、ｗはワード長であり、Ｌは前記暗号キーのワード数であり、Ｌmaxは前記暗号化キーＫ'c（ｘ）で使用可能な最大ワード数である
ことを特徴とする請求項３に記載の通信装置。
【請求項５】
前記複数の遅延素子は、最初に前記暗号キーＫc（ｘ）がロードされる
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
前記多項式ｇ1（ｘ）は、固定ストリングの第１ｗ（Ｌmax−Ｌ）係数を有している
ことを特徴とする請求項５に記載の通信装置。
【請求項７】
前記多項式ｇ2（ｘ）は、固定ストリングの最終ｗＬ係数を有している
ことを特徴とする請求項５に記載の通信装置。
【請求項８】
前記複数の遅延素子の最終ｗＬビットは、ｗ（Ｌmax−Ｌ）シフト後のＫc（ｘ）  ｍｏｄ  ｇ1（ｘ）との結果を記憶する
ことを特徴とする請求項７に記載の通信装置。
【請求項９】
前記複数の遅延素子は、加算的ｗＬシフト後の前記暗号化キーＫ'c（ｘ）を記憶する
ことを特徴とする請求項８に記載の通信装置。
【請求項１０】
前記複数の遅延素子は、シフトレジスタである
ことを特徴とする請求項１に記載の通信装置。
【請求項１１】
データを暗号化するための暗号化キーＫ'c（ｘ）を、取得手段、判定手段及び計算手段を備える通信装置が計算する方法であって、
前記通信装置の取得手段が、暗号キーＫc（ｘ）を取得する工程（４０２）と、
前記通信装置の判定手段が、最大暗号キー長Ｌを判定する工程（４０４）と、
前記通信装置の判定手段が、最大使用可能暗号キー長Ｌmaxを判定する工程と、
前記通信装置の取得手段が、多項式ｇ1（ｘ）を取得する工程（４０６）と、
前記通信装置の取得手段が、前記暗号化キーＫ'c（ｘ）の開始点を拡散させるための多項式ｇ2（ｘ）を取得する工程（４０８）と、
前記通信装置の計算手段が、前記暗号化キーＫ'c（ｘ）を計算する工程（４１０）とを備え、
ここで、Ｋ'c（ｘ）＝ｇ2(L)（ｘ）［Ｋc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）］である
ことを特徴とする方法。
【請求項１２】
前記通信装置の選択手段が、Ｌに基づいて、前記多項式ｇ2（ｘ）を選択する工程と
を更に備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
0004668428.tif 000007
かつ、前記多項式ｇ1（ｘ）の最高次数はｗＬである
ことを特徴とする請求項１２に記載の方法。
【請求項１４】
0004668428.tif 000008
であることを特徴とする請求項１３に記載の方法。
【請求項１５】
ｇ1（ｘ）の第１ｗ（Ｌmax−Ｌ）は、固定ストリングである
ことを特徴とする請求項１４に記載の方法。
【請求項１６】
ｇ2（ｘ）の最終ｗＬ係数は、固定ストリングである
ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記計算する工程を実行する前記計算手段は、それぞれが第１入力、第２入力及び出力を有する複数のＡＮＤゲート、複数の遅延素子、複数の加算機能、及び１つ以上の多項式を記憶するメモリ素子に接続され、
前記複数のＡＮＤゲートは、それぞれが第１入力、第２入力及び出力を有し、前記複数のＡＮＤゲートの第１入力は、前記メモリ素子に接続されており、
前記複数の遅延素子は、それぞれが入力及び出力を有し、前記複数の遅延素子の１つの前記出力は前記複数のＡＮＤゲートの第２入力に接続され、
前記複数の加算機能は、それぞれが第１入力、第２入力及び出力を有し、
前記加算機能の第１入力は、前記複数の遅延素子の１つ以外のすべての出力に接続され、
前記加算機能の第２入力は前記複数のＡＮＤゲートの１つ以外のすべての出力に接続され、
前記加算機能の出力は前記複数の遅延素子の１つ以外のすべての入力に接続される
ことを特徴とする請求項１２に記載の方法。
【請求項１８】
前記通信装置の初期化手段が、前記暗号化キーＫc（ｘ）で前記遅延素子を初期化する工程を更に備え、
前記複数のＡＮＤゲートの前記第１入力を前記ｇ1（ｘ）多項式の係数に初期化し、
前記ＡＮＤゲートの前記第２入力をゼロに初期化する
ことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記複数の遅延素子は、シフトレジスタである
ことを特徴とする請求項１７に記載の方法。
【請求項２０】
２つの通信装置間で暗号化データを通信するシステムであって、
第１暗号キー長ＬAmaxを有する第１通信装置（１００）と、
第２暗号キー長ＬBmaxを有する第２通信装置（１０２）と、
最大暗号キー長Ｌを判定する手段とを備え、Ｌは、１≦Ｌ≦ｍｉｎ｛ＬAmax，ＬBmin｝であり、
前記第１通信装置は、
多項式ｇ1（ｘ）とｇ2（ｘ）を取得する手段（２０４）と、
暗号関数Ｋc（ｘ）を取得する手段（２０６）と、
暗号化キーＫ'c（ｘ）を計算する手段（２０４、２０６、２０８）とを備え、
ここで、Ｋ'c（ｘ）＝ｇ2(L)（ｘ）［Ｋc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）］である
ことを特徴とするシステム。
【請求項２１】
前記暗号化キーＫ'c（ｘ）を計算する手段は、
それぞれが第１入力、第２入力及び出力を有する複数のＡＮＤゲートと、前記複数のＡＮＤゲートの第１入力は、１つ以上の多項式を記憶するメモリ素子に接続されており、
それぞれが入力及び出力を有する複数の遅延素子と、前記複数の遅延素子の１つの前記出力は前記複数のＡＮＤゲートの第２入力に接続され、それぞれが第１入力、第２入力及び出力を有する複数の加算機能とを備え、前記加算機能の第１入力は、前記複数の遅延素子の１つ以外のすべての出力に接続され、前記加算機能の第２入力は前記複数のＡＮＤゲートの１つ以外のすべての出力に接続され、前記加算機能の出力は前記複数の遅延素子の１つ以外のすべての入力に接続される
ことを特徴とする請求項２０に記載のシステム。
【請求項２２】
前記複数の遅延素子は、前記暗号キーＫc（ｘ）が最初にロードされる
ことを特徴とする請求項２１に記載のシステム。
【請求項２３】
前記多項式ｇ1（ｘ）とｇ2（ｘ）を取得する手段は、前記第１通信装置内に含まれるメモリ素子から前記多項式を検索する
ことを特徴とする請求項２１に記載のシステム。
【請求項２４】
0004668428.tif 000009
であることを特徴とする請求項２３に記載のシステム。
【請求項２５】
0004668428.tif 000010
であることを特徴とする請求項２４に記載のシステム。
【請求項２６】
前記遅延素子の最終ｗＬビットは、ｗ（Ｌmax−Ｌ）シフト後のＫc（ｘ）  ｍｏｄ  ｇ1（ｘ）の結果を記憶する
ことを特徴とする請求項２５に記載のシステム。
【請求項２７】
前記複数の遅延素子は、加算的ｗＬシフト後の前記暗号化キーＫ'c（ｘ）を記憶する
ことを特徴とする請求項２６に記載のシステム。
【請求項２８】
前記複数の遅延素子は、シフトレジスタである
ことを特徴とする請求項２１に記載のシステム。
【発明の詳細な説明】
【０００１】
背景
本発明は暗号化に関するものであり、特に、暗号化アルゴリズムで使用する暗号化キーを安全確保して判定し、かつ制御可能にする方法及び装置に関するものである。通信システムでは、プライバシ及びデータ完全性を保証するために送信前にデータは通常暗号化される。データの暗号化は、暗号化アルゴリズムで行われる。暗号化アルゴリズムは、他のデータ、演算処理及び／あるいは暗号化を実行する他の手段を使用して送信データを処理するあるいは符号化する。例えば、暗号化アルゴリズムは、暗号化キーとして知られるデータ変数を利用し、この暗号化キーは、本明細書では、その初期化処理では変数Ｋ'cとして参照する。暗号化キーは、暗号キーあるいは秘密キーの一部から生成され、本明細書では、この暗号キーあるいは秘密キーをＫcとして参照し、Ｋcはデータの暗号化及び解読のために受信装置及び送信装置の両方で既知である。
【０００２】
各国は、暗号化ソフトウェア及びハードウェアに制限されない、データ暗号化及びデータ送信で使用される通信部品及び装置の輸出を規制している。このような輸出の規制は、各国によって様々である。特に、輸出する装置で利用可能な暗号キー長の最大許容キー長は各国で規制している。暗号化データを送受信するユーザは、最大限、つまり、セキュリティを最大限にするために、最長暗号キーを使用できることを望んでいる、しかしながら、これらのユーザは、暗号キーの国の規制による制限を受けている。
【０００３】
現在の技術では、暗号キーＫcのキー長が１から１６０バイト（８ビットから１２８０ビット）の間となるように想定している。各国は、典型的には、最大許容暗号キー長を、例えば、７バイト（５６ビット）に制限している。これ以上の暗号キー長にすると、製造者は輸出許可書を適用しなければならない。通信装置、例えば、セルラー電話は、典型的には、適用可能な輸出規制の下で特定装置に対して許容される最大暗号キー長を利用している。この最大暗号キー長は、国の規制を完全に補償するためにユーザが変数を容易に操作することを防止するように記憶されなければならない。例えば、この変数は、リードオンリメモリ（ＲＯＭ）に記憶することができる。しかしながら、製造の観点からは、多くの国で動作することが可能な通信装置を製造することが望ましく、これによって、カスタム化を回避し、かつ様々な地域で同一の通信装置をユーザに使用させることが可能になる。製造者は、様々な国で設定される異なる規制を満足する標準暗号化方法を有する国際製品を製造することが好ましく、かつハイレベルなデータセキュリティを提供することが好ましい。
【０００４】
現状では、暗号化キーＫ'cは、マスタクロックのような他の汎用変数とともに、暗号化アルゴリズムの初期化において使用される。暗号化キーＫ'cは、以下の式に従って、暗号キーＫcと、ＲＡＮＤで示される汎用乱数を利用する。
【０００５】
0004668428.tif 000002
【０００６】
ここで、Ｌは１≦Ｌ≦ｍｉｎ｛ＬAmax｝，ＬBmin｝バイトであり、
また、ＲＡＮＤ［Ｌ．．．１５］はＲＡＮＤがＬから１５バイトであることを示している。
【０００７】
説明上、Ｌmaxバイト中の最大使用可能暗号化キー長は１６バイトであると仮定するが、別の暗号化キー長も使用することができる。
【０００８】
上述の式から示されるように、暗号化キーＫ'cは、乱数を暗号キーＫcの末尾に付加することによって生成され、暗号化キー長、即ち、本例の場合、１６バイトに対して利用可能なすべてのバイト量が得られる。変数Ｌは、それぞれが異なる国の規制によって製造された第１通信装置Ａの暗号キー長ＬAmaxと第２通信装置Ｂの暗号キー長ＬBmaxの両方で許容される最小暗号キー長を示している。換言すれば、暗号化キーＫ'cの計算で使用される暗号キー長は、第１通信装置Ａ及び第２通信装置Ｂによって使用できる２つの暗号キー長の小さい方である。両装置は、最小キー長の暗号化通信を使用することができるばかりか、一方の装置は最大キー長の暗号化通信を使用することができる。
【０００９】
暗号化キーＫ'cを生成する上述の式での１つの問題は、暗号化アルゴリズムを実現するハードウェアが、Ｌmaxのプリセット値を無効にするソフトウェアによって変更されないことを補償することが難しいことである。また、汎用のＲＡＮＤ変数は、有効キー長が完全に制限されないこと、即ち、Ｋ'cは最大有効キービットを有することを達成するために、誤って使用される可能性がある、
別の解決策は、ソフトウェアによる暗号化キー長の変更を防止するために通信装置のメモリ内の暗号化キーＫ'cに対して提供される空間をＬバイトに削減することである。これは、利用可能総バイト量から、ＲＡＮＤを無視した暗号キーＫ'cのＬバイト分を差し引いて「マスクアウト」することによって達成することができる。例えば、この場合、最大暗号化キー長は１６と想定されるので、１６−Ｌバイトが「マスクアウト」される、換言すれば、１６−Ｌバイトは０あるいは別の固定ストリングに置換される。その結果、暗号化キーＫ'cは、最初のＬバイトに対しＫcと、次の１６−Ｌバイト（１２８−８Ｌビット）に対し０あるいはいくつかの固定ストリングから構成されることになる。
【００１０】
しかしながら、Ｌバイト値に対しては、この解決策では、少なくとも２つの好ましくない問題が生じる。１つ目は、暗号化アルゴリズムの初期化中に、暗号化アルゴリズムは暗号化キーＫ'cをシャッフルし、かつ暗号化アルゴリズムの開始点を判定する。強力な暗号化を達成するためには、シャッフリング期間は長くする必要がある、これは、１６−Ｌバイト中の長い固定ストリングの「非乱数化」のためであり、ここでＬは小さい。そのため、暗号化キーの「乱数」部分の長さは短くなるので、良好な暗号化を達成するために短い「乱数」ビット長を保証する暗号化キーの開始点の判定においては、暗号化アルゴリズムは理想的にシャッフリング期間、あるいは反復数が増える。しかしながら、実行可能な反復数は、送信／受信のスイッチングの厳格なタイミング条件設定によって制限されている。つまり、これは、暗号化の解読が容易となるリスクが発生する。
【００１１】
２つ目は、未認可の人間の暗号化データの解読の試行あるいは「暗号アタック」の実行は、Ｌバイトの暗号キーＫcの検討あるいは解析だけで済むということである。換言すれば、未認可の人間は、小さい値のＬに対して使用可能な最大暗号化キー長、この場合、１６バイトよりもより小さな値Ｌに対し、Ｌバイト中のデータの取り得る組み合わせを解析するだけで済むことである。これは、未認可の解読のリスクが発生する。
その他の多くの文献では、暗号化技術に関係するキーシーケンスを演算する技術を記載している。例えば、McNairによる米国特許第５，２７８，９０５号は、例えば、暗号化処理自身でキーシーケンスの生成及び記憶を時間多重することによって、プロセッサの利用に適合するキーシーケンス生成のための技術を記載している。同様に、ＷＯ９７／０５７２０号は、キーを生成する技術を記載し、これは、暗号作成キーの空間を最初に削除して、その削除された空間のキーの空間を増やすことによってキーを生成する。そして、削減されることで増やされた空間のキーは、情報の暗号化のために使用される。特定空間の削減処理及び処理の増大がある暗号化情報を受信する人間は、キーを生成する方法によって、作業要素を大幅に削減して受信情報を解読することができることになる。しかしながら、これらの文献はいずれも、暗号化アルゴリズムでの開始点に関係する上述の問題を解決しない。
【００１２】
一般的には、好適な暗号化アルゴリズムは、その入力として、例えば、バイナリ環境で２8L種類の開始点の１つを受信する。ここで、Ｌが１６バイトであると、好適な暗号化アルゴリズムはバイナリ環境で２128種類の開始点を受信する。８Ｌの組み合わせのそれぞれのＫ'cビットは、２8L開始点の１つを定義する。暗号化データの解読を試行する未認可の人間は、２8Lの組み合わせ以上の試行を行わなければならない。いくつかの開始点は、国の規制で制限しているキー長が利用可能である。例えば、ある国が暗号キー長を最大５バイト（４０ビット）に制限している場合は、暗号化アルゴリズムの開始点を削減し、ここでは、２40の開始点となる。また、２8L種類の開始点を記憶するために利用可能な空間あるいはメモリを考慮する場合、現在の技術は、通常、利用可能な全メモリ領域を、その数を減らした開始点を記憶するメモリの特定領域に制限し、メモリの残りの領域は使用しないようにしている。残りのメモリ位置は一定となる。つまり、暗号化データの解読を試行する未認可の人間は、２40の開始点の解析だけで済み、未認可の人間は、メモリ内に位置している開始点がどこにあるかを把握することができる。
要約
従って、上述の問題を解決するために、本発明は、暗号化キーＫ'cが生成される場合に、取り得る全開始点を２8Lの開始点のサブセットに制限する方法を説明し、ここで、サブセットは、利用可能な全メモリあるいは空間を用いて新規なＫcが生成される毎に異なるものとなっている。つまり、新規な暗号化キーＫ'cの生成毎に同一位置に開始点が記憶されることは決してない。
【００１３】
加えて、本発明は、暗号化データに暗号キーを使用する通信システム及び暗号装置において、暗号キーＫcの生成器間のインタフェースを提供する。このインタフェースは、暗号化キーＫ'cの計算に加算あるいはモジューロ機能を含ませることによって国内規格で設定される有効キー長に適合する制御可能でかつ安全にキー長を制限する方法を提供する。
【００１４】
また、本発明は、異なる最大暗号キー長を設定する異なる国で規定される２つの装置間の通信を提供する。
【００１５】
更に、本発明は、暗号化キーＫ'cを提供し、ここで、暗号装置の暗号化アルゴリズムへの入力に対する開始点の取り得る組み合わせのすべてにわたって「乱数性」が及んでいる。
【００１６】
本発明の上述及び他の効果は、暗号化アルゴリズムの使用において暗号化キーを判定する通信装置によって１つの形態で実行される。通信装置は、１つ以上の多項式、それぞれが第１入力、第２入力及び出力を有する複数のスイッチング素子と、このスイッチング素子の第１入力はメモリ素子に接続されており、更に、それぞれが入力及び出力を有する複数の遅延素子と、複数の遅延素子の１つの出力は複数のスイッチング素子の第２入力に接続されており、それぞれが第１入力、第２入力及び出力を有する複数の加算あるいはモジューロ機能とを備え、モジューロ機能の第１入力は１つの遅延素子の出力以外のすべての出力に接続され、モジューロ機能の第２入力は１つのスイッチング素子の出力以外のすべての出力に接続されており、モジューロ機能の出力は１つの遅延素子の入力以外のすべての入力に接続されている。複数の遅延素子は、シフトレジスタの形態であっても良い。
【００１７】
本発明の上述及び他の効果は、暗号化アルゴリズムの使用に対する暗号化キーＫ'c（ｘ）の別の形態の計算方法で実現される。この方法は、暗号キーＫc（ｘ）を取得する工程と、最大暗号キー長Ｌを判定する工程と、最大利用可能暗号化キー長Ｌmaxを判定する工程と、その最高次数がＬmaxである多項式ｇ1（ｘ）を取得する工程と、暗号化キーＫ'c（ｘ）の開始点を拡散するための多項式ｇ2（ｘ）を取得する工程と、暗号化キーＫ'c（ｘ）を計算する工程とを備え、ここで、Ｋ'c（ｘ）＝ｇ2(L)（ｘ）［Ｋc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）］である。
詳細説明
以下の説明では、説明の目的のためで、かつ限定の目的ではなく、本発明の全体を理解するために、特定回路、回路構成要素、技術等で特定詳細を説明する。しかしながら、本発明がこれらの特定詳細とは異なる別の実施形態で実施されても良いことが当業者に明らかであろう。他の例では、周知の方法、装置及び回路の詳細説明は、本発明の説明をあいまいにしないために省略する。
【００１８】
規格キー長への適合を補償し、かつ２つ以上の装置間のデータ送信の暗号化を改善するために、以下の式に従う本発明によって、暗号化キーＫ'cを判定あるいは計算し、暗号化アルゴリズムに入力する。
【００１９】
Ｋ'c（ｘ）＝ｇ2(L)（ｘ）［Ｋc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）］    （式２）
ここで、Ｌはバイト当たりの最大制限暗号キー長であり、かつ１≦Ｌ≦ｍｉｎ｛ＬAmax，ＬBmax｝であり、更に、すべてのＬバイトに対しｄｅｇ（ｇ1（ｘ））＋ｄｅｇ（ｇ2（ｘ））≦ｗであり、ここで、ｗはワード長ビットである。
【００２０】
暗号化キーＫ'cは、説明上、上述のような多項式表現で記述している。
【００２１】
式２で示されるように、暗号化キーＫ'cは、暗号キーＫcの一部に基づいている。暗号キーＫcは、任意の周知の方法あるいは後述の方法で取得することができる。例えば、暗号キーＫcは、暗号化及び解読を容易にするために第３の装置から装置Ａ及び装置Ｂへ別々に通信することができる。選択的には、装置Ａは暗号キーＫcを有し、記憶することができ、更に、装置Ｂへこれを通信することができる。現在の技術では、暗号キー長を１から１６０バイト（８から１２８０ビット）長の間に想定している。しかしながら、装置Ａ及び装置Ｂを輸出する各国は、最大暗号キー長にある制限を設定している。例えば、装置Ａは最大キー長が５バイト（４０ビット）で通信でき、装置Ｂは最大キー長が７バイト（５６ビット）で通信できる。装置Ａが装置Ｂへとデータを送信したいことが一旦判定されると、装置Ａ及び装置Ｂは両者が通信可能な最大キー長Ｌの「取り決め」を行う。具体的には、装置Ａ及び装置Ｂは互いにデータを送受信し、各装置の最大キー長を特定する。この例では、ＬAmaxは４０ビットであり、ＬBmaxは５６ビットであるので、装置同士は４０ビット未満のキー長を最大暗号キー長Ｌとして通信することに「合意」する。
【００２２】
つまり、本発明に従えば、最大許容キー長は、装置Ａ及び装置Ｂ間の最大キー長の最小値に制限される。このキー長の制限は、加算あるいはモジューロ機能及び多項式ｇ1（ｘ）の選択を介する暗号化において実行される。
【００２３】
本実施形態では、ｇ1（ｘ）は、以下の多項式として表現することもできる。
【００２４】
0004668428.tif 000003
【００２５】
ここで、ｗはワード長であり、Ｌは暗号キーのワード数である。
【００２６】
多項式ｇ1（ｘ）は、多項式の最高次数が最大許容キー長ビットとなるように生成される。例えば、ワード長が８ビットで、ワード数が５である場合は、ｇ1（ｘ）の最高次数は４０となる。つまり、多項式ｇ1（ｘ）は、例えば、以下のように表現することができる。
【００２７】
ｇ1（ｘ）＝Ａｘ40＋Ｂｘ39＋．．．＋Ｄｘ＋Ｅ  Ａ≠０    （式４）
加算あるいはモジューロ演算は、キー長がｗＬビットになることを補償し、これは、モジューロの最高次数が分母の最大次数を越えることができないからである。この例では、演算Ｋc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）は、４０未満、即ち、３９未満となり得る最大次数となる結果となる。この結果は、最大許容ビット長を満たす４０ビットを有している。
【００２８】
多項式ｇ1（ｘ）は、例えば、与えられたＬに対し適切なｇ1（ｘ）を識別するテーブルから得ることができる。このテーブルは、利用可能なｇ1（ｘ）多項式の安全が確保されるようにハードウェア内に配置されていることが好ましい。つまり、ｇ1（ｘ）多項式は、国の規制を確保するために不正使用からプロテクトされている。テーブルはｇ1（ｘ）多項式を記憶するあるいは取得する形式であるが、当業者に周知の他の形式で使用されても良いことが認識されるであろう。
【００２９】
上述したように、好適な暗号化アルゴリズムは、その入力として、バイナリ環境で２8L種類の開始点を受信する、ここで、Ｌはバイト単位の最大暗号キー長である。８Ｌ  Ｋ'cビットの取り得る組み合わせのそれぞれは、２8Lの開始点の内の１つの開始点を定義する。暗号化データを解読する未認可の人間は、２8Lの組み合わせ以上を試行しなければならない。
【００３０】
例えば、Ｌが１６バイトである場合、好適な暗号化アルゴリズムは、その入力として、バイナリ環境で２128種類の開始点の内の１つを受信する。１２８Ｋ'cビットの取り得る組み合わせのそれぞれは、２128の開始点の内の１つを定義する。暗号化データを解読する未認可の人間は、２128以上の組み合わせを試行しなければならない。
【００３１】
上述の装置Ａ及び装置Ｂの例では、暗号化アルゴリズムは開始点数を削減する、これは、Ｌの値が２40の開始点とより小さくなるからである。現在の技術は、典型的には、利用可能な全メモリ容量（この場合、２40種類の開始点）を、その数が削減された開始点を記憶するためのメモリの特定領域に制限し、メモリの残りの部分は使用しない。残りのメモリ位置は一定になっている。つまり、現在の技術下の例では、暗号化データを解読する未認可の人間は、２40の開始点を解析するだけで済み、未認可の人間はメモリにそのような開始点がどこに位置しているかを把握することになる。
【００３２】
換言すれば、Ｋc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）から単独で暗号キーＫ'c（ｘ）が得られる場合、Ｋ'c（ｘ）は現在の技術に従うメモリの特定領域に記憶される。他のビットは、ゼロあるいはいくつか固定ストリングとなる。次に、開始点は取り得る開始点のすべての特定サブセットに配置される。しかしながら、暗号化の強度を向上するために、取り得るビットすべてにわたって開始点を持たすことが有効である。
【００３３】
ハミング距離は、２つのデータストリング中の異なるビット数を反映する値である。取り得る開始点にわたるハミング距離が大きくなると、暗号化は良好になる。開始点が常に特定サブセット位置に配置される場合、ハミング距離、つまり、暗号化は貧弱になる。本発明は、開始点間の最小距離が大きくなるように、特定サブセットビットを制限しないで、より効果的な方法で開始点を拡散させる方法及び装置を提供する。
【００３４】
この距離あるいは「拡散」を大きくする概念は、周知の技術である。例えば、誤り訂正符号化は、異なるアプリケーションに対してこの概念を使用している。つまり、取り得るビットレンジにわたって開始点を拡散するために、Ｋc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）の演算結果は、多項式ｇ2（ｘ）と乗算され、ここで、ｇ2（ｘ）多項式は、以下のようになる。
【００３５】
0004668428.tif 000004
【００３６】
ここで、ｗはワード長であり、Ｌは暗号キーのワード数であり、Ｌmaxは暗号化キーで使用可能な最大ワード数である。
【００３７】
ｇ2（ｘ）とＫc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）の演算結果との乗算は、全ビット領域にわたってＫc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）の演算結果を「拡散する」ことになる。適切なｇ2（ｘ）多項式は、従来より周知のＬに基づいて選択される。つまり、異なるキー長Ｌに対して、ｇ2（ｘ）多項式の異なる係数が、より有効な所望のハミング距離を達成するために選択される。値が小さいＬに対しては、係数群の１つが所望のハミング距離を達成する一方で、値が大きいＬに対しては、異なる係数群はより好適な所望のハミング距離を達成する。バイナリ環境では、ｇ2（ｘ）はＢＣＨ誤り訂正符号の多項式生成器として扱ってもよい。ｇ2（ｘ）多項式は、与えられるＬに対して適切なｇ2（ｘ）多項式に関連するテーブルのいずれかに記憶することもできる。このテーブルは、ｇ1（ｘ）が記憶されるテーブルと同じテーブルあるいは他のテーブル内にあっても良い。ｇ2（ｘ）多項式は、暗号装置のハードウェアあるいはソフトウェアのどちらかに記憶することもできる。テーブルは検索するｇ2（ｘ）多項式を記憶する形式であるが、当業者に周知の別の方法で使用されても良いことが認識されるであろう。選択的には、ｇ2（ｘ）多項式は、別の位置、即ち、暗号装置内に配置されていない位置でのメモリから取得されても良い。
【００３８】
Ｋ'c（ｘ）はこの乗算から得られる。Ｋ'c（ｘ）は、暗号化データを使用するために暗号化アルゴリズムに入力される。
【００３９】
図１は本発明に従って互いにデータを送信及び受信する移動通信装置１００、１０２を示している。装置１００、１０２は、セルラー電話あるいはコンピュータに限定されるものではなく、有線ハードあるいは無線装置の類であり得る。
【００４０】
図２は通信装置２００の詳細を示している。
【００４１】
通信装置２００は、メモリ素子２０２、ＡＮＤゲート２０４のような複数のスイッチング素子、複数の遅延素子２０６及び複数の加算あるいはモジューロ機能２０８を含んでいる。
【００４２】
メモリ素子２０２は多項式ｇ1（ｘ）を記憶している。メモリ素子２０２は、ルックアップテーブルあるいは他の構成の記憶情報であっても良い。また、メモリ素子２０２は、多項式ｇ2（ｘ）を記憶しても良い。選択的には、ｇ2（ｘ）は、通信装置２００の別の位置に記憶されても良く、あるいは通信装置２００へアクセス可能な外部の他の位置から取得されても良い。例示の目的のために、本明細書では、メモリ素子２０２は、ｇ1（ｘ）及びｇ2（ｘ）の両方を記憶しているものとして説明する。関数ｇ1（ｘ）及びｇ2（ｘ）は、特定係数、例えば、上述したような係数を有する多項式である。
【００４３】
スイッチング素子あるいはＡＮＤゲート２０４はそれぞれ、第１入力、第２入力及び１つの出力を有する。メモリ素子２０２はＡＮＤゲート２０４の第１入力に接続されている。各遅延素子２０６は、１つの入力と１つの出力を有している。遅延素子２０６は、シフトレジスタとして実現することができる。ＡＮＤゲート２０４ａの１つの出力は、第１遅延素子２０６ａの入力に接続されている。モジューロ機能２０８はそれぞれ、第１入力、第２入力及び１つの出力を有している。残りのＡＮＤゲート２０８の出力は、モジューロ機能２０８の第１入力に接続されている。すべての遅延素子２０６の出力は、最終遅延素子２０６ｂ以外は、モジューロ関数２０８の第２入力に接続されている。最終遅延素子２０６ｂの出力は、ＡＮＤゲート２０４の第２入力に接続されている。モジューロ機能２０８の出力は、第１遅延素子２０６ａ以外のすべての遅延素子２０６の入力に接続されている。
【００４４】
例示の説明のために、バイナリ環境を想定するが、本発明が別の符号表現に等価的に適用可能であることが当業者には明らかであろう。
【００４５】
まず、図１に示される通信装置１００、１０２は、上述したように、装置１００、１０２の両方が通信に使用できる最大暗号キー長Ｌを判定するための「取り決め」あるいは通信を両者間で行う。装置１００、１０２は、例えば、装置自身の最大暗号キー長を互いに交換する。次に、装置１００、１０２は、暗号キー長Ｌが異なる場合に、各装置で要求される２つの暗号キー長の内小さい方を選択することによって、最大暗号キー長Ｌに「合意」する。
【００４６】
図２を再度参照すると、ＡＮＤゲート２０４の第１入力は、メモリ素子２０２からのｇ1（ｘ）２次多項式となる。第１ｗ（Ｌmax−Ｌ）係数はゼロであり、最終ｗＬ係数は非ゼロの値となる。この場合は、ｗ≧１に対して、ｗはワード長であり、Ｌmax≧１に対して、Ｌは「取り決められた」暗号キーのワード数である。ＡＮＤゲート２０４の第２入力はゼロに初期化される。つまり、ＡＮＤゲート２０４の出力は、第１ｗ（Ｌmax−Ｌ）係数に対応する各ゲートに対してゼロである。最終ｗＬビットに対しては、ＡＮＤゲート２０４の出力は、最終ｗＬ係数に対応する各ゲートに対するｇ1（ｘ）多項式の係数の関数である。ｇ1（ｘ）に対する係数が０である場合、ＡＮＤゲート２０４は開放となる。逆に、ｇ1（ｘ）に対する係数が１である場合、ＡＮＤゲート２０４は閉じられる。
【００４７】
遅延素子２０６は、（図３のシフトレジスタ３０６ａに示されるように）暗号キーＫｃ（ｘ）の係数で初期化される。これらの係数及びＡＮＤゲート２０４の出力は、排他機能２０８に入力される。（これは、バイナリ環境の場合である。バイナリ環境以外の場合、これらの係数は、別の適切な加算機能に入力される。）ＡＮＤゲート２０４の初期入力はゼロと上述のｇ1（ｘ）係数のストリングである。排他機能２０８の出力は、第１ＡＮＤゲート２０６ａ以外のすべてのＡＮＤゲート２０６に入力される。最終遅延素子２０６ｂの出力は、すべてのＡＮＤゲート２０４の第２入力にフィードバックされる。次に、この処理は、利用可能な周期、クロックパルスあるいは他のタイミング機構に従って、データがシフトされる毎に繰り返される。
【００４８】
暗号キーＫc（ｘ）は、まず、遅延素子２０６（あるいは図３で３０６ａで示されるシフトレジスタ）に入力される。上述のように、計算は、暗号キーＫc（ｘ）を利用して実行される。暗号キーＫc（ｘ）は、遅延素子２０６からシフトされる。最終遅延素子２０６ｂの出力は、ＡＮＤゲート２０４が閉じられている位置のＡＮＤゲート２０４に入力される。ｗ（Ｌmax−Ｌ）シフトの完了後、（図３のシフトレジスタ３０６ｂで示されるような）遅延素子２０６は、最終的なｗＬの間隔でＫc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）の排他機能の結果を含むことになる。上述したように、この計算は、暗号キーＫc（ｘ）の最大キー長が、国が規制する最大許容キー長を越えないことを補償している。
【００４９】
ｗ（Ｌmax−Ｌ）シフトの完了後、ｇ2（ｘ）はＡＮＤゲート２０４に入力される。ｇ1（ｘ）に対して、ｇ2（ｘ）は、第１ｗ（Ｌmax−Ｌ）が非ゼロの数になり得り、かつ最終ｗＬがゼロである多項式である。上述の処理は、ｗＬ以上のシフトに対して継続する。排他機能から得られるｗＬビットは、全範囲にわたって拡散されている。遅延素子２０６の結果は（図３のシフトレジスタ２１０ｃに示されるように）、暗号キーＫ'c（ｘ）であり、これは、暗号化データに対する最適な暗号アルゴリズムに入力することができる。
【００５０】
例示のために、ｗは８、Ｌは５、Ｌmaxは１６であるとする。簡略化のために、ここでは、バイナリ環境とする。
【００５１】
図２を再度参照すると、ＡＮＤゲート２０４の第１入力は、メモリ素子２０２からのｇ1（ｘ）２次多項式となる。第１ｗ（Ｌmax−Ｌ）あるいは８８個の係数はゼロであり、かつ最終ｗＬあるいは４０個の係数は非ゼロの数である。ＡＮＤゲート２０４の第２入力はゼロに初期化される。つまり、ＡＮＤゲート２０４の出力は、最初の８８ビットに対応する各ゲートに対してゼロとなる。残りの４０ビットに対しては、ＡＮＤゲート２０４の出力は、その残りの４０ビットに対応する各ゲートに対するｇ1（ｘ）多項式の係数となる。ｇ1（ｘ）に対する係数が０である場合、ＡＮＤゲートは開放される。逆に、ｇ1（ｘ）に対する係数が１である場合、ＡＮＤゲートは閉じられる。
【００５２】
遅延素子２０６は、暗号キーＫc（ｘ）の係数で初期化される。これらの係数及びＡＮＤゲート２０４の出力は、排他機能２０８に入力される。（ＡＮＤゲート２０４の初期入力は、上述のゼロ及びｇ1（ｘ）のストリングである。）排他機能２０８の出力は、第１ＡＮＤゲート２０６ａ以外のすべてのＡＮＤゲート２０６に入力される。最終遅延素子２０６ｂの出力は、ＡＮＤゲート２０４が閉じられている位置のＡＮＤゲート２０４に入力される。そして、この処理は、データがシフトされる毎に繰り返される。
【００５３】
暗号キーＫc（ｘ）は、まず１２８個の遅延素子２０６に入力される（あるいは図３の３０６ａで示される１２８ビットシフトレジスタに入力される）。上述の計算は、暗号キーＫc（ｘ）を利用して実行される。暗号キーＫc（ｘ）は、遅延素子２０６からシフトされる。最終遅延素子２０６ｂの出力は、ＡＮＤゲート２０４に入力される。１２８〜４０あるいは８８のシフトの完了後、遅延素子２０６は最終的に４０の間隔でＫc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）の排他機能の結果を含むことになる。
【００５４】
次に、ｇ2（ｘ）の係数が、ＡＮＤゲート２０４に入力される。上述の処理は、４０以上のシフトあるいはトータルで１２８のシフトに対して継続する。排他機能から得られる４０ビットは、全範囲にわたって「拡散」されることになる。遅延素子２０６の結果（あるいは図３に示されるシフトレジスタ３０６ｃの結果）は暗号化キーＫ'c（ｘ）であり、これは、暗号化データに対して最適な暗号化アルゴリズムに入力される。
【００５５】
図４は本発明に従ってデータを暗号化するために暗号化キーＫ'cを計算する方法４００のブロック図を示している。方法４００は、暗号キーＫc（ｘ）を取得する工程４０２を含んでいる。上述したように、暗号キーＫc（ｘ）は、従来より周知の方法で取得することができる。次に、最大暗号キー長Ｌを判定する工程４０４が実行される。最大キー長は、典型的には、バイト値である。通信を行う装置は、各装置で通信できる最大暗号キー長に関する情報の交換あるいは「取り決め」を行う。典型的には、最大キー長は、両装置が通信できる取り決められた最大利用可能キー長に設定される。次に、多項式ｇ1（ｘ）が、工程４０６に従って取得される。次に、多項式ｇ1（ｘ）は、第１の結果を得るために、関数Ｋc（ｘ）  ｍｏｄ  ｇ1（ｘ）に従う暗号キーＫc（ｘ）と乗算される。次に、多項式ｇ2（ｘ）が工程４０８に従って取得される。工程４０８は開始点を拡散あるいは暗号化キーＫ'c（ｘ）のハミング距離を広げる。適切な多項式ｇ2（ｘ）が、工程４０４の結果に基づいて選択される。そして、暗号化キーＫ'c（ｘ）が、Ｋ'c（ｘ）＝ｇ2(L)（ｘ）［Ｋc（ｘ）  ｍｏｄ  ｇ1(L)（ｘ）］を行う工程４１０に従って計算される。
【００５６】
本発明は、上述の実施形態を参照して説明されている。しかしながら、本発明の範囲から逸脱しないで変更及び変形が可能であることが当業者には認識されるであろう。例えば、本発明は、最大暗号キー長Ｌが５バイト、最大使用可能暗号化キー長Ｌmaxが１６バイトの方法及び装置を説明しているが、本発明がこれらの長さに限定されないことは明らかであろう。加えて、送信及び受信対象のデータが任意の特定タイプのデータに限定されないことも明らかであろう。音声、手書きあるいは他のデータで構成されていても良い。バイナリ、ＡＳＣＩＩあるいは任意の他の形式のデータであっても良い。更に、データは、無線あるいは搬送波あるいは後に知られる周知の任意の媒体を介して送信されても良い。
【図面の簡単な説明】
【図１】  本発明に従ってデータを送受信する２つの移動通信装置を示す図である。
【図２】  本発明に従う暗号化キーＫ'cを計算する概要図である。
【図３】  本発明に従う様々な時間間隔での図２の概要図に従うシフトレジスタを示す図である。
【図４】  本発明に従う暗号化キーＫ'cを計算する方法を示すブロック図である。
【図１】
0004668428.tif 000011
【図２】
0004668428.tif 000012
【図３】
0004668428.tif 000013
【図４】
0004668428.tif 000014