JP6576564B2 - 安全かつ効率的なブロック暗号アルゴリズムの実現方法と装置 - Google Patents

安全かつ効率的なブロック暗号アルゴリズムの実現方法と装置 Download PDF

Info

Publication number
JP6576564B2
JP6576564B2 JP2018533795A JP2018533795A JP6576564B2 JP 6576564 B2 JP6576564 B2 JP 6576564B2 JP 2018533795 A JP2018533795 A JP 2018533795A JP 2018533795 A JP2018533795 A JP 2018533795A JP 6576564 B2 JP6576564 B2 JP 6576564B2
Authority
JP
Japan
Prior art keywords
data
finite field
cryptographic algorithm
computer system
finite
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.)
Active
Application number
JP2018533795A
Other languages
English (en)
Other versions
JP2019519801A (ja
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.)
Beijing Lianshi Networks Technology Co ltd
Original Assignee
Beijing Lianshi Networks Technology Co ltd
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 Beijing Lianshi Networks Technology Co ltd filed Critical Beijing Lianshi Networks Technology Co ltd
Publication of JP2019519801A publication Critical patent/JP2019519801A/ja
Application granted granted Critical
Publication of JP6576564B2 publication Critical patent/JP6576564B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Description

本発明は、データを暗号化及び復号化するための方法とシステムに関する。
データ暗号化は、許可された当事者だけが、対応する情報を復号化して取得できるように、機密情報をエンコーディングする一般的なプロセスである。機密情報をエンコーディング及びデコーディングするために設計された暗号化及び復号化のアルゴリズム(一般に暗号アルゴリズムと呼ばれる)は多く、高度暗号化標準(AES)暗号アルゴリズム、SM4(以前のSMS4)暗号アルゴリズム及び他の暗号アルゴリズムを含む。
AES暗号アルゴリズムとSM4暗号アルゴリズムは、多くの点で似ている。例えば、2つの暗号アルゴリズムはいずれも対称な鍵を用いてデータを暗号化及び復号化処理し、処理されたデータはいずれも、同じ長さのガロア体(即ち、有限体)における要素として表すことができ、相違点は、2つのガロア体を定義する多項式が異なるだけである。さらに、2つの暗号アルゴリズムの暗号化及び復号化の操作過程にはいずれも、入力データを変換するように、置換関数と並び替え関数が含まれる。置換関数は、鍵値と暗号化又は復号化されるメッセージとの間の関係をぼかすことによって、「混乱」操作を実現する。並び替え関数は、鍵値と暗号化/復号化される情報に対して、要素サブ部品(例えば、ビット)を再構成、順序調整及び混合することによって、「拡散」操作を実現する。
一般に、置換関数は、データの小部分に対して非常に複雑な計算を行う一方、並び替え関数は、データの大部分に対して簡単な計算を行う。この2つの関数を行うことによって、入力データセットに対する暗号化/復号化過程の1ラウンドの操作が完了する。通常、典型的な暗号化/復号化の完全な操作は、予め定義された複数ラウンドの操作を含む。
置換関数の複雑性が高いため、プログラムの実行中に置換関数を実行すると、計算過程への負担が重くなる。ルックアップテーブルは、代替方法として使用される。ルックアップテーブルにより、ある特定の入力値が、予め計算された出力値に写像される。それにより、計算の複雑さを効果的に低減することができる。しかしながら、ルックアップテーブルを使用すると、暗号アルゴリズムは、システムの安全性を破壊し且つ制限された情報を取得できるサイドチャネル攻撃を含むある形式の悪意のある攻撃を受ける可能性がある。サイドチャネル攻撃では、同じプラットフォーム上で暗号アルゴリズムを実行するプロセスにおける物理的作用、例えば、使用される時間変数、エネルギー消費変数、電磁放射変数、熱発生変数、音声信号変数などを観察することによって、秘密鍵の情報を推測することができる。例えば、サイドチャネル攻撃プロセスは、暗号アルゴリズムによりアクセスされるルックアップテーブルメモリアドレス値を観察することによって、秘密鍵の値を推測することができる。
AES暗号アルゴリズムを使用する暗号化と復号化操作では、高度データ暗号化標準新命令セット(AES−NI)を使用して、サイドチャネル攻撃から実行プロセスを保護することができる。AES−NIは、AESの実現方法の1つである。AES−NI命令を使用する場合、隔離されたハードウェア環境で置換関数を一定時間実行することによって、サイドチャネル攻撃の影響を軽減又は排除することができる。
SM4暗号アルゴリズムを使用する暗号化と復号化操作は、ルックアップテーブル法を使用して置換関数を実現する実行プロセスにおいて、依然としてサイドチャネル攻撃の影響を受ける。従って、SM4暗号アルゴリズムの並び替え関数もAES暗号アルゴリズムの並び替え関数も同様にデータに対して効率的なデータ拡散を行うことができるが、SM4暗号アルゴリズムの実際の使用は、その置換関数の比較的安全でない特性により厳しく制限されている。以上の理由から、特定の入力データセットに対して、AES−NI命令を使用してSM4暗号アルゴリズムの置換操作を完了し、且つ依然としてSM4アルゴリズムの並び替え操作を引き続き使用する場合、ある利点がある。
図1は、既存の技術によるAES暗号アルゴリズムとSM4暗号アルゴリズムを使用してSM4暗号アルゴリズムの入力データブロックを暗号化するプロセス100を示す。プロセス100は、システムが暗号化操作を実行するプロセスであってもよい。それは、SM4入力データを受信することと、SM4暗号アルゴリズム形式のデータをAES暗号アルゴリズム形式のデータに変換することと、置換操作を実行することと、AES暗号アルゴリズム形式のデータをSM4暗号アルゴリズム形式のデータに変換することと、並び替え操作を実行することと、特定ラウンド数の操作を完了するまで以上のプロセスを繰り返すことを含む。
プロセス100はステップ102から開始する。ステップ104では、SM4暗号アルゴリズムの要件に従う入力データを受信する。ステップ106では、SM4暗号アルゴリズムの要件に従う入力データを、AES暗号アルゴリズムの要件に従うデータに変換する。以下、このプロセスを更に詳細に説明する。SM4暗号アルゴリズムとAES暗号アルゴリズムはいずれも、同じビット長の数学的同型のガロア体における要素に対して操作を行うものである。体同型は、SM4暗号アルゴリズム形式とAES暗号アルゴリズム形式との間でデータを変換することを可能にする。
ステップ108では、AES暗号アルゴリズムの置換操作は、AES暗号アルゴリズム形式のデータに対して実行される。ステップ110では、置換操作が完了したAES暗号アルゴリズム形式のデータを、SM4暗号アルゴリズム形式のデータに戻して変換する。ステップ112では、SM4暗号アルゴリズムの並び替え操作をSM4暗号アルゴリズム形式のデータに適用する。1ラウンドの暗号化操作の完了が示される。ステップ114では、分岐条件を使用して、暗号化に必要なすべてのラウンド数を完了したか否かを判断し、完了していない場合、プロセス100をステップ106に戻し、完了した場合、プロセス100をステップ116で終了する。
上記方法は、追加の安全性を得るために、AES−NI命令を使用して、さらに長い実行時間及びさらに高い計算の複雑さで置換操作を実行する。ラウンド毎の暗号化操作では、SM4暗号アルゴリズム形式の入力データの各バイトをAES暗号アルゴリズム形式のデータに変換し、その後、AES暗号アルゴリズム形式のデータをSM4暗号アルゴリズム形式のデータに戻して変換する必要がある。2回の変換はいずれも、行列ベクトル積を実行して完了する。既存の技術方案により16バイトのデータを32ラウンド暗号化する場合、単にデータに対してSM4暗号アルゴリズム形式とAES暗号アルゴリズム形式の間の変換を行うには、行列ベクトル積を256回実行する必要がある。一部のシステムにとっては、こんなに多くの回数のデータ変換を実行するための計算コストは、AES−NI命令を使用して得られる安全性のメリットを超える場合がある。従って、システムは、AES−NI命令による安全性のメリットを得ると同時に、過剰な計算時間及び計算の複雑さを導入しないように求められている。
本発明は、暗号アルゴリズムを実行する方法を開示する。その方法は、第1操作と第2操作を含む第1暗号アルゴリズム標準形式に従う第1有限体におけるデータと第1有限体における鍵値を受信するステップと、第1暗号アルゴリズム標準形式に従う第1有限体におけるデータを、第2暗号アルゴリズム標準形式に従う第2有限体におけるデータに変換するステップと、第1暗号アルゴリズム標準形式に従う第1有限体における鍵値を、第2暗号アルゴリズム標準形式に従う第2有限体における鍵値に変換するステップと、第1操作を、第2暗号アルゴリズム標準に従う第2有限体における第1変更操作に変換するステップと、第2操作を、第2暗号アルゴリズム標準に従う第2有限体における第2変更操作に変換するステップと、第2有限体におけるデータと第2有限体における鍵値に対してデータ変更操作を実行するステップとを含み、データ変更操作は、第3有限体におけるデータを生成するように、第2有限体におけるデータと第2有限体における鍵値に対して第1変更操作を実行するステップと、第4有限体におけるデータを生成するように、第3有限体におけるデータに対して第2変更操作を実行するステップと、第4有限体におけるデータを、第1暗号アルゴリズム標準に従う第5有限体におけるデータに変換するステップとを含む。
本発明の幾つかの実施形態によれば、第1有限体におけるデータ、第2有限体におけるデータ、第3有限体におけるデータ、第4有限体におけるデータ、第5有限体におけるデータ、第1有限体における鍵値及び第2有限体における鍵値はいずれも有限体GF(2)における要素として表される。幾つかの実施形態では、第1暗号アルゴリズム標準はSM4暗号アルゴリズム標準であり、第2暗号アルゴリズム標準はAES暗号アルゴリズム標準である。幾つかの実施形態では、第1有限体におけるデータと第2有限体におけるデータは、16バイトの平文データを含む。幾つかの実施形態では、第1有限体における鍵値と第2有限体における鍵値は、4バイトのラウンド鍵を含む。
本発明の少なくとも1つの実施形態によれば、第1操作と第1変更操作は置換操作である。幾つかの実施形態では、置換操作は1つの乗法逆関数を含む。1つの実施形態では、乗法逆元関数は、AESDECLASTとAESENCLAST命令の一方又は両方を用いて実行される。1つの実施形態では、第1変更操作と第1操作は、第1線型変換写像と第2線型変換写像を含む。少なくとも1つの実施形態では、第1操作を第1変更操作に変換することは、同型写像行列を第1線型変換写像と第2線型変換写像に適用することを含む。
本発明の1つの実施形態によれば、第2操作と第2変更操作は並び替え操作である。幾つかの実施形態では、第2変更操作は第2操作の同型形式である。1つの実施形態では、第2操作を第2変更操作に変換することは、同型写像行列を第2操作に適用することを含む。少なくとも1つの実施形態では、第5有限体におけるデータは、16バイトの暗号文データを含む。幾つかの実施形態では、第1暗号アルゴリズム基準によれば、データ変更操作には、複数のラウンド関数で繰り返し実行される必要がある。幾つかの実施形態では、第1有限体におけるデータを第2有限体に変換することは、複数の第1有限体におけるデータポイントを複数の第2有限体におけるデータポイントに並行に変換することを含む。
本発明の少なくとも1つの実施形態によれば、第1有限体における鍵値を第2有限体における鍵値に変換する操作は、複数の第1有限体における鍵値を複数の第2有限体における鍵値に並行に変換することを含む。発明の幾つかの実施形態では、第4有限体におけるデータを第5有限体におけるデータに変換することは、複数の第4有限体におけるデータを複数の第5有限体におけるデータに並行に変換することを含む。発明の1つの実施形態では、第3有限体におけるデータに対して第2変更操作を実行することは、複数の第3有限体におけるデータに対して第2変更操作を並行に実行することを含む。発明の幾つかの実施形態では、第2有限体におけるデータに対して第1変更操作を実行することは、隔離されたハードウェア環境で高度データ暗号化標準命令セット(AES−NI)を実行することによって完了する。発明の少なくとも1つの実施形態では、第3有限体におけるデータに対して第2変更操作を実行することは、隔離されたハードウェア環境で高度データ暗号化標準命令セット(AES−NI)を実行することによって完了する。
本発明はコンピュータシステムを開示する。このコンピュータシステムは、少なくとも1つのプロセッサーを備える。プロセッサーは、第1暗号アルゴリズム標準形式に従う第1有限体におけるデータと第1有限体における鍵値を受信するために使用される。第1暗号アルゴリズム標準は第1操作と第2操作を含み、第1暗号アルゴリズム標準形式に従う第1有限体におけるデータを第2暗号アルゴリズム標準形式に従う第2有限体におけるデータに変換し、第1暗号アルゴリズム標準形式に従う第1有限体における鍵値を第2暗号アルゴリズム標準形式に従う第2有限体における鍵値に変換し、第1操作を第2暗号アルゴリズム標準形式に従う第2有限体の第1変更操作に変換し、第2操作を第2暗号アルゴリズム標準に従う第2有限体の第2変更操作に変換し、データ変更操作を実行し、データ変更操作は、第2有限体のデータと第2有限体の鍵値に対して第1変更操作を実行して第3有限体におけるデータを生成することと、第3有限体におけるデータに対して第2変更操作を実行して第4有限体におけるデータを生成することと、及び、少なくとも1つのプロセッサーを更に使用して第4有限体におけるデータを第1暗号アルゴリズム標準に従う第5有限体におけるデータに変換することを含む。
本発明の幾つかの実施形態では、プロセッサーは、単一命令多重データ流技術を使用して、第1暗号アルゴリズム標準形式に従う第1有限体におけるデータを第2暗号アルゴリズム標準形式に従う第2有限体におけるデータに変換し、第1暗号アルゴリズム標準形式に従う第1有限体における鍵値を第2暗号アルゴリズム標準形式に従う第2有限体における鍵値に変換し、第4有限体におけるデータを第1暗号アルゴリズム標準形式に従う第5有限体におけるデータに変換し、第3有限体の要素に対して第2変更操作を実行して第4有限体の要素を生成するように配置される。発明の1つの実施形態では、第2変更操作は第2操作の同型形式である。発明の少なくとも1つの実施形態では、第2操作を第2変更操作に変換することは、同型写像行列を第2操作に適用することを含む。
本発明の幾つかの実施形態によれば、第1暗号アルゴリズム標準に基づく基準データ変更操作は一定のラウンド数繰り返して実行される。発明の幾つかの実施形態では、第1有限体におけるデータ、第2有限体におけるデータ、第3有限体におけるデータ、第4有限体におけるデータ、第5有限体におけるデータ、第1有限体における鍵値及び第2有限体における鍵値はいずれもGF(2)における要素として表される。発明の少なくとも1つの実施形態では、第1暗号アルゴリズム標準はSM4暗号アルゴリズム標準である。発明の幾つかの実施形態では、第2暗号アルゴリズム標準はAES暗号アルゴリズム標準である。発明の1つの実施形態によれば、第1有限体におけるデータと第2有限体におけるデータは、16バイトの平文データを含む。
少なくとも1つの実施形態では、第1有限体における鍵値と第2有限体における鍵値はいずれも4バイトのラウンド鍵を含む。発明の幾つかの実施形態では、第1操作と第1変更操作は置換操作である。発明の1つの実施形態では、置換操作は乗法逆元関数を含む。少なくとも1つの実施形態では、乗法逆元関数は、AESDECLASTとAESENCLAST命令の一方又は両方を用いて完了する。発明の1つの実施形態によれば、第1変更操作は第1操作の同型写像形式である。発明の幾つかの実施形態では、第1操作と第1変更操作は第1線型変換写像と第2線型変換写像を含む。
本発明の1つの実施形態によれば、第1操作を第1変更操作に変換する変換は、同型写像行列を第1線型変換写像と第2線型変換写像に適用することを含む。発明の幾つかの実施形態では、第2操作と第2変更操作は並び替え操作である。発明の1つの実施形態では、第5有限体におけるデータは16バイトの暗号文データを含む。発明の1つの実施形態では、第2有限体データに対して第1変更操作を実行することは、隔離されたハードウェア環境で高度データ暗号化標準新命令セット(AES−NI)を実行することによって完了する。
本発明の幾つかの実施形態では、第3有限体のデータに対して第2変更操作を実行することは、隔離されたハードウェア環境で高度データ暗号化標準新命令セット(AES−NI)を実行することによって完了する。発明の1つの実施形態では、第1有限体におけるデータと第2有限体におけるデータは16バイトの暗号文データを含む。発明の1つの実施形態では、第5有限体におけるデータは16バイトの平文データを含む。
本発明は、暗号アルゴリズムを実行する方法を開示する。その方法は、第1操作と第2操作を含む第1暗号アルゴリズム標準形式に従う第1有限体のデータを受信するステップと、第1暗号アルゴリズム標準形式に従う第1有限体におけるデータを、第2暗号アルゴリズム標準形式に従う第2有限体におけるデータに変換するステップと、第2暗号アルゴリズム標準に基づいて、第1操作を第1変更操作に変換するステップと、第2暗号アルゴリズム標準に基づいて、第2操作を第2変更操作に変換するステップと、第3有限体におけるデータを得るように、第2有限体におけるデータに対して第1変更操作を実行するステップと、第4有限体におけるデータを生成するように、第3有限体におけるデータに対して第2変更操作を実行するステップと、第4有限体におけるデータを、第1暗号アルゴリズム標準に従う第5有限体におけるデータに変換するステップとを含む。
従来技術による暗号アルゴリズムを実行するプロセスである。 本発明の1つの実施形態による暗号アルゴリズムを実行するプロセスである。 本発明によるコンピュータシステムのブロック図である。
SM4暗号アルゴリズム及びAES暗号アルゴリズムの利点によりSM4暗号アルゴリズムの入力データを処理し、過剰な計算時間及び高すぎる複雑さを導入しないことが説明され例示される。上述したプロセスは、SM4暗号アルゴリズムの並び替え操作の同型形式を計算して実現され得る。このように、SM4暗号アルゴリズムの並び替え操作をAES暗号アルゴリズム形式のデータに対して直接実行することができる。それにより、暗号化又は復号化プロセス中のラウンド毎の操作において、データをSM4暗号アルゴリズム形式のデータに戻して変換することが回避される。
ここに記載された例示的な方法及びシステムは、以下に説明する本願の構成の詳細及び構成要素の配列又は添付の図面に示される内容に限定されない。この方法及びシステムは、他の装置の実現にも適用可能であり、様々な方式で配置及び使用することができる。ここで提供される具体的な適用例は、説明のためのものであり、限定のためのものではない。特に、1つ以上の例示に関連する操作、構成要素、要素及び特性は、他の例示の類似の部分を説明するときに除外すべきではない。
また、ここで使用される表現及び用語は、説明を容易にするためのものであり、限定的であるとみなされるべきではない。ここで、例示、装置、構成要素、要素又はシステム及び方法の行為に対するすべての単数形の参照は、それらの対応する複数形にも適用される。同様に、例示、装置、構成要素、要素又はシステム及び方法の行為に対するすべての複数形の参照は、それらの対応する単数形に適用される。単数形又は複数形の適用は、本発明により開示されるシステム又は方法、それらの構成要素、行為及び要素に対する制限とみなされるべきではない。この部分の「備える」、「含む」、「有する」、「含有する」、「内包する」及び類似の同義語は、その後に平等に列挙されるすべての要素を含むとともに、他の追加の要素も含むことを意図する。本文における「又は」の意味は、説明される用語に対して列挙される要素について、用語が要素の中の1つ以上又はすべてを意味することである。さらに、本文で使用される用語が、参照される関連参考文献の意味と一致しない場合、関連参考文献中の用語の意味は本文に対する補足であり、その用語の意味が本文と矛盾する場合、本文中の用語の意味が使用される。
明確にするために、本発明の実施形態では、平文入力データの暗号化プロセスを複数の暗号操作の例示として使用する。しかしながら、復号化操作を完了するために、暗号化プロセスを逆にして暗号文データに対して実行することができることを理解されたい。それに対応して、実施形態において暗号化プロセスを例示的な装置とする方法及び機器は、復号化プロセスにも適用することができる。
AES暗号アルゴリズム及びSM4暗号アルゴリズムにより処理されるすべてのデータは、ガロア体(有限体)中の要素として表される。この技術分野の常識として、ガロア体は、有限の数の要素を含む。有限体における要素の数は、その体の位数、又は濃度と称される。体の位数に関する1つの制限は、位数が素数の整数乗倍として表現できることである。つまり、体の位数は、次の式で表現できる必要がある。

ここで、qは体の位数であり、pは素数であり、kは整数である。本発明により開示される少なくとも1つの実施形態において、AES暗号アルゴリズム及びSM4暗号アルゴリズムのデータは、位数が256であるガロア体における要素として表される。明確にするために、GFAES(2)によりAES暗号アルゴリズムのガロア体が表され、GFSM4(2)によりSM4暗号アルゴリズムのガロア体が表される。ここで、位数が式(1)の制限を満たしていることを強調するために、体の位数は式(1)の形式で表される。
GFAES(2)とGFSM4(2)のような同じ位数を有するガロア体は、数学的に同型である。これは、ある体におけるデータを別の体に写像できる同型写像行列が少なくとも1つ存在することを意味する。同様なデータを、GFAES(2)又はGFSM4(2)における要素として解釈することができる。これらの2つの体の主な違いは、2つの体を定義する多項式が異なることである。同型写像行列は、これらの2つの体の定義多項式間の差をなくして、データを一方の体から他方の体に変換することができる。従って、互いに同型である1対の256個の要素の有限体間の同型写像行列が既知である場合、この行列を使用して、第1の体の定義に従う1バイトのデータを、第2の体の定義に従う1バイトのデータに変換することができ、且つ、この写像行列の逆行列を使用して、第2の体の定義に従う1バイトのデータを、第1の体の定義に従う1バイトのデータに変換することができる。数学的には、次の関係を確立することができる。

ここで、xは、1つ目の体における1バイトのデータを表し、yは、第2の体における1バイトのデータを表し、Mは、第1の体におけるデータを第2の体におけるデータに変換すると同時に同型特性を維持することができる写像行列を表し、M−1は、第2の体におけるデータを第1の体におけるデータに変換すると同時に同型特性を維持することができる写像行列を表す。式(2)及び式(3)は、実際の例に適用されて、8x1の行列xは、GFSM4(2)における1バイトのデータを表し、8x1の行列yは、対応するGFAES(2)における1バイトのデータを表す。2つの体の間でバイトデータを変換するために、発明の少なくとも1つの実施形態では、同型行列M及び同型逆行列M−1の定義は以下のとおりである。

結論として、式(2)と式(3)中の同型行列ベクトルの積操作によって、1つの体におけるデータを別の体におけるデータに変換することが可能である。図1に基づいて上述したように、この特性はステップ106とステップ110で使用され、AES暗号アルゴリズムとSM4暗号アルゴリズムとの間のデータ変換を実行する。しかしながら、当技術分野で周知のように、行列ベクトル積は、計算上無視できる計算操作ではなく、上述したように、実行の必要がある行列ベクトル積を低減させることが有利である。
本発明が開示する少なくとも1つの実施形態では、上述した欠点を同型体の別の性質により解決することができる。同型性を維持しながらデータをある体から別の体に変換することができるように、体における操作は、同型写像行列を使用して同型性を維持しながらある体から別の体に変換することもできる。例えば、DSM4は、体GFSM4(2)内で定義されたGFSM4(2)内の1対のバイトfとgに対する操作(例えば、SM4の体定義多項式をモジュロする加算及び乗算の基本的な体演算から構成される置換操作及び並び替え操作)を表すようにされる。この操作は、次の数式で定義することができる。

ここで、hは、GFSM4(2)内に定義された出力データを表す。GFAES(2)内のバイトuとvが存在し、且つ操作DSM4をバイトuとvに適用することが望ましいと仮定する。これらの2つのバイトが体GFAES(2)内で定義され、操作DSM4が体GFSM4(2)内で定義されるので、操作DSM4をバイトuとvに直接適用することができない。しかしながら、以下の式によって操作DSM4を体GFAES(2)内に変換することができる。

ここで、操作DAESは操作DSM4の同型形式である。操作DAESは、体GFAES(2)内で定義され、体GFAES(2)内のバイトuとvに適用することができる。同様に、操作DSM4をバイトuとvに適用するために、まず、バイトuとvを体GFSM4(2)内に変換し、その後、操作DSM4をバイトuとvの変換形式に適用することができる。又は、操作DSM4を式(7)によって操作DAESに変換してから、操作DAESをバイトuとvに直接適用することもできる。後述するように、後者の方法は明らかな利点を有する。
図2は、1つの実施形態において、AES暗号アルゴリズムとSM4暗号アルゴリズムを使用して、低い計算の複雑さでSM4アルゴリズムの入力データを暗号化するプロセス200を示す。プロセス200は、暗号化操作を実行するシステムにより実行されてもよく、SM4により入力されたデータを受信することと、SM4暗号アルゴリズム標準形式に従うデータをAES暗号アルゴリズム標準形式に従うデータに変換することと、変更された置換操作を実行することと、変更された並び替え操作を実行することと、一定のラウンド数を完了するまで上述したプロセスを繰り返して実行することと、AES暗号アルゴリズム標準形式に従うデータをSM4暗号アルゴリズム標準形式に従うデータに変換することとを含む。
プロセス200はステップ202から開始する。ステップ204において、体GFSM4(2)内で定義された入力データセットが受信される。ステップ206において、体GFSM4(2)内で定義された入力データセットは式(2)によって、体GFAES(2)内で定義されたデータに変換される。ステップ208において、AES暗号アルゴリズムの置換操作(SubBytes操作)は、体GFAES(2)内で定義されたデータに適用される。ステップ210において、SM4暗号アルゴリズムの並び替え操作(LBox操作)は、式(7)によって体GFAES(2)内の操作に変換され、変換された操作は、体GFAES(2)内で定義されたデータに適用される。
ステップ212において、すべての暗号化ラウンド数が実行されたか否かが判断される。判断結果が否定の場合、プロセス200はステップ208に戻り、逆の場合、プロセス200はステップ214を実行し続ける。ステップ214において、体GFAES(2)内で定義されたデータは、式(3)によって、体GFSM4(2)内で定義されたデータに変換される。プロセス200はステップ216で終了する。
プロセス200の実行プロセスは、情報の暗号化又は復号化のプロセスに必要な時間又は計算リソースを著しく低減する。これは、少なくとも暗号化又は復号化のプロセスのラウンド毎に体変換操作を2回実行する必要がないためである。暗号化と復号化のプロセス全体で、データセットは、合計2回の体変換操作が実行される。上述したように、プロセス100により体GFSM4(2)で定義された16バイトのデータを暗号化する32ラウンドの実行プロセスにおいては、2つの体間でデータの変換を完了するために、合計256回の行列ベクトル積操作を実行する必要がある。それに対して、プロセス200により体GFSM4(2)内で定義された16バイトのデータを暗号化する32ラウンドの実行プロセスにおいて、データの体変換を完了するために、合計32回の行列ベクトル積のみを実行すればよい。プロセス100と比較して、224回の体変換が削減される。
行列ベクトル積に必要な時間及び計算リソースを削減することによって、プロセス200を実行するコンピュータシステムの安全性及び効率を強化し向上させることができる。例えば、実行時間は、各バイトの処理に必要な中央処理装置(CPU)のクロックサイクルとして比較すると、発明の1つの実施形態において、前記従来技術より12%低減され、発明の別の実施形態において、クロックサイクルは37%低減され、発明の別の実施形態において、クロックサイクルは49%低減される。さらに、ここで開示される装置は、上述した従来技術と比較して、上述した従来技術の重い計算を実行するのに十分なリソースがないシステムに対して追加の暗号化安全性を提供することができる。
上記ステップ208において説明された変更された置換操作については、後に詳述する。上述したように、AES−NI命令セットを使用して置換操作を完了することによって、暗号化の安全性は著しく向上する。ステップ208において、ステップ204で受信された体GFSM4(2)内で定義されたデータに対して変更された置換操作を実行するために、体GFSM4(2)内で定義された置換操作及び体GFAES(2)内で定義された置換操作をさらに論述する必要がある。
次に、体GFSM4(2)内で定義された置換操作、Sボックス置換(SBox)を、AES−NI命令セットにより実行できる操作に変換するプロセスを詳細に論述する。上述したように、SBox操作は、ルックアップテーブルを照会する操作によって完了することができる。各入力バイトに対して、テーブルでは対応する出力バイトがある。以下の表1は、SBoxのルックアップテーブルを示す。

表1

入力された1バイトの2進数データを置換するために、入力バイトの最初の4ビットと入力バイトの最後の4ビットが分離される。最初の4ビットは行を指定し、最後の4ビットは列を指定する。入力されたバイトは、行と列の交点にある要素で代替される。
例えば、入力「00101100」の場合、前半バイトの値は「0010」であり、16進数値「2」に相当し、後半バイトの値は「1100」であり、16進数値「c」に相当する。行「2」列「c」での16進数値「ed」は、対応する入力のSBoxルックアップの出力値である。
SBox操作は、ルックアップテーブルとして表しルックアップテーブル操作により完了することができるが、SBox操作は、同様に、数式により表すこともできる。


ここで、xは入力バイトであり、AとCは以下のように定義された行列であり、Iは体GFSM4(2)内の逆行列操作を表す。言い換えれば、関数Iは次のように表すことができる。


ここで、xは入力であり、%はモジュラー関数を表し、p(x)はGF(2)上で定義された既約多項式である。


ここで、行列A及び行列Cの定義は次のとおりである。

体GFSM4(2)内で定義された操作のように、SBox操作は、水平構造の入力バイト(即ち、1つの入力バイトが1つの1x8の行列として表される)を受けるように設計された。しかしながら、AES−NI命令の操作は、垂直構造の入力バイト(即ち、1つの入力バイトが1つの8x1の行列として表される)を必要とする。次の式を使用して、SBox操作を変更し垂直構造の入力バイトを受ける。


ここで、xは入力であり、Iは体GFSM4(2)内の逆行列操作を表し、行列A、A、C及びCは次のように定義される。

一般に、式(13)における乗法逆元関数IのパラメータA・x + Cは一般的に第1写像変換と呼ばれ、A・x’+Cは第2写像変換と呼ばれ、x’は、乗法逆元関数Iが第1写像変換で実行される出力値を表す。ステップ204で受信された32ビットの入力ワードは4バイト(x, x, x, x)に分割され、式(13)は入力ワードの4バイトに順に適用され、置換された出力ワードが生成される。この操作は、数式によって次のように表すことができる。

前述したように、SM4アルゴリズムが実行されるとき、式(13)に基づいて、第1写像変換の出力に対して乗法逆元関数を直接実行することは安全ではない。それに対応して、第1写像変換の逆元操作は、AES−NI命令(AESDECLAST命令及びAESENCLAST命令を含む)を使用して完了することができる。後続の例では、よりよく説明するために、AESDECLAST命令を使用してAES暗号アルゴリズムの置換関数(SubBytes,)を完了する。ここで、SubBytes操作、AESDECAST逆関数、及びAESDECLAST命令を使用するためのSBoxの変換操作について詳細に説明する。
SubBytes操作は次のように定義される。

ここで、yは出力バイトであり、行列A及び行列Bは次のように定義され、x−1は、AESDECLASTを使用して完了できる乗法逆元関数である。乗法逆元x−1は、GF(2)上で定義された以下の既約多項式のモジュロに基づいて計算される。

−1=0である。行列A及び行列Bは次のように定義される。

SubBytes操作でx−1を計算する操作は、入力xをAESDECLAST命令の入力とすることによって完了する。AESDECLAST操作は次のように定義される。

ここで、A−1は、式(21)で定義された行列Aの逆行列であり、Bは、式(22)で定義された行列であり、xは、体GFAES(2)内で定義された入力バイトである。式(20)で定義された既約多項式q(x)に対してモジュロ演算を行った後の値がAESDECLAST命令の出力とされる。しかしながら、AESDECLASTの逆元操作で、入力は体GFAES(2)内で定義されたものである必要があるが、第1写像変換は体GFSM4(2)内で定義されたものであるため、乗法逆元操作を行うために第1写像変換Ax+Cを式(23)に直接使用することができない。それに対応して、第1写像変換は、式(2)と式(7)を使用して体GFAES(2)における操作に変換される必要がある。

ここで、xは式(23)で定義されたAESDECLAST命令の入力であり、yはステップ206で受信された体GFAES(2)におけるバイトであり、AとCは、式(14)と式(16)で定義された行列である。式(24)を式(23)に代入すると、次の式を生成することができる。

ここで、式(25)の出力は第2写像変換の入力とされ、上述したように、第2写像はAx+Cに変換される。
第1写像変換と類似して、第2写像変換は体GFAES(2)内に変換される必要がある。式(2)と式(7)を使用して第2写像変換を体GFAES(2)内に写像すると、以下の数式を得ることができる。

ここで、xは式(25)の出力であり、zは、体GFAES(2)内で定義された式(26)の出力である。式(25)を式(26)に代入すると、以下の数式が得られる。

ここで、zは、体GFAES(2)内で定義された置換操作の出力バイトであり、yは、体GFAES(2)内で定義された入力バイトである。同様に、zは、1ラウンドの暗号化プロセスにおけるステップ208での変更された置換操作の出力を表す。
AESDECLAST操作が実行されると、該操作は、入力として2つの値(1つの状態バイトと1つのラウンド鍵)を受け取り、AESDECLAST操作の出力は、状態バイトの逆とラウンド鍵の排他的論理和との和である。AESDECLAST操作の入力値は次のように定義される。

前記のものと組み合わせて、AES−NI命令の式は次のように表すことができる。

この式は、次のようにさらに簡略化することができる。

ステップ208で生成された4つの出力バイトの各々は、式(27)を使用して計算されたものである。次に、次のステップ210での変更された並び替え操作が詳細に説明される。SM4暗号アルゴリズムの並び替え操作(LBox)は、32ビットのデータに適用する線型変換であり、以下では、統一されて「ワード」と称される。1つのワードは、4バイトに分割することができる。SM4暗号アルゴリズムの並び替え操作は、以下のように定義される。

ここで、(z, z, z, z)は出力であり、(x, x, x, x)は入力であり、各Lijは8x8の2値行列である。各対の要素に対して、上記行列乗算は、以下の複数の行列ベクトルのサブ演算に変換することができる。

ここで、i, j = 0, 1, 2, 3であり、 Li,jは2値行列であり、xはSM4暗号アルゴリズムの入力である。式(33)の同型構造は、以下のように示される。

ここで、Li,jは2値行列であり、yは、体GFAES(2)内に写像されたSM4暗号アルゴリズムの入力である。体GFAES(2)内に変換された完全なSM4暗号アルゴリズムのLBox操作の同型構造は、以下の式で表すことができる。

式(35)は、次の式にさらに簡略化することができる。

上述したように、並び替え操作は、データ拡散の役割を果たす。並び替え操作は、ラウンド関数と鍵の生成アルゴリズムの両方において循環シフト操作を実行する。これについては、次に詳細に説明する。ラウンド関数における並び替え関数LBox及び鍵生成アルゴリズムにおける並び替え関数LBox’は、以下のように定義される。

ここで、xは、32ビットの入力ベクトルであり、○+はビット毎の排他的論理和操作を表し、x≪nは、入力されたビットベクトルxを左へ循環させて左にn個の位置移動し、即ち、上位のビットを下位のビットにシフトさせる。それに対応して、並び替えられたデータとデータポイントの「混乱」が実現される。
以下では、鍵生成関数及びラウンド関数が詳述される。鍵生成関数は、秘密鍵値を入力として使用してラウンド毎のラウンド関数に必要なラウンド鍵を計算する。例えば、32ラウンドを有する暗号化プロセスに対して、入力された鍵値及び鍵生成関数の入力ベクトルは、次のように定義される。

ここで、Yは鍵生成関数の入力ベクトルであり、Kは32ビットの入力鍵値であり、この値は、4つのバイトにより構成されるように分割することができる。入力ベクトルYの最初の4つの要素は、次のように定義される。

上記パラメータを組み合わせて、第iラウンドのラウンド鍵は、鍵生成アルゴリズムに基づいて以下のように計算される。

ここで、i = (0,1,…31)であり、CKは以下のように定義される。


及び

以下に定義されるように、式(45)で計算されたラウンド鍵RKは、平文入力ベクトルXを暗号化するために使用される。

式(49)の出力の最後の4つのバイト(例えばi=32,33,34,35)が逆順に並び替えられると、出力の暗号文が得られる。即ち、最後の4つのバイトの出力順序は(X35,X34,X33,X32)である。
上記式を組み合わせて暗号化ラウンドを構成することができる。要するに、式(30)は体GFAES(2)内の置換関数を表し、式(36)は体GFAES(2)内の並び替え関数を表し、式(45)は鍵生成関数を表し、式(49)はラウンド関数を表す。式(30)が式(36)に代入されると、次の式が生成される。

ここで、uはプロセス200におけるステップ210での1ラウンドの暗号化の出力である。ステップ212で、より多くのラウンドを実行する必要があると判定する場合、プロセス200はステップ208に戻る。次のラウンドの暗号化の第1写像変換を準備するために、式(50)にA・(M・A・M−1)を乗じると、次の式が生成される。


vは、次のラウンドの出力である。
計算効率をさらに改善するために、AESDECLAST操作の前の行列乗算


は、ルックアップテーブル操作を使用して完了することができる。上述のようにルックアップテーブル操作を使用してSBox操作を完了することは、一定の潜在的な安全上の危険をもたらす可能性があるが、LBoxの操作は鍵の情報を含まないので、ここでのルックアップテーブル操作は安全性に影響を与えない。悪意のあるプログラムがLBoxのルックアップテーブル操作を観察できるとしても、該プログラムは鍵に関するいかなる情報も取得することができない。
次に、1つの例を用いて、プロセス200において上記式により体GFSM4(2)における16バイトのデータに対して32ラウンドの暗号化プロセスを行うことを説明する。ステップ202では、プロセス200が開始する。ステップ204では、体GFSM4(2)内で定義されたデータが受信される。暗号化プロセスを例にとると、入力データは体GFSM4(2)内で定義された16バイトの平文であり、(x,x…x15)と表される。ステップ206において、体GFSM4(2)内で定義された入力データは、以下の式によって体GFAES(2)内のデータに変換される。

ここで、i = 0,1,…15である。式(52)の出力バイトは、以下のように4つの4x1の行列を構成する。


ここで、i = 0,1,2,3である。
ステップ208において、r = 0, 1,…31のラウンド毎について、式(31)の入力は次のように定義される。

ここで、RKは、第rのラウンドに対応するラウンド鍵であり、0は8x8の零行列を表し、置換操作は以下のように実行される。

State_NIは置換操作の出力である。次に、並び替え操作は以下のように実行される。

0は8x8の全零行列を表す。式(57)における行列は、わかりやすくするために分割された拡張形式として書かれることに注意する必要がある。操作中、複数の行列の乗算は、事前計算によって1つの行列に組み合わせられ、入力値State_NIに対して1回のルックアップテーブルを行うことによって完了する。
より多くのラウンドを実行する必要がある場合、プロセス200はステップ208に戻る。逆の場合、32ラウンドの暗号化の後、ステップ214はステップ212の後に継続して実行される。ステップ214において、16バイトの出力暗号文Y35,Y34,Y33,Y32は、以下の式によって体GFSM4(2)内のデータに変換される。


式(59)が実行された後、プロセス200はステップ216で終了する。
上述したように、プロセス200は、暗号化演算を実行するコンピュータシステムの計算を著しく改善し簡単化する。例えば、図3は、コンピュータシステム300の操作を改善するためにプロセス200を使用することができるコンピュータシステム300を示す。コンピュータシステム300は、プロセッサー302、1つ以上のメモリユニット304、内部接続部材306、通信ネットワーク312に結合された1つ以上のインタフェースデバイス308、及びデータ記憶部材310を備える。図に示されるように、コンピュータシステム300は、通信ネットワーク312に接続され、且つ、通信ネットワーク312によりデータ交換を行うことができる。通信ネットワーク312は、コンピュータシステムがデータを交換するための任意の情報ネットワークを含んでもよい。通信ネットワーク312を使用してデータを交換するために、コンピュータシステム300は、光チャンネル、トークンネットワーク、イーサネット(登録商標)、無線ネットワーク、ブルートゥース(登録商標)、IP、IPv6、TCP/IP、UDP、 DTN、HTTP、FTP、SNMP、SMS、 MMS、SS7、JSON、SOAP、CORBA、REST及びネットワークサービスを含むがこれらに限定されない様々な方法、プロトコル、標準を使用することができる。データ伝送の安全性を保証するために、コンピュータシステム300は、本発明で言及される安全手段を使用して、通信ネットワーク312を介してデータ伝送を行うことができる。
本発明で開示される特定の態様、関数及びプロセスを実現するために、プロセッサー302は一連の命令を実行して、変更されたデータを生成する。プロセッサー302は、任意のタイプのプロセッサー、マルチプロセッサー又はコントローラであってもよい。プロセッサーは、例えば、Intel Atom、Itanium、Core、Celeron又はペンティアム(登録商標)プロセッサー、AMD Opteronプロセッサー、Apple A4又はA5プロセッサー、Sun UltraSPARC又はIBM Power5+プロセッサー及びIBMホストチップなどの市販のプロセッサーを含んでもよい。プロセッサー302は、内部接続部材306を介して、1つ以上のメモリユニット304を含むシステムの他の構成要素に接続される。発明の幾つかの実施形態において、プロセッサー302は、単一命令多重データ流(SIMD)を並列実行できるマルチプロセッサーユニットであってもよい。SIMDにより、マルチプロセッサーユニットは複数のデータポイントを同時に(並列に)処理することができるので、計算時間が大幅に短縮される。
後で詳細に説明するように、本発明により開示される装置は、SIMD技術を用いて並列処理を効率的に行うことができる。しかしながら、従来技術は、1つの有限体と別の有限体との間のデータ変換を順次に処理することを必要とし、ラウンド毎において、第1有限体の置換操作と第2有限体の並び替え操作との間の切り換えは、並列処理の効率を著しく低減する。特に、従来技術の直列特性により、システムは、2017年にリリースされるIntelのAVX512技術、近い将来にリリースされるIntel AVX2014技術、POWERPCのAltiVec技術、SUNのVIS技術、AMDの3DNow技術及びその他の様々な技術を含む512ビットのレジスター技術を使用することができない。
1つ以上のメモリユニット304は、コンピュータシステム300の実行プロセスにおいてプログラム及びデータを記憶する。従って、1つ以上のメモリユニット304は、例えば、ダイナミックランダムアクセスメモリ(DRAM)又はスタティックランダムアクセスメモリ(SRAM)などの高速、揮発性、ランダムアクセスメモリであってもよい。しかしながら、1つ以上のメモリユニット304は、ハードウェア又は他の不揮発性メモリなどのデータを記憶するための任意のデバイスを含んでもよい。複数の実施形態では、本発明に開示された関数を実行するために、1つ以上のメモリユニット304は、特殊な例になるように組み合わせられてもよいし、場合によって、独特な構造を有してもよい。対応するデータ構造の構成及び容量は、特定のデータ又は特定のタイプのデータを記憶するために用いられてもよい。
コンピュータシステム300の各構成要素は、内部接続構成要素306によって一緒に接続される。内部接続構成要素306は、1つ以上の物理バス、例えば、同じ機器内に集積された各部材を接続するための物理バスを含んでもよいが、IDE、SCSI、PCI及びInfiniBandなどの標準又は特殊なバス技術を含んでもよい。内部接続構成要素306は、コンピュータシステム300の構成部材間のデータ、命令などの通信を可能にするために使用される。
コンピュータシステム300は、1つ以上のインタフェースデバイス308、例えば、入力デバイス、出力デバイス、及び入力/出力機能を組み合わせたデバイスをさらに含む。インタフェースデバイスは、入力を受け入れるか、又は、出力を提供することができる。特に、出力デバイスは、情報を外部に展示することもできる。入力デバイスは、外部ソースからの情報を受け入れることができる。インタフェースデバイスは、例えば、キーボード、マウスデバイス、トラックボール、マイクロフォン、タッチスクリーン、印刷デバイス、展示デバイス、拡声器及びネットワークインターフェースカードなどを含むことができる。インタフェースデバイスは、コンピュータシステム300が外部エンティティ(例えば、ユーザーや他のシステム)と情報を交換し通信することを可能にする。
データ記憶ユニット310は、コンピュータ読み書き可能な不揮発性又は非一時的なデータ記憶媒体を含み、プログラムを定義する命令セット又はプロセッサー302によって実行される他のオブジェクトを記憶するために使用される。データ記憶ユニット310は、プログラムの実行中にプロセッサー302によって記憶媒体に記録された情報を含んでもよい。具体的には、記憶スペースを節約するために、又はデータ交換の効率を高めるために、情報は、1つ以上のデータ構造に記憶されるように構成されてもよい。命令は、エンコーディングされた信号として永続的に記憶されてもよく、命令は、プロセッサー302に本発明で説明された任意の関数を実行させることができる。記憶媒体は、例えば、光磁気ディスク、磁気ディスク、及びフラッシュメモリなどであってもよい。実行中、プロセッサー302又は他のコントローラは、不揮発性記憶媒体から、例えば1つ以上のメモリユニット304などの他の記憶装置からデータを読み込む。これにより、プロセッサー302は、データ記憶ユニット310からデータを直接読み出すよりも速く情報を取得することができる。メモリは、データ記憶ユニット310又は1つ以上のメモリユニット304に配置することができるが、プロセッサー302は、メモリ内のデータに対して動作し、且つ動作が完了した後に、データ記憶ユニットに関連する記憶媒体に処理されたデータをコピーする。様々な異なる構成要素を使用して複数の記憶媒体間のデータの移動を管理することができ、その例はいずれの特定のデータ管理構成要素に限定されない。さらに、その例はいずれの特定のメモリシステム又はデータ記憶システムに限定されない。
コンピュータシステム300は、一種のコンピュータシステムの一例として使用され、システムの各部材及び機能がインスタンス化されてもよいが、システムの各部材及び機能は、コンピュータシステム300で実行されるインスタンス化に限定されない。各部材及び機能は、図3と異なるアーキテクチャ又は構成要素を有する1つ以上のシステムで実現することができる。例えば、コンピュータシステム300は、例えば本開示における特定の操作を完了する特定用途向け集積回路(ASIC)のような専用プログラムや専用ハードウェアを含んでもよい。他の例には、IBM PowerPC上で実行され同じ機能を完了する複数のMAC OS X計算デバイスからなるグリッド、及び専用ハードウェア及び専用オペレーティングシステムを実行する専用計算デバイスが含まれてもよい。
コンピュータシステム300はオペレーティングシステムを含むコンピュータシステムであってもよい。このオペレーティングシステムは、少なくとも1つのコンピュータシステム300におけるハードウェア部材を管理する。幾つかの例では、プロセッサー又はコントローラ、例えばプロセッサー302も、実行中のオペレーティングシステムを含む。実行可能なオペレーティングシステムの例は、マイクロソフト社から入手可能なWindows 8オペレーティングシステムなどのWindowsシリーズのオペレーティングシステム、アップル社から入手可能なMAC OS Xオペレーティングシステム又はiOSオペレーティングシステム、Linux(登録商標)システムに基づくLinuxディストリビューションのオペレーティングシステム(レッドハット社によるエンタープライズレベルのLinuxオペレーティングシステムを含む)、Sun社によるSoloarisシステム及び様々なソースから入手可能なUNIX(登録商標)オペレーティングシステムを含む。多くの他のオペレーティングシステムも利用可能であり、その例はいずれの特定のオペレーティングシステムに限定されない。
プロセッサー302とオペレーティングシステムはともに、高水準プログラミング言語で書かれたアプリケーションプログラムのコンピュータプラットフォームを定義する。これらのアプリケーションの構成部材は、通信ネットワーク(例えば、Internet)で通信プロトコル(例えば、TCP/IP)を用いて通信を行う実行可能プログラム、ミドルウェアフォーム、バイトコード又はインタプリタコードを含む。同様に、部材は、例えば.Net、SmallTalk、Java(登録商標)、C++、Ada、C#、Python又はJavaScript(登録商標)などのオブジェクト指向プログラミング言語を用いて完了することができる。他のオブジェクト指向プログラミング言語が使用されてもよい。また、関数、スクリプト又は論理プログラミング言語が使用されてもよい。
さらに、様々な部材及び機能は、非プログラミング環境で実現することもでき、例えば、ブラウザウィンドウにおいてHTML、XML又は他のフォーマットとして作成され、グラフィカルユーザーインターフェース又は類似のプログラムがこれらの部材又は機能を実現できるようにする。さらに、異なる例は、プログラミング、非プログラミング又は両者の任意の組み合わせによって実現されてもよい。例えば、HTML言語により実現されたインターネット・ウェブサイトは、ウェブサイトにC++又はPython言語により実現されたデータオブジェクトが追加されてもよい。従って、本開示の例は、ある特定のプログラミング言語の使用に限定されず、任意の適切なプログラミング言語を使用してもよい。本開示の機能部材は、例えば、本発明に開示された機能を実行できるように配置される専用ハードウェア、実行可能プログラム、データ構造又はオブジェクトなどのより広い範囲の構成要素を含んでもよい。
幾つかの実施形態では、本発明に開示される構成要素は、パラメータを読み取って構成要素自体によって実行される機能に影響を及ぼすことができる。これらのパラメータは、揮発性メモリ(例えばRAM)又は不揮発性メモリ(例えば磁気ディスク)を含む任意の適切なメモリに物理的に記憶されてもよい。また、これらのパラメータは、適切なデータ構造(例えば、ユーザモードアプリケーションによって定義されたデータベース又はファイル)に論理的に記憶されてもよいし、共通の共用データ構造(例えば、オペレーティングシステムにおけるアプリケーションプログラムレジストリ)に記憶されてもよい。また、幾つかの例において、これらの構成要素の動作を配置するように外部エンティティがこれらのパラメータを変更することを可能にするために、システムレベルds及びユーザーレベルのインターフェースが提供される。
上述したように、発明の少なくとも1つの実施形態において、プロセッサー302はSIMD技術を使用する。しかしながら、プロセッサー302がSIMD命令を実行することができたとしても、ラウンド毎のステップ106及びステップ110でデータに対する二重変換操作を実行する必要があり、並列計算操作の効果が相殺されるため、プロセス100の実行中にSIMD命令の実行効果が低減される。
しかしながら、プロセス200は、SIMD技術の利点を利用して、データに対するラウンド毎の実行中のデータセット変換操作を回避することができる。例えば、上記ステップ206に係る式(52)を参照すると、行列乗算操作A・(M・A・M−1)・Mは複数のラウンド関数で実行され、命令を使用して複数のデータポイント(例えば、入力データの各バイト)に対して同期処理を行うことができる。同様に、ステップ214における式(59)の行列乗算操作は、命令を使用して複数のデータポイント(例えば、出力データの各バイト)に対して同期処理を行うこともできる。
上記ステップ210におけるLBox操作は、SIMD技術を使用することもできる。上述したように、LBox操作は実際に複数のデータポイントに対してルックアップテーブル操作を並列に行う。例えば、式(57)における行列乗算操作は、SIMD技術を使用して各データポイントState_NIを処理する。

当技術分野の常識として、並列に処理できるデータの量は、SIMD技術を使用して減少できる実行可能な時間に直接な影響を及ぼす。それに対応して、並列に処理できるデータの量が多いほど、SIMD命令は、より効率の改善をもたらすことができる。
以上の説明は主に暗号化プロセスに関連するが、当業者であれば、暗号化プロセスを逆転させるだけで、上記原理を復号化操作にも適用することを理解するであろう。暗号学の分野における対称鍵システムの暗号化と復号化操作の同等性は周知であるので、本開示で言及される暗号化プロセスは、復号化プロセスに対する本開示の技術的原理の適用性を排除するものと見なされるべきではない。
さらに、上記の説明の例で言及した特定の数値は、限定するものと見なされるべきではない。例えば、上述した少なくとも1つの例において、暗号化プロセスには32ラウンドの操作があることが言及されたが、より多く又はより少ないラウンド数も適用される。さらに、上記の例では、AES及びSM4暗号アルゴリズムが言及されたが、本開示の技術的原理は、他の暗号アルゴリズムにも適用できるということに注意すべきである。
式(4)における同型写像行列及び式(5)における同型写像逆行列は単に例示のためのものであり、例えば、以下の同型写像行列及びその逆行列のような他の同型写像行列も同様に使用できることを理解すべきである。



式(4)と式(5)で定義されていない他の同型写像行列及び対応する逆行列、例えば、式(60)〜式(73)も同様に使用することができる。
本発明の装置は、本願の記載又は図面における構造の詳細、構成要素の配置に限定されない。また、本開示で使用される表現や用語は、説明を明瞭にするためのものであり、限定として考慮されるべきではない。本開示で使用される「備える」、「構成」又は「有する」、「含む」、「関する」及び他の変形は、それらの後に列挙された要素を含むべきであり、追加の要素も同様に含む。
本開示が発明の少なくとも1つの実施形態の複数の部材を説明した後、当業者は、本発明に対して様々な調整、修正及び改良を行うことができるはずである。これらの調整、修正及び改良は、対応する技術的手段を本発明の範囲から実質的に逸脱させるものではない。従って、上記の説明及び図面は、説明のためだけのものである。

Claims (45)

  1. 少なくとも1つのプロセッサーを備えるコンピュータシステムの前記プロセッサーが暗号アルゴリズムを実行する方法であって、
    前記プロセッサーが、第1操作と第2操作を含む第1暗号アルゴリズム標準に従う第1有限体におけるデータと第1有限体における鍵値を受信するステップと、
    前記プロセッサーが、第1暗号アルゴリズム標準に従う前記第1有限体におけるデータを、第2暗号アルゴリズム標準に従う第2有限体におけるデータに変換するステップと、
    前記プロセッサーが、第1暗号アルゴリズム標準に従う前記第1有限体における鍵値を、第2暗号アルゴリズム標準に従う第2有限体における鍵値に変換するステップと、
    前記プロセッサーが、前記第1操作を、第2暗号アルゴリズム標準に従う第2有限体における第1変更操作に変換するステップと、
    前記プロセッサーが、前記第2操作を、第2暗号アルゴリズム標準に従う第2有限体における第2変更操作に変換するステップと、
    前記プロセッサーが、前記第2有限体におけるデータと前記第2有限体における鍵値に対して変更操作を実行するステップとを含み、
    前記変更操作は、
    前記プロセッサーが、第3有限体におけるデータを生成するように、前記第2有限体におけるデータと前記第2有限体における鍵値に対して前記第1変更操作を実行するステップと、
    前記プロセッサーが、第4有限体におけるデータを生成するように、前記第3有限体におけるデータに対して前記第2変更操作を実行するステップと、
    前記プロセッサーが、前記第4有限体におけるデータを、第1暗号アルゴリズム標準に従う第5有限体におけるデータに変換するステップと、
    を含むことを特徴とする暗号アルゴリズムを実行する方法。
  2. 前記第1有限体におけるデータ、第2有限体におけるデータ、第3有限体におけるデータ、第4有限体におけるデータ、第5有限体におけるデータ、第1有限体における鍵値及び第2有限体における鍵値の各々は、ガロア体GF(28)における要素である、ことを特徴とする請求項1に記載の方法。
  3. 前記第1暗号アルゴリズム標準は、SM4暗号アルゴリズムである、ことを特徴とする請求項1に記載の方法。
  4. 前記第2暗号アルゴリズム標準は、高度データ暗号化標準AESである、ことを特徴とする請求項1に記載の方法。
  5. 前記第1有限体におけるデータと前記第2有限体におけるデータはいずれも16バイトの平文データを含む、ことを特徴とする請求項1に記載の方法。
  6. 前記第1有限体における鍵値と前記第2有限体における鍵値はいずれも4バイトのラウンド鍵を含む、ことを特徴とする請求項1に記載の方法。
  7. 前記第1操作と前記第1変更操作はいずれも置換操作である、ことを特徴とする請求項1に記載の方法。
  8. 前記置換操作は、乗法逆元関数を含む、ことを特徴とする請求項7に記載の方法。
  9. 前記乗法逆元関数は、AESDECLASTとAESENCLASTの一方又は両方を用いて実行される、ことを特徴とする請求項8に記載の方法。
  10. 前記第1変更操作は、前記第1操作の同型形式である、ことを特徴とする請求項7に記載の方法。
  11. 前記第1操作と前記第1変更操作は、第1写像変換と第2写像変換を含む、ことを特徴とする請求項10に記載の方法。
  12. 前記第1操作を前記第1変更操作に変換するには、同型写像行列を前記第1写像変換と前記第2写像変換に写像して適用する必要がある、ことを特徴とする請求項11に記載の方法。
  13. 前記第2操作と前記第2変更操作はいずれも並び替え操作である、ことを特徴とする請求項1に記載の方法。
  14. 前記第2変更操作は、前記第2操作の同型形式である、ことを特徴とする請求項13に記載の方法。
  15. 前記第2操作を前記第2変更操作に変換するには、同型写像行列を前記第2操作に適用する必要がある、ことを特徴とする請求項14に記載の方法。
  16. 前記第5有限体におけるデータは、16バイトの暗号文データを含む、ことを特徴とする請求項1に記載の方法。
  17. 前記第1暗号アルゴリズム標準によれば、データ変更操作には一定のラウンド数繰り返して実行される必要がある、ことを特徴とする請求項1に記載の方法。
  18. 前記第1有限体におけるデータを前記第2有限体におけるデータに変換することは、複数の第1有限体におけるデータポイントを複数の第2有限体におけるデータポイントに並行に変換することを含む、ことを特徴とする請求項1に記載の方法。
  19. 前記第1有限体における鍵値を前記第2有限体における鍵値に変換する時に、複数の第1有限体における鍵値のデータポイントを複数の第2有限体における鍵値のデータポイントに並行に変換することを含む、ことを特徴とする請求項1に記載の方法。
  20. 前記第4有限体におけるデータを前記第5有限体におけるデータに変換する時に、複数の第4有限体におけるデータポイントを複数の第5有限体におけるデータポイントに並行に変換することを含む、ことを特徴とする請求項1に記載の方法。
  21. 前記第3有限体におけるデータに対して前記第2変更操作を実行する時に、第3有限体における複数のデータポイントに対して第2変更操作を並行に実行することを含む、ことを特徴とする請求項1に記載の方法。
  22. 前記第2有限体におけるデータに対して前記第1変更操作を実行する時に、高度データ暗号化標準新命令セットAES−NIを使用して隔離されたハードウェア環境で実行する必要がある、ことを特徴とする請求項1に記載の方法。
  23. 前記第3有限体におけるデータに対して前記第2変更操作を実行する時に、高度データ暗号化標準新命令セットAES−NIを使用して隔離されたハードウェア環境で実行する必要がある、ことを特徴とする請求項1に記載の方法。
  24. コンピュータシステムであって、少なくとも1つのプロセッサーを備え、少なくとも1つの前記プロセッサーは、
    第1操作と第2操作を含む第1暗号アルゴリズム標準に従う第1有限体におけるデータと第1有限体における鍵値を受信し、
    第1暗号アルゴリズム標準に従う第1有限体におけるデータを、第2暗号アルゴリズム標準に従う第2有限体におけるデータに変換し、
    第1暗号アルゴリズム標準に従う第1有限体における鍵値を、第2暗号アルゴリズム標準に従う第2有限体における鍵値に変換し、
    第1操作を、第2暗号アルゴリズム標準に従う第2有限体における第1変更操作に変換し、
    第2操作を、第2暗号アルゴリズム標準に従う第2有限体における第2変更操作に変換し、
    データ変更操作を実行するように配置され、前記データ変更操作は、
    第3有限体におけるデータを生成するように、前記第2有限体におけるデータと前記第2有限体における鍵値に対して前記第1変更操作を実行すること、
    第4有限体におけるデータを生成するように、前記第3有限体におけるデータに対して前記第2変更操作を実行すること、及び
    前記第4有限体におけるデータを、第1暗号アルゴリズム標準に従う第5有限体におけるデータに変換することを含む、
    ことを特徴とするコンピュータシステム。
  25. 前記プロセッサーは、単一命令多重データ流SIMDを使用して、
    第1暗号アルゴリズム標準に従う前記第1有限体におけるデータを、第2暗号アルゴリズム標準に従う前記第2有限体におけるデータに変換する操作と、
    第1暗号アルゴリズム標準に従う前記第1有限体における鍵値を、第2暗号アルゴリズム標準に従う前記第2有限体における鍵値に変換する操作と、
    前記第4有限体におけるデータを、第1暗号アルゴリズム標準に従う前記第5有限体におけるデータに変換する操作と、
    前記第3有限体のデータに対して前記第2変更操作を実行して第4有限体におけるデータを生成する操作と、を実行するように配置される、
    ことを特徴とする請求項24に記載のコンピュータシステム。
  26. 前記第2変更操作は、前記第2操作の同型形式である、ことを特徴とする請求項24に記載のコンピュータシステム。
  27. 前記第2操作を前記第2変更操作に変換することは、同型写像行列を第2操作に適用することを含む、ことを特徴とする請求項26に記載のコンピュータシステム。
  28. 前記第1暗号アルゴリズム標準に基づいて、データ変更操作は一定の回数繰り返して実行される必要がある、ことを特徴とする請求項24に記載のコンピュータシステム。
  29. 前記第1有限体におけるデータ、第2有限体におけるデータ、第3有限体におけるデータ、第4有限体におけるデータ、第5有限体におけるデータ、第1有限体における鍵値及び第2有限体における鍵値の各々は、ガロア体GF(28)における要素として表される、ことを特徴とする請求項24に記載のコンピュータシステム。
  30. 前記第1暗号アルゴリズム標準は、SM4暗号アルゴリズムである、ことを特徴とする請求項24に記載のコンピュータシステム。
  31. 前記第2暗号アルゴリズム標準は、高度データ暗号化標準AESである、ことを特徴とする請求項24に記載のコンピュータシステム。
  32. 前記第1有限体におけるデータと前記第2有限体におけるデータはいずれも16バイトの平文データを含む、ことを特徴とする請求項24に記載のコンピュータシステム。
  33. 前記第1有限体における鍵値と前記第2有限体における鍵値はいずれも4バイトのラウンド鍵を含む、ことを特徴とする請求項24に記載のコンピュータシステム。
  34. 前記第1操作と前記第1変更操作はいずれも置換操作である、ことを特徴とする請求項24に記載のコンピュータシステム。
  35. 前記置換操作は、乗法逆元関数を含む、ことを特徴とする請求項34に記載のコンピュータシステム。
  36. 前記乗法逆元関数は、AESDECLASTとAESENCLASTの一方又は両方を用いて実行される、ことを特徴とする請求項35に記載のコンピュータシステム。
  37. 前記第1変更操作は、前記第1操作の同型形式である、ことを特徴とする請求項34に記載のコンピュータシステム。
  38. 前記第1操作と前記第1変更操作は、第1写像変換と第2写像変換を含む、ことを特徴とする請求項37に記載のコンピュータシステム。
  39. 前記第1操作を前記第1変更操作に変換することには、同型写像行列を前記第1写像変換と前記第2写像変換に写像して適用する必要がある、ことを特徴とする請求項38に記載のコンピュータシステム。
  40. 前記第2操作と前記第2変更操作はいずれも置換操作である、ことを特徴とする請求項24に記載のコンピュータシステム。
  41. 前記第5有限体におけるデータは、16バイトの暗号文データを含む、ことを特徴とする請求項24に記載のコンピュータシステム。
  42. 前記第2有限体のデータに対して前記第1変更操作を実行することは、高度暗号化アルゴリズム新命令セットAES−NIにより、隔離されたハードウェア環境において完了する、ことを特徴とする請求項24に記載のコンピュータシステム。
  43. 前記第3有限体のデータに対して前記第2変更操作を実行することは、高度暗号化アルゴリズム新命令セットAES−NIにより、隔離されたハードウェア環境において完了する、ことを特徴とする請求項24に記載のコンピュータシステム。
  44. 前記第1有限体と第2有限体におけるデータは、16バイトの暗号文データを含む、ことを特徴とする請求項24に記載のコンピュータシステム。
  45. 前記第5有限体におけるデータは、16バイトの平文データである、ことを特徴とする請求項44に記載のコンピュータシステム。
JP2018533795A 2017-04-12 2017-04-12 安全かつ効率的なブロック暗号アルゴリズムの実現方法と装置 Active JP6576564B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/080318 WO2018188002A1 (en) 2017-04-12 2017-04-12 Methods and apparatus for secure and efficient implementation of block ciphers

Publications (2)

Publication Number Publication Date
JP2019519801A JP2019519801A (ja) 2019-07-11
JP6576564B2 true JP6576564B2 (ja) 2019-09-18

Family

ID=63793078

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018533795A Active JP6576564B2 (ja) 2017-04-12 2017-04-12 安全かつ効率的なブロック暗号アルゴリズムの実現方法と装置

Country Status (4)

Country Link
US (1) US11139953B2 (ja)
JP (1) JP6576564B2 (ja)
CN (1) CN109417468B (ja)
WO (1) WO2018188002A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107959565A (zh) * 2017-11-02 2018-04-24 北京中电华大电子设计有限责任公司 一种统一aes和sm4 s盒的实现方法
US11157645B2 (en) * 2018-11-01 2021-10-26 International Business Machines Corporation Data masking with isomorphic functions
US11943332B2 (en) * 2019-04-15 2024-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Low depth AES SBox architecture for area-constraint hardware
CN112134679B (zh) * 2019-06-24 2024-04-30 国民技术股份有限公司 针对sm4的组合高阶侧信道攻击方法、装置、设备及介质
CN111162898B (zh) * 2019-12-27 2022-01-28 北京航空航天大学 一种基于Android端的SM4快速软件实现方法及装置
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
CN111736902B (zh) * 2020-07-16 2022-04-19 北京炼石网络技术有限公司 基于simd指令的sm4的并行计算方法及装置、可读存储介质
CN113507357B (zh) * 2021-07-08 2022-03-11 无锡沐创集成电路设计有限公司 兼容sm4和aes算法s盒的实现方法和电路模块
CN113922948B (zh) * 2021-10-13 2023-10-03 中国人民解放军国防科技大学 基于复合域轮函数的国密算法sm4数据加密方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7860240B2 (en) * 2007-06-29 2010-12-28 Intel Corporation Native composite-field AES encryption/decryption accelerator circuit
US8416947B2 (en) * 2008-02-21 2013-04-09 Red Hat, Inc. Block cipher using multiplication over a finite field of even characteristic
CN102710415B (zh) * 2012-06-18 2015-03-11 西安西电捷通无线网络通信股份有限公司 一种利用对称密码算法进行数据加解密的方法及查表装置
CN103684748B (zh) 2012-09-26 2017-02-08 上海复旦微电子集团股份有限公司 对称式加解密方法、对称式加解密系统
US9800406B2 (en) * 2014-05-21 2017-10-24 Intel Corporation Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher

Also Published As

Publication number Publication date
US20200099510A1 (en) 2020-03-26
US11139953B2 (en) 2021-10-05
CN109417468A (zh) 2019-03-01
WO2018188002A1 (en) 2018-10-18
CN109417468B (zh) 2021-07-30
JP2019519801A (ja) 2019-07-11

Similar Documents

Publication Publication Date Title
JP6576564B2 (ja) 安全かつ効率的なブロック暗号アルゴリズムの実現方法と装置
CN106850221B (zh) 信息加密、解密方法及装置
CN106487503B (zh) 基于剪裁的霍普菲尔德神经网络的多元公钥密码系统和方法
TW200951807A (en) A closed galois field cryptographic system
JP2016505887A (ja) 乱数生成器及びストリーム暗号
CN108141352B (zh) 密码设备、方法、装置和计算机可读介质和编码设备、方法、装置和计算机可读介质
US20160359618A1 (en) Using state reordering to protect against white box attacks
US10623189B2 (en) Online/offline signature system and method based on multivariate cryptography
TW201545524A (zh) 用於以第二密文編密演算法之運算修改第一密文編密演算法的技術
US9418245B2 (en) Encryption processing device, encryption processing method, and program
US8122075B2 (en) Pseudorandom number generator and encryption device using the same
Neha Enhanced security using hybrid encryption algorithm
KR101914453B1 (ko) 암호화 장치 및 방법
CN110213050A (zh) 密钥生成方法、装置及存储介质
JP2023520117A (ja) 乱数行列の並列生成
CN112564890A (zh) 一种加速sm4算法的方法、装置、处理器及电子设备
CN111712816B (zh) 使用密码蒙蔽以用于高效地使用蒙哥马利乘法
CN105099693B (zh) 一种传输方法及传输装置
CN115134070A (zh) 一种分组密码算法实现的方法、装置和设备
Noura et al. Efficient binary diffusion matrix structures for dynamic key-dependent cryptographic algorithms
Mihalkovich et al. MPF based symmetric cipher performance comparison to AES and TDES
KR20180003106A (ko) 암호문 셀프-업데이트가 가능한 암호화 방법
TW548937B (en) Methods and apparatus for keystream generation
CN115801227B (zh) 一种生成置换表的方法及装置
CN115348018B (zh) 一种数据处理方法、装置及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180621

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190320

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190802

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190814

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190820

R150 Certificate of patent or registration of utility model

Ref document number: 6576564

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250