JP7317261B2 - 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム - Google Patents

暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム Download PDF

Info

Publication number
JP7317261B2
JP7317261B2 JP2023512624A JP2023512624A JP7317261B2 JP 7317261 B2 JP7317261 B2 JP 7317261B2 JP 2023512624 A JP2023512624 A JP 2023512624A JP 2023512624 A JP2023512624 A JP 2023512624A JP 7317261 B2 JP7317261 B2 JP 7317261B2
Authority
JP
Japan
Prior art keywords
value
bit
generate
plaintext
generated
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
JP2023512624A
Other languages
English (en)
Other versions
JPWO2022215249A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2022215249A1 publication Critical patent/JPWO2022215249A1/ja
Application granted granted Critical
Publication of JP7317261B2 publication Critical patent/JP7317261B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/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
    • 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/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/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key

Landscapes

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

Description

本開示は、ブロック暗号を用いた認証暗号に関する。
認証暗号アルゴリズムは、秘匿機能と改ざん検知機能とを同時に併せ持つ暗号アルゴリズムである。認証暗号アルゴリズムを用いると、2者間で平文を秘匿した上で通信できるとともに、通信路で送信したメッセージが改ざんされているか否かを受信者が確認できる。
認証暗号アルゴリズムは、暗号化関数Encと復号関数Decとの2つのアルゴリズムを備える。
暗号化関数Encは、秘密鍵Kと、ナンスNと、公開データAと、平文Mとを入力とし、暗号文Cと改ざん検知用の認証子Tagとを出力する関数である。なお、ナンスNは、暗号化毎に異なる値が用いられ、秘密鍵Kを変更しない限り同じ値は用いられない。
復号関数Decは、秘密鍵Kと、ナンスNと、公開データAと、暗号文Cと、改ざん検知用の認証子Tagとを入力とし、入力値が改ざんされていない場合、平文Mを出力し、改ざんされている場合、偽造されていることを示す値を出力する。以降、偽造されていることを示す値をrejectと書く。
送信者Aliceと受信者Bobとが認証暗号アルゴリズムを用いた通信を行うとする。AliceとBobとは、事前に秘密鍵Kを共有しておく。
送信者Aliceは、秘密鍵Kと、ナンスNと、公開データAと、平文Mとを入力として、暗号化関数Encを計算することにより、暗号文Cと改ざん検知用の認証子Tagとを生成する。送信者Aliceは、ナンスNと、公開データAと、暗号文Cと、改ざん検知用の認証子Tagとを受信者Bobに送信する。
受信者Bobは、秘密鍵Kと、ナンスNと、公開データAと、暗号文Cと、改ざん検知用の認証子Tagとを入力として、復号関数Decを計算することにより、改ざん検知されていないことを判定し、改ざんされていない場合は平文Mを生成する。
なお、公開データAは公開してもよい値である。また、送信者Aliceは、暗号化毎にナンスNを別の値に設定し、同じ値は使用しない。
認証暗号アルゴリズムの安全性には秘匿性及び完全性がある。秘匿性及び完全性の定義は、非特許文献1に記載されている。
秘匿性は、暗号文から平文が漏れないことを定義した安全性である。秘匿性の安全性ゲームでは、攻撃者が、認証暗号アルゴリズムの暗号化関数Encと、乱数を出力するオラクルとのどちらか一方にアクセスし、どちらにアクセスしているかを識別する。攻撃者が識別する確率を識別確率と呼ぶ。識別確率が低いほど秘匿性の安全性が高い。
完全性は、公開データ又は暗号文が改ざんできないことを定義した安全性である。完全性の安全性ゲームでは、攻撃者が認証暗号アルゴリズムの暗号化関数Encと復号関数Decとにアクセスし、復号関数Decに偽造した公開データと暗号文と認証子とを入力し、改ざんチェックに合格することを目指す。改ざんチェックに合格する確率を偽造確率と呼ぶ。偽造確率が低いほど完全性の安全性が高い。
認証暗号アルゴリズムの構成方法として、ブロック暗号を用いる方法がある。
ブロック暗号は、暗号化関数Eと復号関数Dとから構成される。暗号化関数Eは、kビットの鍵Kと、nビットの平文ブロックMとを入力とし、nビットの暗号文ブロックCを出力する関数である。これをC=E(K,M)と書く。ブロック暗号の復号関数Dは、kビットの鍵Kとnビットの暗号文ブロックCとを入力とし、nビットの平文ブロックMを出力する関数である。これをM=D(K,C)と書く。平文ブロックM及び暗号文ブロックCのサイズnをブロックサイズと呼ぶ。ブロック暗号の暗号化関数E及び復号関数Dは、鍵Kを固定するとnビットの置換関数になる。
具体的なブロック暗号として、非特許文献2に記載されたAES(Advanced Encryption Standard)と、非特許文献3に記載されたGIFT等がある。非特許文献2に記載されたAESは、nは128であり、kは128,192又は256である。非特許文献3に記載されたGIFTは、nは64又は128であり、kは128である。また、非特許文献2に記載されたAES-128に代表されるようにn=k=128が最も使われている。
ブロック暗号を用いる認証暗号の安全性のパラメータについて説明する。
秘匿性についての識別確率は、認証暗号の暗号化関数Encでのブロック暗号の呼び出し回数qと、攻撃者の計算量pとを用いて導出される。攻撃者の計算量pは、ブロック暗号1回の計算量を1とする。すなわち、攻撃者はブロック暗号をp回計算することができる能力を持つことになる。
完全性についての偽造確率は、認証暗号の暗号化関数Encでのブロック暗号の呼び出し回数と復号関数Decでのブロック暗号の呼び出し回数との和Qと、攻撃者の計算量pとを用いて導出される。
ブロック暗号を用いる認証暗号の安全性の安全性レベルについて説明する。安全性レベルには、オンライン計算の安全性レベルと、オフライン計算の安全性レベルとがある。
オンライン計算の安全性レベルは、識別確率が1となるqの値をq’とし、偽造確率が1となるQの値をQ’とすると、logq’とlogQ’との最小値である。ここで、オンライン計算の安全性レベルの単位はビットである。
オフライン計算の安全性レベルは、識別確率が1となるpの値をpとし、偽造確率が1となるpの値をpとすると、logとlogとの最小値である。ここで、オフライン計算の安全性レベルの単位はビットである。
安全性レベルは、暗号アルゴリズムの長期利用の観点から高いほどよい。ブロック暗号を用いる認証暗号の場合、オンライン計算の安全性レベルはnビット、オフライン計算の安全性レベルはnビットが最適である。
ブロック暗号を用いる認証暗号では、必要なメモリサイズの最小値は2nビットである。ここで、メモリサイズは、アルゴリズムの内部で更新される値を格納するために必要な領域のサイズである。メモリサイズの最小化は、ソフトウェアであれば必要なメモリ(RAM(Random Access Memory))サイズの小型化につながり、ハードウェアであればハードサイズの小型化につながる。
特許文献1には、ブロック暗号を用いる認証暗号アルゴリズムが記載されている。また、非特許文献4には、ブロック暗号を用いる認証暗号アルゴリズムRemus-N2が記載されている。
国際公開第2017/31639号
Tetsu Iwata, Keisuke Ohashi, and Kazuhiko Minematsu. Breaking and Repairing GCM Security Proofs. CRYPTO 2012, Proceedings. pages 31-49. Lecture Notes in Computer Science volume 7417. Springer. 2012. National Institute of Standards and Technology (NIST). Announcing the Advanced Encryption Standard(AES). FIPS PUB 197, 2001. Subhadeep Banik, Sumit Kumar Pandey, Thomas Peyrin, Yu Sasaki, Siang Meng Sim, and Yosuke Todo. GIFT: A Small Present - Towards Reaching the Limit of Lightweight Encryption. CHES 2017, Lecture Notes in Computer Science, volume 10529, page 321-345. Tetsu Iwata, Mustafa Khairallah, Kazuhiko Minematsu, and Thomas Peyrin:Duel of the Titans: The Romulus and Remus Families of Lightweight AEAD Algorithms. ToSC 2020 Issue 1. p.43-120.
特許文献1に記載された認証暗号アルゴリズムに必要なメモリサイズは最小の2nビットである。また、オフライン計算の安全性レベルはnビットであり、最適である。しかし、オンライン計算の安全性レベルはn/2ビットであり、最適ではない。
非特許文献4に記載された認証暗号アルゴリズムの安全性レベルは、オンライン計算の安全性レベルとオフライン計算の安全性レベルがともにnビットであり、最適である。しかし、メモリサイズは、特許文献1に記載された認証暗号アルゴリズムよりもnビット多い、3nビットであり、最小ではない。
本開示は、オンライン計算の安全性レベルとオフライン計算の安全性レベルがともに最適のnビットであり、メモリサイズが最小である2nビットとなるブロック暗号を用いた認証暗号を実現可能にすることを目的とする。
本開示に係る暗号化装置は、
平文Mを順にnビット毎に分割して値M[1],...,値M[m]を生成する分割部と、
nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,mの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割部によって生成された値M[i]とから値C[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する暗号要素生成部と、
前記暗号要素生成部によって生成されたi=1,...,mについての値C[i]を結合して暗号文Cを生成する暗号文生成部と、
値H[m]と値B[m]とから前記暗号文Cの改ざんを検知するための認証子Tagを生成する認証子生成部と
を備える。
本開示では、置換関数P及び置換関数Fを用いて値T及び値Bを更新して暗号要素を生成する。これにより、内部で更新されるメモリのサイズが2nビットになる。その結果、オンライン計算の安全性レベル及びオフライン計算の安全性レベルがともに最適のnビットであり、メモリサイズが最小である2nビットとなるブロック暗号を用いた認証暗号アルゴリズムを実現可能である。
実施の形態1に係る暗号化装置10の構成図。 実施の形態1に係る復号装置30の構成図。 実施の形態1におけるブロック暗号の暗号化関数Eの表記方法の説明図。 実施の形態1に係る認証暗号アルゴリズムで用いられる基本処理の説明図。 実施の形態1に係る分割処理のフローチャート。 実施の形態1に係る初期値生成処理のフローチャート。 実施の形態1に係る初期値生成処理の説明図。 実施の形態1に係る公開データ処理のフローチャート。 実施の形態1に係る公開データ処理の説明図。 実施の形態1に係る暗号文生成処理のフローチャート。 実施の形態1に係る暗号文生成処理の説明図。 実施の形態1に係る認証子生成処理のフローチャート。 実施の形態1に係る認証子生成処理の説明図。 実施の形態1に係る分割処理のフローチャート。 実施の形態1に係る平文生成処理のフローチャート。 実施の形態1に係る平文生成処理の説明図。 実施の形態1に係る改ざん検知処理のフローチャート。 実施の形態1に係る改ざん検知処理の説明図。 変形例1に係る暗号化装置10の構成図。 変形例1に係る復号装置30の構成図。 変形例1に係る暗号化装置10の他の構成図。 変形例1に係る復号装置30の他の構成図。
実施の形態1.
***構成の説明***
図1を参照して、実施の形態1に係る暗号化装置10の構成を説明する。
暗号化装置10は、コンピュータである。
暗号化装置10は、プロセッサ11と、メモリ12と、ストレージ13と、入出力インタフェース14とのハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
暗号化装置10は、機能構成要素として、分割部21と、初期値生成部22と、公開データ処理部23と、暗号要素生成部24と、暗号文生成部25と、認証子生成部26とを備える。暗号化装置10の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ13には、暗号化装置10の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ11によりメモリ12に読み込まれ、プロセッサ11によって実行される。これにより、暗号化装置10の各機能構成要素の機能が実現される。
図2を参照して、実施の形態1に係る復号装置30の構成を説明する。
復号装置30は、コンピュータである。
復号装置30は、プロセッサ31と、メモリ32と、ストレージ33と、入出力インタフェース34とのハードウェアを備える。プロセッサ31は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
復号装置30は、機能構成要素として、分割部41と、初期値生成部42と、公開データ処理部43と、平文要素生成部44と、平文生成部45と、認証子生成部46とを備える。復号装置30の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ33には、復号装置30の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ31によりメモリ32に読み込まれ、プロセッサ31によって実行される。これにより、復号装置30の各機能構成要素の機能が実現される。
プロセッサ11,31は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ11,31は、具体例としては、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
メモリ12,32は、データを一時的に記憶する記憶装置である。メモリ12,32は、具体例としては、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。
ストレージ13,33は、データを保管する記憶装置である。ストレージ13,33は、具体例としては、HDD(Hard Disk Drive)である。また、ストレージ13,33は、SD(登録商標,Secure Digital)メモリカード、CF(CompactFlash,登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)といった可搬記録媒体であってもよい。
入出力インタフェース14,34は、外部の装置と通信するためのインタフェースである。入出力インタフェース14,34は、具体例としては、Ethernet(登録商標)、USB(Universal Serial Bus)、HDMI(登録商標,High-Definition Multimedia Interface)のポートである。
図1では、プロセッサ11は、1つだけ示されていた。しかし、プロセッサ11は、複数であってもよく、複数のプロセッサ11が、各機能を実現するプログラムを連携して実行してもよい。同様に、図2では、プロセッサ31は、1つだけ示されていた。しかし、プロセッサ31は、複数であってもよく、複数のプロセッサ31が、各機能を実現するプログラムを連携して実行してもよい。
***動作の説明***
図3から図18を参照して、実施の形態1に係る暗号化装置10及び復号装置30の動作を説明する。
実施の形態1に係る暗号化装置10の動作手順は、実施の形態1に係る暗号化方法に相当する。また、実施の形態1に係る暗号化装置10の動作を実現するプログラムは、実施の形態1に係る暗号化プログラムに相当する。
実施の形態1に係る復号装置30の動作手順は、実施の形態1に係る復号方法に相当する。また、実施の形態1に係る復号装置30の動作を実現するプログラムは、実施の形態1に係る復号プログラムに相当する。
暗号化装置10及び復号装置30によって、認証暗号アルゴリズムが実現される。ここでは、ブロックサイズnと鍵のサイズkとが等しいブロック暗号を用いる認証暗号アルゴリズムが実現される。
暗号化装置10は、認証暗号アルゴリズムにおける暗号化アルゴリズムEncを実現する。また、復号装置30は認証暗号アルゴリズムにおける復号アルゴリズムDecを実現する。
**前提となる事項の説明**
集合Nsetは、ナンスNの集合である。
排他的論理和の演算子を数1のように表す。
ビット列Xのビット長を|X|と書く。ビット列Xが空列である場合、|X|=0である。
関数pad[r]は、rビット以下の値を入力として、rビットの値を出力する関数である。関数pad[r]は、r-1ビット以下の値に対しては、単射であるとする。具体例としては、r-1ビット以下の値Xに対して、関数pad[r](X)は、Xの後ろに1をビット結合し、その後ろにビット長がrとなるように0のビット列を結合した値を出力し、rビットの値Yに対して値Yを出力する関数である。
関数Initは、集合Nsetの値を入力として、nビットの値を出力する単射関数である。
const[1]と、const[2]と、const[3]と、const[4]とは、非ゼロの異なるnビットの値とする。
値Yに対して置換関数Uをi回適用した結果をU[i](Y)と書く。
図3を参照して、実施の形態1におけるブロック暗号の暗号化関数Eの表記方法を説明する。
ブロック暗号は、暗号化関数Eと復号関数Dとから構成される。暗号化関数Eは、k(=n)ビットの鍵Kと、nビットの平文ブロックMとを入力とし、nビットの暗号文ブロックCを出力する関数である。これをC=E(K,M)と書き、図3のように表す。つまり、2つの入力値のうち、黒塗りになっている部分に入力される入力値が鍵であり、他方の入力値が暗号化される値である。
図4を参照して、実施の形態1に係る認証暗号アルゴリズムで用いられる基本処理を説明する。
実施の形態1に係る認証暗号アルゴリズムでは、nビットの値を入力とし、nビットの値を出力する置換関数P,F,Gとブロック暗号Eとを用いた以下の基本処理が用いられる。基本処理は2つのnビットの値X及び値Yを入力として、2つのnビットの値Z及び値Wを出力する。
(基本処理)
(1)値Yを鍵として値Xをブロック暗号Eによって暗号化し、置換関数Gで変換されて値Zが生成される。
(2)値Yを置換関数Pで変換した値P(Y)と、値Zを置換関数Fで変換した値F(Z)との排他的論理和をとって値Wが生成される。
(3)値Zと値Wとが出力される。
**暗号化装置10の動作**
図5から図13を参照して、実施の形態1に係る暗号化装置10の動作を説明する。
暗号化装置10は、分割処理と、初期値生成処理と、公開データ処理と、暗号文生成処理と、認証子生成処理とを順に実行する。
<分割処理>
図5を参照して、実施の形態1に係る分割処理を説明する。
(ステップS101)
分割部21は、秘密鍵Kと、ナンスNと、公開データAと、平文Mとを取得する。
具体的には、分割部21は、ストレージ13に記憶された秘密鍵KとナンスNと公開データAとを読み出す。また、分割部21は、入出力インタフェース14を介して接続された入力装置から入力された平文Mを取得する。
秘密鍵Kは、nビットの鍵であり、事前に暗号文Cの送付先と共有された鍵である。ナンスNは、集合Nsetにおけるnビットの値である。ナンスNは、暗号化毎に異なる値が用いられ、秘密鍵Kを変更しない限り同じ値は用いられない。公開データAは、公開してもよい値であり、任意のビット長の値である。平文Mは、暗号化する対象の値であり、任意のビット長の値である。
(ステップS102)
分割部21は、公開データAを予め決められた順に2nビット毎に分割して値A[1],...,値A[a]を生成する。ここでは、分割部21は、公開データAを先頭から順に2nビット毎に分割して値A[1],...,値A[a]を生成する。したがって、値A[1],値A[2],...,値A[a-1]はそれぞれ2nビットの値であり、値A[a]は1ビット以上2nビット以下の値である。また、公開データAは、値A[1],値A[2],...,値A[a]をビット結合した値である。
分割部21は、平文Mを予め決められた順にnビット毎に分割して値M[1],...,値M[m]を生成する。ここでは、分割部21は、平文Mを先頭から順にnビット毎に分割して値M[1],...,値M[m]を生成する。したがって、値M[1],値M[2],...,値M[m-1]はそれぞれnビットの値であり、値M[m]は1ビット以上nビット以下の値である。また、平文Mは、値M[1],値M[2],...,値M[m]をビット結合した値である。
<初期値生成処理>
図6及び図7を参照して、実施の形態1に係る初期値生成処理を説明する。
初期値生成処理では、置換関数Gとして、恒等写像、つまりG(X)=Xが用いられる。
(ステップS111)
初期値生成部22は、ナンスNを関数Initに入力してnビットの値Init(N)を生成する。初期値生成部22は、秘密鍵Kを用いて値Init(N)をブロック暗号Eによって暗号化して値E(N)を生成する。初期値生成部22は、値E(N)を値Tmpに設定する。
(ステップS112)
初期値生成部22は、秘密鍵Kを置換関数Pで変換した値P(K)と、値Tmp(=値E(N))を置換関数Fで変換した値F(Tmp)(=値F(E[N]))とから値IVtを生成する。具体的には、初期値生成部22は、値P(K)と値F(Tmp)との排他的論理和を計算して、値IVtを生成する。
ここで、置換関数Pとしては、異なる値i及び値jと、nビットの値Sと、変数Yとに対して、数2が変数Yについて唯一の解を持つような置換関数が用いられる。

置換関数Fとしては、nビットの値Sと、変数Zとに対して、数3がZについて唯一の解を持つような置換関数が用いられる。

例えば、置換関数Pと置換関数Fとはガロア体GF(2)上の生成元との掛け算を用いることができる。すなわち、生成元をuとすると、P(Y)=u・Y、F(Z)=u・Zとなる。
(ステップS113)
初期値生成部22は、公開データAと平文Mとに応じて値idを設定する。
具体的には、初期値生成部22は、公開データAのビット長が0であり、かつ、平文Mのビット長が0である場合には、const[1]を値idに設定する。初期値生成部22は、公開データAのビット長が0でなく、かつ、平文Mのビット長が0である場合には、const[2]を値idに設定する。初期値生成部22は、公開データAのビット長が0であり、かつ、平文Mのビット長が0でない場合には、const[3]を値idに設定する。初期値生成部22は、公開データAのビット長が0でなく、かつ、平文Mのビット長が0でない場合には、const[4]を値idに設定する。
(ステップS114)
初期値生成部22は、値Tmp(=値E(N))と、値idとから値IVbを生成する。
具体的には、初期値生成部22は、値Tmpと値idとの排他的論理和を計算して、値IVbを生成する。
(ステップS115)
初期値生成部22は、値IVt及び値IVbを出力する。
<公開データ処理>
図8及び図9を参照して、実施の形態1に係る公開データ処理を説明する。
公開データ処理では、ステップS124においては、置換関数Gとして、恒等写像、つまりG(X)=Xが用いられる。ステップS126においては、置換関数Gとして、置換関数Qが用いられる。
また、公開データ処理では、置換関数Pは、初期値生成処理と同じ関数が用いられる。また、置換関数Fとしては、初期値生成処理で用いた置換関数Fと同様に、nビットの値Sと、変数Zとに対して、数3がZについて唯一の解を持つような置換関数が用いられる。
(ステップS121)
公開データ処理部23は、初期値生成処理で生成された値IVt及び値IVbを取得する。公開データ処理部23は、値IVtを値T[0]に設定し、値IVbを値B[0]に設定する。
(ステップS122)
公開データ処理部23は、公開データAのビット長が0であるか否かを判定する。
公開データ処理部23は、公開データAのビット長が0である場合には、処理をステップS131に進める。一方、公開データ処理部23は、公開データAのビット長が0でない場合には、処理をステップS123に進める。
(ステップS123)
公開データ処理部23は、図5のステップS102で公開データAが分割された数である分割数aが1であるか否かを判定する。図5のステップS102では、公開データAが値A[1],...,値A[a]の“a”個に分割された。分割数aは、この“a”個を表す。
公開データ処理部23は、分割数aが1である場合には、処理をステップS125に進める。一方、公開データ処理部23は、分割数aが1でない場合には、処理をステップS124に進める。
(ステップS124)
公開データ処理部23は、i=1,...,a-1の各整数iについて昇順に、(1)から(4)を実行する。
(1)公開データ処理部23は、値T[i-1]を鍵として値B[i-1]をブロック暗号Eによって暗号化して値E(B[i-1])を生成する。
(2)公開データ処理部23は、値A[i]のうち予め決められた位置のnビットを値A[i,t]に設定し、値A[i]のうちの値A[i,t]以外のnビットを値A[i,b]に設定する。例えば、公開データ処理部23は、値A[i]のうち先頭nビットを値A[i,t]に設定し、残りnビットを値A[i,b]に設定する。
(3)公開データ処理部23は、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値E(B[i-1])を置換関数Fで変換した値F(E(B[i-1]))と、値A[i,t]とからnビットの値T[i]を生成する。具体的には、公開データ処理部23は、値P(T[i-1])と値F(E(B[i-1]))と値A[i,t]との排他的論理和を計算して、値T[i]を生成する。
(4)公開データ処理部23は、値E(B[i-1])と、値A[i,b]とからnビットの値B[i]を生成する。具体的には、公開データ処理部23は、値E(B[i-1])と値A[i,b]との排他的論理和を計算して、値B[i]を生成する。
(ステップS125)
公開データ処理部23は、値T[a-1]を鍵として値B[a-1]をブロック暗号Eによって暗号化して値E(B[a-1])を生成する。
(ステップS126)
公開データ処理部23は、値A[a]のビット長が2nである場合には、値E(B[a-1])を置換関数Qを1回適用して変換した値Q[1](E(B[a-1]))を値Q(E(B[a-1]))として生成する。一方、値A[a]のビット長が2nでない場合には、値E(B[a-1])を置換関数Qを2回適用して変換した値Q[2](E(B[a-1]))を値Q(E(B[a-1]))として生成する。
(ステップS127)
公開データ処理部23は、関数padにより、値A[a]にビットをパディングして得られた2nビットの値A’[a]を生成する。つまり、公開データ処理部23は、A’[a]=pad[2n](A[a])を計算する。
(ステップS128)
公開データ処理部23は、値A’[a]のうち予め決められた位置のnビットを値A’[a,t]に設定し、値’A[i]のうちの値A’[a,t]以外のnビットを値A’[a,b]に設定する。例えば、公開データ処理部23は、値A’[a]のうち先頭nビットを値A’[a,t]に設定し、残りのnビットを値A’[a,b]に設定する。
(ステップS129)
公開データ処理部23は、値T[a-1]を置換関数Pで変換した値P(T[a-1])と、値Q(E(B[a-1]))を置換関数Fで変換した値F(Q(E(B[a-1])))と、値A’[a,t]とから値T[a]を生成する。具体的には、公開データ処理部23は、値P(T[a-1])と値F(Q(E(B[a-1])))と値A’[a,t]との排他的論理和を計算して、値T[a]を生成する。
ここで、置換関数Qとしては、nビットの値Sと、nビットの変数Xとに対して、数4がXについて唯一の解を持ち、恒等写像ではない置換関数が用いられる。

例えば、置換関数Q[1]と置換関数Q[2]とは、ガロア体GF(2)上の掛け算を用いる方法がある。すなわち、ガロア体GF(2)上の0と1以外で異なる2つの値をu,vとし、Q[1](Z)=u・Z、Q[2](Z)=v・Zとする。
(ステップS130)
公開データ処理部23は、値Q(E(B[a-1]))と、値A’[a,b]とから値B[a]を生成する。具体的には、公開データ処理部23は、値Q(E(B[a-1]))と値A’[a,b]との排他的論理和を計算して、値B[a]を生成する。
(ステップS131)
公開データ処理部23は、値T[a]を値Htに設定し、値B[a]を値Hbに設定する。そして、公開データ処理部23は、値Ht及び値Hbを出力する。
なお、公開データAのビット長が0である場合には、値T[0]が値Htに設定され、値B[0]が値Hbに設定される。
<暗号文生成処理>
図10及び図11を参照して、実施の形態1に係る暗号文生成処理を説明する。
暗号文生成処理では、ステップS144においては、置換関数Gとして、恒等写像、つまりG(X)=Xが用いられる。ステップS146においては、置換関数Gとして、置換関数Rが用いられる。
また、暗号文生成処理では、置換関数Pは、初期値生成処理と同じ関数が用いられる。また、置換関数Fとしては、初期値生成処理で用いた置換関数Fと同様に、nビットの値Sと、変数Zとに対して、数3がZについて唯一の解を持つような置換関数が用いられる。
(ステップS141)
暗号要素生成部24は、公開データ処理で生成された値Ht及び値Hbを取得する。暗号要素生成部24は、値Htを値T[0]に設定し、値Hbを値B[0]に設定する。
(ステップS142)
暗号要素生成部24は、平文Mのビット長が0であるか否かを判定する。
暗号要素生成部24は、平文Mのビット長が0である場合には、平文Mを空列として、処理をステップS151に進める。一方、暗号要素生成部24は、平文Mのビット長が0でない場合には、処理をステップS143に進める。
(ステップS143)
暗号要素生成部24は、図5のステップS102で平文Mが分割された数である分割数mが1であるか否かを判定する。図5のステップS102では、平文Mが値M[1],...,値M[m]の“m”個に分割された。分割数mは、この“m”個を表す。
暗号要素生成部24は、分割数mが1である場合には、処理をステップS145に進める。一方、暗号要素生成部24は、分割数mが1でない場合には、処理をステップS144に進める。
(ステップS144)
暗号要素生成部24は、i=1,...,m-1の各整数iについて昇順に、(1)から(3)を実行する。
(1)暗号要素生成部24は、値T[i-1]を鍵として値B[i-1]をブロック暗号Eによって暗号化して値B[i]を生成する。
(2)暗号要素生成部24は、値M[i]と値B[i]とから値C[i]を生成する。具体的には、暗号要素生成部24は、値M[i]と値B[i]との排他的論理和を計算して、値C[i]を生成する。
(3)暗号要素生成部24は、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値B[i]を置換関数Fで変換した値F(B[i])と、値C[i]とからnビットの値T[i]を生成する。具体的には、暗号要素生成部24は、値P(T[i-1])と値F(B[i])と値C[i]との排他的論理和を計算して、値T[i]を生成する。
(ステップS145)
暗号要素生成部24は、値T[m-1]を鍵として値B[m-1]をブロック暗号Eによって暗号化して値B[m]を生成する。
(ステップS146)
暗号要素生成部24は、値M[m]のビット長がnである場合には、値B[m]を置換関数Rを1回適用して変換した値R[1](B[m])を値R(B[m])として生成する。一方、値M[m]のビット長がnでない場合には、値B[m]を置換関数Rを2回適用して変換した値R[2](B[m])を値R(B[m])として生成する。
(ステップS147)
暗号要素生成部24は、値R(B[m])の予め決められた位置の|M[m]|ビットを抽出して値B’[m]に設定する。例えば、暗号要素生成部24は、値R(B[m])のうち先頭の|M[m]|ビットを値B’[m]に設定する、あるいは、値R(B[m])のうち後ろの|M[m]|ビットを値B’[m]に設定する。
(ステップS148)
暗号要素生成部24は、値M[m]と値B’[m]とから値C[m]を生成する。具体的には、暗号要素生成部24は、値M[m]と値B’[m]との排他的論理和を計算して、値C[m]を生成する。
(ステップS149)
暗号文生成部25は、i=1,...,mについての値C[i]を結合して暗号文Cを生成する。例えば、暗号文生成部25は、C=C[1]||C[2]||...||C[m]を計算することにより、暗号文Cを生成する。ここで、||は結合を表す。
(ステップS150)
暗号要素生成部24は、値C[m]にビットをパディングして得られたnビットの値C’[m]を生成する。つまり、暗号要素生成部24は、C’[m]=pad[n](C[m])を計算する。
そして、暗号要素生成部24は、値T「m-1]を置換関数Pで変換した値P(T[m-1])と、値R(B[m])を置換関数Fで変換した値F(R(B[m]))と、値C’[m]とから値T[m]を生成する。具体的には、暗号要素生成部24は、値P(T[m-1])と値F(R(B[m]))と値C’「m]との排他的論理和を計算して、値T「m]を生成する。
(ステップS151)
暗号要素生成部24は、値T「m]を値Etに設定し、値R(B[m])を値Ebに設定する。そして、暗号要素生成部24は、値Et及び値Ebを出力する。
なお、平文Mのビット長が0である場合には、値T[0]が値Etに設定され、値B[0]が値Ebに設定される。
<認証子生成処理>
図12及び図13を参照して、実施の形態1に係る認証子生成処理を説明する。
認証子生成処理では、置換関数Gとして、恒等写像、つまりG(X)=Xが用いられる。
(ステップS161)
認証子生成部26は、暗号文生成処理で生成された値Et及び値Ebを取得する。認証子生成部26は、値Etを値T[0]に設定し、値Ebを値B[0]に設定する。
(ステップS162)
認証子生成部26は、値T[0]を鍵として値B[0]をブロック暗号Eによって暗号化して値B[1]を生成する。
(ステップS163)
認証子生成部26は、値T[0]を置換関数Pで変換した値P(T[0])と、値B[1]を置換関数Fで変換した値F(B[1])とからnビットの値T[1]を生成する。具体的には、認証子生成部26は、値P(T[0])と値F(B[1])との排他的論理和を計算して、値T[1]を生成する。
(ステップS164)
認証子生成部26は、値T[1]を認証子Tagに設定する。
なお、認証子生成部26は、値B[1]を認証子Tagに設定してもよい。この場合には、ステップS163の処理は不要である。
暗号化装置10は、図5のステップS101で取得されたナンスN及び公開データAと、図10のステップS149で生成された暗号文Cと、図12のステップS164で生成された認証子Tagとを出力する。
**復号装置30の動作**
図14から図18を参照して、実施の形態1に係る復号装置30の動作を説明する。
復号装置30は、分割処理と、初期値生成処理と、公開データ処理と、平文生成処理と、改ざん検知処理とを順に実行する。
初期値生成処理及び公開データ処理は、暗号化装置10の初期値生成処理及び公開データ処理と同じである。つまり、初期値生成処理では、暗号化装置10の初期値生成部22が行った処理を、復号装置30の初期値生成部42が行う。公開データ処理では、暗号化装置10の公開データ処理部43が行った処理を、復号装置30の公開データ処理部43が行う。
但し、初期値生成処理において、値idを設定する際、初期値生成部42は、平文Mに代えて暗号文Cを用いる。つまり、初期値生成部42は、公開データAのビット長と、暗号文Cのビット長とに応じて値idを設定する。
<分割処理>
図14を参照して、実施の形態1に係る分割処理を説明する。
(ステップS201)
分割部41は、秘密鍵Kと、ナンスNと、公開データAと、暗号文Cと、認証子Tagとを取得する。
具体的には、分割部41は、ストレージ33に記憶された秘密鍵Kを読み出す。また、分割部21は、入出力インタフェース14を介して接続された入力装置から、暗号化装置10によって出力されたナンスNと公開データAと暗号文Cと認証子Tagとを取得する。
(ステップS202)
分割部41は、図5のステップS102と同様に、公開データAを予め決められた順に2nビット毎に分割して値A[1],...,値A[a]を生成する。
分割部41は、暗号文Cを予め決められた順にnビット毎に分割して値C[1],...,値C[c]を生成する。ここでは、分割部41は、暗号文Cを先頭から順にnビット毎に分割して値C[1],...,値C[c]を生成する。したがって、値C[1],値C[2],...,値C[c-1]はそれぞれnビットの値であり、値C[c]は1ビット以上nビット以下の値である。また、暗号文Cは、値C[1],値C[2],...,値C[c]をビット結合した値である。
<平文生成処理>
図15及び図16を参照して、実施の形態1に係る平文生成処理を説明する。
平文生成処理では、置換関数Pと、置換関数Fと、置換関数Rとは、暗号文生成処理と同じ関数が用いられる。
(ステップS241)
平文要素生成部44は、公開データ処理で生成された値Ht及び値Hbを取得する。平文要素生成部44は、値Htを値T[0]に設定し、値Hbを値B[0]に設定する。
(ステップS242)
平文要素生成部44は、暗号文Cのビット長が0であるか否かを判定する。
平文要素生成部44は、暗号文Cのビット長が0である場合には、暗号文Cを空列として、処理をステップS251に進める。一方、平文要素生成部44は、暗号文Cのビット長が0でない場合には、処理をステップS243に進める。
(ステップS243)
平文要素生成部44は、図14のステップS202で暗号文Cが分割された数である分割数cが1であるか否かを判定する。図14のステップS202では、暗号文Cが値C[1],...,値C[c]の“c”個に分割された。分割数cは、この“c”個を表す。
平文要素生成部44は、分割数cが1である場合には、処理をステップS245に進める。一方、平文要素生成部44は、分割数cが1でない場合には、処理をステップS244に進める。
(ステップS244)
平文要素生成部44は、i=1,...,c-1の各整数iについて昇順に、(1)から(3)を実行する。
(1)平文要素生成部44は、値T[i-1]を鍵として値B[i-1]をブロック暗号Eによって暗号化して値B[i]を生成する。
(2)平文要素生成部44は、値C[i]と値B[i]とから値M[i]を生成する。具体的には、平文要素生成部44は、値C[i]と値B[i]との排他的論理和を計算して、値M[i]を生成する。
(3)平文要素生成部44は、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値B[i]を置換関数Fで変換した値F(B[i])と、値M[i]とからnビットの値T[i]を生成する。具体的には、平文要素生成部44は、値P(T[i-1])と値F(B[i])と値M[i]との排他的論理和を計算して、値T[i]を生成する。
(ステップS245)
平文要素生成部44は、値T[c-1]を鍵として値B[c-1]をブロック暗号Eによって暗号化して値B[c]を生成する。
(ステップS246)
平文要素生成部44は、値C[c]のビット長がnである場合には、値B[c]を置換関数Rを1回適用して変換した値R[1](B[c])を値R(B[c])として生成する。一方、値C[c]のビット長がnでない場合には、値B[c]を置換関数Rを2回適用して変換した値R[2](B[c])を値R(B[c])として生成する。
(ステップS247)
平文要素生成部44は、値R(B[c])の予め決められた位置の|C[c]|ビットを抽出して値B’[c]に設定する。例えば、平文要素生成部44は、値R(B[c])のうち先頭の|C[c]|ビットを値B’[c]に設定する、あるいは、値R(B[c])のうち後ろの|C[c]|ビットを値B’[c]に設定する。
(ステップS248)
平文要素生成部44は、値C[c]と値B’[c]とから値M[c]を生成する。具体的には、平文要素生成部44は、値C[c]と値B’[c]との排他的論理和を計算して、値M[c]を生成する。
(ステップS249)
平文生成部45は、i=1,...,cについての値M[i]を結合して平文Mを生成する。例えば、平文生成部45は、M=M[1]||M[2]||...||M[c]を計算することにより、平文Mを生成する。ここで、||は結合を表す。
(ステップS250)
平文要素生成部44は、値C[c]にビットをパディングして得られたnビットの値C’[c]を生成する。つまり、平文要素生成部44は、C’[c]=pad[n](C[c])を計算する。
そして、平文要素生成部44は、値T「c-1]を置換関数Pで変換した値P(T[c-1])と、値R(B[c])を置換関数Fで変換した値F(R(B[c]))と、値C’[c]とから値T[c]を生成する。具体的には、平文要素生成部44は、値P(T[c-1])と値F(R(B[c]))と値C’「c]との排他的論理和を計算して、値T「c]を生成する。
(ステップS251)
平文要素生成部44は、値T[c]を値Etに設定し、値R(B[c])を値Ebに設定する。そして、平文要素生成部44は、値Et及び値Ebを出力する。
なお、暗号文Cのビット長が0である場合には、値T[0]が値Etに設定され、値B[0]が値Ebに設定される。
<改ざん検知処理>
図17及び図18を参照して、実施の形態1に係る改ざん検知処理を説明する。
ステップS261からステップS264の処理は、図12のステップS161からステップS164の処理と同じである。つまり、認証子生成部46によって、図12のステップS161からステップS164の処理と同じ処理が行われ、認証子Tagが生成される。ここで生成された認証子Tagを認証子Tag’と書く。
(ステップS265)
認証子生成部46は、図14のステップS201で取得された認証子Tagと、ステップS264で生成された認証子Tag’とが一致した場合には、平文生成処理で生成された平文Mを出力する。一方、認証子生成部46は、図14のステップS201で取得された認証子Tagと、ステップS264で生成された認証子Tag’とが一致しない場合には、“reject”を出力する。
***実施の形態1の効果***
以上のように、実施の形態1に係る暗号化装置10及び復号装置30は、認証暗号アルゴリズムを実現する。この認証暗号アルゴリズムでは、内部で更新されるメモリのサイズが2nビットである。これにより、この認証暗号アルゴリズムは、オンライン計算の安全性レベル及びオフライン計算の安全性レベルがともに最適のnビットであり、メモリサイズが最小である2nビットとなるブロック暗号を用いた認証暗号アルゴリズムとなっている。
なお、オンライン計算の安全性レベルを最適にするためには、認証暗号アルゴリズムの内部で更新されるメモリのサイズは、バースデーパラドックスより、2nビット以上必要である。特許文献1に記載された認証暗号アルゴリズムでは、内部で更新されるメモリのサイズがnビットのため、オンライン計算の安全性レベルがn/2ビットとなる。非特許文献3認証暗号アルゴリズムでは、内部で更新されるメモリのサイズを3nビットのため、オンライン計算の安全性レベルがnビットとなる。しかし、非特許文献3では、メモリサイズが3nビット必要になっており、最小ではない。
図4を参照して、実施の形態1に係る暗号化装置10及び復号装置30によって実現される認証暗号アルゴリズムでは、内部で更新されるメモリのサイズが2nビットとなることを説明する。
図4に示す処理の開始時において、値Yが格納されているメモリをメモリ1、値Xが格納されているメモリをメモリ2とする。
まず、U=E(Y,X)が計算される。すると、メモリ1には、値Uが格納され、メモリ2には、アップデートされた値Yが格納される。ここで、暗号化関数Eの内部のメモリサイズは2nビットであり、メモリ2の値を巻き戻して元の値Yを復元可能であるという条件が成立するものとする。この条件は、AESといった現在提案されているほぼすべてのブロック暗号のアルゴリズムが満たしている条件である。
次に、メモリ2の値から元の値Yが復元される。すると、メモリ1には、値Uが格納され、メモリ2には、元の値Yが格納される。次に、置換関数Pを用いて値Yを変換した値P(Y)が計算され、置換関数G及び置換関数Fを用いて値Uを変換した値F(G(U))が計算される。すると、メモリ1には、値F(G(U))が格納され、メモリ2には、値P(Y)が格納される。次に、値P(Y)と値F(G(U))との排他的論理和が計算され、値Wが得られる。すると、メモリ1には、値Wが格納され、メモリ2には、値P(Y)が格納される。最後に、値F(G(U))から置換関数Fの逆の計算がされ、値Z=G(U)が復元される。すると、メモリ1には、値Wが格納され、メモリ2には、値Zが格納される。
以上のように、図4の処理は、サイズが2nビットのメモリを用いて計算が可能である。実施の形態1では、認証暗号アルゴリズムは、図4の処理を繰り返し実行することにより実現される。したがって、認証暗号アルゴリズムは、サイズが2nビットのメモリを用いて計算が可能である。
***他の構成***
<変形例1>
実施の形態1では、各機能構成要素がソフトウェアで実現された。しかし、変形例1として、各機能構成要素はハードウェアで実現されてもよい。この変形例1について、実施の形態1と異なる点を説明する。
図19を参照して、変形例1に係る暗号化装置10の構成を説明する。
各機能構成要素がハードウェアで実現される場合には、暗号化装置10は、プロセッサ11とメモリ12とストレージ13とに代えて、電子回路15を備える。電子回路15は、各機能構成要素と、メモリ12と、ストレージ13との機能とを実現する専用の回路である。
図20を参照して、変形例1に係る復号装置30の構成を説明する。
各機能構成要素がハードウェアで実現される場合には、復号装置30は、プロセッサ31とメモリ32とストレージ33とに代えて、電子回路35を備える。電子回路35は、各機能構成要素と、メモリ32と、ストレージ33との機能とを実現する専用の回路である。
電子回路15,35としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)が想定される。
各機能構成要素を1つの電子回路15,35で実現してもよいし、各機能構成要素を複数の電子回路15,35に分散させて実現してもよい。
例えば、図21に示すように、暗号化装置10は、電子回路15として、ブロック暗号Eを計算するブロック暗号プロセッサと、分割処理を行う分割処理プロセッサと、初期値生成処理を行う初期値生成処理プロセッサと、公開データ処理を行う公開データ処理プロセッサと、暗号文生成処理を行う暗号文生成処理プロセッサと、認証子生成処理を行う認証子生成処理プロセッサとを備える構成とすることが考えられる。同様に、図22に示すように、復号装置30は、電子回路35として、ブロック暗号Eを計算するブロック暗号プロセッサと、分割処理を行う分割処理プロセッサと、初期値生成処理を行う初期値生成処理プロセッサと、公開データ処理を行う公開データ処理プロセッサと、平文生成処理を行う平文生成処理プロセッサと、改ざん検知処理を行う改ざん検知処理プロセッサとを備える構成とすることが考えられる。
<変形例2>
変形例2として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
プロセッサ11,31とメモリ12,32とストレージ13,33と電子回路15,35とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
なお、以上の説明における「部」を、「回路」、「工程」、「手順」、「処理」又は「処理回路」に読み替えてもよい。
以上、本開示の実施の形態及び変形例について説明した。これらの実施の形態及び変形例のうち、いくつかを組み合わせて実施してもよい。また、いずれか1つ又はいくつかを部分的に実施してもよい。なお、本開示は、以上の実施の形態及び変形例に限定されるものではなく、必要に応じて種々の変更が可能である。
10 暗号化装置、11 プロセッサ、12 メモリ、13 ストレージ、14 入出力インタフェース、15 電子回路、21 分割部、22 初期値生成部、23 公開データ処理部、24 暗号要素生成部、25 暗号文生成部、26 認証子生成部、30 復号装置、31 プロセッサ、32 メモリ、33 ストレージ、34 入出力インタフェース、35 電子回路、41 分割部、42 初期値生成部、43 公開データ処理部、44 平文要素生成部、45 平文生成部、46 認証子生成部。

Claims (18)

  1. 平文Mを順にnビット毎に分割して値M[1],...,値M[m]を生成する分割部と、
    nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,mの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割部によって生成された値M[i]とから値C[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する暗号要素生成部と、
    前記暗号要素生成部によって生成されたi=1,...,mについての値C[i]を結合して暗号文Cを生成する暗号文生成部と、
    値T[m]と値B[m]とから前記暗号文生成部によって生成された前記暗号文Cの改ざんを検知するための認証子Tagを生成する認証子生成部と
    を備える暗号化装置。
  2. 前記暗号要素生成部は、i=1,...,m-1の各整数iについて昇順に、前記値B[i]と前記値M[i]との排他的論理和を計算して前記値C[i]を生成し、前記値B[m]を置換関数Rによって変換した値R(B[m])から前記値M[m]のビット長|M[m]|だけ抽出した値B’[m]と前記値M[m]との排他的論理和を計算して値C[m]を生成する
    請求項1に記載の暗号化装置。
  3. 前記認証子生成部は、前記値T[m]を鍵として前記値B[m]をブロック暗号によって暗号化してnビットの値B[m+1]を生成し、前記値T[m]を置換関数Pで変換した値P(T[m])と、値B[m+1]を置換関数Fで変換した値F(B[m+1])とから前記認証子Tagを生成する
    請求項1又は2に記載の暗号化装置。
  4. 前記認証子生成部は、前記値T[m]を鍵として前記値B[m]をブロック暗号によって暗号化してnビットの値B[m+1]を生成し、前記値B[m+1]を前記認証子Tagに設定する
    請求項1又は2に記載の暗号化装置。
  5. 前記分割部は、公開データAを順に2nビット毎に分割して値A[1],...,値A[a]を生成し、
    前記暗号化装置は、さらに、
    nビットの値IVtを値T[0]とし、nビットの値IVbを値B[0]として、i=1,...,a-1の各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化して得られた値E(B[i-1])と、値A[i]のうちのnビットの値A[i,b]とからnビットの値B[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値E(B[i-1])を置換関数Fで変換した値F(E(B[i-1]))と、値A[i]のうちの前記値A[i,b]以外のnビットである値A[i,t]とからnビットの値T[i]を生成し、値T[a-1]と値B[a-1]と値A[a]とから前記値Htと前記値Hbとを生成する公開データ処理部
    を備える請求項1から4までのいずれか1項に記載の暗号化装置。
  6. 前記公開データ処理部は、前記値T[a-1]を鍵として値B[a-1]をブロック暗号によって暗号化して得られた値E(B[a-1])を置換関数Qによって変換した値Q(E(B[a-1]))と、前記値A[a]にビットをパディングして得られた2nビットの値A’[a]のうちのnビットの値A’[a,b]とから前記値Btを生成し、前記値Q(E(B[a-1]))を置換関数Fで変換した値F(値Q(E(B[a-1])))と、値A’[a]のうちの前記値A’[a,b]以外のnビットである値A’[a,t]とから前記値Htを生成する
    請求項5に記載の暗号化装置。
  7. 前記暗号化装置は、さらに、
    nビットの鍵Kを用いて、nビットのナンスNをブロック暗号Eによって暗号化して得られた値E(N)と、前記公開データAと前記平文Mとに応じた値idとから前記値IVbを生成し、鍵Kを置換関数Pで変換した値P(K)と、前記値E(N)を置換関数Fで変換した値F(E[N])とから前記値IVtを生成する初期値生成部
    を備える請求項5又は6に記載の暗号化装置。
  8. 暗号文Cを順にnビット毎に分割して値C[1],...,値C[c]を生成する分割部と、
    nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,cの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割部によって生成された値C[i]とから値M[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する平文要素生成部と、
    前記平文要素生成部によって生成されたi=1,...,cについての値M[i]を結合して平文Mを生成する平文生成部と、
    値T[c]と値B[c]とから前記平文生成部によって生成された前記平文Mの改ざんを検知するための認証子Tag’を生成する認証子生成部と
    を備える復号装置。
  9. 前記平文要素生成部は、i=1,...,c-1の各整数iについて昇順に、前記値B[i]と前記値C[i]との排他的論理和を計算して前記値M[i]を生成し、前記値B[c]を置換関数Rによって変換した値R(B[c])から前記値C[c]のビット長|C[c]|だけ抽出した値B’[c]と前記値C[c]との排他的論理和を計算して値M[c]を計算する
    請求項8に記載の復号装置。
  10. 前記認証子生成部は、前記値T[c]を鍵として前記値B[c]をブロック暗号によって暗号化してnビットの値B[c+1]を生成し、前記値T[c]を置換関数Pで変換した値P(T[c])と、値B[c+1]を置換関数Fで変換した値F(B[c+1])とから前記認証子Tag’を生成する
    請求項8又は9に記載の復号装置。
  11. 前記認証子生成部は、前記値T[c]を鍵として前記値B[c]をブロック暗号によって暗号化してnビットの値B[c+1]を生成し、前記値B[c+1]を前記認証子Tag’に設定する
    請求項8又は9に記載の復号装置。
  12. 前記分割部は、公開データAを順に2nビット毎に分割して値A[1],...,値A[a]を生成し、
    前記復号装置は、さらに、
    nビットの値IVtを値T[0]とし、nビットの値IVbを値B[0]として、i=1,...,a-1の各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化して得られた値E(B[i-1])と、値A[i]のうちのnビットの値A[i,b]とからnビットの値B[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、値E(B[i-1])を置換関数Fで変換した値F(E(B[i-1]))と、値A[i]のうちの前記値A[i,b]以外のnビットである値A[i,t]とからnビットの値T[i]を生成し、値T[a-1]と値B[a-1]と値A[a]とから前記値Htと前記値Hbとを生成する公開データ処理部
    を備える請求項8から11までのいずれか1項に記載の復号装置。
  13. 前記公開データ処理部は、前記値T[a-1]を鍵として値B[a-1]をブロック暗号によって暗号化して得られた値E(B[a-1])を置換関数Qによって変換した値Q(E(B[a-1]))と、前記値A[a]にビットをパディングして得られた2nビットの値A’[a]のうちのnビットの値A’[a,b]とから前記値Btを生成し、前記値Q(E(B[a-1]))を置換関数Fで変換した値F(値Q(E(B[a-1])))と、値A’[a]のうちの前記値A’[a,b]以外のnビットである値A’[a,t]とから前記値Htを生成する
    請求項12に記載の復号装置。
  14. 前記復号装置は、さらに、
    nビットの鍵Kを用いて、nビットのナンスNをブロック暗号Eによって暗号化して得られた値E(N)と、前記公開データAと前記暗号文Cとに応じた値idとから前記値IVbを生成し、鍵Kを置換関数Pで変換した値P(K)と、前記値E(N)を置換関数Fで変換した値F(E[N])とから前記値IVtを生成する初期値生成部
    を備える請求項12又は13に記載の復号装置。
  15. コンピュータが、平文Mを順にnビット毎に分割して値M[1],...,値M[m]を生成し、
    コンピュータが、nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,mの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、値M[i]とから値C[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成し、
    コンピュータが、i=1,...,mについての値C[i]を結合して暗号文Cを生成し、
    コンピュータが、値T[m]と値B[m]とから前記暗号文Cの改ざんを検知するための認証子Tagを生成する暗号化方法。
  16. 平文Mを順にnビット毎に分割して値M[1],...,値M[m]を生成する分割処理と、
    nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,mの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割処理によって生成された値M[i]とから値C[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する暗号要素生成処理と、
    前記暗号要素生成処理によって生成されたi=1,...,mについての値C[i]を結合して暗号文Cを生成する暗号文生成処理と、
    値T[m]と値B[m]とから前記暗号文生成処理によって生成された前記暗号文Cの改ざんを検知するための認証子Tagを生成する認証子生成処理と
    を行う暗号化装置としてコンピュータを機能させる暗号化プログラム。
  17. コンピュータが、暗号文Cを順にnビット毎に分割して値C[1],...,値C[c]を生成し、
    コンピュータが、nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,cの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、値C[i]とから値M[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成し、
    コンピュータが、i=1,...,cについての値M[i]を結合して平文Mを生成し、
    コンピュータが、値T[c]と値B[c]とから前記平文Mの改ざんを検知するための認証子Tag’を生成する復号方法。
  18. 暗号文Cを順にnビット毎に分割して値C[1],...,値C[c]を生成する分割処理と、
    nビットの値Htを値T[0]とし、nビットの値Hbを値B[0]として、i=1,...,cの各整数iについて昇順に、値T[i-1]を鍵として値B[i-1]をブロック暗号によって暗号化してnビットの値B[i]を生成し、値B[i]と、前記分割処理によって生成された値C[i]とから値M[i]を生成し、値T[i-1]を置換関数Pで変換した値P(T[i-1])と、前記値B[i]を置換関数Fで変換した値F(B[i])と、前記値C[i]とからnビットの値T[i]を生成する平文要素生成処理と、
    前記平文要素生成処理によって生成されたi=1,...,cについての値M[i]を結合して平文Mを生成する平文生成処理と、
    値T[c]と値B[c]とから前記平文生成処理によって生成された前記平文Mの改ざんを検知するための認証子Tag’を生成する認証子生成処理と
    を行う復号装置としてコンピュータを機能させる復号プログラム。
JP2023512624A 2021-04-09 2021-04-09 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム Active JP7317261B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/015013 WO2022215249A1 (ja) 2021-04-09 2021-04-09 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム

Publications (2)

Publication Number Publication Date
JPWO2022215249A1 JPWO2022215249A1 (ja) 2022-10-13
JP7317261B2 true JP7317261B2 (ja) 2023-07-28

Family

ID=83545298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023512624A Active JP7317261B2 (ja) 2021-04-09 2021-04-09 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム

Country Status (5)

Country Link
US (1) US20230388103A1 (ja)
JP (1) JP7317261B2 (ja)
CN (1) CN117083834A (ja)
DE (1) DE112021007029T5 (ja)
WO (1) WO2022215249A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019043921A1 (ja) 2017-09-01 2019-03-07 三菱電機株式会社 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3324660A4 (en) 2015-08-21 2018-07-04 Huawei Technologies Co., Ltd. Communication control method and apparatus, terminal, and network platform

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019043921A1 (ja) 2017-09-01 2019-03-07 三菱電機株式会社 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHAKRABORTI, Avik et al.,From Combined to Hybrid: Making Feedback-based AE even Smaller,IACR Transactions on Symmetric Cryptology, [online],Volume 2020, Special Issue 1,2020年06月22日,pp. 417-445,[retrieved on 2021.06.30], Retrieved from the Internet: <URL: https://tosc.iacr.org/index.php/ToSC/article/view/8626> <DOI: 10.13154/tosc.v2020.iS1.417-445>
IWATA, Tetsu et al.,CLOC and SILC, [online],2016年09月15日,pp. 1-25,[retrieved on 2021.06.29], Retrieved from the Internet: <URL: https://competitions.cr.yp.to/round3/clocsilcv3.pdf>

Also Published As

Publication number Publication date
WO2022215249A1 (ja) 2022-10-13
JPWO2022215249A1 (ja) 2022-10-13
CN117083834A (zh) 2023-11-17
DE112021007029T5 (de) 2023-12-14
US20230388103A1 (en) 2023-11-30

Similar Documents

Publication Publication Date Title
TWI734368B (zh) 實現隱私保護的數據同態加解密方法及裝置
JP6144992B2 (ja) 検索可能暗号処理システム及び方法
JP6386198B1 (ja) 暗号化装置及び復号装置
WO2019102624A1 (ja) 準同型推論装置、準同型推論方法、準同型推論プログラム及び秘匿情報処理システム
EP3661115B1 (en) Encryption device, decryption device, encryption method, decryption method, encryption program, and decryption program
JPWO2019130528A1 (ja) 変換鍵生成装置、暗号文変換装置、秘匿情報処理システム、変換鍵生成方法、変換鍵生成プログラム、暗号文変換方法及び暗号文変換プログラム
JPWO2016088453A1 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
JP2015526757A (ja) 特定フォーマットを有する代替データの生成および検証
JP2006311383A (ja) データ管理方法、データ管理システムおよびデータ管理装置
WO2018131129A1 (ja) 暗号化タグ生成装置、検索クエリ生成装置及び秘匿検索システム
US11876888B2 (en) Encryption device, decryption device, encryption method, decryption method, and computer readable medium
JP7317261B2 (ja) 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム
JP7325689B2 (ja) 暗号文変換システム、変換鍵生成方法、及び、変換鍵生成プログラム
JP6797337B2 (ja) メッセージ認証装置、メッセージ認証方法及びメッセージ認証プログラム
JP6203387B2 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
JP2015082077A (ja) 暗号化装置、制御方法、及びプログラム
US11522675B2 (en) Apparatus and method for encryption and decryption based on tweak converter to which key table is applied
JP7126635B2 (ja) 再暗号化装置、暗号システム、再暗号化方法及び再暗号化プログラム
JP6949276B2 (ja) 再暗号化装置、再暗号化方法、再暗号化プログラム及び暗号システム
Vincy et al. Encryption Model Converting Secret Message to a Single Character
JP2022053676A (ja) 情報処理システム及び情報処理方法
JP2023184198A (ja) 連合学習システム及び連合学習方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230322

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230322

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: 20230620

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230718

R150 Certificate of patent or registration of utility model

Ref document number: 7317261

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150