JP2004511812A - メッセージ認証コードのためのキーの整数の置換の生成 - Google Patents

メッセージ認証コードのためのキーの整数の置換の生成 Download PDF

Info

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
Application number
JP2001581474A
Other languages
English (en)
Inventor
ホークス、フィリップ
ローズ、グレゴリー・ジー
クイック、ロイ・フランクリン・ジュニア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2004511812A publication Critical patent/JP2004511812A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public 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/3033Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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/3073Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3242Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless

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が素数であるときに、組Zに対してキーによる整数置換を構成する方法。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】
Figure 2004511812
【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】
Figure 2004511812
【0010】
データブロックは二値形式であるので、DESのような従来技術の方法では、プレーンテキストメッセージ(その要素はnの項のカルテシアン積Z×Z×...×Zの組のメンバーである)を暗号文メッセージ(同様にその要素はnの項のカルテシアン積Z×Z×...×Zの組のメンバーである)へ暗号化する。ここで使用されているように、Zは、加法のモジューロ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)2の組間の1対1の関係を生成するためにのみ構成されていて、他の順序の組間の1対1の関係を定義していないので、このような暗号を第2のアルゴリズムとして使用することはできない。さもなければ、ブロックの暗号の特性は、第2のアルゴリズムに必要な条件を満たし、第2のアルゴリズムは同じ保護の概念で構成されていたであろう。
【0018】
RSAアルゴリズムおよびEl−Gamalアルゴリズムのようないくつかの公開鍵暗号化アルゴリズムは、キーがZ(Nは2の累乗以外の一定の値)における置換を定義するための方法を開示している。しかしながら、これらの公開鍵アルゴリズムは32,751のような小さい値のNに対しては保護されていないので、これらの方法はCRC−MACで使用されるべきではない。キーによって選択される置換は、CRC−MACに必要なNの値について、許可されていない当事者から隠されなければならない。
【0019】
したがって、現在はCRC−MACにおいて大きい数(large number)のNのデータビットを置換することが求められている。上述の最適の場合は、データブロックには32,751ビットが含まれているべきである。既に記載したように、Nビットを置換するには、キーによって選択される置換が許可されていない当事者から隠され続けるように、キーが組{0,1,...,N−1}=Zに対する置換を定義する方法が必要である。このような方法に求められることは、Nが合成数(composite)であっても、素数(prime)であっても、いかなるNの値にも適用できることである。素数は1よりも大きい整数であって、1と自分自身のみを因数とする整数である。合成数は1よりも大きく、素数でない整数である。このような方法は、遠隔通信システムにおけるメッセージの認証およびエラー訂正の他に、種々の幅広い応用に適用できる。
【0020】
要約
本発明では、Nの値が2の累乗でないとき、キーによって選択される置換が許可されていない当事者から隠され続けるように、キーが組Zに対する置換を定義する方法が求められていることに対処した。本発明は、13以上のすべての整数に応用可能である。Nが素数であるか、合成数であるかにしたがって、異なる方法を使用する。
【0021】
本発明は、Nビットのデータブロックを置換するための方法に関し、Nビットのデータブロックの各ビットは、複数のNの指数の中の指数と関係している。Nが合成数であり、かつNが1よりも大きい整数値pと1よりも大きい整数値qとへ因数分解されるときは、本発明は、幾つかのラウンドを行なうことによって入力値から出力値を求める方法であって、各ラウンドは、第2の部分と整数値qによって乗算された第1の部分との合成として表わすことができる入力値を、グループZについて構成されている第1の部分と、グループZについて構成されている第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との和として書き表わすことができ、組Zを、Sに等しい要素数をもつ組Aと、Tに等しい要素数をもつ組Bとの2つの組へ分割することができる。合成数Nについての上述の方法は、組Aにおける置換と、組Bにおける置換とを定義するのに適用でき、幾つかのラウンドを実行することによって入力値から出力値を求めることができ、各ラウンドは素数のラウンドと混合のラウンドとから構成されていて、かつ最終のラウンドは素数のラウンドのみである。素数のラウンドでは、ラウンドの入力値が組Aに含まれているか、または組Bに含まれているかを判断し、値が組Aに含まれているときは、既に記載したようにラウンドのキーによって定義されている組Aにおける置換を使用して入力値から第1の値を判断し、値が組Bに含まれているときは、既に記載したようにラウンドのキーによって定義される組Bにおける置換を使用して入力値から第1の値を判断するステップを含み、混合のラウンドでは、全組Zについて、A内の値の約S/NをA内の値にマップする特性をもつ簡単な置換へ、第1の値を入力して、ラウンドの出力を生成するステップを含む。
【0023】
好ましい実施形態の詳細な説明
図1は、FIPS PUB46−2において(1993年12月30日に)発行されたデータ暗号化標準規格(Data Encryption Standard, DES)によって指定されている従来技術の暗号化計算のブロック図である。64ビットブロックの入力100は、最初の置換ステップ101にしたがって置換される。最初の置換ステップ101の結果は、ブロックL102およびR103である。
【0024】
第1のラウンドでは、ブロックR103およびブロックのキービットK104は、関数f105によって演算される。ブロックf105およびブロックL102の出力は、モジューロ2の加算器106を使用して合成され、ブロックR113を形成する。ブロックL112は、ブロックR103に等しく設定される。
【0025】
第2のラウンドでは、ブロックR113およびブロックのキービットK114は、関数f115によって演算される。関数f115およびブロックL112の出力は、モジューロ2の加算器116を使用して合成され、ブロックR123を形成する。ブロックL122は、ブロックR113に等しく設定される。
【0026】
第1のラウンドおよび第2のラウンドについて記載されている手続きは、16ラウンドが完了するまで繰返される。n番目のラウンド中に、ブロックのキービットK124およびブロックRは、関数f125によって演算され、この演算の出力は、モジューロ2の加算器126を使用してブロックLと合成される。最終のラウンドでは、ブロックR16142およびブロックL16143が逆の最初の置換ステップ144へ入力され、出力145を形成する。
【0027】
DES方法では、ブロックのビットを演算し、他のブロックの暗号もブロックのビットについて演算する。したがって、現在の最新技術では、大きさ2(nは全体的にブロック内のビット数)のブロックの暗号化に焦点を当てている。本発明は、任意の大きさの組からの値の暗号化を向上した改良である。
【0028】
図2は、本発明の1つのラウンドの例示的な実施形態のブロック図であり、キーによる整数置換(keyed integer permutation, KIP)はZ(Nは素数ではない)について構成されている。N=pq(整数p>1およびq>1)とする。入力C200は2つの部分、すなわち部分L210およびR211へ分割され、C=Li−q+R,L∈ZおよびR∈Zとなる。部分R211および2分の1のラウンド値K1212は非線形関数f213によって演算され、2分の1のラウンドの値vを形成する。2分の1のラウンドの値vは、モジューロpの加算器215を使用して部分Lへ加算され、部分L’220を形成する。部分L’220および2分の1のラウンドキーK2222は、非線形関数f223によって演算され、2分の1のラウンド値v’を形成する。2分の1のラウンド値v’および部分R211をモジューロqの加算器225を使用して一緒に加算して、部分R’221を求める。出力部分Ci+1230は、式Ci+1=L’i−q+R’によって形成される。その代わりに、L’220およびR’221を次の反復ラウンドで使用してもよい。
【0029】
図2に記載した方法は可逆であり、したがってCはCi+1から判断することができる。最初に、Ci+1は部分L’およびR’へ分割され、関係式Ci+1=L’i−q+R’を満足させる。Rを導き出すには、v’=f(L’,K2)を求めて、R’(モジューロq)から2分の1のラウンドの値v’を減算する。結果の値はRである。Rが分かると、v=f(R,K1)を評価し、L’(モジューロp)から2分の1ラウンドの値vを減算することによって、Lを求める。結果の値はLである。Cの値はC=L’i−q+Rとして判断される。
【0030】
図3は、プロセッサを使用した整数置換デバイスのブロック図である。制御装置320はプロセッサ322に接続されていて、プロセッサ322の動作を指示する命令の組を含んでいる。制御装置320はソフトウエアプログラムまたは1組のマイクロコードを含むことができる。プロセッサ322は、置換デバイスによって要求される操作を実行するハードウエアである。プロセッサ322はマイクロ制御装置、マイクロプロセッサ、または本明細書に記載した機能を実行するように設計されたディジタル信号プロセッサとして構成することができる。プロセッサ322にはメモリ素子324が接続されていて、メモリ素子324は値および命令を記憶するのに使用される。メモリ素子324はランダムアクセスメモリか、または本明細書に記載した機能を実行するように設計されている他のメモリデバイスと共に構成されていてもよい。命令および値は、読み出し専用メモリ、ランダムアクセスメモリ、または他のメモリデバイス内に記憶することができる。
【0031】
図2に概ね示されているように、Zに対するキーによる整数置換を生成する方法は、pおよびqに対する種々の選択に適応するように変更することができる。図4は、キーによる整数置換方法の1ラウンドの実施形態のブロック図であり、なおp=178、q=184であり、したがってN=32752である。さらに加えて、数値32752は89×23×2へ因数分解でき、なお89×2=178、23×2=184である。入力C400は2つの部分、すなわち部分L410および部分R411へ分割され、したがってC=184 +Rである。部分L400はL=C div 184から求めることができる(なお、A div Bは(A÷B)の整数部分である)。部分R411は、R=C mod 184から求めることができる。
【0032】
部分R411および定数α413は、モジューロ356の乗算器414によって一緒に乗算され、乗算結果uを生成する。乗算結果uおよび2分の1のラウンドキー値K1412はモジューロ356の加算器416によって一緒に加算され、合成結果wを生成する。整数値356=2178であることに注意すべきである。ステップ419では、合成結果wは、関係式w=xm+yによって代入表示値(substitution indicator value)xおよび代入入力値(substitution input value)yへ分解され、なお代入表示値xは組Zの要素であり、代入入力値yは組Zの要素であり、mはpに等しく設定され、この特定の実施形態ではp=178である。代入表示値xを使用して、各々がZ178における置換である2つの代入ボックスS420およびS421の一方を選択する。代入表示値xを使用して、代入ボックスSを選択した後で、代入ボックスSによって代入入力値yを演算して、2分の1ラウンドの値vを求める。モジューロ178の加算器423によって2分の1ラウンドの値vおよび部分L410を演算して、部分L’424を求める。
【0033】
モジューロ368の加算器426によって部分L’424および定数β425を一緒に乗算して、乗算結果u’を生成する。整数値368=2184であることに注意すべきである。モジューロ368の加算器429によって乗算値u’および2分の1ラウンドのキーの値K2428を一緒に加算して、合成結果w’を生成する。ステップ430では、関係式w’=x’n+y’によって合成結果w’を代入表示値x’および代入入力値y’へ分解する(なお、代入表示値x’は組Zの要素であり、代入入力値y’は組Zの要素であり、nはqに等しく設定され、この特定の実施形態ではq=184である)。代入表示値x’を使用して、各々がZ186に対する置換である2つの代入ボックスT433およびT434の一方を選択する。代入表示値x’を使用して、代入ボックスTx’を選択した後で、代入ボックスTx’によって代入入力値y’を演算して、2分の1ラウンドの値v’を求める。モジューロ178の加算器436によって2分の1ラウンドの値v’および部分R411を演算して、部分R’437を求める。
【0034】
キーによる整数置換のために選択された2つの関数f480およびf490は、構造において互いに類似している。関数f480は定数によって入力を乗算し、結果のモジューロ2pを低減し、値uを求める。本発明の上述の実施形態では、2p=356である。関数f490では、定数β=368によって入力を乗算して、結果のモジューロ2q(2q=368)を低減して、値u’を求める。定数αおよびβは、αと356とが互いに素であり、βと368とが互いに素であるように選択される。例えば、33と356とは互いに素であるので、定数αは整数値33に等しく設定できる。乗算の後で、2分の1ラウンドのキーをモジューロ356に加算して、w=xm+y(x∈Z、y∈Z、jはそれぞれ値pまたはqをもつ)として表わすことができる出力値wを求める。xの値を使用して、2つの代入ボックスの一方を選択する。関数f480では、これらの2つの代入ボックスはS、Sで示され、各代入ボックスZ178における置換である。関数f490では、これらの2つの代入ボックスはT、Tで示され、各代入ボックスはZ184における置換である。fの出力はv=S(y)であり、fの出力はv’=T(y)の出力である。
【0035】
2分の1ラウンドのキー値K1 およびK2 の判断
本発明の実施形態における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ラウンドのキーの値を生成できることに注意すべきである。このようなストリーム暗号がs,s,...,s,...で表わされる出力バイトを生成するとき、2つの連続しているバイトの整数値z=256s2t+s2t+1はZ65536において均等に分配されることに注意すべきである。本発明の例示的な実施形態では、SOBERIIは、セッションキーおよび恐らくは若干の追加のデータを使用して初期設定され、s,s,...,s,...で表わされる十分なバイトの出力を生成する。2分の1のラウンドのキーは、均等に分配されるように設計されている。均等に分配された2分の1のラウンドのキーを生成する1つの方法では、zが65504未満であるときのみ、2つの連続している整数値バイトz=256s2t+s2t+1を使用する。65504は整数値356(2p=356)および368(2q=368)によって因数分解できるので、低減されたモジューロ356またはモジューロ368で
ある0ないし65503の均等に分配された数zも、それぞれZ356およびZ368において均等に分配されることになる。
【0036】
の値を、t=0から計算する。zが65504以上であるときは、tはインクリメントされ、zの値はtの新しい値において計算される。このプロセスは、zの値が65504未満であることが分かるまで繰返される。次に65504未満のzの値は、K1を求めるための低減されたモジューロ356である。K1を判断した後で、tの値はインクリメントされ、tの新しい値においてzの値を計算する。zが65504以上であるときは、tはインクリメントされ、tの新しい値においてzの値を計算する。このプロセスは、zの新しい値が65504未満であることが分かるまで繰返される。65504未満のこのzの値は、K2を求めるための低減されたモジューロ368である。K1をおよびK2を判断すると、tはインクリメントされ、tから0へ設定しなくても、プロセスはこの方法の始めに戻る。全ての2分の1のラウンドキーが求められるまで、この方法を繰返して、K1、K2、K1、K2などを判断する。図5は、この反復プロセスを詳しく示したフローチャートである。
【0037】
ステップ500では、指数(index)tは0に等しく設定され、ラウンド数iは1に設定される。ステップ510では、中間値zは関係式z=256s2t+s2t+1によって判断される。zが65504未満であるときは、ステップ520へ進む。zが65504以上であるときは、ステップ530へ進む。ステップ520では、K1はz mod 356に等しく設定され、指数tはインクリメントされ、プロセスのフローチャートはステップ540へ進む。ステップ530では、指数tはインクリメントされ、プロセスのフローチャートはステッ510へ進む。ステップ540では、値zを関係式z=256s2t+s2t+1(指数tはステップ520においてインクリメントされている)によって判断する。zが65504未満であるときは、ステップ550へ進み、zが65504以上であるときは、ステップ560へ進む。ステップ550では、、K2はz mod 368に等しく設定され、指数tおよびiはインクリメントされる。i<rであるときは、ステップ510へ戻る。ステップ560では、指数tはインクリメントされ、プログラムのフローチャートはステップ540へ進む。
【0038】
本発明の別の実施形態では、図2に概ね示したキーによる整数置換はZ32751についてp=3およびq=1213として実行される。(32751=3×1213であることに注意すべきである。)図6は、p=3およびq=1213を使用して、この方法の1ラウンドを示すブロック図である。入力C600はC=L 1213+Rとなるように、2つの部分、部分L601および部分R602へ分割される。部分L601は関係式L=C div (1213)によって判断でき、部分Rは関係式R=C mod (1213)によって判断できる。部分R602および定数α603をモジューロ27の乗算器604によって一緒に乗算され、乗算結果uが求められる。定数α603および数27(27=19683)が互いに素であるように組Z19683から選択する。ステップ609では、uを関係式u=27+27u+uによって因数分解して、項u、u、uを求める。
【0039】
モジューロ27の加算器613を使用して、項uおよびサブキーの値K1A610を一緒に加算し、代入入力値gを求める。モジューロ27の加算器614を使用して、項uおよびサブキーの値K1B611を一緒に加算し、代入入力値gを求める。モジューロ27の加算器615を使用して、項uおよびサブキーの値K1C612を一緒に加算し、代入入力値gを求める。本明細書に記載した方法には、pおよびq、またはuの適切な選択値に依存して、多数の可能な実行形態があることに注意すべきである。例えば、uが、ステップ609において使用されている3つの項ではなく、4以上の項(例えば、u=27+27+27u+u)へ因数分解されるときは、加算器の数は増加することになる。加算器の数が増加すると、適切な数のサブキーの値も必要となる。サブキーの値K1A610、K1B611、およびK1C612は、組Z27の要素から選択され、別途記載する方法で判断される。例えば、uが4以上の項に因数分解される場合は、過多に実験をしなくても、より多くのサブキー値を生成し、本発明の他の実施形態を満足させるような方法にすることができる。
【0040】
代入入力値gを代入ボックスS619によって演算して、代入された値hを求める。代入入力値gを代入ボックスS620によって演算して、代入された値hを求める。代入入力値gを代入ボックスS620によって演算して、代入された値hを求める。代入された値h、代入された値h、および代入された値hをモジューロ27の加算器625によって一緒に加算して、2分の1のラウンド値vを判断する。2分の1のラウンド値vおよび部分L601をモジューロ27の加算器627を使用して一緒に加算して、部分L’628を求める。
【0041】
部分L’628および定数β650をモジューロ1213の乗算器655によって乗算して、乗算結果をu’を求める。定数β650は、組Z1213のゼロ以外の要素から選択される。乗算結果u’および2分の1ラウンドのキー値K2653をモジューロ1213の加算器656を使用して一緒に加算して、代入入力値g’を求める。代入入力値g’を代入ボックスT657へ送って、2分の1ラウンドの値v’を求める。2分の1ラウンドの値v’および部分R602をモジューロ1213加算器658を使用して一緒に加算し、部分R’659を求める。部分L’628および部分R’659は、次の反復ラウンドにおいて使用される。代わりのやり方では、部分L’628を数値=1213によって乗算し、部分R’659へ加算し、部分Ci+1660を形成する。
【0042】
2分の1ラウンドのキー値K1 K1A ,K1B ,K1C およびK2 の判断
本発明のこの実施形態において2分の1ラウンドのキーの値はSOBERIIのストリーム暗号によって生成される。しかしながら、ストリーム暗号が均等に分配されたバイトを生成するときは、ストリーム暗号を使用して、2分の1ラウンドのキーの値を生成することができる。このようなストリーム暗号がs,s,...,s,...で表わされる出力バイトを生成するときは、2つの連続しているバイトの整数値、z=256s2t+s2t+1はZ65536について均等に分配されることになることに注意すべきである。
【0043】
サブキーの値の組K1={K1A,K1B,K1C}は、数が0ないし59048(59049=3×27)の間で均等に分配され、かつ低減されたモジューロ27であるときは、数はZ27×Z27×Z27について均等に分配されているという解析(observation)によって判断される。2分の1ラウンドのキー値K2は、数が0ないし65501(65502=54×1213)の間で均等に分配され、かつ低減されたモジューロ1213であるときは、数はZ1213についても均等に分配されているという解析によって判断される。これらの解析を使用すると、K1={K1A,K1B,K1C}およびK2の値(1≦i≦r)を判断するための例示的な方法には、図7に詳しく示したステップが含まれる。
【0044】
ステップ700では、指数tは0に等しく設定され、ラウンド数iは1に等しく設定される。ステップ710では、中間値zは、関係式z=256s2t+s2t+1によって判断される。zが59049であるときは、ステップ720へ進む。zが59049以上であるときは、ステップ730へ進む。ステップ730では、指数tはインクリメントされ、プロセスのフローチャートはステップ710へ進む。ステップ720では、K1がz mod 19683に等しく設定され、指数tはインクリメントされる。ステップ725では、K1=27K1A+27K1B+K1Cとなるように、K1A,K1B,K1Cの値を判断する。ステップ725の次は、プログラムのフローチャートはステップ740へ進む。ステップ740では、値zは関係式z=256s2t+s2t+1(指数tはステップ720においてインクリメントされている)によって判断される。zが65502未満であるときは、ステップ750へ進み、zが65502以上であるときは、ステップ760へ進む。ステップ750では、K2がz mod 1213に等しく設定され、指数tおよびiはインクリメントされる。i<rであるときは、ステップ710へ戻る。ステップ760では、指数tはインクリメントされ、プログラムのフローチャートはステップ740へ進む。
【0045】
上述の方法を使用するとき、サブキーK1A,K1B,K1C(1≦i≦r)の各々は、Z27について均等に分配され、第2の2分の1のラウンドのキーK2は(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ラウンドの関数の順序が逆にされていること、出力vがLから減算されたモジューロpであること、および出力v’がRからの減算されたモジューロqであることを除いて暗号プロセスと同じである。
【0048】
図8は、本発明の別の例示的な実施形態のブロック図であり、キーによる整数の置換はZ(Nは素数)について構成されている。N=S+Tとする。N≧13の各値には、N=S+Tとなるような2つの構成要素SおよびTが存在することに注意すべきである。したがって、ステップ800では、Nの指数のグループは、Sの指数から構成されているセクションA801と、Tの指数から構成されているセクションB802とへ分割される。セクションA801の指数は{a,a,...,aS−1}へ再び分類され、セクションB802の指数は{b,b,...,bT−1}へ再び分類される。セクションA801の指数は、キーによる整数置換KIP810にしたがって置換される。キーによる整数置換KIP810は、既に記載した本発明の実施形態にしたがって実行することができる。セクションB802の指数は、キーによる整数置換KIP811にしたがって置換される。キーによる整数置換KIP811は、既に記載した本発明の実施形態にしたがって実行することができる。
【0049】
したがって、KIPの素数のラウンドは次のように定義することができる:
x∈{a,a,...,aS−1}であるときは、
KIPA,B(x)=KIP(x)、または、
x∈{b,b,...,bT−1}であるときは、
KIP(x)。
【0050】
ステップ820では、KIPA,B(x)の出力に“混合(mixing)”演算、例えばアフィン演算Aff(x)=Ux+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)=KIP(x)であり、S≦x≦N−1であるときは、KIPA,B(x)=S+KIP(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∈Z}と定義する。したがって、組Aは偶数の値を含み、組Bは奇数の値を含んでいる。したがって素数のラウンドはx=2yであるときは、KIPA,B(x)=2KIPT+1(y)であり、x=2y+1であるときは、KIPA,B(x)=1+KIP(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)になるように選択される。置換Y=KIP(X)は、4つの素数のラウンドおよび3つのアフィンラウンドをもち、置換は次に示すものによって定義される:
=KIPA,B(X),
=AffU,V(Y),
=KIPA,B(X),
=AffU,V(Y),
=KIPA,B(X),
=AffU,V(Y),
=KIPA,B(X)。
【0055】
KIPおよびKIPは、KIPのキーの長さに等しいキーの長さで保護されると仮定する。4つの素数のラウンド内のKIPおよびKIPに必要な8つの2分の1ラウンドのキーを求めるのに、KIPはSOBERIIのようなキースケジュールをもたなければならない。この構成は、保護されている置換になると考えられている。
【0056】
大きい数の素数のラウンドまたはキーに依存するアフィンラウンド、あるいはこの両者を使用するために、他の実施形態を構成してもよい。使用される素数のラウンドの数が増加すると、素数のラウンドの関数を、より弱いキーによる整数置換から構成して、速度を増すことができる。
【0057】
になるキーによる整数置換を構成する方法を記載してきた。発明の詳細な記述(description)は、当業者が本発明を実行または使用できるようにするために与えられている。これらの実施形態に対する種々の変形は、当業者には容易に明らかであり、本明細書において定義されている一般的な原理は、発明的な能力(inventive faculty)を使用せずに他の実施形態に応用することができる。したがって、本発明は、本明細書に開示した実施形態に制限されることを意図されるのではなく、本明細書に記載した原理および新規な特徴と一致する最も幅広い技術的範囲にしたがうことを意図されている。
【図面の簡単な説明】
【図1】
DESという名前の従来技術の暗号化計算のフローチャート。
【図2】
モジューロpの加算器とモジューロqの加算器とを使用する暗号化計算の本発明の実施形態のブロック図。
【図3】
プロセッサを使用する整数置換デバイスのブロック図。
【図4】
32752における暗号化計算のブロック図。
【図5】
図4の暗号化計算において実行されているように、2分の1ラウンドのキーK1およびK2の偏差を示すフローチャート。
【図6】
32751に対する別の暗号化計算のブロック図。
【図7】
図6の暗号化計算において実行されている2分の1ラウンドのキーK1およびK2の偏差を示すフローチャート。
【図8】
(Nは素数)に対して実行される本発明の実施形態の暗号化計算のブロック図。

Claims (22)

  1. p>1およびq>1として、N=pqである場合に、Zの入力値からZの出力値を求めるための、複数のラウンドから成る方法であって、各ラウンドが、
    第1のキーおよび第2のキーを生成するステップと、
    ラウンドの入力を、Zの要素である第1の部分と、Zの要素である第2の部分とに分割するステップと、
    第1のキーを第2の部分に適用し、Zの要素である第3の部分を生成するステップと、
    モジューロpの加算器を使用して第1の部分および第2の部分を加算して、第4の部分を生成するステップと、
    第2のキーを第4の部分へ適用し、Zの要素である第5の部分を生成するステップと、
    モジューロqの加算器を使用して第5の部分を第2の部分へ加算して、第6の部分を生成するステップと、
    第4の部分と第6の部分を合成して、ラウンドの出力を形成するステップとを含み、
    ラウンドが最終のラウンドであるとき、ラウンドの出力が本方法の出力値であるか、さもなければラウンドの出力が次のラウンドへの入力になる方法。
  2. Nビットのデータブロックを置換するための方法であって、Nビットのデータブロックの各ビットを複数のNの指数の中からの指数と関係付け、Nを2以上の整数値pおよび2以上の整数値qへ因数分解し、
    複数のNの指数を、グループZについて構成されている第1の部分とグループZについて構成されている第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. 複数のラウンドの各ラウンドごとにステップが反復し、各ラウンドにおいて生成される第3の部分および第4の部分を、次のラウンドへの入力として使用する請求項2記載の方法。
  4. 次のラウンドが最終のラウンドであり、
    最終のラウンドにおいて生成される第3の部分を整数値qと乗算するステップと、
    乗算された第3の部分と、最終ラウンドにおいて生成された第4の部分とを合成して、最終結果を生成するステップと、
    最終結果にしたがってNビットのデータブロックを置換するステップとを含む請求項3記載の方法。
  5. 第1の2分の1ラウンドのキーおよび第2の2分の1ラウンドのキーをストリーム暗号によって生成する請求項2記載の方法。
  6. 第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記載の方法。
  7. 第1の所定量が第2の所定量に等しい請求項6記載のキー生成方法。
  8. n≧2であり、xが第1の所定量の因数であり、かつiが反復ラウンドを識別するときに、キー生成方法が複数のサブキー{a1,i,a2,i..,an,i}について値を判断し、第1の2分の1ラウンドのキーはK1=xn−11,i+xn−22,i+...+an,iであるステップをさらに含む請求項6記載のキー生成方法。
  9. 第1の非線形関数が、
    第2の部分を第1の定数値によって乗算して、第1の乗算結果を生成するステップと、
    第1の乗算結果を第1の2分の1ラウンドのキーと合成して、第1の合成結果を生成するステップと、
    第1の合成結果を代入して、第1の合成結果を置換して、第1の2分の1ラウンドの値を生成するステップを含む方法である請求項2記載の方法。
  10. 第1の合成結果を代入するステップであって、
    第1の合成値を代入表示値および代入入力値へ分解するステップと、
    代入表示値を使用して、第1の複数の置換ボックスの1つを選択するステップと、
    第1の複数の代入ボックスからの選択された代入ボックスへ代入入力値を入力して、第1の2分の1ラウンドの値を生成するステップを含む請求項9記載の方法。
  11. 第2の非線形関数が、
    第2の定数値によって第3の部分を乗算して、第2の乗算結果を生成するステップと、
    第2の乗算結果を第2の2分の1ラウンドのキーと合成して、第2の合成結果を生成するステップと、
    第2の合成結果を代入して、第2の合成結果を置換して、第2の2分の1ラウンドの値を生成するステップとを含む方法である請求項2記載の方法。
  12. 第1の合成結果を代入するステップが、
    第1の合成結果を代入表示値および代入入力値へ分解するステップと、
    代入表示値を使用して、第2の複数の代入ボックスの1つを選択するステップと、
    第2の複数の代入ボックスからの選択された代入ボックスへ代入入力値を入力し、第2の2分の1ラウンドの値を生成するステップとを含む請求項11記載の方法。
  13. 第1の非線形関数が、
    第1の定数値によって第2の部分を乗算して、第1の乗算結果を生成するステップと、
    第1の乗算結果がxn−1+xn−2+...+uに等しくなるように、第1の乗算結果をuで表わした複数の項へ分解するステップと、
    複数の項の各々を複数のサブキーa1,i,a2,i..,an,iの関係するものとモジュールによって加算して、複数の代入入力値を生成するステップと、
    複数の代入入力値の各々を複数の代入ボックスの関係するものへ入力して、複数の代入値を生成するステップと、
    複数の代入された値の中の少なくとも2つをモジュールによって加算して、第1の2分の1ラウンドの値を生成するステップとを含む方法である請求項8記載の方法。
  14. Nが13以上の素数であり、SおよびTが、N=S+Tとなるような合成数の値であるときに、Zの入力値からZの出力値を求めるための、複数のラウンドから成る方法であって、この方法の各ラウンドが、
    第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の複数の出力指数と混合するステップとを含む方法。
  15. 第1の複数の出力指数を第2の複数の出力指数と混合するステップからの出力が、次のラウンドのための入力として使用される請求項14記載の方法。
  16. 次のラウンドが最終ラウンドである方法であって、第1の複数の出力指数を第2の複数の出力指数と混合するステップからの出力にしたがって、入力ビット配置を出力ビット配置へ再配置するステップをさらに含む請求項15記載の方法。
  17. プロセッサと、
    記憶媒体とを含む無線通信デバイスであって、
    記憶媒体がプロセッサによって実行可能な命令を記憶し、プロセッサが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の部分を生成するステップとを含む方法によって置換される無線通信デバイス。
  18. プロセッサと、
    記憶媒体とを含む無線通信デバイスであって、
    記憶媒体がプロセッサによって実行可能な1組の命令を記憶し、プロセッサがNビットのデータブロックを置換し、Nが合成数または素数であり、Nが合成数であるときは、プロセッサはNビットのデータブロックに対してキーによる整数置換を行なうための1組の命令を実行するが、Nが素数であるときは、プロセッサはNビットのデータブロックを第1の組と第2の組とに分割して、第1の組に対して第1のキーによる整数置換を、第2の組に対して第2のキーによる整数置換を行なう1組の命令を実行する無線通信デバイス。
  19. p>1およびq>1として、N=pqであるときに、Zの入力値からZの出力値を求めるための装置であって、
    第1のキーおよび第2のキーを生成するための手段と、
    1ラウンドの入力を、Zの要素である第1の部分と、Zの要素である第2の部分とに分割するための手段と、
    第1のキーを第2の部分に適用し、Zの要素である第3の部分を生成するための手段と、
    モジューロpの加算器を使用して第1の部分と第3の部分とを加算して、第4の部分を生成するための手段と、
    第2のキーを第4の部分へ適用し、Zの要素である第5の部分を生成するための手段と、
    モジューロqの加算器を使用して第5の部分を第2の部分へ加算して、第6の部分を生成する手段と、
    第4の部分と第6の部分とを合成して、ラウンドの出力を形成する手段とを含む装置。
  20. Nが13以上の素数であり、SおよびTが、N=S+Tとなるような合成数の値であるときに、Zの入力値からZの出力値を求める装置であって、複数のラウンドを含み、各ラウンドが、
    第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の複数の出力指数と混合する手段とを含む装置。
  21. 第1のステーションと第2のステーションとの間で送られるNビットのデータメッセージを認証するための方法であって、
    第1のステーションにおいてグループZの複数の要素に対してキーによる整数置換を使用して、置換順序を生成するステップと、
    置換順序にしたがってNビットのデータメッセージ内の複数のビットを再び順序付けて、置換されたNビットのメッセージを形成するステップと、
    置換されたNビットのメッセージに基づいて第1の巡回冗長検査(cyclic redundancy check, CRC)メッセージを生成するステップと、
    Nビットのデータメッセージおよび第1の巡回冗長検査メッセージを第1のステーションから第2のステーションへ送るステップと、
    第2のステーションにおいて受信したNビットのデータメッセージおよび受信した巡回冗長検査メッセージを検出するステップと、
    受信したNビットのデータメッセージに対してキーによる整数の置換を使用して、第2のステーションにおける第2の置換順序を求めるステップと、
    第2の置換順序に基づいて第2の巡回冗長検査メッセージを生成するステップと、
    受信した巡回冗長検査メッセージと第2の巡回冗長検査メッセージとを比較して、受信した巡回冗長検査メッセージおよび第2の巡回冗長検査メッセージが整合するとき、受信したNビットのデータメッセージが認証されるステップとを含む方法。
  22. エラーを訂正するのに使用できる方法であって、
    受信した巡回冗長検査メッセージおよび第2の巡回冗長検査メッセージとを比較するステップの結果が、所定の閾値以下のエラー量になるかどうかを判断するステップと、
    比較するステップの結果が所定の閾値以下のエラー量になるときは、受信した巡回冗長検査メッセージを使用して、受信したNビットのデータメッセージを訂正するステップと、
    比較するステップの結果が所定の閾値よりも多いエラー量になるときは、Nビットのデータメッセージの再伝送を要求するステップをさらに含む請求項21記載の方法。
JP2001581474A 2000-05-02 2001-05-01 メッセージ認証コードのためのキーの整数の置換の生成 Withdrawn JP2004511812A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012141189A1 (ja) * 2011-04-11 2012-10-18 日本電気株式会社 暗号化方法、暗号化装置および暗号化プログラム

Families Citing this family (9)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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