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

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

Info

Publication number
JP6070408B2
JP6070408B2 JP2013104377A JP2013104377A JP6070408B2 JP 6070408 B2 JP6070408 B2 JP 6070408B2 JP 2013104377 A JP2013104377 A JP 2013104377A JP 2013104377 A JP2013104377 A JP 2013104377A JP 6070408 B2 JP6070408 B2 JP 6070408B2
Authority
JP
Japan
Prior art keywords
ciphertext
initialization vector
block
data
plaintext
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
JP2013104377A
Other languages
English (en)
Other versions
JP2014224925A (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.)
Toppan Inc
Original Assignee
Toppan Inc
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 Toppan Inc filed Critical Toppan Inc
Priority to JP2013104377A priority Critical patent/JP6070408B2/ja
Publication of JP2014224925A publication Critical patent/JP2014224925A/ja
Application granted granted Critical
Publication of JP6070408B2 publication Critical patent/JP6070408B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、暗号化装置、復号装置、暗号化方法、復号方法及びプログラムに関する。
DES(Data Encryption Standard)やAES(Advanced Encryption Standard)などのブロック暗号方式が知られている。ブロック暗号方式は、共通鍵暗号方式の1つであり、例えば固定長のブロック単位で暗号化、復号を行う暗号方式である。
また、ブロック暗号方式としては、ECB(Electronic CodeBook)モード(暗号ブックモード)とCBC(Cipher Block Chaining)モード(暗号文ブロック連鎖モード)が知られている。ECBモードは、単純にブロック単位で暗号化、復号を行う。CBCモードは、前の平文ブロックを暗号化して得られた暗号文ブロックと現平文ブロックとで排他的論理和演算(XOR)を行い、排他的論理和演算の結果に対して暗号化を行う。ただし、CBCモードでは、先頭の平文ブロックの前の暗号文ブロックは存在しない。このため、先頭の平文ブロックについては、暗号文ブロックに代えて予め定めた初期化ベクタと排他的論理和演算を行って暗号化する。
例えばCBCモードによる暗号化にあたり、プリブロックを先頭に付加した平文を暗号化し、暗号化によって得られた暗号文からプリブロックに対応する暗号文ブロックを除去した結果を平文に対する暗号文とする技術が知られている(特許文献1)。
特開2012−168274号公報
CBCモードにおける初期化ベクタは、通常、暗号化を行う側と復号を行う側とで予め共有したうえで固定的に使用される。このため、CBCモードにおいては、初期化ベクタが漏洩して暗号解読の足掛かりとなる可能性がある。つまり、CBCモードにおいては、初期化ベクタの漏洩の防止を図ることが暗号化強度を高めるうえで有効な方策の1つとなる。
しかし、特許文献1に記載の技術は、あくまでも、最初の暗号文ブロックが暗号解読の足掛かりとなることの防止を目的とした構成であるために、初期化ベクタの漏洩の防止を図ることはできない。
本発明は、このような事情に鑑みてなされたもので、暗号文ブロック連鎖モードによる暗号化において、初期化ベクタの漏洩の防止を図ることにより暗号強度を向上させることを目的とする。
上述した課題を解決するために、本発明の一態様としての暗号化装置は、初期化ベクタを生成する初期化ベクタ生成部と、平文データから分割された平文ブロックのうちの先頭の平文ブロックについて前記初期化ベクタを利用して暗号化し、先頭以外の平文ブロックについて、1つ前の暗号化によって得た暗号文ブロックを利用して暗号化し、復号装置が復号に用いるべき初期化ベクタを取得するのに利用する初期化ベクタ取得情報について、1つ前のブロックを暗号化して得た暗号文ブロックを利用して暗号化する暗号化部と、前記平文データに対応する暗号文ブロックと、前記初期化ベクタ取得情報に対応する暗号文ブロックとを含む暗号文データを出力する暗号文データ出力部とを備える。
また、上記の暗号化装置において、前記暗号化部は、前記初期化ベクタ生成部が出力した初期化ベクタとしての初期化ベクタ取得情報を暗号化してもよい。
また、上記の暗号化装置において、前記暗号化部は、初期化ベクタの生成の仕方を示す情報としての前記初期化ベクタ取得情報を暗号化してもよい。
また、上記の暗号化装置において、前記暗号化部は、複数の平文データを暗号化するにあたり、共通の初期化ベクタを利用して各平文データにおける先頭の平文ブロックを暗号化し、第1の平文データの暗号化にあたり、平文ブロックと前記初期化ベクタとしての初期化ベクタ取得情報とを暗号化し、第1の平文データより後ろの第2の平文データの暗号化にあたり、平文ブロックのみを暗号化し、暗号文データ出力部は、第1の平文データの暗号化の場合、初期化ベクタ取得情報の暗号文ブロックを含む暗号文データを出力し、第2の平文データの暗号化の場合、初期化ベクタ取得情報の暗号文ブロックを含まない暗号文データを出力してもよい。
また、上記の暗号化装置において、前記暗号化部は、複数の平文データを暗号化するにあたり、共通の初期化ベクタを利用して各平文データにおける先頭の平文ブロックを暗号化し、第1の平文データの暗号化にあたり、平文ブロックと前記初期化ベクタとしての初期化ベクタ取得情報とを暗号化し、第1の平文データより後ろの第2の平文データの暗号化にあたり、前記共通の初期化ベクタを復号に利用すべきことを示す情報としての前記初期化ベクタ取得情報を暗号化し、第2の平文データより後ろの第3の平文データの暗号化にあたり、前記平文データから分割された平文ブロックのみを暗号化し、暗号文データ出力部は、第1の平文データと第2の平文データの暗号化の場合、初期化ベクタ取得情報の暗号文ブロックを含む暗号文データを出力し、第3の平文データの暗号化の場合、初期化ベクタ取得情報の暗号文ブロックを含まない暗号文データを出力してもよい。
また、上記の暗号化装置において、前記初期化ベクタ生成部は、複数の平文データを暗号化するにあたり、平文データごとに対応して異なる初期化ベクタを生成し、前記暗号化部は、前記複数の平文データのそれぞれを暗号化するにあたり、暗号化対象の平文データに対応する初期化ベクタを利用して先頭の平文ブロックを暗号化するとともに、暗号化対象の平文データに対応する初期化ベクタが特定される内容の初期化ベクタ取得情報を暗号化してもよい。
また、上記の暗号化装置において、前記暗号化部は、前記平文データから分割された平文ブロックのうち、最後の平文ブロック以外の所定の平文ブロックを暗号化して得られた暗号文ブロックを利用して初期化ベクタ取得情報を暗号化し、当該初期化ベクタ取得情報を暗号化して得られた暗号文ブロックを利用して、前記所定の平文ブロックの次の平文ブロックを暗号化してもよい。
また、上記の暗号化装置において、前記暗号化部は、前記平文データから分割された平文ブロックを暗号化して得られた暗号文ブロックにおける最後の暗号文ブロックを利用して前記前記初期化ベクタ取得情報を暗号化してもよい。
また、本発明の一態様としての復号装置は、暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号部を備える。
また、上記の復号装置において、前記復号部は、初期化ベクタ取得情報の暗号文ブロックを復号して得た初期化ベクタ取得情報を初期化ベクタとして取得してもよい。
また、上記の復号装置において、前記復号部は、初期化ベクタ取得情報の暗号文ブロックを復号して得た初期化ベクタ取得情報が示す初期化ベクタの生成の仕方に従って初期化ベクタを生成してもよい。
また、上記の復号装置において、前記復号部は、複数の暗号文データにおける第1の暗号文データを復号するにあたり、第1の暗号文データの復号によって得られた初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して先頭の暗号文ブロックを復号し、第1の暗号文データより後ろの第2の暗号文ブロックを復号するにあたり、第1の暗号文データの先頭の暗号文ブロックの復号に利用した初期化ベクタを利用してもよい。
また、上記の復号装置において、前記復号部は、複数の暗号文データにおける第1の暗号文データを復号するにあたり、第1の暗号文データの復号によって得られた初期化ベクタ取得情報として取得した初期化ベクタを利用して先頭の暗号文ブロックを復号し、第1の暗号文データより後ろの第2の暗号文データが含む初期化ベクタ取得情報の暗号文ブロックの復号によって得られた初期化ベクタ取得情報が、第1の暗号文データの復号に利用した初期化ベクタを利用して第2の暗号文データ以降の暗号文データを復号すべきことを示している場合、第2の暗号文データ以降の復号にあたり、第1の暗号文データの復号に利用した初期化ベクタにより先頭の暗号文ブロックを復号してもよい。
また、上記の復号装置において、前記復号部は、暗号文データに含まれる暗号文ブロックにおける最後と先頭以外の暗号文ブロックを復号して初期化ベクタ取得情報を取得してもよい。
また、上記の復号装置において、前記復号部は、暗号文データに含まれる暗号文ブロックのうち最後の暗号文ブロックを復号して初期化ベクタ取得情報を取得してもよい。
また、本発明の一態様としての暗号化方法は、初期化ベクタを生成する初期化ベクタ生成ステップと、平文データから分割された平文ブロックのうちの先頭の平文ブロックについて前記初期化ベクタを利用して暗号化し、先頭以外の平文ブロックについて、1つ前の暗号化によって得た暗号文ブロックを利用して暗号化し、復号装置が復号に用いるべき初期化ベクタを取得するのに利用する初期化ベクタ取得情報について、1つ前のブロックを暗号化して得た暗号文ブロックを利用して暗号化する暗号化ステップと、前記平文データに対応する暗号文ブロックと、前記初期化ベクタ取得情報に対応する暗号文ブロックとを含む暗号文データを出力する暗号文データ出力ステップとを備える。
また、本発明の一態様としての復号方法は、暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号ステップを備える。
また、本発明の一態様としてのプログラムは、コンピュータに、初期化ベクタを生成する初期化ベクタ生成ステップと、平文データから分割された平文ブロックのうちの先頭の平文ブロックについて前記初期化ベクタを利用して暗号化し、先頭以外の平文ブロックについて、1つ前の暗号化によって得た暗号文ブロックを利用して暗号化し、復号装置が復号に用いるべき初期化ベクタを取得するのに利用する初期化ベクタ取得情報について、1つ前のブロックを暗号化して得た暗号文ブロックを利用して暗号化する暗号化ステップと、前記平文データに対応する暗号文ブロックと、前記初期化ベクタ取得情報に対応する暗号文ブロックとを含む暗号文データを出力する暗号文データ出力ステップとを実行させるためのものである。
また、本発明の一態様としてのプログラムは、コンピュータに、暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号ステップを実行させるためのものである。
以上説明したように、本発明によれば、暗号文ブロック連鎖モードによる暗号化において初期化ベクタの漏洩の防止が図られ、暗号強度を向上させることが可能になるという効果が得られる。
本実施形態の暗号化装置と復号装置の構成例を示す図である。 本実施形態の暗号化装置と復号装置を具現化した例としてのICカードとリーダライタを示す図である。 CBCモードに対応する暗号化装置が実行する一般的な暗号化の手順例を示す図である。 CBCモードに対応する復号装置が実行する一般的な復号の手順例を示す図である。 第1の実施形態の暗号化装置が実行する暗号化の手順例を示す図である。 第1の実施形態の復号装置が実行する復号の手順例を示す図である。 第2の実施形態の暗号化装置が実行する暗号化の手順例を示す図である。 第2の実施形態の復号装置が実行する復号の手順例を示す図である。 第3の実施形態における暗号化装置と復号装置が実行する処理手順例を示すフローチャートである。 第4の実施形態における暗号化装置と復号装置が実行する処理手順例を示すフローチャートである。 第5の実施形態における暗号化装置と復号装置が実行する処理手順例を示すフローチャートである。 第6の実施形態における暗号化装置が実行する暗号化の手順例を示す図である。 第6の実施形態における復号装置が実行する復号の手順例を示す図である。
<第1の実施形態>
[暗号化装置と復号装置の構成例]
図1は、本実施形態の暗号化装置100と復号装置200の構成例を示している。
まず、暗号化装置100について説明する。
暗号化装置100は、平文データ出力部101、初期化ベクタ生成部102、暗号化部103、暗号文データ出力部104及び送信部105を備える。
平文データ出力部101は、暗号化対象の平文データを暗号化部103に出力する。具体的に、平文データ出力部101は、例えば平文データ記憶部(図示せず)を備え、記憶部が予め記憶している平文データを読み出し、暗号化部に出力するように構成することができる。あるいは、平文データ出力部101は、例えばデータインターフェースなどを経由して外部から入力された平文データを暗号化部103に出力するようにしてもよい。
初期化ベクタ生成部102は、初期化ベクタを生成する。初期化ベクタ(Initial Vector:IV)は、本実施形態が対応するCBCモードによるブロック暗号において、先頭の平文ブロックの暗号化の際に利用されるデータである。
本実施形態において、初期化ベクタの生成の仕方については特に限定されない。例えば、初期化ベクタ生成部102は、暗号化対象の平文データを利用して初期化ベクタを生成してよい。あるいは、初期化ベクタ生成部102は、乱数を発生させ、発生された乱数に基づいて初期化ベクタを生成してもよい。
暗号化部103は、平文データから分割された平文ブロックのうちの先頭の平文ブロックについて初期化ベクタを利用してブロック暗号化し、先頭以外の平文ブロックについて、1つ前のブロック暗号化によって得た暗号文ブロックを利用して暗号化する。
つまり、暗号化部103は、ブロック暗号方式におけるCBC(Cipher Block Chaining)モードに対応したブロック単位の暗号化を行い、暗号文ブロックを得る。
そのうえで、暗号化部103は、初期化ベクタ取得情報についても、1つ前のブロックをブロック暗号化して得た暗号文ブロックを利用してブロック暗号化する。
初期化ベクタ取得情報は、復号装置200が復号に用いるべき初期化ベクタを取得するのに利用する情報である。
初期化ベクタ取得情報は、復号装置200が復号に用いるべき初期化ベクタを取得するのに利用する情報である。
具体的に、第1の実施形態における初期化ベクタ取得情報は、初期化ベクタ生成部102が生成した初期化ベクタそのものである。つまり、この場合の復号装置200は、初期化ベクタ取得情報の暗号文ブロックのブロック復号により初期化ベクタ取得情報を取得することを以て初期化ベクタを取得することができる。
暗号文データ出力部104は、平文データに対応する暗号文ブロックと、前記初期化ベクタ取得情報に対応する暗号文ブロックとを含む暗号文データを出力する。
送信部105は、暗号文データ出力部104が出力した暗号文データを復号装置200に送信する。なお、送信部105に復号装置200を送信するための伝送路は、ネットワークあるいは所定のデータインターフェースなどであればよく、また、無線であってもよいし有線であってもよい。
次に、復号装置200について説明する。
復号装置200は、受信部201、復号部202及び平文データ生成部203を備える。
受信部201は、暗号化装置100から送信された暗号文データを受信する。
復号部202は、平文データに対応する暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して現復号対象の暗号文ブロックの復号を行う。これにより、復号対象の暗号文ブロックに対応する平文ブロックが得られる。
また、復号部202は、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号を行う。
つまり、復号部202は、受信部201にて受信された暗号文データに含まれる暗号文ブロックについて、暗号化装置100のブロック暗号化アルゴリズムに対応する復号を行って平文ブロックを得る。この際に、復号部202は、暗号文データに含まれている初期化ベクタ取得情報の暗号文ブロックを復号して初期化ベクタ取得情報を得る。そして、復号部202は、復号によって得られた初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して先頭の暗号文ブロックを復号する。
平文データ生成部203は、復号部202が復号して得た平文ブロックを利用して平文データを生成する。
[暗号化装置と復号装置の具現化例]
図2は、本実施形態の暗号化装置100と復号装置200とを具現化した一例として、ICカード300及びリーダライタ400を示している。
ICカード300は、集積回路が実装されたカードである。リーダライタ400は、ICカード300と所定の通信方式による通信を行うことで、ICカード300からのデータの読み出し、あるいはICカード300に対するデータの書き込みを行う。
図2のICカード300とリーダライタ400の組合せにおいては、ICカード300がリーダライタ400にデータを送信するときと、リーダライタ400がICカード300にデータを送信するときとがある。
ICカード300がリーダライタ400にデータを送信するにあたり送受信データが暗号化されるときには、ICカード300が暗号化装置100として機能し、リーダライタ400が復号装置200として機能する。
また、リーダライタ400がICカード300にデータを送信するにあたり送受信データが暗号化されるときには、リーダライタ400が暗号化装置100として機能し、ICカード300が復号装置200として機能する。
[CBCモードとしての一般的な暗号化と復号処理]
本実施形態の暗号化装置100と復号装置200が対応するCBCモードは、ブロック暗号方式における利用モードの1つである。ブロック暗号方式は、共通鍵暗号方式の1つであり、固定長のブロック単位で暗号化、復号を行う。そのうえで、CBCモードでは、1つ前の平文ブロックを暗号化して得られた暗号文ブロックと現平文ブロックとで排他的論理和(exclusive or)演算を行い、排他的論理和演算の結果に対して暗号化を行う。
図3は、CBCモードに対応する暗号化装置が実行する一般的な暗号化の手順例を示している。
CBCモードでの暗号化では、暗号化対象の平文データを複数の固定長のブロックに分割する。図3の例では、平文データDplnを4つの平文ブロックM1,M2,M3,M4に分割した例を示している。
上記のように、CBCモードでは、平文ブロックを暗号化するにあたり、1つ前の平文ブロックを暗号化した暗号文ブロックを利用する。しかし、先頭の平文ブロックM1については、1つ前の平文ブロックを暗号化した暗号文ブロックは存在しない。
そこで、CBCモードにおいて先頭の平文ブロックM1を暗号化するにあたっては初期化ベクタDivを利用する。初期化ベクタDivは、予め定められた固定値であり、復号装置は暗号化装置と同じ初期化ベクタDivを共有している。そして、暗号化装置は、図3に示すように、先頭の平文ブロックM1と初期化ベクタDivとの排他的論理和演算を行う(ステップS11)。
次に、暗号化装置は、ステップS11による排他的論理和演算の結果を、予め定められた共通鍵を利用してブロック単位の暗号化(ブロック暗号化)を行う(ステップS21)。これにより、平文ブロックM1に対応する暗号文ブロックC1が得られる。
次に、暗号化装置は、平文ブロックM1の次の平文ブロックM2と暗号文ブロックC1との排他的論理和演算を行う(ステップS12)。そのうえで、暗号化装置は、排他的論理和の演算結果についてブロック暗号化を実行する(ステップS22)。これにより、平文ブロックM2に対応する暗号文ブロックC2が得られる。
次に、暗号化装置は、平文ブロックM3と暗号文ブロックC2との排他的論理和演算を行い(ステップS13)、ブロック暗号化(ステップS23)を実行することにより、平文ブロックM3に対応する暗号文ブロックC3を得る。
次に、暗号化装置は、平文ブロックM4と暗号文ブロックC3との排他的論理和演算を行い(ステップS14)、ブロック暗号化(ステップS24)を実行することにより、平文ブロックM4に対応する暗号文ブロックC4を得る。
このようにして、CBCモードでは、平文ブロックM1〜M4ごとに対応する暗号文ブロックC1〜C4が得られる。そして、暗号文ブロックC1〜C4により、平文データDplnに対応する暗号文データDencが得られる。
図4は、CBCモードに対応する復号装置が図3の暗号文データDencを復号する一般的な手順例を示している。
この場合の暗号文データDencは、4つの暗号文ブロックC1〜C4を含む。復号装置は、暗号化装置が暗号化の際に利用したのと同じ初期化ベクタDivを共有している。そこで、復号装置は、先頭の暗号文ブロックC1については、まず、共通鍵を利用したブロック単位での復号(ブロック復号)を行い(ステップS31)、ステップS31による復号結果と初期化ベクタDivとの排他的論理和演算を行う(ステップS41)。これにより、暗号文ブロックC1に対応する平文ブロックM1が取得される。
また、復号装置は、2番目の暗号文ブロックC2についてブロック復号を行い(ステップS32)、復号結果と1つ前の暗号文ブロックC1との排他的論理和演算を行うことで(ステップS42)、暗号文ブロックC2に対応する平文ブロックM2を取得する。
また、復号装置は、3番目の暗号文ブロックC3についてブロック復号を行い(ステップS33)、復号結果と暗号文ブロックC2との排他的論理和演算を行うことで(ステップS43)、暗号文ブロックC3に対応する平文ブロックM3を取得する。
また、復号装置は、4番目の暗号文ブロックC4についてブロック復号を行い(ステップS34)、復号結果と暗号文ブロックC3との排他的論理和演算を行うことで(ステップS44)、暗号文ブロックC4に対応する平文ブロックM4を取得する。
このように取得された平文ブロックM1〜M4を順に配列することにより、復元された平文データDplnが取得される。
図3及び図4に示したCBCモードによる暗号化と復号にあっては、同じ固定値の初期化ベクタDivを暗号化装置と復号装置とのそれぞれが予め記憶している。そして、暗号化装置と復号装置は、それぞれが記憶している初期化ベクタDivを暗号化、復号化に利用する。このために、暗号化装置または復号装置のいずれかが記憶している初期化ベクタDivが漏洩した場合には暗号解読の足掛かりとなってしまうおそれがある。
そこで、本実施形態では、以下に説明するようにしてCBCモードにおける暗号化と復号とを行うことで、初期化ベクタDivの漏洩に関するセキュリティを向上させる。
[第1の実施形態における暗号化、復号の手順例]
図5は、本実施形態の暗号化装置100が実行する暗号化の手順例を示している。なお、図5において、図3と同様の部分については図3と同じ符号を付している。
暗号化にあたり、暗号化装置100の平文データ出力部101は、平文データDplnを暗号化部103に出力する。また、初期化ベクタ生成部102は、初期化ベクタDivを所定のアルゴリズによって生成し、生成した初期化ベクタDivを暗号化部103に出力する。
暗号化部103は、平文データ出力部101から入力した平文データDplnを、4つの平文ブロックM1,M2,M3,M4に分割する。次に、暗号化部103は、先頭の平文ブロックM1と初期化ベクタ生成部102が生成した初期化ベクタDivとの排他的論理和演算を実行する(ステップS11)。暗号化部103は、ステップS11の演算結果を共通鍵によりブロック暗号化する(ステップS21)。これにより、平文ブロックM1に対応する暗号文ブロックC1が得られる。
次に、暗号化部103は、2番目の平文ブロックM2と、前の平文ブロックM1の暗号化により得られた暗号文ブロックC1との排他的論理和演算を行い(ステップS12)、ステップS12の演算結果をブロック暗号化し(ステップS22)、暗号文ブロックC2を得る。
次に、暗号化部103は、3番目の平文ブロックM3と、前の平文ブロックM2に対応する暗号文ブロックC2との排他的論理和演算(ステップS13)と、ステップS13の演算結果のブロック暗号化(ステップS23)により暗号文ブロックC3を得る。
次に、暗号化部103は、4番目の平文ブロックM4と、前の平文ブロックM3に対応する暗号文ブロックC3との排他的論理和演算(ステップS14)と、ステップS14の演算結果のブロック暗号化(ステップS24)により暗号文ブロックC4を得る。
次に、暗号化部103は、平文ブロックM1の暗号化に利用した初期化ベクタDivと、前回の暗号化により平文ブロックM4を暗号化して得られた暗号文ブロックC4との排他的論理和演算を実行する(ステップS15)。暗号化部103は、ステップS15の演算結果をブロック暗号化することにより(ステップS25)、初期化ベクタDivに対応する暗号文ブロックC5を得る。
第1の実施形態において、ステップS15にて排他的論理和演算に利用する初期化ベクタDivが初期化ベクタ取得情報である。つまり、ステップS15は、初期化ベクタ取得情報と1つ前の暗号化により得られた暗号文ブロックとの排他的論理和演算を実行する処理である。
このように本実施形態においては、CBCモードによる暗号化にあたり、平文データDplnから分割された平文ブロックM1〜M4ごとに対応する暗号文ブロックC1〜C4に加えて、初期化ベクタDivに対応する暗号文ブロックC5を得る。暗号文データ出力部104は、暗号文ブロックC1〜C4に対してさらに暗号文ブロックC5を含めて暗号文データDencを生成し、送信部105に出力する。
送信部105は、暗号文データ出力部104が出力した暗号文データDencを復号装置に対して送信する。
このように、本実施形態の暗号化装置100は、平文データDplnから分割した平文ブロックとともに初期化ベクタ取得情報についてもブロック暗号化する。そして、暗号化装置100は、平文ブロックを暗号化した暗号文ブロックと、初期化ベクタDivを暗号化した暗号文ブロックとを利用して暗号文データDencを生成する。
次に、図6を参照して、本実施形態の復号装置200が実行する復号の手順例を示している。なお、図6において、図4と同様の部分については図4と同一符号を付している。
復号装置200の復号部202は、受信部201にて受信された暗号文データDencを入力する。
復号部202は、入力した暗号文データDencにおける先頭の暗号文ブロックC1を復号するにあたり、先に、初期化ベクタ取得情報としての初期化ベクタDivに対応する暗号文ブロックC5を復号して初期化ベクタDivを得る。
つまり、復号部202は、暗号文ブロックC5について共通鍵を利用して復号する(ステップS35)。次に、復号部202は、ステップS35による復号結果と暗号文ブロックC5の1つ前の暗号文ブロックC4との排他的論理和演算を実行する(ステップS45)。復号部202は、ステップS45による演算結果として初期化ベクタDivを得ることができる。
そして、上記のように初期化ベクタDivを取得した後、復号部202は、先頭の暗号文ブロックC1を復号する。
つまり、復号部202は、暗号文ブロックC1について共通鍵を利用してブロック復号を行う(ステップS31)。次に、復号部202は、ステップS31による復号結果と、ステップS35、S45により取得した初期化ベクタDivとの排他的論理和演算を実行し(ステップS41)、平文ブロックM1を得る。
また、復号部202は、2番目〜4番目の暗号文ブロックC2〜C4については、それぞれ、1つ前の暗号文ブロックC1〜C3をそれぞれ利用した復号処理によって、平文ブロックM2〜M4を得る。
つまり、復号部202は、暗号文ブロックC2については、ブロック復号を行ったうえで(ステップS32)、その復号結果と暗号文ブロックC1との排他的論理和演算を実行し(ステップS42)、平文ブロックM2を得る。
また、復号部202は、暗号文ブロックC3についてブロック復号を行ったうえで(ステップS33)、その復号結果と暗号文ブロックC2との排他的論理和演算を実行し(ステップS43)、平文ブロックM3を得る。
また、復号部202は、暗号文ブロックC4についてブロック復号を行ったうえで(ステップS34)、その復号結果と暗号文ブロックC3との排他的論理和演算を実行し(ステップS44)、平文ブロックM4を得る。
上記の復号処理によって本実施形態の復号部202は、暗号化された初期化ベクタDivと平文ブロックM1〜M4を得ることができる。平文データ生成部203は、復号処理によって得た平文ブロックM1〜M4を連結して、平文データDplnを生成することができる。
本実施形態において、先頭の暗号文ブロックC1を復号するには、初期化ベクタDivの暗号文ブロックC5を復号しておく必要がある。つまり、本実施形態における復号では、初期化ベクタDivの暗号文ブロックと先頭の暗号文ブロックC1との復号順の関係としては、初期化ベクタDivの暗号文ブロックC5の復号が先で、先頭の暗号文ブロックC1の復号が後になる。
ただし、他の暗号文ブロックの復号順については特に制限されるものではない。一例として、暗号文ブロックC2、C5、C4、C3、C2の順でブロック復号を行っても、暗号文ブロックC5のほうが暗号文ブロックC1よりも先に復号されているので、結果的に、暗号文ブロックC1〜C5を全て適切に復号できる。
図5及び図6の説明から理解されるように、第1の実施形態においては、暗号化装置100が暗号化を行うにあたり初期化ベクタDivを生成し、生成した初期化ベクタDivを利用して先頭の平文ブロックを暗号化するようにしている。そのうえで、暗号化装置100は、平文データDplnとともに初期化ベクタDiv(初期化ベクタ取得情報)をブロック暗号化し、暗号文データDencに初期化ベクタDivの暗号文ブロックを含めるようにしている。
復号装置200は、受信した暗号文データDencに含まれる初期化ベクタDiv(初期化ベクタ取得情報)の暗号文ブロックを復号して初期化ベクタDivを取得することができる。これにより、復号装置200は、取得した初期化ベクタDivを利用して先頭の暗号文ブロックを復号することができる。
このような構成であれば、暗号化装置100と復号装置200との間で同じ初期化ベクタDivを予め記憶させておく必要がない。また、初期化ベクタは、暗号化装置100と復号装置200との伝送路上では暗号化されているので、暗号文ブロックの解読ができない限りは初期化ベクタを得ることができない。これにより、本実施形態では、初期化ベクタの漏洩防止が図られ、暗号強度をさらに向上させることができる。
<第2の実施形態>
[第2の実施形態における暗号化、復号の手順例]
続いて、第2の実施形態について説明する。
図7は、第2の実施形態における暗号化装置100が実行する暗号化の手順例を示している。なお、図7において、図5と同一部分には同一符号を付して説明を省略する。
図7に示すように、第2の実施形態における暗号化装置100の暗号化部103は、初期化ベクタ生成部102が生成した初期化ベクタDivを入力して初期化ベクタ生成情報Dgenを生成する情報変換を実行する(ステップS51)。
初期化ベクタ生成情報Dgenは、初期化ベクタ取得情報として初期化ベクタDivの生成の仕方を示す情報である。一例として、初期化ベクタDivが平文ブロックM2、M3を利用した所定の演算式の演算により生成されたものであった場合、暗号化部103は、ステップS51として、上記の演算式を示す情報を初期化ベクタ生成情報Dgenとして生成する。
暗号化部103は、初期化ベクタ生成情報Dgenについて、ステップS15、S25の処理により暗号文ブロックC5に暗号化する。暗号文データ出力部104は、第1の実施形態の場合と同様に、平文ブロックM1〜M4に対応する暗号文ブロックC1〜C4と、初期化ベクタ生成情報Dgenに対応する暗号文ブロックC5とにより生成した暗号文データDencを出力する。
図8は、第2の実施形態における復号装置200が実行する復号の手順例を示している。なお、図8において、図6と同一部分には同一符号を付して説明を省略する。
第2の実施形態においては、先頭の暗号文ブロックC1の復号に先立って、初期化ベクタ生成情報Dgenに対応する暗号文ブロックC5を、ステップS35、S45により復号して初期化ベクタ生成情報Dgenを得る。
復号部202は、初期化ベクタ生成情報Dgenが示す内容に従って初期化ベクタを生成する(ステップS52)。前述の例のように、初期化ベクタ生成情報Dgenが、平文ブロックM2、M3を利用した所定の演算式の演算により初期化ベクタDivを生成すべきことを示している場合、復号部202は、以下のように初期化ベクタを生成する。つまり、復号部202は、ステップS32、S42により復号した平文ブロックM2と、ステップS33、S43により復号した平文ブロックM3とを取得する。そのうえで、復号部202は、取得した平文ブロックM2、M3を初期化ベクタ生成情報Dgenが示す演算式に代入して演算を実行する。この演算結果として、初期化ベクタDivが生成される。
復号部202は、先頭の暗号文ブロックC1を復号する際には、ステップS52により生成した初期化ベクタDivをステップS41の排他的論理和演算に利用する。
<第3の実施形態>
続いて、第3の実施形態について説明する。
暗号化装置100と復号装置200との間では、例えば1回のセッションにおいて、暗号文データDencの送受信を複数回行うことができる。なお、ここでのセッションとは、暗号化装置100と復号装置200との接続が開始されてから終了までにおける通信を指す。
第3の実施形態では、1セッションにおいて暗号文データDencの送受信を複数回行う場合において、1回の暗号文データDencの送受信ごとに初期化ベクタDivを変更して通信を行う。
図9のフローチャートは、第3の実施形態における暗号化装置100と復号装置200が1セッションにおいて実行する処理手順例を示している。
現セッションにおける1番目の暗号文データDencの送受信にあたり、暗号化装置100における初期化ベクタ生成部102は、初期化ベクタ(図では「IV」と表記)を生成する(ステップS111−1)。
次に、暗号化部103は、ステップS111−1により生成された初期化ベクタを利用して例えば図5または図7にて説明したように、平文ブロックと初期化ベクタ取得情報の暗号化を行う(ステップS112−1)。
暗号文データ出力部104は、平文ブロックの暗号文ブロックと初期化ベクタ取得情報の暗号文ブロックとを含む暗号文データDencを生成し、生成した暗号文データDencを送信部105から復号装置200に対して送信させる(ステップS113−1)。
ステップS113−1により送信された暗号文データDencは、復号装置200の受信部201にて受信される(ステップS211−1)。復号部202は、ステップS211−1により受信された暗号文データDencに含まれる暗号文ブロックの復号を実行する(ステップS212−1)。ステップS212−1による暗号文ブロックの復号は、図6または図8にて説明したように、初期化ベクタ取得情報(初期化ベクタDiv、初期化ベクタ生成情報)の暗号文ブロックのブロック復号の処理を含んでいる。
平文データ生成部203は、ステップS212−1により得られた平文ブロックを連結して平文データDplnを生成する(ステップS213−1)。
ステップS111−1〜S113−1により1番目の暗号文データDencを送信した後において、さらに2番目の暗号文データDencを送信すべきこととなった場合、初期化ベクタ生成部102は、ステップS111−1のときとは異なる初期化ベクタDivを生成する(ステップS111−2)。つまり、初期化ベクタ生成部102は、暗号文データDencの送信ごとに初期化ベクタDivを変更する。このように初期化ベクタDivを変更するにあたり、初期化ベクタ生成部102は乱数を発生させればよい。あるいは、初期化ベクタ生成部102は、予め定められた所定の変更規則や演算式などに従って初期化ベクタDivを変更してもよい。
次に、暗号化部103は、ステップS111−2により生成された初期化ベクタDivを利用して2番目の平文データDplnの暗号化と初期化ベクタ取得情報の暗号化を行う(ステップS112−2)。
暗号文データ出力部104は、ステップS112−2によって得られた平文ブロックの暗号文ブロックと初期化ベクタ取得情報の暗号文ブロックとを含む暗号文データDencを生成し、復号装置200に対して送信する(ステップS113−2)。
また、上記のように2番目の暗号文データDencを送信した後において、さらに3番目の暗号文データDencを送信すべきこととなった場合、初期化ベクタ生成部102は、さらに、ステップS111−1、S111−2のときとは異なる初期化ベクタDivを生成する(ステップS111−3)。
暗号化部103は、ステップS111−3により生成された初期化ベクタDivを利用して3番目の平文データDplnの平文ブロックと初期化ベクタ取得情報の暗号化を行う(ステップS112−3)。
暗号文データ出力部104は、ステップS112−3によって得られた平文ブロックの暗号文ブロックと初期化ベクタ取得情報の暗号文ブロックとを含む暗号文データDencを生成し、復号装置200に対して送信する(ステップS113−3)。
以降、同様にして、暗号化装置100は、新たに平文データDplnを暗号化するにあたり前回までとは異なる初期化ベクタDivを生成する。そして、暗号化装置100は、生成した初期化ベクタDivを利用して、今回の平文データDplnの暗号化と初期化ベクタ取得情報の暗号化を行う。
復号装置200は、ステップS113−2により送信された暗号文データDencを受信し(ステップS211−2)、初期化ベクタ取得情報の暗号文ブロックのブロック復号を伴う暗号文データDencの復号を実行する(ステップS212−2)。平文データ生成部203は、ステップS212−2により得られた平文ブロックを連結して平文データDplnを生成する(ステップS213−2)。
また、復号装置200は、ステップS113−3により送信された暗号文データDencを受信し(ステップS211−3)、初期化ベクタ取得情報の暗号文ブロックのブロック復号を伴う暗号文データDencの復号を実行する(ステップS212−3)。
平文データ生成部203は、ステップS212−3により得られた平文ブロックを連結して平文データDplnを生成する(ステップS213−3)。
以降、同様にして、復号装置200は、新たに暗号文データDencを受信するごとに、初期化ベクタ取得情報の暗号文ブロックのブロック復号を伴う暗号文データDencの復号を実行して平文データDplnを得る。
このように、1回の暗号文データDencの送受信ごとに対応して初期化ベクタDivを変更することにより、初期化ベクタDivの漏洩に対するセキュリティをさらに強化することができる。
なお、1セッションにおいては、暗号化しないデータを送受信する通信も含まれてよいのであるが、図9においては、例えば説明を簡単にするための便宜上、暗号文データDencを送受信する通信のみを示している。
なお、第3の実施形態における1回の暗号分データDencの送受信にあたり、暗号化装置100が暗号文データDencに含める初期化ベクタ取得情報は、初期化ベクタDivそのものであってもよいし、初期化ベクタ生成情報であってもよい。
また、第3の実施形態においては、セッションにおける初期化ベクタDivとしての初期化ベクタ取得情報を含む暗号分データDencの送受信と、初期化ベクタ生成情報としての初期化ベクタ取得情報を含む暗号分データDencの送受信とが混在してもよい。この場合において、初期化ベクタDivとしての初期化ベクタ取得情報を含む暗号分データDencの送受信と、初期化ベクタ生成情報としての初期化ベクタ取得情報を含む暗号分データDencの送受信は、所定回数ずつ交互に行われてもよいし、ランダムな順序で行われてもよい。
<第4の実施形態>
続いて、第4の実施形態について説明する。第4の実施形態においては、暗号化装置100と復号装置200との間で、1セッションにおいて複数回の暗号文データDencの送受信を行う場合において、各回に対応する暗号化と復号について共通の初期化ベクタDivを使用する。
図10のフローチャートは、第4の実施形態に対応して暗号化装置100と復号装置200が1セッションにおいて実行する処理手順例を示している。
現セッションにおける1番目の暗号文データDencの送受信にあたり、暗号化装置100における初期化ベクタ生成部102は、初期化ベクタDivを生成する(ステップS311−1)。
次に、暗号化部103は、ステップS311−1により生成された初期化ベクタDivを利用して例えば図5または図7にて説明したように暗号化を行う(ステップS312−1)。つまり、暗号化部103は、平文データを分割した平文ブロックについて暗号化した暗号文ブロックを得るとともに、初期化ベクタ取得情報を暗号化した暗号文ブロックを得る。
暗号文データ出力部104は、平文ブロックの暗号文ブロックと初期化ベクタ取得情報の暗号文ブロックとを含む暗号文データDencを生成し、送信部105から復号装置200に対して生成した暗号文データDencを送信させる(ステップS313−1)。
また、暗号化部103は、ステップS311−1により生成した初期化ベクタDivを保持する(ステップS314−1)。これにより、現セッションにおける1番目(第1)の平文データDplnを暗号化するのに利用した初期化ベクタDivを、以降の平文データDplnの暗号化に利用することができる。
ステップS313−1により送信された暗号文データDencは、復号装置200の受信部201が受信する(ステップS411−1)。復号部202は、ステップS411−1により受信された暗号文データDencに含まれる暗号文ブロックを復号する(ステップS412−1)。
ステップS412−1による暗号文ブロックの復号は、図6または図8にて説明したように、初期化ベクタ取得情報(初期化ベクタDiv、初期化ベクタ生成情報)の暗号文ブロックのブロック復号を伴う。暗号化部103は、復号により得られた初期化ベクタ取得情報に基づいて取得した初期化ベクタDivを先頭の暗号文ブロックの復号時の排他的論理和演算に利用する。
平文データ生成部203は、ステップS412−1により得られた平文ブロックを連結して平文データDplnを生成する(ステップS413−1)。
次に、復号部202は、ステップS412−1の復号によって得られた初期化ベクタDivを保持する(ステップS414−1)。これにより、現セッションにおける以降の暗号文データDencの復号に、1番目(第1)の暗号文データDencの復号に利用した初期化ベクタDivを利用することが可能になる。
また、ステップS311−1〜S313−4により暗号文データDencの送信と初期化ベクタDivの保持を実行した後において、さらに2番目(第2)の暗号文データDencを送信すべきこととなった場合、暗号化装置100は、以下の処理を実行する。
つまり、暗号化部103は、ステップS314−1により保持している初期化ベクタを利用して2番目(第2)の平文データDplnの暗号化を行う(ステップS312−2)。
そして、暗号文データ出力部104は、平文ブロックに対応する暗号文ブロックを含み、初期化ベクタ取得情報に対応する暗号文ブロックを含まない暗号文データDencを生成し、復号装置200に対して送信する(ステップS313−2)。
このように、2番目の平文データDplnの暗号化にあたり1番目の平文データDplnの暗号化に利用したのと同じ初期化ベクタDivを利用することで、初期化ベクタ生成部102が改めて初期化ベクタDivを生成する必要はない。これにより、初期化ベクタDivを生成するステップを省略することができる。
また、復号装置200側においても、ステップS414−1により1番目の暗号文データDencを復号するのに利用した初期化ベクタDivを保持しているため、2番目の暗号文データDencには初期化ベクタ取得情報を含めなくともよい。このため、ステップS312−2の暗号化にあたっては、暗号化部103は、初期化ベクタ取得情報の暗号化を伴うことなく、平文ブロックのみのブロック暗号を実行すればよい。
また、ステップS312−2,S313−2により暗号文データDencを送信した後において、さらに3番目の暗号文データDencを送信すべきこととなった場合にも、暗号化装置100は、ステップS312−2、S313−2と同様の処理を実行する。
つまり、暗号化部103は、ステップS314−1により保持している初期化ベクタDivを利用して、2番目の平文データDplnの暗号化を行う(ステップS312−3)。この際、暗号化部103は、初期化ベクタ取得情報の暗号化を省略して、平文ブロックのみのブロック暗号化を実行すればよい。
また、暗号文データ出力部104は、平文ブロックに対応する暗号文ブロックを含み、初期化ベクタ取得情報に対応する暗号文ブロックは含まない暗号文データDencを生成し、復号装置200に対して送信する(ステップS313−3)。
そして、暗号化部103と暗号文データ出力部104は、4番目以降の平文データDplnを暗号化する際にも、ステップS312−3及びS313−3と同様の処理により、平文ブロックに対応する暗号文ブロックのみを含む暗号文データDencを送信する。
復号装置200における受信部201は、ステップS313−2により送信された2番目の暗号文データDencを受信する(ステップS411−2)。
復号装置200の復号部202は、ステップS411−2にて受信された2番目の暗号文データDencについて、ステップS414−1により保持している初期化ベクタDivを利用して復号する(ステップS412−2)。ステップS414−1にて保持した初期化ベクタDivは、1番目の暗号文データDencの復号に際して利用した初期化ベクタDivである。
また、2番目の暗号文データDencには、初期化ベクタ取得情報の暗号文ブロックは含まれていない。従って、復号部202は、ステップS412−2においては、図4に示したように、初期化ベクタ取得情報の復号を伴わない復号を実行すればよい。
平文データ生成部203は、ステップS412−2により復号された平文ブロックを連結して平文データDplnを生成する(ステップS413−2)。
また、復号装置200の受信部201と復号部202は、3番目の暗号文データDencを受信するのに応じて(ステップS411−3)、ステップS412−2と同様に、3番目の暗号文データDencの復号を実行する(ステップS412−3)。つまり、復号部202は、ステップS414−1にて保持された初期化ベクタDivを利用し、初期化ベクタ取得情報の復号を伴わない暗号文データDencの復号を実行する。平文データ生成部203は、ステップS412−3により得られた平文ブロックにより平文データDplnを生成する(ステップS413−3)。
そして、復号装置200の復号部202は、4番目以降の暗号文データDencが受信されるのに応じて、S412−2、S412−3と同様に、ステップS414−1にて保持された初期化ベクタDivを利用し、初期化ベクタ取得情報の復号を伴わない暗号文データDencの復号を実行する。平文データ生成部203は、復号部202によって得られた平文ブロックにより平文データDplnを生成する
このように1セッションにおける暗号化と復号を行うことで、暗号化装置100は、2番目以降の平文データDplnの暗号化にあたって、初期化ベクタDivを生成する必要がなくなり、初期化ベクタ取得情報の暗号化の処理を省略できる。これに伴い、復号装置200においても、2番目以降の暗号文データDencの復号にあたって、初期化ベクタ取得情報を取得するための復号を省略できる。これにより、1セッションにおける暗号化と復号における処理時間の短縮と処理負荷の軽減を図ることができる。
<第5の実施形態>
続いて、第5の実施形態について説明する。第5の実施形態では、1シーケンスの通信において、暗号化装置100が、1番目の暗号文データDencの復号に利用した初期化ベクタDivを、2番目以降の暗号文データDencの復号にも利用するように復号装置200に指示を行う。この指示にあたっては、暗号化装置100が初期化ベクタの利用の仕方を示す初期化ベクタ取得情報を生成し、生成した初期化ベクタ取得情報の暗号文ブロックを暗号文データDencに含めて復号装置200に送信する。
図11のフローチャートは、第5の実施形態に対応して暗号化装置100と復号装置200が1セッションにおいて実行する処理手順例を示している。
現セッションにおける1番目(第1)の暗号文データDencの送受信にあたり、暗号化装置100は、初期化ベクタDivの生成(ステップS511−1)、1番目(第1)の平文データの暗号化(ステップS512−1)、暗号文データDencの復号装置200への送信(ステップS513−1)を実行する。また、暗号化部103は、ステップS511−1により生成した初期化ベクタDivを保持する(ステップS514−1)
このように、ステップS511−1〜S514−1の処理は、それぞれ、図10のステップS311−1〜S314−1の処理と同様でよい。
ステップS513−1による暗号文データDencの送信に応じて、復号装置200は、暗号文データDencの受信(ステップS611−1)、暗号文データDencの復号(ステップS612−1)、平文データDplnの生成(ステップS613−1)、初期化ベクタDivの保持(ステップS614−1)を実行する。
具体的に、ステップS611−1〜S614−1の処理は、それぞれ、図10のステップS411−1〜S414−1の処理と同様である。
また、暗号化装置100は、上記のように1番目の暗号文データDencの送信と初期化ベクタDivの保持を実行した後において、さらに2番目(第2)の暗号文データDencを送信すべきこととなった場合、以下の処理を実行する。
まず、暗号化部103は、初期化ベクタ取得情報として、復号における初期化ベクタDivの利用の仕方を示す情報を生成する(ステップS511−2)。この場合における初期化ベクタ取得情報は、1番目の暗号文データDencを復号する際に利用した初期化ベクタDivを、2番目以降の暗号文データDencを復号する際にも利用すべきことを示す。
次に、暗号化部103は、2番目(第2)の平文データDplnを暗号化する(ステップS512−2)。この際、暗号化部103は、ステップS514−1により保持されている初期化ベクタDivを利用して暗号化を行う。このように、2番目の平文データの暗号化では、1番目の平文データを暗号化する際に利用した初期化ベクタDivを使用する。このため、2番目の平文データDplnの暗号化にあたり、初期化ベクタ生成部102が初期化ベクタDivを生成する処理が省略される。
また、ステップS512−2による2番目の平文データDplnの暗号化にあたり、暗号化部103は、ステップS511−2により生成した初期化ベクタ取得情報をブロック暗号化する。
暗号文データ出力部104は、ステップS512−2の暗号化により得られた、平文ブロックごとに対応する暗号文ブロックと、初期化ベクタ取得情報に対応する暗号文ブロックとを含む暗号文データDencを生成する。暗号文データ出力部104は、生成した暗号文データDencを復号装置200に送信する(ステップS513−2)。
また、上記のように2番目の暗号文データDencを送信した後において、3番目(第3)の暗号文データDencを送信すべきこととなった場合、暗号化部103は、3番目(第3)の平文データDplnを暗号化する(ステップS512−3)。ステップS512−3の暗号化にあたり、暗号化部103は、ステップS514−1により保持されている初期化ベクタDivを利用する。また、ステップS512−3の暗号化にあたり、暗号化部103は、例えば図3に示したように、初期化ベクタ取得情報のブロック暗号化を伴わずに、平文ブロックのブロック暗号化のみを行う。
暗号文データ出力部104は、ステップS512−3の暗号化により得られた、平文ブロックごとに対応する暗号文ブロックを含む暗号文データDencを生成し、復号装置200に送信する(ステップS513−3)。
暗号化部103と暗号文データ出力部104は、4番目以降の平文データDplnを暗号化する際には、ステップS512−3、S513−3と同様の処理により、平文ブロックに対応する暗号文ブロックのみを含む暗号文データDencを送信する。
復号装置200は、ステップS513−2により2番目の暗号文データDencが送信されたのに応じて以下の処理を実行する。
つまり、復号装置200における受信部201は、2番目の暗号文データDencを受信する(ステップS611−2)。復号部202は、ステップS611−2にて受信された2番目の暗号文データDencについて、ステップS614−1にて保持した初期化ベクタDivを利用して復号する(ステップS612−2)。
ステップS612−2による復号は以下のように行われる。例えば、復号部202は、先頭の暗号文ブロックの復号に先立って、初期化ベクタ取得情報の暗号文ブロックの復号を行い、初期化ベクタ取得情報を得る。
復号部202は、復号により得た初期化ベクタ取得情報が示す初期化ベクタDivの利用の仕方を認識する。この場合、復号部202は、2番目以降の暗号文データDencの復号を行うにあたり、1番目の暗号文データDencの復号の際に利用した初期化ベクタを利用すべきことを認識する。
そこで、復号部202は、2番目の暗号文データDencにおける先頭の暗号文ブロックの復号にあたり、ステップS614−1にて保持されている初期化ベクタDivを利用する。
平文データ生成部203は、ステップS612−2により得られた平文データにより平文データDplnを生成する(ステップS613−2)。
復号装置200は、ステップS513−3により3番目の暗号文データDencが送信されたのに応じて以下の処理を実行する。
つまり、復号装置200における受信部201は、2番目の暗号文データDencを受信する(ステップS611−3)。復号部202は、ステップS611−3にて受信された3番目の暗号文データDencについて、ステップS614−1にて保持した初期化ベクタDivを利用して復号する(ステップS612−3)。つまり、復号部202は、1番目の暗号文データDencの復号の際に利用した初期化ベクタにより復号を行う。
また、3番目の暗号文データには初期化ベクタ取得情報の暗号文ブロックは含まれていないため、ステップS612−3の復号にあたり、復号部202は、図4に例示したように、平文ブロックのみのブロック復号を行う。平文データ生成部203は、ステップS612−3により得られた平文データにより平文データDplnを生成する(ステップS613−3)。
この後、4番目以降の暗号文データDencが暗号化装置100から送信されるのに応じて、復号部202は、ステップS611−3〜S613−3と同様の処理により復号と平文データDplnの生成を行えばよい。
このような第5の実施形態の手順によれば、3番目以降の平文データDplnの暗号化から、初期化ベクタ取得情報をブロック暗号化する処理を省略することができる。また、3番目以降の暗号文データの復号から、初期化ベクタ取得情報をブロック復号する処理を省略することができる。これにより、第5の実施形態においても暗号化と復号における処理時間の短縮と処理負荷の軽減を図ることができる。
なお、第4及び第5の実施形態では、次のセッションにおいて前のセッションのときとは異なる初期化ベクタDivを利用すればよい。つまり、セッションごとに異なる初期化ベクタDivが利用されるようにすればよい。
また、例えば1つのセッションにおいては複数のトランザクションが実行され、1つのトランザクションにおいて複数の暗号文データDencの送受信を実行することができる。ここでのトランザクションは、関連する1以上のデータの送受信をいう。
そこで、第4及び第5の実施形態においては、トランザクションごとに異なる初期化ベクタDivを利用するようにしたうえで、1トランザクションにおいては、共通の初期化ベクタDivを利用するようにしてもよい。また、例えば1つのセッションまたはトランザクションにおいて、2回以上の所定回数による暗号文データDencの送受信ごとに初期化ベクタDivを変更していくようにしてもよい。
なお、第4の実施形態と第5の実施形態において、1回目の平文データとともに暗号化する初期化ベクタ取得情報は、初期化ベクタDivそのものであってもよいし、初期化ベクタ生成情報であってもよい。
また、第4の実施形態において、暗号化装置100は、図10のステップS311−1〜S314−1と、これに続くステップS312−2、S313−2の処理を実行した後においては、同図のステップS312−3、S313−3のように、ステップS312−2、S313−2と同じ処理を、必ずしも、セッションあるいはトランザクションの終了まで実行しなくともよい。
つまり、暗号化装置100は、1つのセッションあるいはトランザクションにおいて、ステップS311−1〜S314−1の処理(ステップS312−1において第1の平文データの暗号化を含む)と、これに続く所定回数のステップS312−2、S313−2と同様の処理(ステップS312−2において第2の平文データの暗号化を含む)による単位シーケンスを実行した後においては、順次、次の単位シーケンスが繰り返して実行されるようにしてもよい。
この際、ステップS312−2、S313−2と同様の処理の繰り返し回数は、単位シーケンス間で同じであってもよいし、適宜、異なっていてもよい。
また、第5の実施形態においても、図11のステップS511−1〜S514−1と、これに続くステップS511−2〜S513−2、ステップS512−3、S513−3の処理を実行した後においては、必ずしも、ステップS512−3、S513−3と同じ処理をセッションあるいはトランザクションの終了まで実行しなくともよい。
つまり、暗号化装置100は、1つのセッションあるいはトランザクションにおいて、ステップS511−1〜S514−1の処理(ステップS512−1において第1の平文データの暗号化を含む)と、これに続くステップS511−2〜S513−2の処理(ステップS512−2において第2の平文データの暗号化を含む)と、これに続く所定回数のステップS512−3、S513−3の処理(ステップS512−3において第3の平文データの暗号化を含む)による単位シーケンスを実行した後においては、順次、次の単位シーケンスが繰り返して実行されるようにしてもよい。
この際、S512−3、S513−3と同様の処理の繰り返し回数は、単位シーケンス間で同じであってもよいし、適宜、異なっていてもよい。
さらに、例えば1つのセッションあるいはトランザクションにおいて、第3、第4、第5の実施形態として図9、図10、図11に示した処理のうちの2以上を複合的に実行するようにしてもよい。
一例として、例えば1つのセッションあるいはトランザクションにおいて、図9に示す所定回数分の暗号文データDencの送受信による単位シーケンスを実行し、続けて図10に対応する単位シーケンスを実行し、続けて図11に対応する単位シーケンスを実行し、以降、これらの単位シーケンスを定められた順序にしたがって順次実行していく、というものである。
[第6の実施形態]
続いて、第6の実施形態について説明する。
第1の実施形態として図5に示した暗号化の手順では、平文ブロックM1〜M5を順次ブロック暗号化した後、最後に、平文ブロックM5の暗号文ブロックC5を利用して初期化ベクタ取得情報である初期化ベクタDivをブロック暗号化している。
これに対して、第6の実施形態においては、2番目以降から最後の1つ前までのブロック暗号化順のうちのいずれかにおいて、初期化ベクタ取得情報のブロック暗号化が行われる。
図12は、第6の実施形態における平文データDplnの暗号化手順の一例を示している。なお、図12において図5と同様の部分については同一符号を付している。
図12においても、平文データDplnは4つの平文ブロックM1〜M4に分割されている。そのうえで、第6の実施形態における暗号化装置100の暗号化部103は、まず、先頭の平文ブロックM1と初期化ベクタDivとの排他的論理和演算を行い(ステップS11)、ステップS11の演算結果をブロック暗号化して(ステップS21)、暗号文ブロックC1を得る。
次に、暗号化部103は、ステップS11で先頭の平文ブロックM1との排他的論理和演算に利用した初期化ベクタDiv(初期化ベクタ取得情報)と、前のブロック暗号化により暗号化された暗号文ブロックC1との排他的論理和演算を実行する(ステップS15)。次に、暗号化部103は、ステップS15による演算結果をブロック暗号化することにより(ステップS25)、初期化ベクタ取得情報に対応する暗号文ブロックC5を得る。
つまり、図12の例では、1番目から5番目までによるブロックの暗号化の順序において2番目に初期化ベクタ取得情報のブロックの暗号化を行う。
続いて、暗号化部103は、3番目として、平文ブロックM2について、初期化ベクタ取得情報に対応する暗号文ブロックC5との排他的論理和演算を行い(ステップS12)、演算結果をブロック暗号化する(ステップS22)。これにより、平文ブロックM2に対応する暗号文ブロックC2が得られる。
次に、暗号化部103は、4番目の暗号化として、平文ブロックM3について、暗号文ブロックC2との排他的論理和演算を行い(ステップS13)、演算結果をブロック暗号化する(ステップS23)。これにより、平文ブロックM3に対応する暗号文ブロックC3が得られる。
最後に、暗号化部103は、5番目の暗号化として、平文ブロックM4について、暗号文ブロックC3との排他的論理和演算を行い(ステップS14)、演算結果をブロック暗号化する(ステップS24)。これにより、平文ブロックM4に対応する暗号文ブロックC4が得られる。
暗号文データ出力部104は、暗号文ブロックC1,C5,C2,C3,C4の順で配列した暗号文データDencを生成し、復号装置200に送信する。
次に、図13を参照して、復号装置200が図12の手順により得られた暗号文データDencを復号するための手順例を示している。なお、図13において図6と同様の部分については同一符号を付している。
図13の場合、暗号文データDencは、暗号文ブロックC1,C5,C2,C3,C4の配列となっているが、これらの暗号文ブロックに対する復号の順序に関しては図6と同様でよい。つまり、復号部202は、先頭の暗号文ブロックC1を復号するにあたり、先に、初期化ベクタ取得情報としての初期化ベクタDivに対応する暗号文ブロックC5を復号して初期化ベクタDivを得るようにすればよい。
図13の例では、初期化ベクタDivを得るにあたり、復号部202は、暗号文データDencにおける暗号文ブロックのうちから、2番目に配列されている暗号文ブロックC5を取得する。そして、復号部202は、取得した暗号文ブロックC5について、1つ前に暗号化された暗号文ブロックC1を利用して復号を行い(ステップS35、S45)、初期化ベクタ取得情報としての初期化ベクタDivを得るようにすればよい。
上記のように初期化ベクタDivを取得した後、復号部202は、初期化ベクタDivを利用して、ステップS31、S41により先頭の暗号文ブロックC1を復号して平文ブロックM1を取得することができる。
また、暗号文ブロックC2,C3,C4については、それぞれ、暗号化の段階で1つ前に暗号化された暗号文ブロックC5,C2,C3をそれぞれ利用した復号処理によって、平文ブロックM2,M3,M4を得ることができる。
暗号文データ出力部104は、上記のように得られた平文ブロックM1,M2,M3,M4を配列して平文データDplnを生成する。
なお、例えば、図12の場合において、初期化ベクタ取得情報のブロックの暗号化の順番は3番目または4番目であってもよい。このように、第6の実施形態においては、2番目から最後の1つ前までの暗号化順のうち、任意の暗号化順で初期化ベクタ取得情報のブロックの暗号化を行える。また、第6の実施形態における初期化ベクタ取得情報は初期化ベクタDivに限定されるものではなく、例えば第2の実施形態における初期化ベクタ生成情報や第5の実施形態における初期化ベクタDivの利用の仕方を示す情報などであってもよい。
例えばハードウェアの仕様などによっては、復号装置200において受信した暗号文データDencを保持するバッファについて小さいサイズのものが実装される可能性がある。このような場合において、図5の暗号文データDencのように初期化ベクタ取得情報の暗号文ブロックC5が最後に配列されている場合、暗号文データDencを先頭から取り込んでいくうちに空き容量がなくなり、最後の暗号文ブロックC5をバッファが取り込むことができなくなる可能性がある。このような状態に対応しては、例えば、初期化ベクタDivを利用する必要の無い暗号文ブロックC2,C3,C4などを先に復号し、バッファの容量を確保してから暗号文ブロックC5をバッファに取り込み、暗号文ブロックC1を復号すればよい。ただし、このような処理では、例えば暗号文ブロックC2,C3,C4などよりも先に暗号文ブロックC1を復号したい際の対応が難しい場合がある。
そこで、図12のようにブロックの暗号化順の途中で初期化ベクタ取得情報のブロックを暗号化すれば、暗号文データDencにおいて初期化ベクタ取得情報の暗号文ブロックを最後よりも前に配列できる。これにより、バッファのサイズが小さくとも、初期化ベクタ取得情報の暗号文ブロックをバッファに先に取り込ませることが可能となって、例えば暗号文ブロックC2,C3,C4などよりも先に暗号文ブロックC1を復号できる。
なお、第1の実施形態の場合、暗号文データDencにおける暗号文ブロックC1,C2,C3,C4の配列順に従って復号すれば、そのまま平文ブロックM1,M2,M3,M4の順に従って復号後の平文ブロックが得られる。この場合、平文データ生成部203が平文データDplnを生成するにあたっては、復号された順に従って平文ブロックM1,M2,M3,M4をそのまま連結すればよい。つまり、第1の実施形態の場合には、復号後の平文データDplnの生成処理が複雑にならず単純になる。
そこで、バッファサイズが大きく、1つの暗号文データDencが一度で取り込めることが保証されているような場合には、暗号化装置100は、第1の実施形態による暗号化を行うとよい。
なお、上述の暗号化装置100と復号装置200の各機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述の暗号化装置100と復号装置200の処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、CD−ROM等の非一過性の記録媒体であってもよい。また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部または外部に設けられた記録媒体も含まれる。配信サーバの記録媒体に記憶されるプログラムのコードは、端末装置で実行可能な形式のプログラムのコードと異なるものでもよい。すなわち、配信サーバからダウンロードされて端末装置で実行可能な形でインストールができるものであれば、配信サーバで記憶される形式は問わない。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に端末装置で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
100 暗号化装置
101 平文データ出力部
102 初期化ベクタ生成部
103 暗号化部
104 暗号文データ出力部
105 送信部
200 復号装置
201 受信部
202 復号部
203 平文データ生成部
300 ICカード
400 リーダライタ

Claims (22)

  1. 初期化ベクタを生成する初期化ベクタ生成部と、
    平文データから分割された平文ブロックのうちの先頭の平文ブロックについて前記初期化ベクタを利用して暗号化し、先頭以外の平文ブロックについて、1つ前の暗号化によって得た暗号文ブロックを利用して暗号化し、復号装置が復号に用いるべき初期化ベクタを取得するのに利用する初期化ベクタ取得情報について、1つ前のブロックを暗号化して得た暗号文ブロックを利用して暗号化する暗号化部と
    前記平文データに対応する暗号文ブロックと、前記初期化ベクタ取得情報に対応する暗号文ブロックとを含む暗号文データを出力する暗号文データ出力部と
    を備える暗号化装置。
  2. 前記暗号化部は、
    前記初期化ベクタ生成部が出力した初期化ベクタとしての初期化ベクタ取得情報を暗号化する
    請求項1に記載の暗号化装置。
  3. 前記暗号化部は、
    初期化ベクタの生成の仕方を示す情報としての前記初期化ベクタ取得情報を暗号化する
    請求項1に記載の暗号化装置。
  4. 前記暗号化部は、
    複数の平文データを暗号化するにあたり、共通の初期化ベクタを利用して各平文データにおける先頭の平文ブロックを暗号化し、
    第1の平文データの暗号化にあたり、平文ブロックと前記初期化ベクタとしての初期化ベクタ取得情報とを暗号化し、第1の平文データより後ろの第2の平文データの暗号化にあたり、平文ブロックのみを暗号化し、
    前記暗号文データ出力部は、
    第1の平文データの暗号化の場合、初期化ベクタ取得情報の暗号文ブロックを含む暗号文データを出力し、第2の平文データの暗号化の場合、初期化ベクタ取得情報の暗号文ブロックを含まない暗号文データを出力する
    請求項1から3のいずれか一項に記載の暗号化装置。
  5. 前記暗号化部は、
    複数の平文データを暗号化するにあたり、共通の初期化ベクタを利用して各平文データにおける先頭の平文ブロックを暗号化し、
    第1の平文データの暗号化にあたり、平文ブロックと前記初期化ベクタとしての初期化ベクタ取得情報とを暗号化し、
    第1の平文データより後ろの第2の平文データの暗号化にあたり、前記共通の初期化ベクタを復号に利用すべきことを示す情報としての前記初期化ベクタ取得情報を暗号化し、
    第2の平文データより後ろの第3の平文データの暗号化にあたり、前記平文データから分割された平文ブロックのみを暗号化し、
    暗号文データ出力部は、
    暗号文データ出力部は、
    第1の平文データと第2の平文データの暗号化の場合、初期化ベクタ取得情報の暗号文ブロックを含む暗号文データを出力し、第3の平文データの暗号化の場合、初期化ベクタ取得情報の暗号文ブロックを含まない暗号文データを出力する
    請求項1から3のいずれか一項に記載の暗号化装置。
  6. 前記初期化ベクタ生成部は、
    複数の平文データを暗号化するにあたり、平文データごとに対応して異なる初期化ベクタを生成し、
    前記暗号化部は、
    前記複数の平文データのそれぞれを暗号化するにあたり、暗号化対象の平文データに対応する初期化ベクタを利用して先頭の平文ブロックを暗号化するとともに、暗号化対象の平文データに対応する初期化ベクタが特定される内容の初期化ベクタ取得情報を暗号化する
    請求項1から3のいずれか一項に記載の暗号化装置。
  7. 前記暗号化部は、
    前記平文データから分割された平文ブロックのうち、最後の平文ブロック以外の所定の平文ブロックを暗号化して得られた暗号文ブロックを利用して初期化ベクタ取得情報を暗号化し、当該初期化ベクタ取得情報を暗号化して得られた暗号文ブロックを利用して、前記所定の平文ブロックの次の平文ブロックを暗号化する
    請求項1から6のいずれか一項に記載の暗号化装置。
  8. 前記暗号化部は、
    前記平文データから分割された平文ブロックを暗号化して得られた暗号文ブロックにおける最後の暗号文ブロックを利用して前記前記初期化ベクタ取得情報を暗号化する
    請求項1から6のいずれか一項に記載の暗号化装置。
  9. 暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号部を備え
    前記復号部は、
    初期化ベクタ取得情報の暗号文ブロックを復号して得た初期化ベクタ取得情報が示す初期化ベクタの生成の仕方に従って初期化ベクタを生成する
    復号装置。
  10. 暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号部を備え、
    前記復号部は、
    複数の暗号文データにおける第1の暗号文データを復号するにあたり、第1の暗号文データの復号によって得られた初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して先頭の暗号文ブロックを復号し、
    第1の暗号文データより後ろの第2の暗号文ブロックを復号するにあたり、第1の暗号文データの先頭の暗号文ブロックの復号に利用した初期化ベクタを利用する
    復号装置。
  11. 暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号部を備え、
    前記復号部は、
    複数の暗号文データにおける第1の暗号文データを復号するにあたり、第1の暗号文データの復号によって得られた初期化ベクタ取得情報として取得した初期化ベクタを利用して先頭の暗号文ブロックを復号し、
    第1の暗号文データより後ろの第2の暗号文データが含む初期化ベクタ取得情報の暗号文ブロックの復号によって得られた初期化ベクタ取得情報が、第1の暗号文データの復号に利用した初期化ベクタを利用して第2の暗号文データ以降の暗号文データを復号すべきことを示している場合、第2の暗号文データ以降の復号にあたり、第1の暗号文データの復号に利用した初期化ベクタにより先頭の暗号文ブロックを復号する
    復号装置。
  12. 前記復号部は、
    初期化ベクタ取得情報の暗号文ブロックを復号して得た初期化ベクタ取得情報を初期化ベクタとして取得する
    請求項10または11に記載の復号装置。
  13. 前記復号部は、
    暗号文データに含まれる暗号文ブロックにおける最後と先頭以外の暗号文ブロックを復号して初期化ベクタ取得情報を取得する
    請求項9から12のいずれか一項に記載の復号装置。
  14. 前記復号部は、
    暗号文データに含まれる暗号文ブロックのうち最後の暗号文ブロックを復号して初期化ベクタ取得情報を取得する
    請求項9から12のいずれか一項に記載の復号装置。
  15. 初期化ベクタ生成部が、初期化ベクタを生成する初期化ベクタ生成ステップと、
    暗号化部が、平文データから分割された平文ブロックのうちの先頭の平文ブロックについて前記初期化ベクタを利用して暗号化し、先頭以外の平文ブロックについて、1つ前の暗号化によって得た暗号文ブロックを利用して暗号化し、復号装置が復号に用いるべき初期化ベクタを取得するのに利用する初期化ベクタ取得情報について、1つ前のブロックを暗号化して得た暗号文ブロックを利用して暗号化する暗号化ステップと
    暗号文データ出力部が、前記平文データに対応する暗号文ブロックと、前記初期化ベクタ取得情報に対応する暗号文ブロックとを含む暗号文データを出力する暗号文データ出力ステップと
    を備える暗号化装置が行う暗号化方法。
  16. 復号部が、暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号ステップを備え
    前記復号部は、
    初期化ベクタ取得情報の暗号文ブロックを復号して得た初期化ベクタ取得情報が示す初期化ベクタの生成の仕方に従って初期化ベクタを生成する
    復号装置が行う復号方法。
  17. 暗号化装置としてのコンピュータに、
    初期化ベクタ生成部が、初期化ベクタを生成する初期化ベクタ生成ステップと、
    暗号化部が、平文データから分割された平文ブロックのうちの先頭の平文ブロックについて前記初期化ベクタを利用して暗号化し、先頭以外の平文ブロックについて、1つ前の暗号化によって得た暗号文ブロックを利用して暗号化し、復号装置が復号に用いるべき初期化ベクタを取得するのに利用する初期化ベクタ取得情報について、1つ前のブロックを暗号化して得た暗号文ブロックを利用して暗号化する暗号化ステップと
    暗号文データ出力部が、前記平文データに対応する暗号文ブロックと、前記初期化ベクタ取得情報に対応する暗号文ブロックとを含む暗号文データを出力する暗号文データ出力ステップと
    を実行させるためのプログラム。
  18. 復号装置としてのコンピュータに、
    復号部が、暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号ステップであって、
    初期化ベクタ取得情報の暗号文ブロックを復号して得た初期化ベクタ取得情報が示す初期化ベクタの生成の仕方に従って初期化ベクタを生成する復号ステップ
    を実行させるためのプログラム。
  19. 復号部が、暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号ステップを備え、
    前記復号ステップは、
    複数の暗号文データにおける第1の暗号文データを復号するにあたり、第1の暗号文データの復号によって得られた初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して先頭の暗号文ブロックを復号し、
    第1の暗号文データより後ろの第2の暗号文ブロックを復号するにあたり、第1の暗号文データの先頭の暗号文ブロックの復号に利用した初期化ベクタを利用する
    復号装置が行う復号方法。
  20. 復号部が、暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号ステップを備え、
    前記復号ステップは、
    複数の暗号文データにおける第1の暗号文データを復号するにあたり、第1の暗号文データの復号によって得られた初期化ベクタ取得情報として取得した初期化ベクタを利用して先頭の暗号文ブロックを復号し、
    第1の暗号文データより後ろの第2の暗号文データが含む初期化ベクタ取得情報の暗号文ブロックの復号によって得られた初期化ベクタ取得情報が、第1の暗号文データの復号に利用した初期化ベクタを利用して第2の暗号文データ以降の暗号文データを復号すべきことを示している場合、第2の暗号文データ以降の復号にあたり、第1の暗号文データの復号に利用した初期化ベクタにより先頭の暗号文ブロックを復号する
    復号装置が行う復号方法。
  21. 復号装置としてのコンピュータに、
    復号部が、暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号ステップであって、
    複数の暗号文データにおける第1の暗号文データを復号するにあたり、第1の暗号文データの復号によって得られた初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して先頭の暗号文ブロックを復号し、第1の暗号文データより後ろの第2の暗号文ブロックを復号するにあたり、第1の暗号文データの先頭の暗号文ブロックの復号に利用した初期化ベクタを利用する復号ステップ
    を実行させるためのプログラム。
  22. 復号装置としてのコンピュータに、
    復号部が、暗号文データに含まれる暗号文ブロックのそれぞれについて、1つ前の暗号文ブロックを利用して復号対象の暗号文ブロックを復号し、先頭の暗号文ブロックについては、当該先頭の暗号文ブロックよりも先に復号して得た初期化ベクタ取得情報に基づいて取得した初期化ベクタを利用して復号する復号ステップであって、
    複数の暗号文データにおける第1の暗号文データを復号するにあたり、第1の暗号文データの復号によって得られた初期化ベクタ取得情報として取得した初期化ベクタを利用して先頭の暗号文ブロックを復号し、
    第1の暗号文データより後ろの第2の暗号文データが含む初期化ベクタ取得情報の暗号文ブロックの復号によって得られた初期化ベクタ取得情報が、第1の暗号文データの復号に利用した初期化ベクタを利用して第2の暗号文データ以降の暗号文データを復号すべきことを示している場合、第2の暗号文データ以降の復号にあたり、第1の暗号文データの復号に利用した初期化ベクタにより先頭の暗号文ブロックを復号する復号ステップ
    を実行させるためのプログラム。
JP2013104377A 2013-05-16 2013-05-16 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム Active JP6070408B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013104377A JP6070408B2 (ja) 2013-05-16 2013-05-16 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013104377A JP6070408B2 (ja) 2013-05-16 2013-05-16 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2014224925A JP2014224925A (ja) 2014-12-04
JP6070408B2 true JP6070408B2 (ja) 2017-02-01

Family

ID=52123641

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013104377A Active JP6070408B2 (ja) 2013-05-16 2013-05-16 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6070408B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109583217B (zh) * 2018-11-21 2022-06-07 深圳市易讯天空网络技术有限公司 一种互联网电商平台用户隐私数据加密及解密方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7055039B2 (en) * 2003-04-14 2006-05-30 Sony Corporation Protection of digital content using block cipher crytography

Also Published As

Publication number Publication date
JP2014224925A (ja) 2014-12-04

Similar Documents

Publication Publication Date Title
JP6030103B2 (ja) データ保護装置及びその方法
KR101068367B1 (ko) 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치
US8634549B2 (en) Ciphertext key chaining
US9712319B2 (en) Method and apparatus to encrypt plaintext data
US9531534B2 (en) Generating device, re-encrypting device, method, and computer program product
WO2016027454A1 (ja) 認証暗号化方法、認証復号方法および情報処理装置
US8781117B2 (en) Generating pseudo random bits from polynomials
US9515818B2 (en) Multi-block cryptographic operation
CN105406969B (zh) 数据加密装置及方法
JP2010529496A (ja) 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化方法およびデバイス
US8804953B2 (en) Extensive ciphertext feedback
US8041033B2 (en) Cipher feedback with variable block chaining
JP6187624B1 (ja) 情報処理装置、情報処理方法及びプログラム
JP6167721B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム
Iftikhar et al. Evaluating the Performance Parameters of Cryptographic Algorithms for IOT-based Devices
US8774402B2 (en) Encryption/decryption apparatus and method using AES rijndael algorithm
JP6070408B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム
US20140294176A1 (en) Generating device, encryption device, decryption device, generating method, encryption method, decryption method, and computer program product
JP6292195B2 (ja) 情報処理装置及び情報処理方法
JP6348273B2 (ja) 情報処理システム
JP4287397B2 (ja) 暗号文生成装置、暗号文復号装置、暗号文生成プログラム及び暗号文復号プログラム
JP6631989B2 (ja) 暗号化装置、制御方法、及びプログラム
JP5945525B2 (ja) 鍵交換システム、鍵交換装置、その方法、及びプログラム
WO2021044465A1 (ja) 暗号化装置、復号装置、コンピュータプログラム、暗号化方法、復号方法及びデータ構造
JP2013098722A (ja) ストリーム暗号の暗号化装置、ストリーム暗号の復号装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号方法、およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20161114

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161219

R150 Certificate of patent or registration of utility model

Ref document number: 6070408

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