JP7367860B2 - 認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラム - Google Patents

認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラム Download PDF

Info

Publication number
JP7367860B2
JP7367860B2 JP2022516562A JP2022516562A JP7367860B2 JP 7367860 B2 JP7367860 B2 JP 7367860B2 JP 2022516562 A JP2022516562 A JP 2022516562A JP 2022516562 A JP2022516562 A JP 2022516562A JP 7367860 B2 JP7367860 B2 JP 7367860B2
Authority
JP
Japan
Prior art keywords
nonce
authentication
plaintext
tag
encryption
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
JP2022516562A
Other languages
English (en)
Other versions
JPWO2021214923A5 (ja
JPWO2021214923A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2021214923A1 publication Critical patent/JPWO2021214923A1/ja
Publication of JPWO2021214923A5 publication Critical patent/JPWO2021214923A5/ja
Application granted granted Critical
Publication of JP7367860B2 publication Critical patent/JP7367860B2/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/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/3234Cryptographic 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 involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD

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)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Description

本発明は、認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラムに関する。
事前に共有された秘密鍵を用いて、平文メッセージに対して暗号化と改ざん検知用の認証タグ計算とを同時に適用する認証暗号(Authenticated Encryption;AE)という技術が知られている。通信路に認証暗号AEを適用することにより、盗聴に対する内容の秘匿と、不正な改ざんに対する検知とが可能となり、結果として通信内容に対する強力な保護が実現される。認証暗号技術としては、例えば、非特許文献1に開示された技術が知られている。
また、このような認証暗号を効率的に行う技術の1つとして、例えば、特許文献1及び非特許文献2に示すようなOCB(Offset Code Book)モードと呼ばれる認証暗号方式が知られている。OCBモードは、暗号化と復号の際に、Tweak(トウィーク)と呼ばれる補助変数(調整値)を導入するTweakableブロック暗号と呼ばれるブロック暗号を拡張したものである。具体的には、OCBモードでは、非特許文献2に記載されているXEXモードによる暗号化を行うことで、Tweakを用いた暗号化を行っている。また、OCBモードでは、平文を分割した各ブロックの排他的論理和に上記暗号化を行う際と同様の処理を行うことでタグを生成している。
また、非特許文献3は、非特許文献2に記載されたバージョンのOCBへ修正を施したバージョンであるOCB2fに関する方式を開示している。また、非特許文献4は、ブロック暗号の拡張であるTweakableブロック暗号(Tweakable block cipher;TBC;可撚ブロック暗号)をプリミティブとして用いてOCBを抽象化したΘCB3(以下ThetaCB3)方式を開示している。
米国特許第8321675号明細書
NIST Special Publication 800-38D、"Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC"、http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf "Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC"、Phillip Rogaway、ASIACRYPT 2004、http://web.cs.ucdavis.edu/~rogaway/papers/offsets.pdf Akiko Inoue, Tetsu Iwata, Kazuhiko Minematsu, Bertram Poettering、"Cryptanalysis of OCB2: Attacks on Authenticity and Confidentiality"、IACR Cryptology ePrint Archive 2019: 311 (2019) Ted Krovetz, Phillip Rogaway、"The Software Performance of Authenticated-Encryption Modes"、FSE 2011: 306-327 Christof Beierle, Jeremy Jean, Stefan Kolbl, Gregor Leander, Amir Moradi, Thomas Peyrin, Yu Sasaki, Pascal Sasdrich, Siang Meng Sim、"The SKINNY Family of Block Ciphers and Its Low-Latency Variant MANTIS"、CRYPTO (2) 2016: 123-153 Daniel J. Bernstein、"The Poly1305-AES Message-Authentication Code"、FSE 2005: 32-49
認証暗号を含む一般の暗号化方式について、遅延という評価指標がある。これは処理を開始してから最初の出力結果が出るまでの時間を指すものであり、小さいほうが望ましい。一方、上述した特許文献及び非特許文献にかかる技術では、暗号化及び復号における遅延を抑制することは困難である。
本開示の目的は、このような課題を解決するためになされたものであり、暗号化及び復号における遅延を抑制することが可能な認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラムを提供することにある。
本開示にかかる認証暗号化装置は、平文の入力を受け付ける入力手段と、過去に生成された値とは異なるナンスを生成するナンス生成手段と、前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成する平文暗号化手段と、前記平文を用いてチェックサムを生成するチェックサム生成手段と、ハッシュ値を取得するハッシュ手段と、前記ナンスを暗号化して暗号化ナンスを取得するナンス暗号化手段と、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成する認証タグ生成手段と、前記暗号文及び前記認証タグを出力するための制御を行う出力手段と、有する。
また、本開示にかかる認証復号装置は、暗号文、認証タグ及びナンスの入力を受け付ける入力手段と、前記暗号文を分割したブロックごとに、前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成する平文復号手段と、前記平文を用いてチェックサムを生成するチェックサム生成手段と、ハッシュ値を取得するハッシュ手段と、前記ナンスを暗号化して暗号化ナンスを取得するナンス暗号化手段と、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成する検証用タグ生成手段と、前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う検証手段と、を有する。
また、本開示にかかる認証暗号システムは、認証暗号化装置と、前記認証暗号化装置との間で通信を行う認証復号装置と、を有し、前記認証暗号化装置は、平文の入力を受け付ける第1の入力手段と、過去に生成された値とは異なるナンスを生成するナンス生成手段と、前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成する平文暗号化手段と、前記平文を用いてチェックサムを生成する第1のチェックサム生成手段と、ハッシュ値を取得する第1のハッシュ手段と、前記ナンスを暗号化して暗号化ナンスを取得する第1のナンス暗号化手段と、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成する認証タグ生成手段と、前記暗号文及び前記認証タグを出力するための制御を行う出力手段と、を有し、前記認証復号装置は、暗号文、認証タグ及びナンスの入力を受け付ける第2の入力手段と、前記第2の入力手段によって入力された前記暗号文を分割したブロックごとに、前記第2の入力手段によって入力された前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成する平文復号手段と、前記平文復号手段によって生成された前記平文を用いてチェックサムを生成する第2のチェックサム生成手段と、ハッシュ値を取得する第2のハッシュ手段と、前記第2の入力手段によって入力された前記ナンスを暗号化して暗号化ナンスを取得する第2のナンス暗号化手段と、前記第2のチェックサム生成手段によって生成された前記チェックサムと、前記第2のハッシュ手段によって取得された前記ハッシュ値と、前記第2のナンス暗号化手段によって取得された前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成する検証用タグ生成手段と、前記認証タグ生成手段によって生成された前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う検証手段と、を有する。
また、本開示にかかる認証暗号化方法は、平文の入力を受け付け、過去に生成された値とは異なるナンスを生成し、前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成し、前記平文を用いてチェックサムを生成し、ハッシュ値を取得し、前記ナンスを暗号化して暗号化ナンスを取得し、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成し、前記暗号文及び前記認証タグを出力するための制御を行う。
また、本開示にかかる認証復号方法は、暗号文、認証タグ及びナンスの入力を受け付け、前記暗号文を分割したブロックごとに、前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成し、前記平文を用いてチェックサムを生成し、ハッシュ値を取得し、前記ナンスを暗号化して暗号化ナンスを取得し、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成し、前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う。
また、本開示にかかるプログラムは、平文の入力を受け付けるステップと、過去に生成された値とは異なるナンスを生成するステップと、前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成するステップと、前記平文を用いてチェックサムを生成するステップと、ハッシュ値を取得するステップと、前記ナンスを暗号化して暗号化ナンスを取得するステップと、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成し、前記暗号文及び前記認証タグを出力するための制御を行うステップと、をコンピュータに実行させる。
また、本開示にかかるプログラムは、暗号文、認証タグ及びナンスの入力を受け付けるステップと、前記暗号文を分割したブロックごとに、前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成するステップと、前記平文を用いてチェックサムを生成するステップと、ハッシュ値を取得するステップと、前記ナンスを暗号化して暗号化ナンスを取得するステップと、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成するステップと、前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行うステップと、をコンピュータに実行させる。
本開示によれば、暗号化及び復号における遅延を抑制することが可能な認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラムを提供できる。
実施の形態1にかかる認証暗号システムの構成を示す図である。 実施の形態1にかかる認証暗号化装置の構成を示す図である。 実施の形態1にかかる認証復号装置の構成を示す図である。 実施の形態1にかかる認証暗号化装置で実行される認証暗号化方法を示すフローチャートである。 実施の形態1にかかる認証復号装置で実行される認証復号方法を示すフローチャートである。 非特許文献4に記載された認証暗号方式ThetaCB3方式を用いた暗号化ルーチンを簡略化して示した図である。 非特許文献4に記載された認証暗号方式ThetaCB3方式を用いた復号ルーチンを簡略化して示した図である。 実施の形態1にかかる認証暗号化方法をTweakableブロック暗号で実施する場合の暗号化処理を例示する図である。 実施の形態1にかかる認証暗号化方法をTweakableブロック暗号で実施する場合の復号処理を例示する図である。 非特許文献2に記載された暗号化関数及び復号関数を例示する図である。 実施の形態2にかかる認証暗号化装置を示す図である。 実施の形態2にかかる認証復号装置を示す図である。 各実施形態に係る装置およびシステムを実現可能な計算処理装置のハードウェア構成例を概略的に示すブロック図である。
(本開示にかかる実施形態の概要)
本開示の実施の形態の説明に先立って、本開示にかかる実施の形態の概要について説明する。なお、以下、本開示の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
認証暗号(AE)の基本的な入出力について説明する。なお、以下の説明では、秘密鍵Kを共有する2者としてAliceとBobとの間の通信を考え、AliceからBobへ認証暗号による暗号化を行ったメッセージを通信するものとする。また、以下の説明にかかる方式は、例えば、非特許文献1に記載されたGCM(Galois/Counter Mode)というアルゴリズムによって実現される。
認証暗号の暗号化関数をAEncとし、復号関数をADecとする。また、暗号化したい平文をMとし、さらにナンス(Nonce(ノンス))と呼ばれる変数Nを導入する。また、ヘッダ(associated data;AD)をAとする。ここで、ヘッダAは、暗号化は行われないが改ざん検知は行われる値である。
まず、Alice側の暗号化処理について説明する。Aliceは、ナンスNを生成後、(C,T)=AEnc_K(N,A,M)で表される処理を実行する。ここで、AEnc_Kは、鍵Kをパラメータとした暗号化関数であり、Cは暗号文である。また、Tは、タグ(認証タグ)と呼ばれる、固定長の改ざん検出用の変数である。Aliceは、ナンスN、ヘッダA、暗号文C及びタグTの組(N,A,C,T)を、Bobに送信する。
次に、Bob側の復号処理について説明する。Bobが受信した情報を(N’,A’,C’,T’)とする。この場合、Bobは、復号処理としてADec_K(N’,A’,C’,T’)を実行する。なお、ADec_Kは、鍵Kをパラメータとした復号関数である。通信の途中で改ざんがあり、(N’,A’,C’,T’)≠(N,A,C,T)である場合、ADec_K(N’,A’,C’,T’)について、改ざんがあったことを示すエラーメッセージ(エラーシンボル)が出力される。つまり、この場合、改ざんが検出される。一方、通信の途中で改ざんがなく、(N’,A’,C’,T’)=(N,A,C,T)である場合、ADec_K(N’,A’,C’,T’)について、Aliceが暗号化した平文Mが正しく復号される。
また、上記の処理においては、通常、暗号化においてナンスNが過去の値と偶然一致してしまわないようにすることが重要である。このために、暗号化側では、カウンタなどの何らかの状態変数を用いて、ナンスの一致を防ぐ。すなわち、典型的には、状態変数として直前に使ったNを記憶しておき、毎回Nをインクリメントすることで、ナンスNが過去の値と重複しないことが、実現される。
ここで、認証暗号を含む一般の暗号化方式について、遅延(レイテンシ;latency)という評価指標がある。これは処理を開始してから最初の出力結果が出るまでの時間を指すものであり、小さいほうが望ましい。例えば、コンピュータ内部のメモリバスの暗号化、又は、例えばオンラインゲームや無人機の制御といったリアルタイム処理が求められる通信の暗号化では、特に遅延の発生が問題となる。したがって、このような場合では、低遅延であることが望ましい。なお、暗号化の場合、遅延は、複数ブロックからなる平文を入力した際に、最初の暗号文ブロックが出力されるまでの時間又は処理量のことを指す。
認証暗号で用いるコアとなる暗号部品のことをプリミティブと称する場合、認証暗号における暗号化の遅延は、最初の暗号文ブロックが出力されるまでに必要なプリミティブのコール回数とするのが一般的である。復号の遅延も同様に定義される。なお、遅延の他の指標として、速度(スループット;throughput)がある。速度は、1プリミティブコールあたりで処理可能なメッセージブロック数とするのが一般的である。この数値はレートとも呼ばれる。ただし、一般に、メッセージによらず発生する定数回の呼び出しは、レートの計算に含まれない。つまり、レートは、メッセージが十分長いときの漸近的速度を反映するものである。一方、遅延は、定義上、上記のような定数回呼び出しを含み得る。
ブロック暗号をプリミティブとする認証暗号方式として、特許文献1及び非特許文献1に記載されたOCBが知られている。OCBについては、特に、遅延が少ないことが知られている。また、例えば、非特許文献2に記載されたOCBの方式、及び、非特許文献3に記載されたOCB2fでは、暗号化における遅延は、ブロック暗号2回となっている。さらに、非特許文献4に記載されたThetaCB3方式では、暗号化における遅延はTBC1回となっており、TBCを用いた方式としては理論的に最良となっている。言い換えると、OCB及びThetaCB3においては、暗号化における遅延が小さい。なお、速度については、OCB及びThetaCB3のいずれについても、暗号化および復号のレートが1であり、メッセージのブロック単位で並列に実行可能である。したがって、OCB及びThetaCB3においては、高速な処理が可能であるといえる。
ここで、OCB及びThetaCB3においては、暗号化における遅延は小さいものの、後述するように、復号における遅延は、暗号化における遅延よりも大きくなる。これに対し、本実施の形態における認証暗号では、以下に説明するように、OCB及びThetaCB3と同等の速度(すなわちレート1)を達成しつつ、遅延をさらに小さくすることができる。つまり、本実施の形態においては、高速かつ低遅延な認証暗号を実現することができる。
(実施の形態1)
以下、実施の形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
図1は、実施の形態1にかかる認証暗号システム1の構成を示す図である。認証暗号システム1は、認証暗号化装置10と、認証復号装置20とを有する。認証暗号化装置10及び認証復号装置20は、物理的に一体であってもよいし、別個であってもよい。また、図2~図3を用いて後述する各装置の構成要素が、別の装置で実現されてもよい。なお、以下の説明では、特に断りのない限り、平文又は暗号文等を分割して得られた複数のブロックのうちの1ブロックの長さを所定長であるnビットとする。また、上述したAliceとBobとの間の通信の例において、認証暗号化装置10は、Aliceに対応し、認証復号装置20はBobに対応する。つまり、認証暗号化装置10及び認証復号装置20との間で通信が行われる。
なお、本実施の形態においては、平文の長さが常にブロック長nの倍数であることが好ましい。仮に、ブロック長nの倍数でない平文を扱う場合には、パディングが必要となり、暗号文の長さが増える。しかしながら、平文の長さがブロック長の倍数であるという制限は、多くのアプリケーションでは問題とならない。例えば後述するAES(Advanced Encryption Standard)を用いてメモリ、キャッシュ又はハードディスクセクタの暗号化を行うことを考える場合、平文の標準的な長さは、AESのブロック長(16バイト)の倍数である。
図2は、実施の形態1にかかる認証暗号化装置10の構成を示す図である。図3は、実施の形態1にかかる認証復号装置20の構成を示す図である。また、図4は、実施の形態1にかかる認証暗号化装置10で実行される認証暗号化方法を示すフローチャートである。また、図5は、実施の形態1にかかる認証復号装置20で実行される認証復号方法を示すフローチャートである。また、図6は、非特許文献4に記載された認証暗号方式ThetaCB3方式を用いた暗号化ルーチンを簡略化して示した図である。また、図7は、非特許文献4に記載された認証暗号方式ThetaCB3方式を用いた復号ルーチンを簡略化して示した図である。また、図8は、実施の形態1にかかる認証暗号化方法をTweakableブロック暗号で実施する場合の暗号化処理を例示する図である。また、図9は、実施の形態1にかかる認証暗号化方法をTweakableブロック暗号で実施する場合の復号処理を例示する図である。また、図10は、非特許文献2に記載された暗号化関数及び復号関数を例示する図である。
図2に示した認証暗号化装置10について説明する。認証暗号化装置10は、入力部100と、ナンス生成部101と、Tweak付き暗号化部102と、チェックサム生成部103と、ヘッダハッシュ部104と、ナンス暗号化部105と、加算部106と、短縮部107と、出力部108とを有する。認証暗号化装置10は、例えばコンピュータによって実現可能である。つまり、認証暗号化装置10は、CPU(Central Processing Unit)などの演算装置と、メモリ又はディスクなどの記憶装置とを有している。認証暗号化装置10は、例えば、記憶装置に格納されたプログラムを演算装置が実行することで、上記の各構成要素を実現する。
入力部100は、入力手段としての機能を有する。ナンス生成部101は、ナンス生成手段としての機能を有する。Tweak付き暗号化部102は、Tweak付き暗号化手段(平文暗号化手段又は暗号文生成手段)としての機能を有する。チェックサム生成部103は、チェックサム生成手段としての機能を有する。ヘッダハッシュ部104は、ヘッダハッシュ手段(ハッシュ手段)としての機能を有する。ナンス暗号化部105は、ナンス暗号化手段としての機能を有する。加算部106は、加算手段(加法手段)としての機能を有する。短縮部107は、短縮手段(認証タグ生成手段)としての機能を有する。出力部108は、出力手段としての機能を有する。
入力部100は、暗号化の対象となる平文MおよびヘッダAの入力を受け付ける。入力部100は、例えば、キーボードなどの入力装置により実現されてもよい。入力部100は、例えば、ネットワークを介して接続された外部装置などから、平文M及びヘッダAの入力を受け付けてもよい。なお、ヘッダが存在しない場合もあり、この場合は、ヘッダAは入力されない。入力部100は、平文Mを、Tweak付き暗号化部102及びチェックサム生成部103に出力する。また、入力部100は、ヘッダAを、ヘッダハッシュ部104に出力する。
ナンス生成部101は、過去の値と重複がないようにナンスNを生成する。つまり、ナンス生成部101は、過去に生成された値とは異なるナンスNを生成する。具体的には、例えば、ナンス生成部101は、最初に任意の固定値を出力する。また、ナンス生成部101は、直前に生成したナンスの値を記憶している。そして、ナンス生成部101は、2回目以降にナンスNを生成する際に、記憶された直前の値に1を加えた値を出力する。このように、ナンス生成部101は、1つ前に既に出力した値に1を加えた値を出力することで、過去に生成した値とは異なるナンスNを生成する。なお、ナンス生成部101は、過去に生成した値とは異なる値を生成可能ならば、上述した例とは異なる方法でナンスを生成してもよい。ナンス生成部101は、生成されたナンスNを、Tweak付き暗号化部102及びナンス暗号化部105に出力する。また、ナンス生成部101は、生成されたナンスNを、出力部108に出力してもよい。
Tweak付き暗号化部102は、平文Mを所定のnについてnビットブロックごとに分割し、ナンスNを補助変数(Tweak)として用いて、平文Mをブロックごとに並列に暗号化することで、暗号文Cを生成する。具体的には、Tweak付き暗号化部102は、平文Mをnビットブロックごとに(つまり所定長のブロックに)分割することで生成されたm個のブロックの系列M[1],M[2],...,M[m]を得る。そして、Tweak付き暗号化部102は、i番目のM[i](i=1,2,...,m)それぞれに対して、ナンスN及びブロックのインデックスiをTweakと呼ばれる補助変数に含めて、ブロックごとに並列にTweakableブロック暗号で暗号化する。これにより、Tweak付き暗号化部102は、平文Mを分割したm個のブロックと同じ長さの暗号文C=(C[1],C[2],...,C[m])を得る。なお、平文Mの分割は、Tweak付き暗号化部102によって行われる必要はない。入力部100に平文Mが入力されたときに予めm個のブロックの系列M[1],M[2],...,M[m]に分割されていてもよい。あるいは、入力部100が平文Mを分割してもよい。
なお、Tweakには、処理の種類(暗号化対象が平文かナンスか、などの違い)を表すインデックスjを含めてもよい。ここで、インデックスjを1とし、Tweakableブロック暗号の暗号化関数をTE(Tweak,message block)とすると、
(式1)
C[i]=TE((N,i,j),M[i]) for i=1,...,m-1
C[m]=TE((N,m,j+1),M[m])
と表すことができる。
Tweak付き暗号化部102は、得られたC[1],...,C[m]を連結して、暗号文Cを得る。そして、Tweak付き暗号化部102は、得られた暗号文Cを、出力部108に出力する。
なお、式1に示すように、安全性の観点から、最後のブロック(i=mのブロック)のみ、処理の種類を表すインデックスjを、他のブロックにおけるインデックスjから変更する必要がある。したがって、C[m]では、このインデックスをj+1としている。また、平文Mの長さがnの倍数でない場合は、Tweak付き暗号化部102は、適当な一意の復号可能なパディングを施してから、M[1],M[2],...,M[m]を得る。
Tweak付き暗号化部102は、Tweakableブロック暗号(TBC)として、例えば、非特許文献5に記載されているSKINNY等の既存のアルゴリズムを用いてもよい。あるいは、Tweak付き暗号化部102は、Tweakableブロック暗号(TBC)を、AES(Advanced Encryption Standard)などのブロック暗号を用いたブロック暗号利用モード(以下モード)で実現してもよい。この場合、Tweak付き暗号化部102は、Tweakableブロック暗号のモードとして、非特許文献2に記載されたXEX*モードや、その変種である非特許文献4に記載されているモードを用いることが可能である。つまり、本実施の形態において、Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードであってもよい。
ここで、ブロック暗号の暗号化関数をEとする。また、Tweakを(N,i,j)とし、平文をMとし、暗号文をCとする。この場合、XEX*モードの暗号化は、以下の式2で表される。この式は、図10の上図で表される。
(式2)
C=g(N,i,j)+E(M+g(N,i,j)),
g(N,i,j)=E(N)・2^i・3^j
ここで、「・2」は、有限体GF(2^n)上の生成元(多項式表現におけるx)との乗算を意味し、「・3」は、生成元と単位元の和(多項式で表現するとx+1)との乗算を意味する。また、「E(N)・2^i・3^j」は、E(N)をGF(2^n)の元とみて、それをi回生成元と乗算し、j回生成元と単位元の和との乗算をとることを意味する。なお、これらのGF(2^n)上の定数乗算は、極めて簡単な処理で実現される。また、上記の方式は、n=128のときに安全性が保証されている。そのほかのnの場合のブロック暗号の暗号化関数の実現方法は、例えば非特許文献3に記載されている。
なお、Tweakableブロック暗号を用いて行う処理が上述した暗号化処理でなく、メッセージのハッシュ処理を行う場合などであれば、上記式2における暗号化関数Eの外側のg(N,i,j)を省略して、
(式3)
C=E(M+g(N,i,j))
としてもよい。例えば、後述するヘッダハッシュ部104で行われる処理がこれに相当する。
チェックサム生成部103は、平文Mを簡単な計算により圧縮することによって、チェックサムSを生成する。具体的には、チェックサム生成部103は、平文Mをnビットブロックの系列M[1],M[2],...,M[m]に分割する。そして、チェックサム生成部103は、分割されたnビットブロックの系列M[1],M[2],...,M[m]に対して簡便な圧縮処理を施すことによって、チェックサムSを生成する。チェックサム生成部103は、生成されたチェックサムSを、加算部106に出力する。
チェックサム生成部103は、例えば、排他的論理和+を用いる場合は、
(式4)
S=M[1]+M[2]+...+M[m]
を計算することによって、チェックサムSを生成する。なお、チェックサム生成部103は、排他的論理和に限らず、例えば算術加算など任意の群ないし環演算を用いて、チェックサムSを生成してもよい。
ヘッダハッシュ部104は、ヘッダAとユニバーサルハッシュ関数とを用いることによって、ヘッダAのハッシュ値Hを取得する。具体的には、ヘッダハッシュ部104は、ヘッダAをnビットブロックの系列A[1],A[2],...,A[a]に分割する。そして、ヘッダハッシュ部104は、分割されたnビットブロックの系列A[1],A[2],...,A[a]にユニバーサルハッシュ関数を適用することによって、ヘッダのハッシュ値Hを取得する。ヘッダハッシュ部104は、取得されたヘッダのハッシュ値Hを、加算部106に出力する。
ここで、ヘッダハッシュ部104は、ユニバーサルハッシュ関数として、非特許文献6に記載されたような、乗算を用いた多項式ハッシュ関数(polynomial hash function)を用いてもよい。あるいは、ヘッダハッシュ部104は、ブロック暗号又はTweakableブロック暗号を用いた方式によって、ヘッダのハッシュ値Hを生成してもよい。ヘッダハッシュ部104は、例えば、非特許文献2に記載された方式を用いて、ユニバーサルハッシュ関数として、Tweak付き暗号化部102で用いられたTE関数を用いると、以下の式5によってハッシュ値Hを取得してもよい。
(式5)
H=TE((const,1,j’),A[1])+TE((const,2,j’),A[2])+...+TE((const,a,j’),A[a])
ここで、constは、任意のnビット定数である。また、j’は、Tweak付き暗号化部102で用いられたインデックスjと異なる任意の整数(例えばj’=3)である。また、上述したように、Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードであってもよい。
上記の式5から、ヘッダハッシュ部104は、i番目のヘッダブロックA[i]に対して、ヘッダのブロックのインデックスiを含めたTweakを用いて、ブロックごとに並列にTweakableブロック暗号で暗号化を行う。そして、ヘッダハッシュ部104は、暗号化を行った全てのi=1,...,aについてのブロックの加算を行うことで、ヘッダのハッシュ値Hを取得する。
なお、Aがnの倍数の長さでない場合は、ヘッダハッシュ部104は、適切なパディングを施したのち、ヘッダAをA[1],A[2],...,A[a]に分割する。なお、ヘッダAが存在しない場合は、ヘッダハッシュ部104は、ハッシュ値Hを任意の定数(例えばオールゼロ;全てのビット値が0の定数)としてもよい。
ナンス暗号化部105は、ナンスNを暗号化し、チェックサムと同じ長さの暗号化ナンスVを取得する。具体的には、ナンス暗号化部105は、ナンスNを補助変数(Tweak)として用いて任意のnビット定数を暗号化することで、暗号化ナンスVを生成する。つまり、ナンス暗号化部105は、ナンスNを含めたTweakを用いて、1ブロックの平文を任意の定数としたTweakableブロック暗号で暗号化を行うことによって、暗号化ナンスVを生成する。ナンス暗号化部105は、生成された暗号化ナンスVを、加算部106に出力する。また、上述したように、Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードであってもよい。
例えば、ナンス暗号化部105は、Tweak付き暗号化部102の処理で用いられたTE関数を用いて、以下のようにして暗号化ナンスVを生成できる。すなわち、ナンス暗号化部105は、処理の種類のインデックスとしてそれまでに使われていない値j’’(例えばj’’=4)を用いて、以下の式6を用いて、暗号化ナンスVを生成できる。
(式6)
V=TE((N,0,j’’),00..0)
ここで、「00..0」は、nビットのオールゼロを示す。
加算部106は、チェックサムSと暗号化ナンスVとヘッダのハッシュ値Hとの和をとることで、非短縮認証タグUを生成する。具体的には、加算部106は、ヘッダのハッシュ値HとチェックサムSと暗号化ナンスVとを加算する。加算部106は、この和を、nビットの非短縮認証タグUとして取得する。なお、加算方法は、排他的論理和であってもよいし、あるいは、任意の群の加法演算であってもよい。加算部106は、得られた非短縮認証タグUを、短縮部107に出力する。
短縮部107は、所定のt(tは1以上n以下の整数)について、加算部106によって生成された非短縮認証タグUを任意の方法によってtビットに短縮して、認証タグTを生成する。具体的には、短縮部107は、任意の方法によって非短縮認証タグUを短縮して所定のtビットとすることによって、認証タグTを生成する。例えば、短縮部107は、非短縮認証タグUの最上位のtビットを、認証タグTとしてもよい。
出力部108は、暗号文Cと認証タグTとを出力するための制御を行う。このとき、出力部108は、暗号文Cと認証タグTとを連結して出力するようにしてもよい。出力部108は、例えば、ディスプレイなどの出力装置に暗号文Cと認証タグTとを表示させるための制御を行ってもよい。また、出力部108は、例えば、ネットワークを介して接続された外部装置などに対して、暗号文C及び認証タグTを出力するように制御を行ってもよい。また、出力部108は、ナンスN及びヘッダAを出力するように制御を行ってもよい。
次に、図3に示した認証復号装置20について説明する。認証復号装置20は、入力部200と、Tweak付き復号部201と、チェックサム生成部202と、ナンス暗号化部203と、ヘッダハッシュ部204と、加算部205と、短縮部206と、タグ検証部207とを有する。認証復号装置20、例えばコンピュータによって実現可能である。つまり、認証復号装置20は、CPUなどの演算装置と、メモリ又はディスクなどの記憶装置とを有している。認証復号装置20は、例えば、記憶装置に格納されたプログラムを演算装置が実行することで、上記の各構成要素を実現する。
入力部200は、入力手段としての機能を有する。Tweak付き復号部201は、Tweak付き復号手段(平文復号手段又は平文生成手段)としての機能を有する。チェックサム生成部202は、チェックサム生成手段としての機能を有する。ナンス暗号化部203は、ナンス暗号化手段としての機能を有する。ヘッダハッシュ部204は、ヘッダハッシュ手段(ハッシュ手段)としての機能を有する。加算部205は、加算手段(加法手段)としての機能を有する。短縮部206は、短縮手段(検証用タグ生成手段)としての機能を有する。タグ検証部207は、タグ検証手段(検証手段及び出力手段)としての機能を有する。
入力部200は、復号の対象となる暗号文C、ナンスN、ヘッダA及び認証タグTの入力を受け付ける。入力部200は、例えば、キーボードなどの文字入力装置により実現されてもよい。入力部200は、例えば、キーボードなどの入力装置により実現される。入力部200は、例えば、ネットワークを介して接続された外部装置などから、暗号文C、ナンスN、ヘッダA及び認証タグTを受け付けてもよい。なお、ヘッダが存在しない場合もあり、この場合は、ヘッダAは入力されない。入力部200は、暗号文Cを、Tweak付き復号部201に出力する。また、入力部200は、ヘッダAを、ヘッダハッシュ部204に出力する。また、入力部200は、ナンスNを、Tweak付き復号部201及びナンス暗号化部203に出力する。また、入力部200は、認証タグTを、タグ検証部207に出力する。
Tweak付き復号部201は、上述したTweak付き暗号化部102に対応した復号処理を行う。Tweak付き復号部201は、暗号文Cを所定のnについてnビットブロックごとに分割し、ナンスNを補助変数(Tweak)として用い、ブロックごとに並列に復号することで、平文Mを生成する。具体的には、Tweak付き復号部201は、暗号文Cをnビットブロックごとに分割することで生成されたm個のブロックの系列C[1],C[2],...,C[m]を得る。そして、Tweak付き復号部201は、i番目のC[i](i=1,2,...,m)それぞれに対して、ナンスN及びブロックのインデックスiをTweakと呼ばれる補助変数に含めて、ブロックごとに並列にTweakableブロック暗号で復号する。これにより、Tweak付き復号部201は、暗号文Cを分割したm個のブロックと同じ長さの平文M=(M[1],M[2],...,M[m])を得る。なお、暗号文Cの分割は、Tweak付き復号部201によって行われる必要はない。入力部200に暗号文Cが入力されたときに予めm個のブロックの系列C[1],C[2],...,C[m]に分割されていてもよい。あるいは、入力部200が暗号文Cを分割してもよい。
なお、上述したように、Tweakには、処理の種類(暗号化対象が平文かナンスか、などの違い)を表すインデックスjを含めてもよい。上述のインデックスjを1とし、Tweakableブロック暗号の復号関数をTD(Tweak,message block)とすると、
(式7)
M[i]=TD((N,i,j),C[i]) for i=1,...,m-1
M[m]=TD((N,m,j+1),C[m])
と表すことができる。
Tweak付き復号部201は、得られたM[1],...,M[m]を連結して、平文Mを出力する。そして、Tweak付き復号部201は、得られた平文Mを、タグ検証部207及びチェックサム生成部202に出力する。なお、式7に示すように、安全性の観点から、最後のブロック(i=mのブロック)のみ、処理の種類を表すインデックスjを、他のブロックにおけるインデックスjから変更する必要がある。したがって、M[m]では、このインデックスをj+1としている。
なお、Tweak付き暗号化部102と同様に、Tweak付き復号部201は、Tweakableブロック暗号(TBC)として非特許文献5に記載されているSKINNY等の既存のTweakableブロック暗号のアルゴリズムを用いてもよい。あるいは、Tweak付き復号部201は、Tweakableブロック暗号(TBC)を、AESなどのブロック暗号を用いたモードで実現してもよい。この場合、Tweak付き復号部201は、Tweakableブロック暗号のモードとして、非特許文献2に記載されたXEX*モードや、その変種である非特許文献4に記載されているモードを用いることが可能である。つまり、本実施の形態において、Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードであってもよい。
なお、Tweakableブロック暗号のモードとして非特許文献2のXEX*モードを用いた場合を考える。ブロック暗号の暗号化関数をEとし、復号関数をDとする。また、Tweakを(N,i,j)とし、平文をMとし、暗号文をCとする。この場合、XEX*モードの復号は、以下の式8で表される。この式は、図10の下図で表される。
(式8)
M=g(N,i,j)+D(C+g(N,i,j)),
g(N,i,j)=E(N)・2^i・3^j
なお、関数gの定義等については、上述した式2(Tweak付き暗号化部102)におけるものと実質的に同様である。また、上記の方式は、n=128のときに安全性が保証されている。
チェックサム生成部202は、上述したチェックサム生成部103と実質的に同様の処理を行う。つまり、チェックサム生成部202は、平文Mを簡単な計算により圧縮することによって、チェックサムSを生成する。チェックサム生成部202は、生成されたチェックサムSを、加算部205に出力する。
ナンス暗号化部203は、上述したナンス暗号化部105と実質的に同様の処理を行う。つまり、ナンス暗号化部203は、ナンスNを暗号化し、チェックサムと同じ長さの暗号化ナンスVを取得する。具体的には、ナンス暗号化部203は、ナンスNを補助変数(Tweak)として用いて任意のnビット定数を暗号化することで、暗号化ナンスVを生成する。つまり、ナンス暗号化部203は、ナンスNを含めたTweakを用いて、1ブロックの平文を任意の定数としたTweakableブロック暗号で暗号化を行うことによって、暗号化ナンスVを生成する。ナンス暗号化部203は、取得された暗号化ナンスVを、加算部205に出力する。また、上述したように、Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードであってもよい。
ヘッダハッシュ部204は、上述したヘッダハッシュ部104と実質的に同様の処理を行う。つまり、ヘッダハッシュ部204は、ヘッダAとユニバーサルハッシュ関数とを用いることによって、ヘッダAのハッシュ値Hを取得する。ヘッダハッシュ部204は、取得されたハッシュ値Hを、加算部205に出力する。なお、ヘッダAが存在しない場合は、ヘッダハッシュ部204は、ハッシュ値Hを任意の定数(例えばオールゼロ;全てのビット値が0の定数)としてもよい。
具体的には、ヘッダハッシュ部204は、ヘッダAをnビットブロックの系列A[1],A[2],...,A[a]に分割する。そして、ヘッダハッシュ部204は、分割されたnビットブロックの系列A[1],A[2],...,A[a]にユニバーサルハッシュ関数を適用することによって、ヘッダのハッシュ値Hを取得する。そして、上記の式5から、ヘッダハッシュ部204は、i番目のヘッダブロックA[i]に対して、ヘッダのブロックのインデックスiを含めたTweakを用いて、ブロックごとに並列にTweakableブロック暗号で暗号化を行う。そして、ヘッダハッシュ部204は、暗号化を行った全てのi=1,...,aについてのブロックの加算を行うことで、ヘッダのハッシュ値Hを取得する。また、上述したように、Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードであってもよい。
加算部205は、上述した加算部106と実質的に同様の処理を行う。つまり、加算部205は、チェックサムSと暗号化ナンスVとヘッダのハッシュ値Hとの和をとることで、非短縮認証タグUを生成する。加算部205は、生成された非短縮認証タグUを、短縮部206に出力する。
短縮部206は、所定のt(tは1以上n以下の整数)について、加算部205によって生成された非短縮認証タグUを任意の方法によってtビットに短縮して、推定された認証タグである検証用タグT’を生成する。なお、短縮部206の具体的な処理は、短縮部107の処理と実質的に同様である。短縮部206は、生成された検証用タグT’を、タグ検証部207に出力する。
タグ検証部207は、入力部200によって出力された認証タグTと、短縮部206によって出力された検証用タグT’とを比較して、改ざんの有無を検証する。そして、タグ検証部207は、検証結果に基づいて、情報を出力するための制御を行う。なお、タグ検証部207は、例えば、ディスプレイなどの出力装置に情報を表示させるための制御を行ってもよい。また、タグ検証部207は、例えば、ネットワークを介して接続された外部装置などに対して、情報を出力するように制御を行ってもよい。
具体的には、認証タグTと検証用タグT’とが一致する場合に、タグ検証部207は、Tweak付き復号部201によって生成された平文Mを出力するための制御を行う。なお、平文の長さがnの倍数でないケースでは、タグ検証部207は、所定のパディングを取り除いて、平文Mを出力するように制御を行ってもよい。一方、認証タグTと検証用タグT’とが一致しない場合に、タグ検証部207は、認証タグTと検証用タグT’とが一致しないことを示すエラーシンボルを出力するように制御を行う。
次に、図4及び図5を用いて、実施の形態1にかかる認証暗号システム1にかかる動作について説明する。図4は、実施の形態1にかかる認証暗号化装置10で実行される認証暗号化方法を示すフローチャートである。
入力部100は、平文M及びヘッダAを入力する(ステップS100)。具体的には、入力部100は、上述したように、暗号化の対象となる平文M=(M[1],M[2],...,M[m])と、ヘッダAとを入力する。ナンス生成部101は、上述したように、ナンスNを生成する(ステップS102)。
次に、Tweak付き暗号化部102は、上述したように、ナンスNを補助変数Tweakとして用いて、ブロックごとに平文Mを暗号化して、暗号文Cを取得する(ステップS104)。次に、チェックサム生成部103は、上述したように、平文MのチェックサムSを生成する(ステップS106)。次に、ヘッダハッシュ部104は、上述したように、ヘッダAのハッシュ値Hを取得する(ステップS108)。次に、ナンス暗号化部105は、上述したように、ナンスNを暗号化して、暗号化ナンスVを取得する(ステップS110)。
次に、認証暗号化装置10は、認証タグTを取得する(ステップS112)。具体的には、加算部106は、上述したように、チェックサムSと暗号化ナンスVとヘッダのハッシュ値Hとの和をとる。短縮部107は、和(非短縮認証タグU)を所定のtビットに短縮することで、認証タグTを取得する。そして、出力部108は、上述したように、暗号文Cと認証タグTとを出力するための制御を行う(ステップS114)。
図5は、実施の形態1にかかる認証復号装置20で実行される認証復号方法を示すフローチャートである。入力部200は、上述したように、復号の対象となる暗号文C、ナンスN、ヘッダA及び認証タグTを入力する(ステップS202)。次に、ナンス暗号化部203は、上述したように、ナンスNを暗号化し、暗号化ナンスVを取得する(ステップS204)。次に、Tweak付き復号部201は、上述したように、ナンスNを補助変数Tweakとして用いて、ブロックごとに暗号文Cを復号して、平文Mを取得する(ステップS206)。次に、ヘッダハッシュ部204は、上述したように、ヘッダAのハッシュ値Hを取得する(ステップS208)。次に、チェックサム生成部202は、上述したように、平文MのチェックサムSを生成する(ステップS210)。
次に、認証復号装置20は、推定された認証タグT’(検証用タグ)を取得する(ステップS212)。具体的には、加算部205は、上述したように、暗号化ナンスVとヘッダのハッシュ値HとチェックサムSとの和をとる。短縮部206は、和(非短縮認証タグU)を所定のtビットに短縮することで、推定された認証タグT’(検証用タグT’)を取得する。
タグ検証部207は、認証タグTと検証用タグT’とが一致するか否かを判定する(ステップS214)。これにより、改ざんの有無が検証される。認証タグTと検証用タグT’とが一致する場合(S214のYES)、タグ検証部207は、認証が成功したことを示す検証結果として、平文Mを出力するための制御を行う(ステップS216)。一方、認証タグTと検証用タグT’とが一致しない場合(S214のNO)、タグ検証部207は、認証が失敗したことを示す検証結果として、エラーシンボルを出力するための制御を行う(ステップS218)。
次に、実施の形態1にかかる認証暗号システム1の効果を説明する。
上述したように、OCB及びThetaCB3においては、暗号化における遅延は小さいものの、復号における遅延は、暗号化における遅延より大きくなる。具体的には、OCBでは、復号遅延は3であり、ThetaCB3では、復号遅延は2である。このように、復号遅延が暗号化における遅延よりも大きくなる要因は、改ざん検知用の認証タグの計算方法にある。以下、ThetaCB3について説明する。
図6は、非特許文献4に記載された認証暗号方式ThetaCB3方式を用いた暗号化ルーチンを簡略化して示した図である。図6において、「TE(N,i,j)」は、Tweakableブロック暗号の暗号化関数の第一引数にTweak(N,i,j)を適用した関数TE((N,i,j),*)を表す。また、「trunc」は入力の短縮を行う関数である。
また、図7は、非特許文献4に記載された認証暗号方式ThetaCB3方式を用いた復号ルーチンを簡略化して示した図である。図7において、「TD(N,i,j)」は、Tweakableブロック暗号の復号関数の第一引数にTweak(N,i,j)を適用した関数TD((N,i,j),*)を表す。
図6に示すように、認証タグTは、チェックサムSと呼ばれる平文ブロックの和(排他的論理和)を、Tweakableブロック暗号のTE関数(TE(N.m.2))で暗号化することにより得られている。また、暗号化は、全てのTE関数について、暗号化に必要な値の入力(ナンスN、ヘッダA及び平文M)が決定した段階で、並列に実行され得る。したがって、暗号化における遅延は1である。
一方、図7に示す復号処理では、平文ブロックを得るために、対応する暗号文ブロックをTweakableブロック暗号の復号関数TDで復号する。そして、復号により平文ブロックが得られた後でチェックサムSを生成し、チェックサムSをTE関数(TE(N.m.2))で暗号化して得られた認証タグT’の値と、送信された認証タグTの値との一致を確認することで、改ざんの有無の検証が行われる。したがって、Tweakableブロック暗号の復号関数TDと暗号化関数TE(破線で囲まれたもの)とを直列に呼び出すこととなるため、復号における遅延は2となる。つまり、図7において、破線で囲まれたTE関数は、平文ブロックM[1],...,M[m]が決定されないと実行できない。したがって、この破線で囲まれたTE関数で、遅延が1増加していることになる。
また、OCBの場合は、上記の処理に加えて、TE関数及びTD関数をブロック暗号で実現するために、ブロック暗号によりナンス(暗号化で用いる公開値、カウンタなどで実現)を暗号化することが必要となる。具体的には、非特許文献2及び非特許文献3に記載されたOCB2又はOCB2fの場合で、暗号化及び復号において、遅延が1増加する。したがって、OCBの場合、暗号化の遅延が2、復号の遅延が3となる。すなわち、OCB及びThetaCB3ともに、復号の遅延は、暗号化の遅延と比べて1増加している。
また、認証タグによる通信帯域の増加を抑えるために、認証タグの長さは1ブロックよりも短くすることが多い。そして、後述するように、実施の形態1にかかる方法は、上述した技術と比較して、認証タグの長さによらないで、復号遅延を抑制する効果がある。つまり、実施の形態1にかかる方法は、タグの長さによらず、暗号化の遅延及び復号の遅延が、いずれも、Tweakableブロック暗号の1回となる、という効果を奏する。
図8は、実施の形態1にかかる認証暗号化方法をTweakableブロック暗号で実施する場合の暗号化処理を例示する図である。また、図9は、実施の形態1にかかる認証暗号化方法をTweakableブロック暗号で実施する場合の復号処理を例示する図である。図8及び図9に示すように、TE関数及びTD関数の依存関係が、暗号化(図8)でも復号(図9)でも存在せず、TE関数及びTD関数は、完全に並列となっている。すなわち、暗号化では、図8に示した全てのTE関数を、並列に実行することができる。また、復号では、図9に示した全てのTE関数及びTD関数を、並列に実行することができる。したがって、暗号化の遅延及び復号の遅延が、ともに1となっている。
上述したように、特に効率のよいTweakableブロック暗号ベースの認証暗号方式であるThetaCB3(図6及び図7)では、暗号化の遅延が1であるのに対して、復号遅延は2となっている。なお、ThetaCB3においても、タグの長さtをnビット(つまり短縮を行わない)とすれば、復号手順の変更により復号遅延を1とすることができる。しかしながら、認証タグによる通信帯域の増加を抑えるために、タグの短縮を行うことが一般的である。したがって、タグの長さによらず遅延を抑制できることが望ましい。
また、タグの長さtがnビット未満の場合には、チェックサムの生成及びヘッダのハッシュ値の生成にかかわるTE関数及びTD関数の出力を予めtビットに短縮しておくことも考えられる。これにより、全体のアルゴリズムを変えることなく、暗号化又は復号に必要なメモリ量を削減することが可能である。一方、ThetaCB3では、チェックサムをTweakableブロック暗号に入力する前に短縮することができないため、このようなメモリ量削減はできない。
また、Tweakableブロック暗号を何らかのブロック暗号利用モード(例えば非特許文献2のOCBで用いられるXEX*モード)で実現した場合には、ブロック暗号利用モードの部分で計算のオーバーヘッドが生じる。これにより、暗号化と復号の両方の遅延が増加する。具体的にXEX*を用いる場合は、ナンスの暗号化による1回が常にオーバーヘッドとして発生する。しかし、これは既存のOCBでも同様であり、Tweakableブロック暗号を実現する方法が同じであれば、オーバーヘッドは同じであり、結果として、非特許文献に記載された技術に対する、本実施の形態における復号遅延の少なさというメリットは保存されることになる。
具体的には、非特許文献2及び非特許文献3のOCB2又はOCB2fでは、XEX*モードを用いており、暗号化遅延が2となり、復号遅延が3となる。これに対し、本実施の形態では、同じXEX*モードを用いたときは、暗号化遅延及び復号遅延はともに2となる。また、非特許文献4のOCB3では、XEX*モードの変種(variant)を用いて、ナンスがカウンタの場合に限定されるが、上記の計算オーバーヘッドをほぼなくすことが可能である。この変種を用いた場合には、OCB3及び本実施の形態のいずれも、XEX*モードを使ったときと比べ、暗号化遅延と復号遅延の両方が、約1減ることになる。よって、OCB3では、暗号化遅延がほぼ1であり、復号遅延がほぼ2となる。これに対し、本実施の形態では、暗号化遅延及び復号遅延の両方が、ほぼ1となる。
また、本実施の形態では、ThetaCB3に対応する方式を採用した場合でも、暗号化及び復号のレートが1であること、並列実行可能、証明可能安全性(provable security)を持つ、などのThetaCB3の利点を保持している。したがって、本実施の形態においては、高速かつ低遅延な認証暗号を実現することができる。
(実施の形態2)
次に、実施の形態2について説明する。実施の形態2は、実施の形態1にかかる構成の概要を示している。
図11は、実施の形態2にかかる認証暗号化装置30を示す図である。実施の形態2にかかる認証暗号化装置30は、実施の形態1にかかる認証暗号化装置10に対応する。実施の形態2にかかる認証暗号化装置30は、入力部31と、ナンス生成部32と、平文暗号化部33と、チェックサム生成部34と、ハッシュ部35と、ナンス暗号化部36と、認証タグ生成部37と、出力部38とを有する。
入力部31は、入力手段(第1の入力手段)としての機能を有する。ナンス生成部32は、ナンス生成手段としての機能を有する。平文暗号化部33は、平文暗号化手段(Tweak付き暗号化手段又は暗号文生成手段)としての機能を有する。チェックサム生成部34は、チェックサム生成手段(第1のチェックサム生成手段)としての機能を有する。ハッシュ部35は、ハッシュ手段(第1のハッシュ手段)としての機能を有する。ナンス暗号化部36は、ナンス暗号化手段(第1のナンス暗号化手段)としての機能を有する。認証タグ生成部37は、認証タグ生成手段(加算手段及び短縮手段)としての機能を有する。出力部38は、出力手段としての機能を有する。
入力部31は、図2に示した入力部100が有している機能と実質的に同様の機能によって実現できる。入力部31は、平文の入力を受け付ける。また、入力部31は、ヘッダの入力を受け付けてもよい。ナンス生成部32は、図2に示したナンス生成部101が有している機能と実質的に同様の機能によって実現できる。ナンス生成部32は、過去に生成された値とは異なるナンスを生成する。平文暗号化部33は、図2に示したTweak付き暗号化部102が有している機能と実質的に同様の機能によって実現できる。平文暗号化部33は、平文を分割したブロックごとに、ナンスを補助変数として用いて暗号化することで、平文に対応する暗号文を生成する。
チェックサム生成部34は、図2に示したチェックサム生成部103が有している機能と実質的に同様の機能によって実現できる。チェックサム生成部34は、平文を用いてチェックサムを生成する。ハッシュ部35は、図2に示したヘッダハッシュ部104が有している機能と実質的に同様の機能によって実現できる。ハッシュ部35は、ハッシュ値を取得する。なお、ヘッダが入力される場合、ハッシュ部35は、ヘッダとハッシュ関数(ユニバーサルハッシュ関数)とを用いてハッシュ値を取得してもよい。ナンス暗号化部36は、図2に示したナンス暗号化部105が有している機能と実質的に同様の機能によって実現できる。ナンス暗号化部36は、ナンスを暗号化して暗号化ナンスを取得する。
認証タグ生成部37は、図2に示した加算部106及び短縮部107が有している機能と実質的に同様の機能によって実現できる。認証タグ生成部37は、チェックサムとハッシュ値と暗号化ナンスとを用いて認証タグを生成する。なお、認証タグ生成部37は、チェックサムとハッシュ値と暗号化ナンスとの和に基づいて、認証タグを生成してもよい。また、認証タグ生成部37は、この和を短縮することによって、認証タグを生成してもよい。出力部38は、図2に示した出力部108が有している機能と実質的に同様の機能によって実現できる。出力部38は、暗号文及び認証タグを出力するための制御を行う。
図12は、実施の形態2にかかる認証復号装置40を示す図である。実施の形態2にかかる認証復号装置40は、実施の形態1にかかる認証復号装置20に対応する。実施の形態2にかかる認証復号装置40は、入力部41と、平文復号部43と、チェックサム生成部44と、ハッシュ部45と、ナンス暗号化部46と、検証用タグ生成部47と、検証部48とを有する。
入力部41は、入力手段(第2の入力手段)としての機能を有する。平文復号部43は、平文復号手段(Tweak付き復号手段又は平文生成手段)としての機能を有する。チェックサム生成部44は、チェックサム生成手段(第2のチェックサム生成手段)としての機能を有する。ハッシュ部45は、ハッシュ手段(第2のハッシュ手段)としての機能を有する。ナンス暗号化部46は、ナンス暗号化手段(第2のナンス暗号化手段)としての機能を有する。検証用タグ生成部47は、検証用タグ生成手段(加算手段及び短縮手段)としての機能を有する。検証部48は、検証手段(タグ検証手段及び出力手段)としての機能を有する。
入力部41は、図3に示した入力部200が有している機能と実質的に同様の機能によって実現できる。入力部41は、暗号文、認証タグ及びナンスの入力を受け付ける。なお、入力部41は、ヘッダの入力を受け付けてもよい。平文復号部43は、図3に示したTweak付き復号部201が有している機能と実質的に同様の機能によって実現できる。平文復号部43は、暗号文を分割したブロックごとに、ナンスを補助変数として用いて復号することで、暗号文に対応する平文を生成する。
チェックサム生成部44は、図3に示したチェックサム生成部202が有している機能と実質的に同様の機能によって実現できる。チェックサム生成部44は、平文を用いてチェックサムを生成する。ハッシュ部45は、図3に示したヘッダハッシュ部204が有している機能と実質的に同様の機能によって実現できる。ハッシュ部45は、ハッシュ値を取得する。なお、ヘッダが入力される場合、ハッシュ部45は、ヘッダとハッシュ関数(ユニバーサルハッシュ関数)とを用いてハッシュ値を取得してもよい。ナンス暗号化部46は、図3に示したナンス暗号化部203が有している機能と実質的に同様の機能によって実現できる。ナンス暗号化部46は、ナンスを暗号化して暗号化ナンスを取得する。
検証用タグ生成部47は、図3に示した加算部205及び短縮部206が有している機能と実質的に同様の機能によって実現できる。検証用タグ生成部47は、チェックサムとハッシュ値と暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成する。なお、検証用タグ生成部47は、チェックサムとハッシュ値と暗号化ナンスとの和に基づいて、検証用タグを生成してもよい。また、検証用タグ生成部47は、この和を短縮することによって、検証用タグを生成してもよい。
検証部48は、図3に示したタグ検証部207が有している機能と実質的に同様の機能によって実現できる。検証部48は、認証タグと検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う。なお、検証部48は、認証タグと検証用タグとが一致する場合、検証結果として、平文を出力するための制御を行ってもよい。一方、検証部48は、認証タグと検証用タグとが一致しない場合、検証結果として、エラーシンボルを出力するための制御を行ってもよい。
実施の形態2にかかる認証暗号化装置30及び認証復号装置40は、上述した構成によって、暗号化及び復号における遅延を抑制することが可能である。なお、認証暗号化装置30及び認証復号装置40を有する認証暗号システムによっても、暗号化及び復号における遅延を抑制することが可能である。また、認証暗号化装置30によって実行される認証暗号化方法及び認証暗号化方法を実行するプログラムによっても、暗号化及び復号における遅延を抑制することが可能である。また、認証復号装置40によって実行される認証復号方法及び認証復号方法を実行するプログラムによっても、暗号化及び復号における遅延を抑制することが可能である。
(ハードウェア構成例)
上述した各実施形態に係る装置およびシステムを、1つの計算処理装置(情報処理装置、コンピュータ)を用いて実現するハードウェア資源の構成例について説明する。但し、各実施形態に係る装置(認証暗号化装置及び認証復号装置)は、物理的または機能的に少なくとも2つの計算処理装置を用いて実現されてもよい。また、各実施形態に係る装置は、専用の装置として実現されてもよいし、汎用の情報処理装置で実現されてもよい。
図13は、各実施形態に係る装置およびシステムを実現可能な計算処理装置のハードウェア構成例を概略的に示すブロック図である。計算処理装置120は、CPU121、揮発性記憶装置122、ディスク123、不揮発性記録媒体124、及び、通信IF127(IF:Interface)を有する。したがって、各実施形態に係る装置は、CPU121、揮発性記憶装置122、ディスク123、不揮発性記録媒体124、及び、通信IF127を有しているといえる。計算処理装置120は、入力装置125及び出力装置126に接続可能であってもよい。計算処理装置120は、入力装置125及び出力装置126を備えていてもよい。また、計算処理装置120は、通信IF127を介して、他の計算処理装置、及び、通信装置と情報を送受信することができる。
不揮発性記録媒体124は、コンピュータが読み取り可能な、たとえば、コンパクトディスク(Compact Disc)、デジタルバーサタイルディスク(Digital Versatile Disc)である。また、不揮発性記録媒体124は、USB(Universal Serial Bus)メモリ、ソリッドステートドライブ(Solid State Drive)等であってもよい。不揮発性記録媒体124は、電源を供給しなくても係るプログラムを保持し、持ち運びを可能にする。なお、不揮発性記録媒体124は、上述した媒体に限定されない。また、不揮発性記録媒体124の代わりに、通信IF127及び通信ネットワークを介して、係るプログラムが供給されてもよい。
揮発性記憶装置122は、コンピュータが読み取り可能であって、一時的にデータを記憶することができる。揮発性記憶装置122は、DRAM(dynamic random Access memory)、SRAM(static random Access memory)等のメモリ等である。
すなわち、CPU121は、ディスク123に格納されているソフトウェアプログラム(コンピュータ・プログラム:以下、単に「プログラム」と称する)を、実行する際に揮発性記憶装置122にコピーし、演算処理を実行する。CPU121は、プログラムの実行に必要なデータを揮発性記憶装置122から読み取る。表示が必要な場合、CPU121は、出力装置126に出力結果を表示する。外部からプログラムを入力する場合、CPU121は、入力装置125からプログラムを取得する。CPU121は、上述した図2,図3,図11,図12に示される各構成要素の機能(処理)に対応するプログラムを解釈し実行する。CPU121は、上述した各実施形態において説明した処理を実行する。言い換えると、上述した図2,図3,図11,図12に示される各構成要素の機能は、ディスク123又は揮発性記憶装置122に格納されたプログラムを、CPU121が実行することによって実現され得る。
すなわち、各実施形態は、上述したプログラムによっても成し得ると捉えることができる。さらに、上述したプログラムが記録されたコンピュータが読み取り可能な不揮発性の記録媒体によっても、上述した各実施形態は成し得ると捉えることができる。
(変形例)
なお、本発明は上記実施形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述したフローチャートにおいて、各処理(ステップ)の順序は、適宜、変更可能である。また、複数ある処理(ステップ)のうちの1つ以上は、省略されてもよい。
例えば、図4に示したフローチャートにおいて、S104~S110の処理の順序は、図4に示した順序に限定されない。さらに、S104~S110の処理は、並行して実行され得る。同様に、図5に示したフローチャートにおいて、S204,S206,S208の処理の順序は、図5に示した順序に限定されない。さらに、S204,S206,S208の処理は、並行して実行され得る。
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
平文の入力を受け付ける入力手段と、
過去に生成された値とは異なるナンスを生成するナンス生成手段と、
前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成する平文暗号化手段と、
前記平文を用いてチェックサムを生成するチェックサム生成手段と、
ハッシュ値を取得するハッシュ手段と、
前記ナンスを暗号化して暗号化ナンスを取得するナンス暗号化手段と、
前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成する認証タグ生成手段と、
前記暗号文及び前記認証タグを出力するための制御を行う出力手段と、
を有する認証暗号化装置。
(付記2)
前記認証タグ生成手段は、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとの和に基づいて、前記認証タグを生成する、
付記1に記載の認証暗号化装置。
(付記3)
前記認証タグ生成手段は、前記和を短縮することによって、前記認証タグを生成する、
付記2に記載の認証暗号化装置。
(付記4)
前記ナンス暗号化手段は、前記チェックサムと同じ長さの前記暗号化ナンスを取得する、
付記1から3のいずれか1項に記載の認証暗号化装置。
(付記5)
前記入力手段は、ヘッダを受け付け、
前記ハッシュ手段は、前記ヘッダとハッシュ関数とを用いて、前記ハッシュ値を取得する、
付記1から4のいずれか1項に記載の認証暗号化装置。
(付記6)
前記平文暗号化手段は、前記平文を所定長のブロックに分割した際のブロックのi番目の平文ブロックに対して、前記ナンスと前記平文ブロックのインデックスiとを含めた前記補助変数であるTweakを用いて、前記平文を前記ブロックごとに並列にTweakableブロック暗号で暗号化する、
付記1から5のいずれか1項に記載の認証暗号化装置。
(付記7)
前記入力手段は、ヘッダを受け付け、
前記ハッシュ手段は、前記ヘッダを所定長のブロックに分割した際のブロックのi番目のヘッダブロックに対して、前記ヘッダブロックのインデックスiを含めた前記補助変数であるTweakを用いて、前記ヘッダを前記ブロックごとに並列にTweakableブロック暗号で暗号化することで、前記ハッシュ値を取得する、
付記6に記載の認証暗号化装置。
(付記8)
前記ハッシュ手段は、前記ヘッダを暗号化したブロックを加算することで、前記ハッシュ値を取得する、
付記7に記載の認証暗号化装置。
(付記9)
前記ナンス暗号化手段は、前記ナンスを含めた前記補助変数であるTweakを用いて、Tweakableブロック暗号で暗号化を行うことによって、前記暗号化ナンスを取得する、
付記6から8のいずれか1項に記載の認証暗号化装置。
(付記10)
前記Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードである、
付記6から9のいずれか1項に記載の認証暗号化装置。
(付記11)
暗号文、認証タグ及びナンスの入力を受け付ける入力手段と、
前記暗号文を分割したブロックごとに、前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成する平文復号手段と、
前記平文を用いてチェックサムを生成するチェックサム生成手段と、
ハッシュ値を取得するハッシュ手段と、
前記ナンスを暗号化して暗号化ナンスを取得するナンス暗号化手段と、
前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成する検証用タグ生成手段と、
前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う検証手段と、
を有する認証復号装置。
(付記12)
前記検証用タグ生成手段は、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとの和に基づいて、前記検証用タグを生成する、
付記11に記載の認証復号装置。
(付記13)
前記検証用タグ生成手段は、前記和を短縮することによって、前記検証用タグを生成する、
付記12に記載の認証復号装置。
(付記14)
前記ナンス暗号化手段は、前記チェックサムと同じ長さの前記暗号化ナンスを取得する、
付記11から13のいずれか1項に記載の認証復号装置。
(付記15)
前記入力手段は、ヘッダを受け付け、
前記ハッシュ手段は、前記ヘッダとハッシュ関数とを用いて、前記ハッシュ値を取得する、
付記11から14のいずれか1項に記載の認証復号装置。
(付記16)
前記平文復号手段は、前記暗号文を所定長のブロックに分割した際のブロックのi番目の暗号文ブロックに対して、前記ナンスと前記暗号文ブロックのインデックスiとを含めた前記補助変数であるTweakを用いて、前記暗号文を前記ブロックごとに並列にTweakableブロック暗号で復号する、
付記11から15のいずれか1項に記載の認証復号装置。
(付記17)
前記入力手段は、ヘッダを受け付け、
前記ハッシュ手段は、前記ヘッダを所定長のブロックに分割した際のブロックのi番目のヘッダブロックに対して、前記ヘッダブロックのインデックスiを含めた前記補助変数であるTweakを用いて、前記ヘッダを前記ブロックごとに並列にTweakableブロック暗号で暗号化することで、前記ハッシュ値を取得する、
付記16に記載の認証復号装置。
(付記18)
前記ハッシュ手段は、前記ヘッダを暗号化したブロックを加算することで、前記ハッシュ値を取得する、
付記17に記載の認証復号装置。
(付記19)
前記ナンス暗号化手段は、前記ナンスを含めた前記補助変数であるTweakを用いて、Tweakableブロック暗号で暗号化を行うことによって、前記暗号化ナンスを取得する、
付記16から18のいずれか1項に記載の認証復号装置。
(付記20)
前記Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードである、
付記16から19のいずれか1項に記載の認証復号装置。
(付記21)
認証暗号化装置と、
前記認証暗号化装置との間で通信を行う認証復号装置と、
を有し、
前記認証暗号化装置は、
平文の入力を受け付ける第1の入力手段と、
過去に生成された値とは異なるナンスを生成するナンス生成手段と、
前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成する平文暗号化手段と、
前記平文を用いてチェックサムを生成する第1のチェックサム生成手段と、
ハッシュ値を取得する第1のハッシュ手段と、
前記ナンスを暗号化して暗号化ナンスを取得する第1のナンス暗号化手段と、
前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成する認証タグ生成手段と、
前記暗号文及び前記認証タグを出力するための制御を行う出力手段と、
を有し、
前記認証復号装置は、
暗号文、認証タグ及びナンスの入力を受け付ける第2の入力手段と、
前記第2の入力手段によって入力された前記暗号文を分割したブロックごとに、前記第2の入力手段によって入力された前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成する平文復号手段と、
前記平文復号手段によって生成された前記平文を用いてチェックサムを生成する第2のチェックサム生成手段と、
ハッシュ値を取得する第2のハッシュ手段と、
前記第2の入力手段によって入力された前記ナンスを暗号化して暗号化ナンスを取得する第2のナンス暗号化手段と、
前記第2のチェックサム生成手段によって生成された前記チェックサムと、前記第2のハッシュ手段によって取得された前記ハッシュ値と、前記第2のナンス暗号化手段によって取得された前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成する検証用タグ生成手段と、
前記認証タグ生成手段によって生成された前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う検証手段と、
を有する、
認証暗号システム。
(付記22)
平文の入力を受け付け、
過去に生成された値とは異なるナンスを生成し、
前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成し、
前記平文を用いてチェックサムを生成し、
ハッシュ値を取得し、
前記ナンスを暗号化して暗号化ナンスを取得し、
前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成し、
前記暗号文及び前記認証タグを出力するための制御を行う、
認証暗号化方法。
(付記23)
暗号文、認証タグ及びナンスの入力を受け付け、
前記暗号文を分割したブロックごとに、前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成し、
前記平文を用いてチェックサムを生成し、
ハッシュ値を取得し、
前記ナンスを暗号化して暗号化ナンスを取得し、
前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成し、
前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う、
認証復号方法。
(付記24)
平文の入力を受け付けるステップと、
過去に生成された値とは異なるナンスを生成するステップと、
前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成するステップと、
前記平文を用いてチェックサムを生成するステップと、
ハッシュ値を取得するステップと、
前記ナンスを暗号化して暗号化ナンスを取得するステップと、
前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成し、
前記暗号文及び前記認証タグを出力するための制御を行うステップと、
をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
(付記25)
暗号文、認証タグ及びナンスの入力を受け付けるステップと、
前記暗号文を分割したブロックごとに、前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成するステップと、
前記平文を用いてチェックサムを生成するステップと、
ハッシュ値を取得するステップと、
前記ナンスを暗号化して暗号化ナンスを取得するステップと、
前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成するステップと、
前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行うステップと、
をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
1 認証暗号システム
10 認証暗号化装置
100 入力部
101 ナンス生成部
102 Tweak付き暗号化部
103 チェックサム生成部
104 ヘッダハッシュ部
105 ナンス暗号化部
106 加算部
107 短縮部
108 出力部
20 認証復号装置
200 入力部
201 Tweak付き復号部
202 チェックサム生成部
203 ナンス暗号化部
204 ヘッダハッシュ部
205 加算部
206 短縮部
207 タグ検証部
30 認証暗号化装置
31 入力部
32 ナンス生成部
33 平文暗号化部
34 チェックサム生成部
35 ハッシュ部
36 ナンス暗号化部
37 認証タグ生成部
38 出力部
40 認証復号装置
41 入力部
43 平文復号部
44 チェックサム生成部
45 ハッシュ部
46 ナンス暗号化部
47 検証用タグ生成部
48 検証部

Claims (25)

  1. 平文の入力を受け付ける入力手段と、
    過去に生成された値とは異なるナンスを生成するナンス生成手段と、
    前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成する平文暗号化手段と、
    前記平文を用いてチェックサムを生成するチェックサム生成手段と、
    ハッシュ値を取得するハッシュ手段と、
    前記ナンスを暗号化して暗号化ナンスを取得するナンス暗号化手段と、
    前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成する認証タグ生成手段と、
    前記暗号文及び前記認証タグを出力するための制御を行う出力手段と、
    を有する認証暗号化装置。
  2. 前記認証タグ生成手段は、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとの和に基づいて、前記認証タグを生成する、
    請求項1に記載の認証暗号化装置。
  3. 前記認証タグ生成手段は、前記和を短縮することによって、前記認証タグを生成する、
    請求項2に記載の認証暗号化装置。
  4. 前記ナンス暗号化手段は、前記チェックサムと同じ長さの前記暗号化ナンスを取得する、
    請求項1から3のいずれか1項に記載の認証暗号化装置。
  5. 前記入力手段は、ヘッダを受け付け、
    前記ハッシュ手段は、前記ヘッダとハッシュ関数とを用いて、前記ハッシュ値を取得する、
    請求項1から4のいずれか1項に記載の認証暗号化装置。
  6. 前記平文暗号化手段は、前記平文を所定長のブロックに分割した際のブロックのi番目の平文ブロックに対して、前記ナンスと前記平文ブロックのインデックスiとを含めた前記補助変数であるTweakを用いて、前記平文を前記ブロックごとに並列にTweakableブロック暗号で暗号化する、
    請求項1から5のいずれか1項に記載の認証暗号化装置。
  7. 前記入力手段は、ヘッダを受け付け、
    前記ハッシュ手段は、前記ヘッダを所定長のブロックに分割した際のブロックのi番目のヘッダブロックに対して、前記ヘッダブロックのインデックスiを含めた前記補助変数であるTweakを用いて、前記ヘッダを前記ブロックごとに並列にTweakableブロック暗号で暗号化することで、前記ハッシュ値を取得する、
    請求項6に記載の認証暗号化装置。
  8. 前記ハッシュ手段は、前記ヘッダを暗号化したブロックを加算することで、前記ハッシュ値を取得する、
    請求項7に記載の認証暗号化装置。
  9. 前記ナンス暗号化手段は、前記ナンスを含めた前記補助変数であるTweakを用いて、Tweakableブロック暗号で暗号化を行うことによって、前記暗号化ナンスを取得する、
    請求項6から8のいずれか1項に記載の認証暗号化装置。
  10. 前記Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードである、
    請求項6から9のいずれか1項に記載の認証暗号化装置。
  11. 暗号文、認証タグ及びナンスの入力を受け付ける入力手段と、
    前記暗号文を分割したブロックごとに、前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成する平文復号手段と、
    前記平文を用いてチェックサムを生成するチェックサム生成手段と、
    ハッシュ値を取得するハッシュ手段と、
    前記ナンスを暗号化して暗号化ナンスを取得するナンス暗号化手段と、
    前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成する検証用タグ生成手段と、
    前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う検証手段と、
    を有する認証復号装置。
  12. 前記検証用タグ生成手段は、前記チェックサムと前記ハッシュ値と前記暗号化ナンスとの和に基づいて、前記検証用タグを生成する、
    請求項11に記載の認証復号装置。
  13. 前記検証用タグ生成手段は、前記和を短縮することによって、前記検証用タグを生成する、
    請求項12に記載の認証復号装置。
  14. 前記ナンス暗号化手段は、前記チェックサムと同じ長さの前記暗号化ナンスを取得する、
    請求項11から13のいずれか1項に記載の認証復号装置。
  15. 前記入力手段は、ヘッダを受け付け、
    前記ハッシュ手段は、前記ヘッダとハッシュ関数とを用いて、前記ハッシュ値を取得する、
    請求項11から14のいずれか1項に記載の認証復号装置。
  16. 前記平文復号手段は、前記暗号文を所定長のブロックに分割した際のブロックのi番目の暗号文ブロックに対して、前記ナンスと前記暗号文ブロックのインデックスiとを含めた前記補助変数であるTweakを用いて、前記暗号文を前記ブロックごとに並列にTweakableブロック暗号で復号する、
    請求項11から15のいずれか1項に記載の認証復号装置。
  17. 前記入力手段は、ヘッダを受け付け、
    前記ハッシュ手段は、前記ヘッダを所定長のブロックに分割した際のブロックのi番目のヘッダブロックに対して、前記ヘッダブロックのインデックスiを含めた前記補助変数であるTweakを用いて、前記ヘッダを前記ブロックごとに並列にTweakableブロック暗号で暗号化することで、前記ハッシュ値を取得する、
    請求項16に記載の認証復号装置。
  18. 前記ハッシュ手段は、前記ヘッダを暗号化したブロックを加算することで、前記ハッシュ値を取得する、
    請求項17に記載の認証復号装置。
  19. 前記ナンス暗号化手段は、前記ナンスを含めた前記補助変数であるTweakを用いて、Tweakableブロック暗号で暗号化を行うことによって、前記暗号化ナンスを取得する、
    請求項16から18のいずれか1項に記載の認証復号装置。
  20. 前記Tweakableブロック暗号は、ブロック暗号を用いたXEX*モードである、
    請求項16から19のいずれか1項に記載の認証復号装置。
  21. 認証暗号化装置と、
    前記認証暗号化装置との間で通信を行う認証復号装置と、
    を有し、
    前記認証暗号化装置は、
    平文の入力を受け付ける第1の入力手段と、
    過去に生成された値とは異なるナンスを生成するナンス生成手段と、
    前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成する平文暗号化手段と、
    前記平文を用いてチェックサムを生成する第1のチェックサム生成手段と、
    ハッシュ値を取得する第1のハッシュ手段と、
    前記ナンスを暗号化して暗号化ナンスを取得する第1のナンス暗号化手段と、
    前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成する認証タグ生成手段と、
    前記暗号文及び前記認証タグを出力するための制御を行う出力手段と、
    を有し、
    前記認証復号装置は、
    暗号文、認証タグ及びナンスの入力を受け付ける第2の入力手段と、
    前記第2の入力手段によって入力された前記暗号文を分割したブロックごとに、前記第2の入力手段によって入力された前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成する平文復号手段と、
    前記平文復号手段によって生成された前記平文を用いてチェックサムを生成する第2のチェックサム生成手段と、
    ハッシュ値を取得する第2のハッシュ手段と、
    前記第2の入力手段によって入力された前記ナンスを暗号化して暗号化ナンスを取得する第2のナンス暗号化手段と、
    前記第2のチェックサム生成手段によって生成された前記チェックサムと、前記第2のハッシュ手段によって取得された前記ハッシュ値と、前記第2のナンス暗号化手段によって取得された前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成する検証用タグ生成手段と、
    前記認証タグ生成手段によって生成された前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う検証手段と、
    を有する、
    認証暗号システム。
  22. 平文の入力を受け付け、
    過去に生成された値とは異なるナンスを生成し、
    前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成し、
    前記平文を用いてチェックサムを生成し、
    ハッシュ値を取得し、
    前記ナンスを暗号化して暗号化ナンスを取得し、
    前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成し、
    前記暗号文及び前記認証タグを出力するための制御を行う、
    認証暗号化方法。
  23. 暗号文、認証タグ及びナンスの入力を受け付け、
    前記暗号文を分割したブロックごとに、前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成し、
    前記平文を用いてチェックサムを生成し、
    ハッシュ値を取得し、
    前記ナンスを暗号化して暗号化ナンスを取得し、
    前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成し、
    前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行う、
    認証復号方法。
  24. 平文の入力を受け付けるステップと、
    過去に生成された値とは異なるナンスを生成するステップと、
    前記平文を分割したブロックごとに、前記ナンスを補助変数として用いて暗号化することで、前記平文に対応する暗号文を生成するステップと、
    前記平文を用いてチェックサムを生成するステップと、
    ハッシュ値を取得するステップと、
    前記ナンスを暗号化して暗号化ナンスを取得するステップと、
    前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて認証タグを生成し、
    前記暗号文及び前記認証タグを出力するための制御を行うステップと、
    をコンピュータに実行させるプログラム。
  25. 暗号文、認証タグ及びナンスの入力を受け付けるステップと、
    前記暗号文を分割したブロックごとに、前記ナンスを補助変数として用いて復号することで、前記暗号文に対応する平文を生成するステップと、
    前記平文を用いてチェックサムを生成するステップと、
    ハッシュ値を取得するステップと、
    前記ナンスを暗号化して暗号化ナンスを取得するステップと、
    前記チェックサムと前記ハッシュ値と前記暗号化ナンスとを用いて、推定された認証タグである検証用タグを生成するステップと、
    前記認証タグと前記検証用タグとを比較することによって改ざんの有無を検証し、検証結果を出力するための制御を行うステップと、
    をコンピュータに実行させるプログラム。
JP2022516562A 2020-04-23 2020-04-23 認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラム Active JP7367860B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/017422 WO2021214923A1 (ja) 2020-04-23 2020-04-23 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体

Publications (3)

Publication Number Publication Date
JPWO2021214923A1 JPWO2021214923A1 (ja) 2021-10-28
JPWO2021214923A5 JPWO2021214923A5 (ja) 2023-01-06
JP7367860B2 true JP7367860B2 (ja) 2023-10-24

Family

ID=78270498

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022516562A Active JP7367860B2 (ja) 2020-04-23 2020-04-23 認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラム

Country Status (3)

Country Link
US (1) US20230139104A1 (ja)
JP (1) JP7367860B2 (ja)
WO (1) WO2021214923A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114640547B (zh) * 2022-05-18 2022-08-02 深圳市研强物联技术有限公司 一种用于智能录音设备的语音处理方法
CN115118527B (zh) * 2022-08-26 2022-11-25 深圳市成为信息股份有限公司 超高频模组与pda的双向认证方法及相关设备
WO2024180612A1 (ja) * 2023-02-27 2024-09-06 日本電気株式会社 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015015702A1 (ja) 2013-08-02 2015-02-05 日本電気株式会社 認証暗号装置、認証暗号方法および認証暗号用プログラム
JP2016075765A (ja) 2014-10-03 2016-05-12 日本放送協会 認証暗号化装置および認証復号装置、ならびに、それらのプログラム
JP2019015918A (ja) 2017-07-10 2019-01-31 日本電信電話株式会社 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム
WO2019163032A1 (ja) 2018-02-21 2019-08-29 日本電気株式会社 暗号化装置、暗号化方法、プログラム、復号装置、復号方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE1751566A1 (en) * 2017-12-18 2019-06-19 DeviceRadio AB Encryption methods and devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015015702A1 (ja) 2013-08-02 2015-02-05 日本電気株式会社 認証暗号装置、認証暗号方法および認証暗号用プログラム
JP2016075765A (ja) 2014-10-03 2016-05-12 日本放送協会 認証暗号化装置および認証復号装置、ならびに、それらのプログラム
JP2019015918A (ja) 2017-07-10 2019-01-31 日本電信電話株式会社 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム
WO2019163032A1 (ja) 2018-02-21 2019-08-29 日本電気株式会社 暗号化装置、暗号化方法、プログラム、復号装置、復号方法

Also Published As

Publication number Publication date
WO2021214923A1 (ja) 2021-10-28
JPWO2021214923A1 (ja) 2021-10-28
US20230139104A1 (en) 2023-05-04

Similar Documents

Publication Publication Date Title
JP6519473B2 (ja) 認証暗号装置、認証暗号方法および認証暗号用プログラム
KR102136904B1 (ko) 공유 비밀키 생성 장치, 암호화 장치, 복호화 장치, 공유 비밀키 생성 방법, 암호화 방법, 복호화 방법, 및 프로그램
JP6665204B2 (ja) データ暗号化装置及び方法、並びにデータ復号化装置及び方法
JP7367860B2 (ja) 認証暗号化装置、認証復号装置、認証暗号システム、方法及びプログラム
JP5447510B2 (ja) タグ生成装置、タグ検証装置、通信システム、タグ生成方法、タグ検証方法および記録媒体
JP6740902B2 (ja) 認証暗号化方法、認証復号方法および情報処理装置
US9467286B2 (en) Encryption device, decryption device, encryption method, decryption method, and program
JP5855696B2 (ja) 完全性検証を含むブロック暗号化方法およびブロック復号化方法
CN105406969B (zh) 数据加密装置及方法
JP5704159B2 (ja) ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム
JP4793268B2 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及び共通鍵ブロック暗号化プログラム
KR102397579B1 (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
WO2014136386A1 (ja) タグ生成装置、タグ生成方法およびタグ生成プログラム
JP2015158665A (ja) 形態保存暗号化のための可変長ブロック暗号装置および方法
JP7323196B2 (ja) 暗号化装置、暗号化方法、プログラム、復号装置、復号方法
WO2016067524A1 (ja) 認証付暗号化装置、認証付復号装置、認証付暗号システム、認証付暗号化方法、プログラム
US20130308775A1 (en) Block encryption device, decryption device, encrypting method, decrypting method and program
JPWO2015166701A1 (ja) 暗号化方法、プログラム、および、システム
KR20080072345A (ko) 암호화 장치 및 그 방법
WO2022237440A1 (en) Authenticated encryption apparatus with initialization-vector misuse resistance and method therefor
US20240235811A1 (en) Authenticated encryption apparatus, authenticated decryption apparatus, authenticated encryption system, method, and computer readable medium
WO2024180612A1 (ja) 認証暗号化装置、認証復号装置、認証暗号システム、方法及びコンピュータ可読媒体
KR20220131002A (ko) Fpga 연산 시스템, 메모리 장치 및 fpga 연산 장치
Sadiq et al. Proposal for Scrambled Method based on NTRU

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221019

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221019

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230925

R151 Written notification of patent or utility model registration

Ref document number: 7367860

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151