JP2004511812A - メッセージ認証コードのためのキーの整数の置換の生成 - Google Patents
メッセージ認証コードのためのキーの整数の置換の生成 Download PDFInfo
- Publication number
- JP2004511812A JP2004511812A JP2001581474A JP2001581474A JP2004511812A JP 2004511812 A JP2004511812 A JP 2004511812A JP 2001581474 A JP2001581474 A JP 2001581474A JP 2001581474 A JP2001581474 A JP 2001581474A JP 2004511812 A JP2004511812 A JP 2004511812A
- Authority
- JP
- Japan
- Prior art keywords
- round
- key
- value
- generate
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3033—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
- H04L9/3073—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/80—Wireless
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Algebra (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Error Detection And Correction (AREA)
- Radio Relay Systems (AREA)
- Mobile Radio Communication Systems (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
Nがpおよびqへ因数分解されるか、またはNが素数であるときに、組ZNに対してキーによる整数置換を構成する方法。Nビットは、代表的な指数のキーによる置換を求めることによって置換される。Nがpおよびqへ因数分解できるときは、指数の組は2つの部分へ分割される。この部分は“ラウンド”と呼ばれる反復的な処理を行なわれ、各ラウンドでは、第1の2分の1ラウンドの関数は第1の部分について演算して、第1の2分の1ラウンドの値を形成し、第1の2分の1ラウンドの値と第2の部分とはモジューロpの加算器によって一緒に加算され、第1の出力値を形成し、第2の2分の1ラウンドの関数は第2の部分について演算して、第2の2分の1ラウンドの値を形成し、第2の2分の1ラウンドの値と第1の部分とが、モジューロqの加算器によって一緒に加算され、第2の出力値を形成する。このやり方では、ラウンドの出力は再び順序付けられる。Nが13以上の素数であるときは、Nは合成数の値sとtとに分割され、2つの組はsおよびtの要素でそれぞれ形成される。次に各組は、Nが素数でないときの方法を使用して置換される。各ラウンドの最後に、2つのブロックは混合演算を使用してを合成される。
Description
【0001】
発明の背景
I.発明の分野
本発明は、概ね通信の分野、とくにメッセージ認証コードにおいて使用するためのNを法とする整数の組に対してキーによる置換を構成することに関する。
【0002】
II.背景
メッセージ認証コード(message authentication code, MAC)は、暗号によって求められる項目(item)であり、これは、特定の当事者から発信され、かつ他の当事者によって変更されていないメッセージを確認(verify)するために、特定のメッセージに添付される。このために、MACは遠隔通信の多数の分野で使用することができる。MACは、例えば、無線通信の分野で使用されている。
【0003】
無線通信の分野には、多くの応用があり、例えば、コードレス電話、ページング、無線ローカルループ、パーソナルディジタルアシスタント(personal digital assistant, PDA)のような無線データアプリケーション、セルラおよびPCS電話システムのような無線電話、移動インターネットプロトコル(Internet Protocol, IP)電話、並びに衛星通信システムが含まれる。特定の重要なアプリケーションは、移動加入者のための無線電話である。
【0004】
種々の空中インターフェイスは、無線通信システム、例えば周波数分割多重アクセス(frequency division multiple access, FDMA)、時分割多重アクセス(time division multiple access, TDMA)、および符号分割多重アクセス(code division multiple access, CDMA)のために開発された。これと関連して、種々の国内および国際的な標準規格、例えばAdvanced Mobile Phone Service (AMPS)、Global System for Mobile Communications (GSM)、Interim Standard 95 (IS−95)が設定された。
【0005】
無線電話通信システムの例には、符号分割多重アクセス(code division multiple access, CDMA)システムがある。IS−95の標準規格、および派生の標準規格、すなわちIS−95A、ANSI J−STD−008、IS−95B、提案された第三世代の標準規格であるIS−95CおよびIS−2000、データに限定して提案された高データレートのCDMAの標準規格、など(ここでは、まとめてIS−95と呼ぶ)は、米国電気通信工業会(Telecommunications Industry Association, TIA)および他の周知の標準規格制定機関によって公布され、セルラまたはPCSの電話通信システムのためのCDMAの空中インターフェイスの使用を指定している。IS−95の標準規格の使用に実質的にしたがって構成された無線通信システムの例は、米国特許第5,103,459号および第4,901,307号に記載されており、これらは本発明の譲受人に譲渡され、ここでは参考文献として十分に取り上げている。
【0006】
無線通信システム上で送られたデータを暗号化するための1つの方法には、国立標準技術研究所(National Institute of Standards and Technology)によってFIPS PUB 46−2において(1993年12月30日に)公布されたデータ暗号化規格(Data Encryption Standard, DES)があり、これはフェイステルネットワーク(Feistel Network)を使用して、二値コード情報を暗号へ変換する。フェイステルネットワークは、DESにおいて64ビット長のデータブロックを変換するのに使用される。最初に、64ビットのデータブロックに対して最初の置換(permutation)ステップを行なう。置換されたデータブロックは、32ビットの長さをもつ両半分のブロックに分割され、一方のブロックはLに分類され、他方のブロックはRに分類される。これらのブロックは、次に示す関係式を使用して反復的な手順で処理される。
【0007】
【数1】
【0008】
各反復ステップをラウンド(round)と呼ぶので、関数fを“ラウンド”関数とも呼ぶ。DSNのアルゴリズムでは、ラウンド関数fは4つの演算から成る。最初に、56ビットのキーから48ビットのサブキーを選択する。次にラウンド関数fは、拡張置換(expansion permutation)を介して右半分のデータブロックを32ビットから48ビットへ拡張するステップと、XOR演算を介してこの拡張の結果を48ビットのサブキーと合成するステップと、この合成の結果を8つの代入ボックス(substitution box)へ送って、追加の32ビットを生成するステップと、この生成の結果を置換するステップとを含む。関数fの出力は別のXOR演算によって左半分のブロックと合成され、この合成の結果は新しい右半分のブロックとして使用され、一方で古い右半分のブロックは、次のラウンドの新しい左半分のブロックとして使用される。各ラウンドごとにfを再構成して、次の関係式を満足させることができるので、DESのラウンドは可逆性(reversible)である。
【0009】
【数2】
【0010】
データブロックは二値形式であるので、DESのような従来技術の方法では、プレーンテキストメッセージ(その要素はnの項のカルテシアン積Z2×Z2×...×Z2の組のメンバーである)を暗号文メッセージ(同様にその要素はnの項のカルテシアン積Z2×Z2×...×Z2の組のメンバーである)へ暗号化する。ここで使用されているように、Zmは、加法のモジューロmにしたがう巡回群{0,1,...,m−1}である。したがって、DESの目的は、プレーンテキスト(例えば、元のデータ)のメッセージ内のビットの順序を変更することではない。むしろ、DESの目的は、暗号文の各ビットがプレーンテキストの全ビットに依存するような暗号文を生成することである。
【0011】
DESは可逆性であり、キーの制御のもとで264の入力を264の出力へ変換するので、DESは、キーが整数の組{0,1,...,264−1}の置換を選択する方法であると考えることもでき、したがってキーによって選択される置換は、許可されていない当事者から隠され続けなければならない。
【0012】
通常の通信では、MACは、メッセージと、メッセージの発信者および受信者のみが知っている共有の秘密キーKとが入力された関数の出力である。選択された特定の関数が保護されているときは、送られたメッセージを傍受し、かつそれを変更する可能性のあるアクティブなアタッカー(active attacker)は、キーKを発見することも、受信者が合理的な確率で妥当(valid)として受信することになるメッセージを生成することもできない。
【0013】
新しいタイプのMACは、1999年8月9日に出願された米国特許出願第09/371,147号(“METHOD AND APPARATUS FOR GENERATING A MESSAGE AUTHENTICATION CODE”)において提案され、本発明の譲受人によって譲渡され、ここでは参考文献として十分に取り入れており、このMACは、幾つかのキーの影響のもとでmビットのデータブロックのビットを再び順序付け、再び順序付けられたmビットブロックの線形関数であるxビットの巡回冗長検査(cyclic redundancy check, CRC)を構成することに依存している。このMACは、CRC−MACと呼ぶ。送信者は元のm−ビットのデータブロックをCRC−MACと一緒に受信者へ送る。受信者は共有のキーを使用して、受信したデータメッセージのビットを再び順序付ける。次に受信者は生成されたブロックからCRCを計算する。この方法を使用すると、受信者は、データが転送中に変更されたかどうかを検出することと、伝送中に発生した少数のエラーを訂正することができ、一方でアクティブなアタッカーには、メッセージを偽造または変更するのがさらに困難になる。
【0014】
m+x=2x−1−1であるとき、mおよびxが最適であることは、よく知られている。xビットのCRC−MACの構成は、米国特許出願第09/371,147号により詳しく記載されている。この技術において普通の技能をもつ者には、16ビットのCRCは無線通信の分野において特定用途をもつことが知られている。上述の関係式において数x=16を使用すると、CRC−MACの構成のためのデータブロックの最適な大きさは、m=(215−1)−16=32,751ビットである。
【0015】
mおよびxの最適値について既に記載したように、CRC−MACには、元のmビットのデータブロックのビットを再び順序付けることによって、キーを使用してmビットの中間ブロック、ここではm=(2x−1−1)を構成する方法が必要である。米国特許出願第09/371,147号に記載されているように、mビットの中間ブロックの構成は2つのアルゴリズムを使用して実行することができる。第1のアルゴリズムで、各指数(indices)をmビットのデータブロック内のビットへ処理する。第1のアルゴリズムは、mビットのデータブロックの各ビット位置と関係する各指数xについて、xと同じ範囲内のユニークな指数yを判断する(なお、yはxおよび共有の秘密キーから判断される)ため第2のアルゴリズムに要求する。次に第1のアルゴリズムで、中間のブロックのビット位置yの値を、データブロックの位置xにおけるビットの値に設定する。
【0016】
第1のアルゴリズムが範囲{0,1,...,m−1}内の指数xの各々についてこれらのステップを実行すると、中間のブロックはmビットのブロックになり、ここにはデータブロックのビットが異なる順序で含まれている。CRC−MACを保護するために、所与のキーについて、第1のアルゴリズムが中間のブロックの同じ位置に同じブロックからの2ビットを置かないことが必要である。第2のアルゴリズムが、各キーごとに組{0,1,...,m−1}から各キー自体への1対1のマッピングを定義するときのみ、この条件は満たされる。1対1のマッピングは、この技術では一般的に置換(permutation)と呼ばれている。したがって、CRC−MACには、キーを使用して、組{0,1,...,m−1}における置換を定義する方法が必要である。さらに、キーによって選択される置換は、許可されていない当事者からは隠され続けなければならない。
【0017】
DESは、キーを使用して整数の組{0,1,...,264−1}における置換を判断する方法であるとすると、キーによって選択される置換は許可されていない当事者から隠され続けなければならない。mの値が264であるときは、DESは第2のアルゴリズムに対する条件を満たしていることになる。しかしながら、DESおよび他のブロックの暗号は順序(order)2Mの組間の1対1の関係を生成するためにのみ構成されていて、他の順序の組間の1対1の関係を定義していないので、このような暗号を第2のアルゴリズムとして使用することはできない。さもなければ、ブロックの暗号の特性は、第2のアルゴリズムに必要な条件を満たし、第2のアルゴリズムは同じ保護の概念で構成されていたであろう。
【0018】
RSAアルゴリズムおよびEl−Gamalアルゴリズムのようないくつかの公開鍵暗号化アルゴリズムは、キーがZN(Nは2の累乗以外の一定の値)における置換を定義するための方法を開示している。しかしながら、これらの公開鍵アルゴリズムは32,751のような小さい値のNに対しては保護されていないので、これらの方法はCRC−MACで使用されるべきではない。キーによって選択される置換は、CRC−MACに必要なNの値について、許可されていない当事者から隠されなければならない。
【0019】
したがって、現在はCRC−MACにおいて大きい数(large number)のNのデータビットを置換することが求められている。上述の最適の場合は、データブロックには32,751ビットが含まれているべきである。既に記載したように、Nビットを置換するには、キーによって選択される置換が許可されていない当事者から隠され続けるように、キーが組{0,1,...,N−1}=ZNに対する置換を定義する方法が必要である。このような方法に求められることは、Nが合成数(composite)であっても、素数(prime)であっても、いかなるNの値にも適用できることである。素数は1よりも大きい整数であって、1と自分自身のみを因数とする整数である。合成数は1よりも大きく、素数でない整数である。このような方法は、遠隔通信システムにおけるメッセージの認証およびエラー訂正の他に、種々の幅広い応用に適用できる。
【0020】
要約
本発明では、Nの値が2の累乗でないとき、キーによって選択される置換が許可されていない当事者から隠され続けるように、キーが組ZNに対する置換を定義する方法が求められていることに対処した。本発明は、13以上のすべての整数に応用可能である。Nが素数であるか、合成数であるかにしたがって、異なる方法を使用する。
【0021】
本発明は、Nビットのデータブロックを置換するための方法に関し、Nビットのデータブロックの各ビットは、複数のNの指数の中の指数と関係している。Nが合成数であり、かつNが1よりも大きい整数値pと1よりも大きい整数値qとへ因数分解されるときは、本発明は、幾つかのラウンドを行なうことによって入力値から出力値を求める方法であって、各ラウンドは、第2の部分と整数値qによって乗算された第1の部分との合成として表わすことができる入力値を、グループZpについて構成されている第1の部分と、グループZqについて構成されている第2の部分とへ分割するステップと、第1の2分の1ラウンドのキーと第2の2分の1ラウンドのキーとを構成するステップと、第2の部分および第1の2分の1ラウンドのキーとから、第2の部分と第1の2分の1ラウンドのキーとについて演算する第1の非線形関数の出力である第1の2分の1ラウンドの値を求めるステップと、モジューロpの加算器を使用して、第1の2分の1ラウンドの値を第1の部分と合成して、第3の部分を生成するステップと、第3の部分と第2の2分の1のラウンドのキーとから、第3の部分と第2の2分の1ラウンドのキーとについて演算する第2の非線形関数の出力である第2の2分の1のラウンドの値を求めるステップと、モジューロqの加算器を使用して、第2の2分の1ラウンドの値と第2の部分とを合成するステップと、第3の部分を整数値qによって乗算して、第2の2分の1ラウンドの値を加算することによって、第2の2分の1ラウンドからの出力値を構成するステップとが含まれている方法に関する。
【0022】
Nが13よりも大きい素数であるときは、Nは2つの合成数SとTとの和として書き表わすことができ、組ZNを、Sに等しい要素数をもつ組Aと、Tに等しい要素数をもつ組Bとの2つの組へ分割することができる。合成数Nについての上述の方法は、組Aにおける置換と、組Bにおける置換とを定義するのに適用でき、幾つかのラウンドを実行することによって入力値から出力値を求めることができ、各ラウンドは素数のラウンドと混合のラウンドとから構成されていて、かつ最終のラウンドは素数のラウンドのみである。素数のラウンドでは、ラウンドの入力値が組Aに含まれているか、または組Bに含まれているかを判断し、値が組Aに含まれているときは、既に記載したようにラウンドのキーによって定義されている組Aにおける置換を使用して入力値から第1の値を判断し、値が組Bに含まれているときは、既に記載したようにラウンドのキーによって定義される組Bにおける置換を使用して入力値から第1の値を判断するステップを含み、混合のラウンドでは、全組ZNについて、A内の値の約S/NをA内の値にマップする特性をもつ簡単な置換へ、第1の値を入力して、ラウンドの出力を生成するステップを含む。
【0023】
好ましい実施形態の詳細な説明
図1は、FIPS PUB46−2において(1993年12月30日に)発行されたデータ暗号化標準規格(Data Encryption Standard, DES)によって指定されている従来技術の暗号化計算のブロック図である。64ビットブロックの入力100は、最初の置換ステップ101にしたがって置換される。最初の置換ステップ101の結果は、ブロックL0102およびR0103である。
【0024】
第1のラウンドでは、ブロックR0103およびブロックのキービットK1104は、関数f105によって演算される。ブロックf105およびブロックL0102の出力は、モジューロ2の加算器106を使用して合成され、ブロックR1113を形成する。ブロックL1112は、ブロックR0103に等しく設定される。
【0025】
第2のラウンドでは、ブロックR1113およびブロックのキービットK2114は、関数f115によって演算される。関数f115およびブロックL1112の出力は、モジューロ2の加算器116を使用して合成され、ブロックR2123を形成する。ブロックL2122は、ブロックR1113に等しく設定される。
【0026】
第1のラウンドおよび第2のラウンドについて記載されている手続きは、16ラウンドが完了するまで繰返される。n番目のラウンド中に、ブロックのキービットKn124およびブロックRnは、関数f125によって演算され、この演算の出力は、モジューロ2の加算器126を使用してブロックLnと合成される。最終のラウンドでは、ブロックR16142およびブロックL16143が逆の最初の置換ステップ144へ入力され、出力145を形成する。
【0027】
DES方法では、ブロックのビットを演算し、他のブロックの暗号もブロックのビットについて演算する。したがって、現在の最新技術では、大きさ2n(nは全体的にブロック内のビット数)のブロックの暗号化に焦点を当てている。本発明は、任意の大きさの組からの値の暗号化を向上した改良である。
【0028】
図2は、本発明の1つのラウンドの例示的な実施形態のブロック図であり、キーによる整数置換(keyed integer permutation, KIP)はZN(Nは素数ではない)について構成されている。N=pq(整数p>1およびq>1)とする。入力Ci200は2つの部分、すなわち部分Li210およびRi211へ分割され、Ci=Li−q+Ri,Li∈ZpおよびRi∈Zqとなる。部分Ri211および2分の1のラウンド値K1i212は非線形関数f1213によって演算され、2分の1のラウンドの値viを形成する。2分の1のラウンドの値viは、モジューロpの加算器215を使用して部分Liへ加算され、部分L’i220を形成する。部分L’i220および2分の1のラウンドキーK2i222は、非線形関数f2223によって演算され、2分の1のラウンド値v’iを形成する。2分の1のラウンド値v’iおよび部分Ri211をモジューロqの加算器225を使用して一緒に加算して、部分R’i221を求める。出力部分Ci+1230は、式Ci+1=L’i−q+R’iによって形成される。その代わりに、L’i220およびR’i221を次の反復ラウンドで使用してもよい。
【0029】
図2に記載した方法は可逆であり、したがってCiはCi+1から判断することができる。最初に、Ci+1は部分L’iおよびR’iへ分割され、関係式Ci+1=L’i−q+R’iを満足させる。Riを導き出すには、v’i=f2(L’i,K2i)を求めて、R’i(モジューロq)から2分の1のラウンドの値v’iを減算する。結果の値はRiである。Riが分かると、vi=f1(Ri,K1i)を評価し、L’i(モジューロp)から2分の1ラウンドの値viを減算することによって、Liを求める。結果の値はLiである。Ciの値はCi=L’i−q+Riとして判断される。
【0030】
図3は、プロセッサを使用した整数置換デバイスのブロック図である。制御装置320はプロセッサ322に接続されていて、プロセッサ322の動作を指示する命令の組を含んでいる。制御装置320はソフトウエアプログラムまたは1組のマイクロコードを含むことができる。プロセッサ322は、置換デバイスによって要求される操作を実行するハードウエアである。プロセッサ322はマイクロ制御装置、マイクロプロセッサ、または本明細書に記載した機能を実行するように設計されたディジタル信号プロセッサとして構成することができる。プロセッサ322にはメモリ素子324が接続されていて、メモリ素子324は値および命令を記憶するのに使用される。メモリ素子324はランダムアクセスメモリか、または本明細書に記載した機能を実行するように設計されている他のメモリデバイスと共に構成されていてもよい。命令および値は、読み出し専用メモリ、ランダムアクセスメモリ、または他のメモリデバイス内に記憶することができる。
【0031】
図2に概ね示されているように、ZNに対するキーによる整数置換を生成する方法は、pおよびqに対する種々の選択に適応するように変更することができる。図4は、キーによる整数置換方法の1ラウンドの実施形態のブロック図であり、なおp=178、q=184であり、したがってN=32752である。さらに加えて、数値32752は89×23×24へ因数分解でき、なお89×2=178、23×23=184である。入力Ci400は2つの部分、すなわち部分Li410および部分Ri411へ分割され、したがってCi=184 Li+Riである。部分Li400はLi=Ci div 184から求めることができる(なお、A div Bは(A÷B)の整数部分である)。部分Ri411は、Ri=Ci mod 184から求めることができる。
【0032】
部分Ri411および定数α413は、モジューロ356の乗算器414によって一緒に乗算され、乗算結果uを生成する。乗算結果uおよび2分の1のラウンドキー値K1i412はモジューロ356の加算器416によって一緒に加算され、合成結果wを生成する。整数値356=2*178であることに注意すべきである。ステップ419では、合成結果wは、関係式w=x*m+yによって代入表示値(substitution indicator value)xおよび代入入力値(substitution input value)yへ分解され、なお代入表示値xは組Z2の要素であり、代入入力値yは組Zmの要素であり、mはpに等しく設定され、この特定の実施形態ではp=178である。代入表示値xを使用して、各々がZ178における置換である2つの代入ボックスS0420およびS1421の一方を選択する。代入表示値xを使用して、代入ボックスSxを選択した後で、代入ボックスSxによって代入入力値yを演算して、2分の1ラウンドの値viを求める。モジューロ178の加算器423によって2分の1ラウンドの値viおよび部分Li410を演算して、部分L’i424を求める。
【0033】
モジューロ368の加算器426によって部分L’i424および定数β425を一緒に乗算して、乗算結果u’を生成する。整数値368=2*184であることに注意すべきである。モジューロ368の加算器429によって乗算値u’および2分の1ラウンドのキーの値K2i428を一緒に加算して、合成結果w’を生成する。ステップ430では、関係式w’=x’*n+y’によって合成結果w’を代入表示値x’および代入入力値y’へ分解する(なお、代入表示値x’は組Z2の要素であり、代入入力値y’は組Znの要素であり、nはqに等しく設定され、この特定の実施形態ではq=184である)。代入表示値x’を使用して、各々がZ186に対する置換である2つの代入ボックスT0433およびT1434の一方を選択する。代入表示値x’を使用して、代入ボックスTx’を選択した後で、代入ボックスTx’によって代入入力値y’を演算して、2分の1ラウンドの値v’iを求める。モジューロ178の加算器436によって2分の1ラウンドの値v’iおよび部分Ri411を演算して、部分R’i437を求める。
【0034】
キーによる整数置換のために選択された2つの関数f1480およびf2490は、構造において互いに類似している。関数f1480は定数によって入力を乗算し、結果のモジューロ2pを低減し、値uを求める。本発明の上述の実施形態では、2p=356である。関数f2490では、定数β=368によって入力を乗算して、結果のモジューロ2q(2q=368)を低減して、値u’を求める。定数αおよびβは、αと356とが互いに素であり、βと368とが互いに素であるように選択される。例えば、33と356とは互いに素であるので、定数αは整数値33に等しく設定できる。乗算の後で、2分の1ラウンドのキーをモジューロ356に加算して、w=x*m+y(x∈Z2、y∈Zj、jはそれぞれ値pまたはqをもつ)として表わすことができる出力値wを求める。xの値を使用して、2つの代入ボックスの一方を選択する。関数f1480では、これらの2つの代入ボックスはS0、S1で示され、各代入ボックスZ178における置換である。関数f2490では、これらの2つの代入ボックスはT0、T1で示され、各代入ボックスはZ184における置換である。f1の出力はvi=Sx(y)であり、f2の出力はv’i=Tx(y)の出力である。
【0035】
2分の1ラウンドのキー値K1 i およびK2 i の判断
本発明の実施形態における2分の1ラウンドのキー値はSOBERIIのストリーム暗号によって生成でき、なおSOBERIIのストリーム暗号は、1997年9月22日に出願された米国特許出願第08/934,582号(“METHOD AND APPARATUS FOR GENERATING ENCRYPTION STREAM CIPERS”)、1997年10月24日に出願された米国特許出願第08/957,571号(“METHOD AND APPARATUS FOR GENERATING ENCRYPTION STREAM CIPERS”)、1998年8月28日に出願された米国特許出願第09/143/441号(“METHOD AND APPARATUS FOR GENERATING ENCRYPTION STREAM CIPERS”)、および1999年9月8日に出願された米国特許出願第09/246,366号(“METHOD AND APPARATUS FOR GENERATING ENCRYPTION STREAM CIPERS”)に記載されている。上述の特許出願は本発明の譲受人に譲渡されており、本明細書では別途記載しない。しかしながら、ストリーム暗号が、均等に分配されているバイトを生成するときは、このようなストリーム暗号を使用して、2分の1ラウンドのキーの値を生成できることに注意すべきである。このようなストリーム暗号がs0,s1,...,st,...で表わされる出力バイトを生成するとき、2つの連続しているバイトの整数値zt=256s2t+s2t+1はZ65536において均等に分配されることに注意すべきである。本発明の例示的な実施形態では、SOBERIIは、セッションキーおよび恐らくは若干の追加のデータを使用して初期設定され、s0,s1,...,st,...で表わされる十分なバイトの出力を生成する。2分の1のラウンドのキーは、均等に分配されるように設計されている。均等に分配された2分の1のラウンドのキーを生成する1つの方法では、ztが65504未満であるときのみ、2つの連続している整数値バイトzt=256s2t+s2t+1を使用する。65504は整数値356(2p=356)および368(2q=368)によって因数分解できるので、低減されたモジューロ356またはモジューロ368で
ある0ないし65503の均等に分配された数ztも、それぞれZ356およびZ368において均等に分配されることになる。
【0036】
ztの値を、t=0から計算する。ztが65504以上であるときは、tはインクリメントされ、ztの値はtの新しい値において計算される。このプロセスは、ztの値が65504未満であることが分かるまで繰返される。次に65504未満のztの値は、K11を求めるための低減されたモジューロ356である。K1iを判断した後で、tの値はインクリメントされ、tの新しい値においてztの値を計算する。ztが65504以上であるときは、tはインクリメントされ、tの新しい値においてztの値を計算する。このプロセスは、ztの新しい値が65504未満であることが分かるまで繰返される。65504未満のこのztの値は、K21を求めるための低減されたモジューロ368である。K11をおよびK21を判断すると、tはインクリメントされ、tから0へ設定しなくても、プロセスはこの方法の始めに戻る。全ての2分の1のラウンドキーが求められるまで、この方法を繰返して、K12、K22、K13、K23などを判断する。図5は、この反復プロセスを詳しく示したフローチャートである。
【0037】
ステップ500では、指数(index)tは0に等しく設定され、ラウンド数iは1に設定される。ステップ510では、中間値ztは関係式zt=256s2t+s2t+1によって判断される。ztが65504未満であるときは、ステップ520へ進む。ztが65504以上であるときは、ステップ530へ進む。ステップ520では、K1iはzt mod 356に等しく設定され、指数tはインクリメントされ、プロセスのフローチャートはステップ540へ進む。ステップ530では、指数tはインクリメントされ、プロセスのフローチャートはステッ510へ進む。ステップ540では、値ztを関係式zt=256s2t+s2t+1(指数tはステップ520においてインクリメントされている)によって判断する。ztが65504未満であるときは、ステップ550へ進み、ztが65504以上であるときは、ステップ560へ進む。ステップ550では、、K2iはzt mod 368に等しく設定され、指数tおよびiはインクリメントされる。i<rであるときは、ステップ510へ戻る。ステップ560では、指数tはインクリメントされ、プログラムのフローチャートはステップ540へ進む。
【0038】
本発明の別の実施形態では、図2に概ね示したキーによる整数置換はZ32751についてp=33およびq=1213として実行される。(32751=33×1213であることに注意すべきである。)図6は、p=33およびq=1213を使用して、この方法の1ラウンドを示すブロック図である。入力Ci600はCi=Li *1213+Riとなるように、2つの部分、部分Li601および部分Ri602へ分割される。部分Li601は関係式Li=Ci div (1213)によって判断でき、部分Riは関係式Ri=Ci mod (1213)によって判断できる。部分Ri602および定数α603をモジューロ273の乗算器604によって一緒に乗算され、乗算結果uが求められる。定数α603および数273(273=19683)が互いに素であるように組Z19683から選択する。ステップ609では、uを関係式u=272u1+27u2+u3によって因数分解して、項u1、u2、u3を求める。
【0039】
モジューロ27の加算器613を使用して、項u1およびサブキーの値K1Ai610を一緒に加算し、代入入力値g1を求める。モジューロ27の加算器614を使用して、項u2およびサブキーの値K1Bi611を一緒に加算し、代入入力値g2を求める。モジューロ27の加算器615を使用して、項u3およびサブキーの値K1Ci612を一緒に加算し、代入入力値g3を求める。本明細書に記載した方法には、pおよびq、またはuの適切な選択値に依存して、多数の可能な実行形態があることに注意すべきである。例えば、uが、ステップ609において使用されている3つの項ではなく、4以上の項(例えば、u=273u1+272u2+27u3+u4)へ因数分解されるときは、加算器の数は増加することになる。加算器の数が増加すると、適切な数のサブキーの値も必要となる。サブキーの値K1Ai610、K1Bi611、およびK1Ci612は、組Z27の要素から選択され、別途記載する方法で判断される。例えば、uが4以上の項に因数分解される場合は、過多に実験をしなくても、より多くのサブキー値を生成し、本発明の他の実施形態を満足させるような方法にすることができる。
【0040】
代入入力値g1を代入ボックスS1619によって演算して、代入された値h1を求める。代入入力値g2を代入ボックスS2620によって演算して、代入された値h2を求める。代入入力値g3を代入ボックスS3620によって演算して、代入された値h3を求める。代入された値h1、代入された値h2、および代入された値h3をモジューロ27の加算器625によって一緒に加算して、2分の1のラウンド値viを判断する。2分の1のラウンド値viおよび部分Li601をモジューロ27の加算器627を使用して一緒に加算して、部分L’i628を求める。
【0041】
部分L’i628および定数β650をモジューロ1213の乗算器655によって乗算して、乗算結果をu’iを求める。定数β650は、組Z1213のゼロ以外の要素から選択される。乗算結果u’iおよび2分の1ラウンドのキー値K2i653をモジューロ1213の加算器656を使用して一緒に加算して、代入入力値g’を求める。代入入力値g’を代入ボックスT657へ送って、2分の1ラウンドの値v’iを求める。2分の1ラウンドの値v’iおよび部分Ri602をモジューロ1213加算器658を使用して一緒に加算し、部分R’i659を求める。部分L’i628および部分R’i659は、次の反復ラウンドにおいて使用される。代わりのやり方では、部分L’i628を数値=1213によって乗算し、部分R’i659へ加算し、部分Ci+1660を形成する。
【0042】
2分の1ラウンドのキー値K1 i = { K1A i ,K1B i ,K1C i } およびK2 i の判断
本発明のこの実施形態において2分の1ラウンドのキーの値はSOBERIIのストリーム暗号によって生成される。しかしながら、ストリーム暗号が均等に分配されたバイトを生成するときは、ストリーム暗号を使用して、2分の1ラウンドのキーの値を生成することができる。このようなストリーム暗号がs0,s1,...,st,...で表わされる出力バイトを生成するときは、2つの連続しているバイトの整数値、zt=256s2t+s2t+1はZ65536について均等に分配されることになることに注意すべきである。
【0043】
サブキーの値の組K1i={K1Ai,K1Bi,K1Ci}は、数が0ないし59048(59049=3×273)の間で均等に分配され、かつ低減されたモジューロ273であるときは、数はZ27×Z27×Z27について均等に分配されているという解析(observation)によって判断される。2分の1ラウンドのキー値K2iは、数が0ないし65501(65502=54×1213)の間で均等に分配され、かつ低減されたモジューロ1213であるときは、数はZ1213についても均等に分配されているという解析によって判断される。これらの解析を使用すると、K1i={K1Ai,K1Bi,K1Ci}およびK2iの値(1≦i≦r)を判断するための例示的な方法には、図7に詳しく示したステップが含まれる。
【0044】
ステップ700では、指数tは0に等しく設定され、ラウンド数iは1に等しく設定される。ステップ710では、中間値ztは、関係式zt=256s2t+s2t+1によって判断される。ztが59049であるときは、ステップ720へ進む。ztが59049以上であるときは、ステップ730へ進む。ステップ730では、指数tはインクリメントされ、プロセスのフローチャートはステップ710へ進む。ステップ720では、K1iがzt mod 19683に等しく設定され、指数tはインクリメントされる。ステップ725では、K1i=272K1Ai+27K1Bi+K1Ciとなるように、K1Ai,K1Bi,K1Ciの値を判断する。ステップ725の次は、プログラムのフローチャートはステップ740へ進む。ステップ740では、値ztは関係式zt=256s2t+s2t+1(指数tはステップ720においてインクリメントされている)によって判断される。ztが65502未満であるときは、ステップ750へ進み、ztが65502以上であるときは、ステップ760へ進む。ステップ750では、K2iがzt mod 1213に等しく設定され、指数tおよびiはインクリメントされる。i<rであるときは、ステップ710へ戻る。ステップ760では、指数tはインクリメントされ、プログラムのフローチャートはステップ740へ進む。
【0045】
上述の方法を使用するとき、サブキーK1Ai,K1Bi,K1Ci(1≦i≦r)の各々は、Z27について均等に分配され、第2の2分の1のラウンドのキーK2iは(1≦i≦r)、Z1213について均等に分配される。代入ボックスは、非線形性およびランダム性のような、十分な暗号特性をもつように選択される。2分の1のラウンドキーが均等に分配されていないときは、代入ボックスへの入力は均等に分配されず、独立する。
【0046】
本明細書に記載したキーによる整数置換方法は、メッセージ認証コードで使用することを意図されているが、1組の整数のキーによる置換が要求される場合に使用してもよい。例えば、本明細書に記載した本発明の実施形態を使用して、DESが組{0,1,...,264−1}内の整数を組{0,1,...,264−1}内の他の整数へ暗号化するやり方と類似したやり方で、組{0,1,...,N−1}内の整数を組{0,1,...,N−1}内の他の整数へ暗号化することができる。
【0047】
本明細書に記載したキーによる整数置換の暗号化プロセスと暗号化プロセスとは、各ラウンド内の2つの2分の1ラウンドの関数の順序が逆にされていること、出力viがLiから減算されたモジューロpであること、および出力v’iがRiからの減算されたモジューロqであることを除いて暗号プロセスと同じである。
【0048】
図8は、本発明の別の例示的な実施形態のブロック図であり、キーによる整数の置換はZN(Nは素数)について構成されている。N=S+Tとする。N≧13の各値には、N=S+Tとなるような2つの構成要素SおよびTが存在することに注意すべきである。したがって、ステップ800では、Nの指数のグループは、Sの指数から構成されているセクションA801と、Tの指数から構成されているセクションB802とへ分割される。セクションA801の指数は{a0,a1,...,aS−1}へ再び分類され、セクションB802の指数は{b0,b1,...,bT−1}へ再び分類される。セクションA801の指数は、キーによる整数置換KIPS810にしたがって置換される。キーによる整数置換KIPS810は、既に記載した本発明の実施形態にしたがって実行することができる。セクションB802の指数は、キーによる整数置換KIPT811にしたがって置換される。キーによる整数置換KIPT811は、既に記載した本発明の実施形態にしたがって実行することができる。
【0049】
したがって、KIPNの素数のラウンドは次のように定義することができる:
x∈{a0,a1,...,aS−1}であるときは、
KIPA,B(x)=KIPS(x)、または、
x∈{b0,b1,...,bT−1}であるときは、
KIPT(x)。
【0050】
ステップ820では、KIPA,B(x)の出力に“混合(mixing)”演算、例えばアフィン演算AffS(x)=U*x+V(mod N)(1≦U≦N−1、UおよびVの値は保護キー(secure key)に依存する)を行なう。数学的に、演算子B:C DはBr=Ar+b(C,D⊆R、bはDの固定要素、rはCの要素、AはCをDへマップする線形演算子)によって定義されるとき、Bはアフィン演算子である。
【0051】
図8の一般的な方法では、素数の要素をもつ組を、各組が素数の要素以外から構成されている2以上の組へ分割し、次に図2および本発明の他の種々の実施形態に記載したキーによる整数置換を合成数の組について行なう。1つの組の要素の置換は、この1つの組によって定義される出力になるので、各ラウンドの後で1つの組の要素を別の組に挿入する混合演算を行なう。
【0052】
図8に概ね記載されているように、本発明の1つの実施形態では、N=S+Tとする(Nは素数であり、SおよびTは合成数である)。A={0,1,S−1}およびB={S,...,N−1}と定義すると、組A内の要素数は|A|=Sであり、組B内の要素数は|B|=Tである。素数のラウンドは、0≦x≦S−1であるときは、KIPA,B(x)=KIPS(x)であり、S≦x≦N−1であるときは、KIPA,B(x)=S+KIPT(x―S)であると定めることができる。
【0053】
図8に概ね記載されているように、本発明の別の実施形態では、Nは素数であり、N=2T+1とする(TおよびT+1は合成数である)。A={0,2,4,...,2T}={2y:y∈ZT+1}およびB={1,3,5,...,2T−1}={2y+1:y∈ZT}と定義する。したがって、組Aは偶数の値を含み、組Bは奇数の値を含んでいる。したがって素数のラウンドはx=2yであるときは、KIPA,B(x)=2KIPT+1(y)であり、x=2y+1であるときは、KIPA,B(x)=1+KIPT(y))であると定義することができる。
【0054】
図8に記載されているように、本発明のさらに別の実施形態では、ステップ820のアフィンマッピング演算において使用されているように、固定定数を使用することができる。Prob(AffU,V(x) in A:× in A)がほぼ|A|/Nとなるように、UおよびVの値を選択する。UおよびVの値は、組AおよびB内の要素の区分に依存する。組AおよびBは、|A|〜|B|〜(N/2)になるように選択される。置換Y3=KIPN(X0)は、4つの素数のラウンドおよび3つのアフィンラウンドをもち、置換は次に示すものによって定義される:
Y0=KIPA,B(X0),
X1=AffU,V(Y0),
Y1=KIPA,B(X1),
X2=AffU,V(Y1),
Y2=KIPA,B(X2),
X3=AffU,V(Y2),
Y3=KIPA,B(X3)。
【0055】
KIPAおよびKIPBは、KIPNのキーの長さに等しいキーの長さで保護されると仮定する。4つの素数のラウンド内のKIPAおよびKIPBに必要な8つの2分の1ラウンドのキーを求めるのに、KIPNはSOBERIIのようなキースケジュールをもたなければならない。この構成は、保護されている置換になると考えられている。
【0056】
大きい数の素数のラウンドまたはキーに依存するアフィンラウンド、あるいはこの両者を使用するために、他の実施形態を構成してもよい。使用される素数のラウンドの数が増加すると、素数のラウンドの関数を、より弱いキーによる整数置換から構成して、速度を増すことができる。
【0057】
ZNになるキーによる整数置換を構成する方法を記載してきた。発明の詳細な記述(description)は、当業者が本発明を実行または使用できるようにするために与えられている。これらの実施形態に対する種々の変形は、当業者には容易に明らかであり、本明細書において定義されている一般的な原理は、発明的な能力(inventive faculty)を使用せずに他の実施形態に応用することができる。したがって、本発明は、本明細書に開示した実施形態に制限されることを意図されるのではなく、本明細書に記載した原理および新規な特徴と一致する最も幅広い技術的範囲にしたがうことを意図されている。
【図面の簡単な説明】
【図1】
DESという名前の従来技術の暗号化計算のフローチャート。
【図2】
モジューロpの加算器とモジューロqの加算器とを使用する暗号化計算の本発明の実施形態のブロック図。
【図3】
プロセッサを使用する整数置換デバイスのブロック図。
【図4】
Z32752における暗号化計算のブロック図。
【図5】
図4の暗号化計算において実行されているように、2分の1ラウンドのキーK1iおよびK2iの偏差を示すフローチャート。
【図6】
Z32751に対する別の暗号化計算のブロック図。
【図7】
図6の暗号化計算において実行されている2分の1ラウンドのキーK1iおよびK2iの偏差を示すフローチャート。
【図8】
ZN(Nは素数)に対して実行される本発明の実施形態の暗号化計算のブロック図。
発明の背景
I.発明の分野
本発明は、概ね通信の分野、とくにメッセージ認証コードにおいて使用するためのNを法とする整数の組に対してキーによる置換を構成することに関する。
【0002】
II.背景
メッセージ認証コード(message authentication code, MAC)は、暗号によって求められる項目(item)であり、これは、特定の当事者から発信され、かつ他の当事者によって変更されていないメッセージを確認(verify)するために、特定のメッセージに添付される。このために、MACは遠隔通信の多数の分野で使用することができる。MACは、例えば、無線通信の分野で使用されている。
【0003】
無線通信の分野には、多くの応用があり、例えば、コードレス電話、ページング、無線ローカルループ、パーソナルディジタルアシスタント(personal digital assistant, PDA)のような無線データアプリケーション、セルラおよびPCS電話システムのような無線電話、移動インターネットプロトコル(Internet Protocol, IP)電話、並びに衛星通信システムが含まれる。特定の重要なアプリケーションは、移動加入者のための無線電話である。
【0004】
種々の空中インターフェイスは、無線通信システム、例えば周波数分割多重アクセス(frequency division multiple access, FDMA)、時分割多重アクセス(time division multiple access, TDMA)、および符号分割多重アクセス(code division multiple access, CDMA)のために開発された。これと関連して、種々の国内および国際的な標準規格、例えばAdvanced Mobile Phone Service (AMPS)、Global System for Mobile Communications (GSM)、Interim Standard 95 (IS−95)が設定された。
【0005】
無線電話通信システムの例には、符号分割多重アクセス(code division multiple access, CDMA)システムがある。IS−95の標準規格、および派生の標準規格、すなわちIS−95A、ANSI J−STD−008、IS−95B、提案された第三世代の標準規格であるIS−95CおよびIS−2000、データに限定して提案された高データレートのCDMAの標準規格、など(ここでは、まとめてIS−95と呼ぶ)は、米国電気通信工業会(Telecommunications Industry Association, TIA)および他の周知の標準規格制定機関によって公布され、セルラまたはPCSの電話通信システムのためのCDMAの空中インターフェイスの使用を指定している。IS−95の標準規格の使用に実質的にしたがって構成された無線通信システムの例は、米国特許第5,103,459号および第4,901,307号に記載されており、これらは本発明の譲受人に譲渡され、ここでは参考文献として十分に取り上げている。
【0006】
無線通信システム上で送られたデータを暗号化するための1つの方法には、国立標準技術研究所(National Institute of Standards and Technology)によってFIPS PUB 46−2において(1993年12月30日に)公布されたデータ暗号化規格(Data Encryption Standard, DES)があり、これはフェイステルネットワーク(Feistel Network)を使用して、二値コード情報を暗号へ変換する。フェイステルネットワークは、DESにおいて64ビット長のデータブロックを変換するのに使用される。最初に、64ビットのデータブロックに対して最初の置換(permutation)ステップを行なう。置換されたデータブロックは、32ビットの長さをもつ両半分のブロックに分割され、一方のブロックはLに分類され、他方のブロックはRに分類される。これらのブロックは、次に示す関係式を使用して反復的な手順で処理される。
【0007】
【数1】
【0008】
各反復ステップをラウンド(round)と呼ぶので、関数fを“ラウンド”関数とも呼ぶ。DSNのアルゴリズムでは、ラウンド関数fは4つの演算から成る。最初に、56ビットのキーから48ビットのサブキーを選択する。次にラウンド関数fは、拡張置換(expansion permutation)を介して右半分のデータブロックを32ビットから48ビットへ拡張するステップと、XOR演算を介してこの拡張の結果を48ビットのサブキーと合成するステップと、この合成の結果を8つの代入ボックス(substitution box)へ送って、追加の32ビットを生成するステップと、この生成の結果を置換するステップとを含む。関数fの出力は別のXOR演算によって左半分のブロックと合成され、この合成の結果は新しい右半分のブロックとして使用され、一方で古い右半分のブロックは、次のラウンドの新しい左半分のブロックとして使用される。各ラウンドごとにfを再構成して、次の関係式を満足させることができるので、DESのラウンドは可逆性(reversible)である。
【0009】
【数2】
【0010】
データブロックは二値形式であるので、DESのような従来技術の方法では、プレーンテキストメッセージ(その要素はnの項のカルテシアン積Z2×Z2×...×Z2の組のメンバーである)を暗号文メッセージ(同様にその要素はnの項のカルテシアン積Z2×Z2×...×Z2の組のメンバーである)へ暗号化する。ここで使用されているように、Zmは、加法のモジューロmにしたがう巡回群{0,1,...,m−1}である。したがって、DESの目的は、プレーンテキスト(例えば、元のデータ)のメッセージ内のビットの順序を変更することではない。むしろ、DESの目的は、暗号文の各ビットがプレーンテキストの全ビットに依存するような暗号文を生成することである。
【0011】
DESは可逆性であり、キーの制御のもとで264の入力を264の出力へ変換するので、DESは、キーが整数の組{0,1,...,264−1}の置換を選択する方法であると考えることもでき、したがってキーによって選択される置換は、許可されていない当事者から隠され続けなければならない。
【0012】
通常の通信では、MACは、メッセージと、メッセージの発信者および受信者のみが知っている共有の秘密キーKとが入力された関数の出力である。選択された特定の関数が保護されているときは、送られたメッセージを傍受し、かつそれを変更する可能性のあるアクティブなアタッカー(active attacker)は、キーKを発見することも、受信者が合理的な確率で妥当(valid)として受信することになるメッセージを生成することもできない。
【0013】
新しいタイプのMACは、1999年8月9日に出願された米国特許出願第09/371,147号(“METHOD AND APPARATUS FOR GENERATING A MESSAGE AUTHENTICATION CODE”)において提案され、本発明の譲受人によって譲渡され、ここでは参考文献として十分に取り入れており、このMACは、幾つかのキーの影響のもとでmビットのデータブロックのビットを再び順序付け、再び順序付けられたmビットブロックの線形関数であるxビットの巡回冗長検査(cyclic redundancy check, CRC)を構成することに依存している。このMACは、CRC−MACと呼ぶ。送信者は元のm−ビットのデータブロックをCRC−MACと一緒に受信者へ送る。受信者は共有のキーを使用して、受信したデータメッセージのビットを再び順序付ける。次に受信者は生成されたブロックからCRCを計算する。この方法を使用すると、受信者は、データが転送中に変更されたかどうかを検出することと、伝送中に発生した少数のエラーを訂正することができ、一方でアクティブなアタッカーには、メッセージを偽造または変更するのがさらに困難になる。
【0014】
m+x=2x−1−1であるとき、mおよびxが最適であることは、よく知られている。xビットのCRC−MACの構成は、米国特許出願第09/371,147号により詳しく記載されている。この技術において普通の技能をもつ者には、16ビットのCRCは無線通信の分野において特定用途をもつことが知られている。上述の関係式において数x=16を使用すると、CRC−MACの構成のためのデータブロックの最適な大きさは、m=(215−1)−16=32,751ビットである。
【0015】
mおよびxの最適値について既に記載したように、CRC−MACには、元のmビットのデータブロックのビットを再び順序付けることによって、キーを使用してmビットの中間ブロック、ここではm=(2x−1−1)を構成する方法が必要である。米国特許出願第09/371,147号に記載されているように、mビットの中間ブロックの構成は2つのアルゴリズムを使用して実行することができる。第1のアルゴリズムで、各指数(indices)をmビットのデータブロック内のビットへ処理する。第1のアルゴリズムは、mビットのデータブロックの各ビット位置と関係する各指数xについて、xと同じ範囲内のユニークな指数yを判断する(なお、yはxおよび共有の秘密キーから判断される)ため第2のアルゴリズムに要求する。次に第1のアルゴリズムで、中間のブロックのビット位置yの値を、データブロックの位置xにおけるビットの値に設定する。
【0016】
第1のアルゴリズムが範囲{0,1,...,m−1}内の指数xの各々についてこれらのステップを実行すると、中間のブロックはmビットのブロックになり、ここにはデータブロックのビットが異なる順序で含まれている。CRC−MACを保護するために、所与のキーについて、第1のアルゴリズムが中間のブロックの同じ位置に同じブロックからの2ビットを置かないことが必要である。第2のアルゴリズムが、各キーごとに組{0,1,...,m−1}から各キー自体への1対1のマッピングを定義するときのみ、この条件は満たされる。1対1のマッピングは、この技術では一般的に置換(permutation)と呼ばれている。したがって、CRC−MACには、キーを使用して、組{0,1,...,m−1}における置換を定義する方法が必要である。さらに、キーによって選択される置換は、許可されていない当事者からは隠され続けなければならない。
【0017】
DESは、キーを使用して整数の組{0,1,...,264−1}における置換を判断する方法であるとすると、キーによって選択される置換は許可されていない当事者から隠され続けなければならない。mの値が264であるときは、DESは第2のアルゴリズムに対する条件を満たしていることになる。しかしながら、DESおよび他のブロックの暗号は順序(order)2Mの組間の1対1の関係を生成するためにのみ構成されていて、他の順序の組間の1対1の関係を定義していないので、このような暗号を第2のアルゴリズムとして使用することはできない。さもなければ、ブロックの暗号の特性は、第2のアルゴリズムに必要な条件を満たし、第2のアルゴリズムは同じ保護の概念で構成されていたであろう。
【0018】
RSAアルゴリズムおよびEl−Gamalアルゴリズムのようないくつかの公開鍵暗号化アルゴリズムは、キーがZN(Nは2の累乗以外の一定の値)における置換を定義するための方法を開示している。しかしながら、これらの公開鍵アルゴリズムは32,751のような小さい値のNに対しては保護されていないので、これらの方法はCRC−MACで使用されるべきではない。キーによって選択される置換は、CRC−MACに必要なNの値について、許可されていない当事者から隠されなければならない。
【0019】
したがって、現在はCRC−MACにおいて大きい数(large number)のNのデータビットを置換することが求められている。上述の最適の場合は、データブロックには32,751ビットが含まれているべきである。既に記載したように、Nビットを置換するには、キーによって選択される置換が許可されていない当事者から隠され続けるように、キーが組{0,1,...,N−1}=ZNに対する置換を定義する方法が必要である。このような方法に求められることは、Nが合成数(composite)であっても、素数(prime)であっても、いかなるNの値にも適用できることである。素数は1よりも大きい整数であって、1と自分自身のみを因数とする整数である。合成数は1よりも大きく、素数でない整数である。このような方法は、遠隔通信システムにおけるメッセージの認証およびエラー訂正の他に、種々の幅広い応用に適用できる。
【0020】
要約
本発明では、Nの値が2の累乗でないとき、キーによって選択される置換が許可されていない当事者から隠され続けるように、キーが組ZNに対する置換を定義する方法が求められていることに対処した。本発明は、13以上のすべての整数に応用可能である。Nが素数であるか、合成数であるかにしたがって、異なる方法を使用する。
【0021】
本発明は、Nビットのデータブロックを置換するための方法に関し、Nビットのデータブロックの各ビットは、複数のNの指数の中の指数と関係している。Nが合成数であり、かつNが1よりも大きい整数値pと1よりも大きい整数値qとへ因数分解されるときは、本発明は、幾つかのラウンドを行なうことによって入力値から出力値を求める方法であって、各ラウンドは、第2の部分と整数値qによって乗算された第1の部分との合成として表わすことができる入力値を、グループZpについて構成されている第1の部分と、グループZqについて構成されている第2の部分とへ分割するステップと、第1の2分の1ラウンドのキーと第2の2分の1ラウンドのキーとを構成するステップと、第2の部分および第1の2分の1ラウンドのキーとから、第2の部分と第1の2分の1ラウンドのキーとについて演算する第1の非線形関数の出力である第1の2分の1ラウンドの値を求めるステップと、モジューロpの加算器を使用して、第1の2分の1ラウンドの値を第1の部分と合成して、第3の部分を生成するステップと、第3の部分と第2の2分の1のラウンドのキーとから、第3の部分と第2の2分の1ラウンドのキーとについて演算する第2の非線形関数の出力である第2の2分の1のラウンドの値を求めるステップと、モジューロqの加算器を使用して、第2の2分の1ラウンドの値と第2の部分とを合成するステップと、第3の部分を整数値qによって乗算して、第2の2分の1ラウンドの値を加算することによって、第2の2分の1ラウンドからの出力値を構成するステップとが含まれている方法に関する。
【0022】
Nが13よりも大きい素数であるときは、Nは2つの合成数SとTとの和として書き表わすことができ、組ZNを、Sに等しい要素数をもつ組Aと、Tに等しい要素数をもつ組Bとの2つの組へ分割することができる。合成数Nについての上述の方法は、組Aにおける置換と、組Bにおける置換とを定義するのに適用でき、幾つかのラウンドを実行することによって入力値から出力値を求めることができ、各ラウンドは素数のラウンドと混合のラウンドとから構成されていて、かつ最終のラウンドは素数のラウンドのみである。素数のラウンドでは、ラウンドの入力値が組Aに含まれているか、または組Bに含まれているかを判断し、値が組Aに含まれているときは、既に記載したようにラウンドのキーによって定義されている組Aにおける置換を使用して入力値から第1の値を判断し、値が組Bに含まれているときは、既に記載したようにラウンドのキーによって定義される組Bにおける置換を使用して入力値から第1の値を判断するステップを含み、混合のラウンドでは、全組ZNについて、A内の値の約S/NをA内の値にマップする特性をもつ簡単な置換へ、第1の値を入力して、ラウンドの出力を生成するステップを含む。
【0023】
好ましい実施形態の詳細な説明
図1は、FIPS PUB46−2において(1993年12月30日に)発行されたデータ暗号化標準規格(Data Encryption Standard, DES)によって指定されている従来技術の暗号化計算のブロック図である。64ビットブロックの入力100は、最初の置換ステップ101にしたがって置換される。最初の置換ステップ101の結果は、ブロックL0102およびR0103である。
【0024】
第1のラウンドでは、ブロックR0103およびブロックのキービットK1104は、関数f105によって演算される。ブロックf105およびブロックL0102の出力は、モジューロ2の加算器106を使用して合成され、ブロックR1113を形成する。ブロックL1112は、ブロックR0103に等しく設定される。
【0025】
第2のラウンドでは、ブロックR1113およびブロックのキービットK2114は、関数f115によって演算される。関数f115およびブロックL1112の出力は、モジューロ2の加算器116を使用して合成され、ブロックR2123を形成する。ブロックL2122は、ブロックR1113に等しく設定される。
【0026】
第1のラウンドおよび第2のラウンドについて記載されている手続きは、16ラウンドが完了するまで繰返される。n番目のラウンド中に、ブロックのキービットKn124およびブロックRnは、関数f125によって演算され、この演算の出力は、モジューロ2の加算器126を使用してブロックLnと合成される。最終のラウンドでは、ブロックR16142およびブロックL16143が逆の最初の置換ステップ144へ入力され、出力145を形成する。
【0027】
DES方法では、ブロックのビットを演算し、他のブロックの暗号もブロックのビットについて演算する。したがって、現在の最新技術では、大きさ2n(nは全体的にブロック内のビット数)のブロックの暗号化に焦点を当てている。本発明は、任意の大きさの組からの値の暗号化を向上した改良である。
【0028】
図2は、本発明の1つのラウンドの例示的な実施形態のブロック図であり、キーによる整数置換(keyed integer permutation, KIP)はZN(Nは素数ではない)について構成されている。N=pq(整数p>1およびq>1)とする。入力Ci200は2つの部分、すなわち部分Li210およびRi211へ分割され、Ci=Li−q+Ri,Li∈ZpおよびRi∈Zqとなる。部分Ri211および2分の1のラウンド値K1i212は非線形関数f1213によって演算され、2分の1のラウンドの値viを形成する。2分の1のラウンドの値viは、モジューロpの加算器215を使用して部分Liへ加算され、部分L’i220を形成する。部分L’i220および2分の1のラウンドキーK2i222は、非線形関数f2223によって演算され、2分の1のラウンド値v’iを形成する。2分の1のラウンド値v’iおよび部分Ri211をモジューロqの加算器225を使用して一緒に加算して、部分R’i221を求める。出力部分Ci+1230は、式Ci+1=L’i−q+R’iによって形成される。その代わりに、L’i220およびR’i221を次の反復ラウンドで使用してもよい。
【0029】
図2に記載した方法は可逆であり、したがってCiはCi+1から判断することができる。最初に、Ci+1は部分L’iおよびR’iへ分割され、関係式Ci+1=L’i−q+R’iを満足させる。Riを導き出すには、v’i=f2(L’i,K2i)を求めて、R’i(モジューロq)から2分の1のラウンドの値v’iを減算する。結果の値はRiである。Riが分かると、vi=f1(Ri,K1i)を評価し、L’i(モジューロp)から2分の1ラウンドの値viを減算することによって、Liを求める。結果の値はLiである。Ciの値はCi=L’i−q+Riとして判断される。
【0030】
図3は、プロセッサを使用した整数置換デバイスのブロック図である。制御装置320はプロセッサ322に接続されていて、プロセッサ322の動作を指示する命令の組を含んでいる。制御装置320はソフトウエアプログラムまたは1組のマイクロコードを含むことができる。プロセッサ322は、置換デバイスによって要求される操作を実行するハードウエアである。プロセッサ322はマイクロ制御装置、マイクロプロセッサ、または本明細書に記載した機能を実行するように設計されたディジタル信号プロセッサとして構成することができる。プロセッサ322にはメモリ素子324が接続されていて、メモリ素子324は値および命令を記憶するのに使用される。メモリ素子324はランダムアクセスメモリか、または本明細書に記載した機能を実行するように設計されている他のメモリデバイスと共に構成されていてもよい。命令および値は、読み出し専用メモリ、ランダムアクセスメモリ、または他のメモリデバイス内に記憶することができる。
【0031】
図2に概ね示されているように、ZNに対するキーによる整数置換を生成する方法は、pおよびqに対する種々の選択に適応するように変更することができる。図4は、キーによる整数置換方法の1ラウンドの実施形態のブロック図であり、なおp=178、q=184であり、したがってN=32752である。さらに加えて、数値32752は89×23×24へ因数分解でき、なお89×2=178、23×23=184である。入力Ci400は2つの部分、すなわち部分Li410および部分Ri411へ分割され、したがってCi=184 Li+Riである。部分Li400はLi=Ci div 184から求めることができる(なお、A div Bは(A÷B)の整数部分である)。部分Ri411は、Ri=Ci mod 184から求めることができる。
【0032】
部分Ri411および定数α413は、モジューロ356の乗算器414によって一緒に乗算され、乗算結果uを生成する。乗算結果uおよび2分の1のラウンドキー値K1i412はモジューロ356の加算器416によって一緒に加算され、合成結果wを生成する。整数値356=2*178であることに注意すべきである。ステップ419では、合成結果wは、関係式w=x*m+yによって代入表示値(substitution indicator value)xおよび代入入力値(substitution input value)yへ分解され、なお代入表示値xは組Z2の要素であり、代入入力値yは組Zmの要素であり、mはpに等しく設定され、この特定の実施形態ではp=178である。代入表示値xを使用して、各々がZ178における置換である2つの代入ボックスS0420およびS1421の一方を選択する。代入表示値xを使用して、代入ボックスSxを選択した後で、代入ボックスSxによって代入入力値yを演算して、2分の1ラウンドの値viを求める。モジューロ178の加算器423によって2分の1ラウンドの値viおよび部分Li410を演算して、部分L’i424を求める。
【0033】
モジューロ368の加算器426によって部分L’i424および定数β425を一緒に乗算して、乗算結果u’を生成する。整数値368=2*184であることに注意すべきである。モジューロ368の加算器429によって乗算値u’および2分の1ラウンドのキーの値K2i428を一緒に加算して、合成結果w’を生成する。ステップ430では、関係式w’=x’*n+y’によって合成結果w’を代入表示値x’および代入入力値y’へ分解する(なお、代入表示値x’は組Z2の要素であり、代入入力値y’は組Znの要素であり、nはqに等しく設定され、この特定の実施形態ではq=184である)。代入表示値x’を使用して、各々がZ186に対する置換である2つの代入ボックスT0433およびT1434の一方を選択する。代入表示値x’を使用して、代入ボックスTx’を選択した後で、代入ボックスTx’によって代入入力値y’を演算して、2分の1ラウンドの値v’iを求める。モジューロ178の加算器436によって2分の1ラウンドの値v’iおよび部分Ri411を演算して、部分R’i437を求める。
【0034】
キーによる整数置換のために選択された2つの関数f1480およびf2490は、構造において互いに類似している。関数f1480は定数によって入力を乗算し、結果のモジューロ2pを低減し、値uを求める。本発明の上述の実施形態では、2p=356である。関数f2490では、定数β=368によって入力を乗算して、結果のモジューロ2q(2q=368)を低減して、値u’を求める。定数αおよびβは、αと356とが互いに素であり、βと368とが互いに素であるように選択される。例えば、33と356とは互いに素であるので、定数αは整数値33に等しく設定できる。乗算の後で、2分の1ラウンドのキーをモジューロ356に加算して、w=x*m+y(x∈Z2、y∈Zj、jはそれぞれ値pまたはqをもつ)として表わすことができる出力値wを求める。xの値を使用して、2つの代入ボックスの一方を選択する。関数f1480では、これらの2つの代入ボックスはS0、S1で示され、各代入ボックスZ178における置換である。関数f2490では、これらの2つの代入ボックスはT0、T1で示され、各代入ボックスはZ184における置換である。f1の出力はvi=Sx(y)であり、f2の出力はv’i=Tx(y)の出力である。
【0035】
2分の1ラウンドのキー値K1 i およびK2 i の判断
本発明の実施形態における2分の1ラウンドのキー値はSOBERIIのストリーム暗号によって生成でき、なおSOBERIIのストリーム暗号は、1997年9月22日に出願された米国特許出願第08/934,582号(“METHOD AND APPARATUS FOR GENERATING ENCRYPTION STREAM CIPERS”)、1997年10月24日に出願された米国特許出願第08/957,571号(“METHOD AND APPARATUS FOR GENERATING ENCRYPTION STREAM CIPERS”)、1998年8月28日に出願された米国特許出願第09/143/441号(“METHOD AND APPARATUS FOR GENERATING ENCRYPTION STREAM CIPERS”)、および1999年9月8日に出願された米国特許出願第09/246,366号(“METHOD AND APPARATUS FOR GENERATING ENCRYPTION STREAM CIPERS”)に記載されている。上述の特許出願は本発明の譲受人に譲渡されており、本明細書では別途記載しない。しかしながら、ストリーム暗号が、均等に分配されているバイトを生成するときは、このようなストリーム暗号を使用して、2分の1ラウンドのキーの値を生成できることに注意すべきである。このようなストリーム暗号がs0,s1,...,st,...で表わされる出力バイトを生成するとき、2つの連続しているバイトの整数値zt=256s2t+s2t+1はZ65536において均等に分配されることに注意すべきである。本発明の例示的な実施形態では、SOBERIIは、セッションキーおよび恐らくは若干の追加のデータを使用して初期設定され、s0,s1,...,st,...で表わされる十分なバイトの出力を生成する。2分の1のラウンドのキーは、均等に分配されるように設計されている。均等に分配された2分の1のラウンドのキーを生成する1つの方法では、ztが65504未満であるときのみ、2つの連続している整数値バイトzt=256s2t+s2t+1を使用する。65504は整数値356(2p=356)および368(2q=368)によって因数分解できるので、低減されたモジューロ356またはモジューロ368で
ある0ないし65503の均等に分配された数ztも、それぞれZ356およびZ368において均等に分配されることになる。
【0036】
ztの値を、t=0から計算する。ztが65504以上であるときは、tはインクリメントされ、ztの値はtの新しい値において計算される。このプロセスは、ztの値が65504未満であることが分かるまで繰返される。次に65504未満のztの値は、K11を求めるための低減されたモジューロ356である。K1iを判断した後で、tの値はインクリメントされ、tの新しい値においてztの値を計算する。ztが65504以上であるときは、tはインクリメントされ、tの新しい値においてztの値を計算する。このプロセスは、ztの新しい値が65504未満であることが分かるまで繰返される。65504未満のこのztの値は、K21を求めるための低減されたモジューロ368である。K11をおよびK21を判断すると、tはインクリメントされ、tから0へ設定しなくても、プロセスはこの方法の始めに戻る。全ての2分の1のラウンドキーが求められるまで、この方法を繰返して、K12、K22、K13、K23などを判断する。図5は、この反復プロセスを詳しく示したフローチャートである。
【0037】
ステップ500では、指数(index)tは0に等しく設定され、ラウンド数iは1に設定される。ステップ510では、中間値ztは関係式zt=256s2t+s2t+1によって判断される。ztが65504未満であるときは、ステップ520へ進む。ztが65504以上であるときは、ステップ530へ進む。ステップ520では、K1iはzt mod 356に等しく設定され、指数tはインクリメントされ、プロセスのフローチャートはステップ540へ進む。ステップ530では、指数tはインクリメントされ、プロセスのフローチャートはステッ510へ進む。ステップ540では、値ztを関係式zt=256s2t+s2t+1(指数tはステップ520においてインクリメントされている)によって判断する。ztが65504未満であるときは、ステップ550へ進み、ztが65504以上であるときは、ステップ560へ進む。ステップ550では、、K2iはzt mod 368に等しく設定され、指数tおよびiはインクリメントされる。i<rであるときは、ステップ510へ戻る。ステップ560では、指数tはインクリメントされ、プログラムのフローチャートはステップ540へ進む。
【0038】
本発明の別の実施形態では、図2に概ね示したキーによる整数置換はZ32751についてp=33およびq=1213として実行される。(32751=33×1213であることに注意すべきである。)図6は、p=33およびq=1213を使用して、この方法の1ラウンドを示すブロック図である。入力Ci600はCi=Li *1213+Riとなるように、2つの部分、部分Li601および部分Ri602へ分割される。部分Li601は関係式Li=Ci div (1213)によって判断でき、部分Riは関係式Ri=Ci mod (1213)によって判断できる。部分Ri602および定数α603をモジューロ273の乗算器604によって一緒に乗算され、乗算結果uが求められる。定数α603および数273(273=19683)が互いに素であるように組Z19683から選択する。ステップ609では、uを関係式u=272u1+27u2+u3によって因数分解して、項u1、u2、u3を求める。
【0039】
モジューロ27の加算器613を使用して、項u1およびサブキーの値K1Ai610を一緒に加算し、代入入力値g1を求める。モジューロ27の加算器614を使用して、項u2およびサブキーの値K1Bi611を一緒に加算し、代入入力値g2を求める。モジューロ27の加算器615を使用して、項u3およびサブキーの値K1Ci612を一緒に加算し、代入入力値g3を求める。本明細書に記載した方法には、pおよびq、またはuの適切な選択値に依存して、多数の可能な実行形態があることに注意すべきである。例えば、uが、ステップ609において使用されている3つの項ではなく、4以上の項(例えば、u=273u1+272u2+27u3+u4)へ因数分解されるときは、加算器の数は増加することになる。加算器の数が増加すると、適切な数のサブキーの値も必要となる。サブキーの値K1Ai610、K1Bi611、およびK1Ci612は、組Z27の要素から選択され、別途記載する方法で判断される。例えば、uが4以上の項に因数分解される場合は、過多に実験をしなくても、より多くのサブキー値を生成し、本発明の他の実施形態を満足させるような方法にすることができる。
【0040】
代入入力値g1を代入ボックスS1619によって演算して、代入された値h1を求める。代入入力値g2を代入ボックスS2620によって演算して、代入された値h2を求める。代入入力値g3を代入ボックスS3620によって演算して、代入された値h3を求める。代入された値h1、代入された値h2、および代入された値h3をモジューロ27の加算器625によって一緒に加算して、2分の1のラウンド値viを判断する。2分の1のラウンド値viおよび部分Li601をモジューロ27の加算器627を使用して一緒に加算して、部分L’i628を求める。
【0041】
部分L’i628および定数β650をモジューロ1213の乗算器655によって乗算して、乗算結果をu’iを求める。定数β650は、組Z1213のゼロ以外の要素から選択される。乗算結果u’iおよび2分の1ラウンドのキー値K2i653をモジューロ1213の加算器656を使用して一緒に加算して、代入入力値g’を求める。代入入力値g’を代入ボックスT657へ送って、2分の1ラウンドの値v’iを求める。2分の1ラウンドの値v’iおよび部分Ri602をモジューロ1213加算器658を使用して一緒に加算し、部分R’i659を求める。部分L’i628および部分R’i659は、次の反復ラウンドにおいて使用される。代わりのやり方では、部分L’i628を数値=1213によって乗算し、部分R’i659へ加算し、部分Ci+1660を形成する。
【0042】
2分の1ラウンドのキー値K1 i = { K1A i ,K1B i ,K1C i } およびK2 i の判断
本発明のこの実施形態において2分の1ラウンドのキーの値はSOBERIIのストリーム暗号によって生成される。しかしながら、ストリーム暗号が均等に分配されたバイトを生成するときは、ストリーム暗号を使用して、2分の1ラウンドのキーの値を生成することができる。このようなストリーム暗号がs0,s1,...,st,...で表わされる出力バイトを生成するときは、2つの連続しているバイトの整数値、zt=256s2t+s2t+1はZ65536について均等に分配されることになることに注意すべきである。
【0043】
サブキーの値の組K1i={K1Ai,K1Bi,K1Ci}は、数が0ないし59048(59049=3×273)の間で均等に分配され、かつ低減されたモジューロ273であるときは、数はZ27×Z27×Z27について均等に分配されているという解析(observation)によって判断される。2分の1ラウンドのキー値K2iは、数が0ないし65501(65502=54×1213)の間で均等に分配され、かつ低減されたモジューロ1213であるときは、数はZ1213についても均等に分配されているという解析によって判断される。これらの解析を使用すると、K1i={K1Ai,K1Bi,K1Ci}およびK2iの値(1≦i≦r)を判断するための例示的な方法には、図7に詳しく示したステップが含まれる。
【0044】
ステップ700では、指数tは0に等しく設定され、ラウンド数iは1に等しく設定される。ステップ710では、中間値ztは、関係式zt=256s2t+s2t+1によって判断される。ztが59049であるときは、ステップ720へ進む。ztが59049以上であるときは、ステップ730へ進む。ステップ730では、指数tはインクリメントされ、プロセスのフローチャートはステップ710へ進む。ステップ720では、K1iがzt mod 19683に等しく設定され、指数tはインクリメントされる。ステップ725では、K1i=272K1Ai+27K1Bi+K1Ciとなるように、K1Ai,K1Bi,K1Ciの値を判断する。ステップ725の次は、プログラムのフローチャートはステップ740へ進む。ステップ740では、値ztは関係式zt=256s2t+s2t+1(指数tはステップ720においてインクリメントされている)によって判断される。ztが65502未満であるときは、ステップ750へ進み、ztが65502以上であるときは、ステップ760へ進む。ステップ750では、K2iがzt mod 1213に等しく設定され、指数tおよびiはインクリメントされる。i<rであるときは、ステップ710へ戻る。ステップ760では、指数tはインクリメントされ、プログラムのフローチャートはステップ740へ進む。
【0045】
上述の方法を使用するとき、サブキーK1Ai,K1Bi,K1Ci(1≦i≦r)の各々は、Z27について均等に分配され、第2の2分の1のラウンドのキーK2iは(1≦i≦r)、Z1213について均等に分配される。代入ボックスは、非線形性およびランダム性のような、十分な暗号特性をもつように選択される。2分の1のラウンドキーが均等に分配されていないときは、代入ボックスへの入力は均等に分配されず、独立する。
【0046】
本明細書に記載したキーによる整数置換方法は、メッセージ認証コードで使用することを意図されているが、1組の整数のキーによる置換が要求される場合に使用してもよい。例えば、本明細書に記載した本発明の実施形態を使用して、DESが組{0,1,...,264−1}内の整数を組{0,1,...,264−1}内の他の整数へ暗号化するやり方と類似したやり方で、組{0,1,...,N−1}内の整数を組{0,1,...,N−1}内の他の整数へ暗号化することができる。
【0047】
本明細書に記載したキーによる整数置換の暗号化プロセスと暗号化プロセスとは、各ラウンド内の2つの2分の1ラウンドの関数の順序が逆にされていること、出力viがLiから減算されたモジューロpであること、および出力v’iがRiからの減算されたモジューロqであることを除いて暗号プロセスと同じである。
【0048】
図8は、本発明の別の例示的な実施形態のブロック図であり、キーによる整数の置換はZN(Nは素数)について構成されている。N=S+Tとする。N≧13の各値には、N=S+Tとなるような2つの構成要素SおよびTが存在することに注意すべきである。したがって、ステップ800では、Nの指数のグループは、Sの指数から構成されているセクションA801と、Tの指数から構成されているセクションB802とへ分割される。セクションA801の指数は{a0,a1,...,aS−1}へ再び分類され、セクションB802の指数は{b0,b1,...,bT−1}へ再び分類される。セクションA801の指数は、キーによる整数置換KIPS810にしたがって置換される。キーによる整数置換KIPS810は、既に記載した本発明の実施形態にしたがって実行することができる。セクションB802の指数は、キーによる整数置換KIPT811にしたがって置換される。キーによる整数置換KIPT811は、既に記載した本発明の実施形態にしたがって実行することができる。
【0049】
したがって、KIPNの素数のラウンドは次のように定義することができる:
x∈{a0,a1,...,aS−1}であるときは、
KIPA,B(x)=KIPS(x)、または、
x∈{b0,b1,...,bT−1}であるときは、
KIPT(x)。
【0050】
ステップ820では、KIPA,B(x)の出力に“混合(mixing)”演算、例えばアフィン演算AffS(x)=U*x+V(mod N)(1≦U≦N−1、UおよびVの値は保護キー(secure key)に依存する)を行なう。数学的に、演算子B:C DはBr=Ar+b(C,D⊆R、bはDの固定要素、rはCの要素、AはCをDへマップする線形演算子)によって定義されるとき、Bはアフィン演算子である。
【0051】
図8の一般的な方法では、素数の要素をもつ組を、各組が素数の要素以外から構成されている2以上の組へ分割し、次に図2および本発明の他の種々の実施形態に記載したキーによる整数置換を合成数の組について行なう。1つの組の要素の置換は、この1つの組によって定義される出力になるので、各ラウンドの後で1つの組の要素を別の組に挿入する混合演算を行なう。
【0052】
図8に概ね記載されているように、本発明の1つの実施形態では、N=S+Tとする(Nは素数であり、SおよびTは合成数である)。A={0,1,S−1}およびB={S,...,N−1}と定義すると、組A内の要素数は|A|=Sであり、組B内の要素数は|B|=Tである。素数のラウンドは、0≦x≦S−1であるときは、KIPA,B(x)=KIPS(x)であり、S≦x≦N−1であるときは、KIPA,B(x)=S+KIPT(x―S)であると定めることができる。
【0053】
図8に概ね記載されているように、本発明の別の実施形態では、Nは素数であり、N=2T+1とする(TおよびT+1は合成数である)。A={0,2,4,...,2T}={2y:y∈ZT+1}およびB={1,3,5,...,2T−1}={2y+1:y∈ZT}と定義する。したがって、組Aは偶数の値を含み、組Bは奇数の値を含んでいる。したがって素数のラウンドはx=2yであるときは、KIPA,B(x)=2KIPT+1(y)であり、x=2y+1であるときは、KIPA,B(x)=1+KIPT(y))であると定義することができる。
【0054】
図8に記載されているように、本発明のさらに別の実施形態では、ステップ820のアフィンマッピング演算において使用されているように、固定定数を使用することができる。Prob(AffU,V(x) in A:× in A)がほぼ|A|/Nとなるように、UおよびVの値を選択する。UおよびVの値は、組AおよびB内の要素の区分に依存する。組AおよびBは、|A|〜|B|〜(N/2)になるように選択される。置換Y3=KIPN(X0)は、4つの素数のラウンドおよび3つのアフィンラウンドをもち、置換は次に示すものによって定義される:
Y0=KIPA,B(X0),
X1=AffU,V(Y0),
Y1=KIPA,B(X1),
X2=AffU,V(Y1),
Y2=KIPA,B(X2),
X3=AffU,V(Y2),
Y3=KIPA,B(X3)。
【0055】
KIPAおよびKIPBは、KIPNのキーの長さに等しいキーの長さで保護されると仮定する。4つの素数のラウンド内のKIPAおよびKIPBに必要な8つの2分の1ラウンドのキーを求めるのに、KIPNはSOBERIIのようなキースケジュールをもたなければならない。この構成は、保護されている置換になると考えられている。
【0056】
大きい数の素数のラウンドまたはキーに依存するアフィンラウンド、あるいはこの両者を使用するために、他の実施形態を構成してもよい。使用される素数のラウンドの数が増加すると、素数のラウンドの関数を、より弱いキーによる整数置換から構成して、速度を増すことができる。
【0057】
ZNになるキーによる整数置換を構成する方法を記載してきた。発明の詳細な記述(description)は、当業者が本発明を実行または使用できるようにするために与えられている。これらの実施形態に対する種々の変形は、当業者には容易に明らかであり、本明細書において定義されている一般的な原理は、発明的な能力(inventive faculty)を使用せずに他の実施形態に応用することができる。したがって、本発明は、本明細書に開示した実施形態に制限されることを意図されるのではなく、本明細書に記載した原理および新規な特徴と一致する最も幅広い技術的範囲にしたがうことを意図されている。
【図面の簡単な説明】
【図1】
DESという名前の従来技術の暗号化計算のフローチャート。
【図2】
モジューロpの加算器とモジューロqの加算器とを使用する暗号化計算の本発明の実施形態のブロック図。
【図3】
プロセッサを使用する整数置換デバイスのブロック図。
【図4】
Z32752における暗号化計算のブロック図。
【図5】
図4の暗号化計算において実行されているように、2分の1ラウンドのキーK1iおよびK2iの偏差を示すフローチャート。
【図6】
Z32751に対する別の暗号化計算のブロック図。
【図7】
図6の暗号化計算において実行されている2分の1ラウンドのキーK1iおよびK2iの偏差を示すフローチャート。
【図8】
ZN(Nは素数)に対して実行される本発明の実施形態の暗号化計算のブロック図。
Claims (22)
- p>1およびq>1として、N=pqである場合に、ZNの入力値からZNの出力値を求めるための、複数のラウンドから成る方法であって、各ラウンドが、
第1のキーおよび第2のキーを生成するステップと、
ラウンドの入力を、Zpの要素である第1の部分と、Zqの要素である第2の部分とに分割するステップと、
第1のキーを第2の部分に適用し、Zpの要素である第3の部分を生成するステップと、
モジューロpの加算器を使用して第1の部分および第2の部分を加算して、第4の部分を生成するステップと、
第2のキーを第4の部分へ適用し、Zqの要素である第5の部分を生成するステップと、
モジューロqの加算器を使用して第5の部分を第2の部分へ加算して、第6の部分を生成するステップと、
第4の部分と第6の部分を合成して、ラウンドの出力を形成するステップとを含み、
ラウンドが最終のラウンドであるとき、ラウンドの出力が本方法の出力値であるか、さもなければラウンドの出力が次のラウンドへの入力になる方法。 - Nビットのデータブロックを置換するための方法であって、Nビットのデータブロックの各ビットを複数のNの指数の中からの指数と関係付け、Nを2以上の整数値pおよび2以上の整数値qへ因数分解し、
複数のNの指数を、グループZpについて構成されている第1の部分とグループZqについて構成されている第2の部分とへ分割して、複数のNの指数を第2の部分と、整数値qによって定義される多価の第1の部分との合成として表わすステップと、
第1の2分の1ラウンドのキーと第2の2分の1ラウンドのキーとを構成するステップと、
第2の部分と第1の2分の1ラウンドのキーとから、第2の部分と第1の2分の1ラウンドのキーとについて演算する第1の非線形関数の出力である第1の2分の1ラウンドの値を求めるステップと、
モジューロpの加算器を使用して、第1の2分の1ラウンドの値を第1の部分と合成して、第3の部分を生成するステップと、
第3の部分と第2の2分の1ラウンドのキーとから、第3の部分と第2の2分の1ラウンドのキーとについて演算する第2の非線形関数の出力である第2の2分の1ラウンドの値を求めるステップと、
モジューロqの加算器を使用して、第2の2分の1ラウンドの値と第2の部分とを合成して、第4の部分を生成するステップとを含む方法。 - 複数のラウンドの各ラウンドごとにステップが反復し、各ラウンドにおいて生成される第3の部分および第4の部分を、次のラウンドへの入力として使用する請求項2記載の方法。
- 次のラウンドが最終のラウンドであり、
最終のラウンドにおいて生成される第3の部分を整数値qと乗算するステップと、
乗算された第3の部分と、最終ラウンドにおいて生成された第4の部分とを合成して、最終結果を生成するステップと、
最終結果にしたがってNビットのデータブロックを置換するステップとを含む請求項3記載の方法。 - 第1の2分の1ラウンドのキーおよび第2の2分の1ラウンドのキーをストリーム暗号によって生成する請求項2記載の方法。
- 第1の2分の1ラウンドのキーおよび第2の2分の1ラウンドのキーをキー生成方法によって生成する方法であって、
複数の均等に分配されたバイトを生成するステップと、
先ず複数の均等に分配されているバイトの連続している要素の第1の対の一方を乗数によって乗算し、連続している要素の第1の対を一緒に加算して、中間値を生成するステップと、
第1の中間値を検査して、第1の中間値が第1の所定量よりも小さいかどうかを判断するステップと、
第1の中間値が第1の所定量よりも大きいときは、複数の均等に分配されているバイトの連続している要素の第1の対を一緒に加算するステップへ戻るステップと、
第1の中間値を第1の整数値だけモジュールによって低減して、第1の2分の1ラウンドのキーを生成するステップと、
先ず複数の均等に分配されているバイトの連続している要素の第2の対の一方を乗数によって乗算し、連続している要素の第2の対を一緒に加算して、中間値を生成するステップと、
第2の中間値を検査して、第2の中間値が第2の所定量よりも小さいかどうかを判断するステップと、
第2の中間値が第1の所定量よりも大きいときは、複数の均等に分配されているバイトの連続している要素の第2の対を一緒に加算するステップへ戻るステップと、
第2の中間値を第2の整数値だけモジュールによって低減して、第2の2分の1ラウンドのキーを生成するステップと、
第1の2分の1ラウンドのキーと第2の2分の1ラウンドのキーとの複数の対の各々が複数のラウンドの各々と関係しているように、第1の2分の1ラウンドのキーと第2の2分の1ラウンドのキーとの複数の対を生成するために、キー生成方法のステップを繰返すステップとを含む請求項2記載の方法。 - 第1の所定量が第2の所定量に等しい請求項6記載のキー生成方法。
- n≧2であり、xが第1の所定量の因数であり、かつiが反復ラウンドを識別するときに、キー生成方法が複数のサブキー{a1,i,a2,i..,an,i}について値を判断し、第1の2分の1ラウンドのキーはK1i=xn−1a1,i+xn−2a2,i+...+an,iであるステップをさらに含む請求項6記載のキー生成方法。
- 第1の非線形関数が、
第2の部分を第1の定数値によって乗算して、第1の乗算結果を生成するステップと、
第1の乗算結果を第1の2分の1ラウンドのキーと合成して、第1の合成結果を生成するステップと、
第1の合成結果を代入して、第1の合成結果を置換して、第1の2分の1ラウンドの値を生成するステップを含む方法である請求項2記載の方法。 - 第1の合成結果を代入するステップであって、
第1の合成値を代入表示値および代入入力値へ分解するステップと、
代入表示値を使用して、第1の複数の置換ボックスの1つを選択するステップと、
第1の複数の代入ボックスからの選択された代入ボックスへ代入入力値を入力して、第1の2分の1ラウンドの値を生成するステップを含む請求項9記載の方法。 - 第2の非線形関数が、
第2の定数値によって第3の部分を乗算して、第2の乗算結果を生成するステップと、
第2の乗算結果を第2の2分の1ラウンドのキーと合成して、第2の合成結果を生成するステップと、
第2の合成結果を代入して、第2の合成結果を置換して、第2の2分の1ラウンドの値を生成するステップとを含む方法である請求項2記載の方法。 - 第1の合成結果を代入するステップが、
第1の合成結果を代入表示値および代入入力値へ分解するステップと、
代入表示値を使用して、第2の複数の代入ボックスの1つを選択するステップと、
第2の複数の代入ボックスからの選択された代入ボックスへ代入入力値を入力し、第2の2分の1ラウンドの値を生成するステップとを含む請求項11記載の方法。 - 第1の非線形関数が、
第1の定数値によって第2の部分を乗算して、第1の乗算結果を生成するステップと、
第1の乗算結果がxn−1u1+xn−2u2+...+unに等しくなるように、第1の乗算結果をunで表わした複数の項へ分解するステップと、
複数の項の各々を複数のサブキーa1,i,a2,i..,an,iの関係するものとモジュールによって加算して、複数の代入入力値を生成するステップと、
複数の代入入力値の各々を複数の代入ボックスの関係するものへ入力して、複数の代入値を生成するステップと、
複数の代入された値の中の少なくとも2つをモジュールによって加算して、第1の2分の1ラウンドの値を生成するステップとを含む方法である請求項8記載の方法。 - Nが13以上の素数であり、SおよびTが、N=S+Tとなるような合成数の値であるときに、ZNの入力値からZNの出力値を求めるための、複数のラウンドから成る方法であって、この方法の各ラウンドが、
第1のキーおよび第2のキーを生成するステップと、
第1の組のSの入力値内の各要素を組{0,...,S−1}内のユニークな指数へ割り当てるステップと、
Tの入力値の第2の組内の各要素を組{0,...,T−1}内のユニークな指数へ割り当てるステップと、
複数の入力指数が組{0,...,S−1}の要素であるときに、第1のキーを使用する第1のキーによる整数置換を複数の入力指数に行って、第1の複数の出力指数を生成するステップと、
複数の入力指数が組{0,...,T−1}の要素であるときに、第2のキーを使用する第2のキーによる整数置換を複数の入力指数に行って、第2の複数の出力指数を生成するステップと、
第1の複数の出力指数を第2の複数の出力指数と混合するステップとを含む方法。 - 第1の複数の出力指数を第2の複数の出力指数と混合するステップからの出力が、次のラウンドのための入力として使用される請求項14記載の方法。
- 次のラウンドが最終ラウンドである方法であって、第1の複数の出力指数を第2の複数の出力指数と混合するステップからの出力にしたがって、入力ビット配置を出力ビット配置へ再配置するステップをさらに含む請求項15記載の方法。
- プロセッサと、
記憶媒体とを含む無線通信デバイスであって、
記憶媒体がプロセッサによって実行可能な命令を記憶し、プロセッサがNビットのデータブロックを置換し、各ビットが複数のNの指数の中からの指数と関係付けられ、複数のNの指数が、
複数のNの指数の各々を、グループZpについて構成されている第1の部分と、グループZqについて構成されている第2の部分とに分割し、複数のNの指数の各々が、第2の部分と、整数値qによって定義される多価の第1の部分との合成として表わすことができるステップと、
第1の2分の1ラウンドのキーと第2の2分の1ラウンドのキーとを構成するステップと、
第2の部分と第1の2分の1ラウンドのキーとから、第2の部分と第1の2分の1ラウンドのキーとについて演算する第1の非線形関数の出力である第1の2分の1ラウンドの値を求めるステップと、
モジューロpの加算器を使用して、第1の2分の1ラウンドの値を第1の部分と合成して、第3の部分を生成するステップと、
第3の部分と第2の2分の1ラウンドのキーとから、第3の部分と第2の2分の1ラウンドのキーとに対して演算する第2の非線形関数の出力である第2の2分の1ラウンドの値を求めるステップと、
モジューロqの加算器を使用して、第2の2分の1ラウンドの値を第2の部分と合成して、第4の部分を生成するステップとを含む方法によって置換される無線通信デバイス。 - プロセッサと、
記憶媒体とを含む無線通信デバイスであって、
記憶媒体がプロセッサによって実行可能な1組の命令を記憶し、プロセッサがNビットのデータブロックを置換し、Nが合成数または素数であり、Nが合成数であるときは、プロセッサはNビットのデータブロックに対してキーによる整数置換を行なうための1組の命令を実行するが、Nが素数であるときは、プロセッサはNビットのデータブロックを第1の組と第2の組とに分割して、第1の組に対して第1のキーによる整数置換を、第2の組に対して第2のキーによる整数置換を行なう1組の命令を実行する無線通信デバイス。 - p>1およびq>1として、N=pqであるときに、ZNの入力値からZNの出力値を求めるための装置であって、
第1のキーおよび第2のキーを生成するための手段と、
1ラウンドの入力を、Zpの要素である第1の部分と、Zqの要素である第2の部分とに分割するための手段と、
第1のキーを第2の部分に適用し、Zpの要素である第3の部分を生成するための手段と、
モジューロpの加算器を使用して第1の部分と第3の部分とを加算して、第4の部分を生成するための手段と、
第2のキーを第4の部分へ適用し、Zqの要素である第5の部分を生成するための手段と、
モジューロqの加算器を使用して第5の部分を第2の部分へ加算して、第6の部分を生成する手段と、
第4の部分と第6の部分とを合成して、ラウンドの出力を形成する手段とを含む装置。 - Nが13以上の素数であり、SおよびTが、N=S+Tとなるような合成数の値であるときに、ZNの入力値からZNの出力値を求める装置であって、複数のラウンドを含み、各ラウンドが、
第1のキーおよび第2のキーを生成するための手段と、
第1の組のSの入力値を組{0,...,S−1}内のユニークな指数へ割り当てるための手段と、
Tの入力値の第2の組内の各要素を組{0,...,T−1}内のユニークな指数へ割り当てるための手段と、
複数の入力指数が組{0,...,S−1}の要素であるとき、第1のキーを使用する第1のキーによる整数置換を複数の入力指数に対して行って、第1の複数の出力指数を生成するための手段と、
複数の入力指数が組{0,...,T−1}の要素であるとき、第2のキーを使用する第2のキーによる整数置換を複数の入力指数に対して行って、第2の複数の出力指数を生成するための手段と、
第1の複数の出力指数を第2の複数の出力指数と混合する手段とを含む装置。 - 第1のステーションと第2のステーションとの間で送られるNビットのデータメッセージを認証するための方法であって、
第1のステーションにおいてグループZNの複数の要素に対してキーによる整数置換を使用して、置換順序を生成するステップと、
置換順序にしたがってNビットのデータメッセージ内の複数のビットを再び順序付けて、置換されたNビットのメッセージを形成するステップと、
置換されたNビットのメッセージに基づいて第1の巡回冗長検査(cyclic redundancy check, CRC)メッセージを生成するステップと、
Nビットのデータメッセージおよび第1の巡回冗長検査メッセージを第1のステーションから第2のステーションへ送るステップと、
第2のステーションにおいて受信したNビットのデータメッセージおよび受信した巡回冗長検査メッセージを検出するステップと、
受信したNビットのデータメッセージに対してキーによる整数の置換を使用して、第2のステーションにおける第2の置換順序を求めるステップと、
第2の置換順序に基づいて第2の巡回冗長検査メッセージを生成するステップと、
受信した巡回冗長検査メッセージと第2の巡回冗長検査メッセージとを比較して、受信した巡回冗長検査メッセージおよび第2の巡回冗長検査メッセージが整合するとき、受信したNビットのデータメッセージが認証されるステップとを含む方法。 - エラーを訂正するのに使用できる方法であって、
受信した巡回冗長検査メッセージおよび第2の巡回冗長検査メッセージとを比較するステップの結果が、所定の閾値以下のエラー量になるかどうかを判断するステップと、
比較するステップの結果が所定の閾値以下のエラー量になるときは、受信した巡回冗長検査メッセージを使用して、受信したNビットのデータメッセージを訂正するステップと、
比較するステップの結果が所定の閾値よりも多いエラー量になるときは、Nビットのデータメッセージの再伝送を要求するステップをさらに含む請求項21記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/563,648 US7428305B1 (en) | 2000-05-02 | 2000-05-02 | Generation of keyed integer permutations for message authentication codes |
PCT/US2001/014129 WO2001084772A2 (en) | 2000-05-02 | 2001-05-01 | Generation of keyed integer permutations for message authentication codes |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004511812A true JP2004511812A (ja) | 2004-04-15 |
Family
ID=24251366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001581474A Withdrawn JP2004511812A (ja) | 2000-05-02 | 2001-05-01 | メッセージ認証コードのためのキーの整数の置換の生成 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7428305B1 (ja) |
EP (1) | EP1279250A2 (ja) |
JP (1) | JP2004511812A (ja) |
KR (1) | KR20030019365A (ja) |
CN (1) | CN1435026A (ja) |
AU (1) | AU2001257489A1 (ja) |
BR (1) | BR0110497A (ja) |
TW (1) | TW533726B (ja) |
WO (1) | WO2001084772A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012141189A1 (ja) * | 2011-04-11 | 2012-10-18 | 日本電気株式会社 | 暗号化方法、暗号化装置および暗号化プログラム |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4549303B2 (ja) * | 2005-02-07 | 2010-09-22 | 株式会社ソニー・コンピュータエンタテインメント | パイプラインを用いてメッセージ認証コードを提供する方法および装置 |
WO2006122326A1 (en) * | 2005-05-11 | 2006-11-16 | Imetrikus, Inc. | Methods for ensuring accuracy of health-related data transmission over a network |
CN1777089B (zh) * | 2005-11-24 | 2010-11-17 | 上海森田科学技术研究所有限公司 | 一种复数移相加密解密方法 |
CN101169776B (zh) * | 2006-10-27 | 2012-01-25 | 松下电器产业株式会社 | 提升中央处理单元运算效能的数据加密方法及加密装置 |
KR20080072345A (ko) * | 2007-02-02 | 2008-08-06 | 삼성전자주식회사 | 암호화 장치 및 그 방법 |
FR2918830B1 (fr) * | 2007-07-13 | 2009-10-30 | Viaccess Sa | Verification de code mac sans revelation. |
US8411554B2 (en) | 2009-05-28 | 2013-04-02 | Apple Inc. | Methods and apparatus for multi-dimensional data permutation in wireless networks |
CN103595539B (zh) * | 2013-11-26 | 2016-08-24 | 南开大学 | 保留格式的数值型个人识别信息的加密方法 |
US20150222421A1 (en) * | 2014-02-03 | 2015-08-06 | Qualcomm Incorporated | Countermeasures against side-channel attacks on cryptographic algorithms |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4850019A (en) * | 1985-11-08 | 1989-07-18 | Nippon Telegraph And Telephone Corporation | Data randomization equipment |
US4754482A (en) * | 1985-11-26 | 1988-06-28 | Samco Investment Company | Method and apparatus for synchronizing encrypting and decrypting systems |
JP2683022B2 (ja) * | 1988-04-13 | 1997-11-26 | 株式会社日立製作所 | データ秘匿方式 |
US5077793A (en) * | 1989-09-29 | 1991-12-31 | The Boeing Company | Residue number encryption and decryption system |
US5511123A (en) * | 1994-08-04 | 1996-04-23 | Northern Telecom Limited | Symmetric cryptographic system for data encryption |
US6038317A (en) * | 1997-12-24 | 2000-03-14 | Magliveras; Spyros S. | Secret key cryptosystem and method utilizing factorizations of permutation groups of arbitrary order 2l |
US6185679B1 (en) * | 1998-02-23 | 2001-02-06 | International Business Machines Corporation | Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks |
WO2000051286A1 (en) | 1999-02-26 | 2000-08-31 | Bitwise Designs, Inc. | Digital file management and imaging system and method including secure file marking |
-
2000
- 2000-05-02 US US09/563,648 patent/US7428305B1/en not_active Expired - Fee Related
-
2001
- 2001-05-01 CN CN01810848A patent/CN1435026A/zh active Pending
- 2001-05-01 JP JP2001581474A patent/JP2004511812A/ja not_active Withdrawn
- 2001-05-01 BR BR0110497-7A patent/BR0110497A/pt not_active IP Right Cessation
- 2001-05-01 EP EP01931009A patent/EP1279250A2/en not_active Withdrawn
- 2001-05-01 AU AU2001257489A patent/AU2001257489A1/en not_active Abandoned
- 2001-05-01 WO PCT/US2001/014129 patent/WO2001084772A2/en not_active Application Discontinuation
- 2001-05-01 KR KR1020027014648A patent/KR20030019365A/ko not_active Application Discontinuation
- 2001-05-02 TW TW090110501A patent/TW533726B/zh not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012141189A1 (ja) * | 2011-04-11 | 2012-10-18 | 日本電気株式会社 | 暗号化方法、暗号化装置および暗号化プログラム |
JP6052166B2 (ja) * | 2011-04-11 | 2016-12-27 | 日本電気株式会社 | 暗号化方法、暗号化装置および暗号化プログラム |
Also Published As
Publication number | Publication date |
---|---|
EP1279250A2 (en) | 2003-01-29 |
CN1435026A (zh) | 2003-08-06 |
AU2001257489A1 (en) | 2001-11-12 |
US7428305B1 (en) | 2008-09-23 |
KR20030019365A (ko) | 2003-03-06 |
WO2001084772A3 (en) | 2002-04-11 |
WO2001084772A2 (en) | 2001-11-08 |
TW533726B (en) | 2003-05-21 |
BR0110497A (pt) | 2004-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7054445B2 (en) | Authentication method and schemes for data integrity protection | |
US8321675B2 (en) | Method and apparatus for facilitating efficient authenticated encryption | |
US7305084B2 (en) | Fast encryption and authentication for data processing systems | |
JP3188940B2 (ja) | 暗号化システム | |
US6950517B2 (en) | Efficient encryption and authentication for data processing systems | |
US10009171B2 (en) | Construction and uses of variable-input-length tweakable ciphers | |
US7451310B2 (en) | Parallelizable authentication tree for random access storage | |
WO2015015702A1 (ja) | 認証暗号装置、認証暗号方法および認証暗号用プログラム | |
JP5079204B2 (ja) | 対称鍵暗号のための線形変換 | |
US20020071552A1 (en) | Method and apparatus for facilitating efficient authenticated encryption | |
EP1566009B1 (en) | Method of generating a stream cipher using multiple keys | |
CA2627136A1 (en) | Message authentication device, message authentication method, message authentication program and storage medium therefor | |
US20030152219A1 (en) | Efficient stream cipher system and method | |
WO2013065241A1 (ja) | インクリメンタルmacタグ生成装置、方法及びプログラム並びにメッセージ認証装置 | |
WO2008115476A1 (en) | A simple and efficient one-pass authenticated encryyption scheme | |
US6560337B1 (en) | Systems, methods and computer program products for reducing effective key length of ciphers using one-way cryptographic functions and an initial key | |
Knudsen | Block Ciphers—a survey | |
JP2004511812A (ja) | メッセージ認証コードのためのキーの整数の置換の生成 | |
JP3238670B2 (ja) | ハッシュ関数方式 | |
Hawkes et al. | The mundja streaming mac | |
Adamo et al. | Hardware based encryption for wireless networks | |
KR20030001888A (ko) | 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법 | |
Alawadhi et al. | A Crypto-System with Embedded Error Control for Secure and Reliable Communication | |
JP3220099B2 (ja) | ハッシュ関数方式 | |
Ciet et al. | of Deliverable Report on the Performance Evaluation of |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20040928 |