JP5855696B2 - 完全性検証を含むブロック暗号化方法およびブロック復号化方法 - Google Patents

完全性検証を含むブロック暗号化方法およびブロック復号化方法 Download PDF

Info

Publication number
JP5855696B2
JP5855696B2 JP2014081031A JP2014081031A JP5855696B2 JP 5855696 B2 JP5855696 B2 JP 5855696B2 JP 2014081031 A JP2014081031 A JP 2014081031A JP 2014081031 A JP2014081031 A JP 2014081031A JP 5855696 B2 JP5855696 B2 JP 5855696B2
Authority
JP
Japan
Prior art keywords
block
encrypted
message
encryption
processing unit
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
JP2014081031A
Other languages
English (en)
Other versions
JP2015104119A (ja
Inventor
顏嵩銘
▲ト▼政宏
▲呉▼瑞明
Original Assignee
財團法人資訊工業策進會
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 財團法人資訊工業策進會 filed Critical 財團法人資訊工業策進會
Publication of JP2015104119A publication Critical patent/JP2015104119A/ja
Application granted granted Critical
Publication of JP5855696B2 publication Critical patent/JP5855696B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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/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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/72Signcrypting, i.e. digital signing and encrypting simultaneously

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

本発明は、ブロック暗号化方法およびブロック復号化方法に関する。さらに詳細には、本発明は、完全性検証を含むブロック暗号化方法およびブロック復号化方法に関する。
1対1のセキュア通信では、通信中に機密性、完全性、およびソース認証がすべて満たされている場合に限ってメッセージを安全に送信できる。機密性とは、メッセージの内容が送信中に第三者に取得されないという意味である。完全性とは、受信したメッセージ内容が送信者から送信されたメッセージ内容と一致している、すなわちメッセージ内容が改竄されていないことをメッセージ受信者が確認できなければならないことを意味する。ソース認証とは、メッセージが実際に予定通りの送信者によって送信されたことをメッセージ受信者が認証できなければならないという意味である。
ネットワーク通信において、セキュア通信の機構としては通常、対称暗号化/復号化方法が用いられる。送信者および受信者は、鍵に関して事前に合意に達しており、その後で送信者は、鍵および対称暗号化アルゴリズムを用いて送信予定のメッセージを暗号化して暗号化ファイルにする。暗号化ファイルを受信した後、受信者は、同じ鍵と対称暗号化アルゴリズムに対応している対称復号化アルゴリズムとを用いて暗号化ファイルを復号化して、以前に送信者から送信されたメッセージを得る。
送信者が暗号化するメッセージのデータサイズは、対称暗号化アルゴリズムが処理できる1ブロックよりも大きく、ブロック演算モードを一緒に採用しなければならない。ブロック演算モードは、個々のメッセージブロックを安全に接続していくつかのメッセージブロックが暴露されるまたは新たに攻撃されるのを防護するために採用される。暗号ブロック連鎖(CBC)モードとはブロック演算モードの1つであり、同モードの暗号化機構および復号化機構をそれぞれ図1Aおよび図1Bに示している。
図1Aに示したように、CBCモードの暗号化機構は、送信予定の電子ファイルMを同一サイズの複数のメッセージブロックm,m,m,m,……,mに分割し、メッセージブロックm,m,m,m,……,mの各々に個々に暗号化を実施するようになっている。
具体的には、メッセージブロックの第1のブロック(すなわちメッセージブロックm)に対して、暗号化機構はまず、メッセージブロックmおよび初期ベクトルIVに対して排他的論理和(XOR)演算を実施し、次に対称暗号化アルゴリズムおよび鍵Kを用いてXOR演算の結果に対して暗号化演算Eを実施して、メッセージブロックmに対応する暗号化ブロックcを生成する。その他の各々のメッセージブロック(すなわちメッセージブロックm,m,m,……,m)に対して、暗号化機構はまず、そのメッセージブロックと、そのメッセージブロックの1つ前のメッセージブロックに対応する暗号化ブロック(すなわち暗号化ブロックc,c,c,c,……,ct−1)とに対してXOR演算を実施し、次に対称暗号化アルゴリズムおよび同じ鍵Kを用いてXOR演算の結果に対して暗号化演算Eを実施して、暗号化ブロック(すなわち暗号化ブロックc,c,c,……,c)を生成する。
最後に、暗号化機構は、暗号化ブロックc,c,c,……,cを連結して電子暗号化ファイルCを生成する。
図1Bに示したように、CBCモードの復号化機構は、受信した電子暗号化ファイルCを同一サイズの複数の暗号化ブロックc,c,c,c,……,cに分割し、各々の暗号化ブロックc,c,c,c,……,cに対して個々に復号化を実施する。
具体的には、暗号化ブロックの第1のブロック(すなわち暗号化ブロックc)に対して、復号化機構はまず、対称暗号化アルゴリズムに対応する対称復号化アルゴリズムおよび同じ鍵Kを用いて復号化演算Dを実施し、次に、復号化結果および初期ベクトルIVに対してXOR演算を実施して、暗号化ブロックcに対応するメッセージブロックmを生成する。その他の各々の暗号化ブロック(すなわち暗号化ブロックc,c,c,……,c)に対して、復号化機構は同じく、まず対称復号化アルゴリズムおよび同じ鍵Kを用いて復号化演算Dを実施し、次に復号化結果と、その暗号化ブロックの1つ前の暗号化ブロック(すなわち暗号化ブロックc,c,c,c,……,ct−1)に対してXOR演算を実施して、メッセージブロック(すなわちメッセージブロックm,m,m,……,m)を生成する。
最後に、復号化機構は、メッセージブロックm,m,m,……,mを連結して電子ファイルMを生成する。
対称暗号化/復号化アルゴリズムは、前述の機密性の要件を満たすことができるが、完全性の要件を満たすことはできない。具体的には、電子暗号化ファイルが攻撃者によって改竄されたとしても、受信者は、そのファイルを受信した後に、改竄された電子暗号化ファイルに対して依然として復号化演算を実施することができる。
例えば、前述の(暗号化ブロックc,c,c,……,cを含む)電子暗号化ファイルCが攻撃者によって改竄されて(暗号化ブロックc’,c,c,……,cを含む)電子暗号化ファイルC’になった場合、受信者は、図1Cに示したように、依然として電子暗号化ファイルC’を復号化して(メッセージブロックm’,m’,m,m,……,mを含む)電子ファイルM’にすることができる。しかし、ほとんどの場合、受信者は、復号化によって得られたメッセージ(例えば電子ファイルM’)が本物であるかどうかを判断できない。特に、送信者から送信されるであろうメッセージがプログラムであるか、あるいはサーバまたは人間が認識できないメッセージである場合、受信者は、改竄された電子暗号化ファイルを復号化して得られたメッセージの異常に気づくことができない。
完全性に対する安全要件を達成できなければ、その結果としてソース認証を満たすことはできない。具体的には、攻撃者は、任意の乱数を電子暗号化ファイルとして選択し、送信者の役割を演じることによってその乱数を受信者に送信する可能性がある。受信者は、鍵および対称復号化アルゴリズムを用いて、受信した電子暗号化ファイル(すなわち攻撃者が選択した乱数)を復号化して平文にするであろう。
受信者は、受信した電子暗号化ファイルおよび復号化して得られた平文の何らかの異常に気づくことができない。なぜなら、受信者は完全性検証を実施できないからである。その主な理由は、鍵を送信者と受信者との両方が所有しており、そのために受信者は、実際には電子暗号化ファイルが攻撃者から送信されていても、復号化して得られた平文を送信者から送信されたものと考えるからである。このことからわかるように、完全性の要件を対称暗号化/復号化アルゴリズムで満たすことができない場合は、ソースを認証することができない。
前述の問題に対する解決策として、複数の方法を採用できる。例えば、セキュアソケットレイヤー(SSL)/トランスポート層セキュリティ(TLS)機構を採用して送信を実施する解決策を図1Dに示している。
送信者および受信者は、2つの鍵KおよびKについて事前に合意に達している。送信者が電子ファイルMを受信者に送信したいとき、送信者はまず、鍵Kを用いて電子ファイルMに対してメッセージ認証コード(MAC)演算MACを実施してメッセージ認証コードzを生成する。次に、送信者は、電子ファイルMとメッセージ認証コードzとを連結し、対称暗号化アルゴリズムおよび鍵Kを用いて連結結果に対して暗号化演算Eを実施して電子暗号化ファイルCを生成する。電子暗号化ファイルCを受信した後、受信者はまず、対称復号化アルゴリズムおよび鍵Kを用いて復号化演算Dを実施し、電子ファイルMおよびメッセージ認証コードzを得る。次に、受信者は、鍵Kを用いて電子ファイルMに対してメッセージ認証コード演算MACを実施してメッセージ認証コードzを生成する。その後、受信者は、復号化して得られたメッセージ認証コードzおよびメッセージ認証コードzに対して比較演算CMPを実施する。
比較演算CMPの結果が、メッセージ認証コードzがメッセージ認証コードzと同じであるという結果であれば、電子ファイルMは通信中に改竄されず、送信者から送信された電子ファイルMの内容と一致していることを示している。しかし、比較演算CMPの結果が、メッセージ認証コードzがメッセージ認証コードzと異なるという結果であれば、復号化して得られた電子ファイルMは通信中に改竄されたことを示している。
前述のSSL/TLS機構に採用されている「MAC−then−encrypt」方法は、機密性、完全性およびソース認証という3つの基本的な安全要件を同時に満たすことができるものである。なぜなら、2つの鍵KおよびKについて事前に合意に達しているからである。
先行技術では、メッセージ認証コードを計算する複数の方法を利用できる。一般的な方法は、ハッシュ関数によって作成した鍵付きハッシュメッセージ認証コード(HMAC)を使用することである。もう1つの方法は、CBCモードと合わせて暗号ブロック連鎖メッセージ認証コードを使用することである(CBC−MAC)。HMACの計算効率は、採用したハッシュ関数によって算出される。安全要件を満たすために通常採用されるハッシュアルゴリズムは、SHA−1、SHA−2などである。しかし、これらの比較的複雑なハッシュアルゴリズムの計算効率は、高度共通暗号化方式(AES)の計算効率に極めて近い。
一方、CBC−MACに関しては、暗号化ファイルの最終ブロックのみが出力として使用されるが、全体の入力データは、計算プロセスの過程で1回暗号化される。換言すれば、CBC−MACの計算効率は、採用されるブロック暗号化アルゴリズムの計算効率に等しい。
したがって、MAC−then−encrypt方法を採用する場合、かかる計算時間は、メッセージ認証コードを採用していない場合にかかる時間の2倍である。
メッセージ認証コードを計算するには余分な時間がかかる。暗号化するメッセージのデータサイズが非常に大きい場合、かかる2倍の時間は、一般的な用途に対しては依然として無視できない重荷である。したがって、時間的なコストを削減できるとともに、機密性、完全性およびソース認証という基本的な安全要件を満たすことのできる解決策を提供するという喫緊の必要性が存在する。
前述の問題を解決するために、本発明は、いくつかの実施形態において、完全性検証を含むブロック暗号化方法およびブロック復号化方法を提供する。
本発明の特定の実施形態のブロック暗号化方法は、コンピュータによって実装される。本ブロック暗号化方法は、以下のステップを含む。(a)第1のベクトルおよび第2のベクトルを得るステップ、(b)電子ファイルを複数の暗号化ブロックに分割するステップであって、暗号化ブロックがシーケンスを有するステップ、および(c)検査ベクトルをメッセージブロックの最後のブロックとしてメッセージブロックに加算するステップ。
本ブロック暗号化方法はさらに、各々のメッセージブロックに対してシーケンスに合わせて以下の演算を実施するステップ(d)を含む。(d1)入力ブロックを生成するステップであって、入力ブロックの値が、そのメッセージブロックと、そのメッセージブロックの1つ前のメッセージブロックに対応する出力ブロックと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとに対して排他的論理和(XOR)演算を実施して得られた値に等しいステップ、(d2)鍵を用いて入力ブロックを暗号化して出力ブロックを得るステップ、および(d3)出力ブロックと、そのメッセージブロックの1つ前のメッセージブロックとに対してXOR演算を実施して暗号化ブロックを得るステップ。
ステップ(d)がメッセージブロックの第1のブロックを処理するとき、メッセージブロックの1つ前のメッセージブロックに対応する出力ブロックは第1のベクトルで、メッセージブロックの1つ前のメッセージブロックの前のメッセージブロックはオールゼロベクトルであり、ステップ(d)がメッセージブロックの第2のブロックを処理するとき、メッセージブロックの1つ前のメッセージブロックの前のメッセージブロックは第2のベクトルである。
本ブロック暗号化方法はさらに、暗号化ブロックをシーケンスに合わせて連結して電子暗号化ファイルを生成するステップ(e)を含む。
本発明の特定の実施形態のブロック復号化方法は、コンピュータによって実装される。本ブロック復号化方法は、以下のステップを含む。(a)第1のベクトルおよび第2のベクトルを得るステップ、および(b)電子暗号化ファイルを複数の暗号化ブロックに分割するステップであって、暗号化ブロックがシーケンスを有するステップ。
本ブロック復号化方法はさらに、各々の暗号化ブロックに対してシーケンスに合わせて以下の演算を実施するステップ(c)を含む。(c1)入力ブロックを生成するステップであって、入力ブロックの値が、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しいステップ、(c2)鍵を用いて入力ブロックを復号化して出力ブロックを得るステップ、および(c3)メッセージブロックを生成するステップであって、メッセージブロックの値が、出力ブロックと、暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しいステップ。
ステップ(c)が暗号化ブロックの第1のブロックを処理するとき、暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックは第2のベクトルであり、暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックはオールゼロベクトルであり、ステップ(c)が暗号化ブロックの第2のブロックを処理するとき、暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックは第1のベクトルである。
本ブロック復号化方法はさらに、以下のステップを含む。(d)メッセージブロックの最後のブロックを検査ベクトルと比較するステップ、および(e)メッセージブロックの最後のブロックが検査ベクトルと同じとき、メッセージブロックの最後のブロックを排除したメッセージブロックをシーケンスに合わせて連結して復号化ファイルを生成するステップ。
本発明の特定の実施形態のもう1つのブロック復号化方法は、コンピュータによって実装される。本ブロック復号化方法は、以下のステップを含む。(a)第1のベクトルおよび第2のベクトルを得るステップ、(b)電子暗号化ファイルを複数の暗号化ブロックに分割するステップであって、暗号化ブロックがシーケンスを有し、暗号化ブロックの最後のブロックが基準ベクトルであるステップ、(c)暗号化ブロックの最後のブロックを排除するステップ、(d)ステップ(c)の後に暗号化ブロックを第2のシーケンスに合わせて再構成するステップであって、第2のシーケンスが第1のシーケンスの逆であるステップ、および(e)第1のベクトルを暗号化ブロックの最後のブロックとして暗号化ブロックに加算するステップ。
本ブロック復号化方法はさらに、各々の暗号化ブロックに対して第2のシーケンスに合わせて以下の演算を実施するステップ(f)を含む。(f1)入力ブロックを生成するステップであって、入力ブロックの値が、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しいステップ、(f2)鍵を用いて入力ブロックを暗号化して出力ブロックを得るステップ、および(f3)出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施することによってメッセージブロックを生成するステップ。
ステップ(f1)が暗号化ブロックの第1のブロックを処理するとき、暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックは検査ベクトルで、暗号化ブロックの1つ前のブロックの前の暗号化ブロックはオールゼロベクトルであり、ステップ(f1)が暗号化ブロックの第2のブロックを処理するとき、暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックは基準ベクトルである。
本ブロック復号化方法はさらに、以下のステップを含む。(g)メッセージブロックの最後のブロックを第2のベクトルと比較するステップ、および(h)メッセージブロックの最後のブロックが、メッセージブロックの最後のブロックを排除した第2のベクトルと同じ場合に、他のメッセージブロックを第2のシーケンスに合わせて連結して復号化ファイルを生成するステップ。
本発明の特定の実施形態のブロック暗号化方法は、電子ファイルに含まれる複数のメッセージブロックを、電子暗号化ファイルに含まれる複数の暗号化ブロックに複数レベルで結びつける。このように、電子暗号化ファイルの暗号化ブロックのうちのいずれか1つが改竄された(または誤って送信された)場合、復号化装置および復号化方法によって電子暗号化ファイルを復号化して得られたメッセージブロックの最後のブロックの内容は、偽である。
メッセージブロックの最後のブロックが何であるはずかがわかるため、本復号化方法は、電子暗号化ファイルの完全性が損なわれたことに気づくことができ、それによって電子暗号化ファイルを破棄できる。したがって、本発明によって開示した技術は、メッセージ認証コード演算を実施することなく暗号化および復号化を効果的に達成できる一方で、引き続き機密性、完全性およびソース認証という3つの基本的な安全要件を満たすものである。
主たる発明に実装されている詳細な技術および好適な実施形態については、当業者が特許請求対象である発明の特徴をよく理解するように、図面を添付して以下の段落に記載している。
CBCモードでの暗号化機構を示す概略図である。 CBCモードでの復号化機構を示す概略図である。 CBCモードで改竄された電子暗号化ファイルの復号化結果を示す図である。 「MAC−then−encrypt」機構を示す概略図である。 本発明の第1および第2の実施形態によるアーキテクチャを示す概略図である。 本発明の第1の実施形態による暗号化演算を示す概略図である。 メッセージブロックmcvがどのように生成されるのかを示す概略図である。 本発明の第2の実施形態による暗号化演算を示す概略図である。 メッセージブロックmcvがどのように生成されるのかを示す概略図である。 本発明の第3の実施形態による暗号化演算を示す概略図である。 本発明の第4から第6の実施形態によるアーキテクチャを示す概略図である。 本発明の第4の実施形態による復号化演算を示す概略図である。 メッセージブロックmcvがどのように生成されるのかを示す概略図である。 本発明の第5の実施形態による復号化演算を示す概略図である。 メッセージブロックmcvがどのように生成されるのかを示す概略図である。 本発明の第6の実施形態による復号化演算を示す概略図である。 メッセージブロックmcvがどのように生成されるのかを示す概略図である。 本発明の第7の実施形態による復号化演算を示す概略図である。 本発明の第8の実施形態のフローチャートである。 本発明の第9の実施形態のフローチャートである。 本発明の第10の実施形態のフローチャートである。 本発明の第11の実施形態のフローチャートである。 本発明の第12の実施形態のフローチャートである。 本発明の第13の実施形態のフローチャートである。 本発明の第14の実施形態のフローチャートである。
以下の記載では、本発明によって提供される完全性検証を含むブロック暗号化装置、ブロック暗号化方法、ブロック復号化装置、およびブロック復号化方法について、本発明の例示的な実施形態を参照して説明していく。
しかし、これらの例示的な実施形態は、これらの実施形態に記載した任意の特別な例、実施形態、環境、用途または特定の実装に本発明を限定しようとするものではない。したがって、これらの例示的な実施形態についての記載は、本発明を限定するのではなく説明することのみを目的としている。
以下の実施形態および添付の図面においては、本発明と無関係の要素を描写から省略している。
まず図1Cを参照されたい。先行技術では、電子暗号化ファイルCの暗号化ブロックcが改竄されて(あるいは誤って送信されて)暗号化ブロックc’になった場合、受信者が電子暗号化ファイルC’を復号化して得られる電子ファイルM’に含まれているメッセージブロックm’およびm’は、偽である。一般的なブロック暗号化の用途では、復号化して得られたメッセージブロックが偽であるということは、完全性は損なわれ、理論的には復号化して得られたメッセージは許容できないものであることを示している。通常の技術では、エラーの拡散が小さいほど、ブロック暗号化に基づく暗号化方法でストリーム暗号化を行うのがさらに有利になる。
本発明では、新規なブロック演算モードを採用して、エラー拡散による影響を最大にするとともに、元のブロック演算モードの特徴を依然として維持する。この新規なブロック演算モード下では、電子暗号化ファイルが改竄されて(あるいは誤って送信されて)いれば、復号化して得られたメッセージブロックのうち最後のブロックは偽になる。
このように、受信者が、メッセージブロックの最後のブロックが何になるはずかを事前に知っていれば、受信者は、電子暗号化ファイルの完全性が損なわれたことに気づくことができ、それによって電子暗号化ファイルを破棄できる。
本発明の第1の実施形態は、ブロック暗号化装置2であり、この装置のアーキテクチャを示した概略図を図2Aに示し、この装置の暗号化演算を示した概略図を図2Bに示している。ブロック暗号化装置2は、記憶部21および処理部23を備え、両者は互いに電気的に接続している。
記憶部21は、メモリ、フロッピー(登録商標)ディスク、ハードディスク、コンパクトディスク(CD)、モバイルディスク、磁気テープ、データベース、または同一機能を有し当業者に公知のその他の任意の記録媒体もしくは回路であってよい。処理部23は、様々なプロセッサ、中央処理装置(CPU)、マイクロプロセッサまたは当業者に公知のその他の計算装置のいずれであってもよい。
記憶部21は、鍵Kおよびメッセージブロックmcvとともに記憶される。メッセージブロックmcvは、検査ベクトルとして使用される。処理部23は、第1のベクトルIVおよび第2のベクトルIVを得る。処理部23は、暗号化する電子ファイルMをまず複数のメッセージブロックm,m,m,m,……,mt−1に分割する。メッセージブロックm,m,m,m,……,mt−1は、シーケンスを有する(すなわちメッセージブロックm,m,m,m,……,mt−1の順序になっている)。電子ファイルMは、記憶部21に記憶されてもよい。
このほか、ブロック暗号化装置2にさらに入力インターフェースが備わっている場合は、電子ファイルMは、入力インターフェースによって外部から受信されてよい。
このほか、処理部23は、これらのメッセージブロックの中にメッセージブロックmcvをメッセージブロックの最後のブロックとして加算する。換言すれば、処理部23は、メッセージブロックm,m,m,m,……,mt−1,mcvを順に処理していく。
次に、処理部23は、各々のメッセージブロックm,m,m,m,……,mt−1,mcvに対してシーケンスに合わせて以下の演算を実施する。入力ブロックを生成する演算、鍵を用いて入力ブロックを暗号化して出力ブロックを得る演算、および出力ブロックと、メッセージブロックの1つ前のメッセージブロックとに対して排他的論理和(XOR)演算を実施して暗号化ブロックを得る演算。
各々のメッセージブロックm,m,m,m,……,mt−1,mcvを処理する場合、入力ブロックの値は、メッセージブロックと、そのメッセージブロックの前段メッセージブロックに対応する出力ブロックと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとに対してXOR演算を実施して得られる値に等しく、以下の式(1)で表されるとおりである。
Figure 0005855696
上式(1)において、変数iは処理されているメッセージブロックのシリアル番号を表し、I[i]はi番目の入力ブロックを表し、O[i−1]はi−1番目の出力ブロックを表し、m[i]はi番目のメッセージブロックを表し、m[i−2]はi−2番目のメッセージブロックを表し、記号
Figure 0005855696
はXOR演算を表している。
メッセージブロックの第1のブロック(すなわちメッセージブロックm)が処理部23で処理されるとき、メッセージブロックmの1つ前のメッセージブロックに対応する出力ブロックは、第1のベクトルIV(すなわちO[0]の値は第1のベクトルIVの値に等しい)であり、メッセージブロックmの1つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトル(すなわちm[−1]=0)である。
メッセージブロックの第2のブロック(すなわちメッセージブロックm)が処理部23で処理されるとき、メッセージブロックmの1つ前のメッセージブロックの前のメッセージブロックは、第2のベクトルIVである(すなわちm[0]の値は第2のベクトルIVの値に等しい)。
この実施形態では、処理部23は、メッセージブロックと、そのメッセージブロックの1つ前のメッセージブロックに対応する暗号化ブロックとに対してXOR演算を実施して入力ブロックを生成する。これは、以下の式(2)で表され、式中c[i−1]はi−1番目の暗号化ブロックを表す。
Figure 0005855696
次に、各々の入力ブロック、出力ブロックおよび暗号化ブロックがどのように生成されるのかについてさらに詳述していく。具体的には、メッセージブロックの第1のブロック(すなわちメッセージブロックm)の場合、処理部23はまず、メッセージブロックmと1つ前のメッセージブロックに対応する暗号化ブロックとに対してXOR演算を実施して入力ブロックIを得る。
処理部23は、第1のベクトルIVの値をメッセージブロックmの1つ前のメッセージブロックに対応する暗号化ブロックの値とみなす。次に、処理部23は、鍵Kおよび対称暗号化アルゴリズムを用いて入力ブロックIに対して暗号化演算Eを実施して出力ブロックOを得る。その後、処理部23は、出力ブロックOとメッセージブロックmの1つ前のメッセージブロックとに対してXOR演算を実施して暗号化ブロックcを得る。
処理部23は、第2のベクトルIVの値をメッセージブロックmの1つ前のメッセージブロックの値とみなす。換言すれば、処理部23は、出力ブロックOおよび第2のベクトルIVに対してXOR演算を実施して暗号化ブロックcを得る。
その後、残りのメッセージブロック(すなわちメッセージブロックm,m,m,……,mcv)に関して、処理部23はまず、各々のメッセージブロックm,m,m,……,mcvと、そのメッセージブロックの1つ前のメッセージブロックに対応する暗号化ブロック(すなわち暗号化ブロックc,c,c,……,ct−1)とに対してそれぞれXOR演算を実施して入力ブロックI,I,I,……,Iを得、鍵Kおよび同じ対称暗号化アルゴリズムを用いて各々の入力ブロックI,I,I,……,Iに対して暗号化演算Eを実施して出力ブロックO、O、O,……Oをそれぞれ得、次に、各々の出力ブロックO,O,O,……Oおよびそのメッセージブロックの1つ前のメッセージブロック(すなわちメッセージブロックm,m,m,……,mt−1)に対してXOR演算を実施して暗号化ブロックc,c,c,……,cをそれぞれ得る。
その後、処理部23は、シーケンスに合わせて暗号化ブロックc,c,c,c,……,cを連結して電子暗号化ファイルCを生成する。ブロック暗号化装置2は、何らかの他の送信インターフェースを介して受信者に電子暗号化ファイルCを送信することができる。このほか、ブロック暗号化装置2にさらに送信インターフェースが備わっていれば、電子暗号化ファイルCはこの送信インターフェースを介して受信者に送信されてもよい。
他の実装では、ブロック暗号化装置2の記憶部21をメッセージブロックmcvと一緒に記憶できない。このような実装では、処理部23は、暗号化ブロックc,c,c,c,……,ct−1を得た後、かつメッセージブロックの最後のブロック(すなわちメッセージブロックmcv)を処理する前に、暗号化ブロックc,c,c,c,……,ct−1に対して演算Fを実施し、図2Cに示したように、その演算結果をメッセージブロックmcvとみなす。
例えば、処理部23は、暗号化ブロックc,c,c,c,……,ct−1に対してXOR演算を実施して仮ブロックを得た後、その仮ブロックに対して関数演算を実施してメッセージブロックmcvを得ることができる。前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算または復号化の点で事前に合意に達しているその他の任意の関数演算であってよい。
処理部23は、このような実装では暗号化ブロックc,c,c,c,……,ct−1を用いてメッセージブロックmcvを生成するため、最後の暗号化ブロックcを改竄している攻撃者が引き起こす攻撃を回避できる。
上記の説明からわかるように、暗号化ブロックc,c,c,……,ct−1をメッセージブロックm,m,m,……,mcvとそれぞれ結びつけた上で、ブロック暗号化装置2はさらに、メッセージブロックm,m,m,……,mt−1を暗号化ブロックc,c,c,……,cとそれぞれ結びつける。
したがって、電子暗号化ファイルCの暗号化ブロックc,c,c,c,……,cのうちの任意の1つが改竄されれば(または誤って送信されれば)、ブロック暗号化装置2と一緒に用いた復号化装置(これについてはこれ以降に詳述する)によって電子暗号化ファイルCを復号化して得られたメッセージブロックの最後のブロックは、偽である。
メッセージブロックの最後のブロックが何であるはずかもわかっているため、復号化装置は、電子暗号化ファイルCの完全性がそれに伴って損なわれたことに気づくことができ、それに伴い電子暗号化ファイルを破棄できる。また、ブロック暗号化装置2がさらに、暗号化ブロックc,c,c,c,……,ct−1を用いてメッセージブロックmcvを検査ベクトルとして生成すれば、暗号化ブロックの最後のブロックを改竄している攻撃者が引き起こす攻撃を回避できる。
このことからわかるように、この実施形態の技術を用いると、ブロック暗号化装置2は、メッセージ認証コード演算が実施されない場合に、機密性、完全性およびソース認証という3つの基本的な安全要件を満たすことができる。したがって、ブロック暗号化装置2は、この実施形態の技術を採用することによって、機密性、完全性およびソース認証という3つの基本的な安全要件を効果的に満たすことができる。
本発明の第2の実施形態を図2Aおよび図3Aに示している。図3Aは、暗号化演算を示した概略図である。第2の実施形態のほとんどの演算は、第1の実施形態の演算と同様であり、第2の実施形態と第1の実施形態との唯一の相違点について以下に詳述していく。
同じように、処理部23は、暗号化する電子ファイルMを複数のメッセージブロックm,m,m,m,……,mt−1に分割する。メッセージブロックm,m,m,m,……,mt−1は、シーケンスを有する(すなわちメッセージブロックm,m,m,m,……,mt−1の順序になっている)。このほか、処理部23は、メッセージブロックmcvもメッセージブロックに加算する。換言すれば、処理部23は、メッセージブロックm,m,m,m,……,mt−1,mcvを順に処理していく。
次に、処理部23は、各々のメッセージブロックm,m,m,m,……,mt−1,mcvに対してシーケンスに合わせて以下の演算を実施する。
入力ブロックを生成する演算、鍵を用いて入力ブロックを暗号化して出力ブロックを得る演算、および出力ブロックとメッセージブロックの1つ前のメッセージブロックとに対してXOR演算を実施して暗号化ブロックを得る演算。各々のメッセージブロックm,m,m,m,……,mt−1,mcvを処理するとき、入力ブロックの値は、メッセージブロックと、そのメッセージブロックの前段メッセージブロックに対応する出力ブロックと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとに対してXOR演算を実施して得られる値に等しく、この演算は前述の式(1)で表される。
この実施形態では、処理部23は、各々のメッセージブロックに対して以下の演算を実施して入力ブロックを生成する。
メッセージブロックと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとに対してXOR演算を実施して仮ブロックを得る演算、および仮ブロックと、そのメッセージブロックの1つ前のメッセージブロックに対応する出力ブロックとに対してXOR演算を実施して入力ブロックを得る演算。メッセージブロックの第1のブロック(すなわちメッセージブロックm)が処理部23で処理されるとき、メッセージブロックmの1つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトル(すなわちm[−1]=0)であり、メッセージブロックmの1つ前のメッセージブロックに対応する出力ブロックは、第1のベクトルIVである(すなわちO[0]の値は第1のベクトルIVの値に等しい)。
メッセージブロックの第2のブロック(すなわちメッセージブロックm)が処理部23で処理されるとき、メッセージブロックの1つ前のメッセージブロックの前のメッセージブロックmは、第2のベクトルIVである(すなわちm[0]の値は第2のベクトルIVの値に等しい)。
次に、各々の入力ブロック、出力ブロックおよび暗号化ブロックがどのように生成されるのかについてさらに詳述していく。まず、処理部23がメッセージブロックの第1のブロック(すなわちメッセージブロックm)をどのように処理するのかについて説明していく。処理部23はまず、メッセージブロックmと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとに対してXOR演算を実施して仮ブロックtを得る。
処理部23は、オールゼロベクトルをそのメッセージブロックmの1つ前のメッセージブロックの前のメッセージブロックの値とみなす。次に、処理部23は、仮ブロックtと、およびそのメッセージブロックmの1つ前のメッセージブロックに対応する出力ブロックとに対してXOR演算を実施して入力ブロックIを得る。処理部23は、第1のベクトルIVの値をそのメッセージブロックmの1つ前のメッセージブロックに対応する出力ブロックの値とみなす。その後、処理部23は、鍵Kおよび対称暗号化アルゴリズムを用いて入力ブロックIを暗号化して出力ブロックOを得る。次に、処理部23は、出力ブロックOと、メッセージブロックmの1つ前のメッセージブロックとに対してXOR演算を実施して暗号化ブロックcを得る。
処理部23は、第2のベクトルIVをメッセージブロックmの1つ前のメッセージブロックとみなす。換言すれば、処理部23は、出力ブロックOと第2のベクトルIVとに対してXOR演算を実施して暗号化ブロックcを得る。
残りのメッセージブロック(すなわちメッセージブロックm,m,m,……,mcv)に関して、処理部23は、同じくまず、各々のメッセージブロックm,m,m,……,mcvと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとにそれぞれXOR演算を実施して仮ブロックt,t,t,……,tを得る。
全メッセージブロックの第2のブロック(すなわちメッセージブロックm)が処理部23で処理されるとき、第2のベクトルIVの値は、そのメッセージブロックmの1つ前のメッセージブロックの前のメッセージブロックの値とみなされる。次に、処理部23は、各々の仮ブロックt,t,t,……,tと、そのメッセージブロックの1つ前のメッセージブロックに対応する出力ブロックとにXOR演算をそれぞれ実施して入力ブロックI,I,I,……,Iを得る。
次に、処理部23は、鍵Kおよび対称暗号化アルゴリズムをそれぞれ用いて各々の入力ブロックI,I,I,……,Iを暗号化して出力ブロックO,O,O,……,Oを得る。その後、処理部23は、各々の出力ブロックO,O,O,……,Oと、そのメッセージブロックの1つ前のメッセージブロックm,m,m,……,mt−1とにそれぞれXOR演算を実施して暗号化ブロックc,c,c,……,cを得る。
その後、処理部23は、シーケンスに合わせて暗号化ブロックc,c,c,c,……,cを連結して電子暗号化ファイルCを生成する。ブロック暗号化装置2は、何らかの他の送信インターフェースを介して受信者に電子暗号化ファイルCを送信することができる。このほか、ブロック暗号化装置2にさらに送信インターフェースが備わっていれば、電子暗号化ファイルCはこの送信インターフェースを介して受信者に送信されてもよい。
また、他の実装では、ブロック暗号化装置2の記憶部21をメッセージブロックmcvと一緒に記憶できない。このような実装では、処理部23は、暗号化ブロックc,c,c,c,……,ct−1を得た後、かつメッセージブロックの最後のブロック(すなわちメッセージブロックmcv)を処理する前に、暗号化ブロックc,c,c,c,……,ct−1に対して演算Fを実施し、図3Bに示したように、その演算結果をメッセージブロックmcvとみなす。
例えば、処理部23は、暗号化ブロックc,c,c,c,……,ct−1に対してXOR演算を実施して仮ブロックを得た後、その仮ブロックに対して関数演算を実施してメッセージブロックmcvを得ることができる。前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算または復号化の点で事前に合意に達しているその他の任意の関数演算であってよい。
この実施形態は、入力ブロックI,I,I,I,……,Iがどのように生成されるかという点のみ第1の実施形態と異なっている。したがって、この実施形態は依然として、メッセージブロックm,m,m,……,mt−1を暗号化ブロックc,c,c,……,cにそれぞれ結びつけるとともに、暗号化ブロックc,c,c,……,ct−1をメッセージブロックm,m,m,……,mcvにそれぞれ結びつける。そのため、この実施形態で開示した暗号化技術は、電子暗号化ファイルCを効果的に生成できる一方で、引き続き機密性、完全性およびソース認証という3つの基本的な安全要件を同時に満たすものである。
本発明の第3の実施形態は、図2Aおよび図3Cに示したようなブロック暗号化装置2である。図3Cは、暗号化演算を示した概略図である。第3の実施形態の演算原理は第2の実施形態の演算原理と同様だが、第2の実施形態のいくつかの演算は、この実施形態の普通の暗号ブロック連鎖(CBC)装置30によって実行される。第3の実施形態と第2の実施形態との唯一の相違点について以下に詳述していく。
この実施形態では、処理部23は、各々のメッセージブロックm,m,m,……,mt−1,mcvと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとにそれぞれXOR演算を実施して複数の仮ブロックt,t,t,t,……,tを得る。
メッセージブロックの第1のブロック(すなわちメッセージブロックm)が処理部23で処理されるとき、メッセージブロックmの1つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトル(すなわちm[−1]=0)である。メッセージブロックの第2のブロック(すなわちメッセージブロックm)が処理部23で処理されるとき、メッセージブロックmの1つ前のメッセージブロックの前のメッセージブロックは、第2のベクトルIVである。
次に、処理部23は、鍵K、第1のベクトルIVおよびCBC装置30を用いて仮ブロックt,t,t,t,……,tを暗号化して複数の出力ブロックO,O,O,O,……,Oにする。CBC装置30は、図1Aに示したように動作する。最後に、処理部23は、各々の出力ブロックO,O,O,O,……,Oと、そのメッセージブロックの1つ前のメッセージブロックとにそれぞれXOR演算を実施して暗号化ブロックc,c,c,……,ct−1,cを得る。
出力ブロックOが処理されるとき、処理部23は、第2のベクトルIVを出力ブロックOの1つ前のメッセージブロックとみなす。換言すれば、処理部23は、出力ブロックOと、第2のベクトルIVとに対してXOR演算を実施して暗号化ブロックcを得て、各々の出力ブロックO,O,O,……,Oと、メッセージブロックm,m,m,……,mt−1とに対してそれぞれXOR演算を実施して暗号化ブロックc,c,……,ct−1,cを得る。
上記の説明からわかるように、この実施形態のメッセージブロックm,m,m,……,mt−1,mcvに対して単純なXOR演算を実施した後に、普通のCBC装置30を用いて暗号化を実施でき、CBC装置30が生成した出力ブロックO,O,O,O,……,Oに対して単純なXOR演算を実施した後に、暗号化ブロックc,c,c,……,ct−1,cを生成できる。換言すれば、ブロック暗号化装置2をCBC装置30と一緒に用いる場合は、本発明の技術を実装できる。
本発明の第4の実施形態はブロック復号化装置4であり、この装置のアーキテクチャを示した概略図を図4Aに示し、この装置の復号化演算を示した概略図を図4Bに示している。ブロック復号化装置4は、第1の実施形態から第3の実施形態のブロック暗号化装置2と一緒に用いられてよい。換言すれば、ブロック復号化装置4は、ブロック暗号化装置2が暗号化した電子暗号化ファイルCを復号化できる。
ブロック復号化装置4は、記憶部41および処理部43を備え、両者は互いに電気的に接続している。記憶部41は、鍵Kおよびメッセージブロックmcvとともに記憶され、メッセージブロックのコンテンツは、ブロック暗号化装置2内のコンテンツと同じである。メッセージブロックmcvは、検査ベクトルとして用いられる。
記憶部41は、メモリ、フロッピーディスク、ハードディスク、コンパクトディスク(CD)、モバイルディスク、磁気テープ、データベース、同一機能を有し当業者に公知のその他の任意の記録媒体もしくは回路であってよい。処理部43は、様々なプロセッサ、中央処理装置(CPU)、マイクロプロセッサまたは当業者に公知のその他の計算装置のいずれであってもよい。
処理部43は、第1のベクトルIVおよび第2のベクトルIVを得る。処理部43で得られた第1のベクトルIVおよび第2のベクトルIVは、電子暗号化ファイルCを暗号化するために暗号化装置2によって用いられた第1のベクトルIVおよび第2のベクトルIVと同じである。
処理部43はまず、復号化する電子暗号化ファイルCを複数の暗号化ブロックc,c,c,c,……,cに分割する。暗号化ブロックc,c,c,c,……,cはシーケンスを有する(すなわち暗号化ブロックc,c,c,c,……,cの順序になっている)。電子暗号化ファイルCは、記憶部41に記憶されてよい。このほか、ブロック復号化装置4にさらに入力インターフェースが備わっている場合には、電子暗号化ファイルCは、入力インターフェースを介して送信者から受信されてよい。
次に、処理部43は、各々の暗号化ブロックc,c,c,c,……,cに対してシーケンスに合わせて以下の演算を実施する。
入力ブロックを生成する演算、鍵Kを用いて入力ブロックを復号化して出力ブロックを得る演算、およびメッセージブロックを生成する演算。各々の暗号化ブロックc,c,c,c,……,cが処理部43で処理されるとき、各入力ブロックの値は、処理されている暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックとに対してXOR演算を実施して得られた値と等しく、メッセージブロックの値は、処理されている暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい。具体的には、各々の前述の入力ブロックを、以下の式(3)に従って表すことができる。
Figure 0005855696
上式(3)において、変数iは処理されている暗号化ブロックのシリアル番号を表し、i[i]はi番目の入力ブロックを表し、o[i−1]はi−1番目の出力ブロックを表し、c[i]はi番目の暗号化ブロックを表し、c[i−2]i−2番目の暗号化ブロックを表し、記号
Figure 0005855696
はXOR演算を表している。
暗号化ブロックの第1のブロック(すなわち暗号化ブロックc)が処理部43で処理されるとき、その暗号化ブロックcの1つ前の暗号化ブロックに対応する出力ブロックは、第2のベクトルIVであり(すなわちo[0]の値は第2のベクトルIVの値に等しい)、その暗号化ブロックcの1つ前の暗号化ブロックの前の暗号化ブロックはオールゼロベクトル(すなわちc[−1]=0)である。
暗号化ブロックの第2のブロック(すなわち暗号化ブロックc)が処理部43で処理されるとき、その暗号化ブロックcの1つ前の暗号化ブロックの前の暗号化ブロックは、第1のベクトルIVである(すなわちc[0]の値は第1のベクトルIVの値に等しい)。
この実施形態では、処理部43は、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応するメッセージブロックとに対してXOR演算を実施して入力ブロックを生成する。これは、以下の式(4)で表され、式中m[i−1]はi−1番目のメッセージブロックを表す。
Figure 0005855696
また、この実施形態では、処理部43は、出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施してメッセージブロックを生成し、以下の式(5)で表されるとおりである。
Figure 0005855696
次に、各々の入力ブロック、出力ブロックおよびメッセージブロックがどのように生成されるのかについてさらに詳述していく。まず、処理部43が暗号化ブロックの第1のブロック(すなわち暗号化ブロックc)をどのように処理するのかについて説明していく。
処理部43はまず、暗号化ブロックcと、その暗号化ブロックcの1つ前の暗号化ブロックに対応するメッセージブロックとに対してXOR演算を実施して入力ブロックiを得る。処理部43は、第2のベクトルIVを暗号化ブロックcの1つ前の暗号化ブロックに対応するメッセージブロックの値とみなす。換言すれば、処理部43は、暗号化ブロックcと第2のベクトルIVとに対してXOR演算を実施して入力ブロックiを得る。次に、処理部43は、鍵Kとブロック暗号化装置2によって用いられた対称暗号化アルゴリズムに対応する対称復号化アルゴリズムとを用いて入力ブロックiに対して復号化演算Dを実施して、出力ブロックoを得る。その後、処理部43は、出力ブロックoと、暗号化ブロックcの1つ前の暗号化ブロックとに対してXOR演算を実施してメッセージブロックmを得る。
処理部43は、第1のベクトルIVの値を暗号化ブロックcの1つ前の暗号化ブロックの値とみなす。換言すれば、処理部43は、出力ブロックoと第1のベクトルIVとに対してXOR演算を実施してメッセージブロックmを得る。
その後、残りの暗号化ブロック(すなわち暗号化ブロックc,c,c,……,c)に関して、処理部43は、同じくまず、各々の暗号化ブロックc,c,c,……,cと、その暗号化ブロックの1つ前の暗号化ブロックに対応するメッセージブロック(すなわちメッセージブロックm,m,m,m,……,mt−1)とにそれぞれXOR演算を実施して入力ブロックi,i,i,……,iを得、鍵Kおよび対称復号化アルゴリズムをそれぞれ用いて各々の入力ブロックi,i,i,……,iに対して復号化演算Dを実施して出力ブロックo,o,o,……,oを得、次に、各々の出力ブロックo,o,o,……,oと、その暗号化ブロックの1つ前の暗号化ブロック(すなわちc,c,c,c,……,ct−1)とにそれぞれXOR演算を実施してメッセージブロックm,m,m,……,mを得る。
その後、処理部43は、メッセージブロックm,m,m,m,……,mの最後のブロック(すなわちメッセージブロックm)をメッセージブロックmcv(すなわち検査ベクトル)と比較する。メッセージブロックmがメッセージブロックmcvと同じであれば、電子暗号化ファイルCが検証に合格したことを示している。
処理部43は、メッセージブロックm,m,m,m,……,mの最後のブロック(すなわちメッセージブロックm)を排除し、メッセージブロックm,m,m,m,……,mt−1をシーケンスに合わせて連結して復号化ファイル(すなわち電子ファイルM)を生成する。メッセージブロックmがメッセージブロックmcvと異なっていれば、電子暗号化ファイルCが検証に不合格であることを示し、処理部43は電子暗号化ファイルCを破棄する。
他の実装では、ブロック暗号化装置2が暗号化処理中に暗号化ブロックc,c,c,c,……,ct−1に対して演算Fを実施し、その演算結果をメッセージブロックmcvとみなした場合、ブロック復号化装置4の処理部43は、それに応じて、図4Cに示したように、暗号化ブロックc,c,c,c,……,ct−1に対して同じ演算Fを実施して、メッセージブロックmcvを生成しなければならない。
例えば、ブロック暗号化装置2が暗号化ブロックc,c,c,c,……,ct−1に対してXOR演算を実施して仮ブロックを得て、その仮ブロックに対して関数演算を実施してメッセージブロックmcvをあらかじめ得る場合、ブロック復号化装置4の処理部43は、電子暗号化ファイルCを暗号化ブロックc,c,c,c,……,cに分割した後に、同じように暗号化ブロックc,c,c,c,……,ct−1に対して同じ演算を実施してメッセージブロックmcvを得なければならない。
前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算またはその他の任意の関数演算であってよい。暗号化する当事者および復号化する当事者は、同じ関数演算に関して事前に合意に達している必要がある。
上記の説明および図4Bおよび図4Cからわかるように、電子暗号化ファイルCの暗号化ブロックc,c,c,c,……,cのうちのいずれか1つが改竄されれば(または誤って送信されれば)、電子暗号化ファイルCを復号化して得られたメッセージブロックの最後のブロックは偽になる。
例えば、電子暗号化ファイルCの暗号化ブロックcが改竄されて(または誤って送信されて)暗号化ブロックc’になれば、復号化して得られたメッセージブロックm,m,m,……,mはすべて偽になる。したがって、ブロック復号化装置4は、メッセージブロックmをメッセージブロックmcvと比較することによって、電子暗号化ファイルCが改竄された(または誤って送信された)かどうかを判断できる。
本発明の第5の実施形態を図4Aおよび図5Aに示している。図5Aは、復号化演算を示した概略図である。この実施形態では、ブロック復号化装置4は、第1の実施形態から第3の実施形態のブロック暗号化装置2と一緒に用いられてもよい。換言すれば、この実施形態のブロック復号化装置4は、ブロック暗号化装置2が暗号化した電子暗号化ファイルCを復号化できる。
第5の実施形態のほとんどの演算は、第4の実施形態の演算と同様であり、第5の実施形態と第4の実施形態との唯一の相違点について以下に詳述する。
同じように、処理部43は、第1のベクトルIVおよび第2のベクトルIVを得る。処理部43で得られた第1のベクトルIVおよび第2のベクトルIVは、電子暗号化ファイルCを暗号化するために暗号化装置2によって用いられた第1のベクトルIVおよび第2のベクトルIVと同じである。このほか、処理部43は、復号化する電子暗号化ファイルCを複数の暗号化ブロックc,c,c,c,……,cに分割する。暗号化ブロックc,c,c,c,……,cはシーケンスを有する(すなわち暗号化ブロックc,c,c,c,……,cの順序になっている)。
次に、処理部43は、各々の暗号化ブロックc,c,c,c,……,cに対してシーケンスに合わせて以下の演算を実施する。入力ブロックを生成する演算、入力ブロック鍵を用いてを暗号化して出力ブロックを得る演算、およびメッセージブロックを生成する演算。入力ブロックの値は、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい。
メッセージブロックの値は、出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい。
この実施形態では、各々の暗号化ブロックc,c,c,c,……,cが処理されるとき、処理部43は、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応するメッセージブロックとに対してXOR演算を実施することによって入力ブロックを生成する。換言すれば、処理部43は、前述の式(4)に従って入力ブロックi,i,i,i,……,iを生成する。これは、第4の実施形態と同じであるため、ここではこれ以上説明しない。
出力ブロックは、この実施形態では異なる方法で生成される。具体的には、各々の暗号化ブロックc,c,c,c,……,cに関して、処理部43は、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックに対応しているメッセージブロックと、出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応している入力ブロックとに対して以下の式(6)で表されるとおりXOR演算を実施してメッセージブロックを生成する。
Figure 0005855696
暗号化ブロックの第1のブロック(すなわち暗号化ブロックc)が処理部43で処理されるとき、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックに対応しているメッセージブロックは、オールゼロベクトルであり、その暗号化ブロックの1つ前の暗号化ブロックに対応している入力ブロックは、第1のベクトルである。
また、暗号化ブロックの第2のブロック(すなわち暗号化ブロックc)が処理部43で処理されるとき、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックに対応しているメッセージブロックは、第2のベクトルである。
次に、各々の入力ブロック、出力ブロックおよびメッセージブロックがどのように生成されるのかについてさらに詳述していく。まず、処理部43が暗号化ブロックの第1のブロック(すなわち暗号化ブロックc)をどのように処理するのかについて説明する。
処理部43はまず、暗号化ブロックcと、その暗号化ブロックcの1つ前の暗号化ブロックに対応しているメッセージブロックとに対してXOR演算を実施して入力ブロックiを生成する。処理部43は、第2のベクトルIVをその暗号化ブロックcの1つ前の暗号化ブロックに対応しているメッセージブロックとみなす。換言すれば、処理部43は、暗号化ブロックcと第2のベクトルIVとに対してXOR演算を実施して入力ブロックiを生成する。次に、処理部43は、鍵Kとブロック暗号化装置2によって用いられた対称暗号化アルゴリズムに対応する対称復号化アルゴリズムとを用いて、入力ブロックiに対して復号化演算Dを実施して、出力ブロックoを得る。その後、処理部43は、出力ブロックoと、その暗号化ブロックcの1つ前の暗号化ブロックに対応する入力ブロックとに対してXOR演算を実施して仮ブロックtを得て、その後、仮ブロックtと、その暗号化ブロックcの1つ前の暗号化ブロックの前の暗号化ブロックに対応しているメッセージブロックとに対してXOR演算を実施してメッセージブロックmを得る。
処理部43は、第1のベクトルIVを暗号化ブロックcの1つ前の暗号化ブロックに対応する入力ブロックとみなし(すなわちi[0]の値は第1のベクトルIVの値に等しい)、フルゼロベクトルを暗号化ブロックcの1つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックとみなす(すなわちm[−1]の値はフルゼロベクトルの値に等しい)。換言すれば、処理部43は、出力ブロックoと第1のベクトルIVとに対してXOR演算を実施して仮ブロックtを得た後、仮ブロックtとフルゼロベクトルとに対してXOR演算を実施してメッセージブロックmを得る。
処理部43が暗号化ブロックの第2のブロック(すなわち暗号化ブロックc)をどのように処理するのかについて次に説明してく。処理部43はまず、暗号化ブロックcと、暗号化ブロックcの1つ前の暗号化ブロックに対応するメッセージブロック(すなわちメッセージブロックm)とに対してXOR演算を実施して入力ブロックiを得る。次に、処理部43は、鍵Kおよび同じ対称復号化アルゴリズムを用いて入力ブロックiに対して復号化演算Dを実施して出力ブロックoを得る。その後、処理部43は、出力ブロックoと、暗号化ブロックcの1つ前の暗号化ブロックに対応する入力ブロック(すなわち入力ブロックi)に対してXOR演算を実施して仮ブロックtを得た後、仮ブロックtと、暗号化ブロックcの1つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックとに対してXOR演算を実施してメッセージブロックmを得る。処理部43は、第2のベクトルIVを暗号化ブロックcの1つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックとみなす(すなわちm[0]の値は、第2のベクトルIVの値に等しい)。換言すれば、処理部43は、出力ブロックoと入力ブロックiとに対してXOR演算を実施して仮ブロックtを得た後、仮ブロックtと第2のベクトルIVとに対してXOR演算を実施してメッセージブロックmを得る。
その後、残りの暗号化ブロック(すなわち暗号化ブロックc,c,……,c)に関して、処理部43は、同じくまず、各々の暗号化ブロックc,c,……,cと、その暗号化ブロックの1つ前の暗号化ブロックに対応するメッセージブロック(すなわちメッセージブロックm,m,m,……,mt−1)とにそれぞれXOR演算を実施して入力ブロックi,i,……,iを得、鍵Kおよび対称復号化アルゴリズムを用いて各々の入力ブロックi,i,……,iに対して復号化演算Dを実施して出力ブロックo,o,……,oを得、各々の出力ブロックo,o,……,oと、その暗号化ブロックの1つ前の暗号化ブロックに対応する入力ブロック(すなわち入力ブロックi,i,……,it−1)とに対してそれぞれXOR演算を実施して仮ブロックt,t,……,tを得、次に、各々の仮ブロックt,t,……,tと、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロック(すなわちメッセージブロックm,m,……,mt−2)とにそれぞれXOR演算を実施してメッセージブロックm,m,……,mを得る。
その後、処理部43は、メッセージブロックm,m,m,m,……,mの最後のブロック(すなわちメッセージブロックm)をメッセージブロックmcv(すなわち検査ベクトル)と比較する。メッセージブロックmがメッセージブロックmcvと同じであれば、電子暗号化ファイルCが検証に合格したことを示している。
処理部43は、メッセージブロックm,m,m,m,……,mの最後のブロック(すなわちメッセージブロックm)を排除した後、メッセージブロックm,m,m,m,……,mt−1をシーケンスに合わせて連結して復号化ファイル(すなわち電子ファイルM)を生成する。メッセージブロックmがメッセージブロックmcvと異なっていれば、電子暗号化ファイルCが検証に不合格であることを示し、処理部43は電子暗号化ファイルCを破棄する。
他の実装では、ブロック暗号化装置2が暗号化処理中に暗号化ブロックc,c,c,c,……,ct−1に対して演算Fを実施し、その演算結果をメッセージブロックmcvとみなした場合、ブロック復号化装置4の処理部43は、それに応じて、図5Cに示したように同じ演算Fを用いて、メッセージブロックmcvを生成しなければならない。
例えば、ブロック暗号化装置2が暗号化ブロックc,c,c,c,……,ct−1に対してXOR演算を実施して仮ブロックを得て、その仮ブロックに対して関数演算を実施してメッセージブロックmcvをあらかじめ得る場合、ブロック復号化装置4の処理部43は、電子暗号化ファイルCを暗号化ブロックc,c,c,c,……,cに分割した後に、暗号化ブロックc,c,c,c,……,ct−1に対して同じ演算を実施してメッセージブロックmcvを得なければならない。
前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算またはその他の任意の関数演算であってよい。暗号化する当事者および復号化する当事者は、同じ関数演算に関して事前に合意に達している必要がある。
上記の説明および図5Aおよび図5Bからわかるように、電子暗号化ファイルCの暗号化ブロックc,c,c,c,……,cのうちのいずれか1つが改竄されれば(または誤って送信されれば)、電子暗号化ファイルCを復号化して得られたメッセージブロックの最後のブロックは偽になる。したがって、この実施形態で開示した技術を用いると、ブロック復号化装置4は、メッセージブロックmをメッセージブロックmcvと比較することによって、電子暗号化ファイルCが改竄された(または誤って送信された)かどうかを判断できる。
本発明の第6の実施形態を図4Aおよび図6Aに示している。図6Aは、この実施形態による復号化演算を示した概略図である。この実施形態では、ブロック復号化装置4は、第1の実施形態から第3の実施形態のブロック暗号化装置2と一緒に用いられてもよい。換言すれば、ブロック復号化装置4は、ブロック暗号化装置2が暗号化した電子暗号化ファイルCを復号化できる。
第6の実施形態のいくつかの演算は、第4の実施形態および第5の実施形態の演算と同様であり、第6の実施形態と第4および第5の実施形態との唯一の相違点について以下に詳述する。
同じように、処理部43は、第1のベクトルIVおよび第2のベクトルIVを得る。処理部43で得られた第1のベクトルIVおよび第2のベクトルIVは、電子暗号化ファイルCを暗号化するために暗号化装置2によって用いられた第1のベクトルIVおよび第2のベクトルIVと同じである。このほか、処理部43はまず、復号化する電子暗号化ファイルCを複数の暗号化ブロックc,c,c,c,……,cに分割する。暗号化ブロックc,c,c,c,……,cは第1のシーケンスを有する(すなわち暗号化ブロックc,c,c,c,……,cの順序になっている)。このほか、処理部43は、暗号化ブロックの最後のブロック(すなわち暗号化ブロックc)を基準ベクトルとみなす。
次に、処理部43は、暗号化ブロックc,c,c,c,……,cの最後のブロック(すなわち暗号化ブロックc)を排除する。その後、処理部43は、暗号化ブロックc,c,c,c,……,ct−1を、第1のシーケンスの逆である第2のシーケンスに合わせて暗号化ブロックct−1,ct−2,……,cに再構成する。その後、処理部43は、第1のベクトルIVを暗号化ブロックの最後のブロック(すなわち暗号化ブロックc)として暗号化ブロックct−1,ct−2,……,cに加算する。換言すれば、暗号化ブロックcは、まさに第1のベクトルIVである。
次に、処理部43は、各々の暗号化ブロックct−1,ct−2,……,c,cに対して第2のシーケンスに合わせて以下の演算を実施する。
入力ブロックを生成する演算、鍵を用いて入力ブロックを暗号化して出力ブロックを得る演算、および出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施してメッセージブロックを生成する演算。入力ブロックの値は、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しく、以下の式(7)で表されるとおりである。
Figure 0005855696
暗号化ブロックの第1のブロック(すなわち暗号化ブロックct−1)が処理部43で処理されるとき、暗号化ブロックct−1の1つ前の暗号化ブロックに対応する出力ブロックは、メッセージブロックmcvであり(すなわちo[0]の値は検査ベクトルであるメッセージブロックmcvの値に等しい)、暗号化ブロックct−1の1つ前の暗号化ブロックの前の暗号化ブロックは、オールゼロベクトルである(すなわちc[−1]の値はオールゼロベクトルの値に等しい)。
また、暗号化ブロックの第2のブロック(すなわち暗号化ブロックct−2)が処理部43で処理されるとき、暗号化ブロックct−2の1つ前の暗号化ブロックの前の暗号化ブロックは、暗号化ブロックcである(すなわちc[0]の値は基準ベクトルである暗号化ブロックcの値に等しい)。
この実施形態では、処理部43は、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応するメッセージブロックとに対してXOR演算を実施して入力ブロックを生成し、以下の式(8)で表されるとおりである。
Figure 0005855696
次に、各々の入力ブロック、出力ブロックおよびメッセージブロックがどのように生成されるのかについてさらに詳述する。まず、処理部43が暗号化ブロックの第1のブロック(すなわち暗号化ブロックct−1)をどのように処理するのかについて説明する。
処理部43はまず、暗号化ブロックct−1と、暗号化ブロックct−1の1つ前の暗号化ブロックに対応しているメッセージブロックとに対してXOR演算を実施して入力ブロックit−1を生成する。処理部43は、検査ベクトルであるメッセージブロックmcvを1つ前の暗号化ブロックに対応するメッセージブロックとみなす。換言すれば、処理部43は、暗号化ブロックct−1とメッセージブロックmcvとに対してXOR演算を実施して入力ブロックit−1を得る。次に、処理部43は、鍵Kとブロック暗号化装置2によって用いられた対称暗号化アルゴリズムとを用いて、入力ブロックit−1に対して暗号化演算Eを実施して、出力ブロックot−1を得る。その後、処理部43は、出力ブロックot−1と、その暗号化ブロックct−1の1つ前の暗号化ブロックとに対してXOR演算を実施してメッセージブロックmt−1を得る。
処理部43は、基準ベクトルである暗号化ブロックcをその暗号化ブロックct−1の1つ前の暗号化ブロックとみなす。換言すれば、処理部43は、出力ブロックot−1と暗号化ブロックcとに対してXOR演算を実施してメッセージブロックmt−1を得る。
次に、処理部43が残りの暗号化ブロック(すなわち暗号化ブロックct−2,……,c,c)をどのように処理するのかを説明する。
具体的には、処理部43はまず、各々の暗号化ブロックct−2,……,c,cと、その暗号化ブロックの1つ前の暗号化ブロックに対応するメッセージブロック(すなわちメッセージブロックmt−1,……,m,m)とに対してそれぞれXOR演算を実施して入力ブロックit−2,……,i,iを得、鍵Kおよび同じ対称暗号化アルゴリズムを用いて各々の入力ブロックit−2,……,i,iに対して暗号化演算Eを実施して出力ブロックot−2,……,o,oをそれぞれ得、次に、各々の出力ブロックot−2,……,o,oと、その暗号化ブロックの1つ前の暗号化ブロック(すなわち暗号化ブロックct−1,…,c,c)とにそれぞれXOR演算を実施してメッセージブロックmt−2,……,m,mを得る。
その後、処理部43は、メッセージブロックmt−1,mt−2,……,m,mの最後のブロック(すなわちメッセージブロックm)を第2のベクトルIVと比較する。メッセージブロックmが第2のベクトルIVと同じであれば、電子暗号化ファイルC検証に合格したことを示している。
処理部43は、メッセージブロックmt−1,mt−2,……,m,mの最後のブロック(すなわちメッセージブロックm)を排除し、メッセージブロックmt−1,mt−2,……,mを第2のシーケンスに合わせて逆に連結して復号化ファイル(すなわち電子ファイルM)を生成する。換言すれば、処理部43は、メッセージブロックm,……,mt−2,mt−1を連結して復号化ファイルを生成する。メッセージブロックmが第2のベクトルIVと異なっていれば、電子暗号化ファイルCが検証に不合格であることを示し、処理部43は電子暗号化ファイルCを破棄する。
他の実装では、ブロック暗号化装置2が暗号化処理中に暗号化ブロックc,c,c,c,……,ct−1に対して演算Fを実施し、その演算結果をメッセージブロックmcvとみなした場合、ブロック復号化装置4の処理部43は、それに応じて、図6Bに示したように、同じ演算Fを用いてメッセージブロックmcvを生成しなければならない。
例えば、ブロック暗号化装置2が暗号化ブロックc,c,c,c,……,ct−1に対してXOR演算を実施して仮ブロックを得て、その仮ブロックに対して関数演算を実施してメッセージブロックmcvをあらかじめ得る場合、ブロック復号化装置4の処理部43は、電子暗号化ファイルCを暗号化ブロックc,c,c,c,……,cに分割した後に、暗号化ブロックc,c,c,c,……,ct−1に対して同じ演算を実施してメッセージブロックmcvを得なければならない。
前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算またはその他の任意の関数演算であってよい。暗号化する当事者および復号化する当事者は、同じ関数演算に関して事前に合意に達している必要がある。
上記の説明および図6Aおよび図6Bからわかるように、ブロック復号化装置4は、暗号化ブロックc,c,c,c,c,……,ct−1,cを再構成することによって、第1の実施形態および第2の実施形態に開示した暗号化機構を用いて復号化機能を達成できる。このほか、前述の実施形態のように、電子暗号化ファイルCの暗号化ブロックc,c,c,c,……,cのうちのいずれか1つが改竄されれば(または誤って送信されれば)、電子暗号化ファイルCを復号化して得られたメッセージブロックの最後のブロックは偽になる。したがって、この実施形態で開示した技術を用いると、ブロック復号化装置4は、メッセージブロックmをベクトルIVと比較することによって、電子暗号化ファイルCが改竄された(または誤って送信された)かどうかを判断できる。
第7の本発明の実施形態は、ブロック復号化装置6であり、この装置の演算原理を図6Cに示している。第7の実施形態の演算原理は、第6の実施形態の演算原理と同じだが、第6の実施形態との唯一の相違点は、この実施形態のブロック復号化装置6がブロック暗号化装置2を用いて復号化演算を達成するという点である。ブロック復号化装置6およびこのブロック復号化装置に含まれているブロック暗号化装置2の演算は、図6Bに示した演算と同じである。ブロック暗号化装置2の内部演算は、図2Bに示した内部演算と同じである。
図2Bを図6Cと比較するとわかるように、電子暗号化ファイルCをブロック復号化装置6で復号化する場合、ブロック暗号化装置2を用いて復号化効果を得るためには、データ位置のみを調整する必要がある。
具体的には、暗号化ブロックc,c,c,c,c,……,ct−1をブロック暗号化装置2の入力として暗号化ブロックct−1,ct−2,……,c,cに再構成する必要がある。このほか、ブロック暗号化装置2に入力される第1のベクトルIV1および第2のベクトルIV2は、メッセージブロックmcvおよび暗号化ブロックcに置換される。ブロック暗号化装置2は、メッセージブロックmcvおよび暗号化ブロックcを用いて暗号化ブロックct−1,ct−2,……,c,cを復号化してメッセージブロックmt−1,mt−2,……,m,mを生成する。次にメッセージブロックmt−1,mt−2,……,mは、逆に再構成されて復号化ファイルを得る。
上記の説明および図6Cからわかるように、本発明は、データ位置を調整することによってブロック暗号化装置を用いて復号化効果を達成できる。
本発明の第8の実施形態は、コンピュータに実装したブロック暗号化方法であり、この方法のフローチャートを図7に示している。ブロック暗号化方法を実装するためのコンピュータは、前述のブロック暗号化装置2であってよく、検査ベクトルおよび鍵とともに記憶される。第8の実施形態の演算原理は、第1の実施形態の演算原理と同じであるため、一緒に図2Bを参照されたい。
まず、ステップS700では、第1のベクトルおよび第2のベクトルを得る。ステップS701では、暗号化する電子ファイルを複数のメッセージブロックに分割し、メッセージブロックはシーケンスを有する。次に、ステップS703では、検査ベクトルをメッセージブロックの最後のブロックとしてメッセージブロックに加算する。次に、各々のメッセージブロックに対してシーケンスに合わせてステップS705、S707、S709およびS711を実行し、メッセージブロックがすべて処理されるまで行う。
具体的には、ステップS705では、入力ブロックを生成する。入力ブロックの値は、メッセージブロックと、そのメッセージブロックの1つ前のメッセージブロックに対応する出力ブロックと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとに対してXOR演算を実施して得られた値に等しい。
この実施形態では、ステップS705は、メッセージブロックと、そのメッセージブロックの1つ前のメッセージブロックに対応する暗号化ブロックとに対してXOR演算を実施して入力ブロックを生成する。ステップS707では、鍵および対称暗号化アルゴリズムを用いて入力ブロックを暗号化して出力ブロックを得る。ステップS709では、出力ブロックと、そのメッセージブロック1つ前のメッセージブロックとに対してXOR演算を実施して暗号化ブロックを得る。
さらに説明すると、メッセージブロックの第1のブロックがステップS705およびS709で処理されるとき、そのメッセージブロックの1つ前のメッセージブロックに対応する出力ブロックは、第1のベクトルであり、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトルである。メッセージブロックの第2のブロックがステップS705およびS709で処理されるとき、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックは、第2のベクトルである。
その後、ステップS711では、未処理のメッセージブロックがあるかどうかを判断する。ステップS711の判断結果が「はい」であれば、その処理はステップS705に戻って次のメッセージブロックの処理を続行する。ステップS711の判断結果が「いいえ」であれば、メッセージブロックがすべて処理されたことを示している。次に、ステップS713を実行し、暗号化ブロックをシーケンスに合わせて連結して電子暗号化ファイルを生成する。
他の実装では、ブロック暗号化方法を実装するためのコンピュータは、検査ベクトルとともに記憶されなくてよい。このような実装では、ステップS705、S707およびS709で残された未処理のメッセージブロックが1つしかない場合、ブロック暗号化方法は、まずもう1つのステップ(図示せず)を実行して、演算によって得られた暗号化ブロックに対してXOR演算を実施して仮ブロックを得た後、もう1つのステップ(図示せず)を実行して、仮ブロックに対して関数演算を実施して検査ベクトルを得ることができる。
前述の関数演算は、鍵暗号化演算、回転演算、ハッシュ演算または復号化の点で事前に合意に達しているその他の任意の関数演算であってよい。
前述のステップに加えて、第8の実施形態も同じく、第1の実施形態に記載した演算および関数をすべて実行できる。第8の実施形態がこのような演算および関数をどのように実行するのかについては、第1の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
第9の本発明の実施形態は、コンピュータに実装したブロック暗号化方法であり、この方法のフローチャートを図8Aに示している。ブロック暗号化方法を実装するためのコンピュータは、前述のブロック暗号化装置2であってよく、検査ベクトルおよび鍵とともに記憶される。第9の実施形態の演算原理は、第2の実施形態の演算原理と同じであるため、一緒に図3Aを参照されたい。
第9の実施形態のブロック暗号化方法は、ステップS700、S701、S703、S805、S707、S709、S711およびS713を実行する。換言すれば、第9の実施形態が第8の実施形態と異なる点は、第9の実施形態ではステップS705がステップS805に代わる点である。2つの実施形態の相違点のみを以下に詳述する。
まず、第9の実施形態のブロック暗号化方法は、ステップS700、S701およびS703を実行する。その後、各々のメッセージブロックに対してそのメッセージブロックのシーケンスに合わせてステップS805、S707、S709およびS711を実行し、メッセージブロックがすべて処理されるまで行う。
具体的には、ステップS805では、入力ブロックを生成する。入力ブロックの値は、メッセージブロックと、そのメッセージブロックの1つ前のメッセージブロックに対応する出力ブロックと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとに対してXOR演算を実施して得られた値に等しい。
この実施形態では、ステップS805は、メッセージブロックと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとに対してXOR演算を実施して仮ブロックを得た後、仮ブロックと、そのメッセージブロックの1つ前のメッセージブロックに対応する出力ブロックとに対してXOR演算を実施して入力ブロックを得る。
次に、ステップS707では、鍵および対称暗号化アルゴリズムを用いて入力ブロックを暗号化して出力ブロックを得る。ステップS709では、出力ブロックと、そのメッセージブロックの1つ前のメッセージブロックとに対してXOR演算を実施して暗号化ブロックを得る。
さらに説明すると、メッセージブロックの第1のブロックがステップS805およびS709で処理されるとき、そのメッセージブロックの1つ前のメッセージブロックに対応する出力ブロックは、第1のベクトルであり、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックは、オールゼロベクトルである。メッセージブロックの第2のブロックがステップS805およびS709で処理されるとき、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックは、第2のベクトルである。
その後、ステップS711では、未処理のメッセージブロックがあるかどうかを判断する。ステップS711の判断結果が「はい」であれば、その処理はステップS705に戻って次のメッセージブロックの処理を続行する。ステップS711の判断結果が「いいえ」であれば、メッセージブロックがすべて処理されたことを示している。次に、ステップS713を実行し、暗号化ブロックをシーケンスに合わせて連結して電子暗号化ファイルを生成する。
同じように、他の実装では、ブロック暗号化方法を実装するためのコンピュータは、検査ベクトルとともに記憶されなくてよい。検査ベクトルは、1つ前の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。
また、前述のステップに加えて、第9の実施形態も同じく、第2の実施形態に記載した演算および関数をすべて実行できる。第9の実施形態がこのような演算および関数をどのように実行するのかについては、第2の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
本発明の第10の実施形態は、コンピュータに実装したブロック暗号化方法であり、この方法のフローチャートを図8Bに示している。第10の実施形態の実施形態の演算原理は、第9の実施形態の演算原理と同様だが、この実施形態ではいくつかのステップが従来のCBCによって達成される点が異なる。
第10の実施形態と第9の実施形態との相違点のみを以下に詳述する。理解しやすいように、図3Cを併せて参照されたい。
同じように、この実施形態のブロック暗号化方法はまず、ステップS700、S701およびS703を実行する。次に、ステップS811を実行して、各々のメッセージブロックと、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックとに対してそれぞれXOR演算を実施して複数の仮ブロックを得る。
メッセージブロックの第1のブロックがステップS811で処理されるとき、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックは、フルゼロベクトルである。メッセージブロックの第2のブロックがステップS811で処理されるとき、そのメッセージブロックの1つ前のメッセージブロックの前のメッセージブロックは、第2のベクトルである。
次に、ステップS813を実行して、鍵、第1のベクトルおよびCBCを用いて仮ブロックを暗号化して出力ブロックにする。その後、ステップS815を実行して、各々の出力ブロックと、その出力ブロックの1つ前のメッセージブロックとに対してそれぞれXOR演算を実施して暗号化ブロックを得る。
出力ブロックの最初のブロックがステップS815で処理されるとき、出力ブロックの1つ前のメッセージブロックは第2のベクトルである。その後、ステップS713を実行して、暗号化ブロックをシーケンスに合わせて連結して電子暗号化ファイルを生成する。
同じように、他の実装では、ブロック暗号化方法を実装するためのコンピュータは、検査ベクトルとともに記憶されなくてよい。検査ベクトルは、第8の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。また、前述のステップに加えて、第10の実施形態も同じく、第3の実施形態に記載した演算および関数をすべて実行できる。
第10の実施形態がこのような演算および関数をどのように実行するのかについては、第3の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
本発明の第11の実施形態は、コンピュータに実装したブロック復号化方法であり、この方法のフローチャートを図9に示している。ブロック復号化方法を実装するためのコンピュータは、前述のブロック復号化装置4であってよく、検査ベクトルおよび鍵とともに記憶される。また、この実施形態のブロック復号化方法は、第8から第10の実施形態のブロック暗号化方法と一緒に用いられてよい。換言すれば、この実施形態のブロック復号化方法は、第8から第10の実施形態で暗号化した電子暗号化ファイルを復号化できる。第11の実施形態の演算原理は、第4の実施形態の演算原理と同じであるため、図4Bを併せて参照されたい。
まず、ステップS900を実行して第1のベクトルおよび第2のベクトルを得る。ステップS900で得られた第1のベクトルおよび第2のベクトルは、電子暗号化ファイルを暗号化するためのブロック暗号化方法で使用した第1のベクトルおよび第2のベクトルと同じである。
その後、ステップS901を実行して電子暗号化ファイルを複数の暗号化ブロックに分割し、暗号化ブロックはシーケンスを有する。次に、各々の暗号化ブロックに対してシーケンスに合わせてステップS903、S905、S907およびS909を実行し、暗号化ブロックがすべて処理されるまで行う。
具体的には、ステップS903では、入力ブロックを生成する。入力ブロックの値は、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい。この実施形態では、ステップS903は、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応するメッセージブロックとに対してXOR演算を実施して入力ブロックを生成する。
次に、ステップS905では、鍵および対称復号化アルゴリズムを用いて入力ブロックを復号化して出力ブロックを得る。対称復号化アルゴリズムは、第8から第10の実施形態で用いた対称暗号化アルゴリズムに相当する。ステップS907では、メッセージブロックを生成する。メッセージブロックの値は、出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい。この実施形態では、ステップS907は、出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施してメッセージブロックを生成する。
暗号化ブロックの第1のブロックがステップS903およびS907で処理されるとき、その暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックは、第2のベクトルであり、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックは、オールゼロベクトルである。
暗号化ブロックの第2のブロックがステップS903およびS907で処理されるとき、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックは、第1のベクトルである。
その後、ステップS909では、未処理の暗号化ブロックがあるかどうかを判断する。ステップS909の判断結果が「はい」であれば、その処理はステップS903に戻って次の暗号化ブロックの処理を続行する。ステップS909の判断結果が「いいえ」であれば、暗号化ブロックがすべて処理されたことを示している。
次に、ステップS911を実行し、メッセージブロックの最後のブロックを検査ベクトルと比較して、メッセージブロックの最後のブロックが検査ベクトルと同じであるかどうかを判断する。ステップS911の判断結果が「はい」であれば、ステップS913を実行し、メッセージブロックの最後のブロックを排除したメッセージブロックをシーケンスに合わせて連結して、復号化ファイルを生成する。ステップS911の判断結果が「いいえ」であれば、ステップS915を実行して電子暗号化ファイルを破棄する。
この実施形態と一緒に用いたブロック暗号化方法が、暗号化ブロックに記憶した検査ベクトルを有するのではなく、生成した暗号化ブロックを用いて検査ベクトルを動的に生成する場合、この実施形態でも同じように検査ベクトルを生成する必要がある。
具体的には、ブロック復号化方法によってステップS901を実行した後、もう1つのステップ(図示せず)を実行して、暗号化ブロックの最後のブロックを排除した暗号化ブロックを用いて検査ベクトルを生成することができる。検査ベクトルは、1つ前の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。
前述のステップに加えて、第11の実施形態も同じく、第4の実施形態に記載した演算および関数をすべて実行できる。第11の実施形態がこのような演算および関数をどのように実行するのかについては、第4の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
第12の本発明の実施形態は、コンピュータに実装したブロック復号化方法であり、この方法のフローチャートを図10に示している。ブロック復号化方法を実装するためのコンピュータは、前述のブロック復号化装置4であってよく、検査ベクトルおよび鍵とともに記憶される。また、この実施形態のブロック復号化方法は、第8から第10の実施形態のブロック暗号化方法と一緒に用いられてよい。換言すれば、この実施形態のブロック復号化方法は、第8から第10の実施形態で暗号化した電子暗号化ファイルを復号化できる。第12の実施形態の演算原理は、第5の実施形態の演算原理と同じであるため、図5Aを併せて参照されたい。
第12の実施形態のブロック復号化方法は、ステップS900、S901、S903、S905、S101、S909、S911、S913およびS915を実行する。換言すれば、この実施形態が第11の実施形態と異なる点は、この実施形態ではステップS907がステップS101に代わる点である。第12の実施形態と第11の実施形態との相違点のみを以下に詳述する。
まず、ステップS900を実行して第1のベクトルおよび第2のベクトルを得る。ステップS900で得られた第1のベクトルおよび第2のベクトルは、電子暗号化ファイルを暗号化するためのブロック暗号化方法で使用した第1のベクトルおよび第2のベクトルと同じである。
その後、ステップS901を実行して電子暗号化ファイルを複数の暗号化ブロックに分割し、暗号化ブロックはシーケンスを有する。次に、各々の暗号化ブロックに対してシーケンスに合わせてステップS903、S905およびS101を実行し、暗号化ブロックがすべて処理されるまで行う。
この実施形態では、各々の暗号化ブロックに対してステップS903およびS905を実行した後にステップS101を実行する。ステップS101では、メッセージブロックを生成する。メッセージブロックの値は、出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい。
この実施形態では、ステップS101は、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックと、出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応する入力ブロックとに対してXOR演算を実施することによってメッセージブロックを得る。
暗号化ブロックの第1のブロックがステップS101で処理されるとき、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックは、オールゼロベクトルであり、その暗号化ブロックの1つ前の暗号化ブロックに対応する入力ブロックは、第1のベクトルである。このほか、暗号化ブロックの第2のブロックがステップS101で処理されるとき、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックに対応するメッセージブロックは、第2のベクトルである。
次に、ステップS909を実行する。同じように、暗号化ブロックがすべてステップS909で処理された後、この処理はステップS911およびS913またはステップS911およびS915に進む。
同じように、この実施形態と一緒に用いたブロック暗号化方法が、暗号化ブロックに記憶した検査ベクトルを有するのではなく、生成した暗号化ブロックを用いて検査ベクトルを動的に生成する場合、この実施形態でも同じように検査ベクトルを生成する必要がある。
具体的には、ブロック復号化方法によってステップS901を実行した後、もう1つのステップ(図示せず)を実行して、暗号化ブロックの最後のブロックを排除した暗号化ブロックを用いて検査ベクトルを生成することができる。検査ベクトルは、前述の実施形態で説明したように生成され、これについてはここでこれ以上説明しない。
前述のステップに加えて、第12の実施形態も同じく、第5の実施形態に記載した演算および関数をすべて実行できる。第12の実施形態がこのような演算および関数をどのように実行するのかについては、第5の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
第13の本発明の実施形態は、コンピュータに実装したブロック復号化方法であり、この方法のフローチャートを図11に示している。このブロック復号化方法を実装するためのコンピュータは、前述のブロック復号化装置4であってよく、検査ベクトルおよび鍵とともに記憶される。また、この実施形態のブロック復号化方法は、第8から第10の実施形態のブロック暗号化方法と一緒に用いられてよい。換言すれば、この実施形態のブロック復号化方法は、第8から第10の実施形態で暗号化した電子暗号化ファイルを復号化できる。第13の実施形態の演算原理は、第6の実施形態の演算原理と同じであるため、図6Aを併せて参照されたい。
まず、ステップS200を実行して第1のベクトルおよび第2のベクトルを得る。ステップS200で得られた第1のベクトルおよび第2のベクトルは、電子暗号化ファイルを暗号化するためのブロック暗号化方法で使用した第1のベクトルおよび第2のベクトルと同じである。その後、ステップS201を実行して電子暗号化ファイルを複数の暗号化ブロックに分割し、この暗号化ブロックは第1のシーケンスを有する。
暗号化ブロックの最後のブロックは、基準ベクトルとみなされる。次に、ステップS203を実行して暗号化ブロックの最後のブロックを排除する。次に、ステップS205では、暗号化ブロックを第1のシーケンスと逆である第2のシーケンスに合わせて再構成する。ステップS207では、第1のベクトルを暗号化ブロックの最後のブロックとして暗号化ブロックに加算する。
次に、各々の暗号化ブロックに対して第2のシーケンスに合わせてステップS209、S211、S213およびS215を実行し、暗号化ブロックがすべて処理されるまで行う。ステップS209では、入力ブロックを生成する。入力ブロックの値は、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい。
この実施形態では、ステップS209は、暗号化ブロックと、その暗号化ブロックの1つ前の暗号化ブロックに対応するメッセージブロックとに対してXOR演算を実施して入力ブロックを生成する。暗号化ブロックの第1のブロックがステップS209で処理されるとき、その暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックは、検査ベクトルであり、その暗号化ブロックの1つ前のブロックの前の暗号化ブロックは、オールゼロベクトルである。
暗号化ブロックの第2のブロックがステップS209で処理されるとき、その暗号化ブロックの1つ前の暗号化ブロックの前の暗号化ブロックは、基準ベクトルである。その後、ステップS211では、鍵および対称暗号化アルゴリズムを用いて入力ブロックを暗号化して出力ブロックを得る。この対称暗号化アルゴリズムは、第8から第10の実施形態で用いた対称暗号化アルゴリズムと同じである。次に、ステップS213では、出力ブロックと、その暗号化ブロックの1つ前の暗号化ブロックとに対してXOR演算を実施してメッセージブロックを得る。
その後、ステップS215では、未処理のメッセージブロックがあるかどうかを判断する。ステップS215の判断結果が「はい」であれば、その処理はステップS209に戻って次のメッセージブロックの処理を続行する。ステップS215の判断結果が「いいえ」であれば、メッセージブロックがすべて処理されたことを示し、その処理は、ステップS217に進んでメッセージブロックの最後のブロックを第2のベクトルと比較し、メッセージブロックの最後のブロックが第2のベクトルと同じかどうかを判断する。
ステップS217の判断結果が「はい」であれば、ステップS219を実行してメッセージブロックの最後のブロックを排除したのち、他のメッセージブロックを第2のシーケンスに合わせて逆に連結して復号化ファイルを生成する。ステップS217の判断結果が「いいえ」であれば、ステップS221を実行して電子暗号化ファイルを破棄する。
同じように、この実施形態と一緒に用いたブロック暗号化方法が、暗号化ブロックに記憶した検査ベクトルを有するのではなく、生成した暗号化ブロックを用いて検査ベクトルを動的に生成する場合、この実施形態でも同じように検査ベクトルを生成する必要がある。具体的には、ブロック復号化方法によってステップS203を実行した後、もう1つのステップ(図示せず)を実行して、暗号化ブロックを用いて検査ベクトルを生成することができる。検査ベクトルは、前述の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。
前述のステップに加えて、第13の実施形態も同じく、第6の実施形態に記載した演算および関数をすべて実行できる。第13の実施形態がこのような演算および関数をどのように実行するのかについては、第6の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
本発明の第14の実施形態は、コンピュータに実装したブロック復号化方法であり、この方法のフローチャートを図12に示している。第14の実施形態の実施形態の演算原理は、第13の実施形態の演算原理と同様だが、この実施形態ではいくつかのステップが本発明のブロック暗号化装置によって達成される点が異なる。第14の実施形態と第13の実施形態との相違点のみを以下に詳述する。理解しやすいように、図6Cを併せて参照されたい。
同じように、この実施形態のブロック復号化方法はまず、ステップS200、S201、S203、S205およびS207を実行する。次に、ステップS230を実行し、ブロック暗号化装置、検査ベクトル、基準ベクトルおよび鍵を用いて暗号化ブロックを暗号化して複数のメッセージブロックを得る。ステップS230が実行されるとき、ブロック暗号化装置に入力される第1のベクトルおよび第2のベクトルは、検査ベクトルおよび基準ベクトルに置換される。その後、ステップS217およびS219またはステップS217およびS221を実行する。
図12を図11と比較するとわかるように、ステップS209、S211、S213およびS215は、ステップS230に代わっている。換言すれば、この実施形態ではブロック暗号化装置を用いて復号化効果を得るためには、データ位置を調整する必要があるだけである。
同じように、この実施形態と一緒に用いたブロック暗号化方法が、暗号化ブロックに記憶した検査ベクトルを有するのではなく、生成した暗号化ブロックを用いて検査ベクトルを動的に生成する場合、この実施形態でも同じように検査ベクトルを生成する必要がある。具体的には、ブロック復号化方法によってステップS203を実行した後、もう1つのステップ(図示せず)を実行して、暗号化ブロックを用いて検査ベクトルを生成することができる。検査ベクトルは、前述の実施形態で説明したように生成されるが、これについてはここでこれ以上説明しない。
前述のステップに加えて、第14の実施形態も同じく、第7の実施形態に記載した演算および関数をすべて実行できる。第14の実施形態がこのような演算および関数をどのように実行するのかについては、第7の実施形態の説明を基に当業者は容易に理解すると思われるため、これについてはここでこれ以上説明しない。
また、第8から第14の実施形態に記載したブロック暗号化方法およびブロック復号化方法は、コンピュータプログラム製品によって実装されてよい。コンピュータプログラム製品が処理部にロードされ、コンピュータプログラム製品に含まれる複数のコードが実行されるとき、第8から第14の実施形態のうちのいずれかに記載のブロック暗号化方法およびブロック復号化方法を実現できる。
前述のコンピュータプログラム製品は、ネットワークを通じて送信できるファイルであってもよいし、あるいは、読み出し専用メモリ(ROM)、フラッシュメモリ、フロッピーディスク、ハードディスク、コンパクトディスク、モバイルディスク、磁気テープ、ネットワークにアクセス可能なデータベース、または同一機能を有し当業者に公知のその他の任意の記録媒体のような有形のコンピュータ可読媒体に記憶されてもよい。
実施形態の説明文からわかるように、本発明のブロック暗号化装置およびブロック暗号化方法は、電子ファイルに含まれる複数のメッセージブロックを、電子暗号化ファイルに含まれる複数の暗号化ブロックに複数レベルで結びつける。このように、電子暗号化ファイルの暗号化ブロックのうちのいずれか1つが改竄された(または誤って送信された)場合、復号化装置および復号化方法によって電子暗号化ファイルを復号化して得られたメッセージブロックの最後のブロックの内容は、偽である。
メッセージブロックの最後のブロックが何であるはずかがわかるため、復号化装置および復号化方法は、電子暗号化ファイルの完全性が損なわれたことに気づくことができ、それによって電子暗号化ファイルを破棄できる。したがって、本発明によって開示した技術は、メッセージ認証コード演算を実施することなく暗号化および復号化を効果的に達成できる一方で、引き続き機密性、完全性およびソース認証という3つの基本的な安全要件を満たすものである。
以上の開示は、本開示の詳細な技術的内容および発明性のある特徴に関するものである。当業者は、本発明の特徴を逸脱しない限り、記載したような本発明の開示および提示に基づいて様々な修正および置換を加えてよい。ただし、そのような修正および置換が上記の説明文に完全に開示されていないとしても、そのような修正および置換は実質的に以下の添付した特許請求の範囲に含まれている。

Claims (16)

  1. ロードしたプログラムを実行する処理部と、検査ベクトルおよび鍵を記憶する記憶部と、を備えたブロック暗号化装置によって実行される、ブロック暗号化方法であって、
    (a)前記処理部により、第1のベクトルおよび第2のベクトルを得ることと;
    (b)前記処理部により、電子ファイルを複数のメッセージブロックに分割することであって、前記メッセージブロックがシーケンスを有することと;
    (c)前記処理部により、前記検査ベクトルを前記メッセージブロックの最後のブロックとして前記メッセージブロックに加算することと;
    (d)前記処理部により、各々のメッセージブロックに対して前記シーケンスに合わせて:
    (d1)前記処理部により、入力ブロックを生成する演算であって、前記入力ブロックの値が、前記メッセージブロックと、前記メッセージブロックの1つ前のメッセージブロックに対応する出力ブロックと、前記メッセージブロックの前記1つ前のメッセージブロックの前のメッセージブロックとに対してXOR演算を実施して得られた値に等しい演算;
    (d2)前記処理部により、前記鍵を用いて前記入力ブロックを暗号化して出力ブロックを得る演算;および
    (d3)前記処理部により、前記出力ブロックと、前記メッセージブロックの前記1つ前のメッセージブロックとに対してXOR演算を実施して暗号化ブロックを得る演算;
    を実施することと、
    (e)前記暗号化ブロックを前記シーケンスに合わせて連結して電子暗号化ファイルを生成することと、
    を含むブロック暗号化方法において、
    前記ステップ(d)が前記メッセージブロックの第1のブロックを処理するとき、前記メッセージブロックの前記1つ前のメッセージブロックに対応する前記出力ブロックは、前記第1のベクトルであり、前記メッセージブロックの前記1つ前のメッセージブロックの前の前記メッセージブロックは、オールゼロベクトルであり、
    前記ステップ(d)が前記メッセージブロックの第2のブロックを処理するとき、前記メッセージブロックの前記1つ前のメッセージブロックの前の前記メッセージブロックは、前記第2のベクトルである、
    ブロック暗号化方法。
  2. 前記ステップ(d1)は、前記メッセージブロックと、前記メッセージブロックの前記1つ前のメッセージブロックに対応する前記暗号化ブロックとに対してXOR演算を実施して前記入力ブロックを生成する、請求項1に記載のブロック暗号化方法。
  3. 前記ステップ(d1)は、
    前記処理部により、前記メッセージブロックと、前記メッセージブロックの前記1つ前のメッセージブロックの前の前記メッセージブロックとに対してXOR演算を実施して仮ブロックを得ることと、
    前記処理部により、前記仮ブロックと、前記メッセージブロックの前記1つ前のメッセージブロックに対応する前記出力ブロックとに対してXOR演算を実施して前記入力ブロックを得ることと
    を含む、
    請求項1に記載のブロック暗号化方法。
  4. 前記ステップ(d1)、前記ステップ(d2)、および前記ステップ(d3)は、
    前記処理部により、各々の前記メッセージブロックに対して:
    前記処理部により、前記メッセージブロックと、前記メッセージブロックの前記1つ前のメッセージブロックの前の前記メッセージブロックとに対してXOR演算を実施する演算と;
    前記処理部により、前記鍵、前記第1のベクトルおよび暗号ブロック連鎖装置を用いて前記仮ブロックを暗号化して前記出力ブロックにする演算と;
    前記処理部により、各々の出力ブロックと、前記対応する1つ前のメッセージブロックとに対してXOR演算を実施して暗号化ブロックを得る演算と
    を実施して複数の仮ブロックを得るステップを含む、
    請求項1に記載のブロック暗号化方法。
  5. 前記処理部により、前記メッセージブロックの前記最後のブロックを処理する前に、前記暗号化ブロックに対してXOR演算を実施して仮ブロックを得ることと;
    前記処理部により、前記仮ブロックに対して関数演算を実施して前記検査ベクトルを得ることと
    をさらに含む、請求項1に記載のブロック暗号化方法。
  6. 前記関数演算は、鍵暗号化演算、回転演算およびハッシュ演算のうちの1つである、請求項5に記載のブロック暗号化方法。
  7. ロードしたプログラムを実行する処理部と、検査ベクトルおよび鍵を記憶する記憶部と、を備えたブロック復号化装置によって実行される、ブロック復号化方法であって、
    (a)前記処理部により、第1のベクトルおよび第2のベクトルを得ることと、
    (b)前記処理部により、電子暗号化ファイルを複数の暗号化ブロックに分割することであって、前記暗号化ブロックがシーケンスを有することと、
    (c)前記処理部により、各々の暗号化ブロックに対して前記シーケンスに合わせて:
    (c1)前記処理部により、入力ブロックを生成する演算であって、前記入力ブロックの値が、前記暗号化ブロックと、前記暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックと、前記暗号化ブロックの前記1つ前の暗号化ブロックの前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい演算、
    (c2)前記処理部により、前記鍵を用いて前記入力ブロックを復号化して出力ブロックを得る演算、および
    (c3)前記処理部により、メッセージブロックを生成する演算であって、前記メッセージブロックの値が、前記出力ブロックと、前記暗号化ブロックの前記1つ前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい演算、
    を実施することと、
    (d)前記処理部により、前記メッセージブロックの最後のブロックを前記検査ベクトルと比較することと、
    (e)前記処理部により、前記メッセージブロックの最後のブロックが前記検査ベクトルと同じとき、前記メッセージブロックの最後のブロックを排除した前記メッセージブロックを前記シーケンスに合わせて連結して復号化ファイルを生成することと、
    を含むブロック復号化方法において、
    前記ステップ(c)が前記暗号化ブロックの第1のブロックを処理するとき、前記暗号化ブロックの前記1つ前の暗号化ブロックに対応する前記出力ブロックは、第2のベクトルであり、前記暗号化ブロックの前記1つ前の暗号化ブロックの前の前記暗号化ブロックは、オールゼロベクトルであり、前記ステップ(c)が前記暗号化ブロックの第2のブロックを処理するとき、前記暗号化ブロックの前記1つ前の暗号化ブロックの前の前記暗号化ブロックは、第1のベクトルである、
    ブロック復号化方法。
  8. 前記ステップ(c1)は、前記暗号化ブロックと、前記暗号化ブロックの前記1つ前の暗号化ブロックに対応する前記メッセージブロックとに対してXOR演算を実施することによって前記入力ブロックを生成し、前記ステップ(c3)は、前記出力ブロックと、前記暗号化ブロックの前記1つ前の暗号化ブロックとに対してXOR演算を実施することによって前記メッセージブロックを生成する、請求項7に記載のブロック復号化方法。
  9. 前記ステップ(c1)は、前記暗号化ブロックと、前記暗号化ブロックの前記1つ前の暗号化ブロックに対応する前記メッセージブロックとに対してXOR演算を実施することによって前記入力ブロックを生成し、
    前記ステップ(c3)は、前記暗号化ブロックの前記1つ前の暗号化ブロックの前の暗号化ブロックに対応する前記メッセージブロックと、前記出力ブロックと、前記暗号化ブロックの前記1つ前の暗号化ブロックに対応する前記入力ブロックとに対してXOR演算を実施することによって前記メッセージブロックを得て、
    前記ステップ(c3)が前記暗号化ブロックの第1のブロックを処理するとき、前記暗号化ブロックの前記1つ前の暗号化ブロックの前の暗号化ブロックに対応する前記メッセージブロックは、オールゼロベクトルであり、前記暗号化ブロックの前記1つ前の暗号化ブロックに対応する前記入力ブロックは、前記第1のベクトルであり、
    前記ステップ(c3)が前記暗号化ブロックの第2のブロックを処理するとき、前記暗号化ブロックの前記1つ前の暗号化ブロックの前の暗号化ブロックに対応する前記メッセージブロックは、前記第2のベクトルである、請求項7に記載のブロック復号化方法。
  10. 前記処理部により、前記暗号化ブロックの最後のブロックを排除した前記暗号化ブロックに対してXOR演算を実施して仮ブロックを得ることと、
    前記処理部により、前記仮ブロックに対して関数演算を実施して前記検査ベクトルを得ることと
    をさらに含む、請求項7に記載のブロック復号化方法。
  11. 前記関数演算は、鍵暗号化演算、回転演算およびハッシュ演算のうちの1つである、請求項10に記載のブロック復号化方法。
  12. ロードしたプログラムを実行する処理部と、鍵を記憶する記憶部と、を備えたブロック復号化装置によって実行される、ブロック復号化方法であって、
    (f)前記処理部により、第1のベクトルおよび第2のベクトルを得ることと、
    (g)前記処理部により、電子暗号化ファイルを複数の暗号化ブロックに分割することであって、前記暗号化ブロックが第1のシーケンスを有し、前記暗号化ブロックの最後のブロックが基準ベクトルであることと、
    (h)前記処理部により、前記暗号化ブロックの最後のブロックを排除することと、
    (i)前記処理部により、前記ステップ(h)の後に、前記暗号化ブロックを第2のシーケンスに合わせて再構成することであって、前記第2のシーケンスが前記第1のシーケンスの逆であることと、
    (j)前記処理部により、前記第1のベクトルを前記暗号化ブロックの最後のブロックとして前記暗号化ブロックに加算することと、
    (k)前記処理部により、各々の前記暗号化ブロックに対して前記第2のシーケンスに合わせて:
    (k1)前記処理部により、入力ブロックを生成する演算であって、前記入力ブロックの値が、前記暗号化ブロックと、前記暗号化ブロックの1つ前の暗号化ブロックに対応する出力ブロックと、前記暗号化ブロックの前記1つ前の暗号化ブロックの前の暗号化ブロックとに対してXOR演算を実施して得られた値に等しい演算、
    (k2)前記処理部により、前記鍵を用いて前記入力ブロックを暗号化して出力ブロックを得る演算、および
    (k3)前記処理部により、前記出力ブロックと、前記暗号化ブロックの前記1つ前の暗号化ブロックとに対してXOR演算を実施することによってメッセージブロックを生成する演算、
    を実施することと、
    (l)前記処理部により、前記メッセージブロックの前記最後のブロックを前記第2のベクトルと比較することと、
    (m)前記処理部により、前記メッセージブロックの最後のブロックが、前記メッセージブロックの最後のブロックを排除した前記第2のベクトルと同じ場合、他のメッセージブロックを前記第2のシーケンスに合わせて連結して復号化ファイルを生成することと、
    を含むブロック復号化方法において、
    前記ステップ(k1)が前記暗号化ブロックの第1のブロックを処理するとき、前記暗号化ブロックの前記1つ前の暗号化ブロックに対応する前記出力ブロックは、検査ベクトルであり、前記暗号化ブロックの前記1つ前のブロックの前の前記暗号化ブロックは、オールゼロベクトルであり、前記ステップ(k1)が前記暗号化ブロックの第2のブロックを処理するとき、前記暗号化ブロックの前記1つ前の暗号化ブロックの前の前記暗号化ブロックは、前記基準ベクトルである、
    ブロック復号化方法。
  13. 前記ステップ(k1)は、前記暗号化ブロックと、前記暗号化ブロックの前記1つ前の暗号化ブロックに対応する前記メッセージブロックとに対してXOR演算を実施することによって前記入力ブロックを生成する、請求項12に記載のブロック復号化方法。
  14. 前記処理部により、前記ステップ(g)の後に、前記暗号化ブロックの最後のブロックを排除した前記暗号化ブロックに対してXOR演算を実施して仮ブロックを得ることと、
    前記処理部により、前記仮ブロックに対して関数演算を実施して前記検査ベクトルを得ることと
    をさらに含む、請求項12に記載のブロック復号化方法。
  15. 前記関数演算は、鍵暗号化演算、回転演算およびハッシュ演算のうちの1つである、請求項14に記載のブロック復号化方法。
  16. 前記ステップ(k)の前記ステップ(k1)、前記ステップ(k2)および前記ステップ(k3)は、
    (n1)前記処理部により、請求項1に記載の前記ブロック暗号化装置によって実施された前記演算(d)で用いた、前記メッセージブロック、前記第1のベクトル、前記第2のベクトルおよび前記鍵として、前記暗号化ブロック、前記検査ベクトル、前記基準ベクトルおよび前記鍵をそれぞれ用いるステップと、
    (n2)前記処理部により、請求項1に記載の前記ブロック暗号化装置を用いて請求項1に記載の前記演算(d)を実施して前記メッセージブロックを得るステップと
    を含む、請求項12に記載のブロック復号化方法。
JP2014081031A 2013-11-27 2014-04-10 完全性検証を含むブロック暗号化方法およびブロック復号化方法 Active JP5855696B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201310613143.5A CN104683093B (zh) 2013-11-27 2013-11-27 兼具完整性验证的区块加密装置、区块加密方法、区块解密装置及区块解密方法
CN201310613143.5 2013-11-27

Publications (2)

Publication Number Publication Date
JP2015104119A JP2015104119A (ja) 2015-06-04
JP5855696B2 true JP5855696B2 (ja) 2016-02-09

Family

ID=50287732

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014081031A Active JP5855696B2 (ja) 2013-11-27 2014-04-10 完全性検証を含むブロック暗号化方法およびブロック復号化方法

Country Status (5)

Country Link
US (1) US9158931B2 (ja)
JP (1) JP5855696B2 (ja)
CN (1) CN104683093B (ja)
GB (2) GB2520778B8 (ja)
TW (1) TWI528773B (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3029877B1 (en) * 2013-08-02 2018-04-11 Nec Corporation Authenticated encryption device, authenticated encryption method, and program for authenticated encryption
US10382206B2 (en) * 2016-03-10 2019-08-13 Futurewei Technologies, Inc. Authentication mechanism for 5G technologies
US9853813B2 (en) 2016-03-17 2017-12-26 Crater Dog Technologies, LLC Method for securing a private key
CN106788969B (zh) * 2016-12-02 2019-03-01 中科星图股份有限公司 一种数据文件的传输方法
US20180191492A1 (en) * 2017-01-04 2018-07-05 International Business Machines Corporation Decryption-Side Initialization Vector Discovery
GB2564878B (en) * 2017-07-25 2020-02-26 Advanced Risc Mach Ltd Parallel processing of fetch blocks of data
CN111052670B (zh) * 2017-09-01 2024-02-09 三菱电机株式会社 加密装置、解密装置、加密方法、解密方法和计算机能读取的存储介质
CN110401527B (zh) * 2018-04-25 2022-03-08 腾讯科技(深圳)有限公司 数据加密、解密方法、装置以及存储介质
US10984115B2 (en) * 2018-12-04 2021-04-20 Bank Of America Corporation System for triple format preserving encryption
US11139969B2 (en) 2018-12-04 2021-10-05 Bank Of America Corporation Centralized system for a hardware security module for access to encryption keys
US11349644B1 (en) * 2020-04-29 2022-05-31 Wells Fargo Bank, N.A. Database exclusion (DBX) for multi party access (MPA) to sensitive personal information (SPI)
US11893090B2 (en) * 2020-12-30 2024-02-06 Comcast Cable Communications, Llc Synchronization of digital rights management data
CN112752122B (zh) * 2020-12-30 2022-11-11 厦门市美亚柏科信息股份有限公司 智能摄像头的视频加密传输方法及计算机可读存储介质
TWI819516B (zh) * 2022-03-09 2023-10-21 瑞昱半導體股份有限公司 基於消息驗證的金鑰擴展的處理方法與電路

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001260970A1 (en) * 2000-01-31 2001-08-07 Vdg Inc. Block encryption method and schemes for data confidentiality and integrity protection
US7093126B1 (en) * 2000-04-14 2006-08-15 International Business Machines Corporation Encryption schemes with almost free integrity awareness
US7046802B2 (en) 2000-10-12 2006-05-16 Rogaway Phillip W Method and apparatus for facilitating efficient authenticated encryption
US6963976B1 (en) * 2000-11-03 2005-11-08 International Business Machines Corporation Symmetric key authenticated encryption schemes
US7200227B2 (en) 2001-07-30 2007-04-03 Phillip Rogaway Method and apparatus for facilitating efficient authenticated encryption
TWI253268B (en) * 2003-09-29 2006-04-11 Via Tech Inc Microprocessor apparatus and method for optimizing block cipher cryptographic functions
TWI282685B (en) * 2005-05-27 2007-06-11 Chunghwa Telecom Co Ltd High speed AES algorithm chip
CN1323507C (zh) * 2005-06-28 2007-06-27 华为技术有限公司 分组加密算法中对短分组的处理方法
US7428306B2 (en) * 2006-04-18 2008-09-23 International Business Machines Corporation Encryption apparatus and method for providing an encrypted file system
US20070294541A1 (en) * 2006-06-16 2007-12-20 Phani Bhushan Avadhanam Methods and apparatus for encryption verification
US8687800B2 (en) * 2006-08-15 2014-04-01 Alcatel Lucent Encryption method for message authentication
GB0711711D0 (en) * 2007-06-15 2007-07-25 Ibm Method and system for encryption of blocks of data
FR2918830B1 (fr) * 2007-07-13 2009-10-30 Viaccess Sa Verification de code mac sans revelation.
EP2197144A1 (en) * 2008-12-15 2010-06-16 Thomson Licensing Methods and devices for a chained encryption mode
US8195932B2 (en) * 2009-01-30 2012-06-05 Texas Instruments Incorporated Authentication and encryption for secure data transmission
US8467532B2 (en) * 2010-01-04 2013-06-18 Tata Consultancy Services Limited System and method for secure transaction of data between a wireless communication device and a server
CN102136904A (zh) * 2011-03-30 2011-07-27 中国科学院软件研究所 一种基于分组密码的消息鉴别方法

Also Published As

Publication number Publication date
US9158931B2 (en) 2015-10-13
GB2520861B (en) 2015-12-09
GB2520778C (en) 2016-01-06
GB201401493D0 (en) 2014-03-12
US20150149771A1 (en) 2015-05-28
GB2520778B (en) 2015-12-09
GB2520861A (en) 2015-06-03
JP2015104119A (ja) 2015-06-04
TW201521411A (zh) 2015-06-01
CN104683093B (zh) 2018-01-26
GB2520778A8 (en) 2016-05-04
GB2520778B8 (en) 2016-05-18
GB2520778A (en) 2015-06-03
GB201501275D0 (en) 2015-03-11
TWI528773B (zh) 2016-04-01
CN104683093A (zh) 2015-06-03

Similar Documents

Publication Publication Date Title
JP5855696B2 (ja) 完全性検証を含むブロック暗号化方法およびブロック復号化方法
CN108809646B (zh) 安全共享密钥共享系统
JP6740902B2 (ja) 認証暗号化方法、認証復号方法および情報処理装置
JP6665204B2 (ja) データ暗号化装置及び方法、並びにデータ復号化装置及び方法
US10880100B2 (en) Apparatus and method for certificate enrollment
WO2016088453A1 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
JP2013213930A (ja) 暗号化装置、復号化装置、及びプログラム
US8577024B2 (en) Concealing plain text in scrambled blocks
KR20120072011A (ko) 무결성 검증이 가능한 데이터 암호장치, 복호장치 및 방법
JP5047198B2 (ja) 秘密計算システム、秘密計算方法、秘密計算装置、検証装置、およびプログラム
WO2016136142A1 (ja) 暗号文照合システム、方法、および記録媒体
JP6738061B2 (ja) 暗号文照合システム、方法、および記録媒体
JPWO2016067524A1 (ja) 認証付暗号化装置、認証付復号装置、認証付暗号システム、認証付暗号化方法、プログラム
JP7362676B2 (ja) データの暗号化および完全性のためのデバイス
TWI488478B (zh) 執行對稱加密的技術
US20230139104A1 (en) Authenticated encryption apparatus, authenticated decryption apparatus, authenticated encryption system, method, and computer readable medium
JP6631989B2 (ja) 暗号化装置、制御方法、及びプログラム
US11108552B1 (en) Data encryption method and system
WO2015173905A1 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
JP5431190B2 (ja) 認証付きストリーム暗号の暗号化装置、認証付きストリーム暗号の復号化装置、暗号化方法、復号化方法およびプログラム
Mukhi et al. Survey on triple system security in cloud computing
Mahmood et al. Improving Security Using Cryptography Based on Smartphone User Locations
JP2005204125A (ja) 認証システム
Ruan et al. Building blocks of the security and management engine
TW201737147A (zh) 資料加解密系統及其加解密方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150630

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151209

R150 Certificate of patent or registration of utility model

Ref document number: 5855696

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250