JP2016503195A - 計算可能な、大型の、可変の、かつ安全な置換ボックスのための方法および装置 - Google Patents

計算可能な、大型の、可変の、かつ安全な置換ボックスのための方法および装置 Download PDF

Info

Publication number
JP2016503195A
JP2016503195A JP2015552655A JP2015552655A JP2016503195A JP 2016503195 A JP2016503195 A JP 2016503195A JP 2015552655 A JP2015552655 A JP 2015552655A JP 2015552655 A JP2015552655 A JP 2015552655A JP 2016503195 A JP2016503195 A JP 2016503195A
Authority
JP
Japan
Prior art keywords
value
input
box
generate
nltf
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.)
Ceased
Application number
JP2015552655A
Other languages
English (en)
Other versions
JP2016503195A5 (ja
Inventor
グレゴリー・ゴードン・ローズ
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2016503195A publication Critical patent/JP2016503195A/ja
Publication of JP2016503195A5 publication Critical patent/JP2016503195A5/ja
Ceased 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • 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/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Collating Specific Patterns (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

1つの特徴は、置換ボックス(Sボックス)と関連付けられる暗号値を生成するための方法に関する。方法は、入力値および第1の値をまず取得するステップを含む。1つの方法は、入力値および第1の値に対する排他的OR(XOR)演算を実行して中間値を生成することと、中間値のハミング重みに等しいビットの数の分だけ中間値に対するビットごとの回転を実行することによって、Sボックスの出力値を生成するステップを含む。一態様では、このビットごとの回転の出力はさらに、第2の値とXORされる。別の方法は、入力値のハミング重みに等しいビットの数の分だけ入力値に対するビットごとの回転を実行して中間値を生成することと、中間値および第1の値に対するXOR演算を実行することによって、Sボックスの出力値を生成するステップを含む。

Description

優先権の主張
本特許出願は、2013年1月11日に出願された、「Method and Apparatus for Computable, Large, Variable, and Secure Substitution Box」という表題の仮出願第61/751,541号の優先権を主張し、この仮出願の開示全体が、参照によって本明細書に明示的に組み込まれる。
様々な特徴は暗号技術に関し、より具体的には、置換ボックスを実装するための方法および装置に関する。
暗号技術では、置換ボックス(Sボックス)が、置換を実行する対称鍵アルゴリズムの基本コンポーネントである。ブロック暗号では、それらは通常、鍵と暗号文との関係を不明瞭にし、したがって、混乱(confusion)というシャノンの特性を示すために使用される。Sボックスは、n個の入力ビットを受け取りm個の出力ビットを生成する複雑な関数を表すので、その出力は、いくつかの暗号学的に有用な特性を有する。これらの特性は、高い非線形性およびバランス、高い代数次数、厳密にアバランシェ性の基準を満たすこと、および他の特性を含む。そのような関数は計算するのが困難であり、Data Encryption Standard(DES)およびAdvanced Encryption Standard(AES)などにおいては、参照テーブルとして表されることが多い。たとえば、AESでは、8ビットの入力は、Sボックスから選択された8ビットの値によって置き換えられる。いくつかの場合には、nはmと等しいことがあるので、Sボックスに対する入力および出力は同じビット長を有する。
nが大きい場合、上で説明された参照テーブル(または等価的に、ハードウェアの実装形態に対してはゲートのネットワーク)は急速に扱いにくくなり得る。一方、小さなnは必然的に、非線形性および代数次数が限定される。したがって、ハードウェアまたはソフトウェアで効率的に実装されることも可能な、多数の入力ビットを有するSボックスが望ましい。
ハミング加重ビット関数(HWBF)は、バランスおよび代数学的な複雑さのような、上で説明された望ましい暗号学的特性のいくつかを享受する、nビットから1ビットへのSボックスであると見なされることがある。たとえば、xがnビットの入力であり、xiがxのi番目(1≦i≦n)の上位ビットである場合、HWBFの出力Wは次のように定義される。
x=0の場合、W(x)=0、
それ以外の場合、W(x)=xkであり、kはxのハミング重みである。
図1は、ハードウェアで簡単に実装され得る、従来技術で見出されるnビットからnビットへのHWBFベースのSボックス100の、概略ブロック図を示す。バイナリ入力値x(たとえば、110101)が回転関数102に入力される。回転関数102は、入力のハミング重みに等しいビットの数の分だけ、入力xに対してビットごとの左回転を実行する。したがって、バイナリ入力xが110101に等しい場合、ハミング重みは4に等しいので、回転関数102の出力zは011101に等しい。
図2は、HWBFベースのSボックスの出力zとHWBF W(x)との関係を図示するテーブル200を示す。図1および図2を参照すると、出力zの最下位ビット(たとえば、1)が入力値xのHWBF W(x)(上で定義される)に等しいことが示され得る。HWBFへの入力値xが単一ビットのビットごとの右回転(W(x<<1)によって示される)を経た場合、2番目の下位ビット(たとえば、0)がHWBF W(x)の出力を表すことも、認められ得る。HWBFへの入力値xが2ビットのビットごとの右回転(W(x<<2)によって示される)を経た場合、3番目の下位ビットがHWBF W(x)の出力を表し、以下同様である。
したがって、出力値zは、入力値xと同数のビットを有し、ここで各ビットは、並列に計算される異なるHWBF W(x)の出力を表す。出力値zのビットはそれでも、HWBFに関して上で説明された有益な暗号学的特性の一部を保つ。残念ながら、Sボックス100は、望ましくない特性も有する。たとえば、1つのそのような望ましくない特性は、出力zが入力xと同じハミング重みを有することであり、これは、入力xのハミング重みが小さいときには特に、暗号解読を簡単にし得ることが多い。Sボックス100のセキュリティを上げて、暗号攻撃(暗号解読)に対するSボックス100の耐性をより高めることが、望ましいであろう。
したがって、暗号攻撃に対してより堅固な、改善されたSボックスのアルゴリズム、方法、および装置に対する必要性がある。
1つの特徴は、置換ボックス(Sボックス)と関連付けられる暗号値を生成するための方法を提供する。方法は、入力値および第1の値を取得するステップと、(A)入力値および第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成することと、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行してSボックスの出力値を生成すること、(B)入力値のハミング重みに等しいビットの数の分だけ入力値に対するビットごとの回転演算を実行して第1の中間値を生成することと、第1の中間値および第1の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成すること、または、(C)入力値および第1の値に対するビットごとのXOR演算を実行して第1の中間値を生成することと、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成することと、第2の値を取得することと、第2の中間値および第2の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成することの1つによって、Sボックスの出力値を生成するステップとを含む。一態様によれば、提供される第1の値および/または第2の値の少なくとも1つは、50%以上の確率で入力値とは異なるハミング重みを有するSボックスの出力値を生成するように構成される。別の態様によれば、第1の値および/または第2の値の少なくとも1つは、0ではないハミング重みを有する定数である。
一態様によれば、提供される第1の値および/または第2の値の少なくとも1つは変数であり、100*(1-2-n)パーセント以上の0ではないハミング重みを有する確率を有し、nは第1の値および/または第2の値のビットの数である。別の態様によれば、第1の値および/または第2の値の少なくとも1つは、暗号関数および/または暗号鍵の少なくとも1つから導出される。さらに別の態様によれば、第1の値および/または第2の値の少なくとも1つは、暗号モジュールのコンポーネント段階から導出される。
一態様によれば、暗号モジュールはストリーム暗号である。別の態様によれば、方法はメモリ回路で実行される。さらに別の態様によれば、入力値およびSボックスの出力値は同数のビットを有する。
一態様によれば、方法はさらに、主入力値を取得するステップと、主入力値のビットを分割して複数の非線形変換関数(NLTF)の入力値を取得するステップであって、各NLTF入力値が主入力値のビットの数より少ないビットの数を有する、ステップと、非線形演算を実行するNLTFにNLTF入力値の各々を提供して、NLTFに提供されるNLTF入力値に各々対応する複数のNLTF出力値を生成するステップと、複数のNLTF出力値を連結して入力値を取得するステップとを含む。別の態様によれば、主入力値は、複数のNLTF入力値の各々が同数のビットを有するように分割される。
別の特徴は、入力値および第1の値を取得し、(A)入力値および第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成することと、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行してSボックスの出力値を生成すること、(B)入力値のハミング重みに等しいビットの数の分だけ入力値に対するビットごとの回転演算を実行して第1の中間値を生成することと、第1の中間値および第1の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成すること、または、(C)入力値および第1の値に対するビットごとのXOR演算を実行して第1の中間値を生成することと、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成することと、第2の値を取得することと、第2の中間値および第2の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成することの1つによって、Sボックスの出力値を生成するように構成される、処理回路を含む電子デバイスを提供する。
一態様によれば、処理回路はさらに、主入力値を取得し、主入力値のビットを分割して複数の非線形変換関数(NLTF)の入力値を取得し、このとき各NLTF入力値が主入力値のビットの数より少ないビットの数を有し、非線形演算を実行するNLTFにNLTF入力値の各々を提供して、NLTFに提供されるNLTF入力値に各々対応する複数のNLTF出力値を生成し、複数のNLTF出力値を連結して入力値を取得するように構成される。
別の特徴は、入力値および第1の値を取得するための手段と、(A)入力値および第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成するための手段、および、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行してSボックスの出力値を生成するための手段、(B)入力値のハミング重みに等しいビットの数の分だけ入力値に対するビットごとの回転演算を実行して第1の中間値を生成するための手段、ならびに、第1の中間値および第1の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成するための手段、または、(C)入力値および第1の値に対するビットごとのXOR演算を実行して第1の中間値を生成するための手段、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成するための手段、第2の値を取得するための手段、ならびに、第2の中間値および第2の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成するための手段の1つによって、Sボックスの出力値を生成するための手段とを含む、電子デバイスを提供する。
一態様によれば、電子デバイスはさらに、主入力値を取得するための手段と、主入力値のビットを分割して複数の非線形変換関数(NLTF)の入力値を取得するための手段であって、各NLTF入力値が主入力値のビットの数より少ないビットの数を有する、手段と、非線形演算を実行するNLTFにNLTF入力値の各々を提供して、NLTFに提供されるNLTF入力値に各々対応する複数のNLTF出力値を生成するための手段と、複数のNLTF出力値を連結して入力値を取得するための手段とを含む。
別の特徴は、そこに記憶された置換ボックス(Sボックス)と関連付けられる暗号値を生成するための命令を有するコンピュータ可読記憶媒体を提供し、この命令は、少なくとも1つのプロセッサによって実行されると、プロセッサに、入力値および第1の値を取得させ、(A)入力値および第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成することと、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行してSボックスの出力値を生成すること、(B)入力値のハミング重みに等しいビットの数の分だけ入力値に対するビットごとの回転演算を実行して第1の中間値を生成することと、第1の中間値および第1の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成すること、または、(C)入力値および第1の値に対するビットごとのXOR演算を実行して第1の中間値を生成することと、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成することと、第2の値を取得することと、第2の中間値および第2の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成することの1つによって、Sボックスの出力値を生成させる。
一態様によれば、命令はさらに、プロセッサによって実行されると、プロセッサに、主入力値を取得させ、主入力値のビットを分割して複数の非線形変換関数(NLTF)の入力値を取得させ、このとき各NLTF入力値が主入力値のビットの数より少ないビットの数を有し、非線形演算を実行するNLTFへNLTF入力値の各々を提供させて、NLTFに提供されるNLTF入力値に各々対応する複数のNLTF出力値を生成させ、複数のNLTF出力値を連結させて入力値を取得させる。
従来技術において見出される、nビットからnビットへのハミング加重ビット関数(HWBF)ベースの置換ボックス(Sボックス)の、概略ブロック図である。 HWBFベースのSボックスの出力zとHWBF W(x)との関係を図示するテーブルである。 Sボックスの第1の例示的な概略ブロック図である。 Sボックスの第2の例示的な概略ブロック図である。 Sボックスの第3の例示的な概略ブロック図である。 暗号関数fが暗号鍵/識別子K1から変数値C1を導出する例を示す図である。 変数値C2が暗号モジュールの段階から導出される/受け取られる例を示す図である。 Sボックスの第4の例示的な概略ブロック図である。 Sボックスと関連付けられる暗号値を生成するための方法のフローチャートである。 本明細書で説明されるSボックスを組み込む電子デバイスのハードウェア実装形態の概略ブロック図である。 電子デバイスのプロセッサの概略ブロック図である。
以下の説明では、本開示の様々な態様の完全な理解をもたらすために具体的な詳細が与えられる。しかしながら、態様はこれらの具体的な詳細を伴わずに実践され得ることが当業者によって理解されるであろう。たとえば、態様が不要な詳細で不明瞭になることを回避するために、回路はブロック図で示される場合がある。他の場合には、本開示の態様を不明瞭にしないために、よく知られている回路、構造、および技法は、詳細に示されない場合がある。
「例示的な」という言葉は、「例、事例、または例示として機能すること」を意味するように本明細書で使用される。「例示的」として本明細書で説明されるいかなる実装形態または態様も、必ずしも本開示の他の態様よりも好ましいまたは有利なものと解釈されるべきではない。同様に、「態様」という用語は、本開示のすべての態様が、説明された特徴、利点、または動作モードを含むことを必要としない。
例示的なSボックス:HWBFの入力に対して実行される排他的OR(XOR)演算
図3は、本開示の一態様によるSボックス300の概略ブロック図を示す。ビットごとの排他的OR(XOR)関数302は、入力値x(たとえば、110101)および第1の値(たとえば、100110)を入力として受け取る。示される例では、第1の値は、0ではないハミング重みを有する定数値である。ビットごとのXOR関数302は、回転関数304に入力される第1の中間出力y(たとえば、010011)を生成する。この例では、回転関数304は、出力yのハミング重みの分だけ第1の中間出力yに対するビットごとの左回転を実行する(たとえば、3だけ左に回転する)。回転関数304の得られる出力z(たとえば、011010)は、n個の並列なHWBF出力を表し、ここでnは入力値xのビット長である。特に、出力zは入力値xと同じハミング重みを必ずしも有さないので、Sボックス300の出力zは従来技術の方法よりも暗号解読に対して安全である。Sボックス300の出力zは、入力xと同数のビットを有し得る。一態様によれば、回転関数304は、代わりにビットごとの右回転を実行してよく、処理はそれでも暗号学的なセキュリティに関して等価である。
XOR関数302は、入力値および第1の値に対するビットごとの排他的OR演算を実行して第1の中間値を生成するための手段の一例として機能する、XOR回路であり得る。回転関数304は、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行してSボックスの出力値を生成するための手段、および、出力Sボックス値を生成するための手段の一例として機能する、RotateHM回路によって実行され得る。
例示的なSボックス:HWBFの出力に対して実行されるXOR演算
図4は、本開示の一態様によるSボックス400の概略ブロック図を示す。回転関数402は、入力値x(たとえば、110101)を入力として受け取る。この例では、回転関数402は、入力xのハミング重みの分だけ入力値xに対するビットごとの左回転を実行して(たとえば、4だけ左に回転して)、第1の中間出力y(たとえば、011101)を生成する。回転関数402の得られる中間出力yは、n個の並列なHWBF出力を表し、ここでnは入力値xのビット長である。次に、ビットごとのXOR関数404は、中間出力yおよび第1の値(たとえば、101100)を入力として受け取る。示される例では、第1の値は、0ではないハミング重みを有する定数値である。XOR関数404は、入力値xと同じハミング重みを必ずしも有さない出力z(たとえば、110001)を生成する。したがって、Sボックス400の出力zは従来技術の方法よりも暗号解読に対して安全である。Sボックス400の出力zは、入力xと同数のビットを有し得る。一態様によれば、回転関数402は、代わりにビットごとの右回転を実行してよく、処理はそれでも暗号学的なセキュリティに関して等価である。
回転関数402は、入力値のハミング重みに等しいビットの数の分だけ入力値に対するビットごとの回転演算を実行して第1の中間値を生成するための手段の一例として機能する、RotateHM回路によって実行され得る。XOR関数404は、第1の中間値および第1の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成するための手段、および、出力Sボックス値を生成するための手段の一例として機能する、XOR回路によって実行され得る。
例示的なSボックス:HWBFの入力および出力において実行されるXOR演算
図5は、本開示の一態様によるSボックス500の概略ブロック図を示す。ビットごとのXOR関数502は、入力値x(たとえば、110101)および第1の値(たとえば、001100)を入力として受け取る。示される例では、第1の値は、0ではないハミング重みを有する定数値である。ビットごとのXOR関数502は、回転関数504に入力される第1の中間出力w(たとえば、111001)を生成する。この例では、回転関数504は、出力wのハミング重みの分だけ第1の中間出力wに対するビットごとの左回転を実行する(たとえば、4だけ左に回転する)。回転関数504の得られる第2の中間出力y(たとえば、011110)は、n個の並列なHWBF出力を表し、ここでnは中間値yのビット長である。次いで、別のビットごとのXOR関数506が、第2の中間出力yおよび第2の値(たとえば、111000)を入力として受け取る。示される例では、第2の値は、0ではないハミング重みを有する定数値である。XOR関数506は、入力値xと同じハミング重みを必ずしも有さない出力z(たとえば、100110)を生成する。したがって、Sボックス500の出力zは従来技術の方法よりも暗号解読に対して安全である。Sボックス500の出力zは、入力xと同数のビットを有し得る。一態様によれば、回転関数504は、代わりにビットごとの右回転を実行してよく、処理はそれでも暗号学的に等価である。
XOR関数502は、入力値および第1の値に対するビットごとのXOR演算を実行して第1の中間値を生成するための手段の一例として機能する、XOR回路によって実行され得る。回転関数504は、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成するための手段の一例として機能する、RotateHM回路によって実行され得る。XOR関数506は、第2の中間値および第2の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成するための手段、および、出力Sボックス値を生成するための手段の一例として機能する、XOR回路によって実行され得る。
図3、図4、および図5に関して上で説明された例では、回転関数は、その入力のハミング重みに等しいビットごとの左回転を実行する。しかしながら、他の態様では、回転関数は、その入力のハミング重みに等しいビットごとの右回転を実行することができる。そのような場合、回転関数によって出力される値の最上位ビットが(最下位ビットの代わりに)代替的なHWBF W'(x)の出力を表す。代替的なHWBF W'(x)は、nビットの入力である入力xを有してよく、ここで、xiはxのi番目の下位ビットである(1≦i≦n)。したがって、関数W'(x)は次のように定義される。
x=0の場合、W'(x)=0、
それ以外の場合、W'(x)=xkであり、kはxのハミング重みである。
例として、回転関数504が第1の中間値w 111001を左ではなく右に回転した場合、第2の中間値yは、011110ではなく100111に等しい。第2の値111000とのXOR演算506の後で、Sボックス500の出力zは011111となる。
一態様によれば、XOR関数302、404、502、506への第1の値および第2の値の入力は、上で説明されたような定数であり得る。しかしながら、他の態様では、第1の値および第2の値は、定数である必要はまったくない。一態様では、第1の値および第2の値は、時間とともに変化するように、始動時に変化するように、かつ/または、Sボックス300、400、500のある回数の繰り返し(すなわち、生成される出力値)の後で変化するように、可変であり得る。一例として、第1の値および第2の値は、変化する関数を使用して暗号鍵から導出されるという点で、または、鍵自体が変化するという点で、可変であり得る。そのような方式は、Sボックス300、400、500の出力を暗号攻撃に対してより堅固にすることができる。一態様によれば、提供される第1の値および/または第2の値は、50%以上の確率で入力値と異なるハミング重みを有するSボックスの出力値を生成するように構成される。
第1の値および第2の値の例示的なタイプ
図6は、暗号関数f 602が暗号鍵/識別子K1から変数値C1を導出するような例を示す。暗号関数f 602はとりわけ、ハッシュ関数であり得る。変数値C1は次いで、Sボックス300の出力zを生成するためにXOR関数302に入力される第1の値として、図3を参照して上で説明されたのと同じ方法で使用される。他のSボックス400、500のいずれかが、そこで使用される第1の値および/または第2の値が暗号関数f 602および鍵/識別子K1のように暗号関数を使用して鍵/識別子から導出されるように、同じ方法で修正され得る。
第1の値および第2の値が可変である別の態様によれば、第1の値および第2の値は、Sボックスの近くで起きる暗号の他の演算から導出され得る。図7は、変数値C2が暗号モジュール702のある段階から導出される/受け取られるような例を示す。暗号モジュール702は、複数個(N個)の整数コンポーネント704、706、708を含んでよく、変数値C2は、これらのコンポーネント704、706、708のいずれか1つへの出力または入力から導出され得る。コンポーネント704、706、708はとりわけ、シフトレジスタ、加算器、乗算器、処理回路/ブロックなどであり得る。一態様では、Sボックス300、400、500は、暗号モジュール702の一部であり得るが、他の態様では、Sボックス300、400、500は暗号モジュール702とは独立であり得る。一例によれば、暗号ブロック702はストリーム暗号であり得る。
変数値C2は次いで、Sボックス300の出力zを生成するためにXOR関数302に入力される第1の値として、図3を参照して上で説明されたのと同じ方法で使用される。他のSボックス400、500のいずれかが、そこで使用される第1の値および/または第2の値が図7に示されるような暗号モジュールの1つまたは複数の段階から導出されるように、同じ方法で修正され得る。
一態様によれば、変数入力C1およびC2(すなわち、第1の値および第2の値)は、50%、60%、70%、80%、90%、95%、または99%のうちの1つ以上の、0ではないハミング重みを有する確率を有するように、提供され得る。別の態様によれば、変数入力C1およびC2は、100*(1-2-n)パーセント以上の、0ではないハミング重みを有する確率をそれらが有するように提供されてよく、ここでnは、変数入力C1およびC2のビット数である。
追加のNLTF段階を特徴とする例示的なSボックス
図8は、本開示の別の態様によるSボックス800の概略ブロック図を示す。Sボックス800(たとえば、「主Sボックス」)は、ビット分割回路802、複数個(N個)の非線形変換関数(NLTF)副回路804、806、808、810(ここでNは2以上の整数である)、連結回路812、およびSボックスA副回路814を含む。非NLTF副回路804、806、808、810は、標準的な非線形変換テーブルベースのSボックスであり得る。Sボックス副回路A 814は、図3〜図7で示され説明されたSボックス300、400、500のいずれか1つである。
主Sボックス800は、nビットの主入力xを受け取り、暗号学的なセキュリティを向上させるnビットの主Sボックス出力zを生成する。ビット分割回路802は、nビットの主入力xを複数のより小さなm1、m2、m3、…mNビットのNLTF入力値803a、803b、803c、…803n(すなわち、m1、m2、m3、およびmNはnより小さい)に分割する。非NLTF副回路804、806、808、810は、参照テーブルを使用して、非線形演算に従って、NLTF入力値803a、803b、803c、…803nをNLTF出力値805a、805b、805c、…805nに変換することができる。NLTF入力値803a、803b、803c、…803nは、対応するNLTF出力値805a、805b、805c、…805nと同数のビットを有し得る。NLTF出力値805a、805b、805c、…805nは次いで、連結回路812によって一緒に連結されて、nビットの入力値yを生成する。図3〜図7に関して上で説明された操作/ステップと同じく、SボックスA 804は、第1の値および/または第2の値とともにnビットの入力値yを受け取り(たとえば、図3〜図7参照)、1つまたは複数のXOR演算およびハミング重み回転演算を実行して(たとえば、図3〜図7参照)、nビットの主Sボックス出力値zを生成する。これらの出力値は、Sボックス副回路804、806、808、810によって受け取られる入力値と同じビット長(すなわち、m1、m2、m3、およびmN)を有し得る。
一態様によれば、ビット分割回路802は、主入力値のビットを分割して複数の非線形変換関数(NLTF)入力値を取得するための手段の一例として機能し、各NLTF入力値は、主入力値のビットの数より少ないビットの数を有する。ビット分割回路802はさらに、非線形演算を実行するNLTFにNLTF入力値の各々を提供して、NLTFに提供されるNLTF入力値に各々対応する複数のNLTF出力値を生成ための手段の一例として機能し得る。連結回路812は、複数のNLTF出力値を連結して入力値を取得するための手段の一例として機能する。
主Sボックス800の動作がここで、1つの非限定的な例に従って説明される。主Sボックス800は、ビット分割回路802がNLTF副回路804、806、808、810に対する4つの8ビット入力803a、803b、803c、…803nへと分割するビットb0、b1、b2、…b31を有する、32ビットの主入力xを受け取ることができる。4つの8ビット入力803a、803b、803c、…803nはしたがって、b0、b1、b2、…b7と、b8、b9、b10、…b15と、b16、b17、b18、…b23と、b24、b25、b26、…b31というビットによって表され得る。各NLTF副回路804、806、808、810は、対応する入力を受け取り、等しい数のビット(たとえば、8ビット)出力805a、805b、805c、…805nを生成することができる。連結回路812は次いで、これらの出力値805a、805b、805c、…805nを連結して、32ビットのSボックスA 814の入力値yを生成する。一態様によれば、値m1、m2、m3、およびmNは、主入力xからの等しい数のビットが各NLTF副回路804、806、808、810に送られるように、互いに等しい。別の態様によれば、値m1、m2、m3、およびmNは互いに等しくないが、値nよりも小さいビット数である。
一例によれば、SボックスA 814は図3に示されるSボックス300である。したがって、図3に示される処理と同様に、SボックスA 814は入力値yおよび32ビットの第1の値に対するXOR演算を実行して中間値を生成する。次に、SボックスA 814は、中間値のハミング重みの分だけ中間値を(左または右に)回転する。得られる回転された32ビット値は次いで、32ビットの主Sボックス出力値zとしてSボックスA 814から出力される。32ビットの第1の値は、(図8に示されない)回路によって提供されてよく、(図3に示されるように)定数または(図6および図7に示されるように)変数であってよい。
暗号値を生成するための例示的な方法
図9は、置換ボックス(Sボックス)と関連付けられる暗号値を生成するための方法のフローチャート900を示す。方法は、入力値および第1の値を取得するステップ(902)と、(A)入力値および第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成することと(906a)、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行してSボックスの出力値を生成すること(908a)、または、(B)入力値のハミング重みに等しいビットの数の分だけ入力値に対するビットごとの回転演算を実行して第1の中間値を生成することと(906b)、第1の中間値および第1の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成すること(908b)、または、(C)入力値および第1の値に対するビットごとのXOR演算を実行して第1の中間値を生成することと(906c)、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成することと(908c)、第2の値を取得することと(910c)、第2の中間値および第2の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成すること(912c)のうちの1つによって、Sボックスの出力値を生成するステップ(904)とを含む。
Sボックスを組み込む例示的な電子デバイス
図10は、一態様による、本明細書で説明されたSボックス300、400、500、800のいずれか1つを組み込む電子デバイス1000のハードウェア実装形態の概略ブロック図を示す。電子デバイス1000は、携帯電話、スマートフォン、タブレット、ポータブルコンピュータ、および/または、回路を有する任意の他の電子デバイスであり得る。電子デバイス1000は、通信インターフェース1010、ユーザインターフェース1012、および処理システム1014を含み得る。処理システム1014は、処理回路(たとえば、プロセッサ)1004、メモリ回路(たとえば、メモリ)1005、コンピュータ可読記憶媒体1006、バスインターフェース1008、およびバス1002を含み得る。処理システム1014および/または処理回路1004は、図3、図4、図5、図6、図7、図8、および/または図9に関して上で説明された、Sボックス300、400、500、800および他の回路および/またはモジュール602、702に関して説明された、ステップ、機能、および/または処理のいずれかを実行するように構成され得る。
処理回路1004は、電子デバイス1000のためのデータを処理するように適合される1つまたは複数のプロセッサ(たとえば、第1のプロセッサなど)であり得る。たとえば、処理回路1004は、図9で説明されるステップのいずれか1つを実行するための手段として機能する特定用途向け集積回路(ASIC)のような、特別なプロセッサであり得る。すなわち、処理回路1004は、入力値および第1の値を取得し、(A)入力値および第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成することと、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行してSボックスの出力値を生成すること、(B)入力値のハミング重みに等しいビットの数の分だけ入力値に対するビットごとの回転演算を実行して第1の中間値を生成することと、第1の中間値および第1の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成すること、または、(C)入力値および第1の値に対するビットごとのXOR演算を実行して第1の中間値を生成することと、第1の中間値のハミング重みに等しいビットの数の分だけ第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成することと、第2の値を取得することと、第2の中間値および第2の値に対するビットごとのXOR演算を実行してSボックスの出力値を生成することのうちの1つによって、Sボックスの出力値を生成するように構成され得る。
処理回路1004の例は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、状態機械、ゲート論理、個別のハードウェア回路、および本開示の全体にわたって説明される様々な機能を実行するように構成された他の適切なハードウェアを含む。処理回路1004はまた、バス1002を管理し、コンピュータ可読記憶媒体1006および/またはメモリ1005に記憶されたソフトウェアを実行することを担う。ソフトウェアは、処理回路1004によって実行されると、処理システム1014に、Sボックス300、400、500、800に関して上で説明された様々な機能、ステップ、および/または処理を実行させる。コンピュータ可読記憶媒体1006は、ソフトウェアを実行するときに処理回路1004によって操作されるデータを記憶するために使用され得る。
メモリ回路1005は、限定はされないが、フラッシュメモリ、磁気的または光学的なハードディスクドライブなどのような、非揮発性メモリであり得る。いくつかの態様では、セクタ情報および/またはオーバーヘッドメッセージ(構成シーケンス番号を含む)を記憶するメモリは、永続的に情報を記憶するために継続的に電力供給され得る、DRAM(たとえば、DDR SDRAM)、SRAMなどのような、揮発性メモリであり得る。
ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、または他の名称で呼ばれるかを問わず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行スレッド、手順、機能などを意味するよう広く解釈されるべきである。ソフトウェアはコンピュータ可読記憶媒体1006上に存在し得る。コンピュータ可読記憶媒体1006は、非一時的コンピュータ可読記憶媒体であってよい。非一時的コンピュータ可読記憶媒体は、例として、磁気記憶デバイス(たとえば、ハードディスク、フロッピー(登録商標)ディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)またはデジタル多目的ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、カード、スティック、またはキードライブ)、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、取り外し可能ディスク、ならびに、コンピュータによりアクセスされ読み取られ得るソフトウェアおよび/または命令を記憶するための任意の他の適切な媒体を含む。また、コンピュータ可読記憶媒体は、例として、搬送波、伝送路、ならびに、コンピュータによりアクセスされ読み取られ得るソフトウェアおよび/または命令を送信するための任意の他の適切な媒体も含み得る。コンピュータ可読記憶媒体1006は、処理システム1014の中に存在してもよく、処理システム1014の外に存在してもよく、または処理システム1014を含む複数のエンティティにわたって分散されてもよい。コンピュータ可読記憶媒体1006は、コンピュータプログラム製品において具現化され得る。
この例では、処理システム1014は、バス1002によって全般に表されるバスアーキテクチャにより実装され得る。バス1002は、処理システム1014の具体的な用途および全体的な設計制約に応じて、任意の数の相互接続するバスおよびブリッジを含み得る。バス1002は、(プロセッサ1004によって全般に表される)1つまたは複数のプロセッサ、メモリ1005、および(コンピュータ可読記憶媒体1006によって全般に表される)コンピュータ可読媒体を含む、様々な回路を互いにつなぐ。バス1002は、タイミングソース、周辺機器、電圧調整器、および電力管理回路などの様々な他の回路をつなぐこともできるが、これらの回路は当技術分野でよく知られており、したがってこれ以上は説明されない。バスインターフェース1008は、バス1002と通信インターフェース1010(もしあれば)との間のインターフェースを与える。通信インターフェース1010は、伝送媒体を通じて他の装置と通信するための手段を提供する。装置の性質に応じて、ユーザインターフェース1012(たとえば、キーパッド、ディスプレイ、スピーカー、マイクロフォン、タッチスクリーンディスプレイなど)も電子デバイス1000のために設けられ得る。
図11は、本開示の一態様によるプロセッサ1004の概略ブロック図を示す。プロセッサ1004は、とりわけ、主入力値、入力値、第1の値、および/または第2の値を取得する回路1102を含む。取得する回路1102は、主入力値、入力値、第1の値、および/または第2の値を取得するための手段の一例として機能する。プロセッサ1004はさらに、図8に関して上で説明されたようにNLTFを実行するように構成される、非線形変換関数回路1104を含む。
図3、図4、図5、図6、図7、図8、図9、図10、および/または図11に示されたコンポーネント、ステップ、特徴、および/または機能のうちの1つまたは複数は、単一のコンポーネント、ステップ、特徴、もしくは機能へと再構成され、かつ/もしくは組み合わされてよく、または、いくつかのコンポーネント、ステップ、もしくは機能で具現化されてよい。本発明から逸脱することなく、さらなる要素、コンポーネント、ステップ、および/または機能が追加され得る。図3、図4、図5、図6、図7、図8、図10、および/または図11に示される装置、デバイス、および/またはコンポーネントは、図9で説明される方法、特徴、またはステップの1つまたは複数を実行するように構成され得る。また、本明細書で説明されたアルゴリズムは、効率的にソフトウェアに実装されてもよく、かつ/またはハードウェアに組み込まれてもよい。
その上、本開示の一態様では、図10および/または図11に示される処理回路1004は、図9で説明されるアルゴリズム、方法、および/またはステップを実行するように特別に設計かつ/または配線される専用プロセッサ(たとえば、特定用途向け集積回路(ASIC))であり得る。したがって、そのような専用プロセッサ(たとえば、ASIC)は、図9で説明されるアルゴリズム、方法、および/またはステップを実行するための手段の一例であり得る。コンピュータ可読記憶媒体1006はまた、専用プロセッサ(たとえば、ASIC)によって実行されると、図9で説明されるアルゴリズム、方法、および/またはステップを専用プロセッサに実行させる、プロセッサ1004が可読の命令を記憶することができる。
また、本開示の態様は、フローチャート、流れ図、構造図またはブロック図として示されるプロセスとして説明され得ることに留意されたい。フローチャートは動作を逐次プロセスとして説明し得るが、動作の多くは並行してまたは同時に実行され得る。加えて、動作の順序は並び替えられ得る。プロセスは、その動作が完了したときに終了する。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。処理が関数に対応する場合、その終了は、関数が呼出し関数またはメイン関数に戻ることに対応する。
その上、記憶媒体は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、ならびに/または、情報を記憶するための他の機械可読媒体、およびプロセッサ可読媒体、および/もしくはコンピュータ可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表し得る。「機械可読媒体」、「コンピュータ可読媒体」、および/または「プロセッサ可読媒体」という用語は、限定はされないが、ポータブルもしくは固定記憶デバイス、光記憶デバイス、ならびに、命令および/もしくはデータを記憶、格納または搬送することが可能な様々な他の媒体のような、非一時的媒体を含み得る。したがって、本明細書で説明される様々な方法は、「機械可読媒体」、「コンピュータ可読媒体」および/または「プロセッサ可読媒体」に記憶され、1つまたは複数のプロセッサ、機械および/またはデバイスによって実行され得る命令および/またはデータによって、完全にまたは部分的に実装され得る。
さらに、本開示の態様は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実装されるとき、必要なタスクを実行するプログラムコードまたはコードセグメントは、記憶媒体または他のストレージのような機械可読媒体に記憶され得る。プロセッサは必要なタスクを実行することができる。コードセグメントは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、かつ/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージの受け渡し、トークンの受け渡し、ネットワーク送信などを含む任意の適切な手段を介して、渡され、転送され、または送信され得る。
本明細書で開示される例に関して説明される様々な例示的な論理ブロック、モジュール、回路、要素、および/またはコンポーネントは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理コンポーネント、個別ゲートもしくはトランジスタ論理、個別ハードウェアコンポーネント、または本明細書で説明される機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替としてプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングコンポーネントの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
本明細書で開示された例に関して説明された方法またはアルゴリズムは、直接ハードウェアで、プロセッサによって実行可能なソフトウェアモジュールで、または両方の組合せで、処理ユニット、プログラミング命令、または他の指示の形態で具現化されてよく、かつ、単一のデバイスに含まれてよく、または複数のデバイスにわたって分散されてよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体の中に存在し得る。記憶媒体は、プロセッサがその記憶媒体から情報を読み取り、かつその記憶媒体に情報を書き込むことができるように、プロセッサに結合され得る。代替として、記憶媒体はプロセッサと一体であり得る。
さらに、本明細書で開示される態様に関して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを当業者は諒解するだろう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、上記では概してそれらの機能に関して説明された。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、具体的な適用例および全体的なシステムに課される設計制約に依存する。
本明細書で説明される本発明の様々な特徴は、本発明から逸脱することなく様々なシステムで実装され得る。上記の本開示の態様は例にすぎず、本発明を限定するものと解釈されるべきではないことに留意されたい。本開示の態様の説明は、例示的なものであり、特許請求の範囲を限定するものではない。したがって、本教示は、他のタイプの装置に容易に適用されることが可能であり、多くの代替形態、変更形態、および変形形態が当業者には明らかであろう。
100 Sボックス
102 回転関数
200 テーブル
300 Sボックス
302 XOR関数
304 回転関数
400 Sボックス
402 回転関数
404 XOR関数
500 Sボックス
502 XOR関数
504 回転関数
506 XOR関数
602 関数f
702 暗号モジュール
704 コンポーネントA
706 コンポーネントB
708 コンポーネントN
800 主Sボックス
802 ビット分割回路
803a m1ビットのNLTF入力値
803b m2ビットのNLTF入力値
803c m3ビットのNLTF入力値
803n mNビットのNLTF入力値
805a m1ビットのNLTF入力値
805b m2ビットのNLTF入力値
805c m3ビットのNLTF入力値
805n mNビットのNLTF入力値
812 連結回路
814 SボックスA
900 フローチャート
1000 電子デバイス
1002 バス
1004 プロセッサ
1005 メモリ
1006 コンピュータ可読記憶媒体
1008 バスインターフェース
1010 通信インターフェース
1012 ユーザインターフェース
1014 処理システム
1102 主入力値、入力値、第1の値、および第2の値を取得する回路
1104 非線形変換関数回路

Claims (28)

  1. 置換ボックス(Sボックス)と関連付けられる暗号値を生成するための方法であって、
    入力値および第1の値を取得するステップと、
    (A)前記入力値および前記第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成することと、
    前記第1の中間値のハミング重みに等しいビットの数の分だけ前記第1の中間値に対するビットごとの回転演算を実行してSボックスの出力値を生成すること、
    (B)前記入力値のハミング重みに等しいビットの数の分だけ前記入力値に対するビットごとの回転演算を実行して前記第1の中間値を生成することと、
    前記第1の中間値および前記第1の値に対するビットごとのXOR演算を実行して前記Sボックスの出力値を生成すること、または、
    (C)前記入力値および前記第1の値に対するビットごとのXOR演算を実行して前記第1の中間値を生成することと、
    前記第1の中間値の前記ハミング重みに等しいビットの数の分だけ前記第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成することと、
    第2の値を取得することと、
    前記第2の中間値および前記第2の値に対するビットごとのXOR演算を実行して前記Sボックスの出力値を生成すること
    の1つによって、前記Sボックスの出力値を生成するステップとを含む、方法。
  2. 提供される前記第1の値および/または第2の値の少なくとも1つが、50%以上の確率で前記入力値とは異なるハミング重みを有する前記Sボックスの出力値を生成するように構成される、請求項1に記載の方法。
  3. 前記第1の値および/または前記第2の値の少なくとも1つが、0ではないハミング重みを有する定数である、請求項1に記載の方法。
  4. 提供される前記第1の値および/または第2の値の少なくとも1つが変数であり、100*(1-2-n)パーセント以上の0ではないハミング重みを有する確率を有し、nが前記第1の値および/または第2の値のビットの数である、請求項1に記載の方法。
  5. 前記第1の値および/または前記第2の値の少なくとも1つが、暗号関数および/または暗号鍵の少なくとも1つから導出される、請求項1に記載の方法。
  6. 前記第1の値および/または前記第2の値の少なくとも1つが、暗号モジュールのコンポーネント段階から導出される、請求項1に記載の方法。
  7. 前記暗号モジュールがストリーム暗号である、請求項6に記載の方法。
  8. メモリ回路において実行される、請求項1に記載の方法。
  9. 前記入力値および前記Sボックスの出力値が同数のビットを有する、請求項1に記載の方法。
  10. 主入力値を取得するステップと、
    前記主入力値のビットを分割して複数の非線形変換関数(NLTF)入力値を取得するステップであって、各NLTF入力値が、前記主入力値のビットの数より少ないビットの数を有する、ステップと、
    非線形演算を実行するNLTFに前記NLTF入力値の各々を提供して、前記NLTFに提供される前記NLTF入力値に各々対応する複数のNLTF出力値を生成するステップと、
    前記複数のNTLF出力値を連結して前記入力値を取得するステップとをさらに含む、請求項1に記載の方法。
  11. 前記主入力値が、前記複数のNLTF入力値の各々が同数のビットを有するように分割される、請求項10に記載の方法。
  12. 処理回路を含む電子デバイスであって、前記処理回路が、
    入力値および第1の値を取得し、
    (A)前記入力値および前記第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成することと、
    前記第1の中間値のハミング重みに等しいビットの数の分だけ前記第1の中間値に対するビットごとの回転演算を実行して置換ボックス(Sボックス)の出力値を生成すること、
    (B)前記入力値のハミング重みに等しいビットの数の分だけ前記入力値に対するビットごとの回転演算を実行して前記第1の中間値を生成することと、
    前記第1の中間値および前記第1の値に対するビットごとのXOR演算を実行して前記Sボックスの出力値を生成すること、または、
    (C)前記入力値および前記第1の値に対するビットごとのXOR演算を実行して前記第1の中間値を生成することと、
    前記第1の中間値の前記ハミング重みに等しいビットの数の分だけ前記第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成することと、
    第2の値を取得することと、
    前記第2の中間値および前記第2の値に対するビットごとのXOR演算を実行して前記Sボックスの出力値を生成すること
    の1つによって、前記Sボックスの出力値を生成するように構成される、電子デバイス。
  13. 提供される前記第1の値および/または第2の値の少なくとも1つが、50%以上の確率で前記入力値とは異なるハミング重みを有する前記Sボックスの出力値を生成するように構成される、請求項12に記載の電子デバイス。
  14. 前記第1の値および/または前記第2の値の少なくとも1つが、0ではないハミング重みを有する定数である、請求項12に記載の電子デバイス。
  15. 提供される前記第1の値および/または第2の値の少なくとも1つが変数であり、100*(1-2-n)パーセント以上の0ではないハミング重みを有する確率を有し、nが前記第1の値および/または第2の値のビットの数である、請求項12に記載の電子デバイス。
  16. 前記第1の値および/または前記第2の値の少なくとも1つが、暗号関数および/または暗号鍵の少なくとも1つから導出される、請求項12に記載の電子デバイス。
  17. 前記第1の値および/または前記第2の値の少なくとも1つが、暗号モジュールのコンポーネント段階から導出される、請求項12に記載の電子デバイス。
  18. 前記処理回路がさらに、
    主入力値を取得し、
    前記主入力値のビットを分割して複数の非線形変換関数(NLTF)入力値を取得し、このとき各NLTF入力値が、前記主入力値のビットの数より少ないビットの数を有し、
    非線形演算を実行するNLTFに前記NLTF入力値の各々を提供して、前記NLTFに提供される前記NLTF入力値に各々対応する複数のNLTF出力値を生成し、
    前記複数のNTLF出力値を連結して前記入力値を取得するように構成される、請求項12に記載の電子デバイス。
  19. 入力値および第1の値を取得するための手段と、
    (A)前記入力値および前記第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成するための手段と、
    前記第1の中間値のハミング重みに等しいビットの数の分だけ前記第1の中間値に対するビットごとの回転演算を実行して置換ボックス(Sボックス)の出力値を生成するための手段、
    (B)前記入力値のハミング重みに等しいビットの数の分だけ前記入力値に対するビットごとの回転演算を実行して前記第1の中間値を生成するための手段と、
    前記第1の中間値および前記第1の値に対するビットごとのXOR演算を実行して前記Sボックスの出力値を生成するための手段、または、
    (C)前記入力値および前記第1の値に対するビットごとのXOR演算を実行して前記第1の中間値を生成するための手段と、
    前記第1の中間値の前記ハミング重みに等しいビットの数の分だけ前記第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成するための手段と、
    第2の値を取得するための手段と、
    前記第2の中間値および前記第2の値に対するビットごとのXOR演算を実行して前記Sボックスの出力値を生成するための手段
    の1つによって、前記Sボックスの出力値を生成するための手段とを含む、電子デバイス。
  20. 提供される前記第1の値および/または第2の値の少なくとも1つが、50%以上の確率で前記入力値とは異なるハミング重みを有する前記Sボックスの出力値を生成するように構成される、請求項19に記載の電子デバイス。
  21. 前記第1の値および/または前記第2の値の少なくとも1つが、0ではないハミング重みを有する定数である、請求項19に記載の電子デバイス。
  22. 前記第1の値および/または前記第2の値の少なくとも1つが、暗号関数および/または暗号鍵の少なくとも1つから導出される、請求項19に記載の電子デバイス。
  23. 前記第1の値および/または前記第2の値の少なくとも1つが、暗号モジュールのコンポーネント段階から導出される、請求項19に記載の電子デバイス。
  24. 主入力値を取得するための手段と、
    前記主入力値のビットを分割して複数の非線形変換関数(NLTF)入力値を取得するための手段であって、各NLTF入力値が、前記主入力値のビットの数より少ないビットの数を有する、手段と、
    非線形演算を実行するNLTFに前記NLTF入力値の各々を提供して、前記NLTFに提供される前記NLTF入力値に各々対応する複数のNLTF出力値を生成するための手段と、
    前記複数のNTLF出力値を連結して前記入力値を取得するための手段とをさらに含む、請求項19に記載の電子デバイス。
  25. その中に記憶された置換ボックス(Sボックス)と関連付けられる暗号値を生成するための命令を有するコンピュータ可読記憶媒体であって、前記命令が、少なくとも1つのプロセッサによって実行されると、前記プロセッサに、
    入力値および第1の値を取得させ、
    (A)前記入力値および前記第1の値に対するビットごとの排他的OR(XOR)演算を実行して第1の中間値を生成することと、
    前記第1の中間値のハミング重みに等しいビットの数の分だけ前記第1の中間値に対するビットごとの回転演算を実行してSボックスの出力値を生成すること、
    (B)前記入力値のハミング重みに等しいビットの数の分だけ前記入力値に対するビットごとの回転演算を実行して前記第1の中間値を生成することと、
    前記第1の中間値および前記第1の値に対するビットごとのXOR演算を実行して前記Sボックスの出力値を生成すること、または、
    (C)前記入力値および前記第1の値に対するビットごとのXOR演算を実行して前記第1の中間値を生成することと、
    前記第1の中間値の前記ハミング重みに等しいビットの数の分だけ前記第1の中間値に対するビットごとの回転演算を実行して第2の中間値を生成することと、
    第2の値を取得することと、
    前記第2の中間値および前記第2の値に対するビットごとのXOR演算を実行して前記Sボックスの出力値を生成すること
    の1つによって、前記Sボックスの出力値を生成させる、コンピュータ可読記憶媒体。
  26. 提供される前記第1の値および/または第2の値の少なくとも1つが、50%以上の確率で前記入力値とは異なるハミング重みを有する前記Sボックスの出力値を生成するように構成される、請求項25に記載のコンピュータ可読記憶媒体。
  27. 前記第1の値および/または前記第2の値の少なくとも1つが、0ではないハミング重みを有する定数である、請求項25に記載のコンピュータ可読記憶媒体。
  28. 前記命令がさらに、前記プロセッサによって実行されると、前記プロセッサに、
    主入力値を取得させ、
    前記主入力値のビットを分割して複数の非線形変換関数(NLTF)入力値を取得させ、このとき各NLTF入力値が、前記主入力値のビットの数より少ないビットの数を有し、
    非線形演算を実行するNLTFへ前記NLTF入力値の各々を提供させて、前記NLTFに提供される前記NLTF入力値に各々対応する複数のNLTF出力値を生成させ、
    前記複数のNTLF出力値を連結させて前記入力値を取得させる、請求項25に記載のコンピュータ可読記憶媒体。
JP2015552655A 2013-01-11 2013-12-27 計算可能な、大型の、可変の、かつ安全な置換ボックスのための方法および装置 Ceased JP2016503195A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361751541P 2013-01-11 2013-01-11
US61/751,541 2013-01-11
US13/935,962 US10142099B2 (en) 2013-01-11 2013-07-05 Method and apparatus for a computable, large, variable and secure substitution box
US13/935,962 2013-07-05
PCT/US2013/077939 WO2014109918A1 (en) 2013-01-11 2013-12-27 Method and apparatus for a computable, large, variable and secure substitution box

Publications (2)

Publication Number Publication Date
JP2016503195A true JP2016503195A (ja) 2016-02-01
JP2016503195A5 JP2016503195A5 (ja) 2017-01-26

Family

ID=51165146

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015552655A Ceased JP2016503195A (ja) 2013-01-11 2013-12-27 計算可能な、大型の、可変の、かつ安全な置換ボックスのための方法および装置

Country Status (7)

Country Link
US (1) US10142099B2 (ja)
EP (1) EP2944050A1 (ja)
JP (1) JP2016503195A (ja)
KR (1) KR20150105405A (ja)
CN (1) CN104871476B (ja)
TW (1) TWI533652B (ja)
WO (1) WO2014109918A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160105276A1 (en) * 2014-10-10 2016-04-14 Qualcomm Incorporated Rotation-based cipher
NL2015745B1 (en) * 2015-11-09 2017-05-26 Koninklijke Philips Nv A cryptographic device arranged to compute a target block cipher.
CN113014377B (zh) * 2021-02-01 2022-07-22 中国科学院软件研究所 一种利用分组密码s盒双射特性的持久故障攻击防护方法和装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01179987A (ja) * 1988-01-11 1989-07-18 Nippon Telegr & Teleph Corp <Ntt> データ拡散機構
JPH01252989A (ja) * 1988-03-31 1989-10-09 Nippon Telegr & Teleph Corp <Ntt> データ拡散回路
JPH01302289A (ja) * 1988-05-30 1989-12-06 Nippon Telegr & Teleph Corp <Ntt> ブロック暗号装置のデータ拡散器
JPH03254538A (ja) * 1990-03-05 1991-11-13 Nippon Telegr & Teleph Corp <Ntt> 暗号方式
US6182216B1 (en) * 1997-09-17 2001-01-30 Frank C. Luyster Block cipher method
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
JP2002518713A (ja) * 1998-06-15 2002-06-25 アールエスエイ セキュリティ インコーポレイテッド データ依存性ローテーションを用いる強化型ブロック暗号
WO2008026624A1 (en) * 2006-09-01 2008-03-06 Sony Corporation Data conversion device, data conversion method, and computer program

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4275265A (en) * 1978-10-02 1981-06-23 Wisconsin Alumni Research Foundation Complete substitution permutation enciphering and deciphering circuit
US4382300A (en) 1981-03-18 1983-05-03 Bell Telephone Laboratories Incorporated Method and apparatus for decoding cyclic codes via syndrome chains
EP1062755A2 (en) 1997-08-08 2000-12-27 Jonathan Stiebel New operation for key insertion with folding
FR2818772A1 (fr) 2000-12-21 2002-06-28 Bull Cp8 Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes
JP2002247025A (ja) * 2001-02-22 2002-08-30 Hitachi Ltd 情報処理装置
EP1496641A3 (en) 2003-07-07 2005-03-02 Sony Corporation Cryptographic processing apparatus, cryptographic processing method and computer program
US20060002548A1 (en) 2004-06-04 2006-01-05 Chu Hon F Method and system for implementing substitution boxes (S-boxes) for advanced encryption standard (AES)
FR2893796B1 (fr) 2005-11-21 2008-01-04 Atmel Corp Procede de protection par chiffrement
KR100837270B1 (ko) 2006-06-07 2008-06-11 삼성전자주식회사 스마트 카드 및 그것의 데이터 보안 방법
JP4882598B2 (ja) 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP5203594B2 (ja) 2006-11-07 2013-06-05 株式会社東芝 暗号処理回路及び暗号処理方法
US8879725B2 (en) 2008-02-29 2014-11-04 Intel Corporation Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation
EP2273472B1 (en) * 2008-03-31 2016-02-17 Fujitsu Limited Coder equipped with common key code function and built-in equipment
CN101729241B (zh) 2008-10-23 2012-01-25 国民技术股份有限公司 抵御差分能量攻击的aes加密方法
FR2941342B1 (fr) 2009-01-20 2011-05-20 Groupe Des Ecoles De Telecommunications Get Ecole Nat Superieure Des Telecommunications Enst Circuit de cryptographie protege contre les attaques en observation, notamment d'ordre eleve.
US20100329450A1 (en) 2009-06-30 2010-12-30 Sun Microsystems, Inc. Instructions for performing data encryption standard (des) computations using general-purpose registers
CN101841415A (zh) 2009-12-29 2010-09-22 中国科学院软件研究所 一种面向字的密钥流生成方法及加密方法
CN101848078A (zh) 2010-04-30 2010-09-29 中国科学院软件研究所 一种密钥流序列扰动方法及加密方法
CN101826959B (zh) 2010-05-14 2012-05-23 中国科学院软件研究所 一种面向字节的密钥流生成方法及加密方法
JP5682526B2 (ja) * 2011-03-28 2015-03-11 ソニー株式会社 データ処理装置、およびデータ処理方法、並びにプログラム

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01179987A (ja) * 1988-01-11 1989-07-18 Nippon Telegr & Teleph Corp <Ntt> データ拡散機構
JPH01252989A (ja) * 1988-03-31 1989-10-09 Nippon Telegr & Teleph Corp <Ntt> データ拡散回路
JPH01302289A (ja) * 1988-05-30 1989-12-06 Nippon Telegr & Teleph Corp <Ntt> ブロック暗号装置のデータ拡散器
JPH03254538A (ja) * 1990-03-05 1991-11-13 Nippon Telegr & Teleph Corp <Ntt> 暗号方式
US6182216B1 (en) * 1997-09-17 2001-01-30 Frank C. Luyster Block cipher method
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
JP2002518713A (ja) * 1998-06-15 2002-06-25 アールエスエイ セキュリティ インコーポレイテッド データ依存性ローテーションを用いる強化型ブロック暗号
WO2008026624A1 (en) * 2006-09-01 2008-03-06 Sony Corporation Data conversion device, data conversion method, and computer program

Also Published As

Publication number Publication date
CN104871476B (zh) 2018-05-25
CN104871476A (zh) 2015-08-26
TW201440480A (zh) 2014-10-16
KR20150105405A (ko) 2015-09-16
US20140198913A1 (en) 2014-07-17
TWI533652B (zh) 2016-05-11
WO2014109918A1 (en) 2014-07-17
EP2944050A1 (en) 2015-11-18
US10142099B2 (en) 2018-11-27

Similar Documents

Publication Publication Date Title
EP3205044B1 (en) Rotation-based cipher
JP6345237B2 (ja) 平文データを暗号化するための方法および装置
US9515818B2 (en) Multi-block cryptographic operation
JP6576564B2 (ja) 安全かつ効率的なブロック暗号アルゴリズムの実現方法と装置
JP2017504838A (ja) 暗号アルゴリズムに対するサイドチャネル攻撃への対抗策
US20130188789A1 (en) Method and apparatus for generating an advanced encryption standard (aes) key schedule
US9800407B2 (en) Methods and apparatuses for prime number generation and storage
US20160359618A1 (en) Using state reordering to protect against white box attacks
US20180183574A1 (en) Efficient cryptographically secure control flow integrity protection
US10742400B2 (en) Datastream block encryption
JP6735926B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム
TW201545524A (zh) 用於以第二密文編密演算法之運算修改第一密文編密演算法的技術
JPWO2016088453A1 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
EP3667647A1 (en) Encryption device, encryption method, decryption device, and decryption method
US10326596B2 (en) Techniques for secure authentication
US11632234B2 (en) Apparatus and method for generating cryptographic algorithm, apparatus and method for encryption
US9639674B2 (en) Using single white-box implementation with multiple external encodings
JP2016503195A (ja) 計算可能な、大型の、可変の、かつ安全な置換ボックスのための方法および装置
US10411880B2 (en) Apparatus and method for encryption
JP2010044251A (ja) ハッシュ値生成装置、プログラム及びハッシュ値生成方法
US10678709B2 (en) Apparatus and method for memory address encryption
WO2020044485A1 (ja) メッセージ認証装置、メッセージ認証方法及びメッセージ認証プログラム
JP2016503195A5 (ja)
JP2008107636A (ja) 暗号化装置、プログラム及び方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161205

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180502

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180528

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20180921