JP5641133B2 - 情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラム - Google Patents

情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラム Download PDF

Info

Publication number
JP5641133B2
JP5641133B2 JP2013506884A JP2013506884A JP5641133B2 JP 5641133 B2 JP5641133 B2 JP 5641133B2 JP 2013506884 A JP2013506884 A JP 2013506884A JP 2013506884 A JP2013506884 A JP 2013506884A JP 5641133 B2 JP5641133 B2 JP 5641133B2
Authority
JP
Japan
Prior art keywords
code
data
length
data length
padding
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.)
Expired - Fee Related
Application number
JP2013506884A
Other languages
English (en)
Other versions
JPWO2012131856A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2012131856A1 publication Critical patent/JPWO2012131856A1/ja
Application granted granted Critical
Publication of JP5641133B2 publication Critical patent/JP5641133B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

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

Description

本発明は、ブロック暗号を扱う情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラムに関する。
近年、情報化社会において、情報を扱う際の安全性を確保することが重要となっている。情報の安全性を確保するためには、情報を秘匿するための暗号化技術および情報の改ざんを検出する技術が必要となる。
暗号化技術には、共通鍵方式の暗号(以下、共通鍵暗号と呼ぶ)や公開鍵方式の暗号(以下、公開鍵暗号と呼ぶ)がある。共通鍵暗号は、公開鍵暗号と比較した場合、処理速度が速くコンパクトに実装できるという利点がある。このため、携帯電話やICカードなどの小型機器に暗号化機能を付加する場合には、共通鍵暗号が使用される。
共通鍵暗号の一種であるブロック暗号においては、暗号化の対象となるデータ(以下、「平文」という)をブロック単位に分割して暗号化をおこなう。暗号化がブロック単位でおこなわれるため、平文のデータ長はブロックのデータ長(以下、「ブロック長」という)の倍数である必要がある。
そのため、平文のデータ長がブロック長の倍数でない場合、パディングを平文に連結して、平文をブロック長の倍数のデータ長に加工する技術がある。連結されるパディングには、復号の際にパディングを除去するために必要な情報が含まれる。例えば、パディングには、パディングのデータ長(以下、「パディング長」という)を示す情報が含まれる。
また、情報の改ざんを検出する技術としては、例えば、ブロック長ごとに暗号化された一連のブロック(以下、「暗号化ブロック」という)から復号した平文内のパディングの内容が、パディングの規則に則っているか否かを判定する技術がある。すなわち、暗号化ブロックの改ざんにより、復号した平文内のパディングの内容に変化があった場合には、パディングがパディングの規則を外れるため、改ざんを検出することができる。
また、情報の改ざんを検出する技術としては、例えば、暗号化の際に、平文を識別するCRCを平文に連結する。CRCを連結した平文にさらにパディングを連結して、ブロック長の倍数のデータ長に加工して、暗号化をおこなう。そして、復号の際に、復号した平文を識別するCRCと、復号した平文に付与されていたCRCと、を比較する技術がある。すなわち、暗号化ブロックの改ざんにより、平文に変化があった場合には、復号した平文のCRCと、復号した平文に付与されていたCRCが異なるため、改ざんを検出することができる(例えば、下記特許文献1参照)。
特開2006−220747号公報
しかしながら、パディングとしての規則に基づいて改ざんを検出する技術では、暗号化ブロックの改ざんにより、パディングを付与するブロック、つまり暗号文の最終ブロック以外を改ざんした場合には、改ざんを検出することができないという問題があった。
また、上述した特許文献1にかかる技術では、固定の平文データ長のみに使用可能であり、データ長が任意の場合については全く考慮されておらず、仮に任意のデータ長について使用した場合にはCRCをあらたに連結する必要があり、データ量が増えてしまうという問題があった。そのため、リソースが厳しい組み込み環境においては、CRCを連結する領域を用意できず、上述した特許文献1にかかる技術を適用することができないという問題があった。
本発明は、上述した従来技術による問題点を解消するため、使用リソースの増加なく平文全体の改ざんを検出できる情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラムを提供することを目的とする。
本発明の一側面によれば、平文データのデータ長より長く、かつ、所定のブロック長の倍数となるデータ長を特定し、平文データのデータ長と特定されたデータ長との差分のデータ長を算出し、算出された差分のデータ長を示す第1のコードを生成し、平文データに基づいて算出される第2のコードを、算出された差分のデータ長から第1のコードのデータ長を引いた残余のデータ長以内のデータ長で生成し、生成された第2のコードを含み、生成された第1のコードを末尾とするパディングを、差分のデータ長で作成し、作成されたパディングを平文データの末尾に連結させて連結データを生成し、得られた連結データを出力する情報処理装置、情報処理方法および情報処理プログラムが提案される。
また、本発明の一側面によれば、平文データを所定のブロック長ごとに暗号化した暗号化データを入力し、入力された暗号化データから、暗号化と復号に共通して使用される鍵を用いて復号した復号データを生成し、パディングのデータ長を格納する生成された復号データの末尾となる第1の領域から、第1のコードを抽出し、抽出された第1のコードが示すデータ長に基づいて、平文データから算出されたコードを格納する生成された復号データの第2の領域を決定し、決定された第2の領域から第2のコードを抽出し、抽出された第1のコードが示すデータ長となる生成された復号データの末尾領域を除いた生成された復号データの第3の領域から第3のコードを抽出し、抽出された第3のコードから算出される第4のコードを、第2のコードのデータ長と同一データ長で生成し、生成された第4のコードと第2のコードとの一致判定をおこない、判定結果を出力する改ざん検出装置、改ざん検出方法および改ざん検出プログラムが提案される。
本発明の一側面によれば、使用リソースの増加なく平文全体の改ざんの検出を図ることができるという効果を奏する。
図1は、改ざん検出の内容を示す説明図である。 図2は、実施の形態にかかる情報処理装置101または改ざん検出装置102のハードウェア構成例を示すブロック図である。 図3は、情報処理装置101の機能的構成を示すブロック図である。 図4は、改ざん検出装置102の機能的構成を示すブロック図である。 図5は、連結文APTのデータ構造の一例を示す説明図である。 図6は、情報処理装置101による平文PTの暗号化の具体例1を示す説明図である。 図7は、改ざん検出装置102による改ざん検出の具体例1を示す説明図である。 図8は、情報処理装置101による平文PTの暗号化の具体例2を示す説明図である。 図9は、改ざん検出装置102による改ざん検出の具体例2を示す説明図である。 図10は、情報処理装置101による平文PTの暗号化の具体例3を示す説明図である。 図11は、改ざん検出装置102による改ざん検出の具体例3を示す説明図である。 図12は、情報処理装置101がおこなうパディング連結処理の詳細を示すフローチャートである。 図13は、改ざん検出装置102がおこなう改ざん検出処理の詳細を示すフローチャートである。
以下に添付図面を参照して、この発明にかかる情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラムの実施の形態を詳細に説明する。以下では、説明の簡単のため、情報処理装置と改ざん検出装置とが別の装置であるとする。しかし、情報処理装置は、改ざん検出装置の機能を併せて持っていてもよく、改ざん検出装置は、情報処理装置の機能を併せて持っていてもよい。
(改ざん検出の内容)
図1は、改ざん検出の内容を示す説明図である。図1において、平文PTを暗号化して送信する側の装置を情報処理装置101とする。暗号化された平文PTを受信して、暗号化された平文PTの改ざんの有無を検出する側の装置を改ざん検出装置102とする。
情報処理装置101と改ざん検出装置102とは、ネットワーク110に接続されている。また、ネットワーク110には、攻撃者のコンピュータ103が接続されている。情報処理装置101と改ざん検出装置102とは、暗号化と復号に共通して使用できる暗号鍵(以下、「共通鍵」という)を有する。
情報処理装置101は、共通鍵を用いたブロック暗号により平文PTを暗号化する。ブロック暗号では、情報処理装置101は、暗号化する平文PTにパディングpdを連結することにより、平文PTをブロック単位に分割できるデータ長(すなわち、ブロック長blの倍数のデータ長)に加工する必要がある。以下では、パディングpdが連結された平文PTを「連結文APT」という。
ここで、平文PTに連結されるパディングpdには、改ざん検出装置102においてパディングpdを除去するために必要なパディングpdのデータ長pl(以下、「パディング長」という)が含まれる。また、平文PTに連結されるパディングpdには、改ざん検出装置102において改ざんの検出に用いるデータが含まれる。
改ざん検出装置102は、ネットワーク110を介して受信された暗号化ブロックを、共通鍵を用いたブロック暗号により復号する。そして、改ざん検出装置102は、復号されたデータに基づいて、改ざんの有無を検出する。
以下では、情報処理装置101が、データ長が44[byte]の平文PTを暗号化して改ざん検出装置102に送信する場合を例に挙げて、改ざん検出装置102における改ざんの検出の内容について説明する。ただし、ブロック長blは、16[byte]であるとする。
(1)まず、情報処理装置101は、送信する平文PTのデータ長を確認して、平文PTに連結するパディングpdのパディング長plを算出する。具体的には、平文PTは、データ長が44[byte]であるから、ブロック長bl=16[byte]の3倍のデータ長となる48[byte]に4[byte]不足している。よって、情報処理装置101は、パディング長plを4[byte]と算出する。
(2)次に、情報処理装置101は、ブロック暗号による暗号化のために、ブロック長bl=16[byte]の3倍となる48[byte]のデータ長となる連結文APTに平文PTを加工する。具体的には、情報処理装置101は、算出したパディング長pl=4[byte]のパディングpdを平文PTの末尾に連結することにより、データ長をブロック長blの倍数のデータ長とする連結文APTを作成する。
パディングpdには、改ざん検出装置102がパディングpdを除去するために必要なパディングpdのパディング長plの情報がパディングpdの末尾となる領域に格納されている。
ここで、パディング長plの情報を格納するパディングpdの末尾となる領域(以下、「パディング長領域」という)のデータ長ll(以下、「パディング長領域長ll」という)は、固定長であり、平文PTに連結されうる最長のパディング長plを示すことが可能なデータ長である。例えば、ブロック長blが16[byte]であれば、平文PTに連結されうるパディングpdは最長でも16[byte]であるから、16を示すことが可能な4[bit]がパディング長領域長llである。
例えば、ここでのパディングpdとしては、pkcs#7に記載されたパディング方式に基づいて「04040404」が採用される。ただし、「04040404」は、16進数表記である。これにより、改ざん検出装置102は、パディングpdの末尾4[bit]となるパディング長領域が示す4を参照して、パディング長plが4[byte]であると判断できる。
(3)次に、情報処理装置101は、平文PTから算出されるコードを格納するパディングpd内の領域(以下、「格納領域」という)のデータ長cl(以下、「格納領域長」という)を算出する。平文PTから算出されるコードとしては、例えば、平文PTのCRCを採用できる。
具体的には、例えば、情報処理装置101は、パディング長領域を除いたパディングpd内の領域をCRCの格納領域とする。よって、格納領域長clは、パディング長pl=4[byte]から、パディング長領域長ll=4[bit]を除いた28[bit]である。
(4)そして、情報処理装置101は、算出した格納領域長clと同一データ長のCRCを平文PTから算出する。すなわち、情報処理装置101は、平文PTから28[bit]のCRCを算出する。
(5)情報処理装置101は、算出した28[bit]のCRCをパディングpd内の格納領域に格納する。情報処理装置101は、結果として、連結文APT内のパディングpdを、末尾となるパディング長領域にパディング長plを含み、格納領域に算出したCRCを含むパディングpdに加工する。
(6)そして、情報処理装置101は、連結文APTを、ブロック長bl=16[byte]ごとに分割する。ここでは、連結文APTのデータ長は48[byte]であるから、連結文APTは3ブロックに分割される。ここで、分割されたブロックを、先頭からそれぞれブロックB1〜B3とする。
(7)情報処理装置101は、分割したブロックB1〜B3を、ブロック暗号により暗号化して、改ざん検出装置102に送信する。ここで、ブロック暗号により暗号化されたブロックB1〜B3を、それぞれ暗号化ブロックC1〜C3とする。
(8)ここで、情報処理装置101により送信された暗号化ブロックC1〜C3が、攻撃者のコンピュータ103でキャプチャされ、暗号化ブロックC2の一部が改ざんされたとする。
(9)改ざん検出装置102は、暗号化ブロックC1〜C3を受信する。そして、改ざん検出装置102は、受信した暗号化ブロックC1〜C3から、ブロックを復号する。そして、改ざん検出装置102は、復号したブロックを連結させて連結文APT’を作成する。
しかしながら、暗号化ブロックC2が改ざんされているため、改ざん検出装置102が暗号化ブロックC2に基づいて作成した連結文APT’は、情報処理装置101での連結文APTとは異なるデータになっている。
(10)改ざん検出装置102は、連結文APT’の末尾のパディング長領域が示す4を参照して、パディング長plが4[byte]であると特定し、連結文APT’の末尾から4[byte]のパディングpdを除去して平文PT’を作成する。しかしながら、暗号化ブロックC2の改ざんの影響により、改ざん検出装置102が作成した平文PT’は、情報処理装置101での平文PTとは異なるデータになっている。
(11)次に、改ざん検出装置102は、平文PT’から算出されるコードを、格納領域長clと同一データ長で算出する。具体的には、改ざん検出装置102は、パディング長pl=4[byte]とパディング長領域長ll=4[bit]より、格納領域長clは28[bit]であると特定する。そして、改ざん検出装置102は、平文PT’から28[bit]のCRC’を算出する。ここで、平文PT’は平文PTとは異なるデータになっているため、算出されるCRC’は、情報処理装置101でのCRCとは異なるデータになる。
(12)改ざん検出装置102は、特定された28[bit]の格納領域から、平文PTのCRCを抽出する。そして、改ざん検出装置102は、算出したCRC’と、パディングpdから抽出したCRCとの一致判定をおこなう。そして、改ざん検出装置102は、判定結果を出力する。
具体的には、CRC’とCRCとが異なるデータであれば、改ざん検出装置102は、平文PT’は情報処理装置101での平文PTとは異なるデータであると判定でき、改ざんがあったことを出力する。また、CRC’とCRCとが同一のデータであれば、改ざん検出装置102は、平文PT’は情報処理装置101での平文PTのままであると判定でき、改ざんされていないことを出力する。
以上のように、情報処理装置101は、パディングpdに平文PTから算出されるコードを格納しておく。そして、改ざん検出装置102は、復号した平文PT’全体から算出されるコードとパディングpdに格納された平文PTから算出されたコードとの一致判定をおこなう。これにより、改ざん検出装置102は、改ざんにより平文PTのどの部分が変化した場合であっても改ざんを検出することができる。
また、情報処理装置101は、平文PTに連結するパディングのパディング長plを算出してから、算出したパディング長plの範囲内で平文PTから算出するコードの格納領域長clを算出する。そして、情報処理装置101は、算出した格納領域長clと同一データ長以下の長さで平文PTから算出するコードを生成し、格納領域に格納する。これにより、連結文APTのデータ長の増加を防止し、リソースの使用量の削減をおこなうことができる。
また、情報処理装置101は、格納領域を算出する際に、パディング長領域を確保しておく。これにより、改ざん検出装置102は、末尾のパディング長領域のコードが示すデータ長に基づいて、改ざんが検出されなかった連結文APTから、パディングpdを除去して、情報処理装置101での平文PTと同一の平文PTを得ることができる。
(情報処理装置101または改ざん検出装置102のハードウェア構成例)
図2は、実施の形態にかかる情報処理装置101または改ざん検出装置102のハードウェア構成例を示すブロック図である。実施の形態では、情報処理装置101と改ざん検出装置102とは、同一のハードウェア構成であるとする。
図2において、情報処理装置101または改ざん検出装置102は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、HDD(Hard Disk Drive)204と、暗号化回路205と、I/F(Interface)206と、ディスプレイ207と、キーボード208と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、情報処理装置101または改ざん検出装置102の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。また、ROM202は、API(Application Programming Interface)を記憶している。RAM203は、CPU201のワークエリアとして使用される。HDD204は、CPU201の制御にしたがって内蔵するハードディスクに対するデータのリード/ライトを制御する駆動装置である。暗号化回路205は、データを暗号化したり、暗号化されたデータを復号する。
インターフェース(以下、「I/F」と略する。)206は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク110に接続され、このネットワーク110を介して他の装置に接続される。そして、I/F206は、ネットワーク110と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F206には、例えば、モデムやLANアダプタなどを採用することができる。
ディスプレイ207は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ207は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。キーボード208は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。
次に、図3および図4を用いて、情報処理装置101の機能および改ざん検出装置102の機能について説明する。ただし、1装置が情報処理装置101の機能と改ざん検出装置102の機能とを併せて持っていてもよい。
(情報処理装置101の機能的構成例)
まず、図3を用いて、情報処理装置101の機能的構成例について説明する。
図3は、情報処理装置101の機能的構成を示すブロック図である。情報処理装置101は、特定部301と、算出部302と、第1の生成部303と、第2の生成部304と、作成部305と、連結部306と、出力部307と、暗号化部308と、第3の生成部309と、を含む構成である。この制御部となる機能(特定部301〜暗号化部308)は、具体的には、例えば、図2に示したROM202、RAM203などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F206により、その機能を実現する。なお、各機能部によって処理されたデータは、RAM203などの記憶領域に記憶される。
特定部301は、平文データのデータ長より長く、かつ、所定のブロック長blの倍数となるデータ長を特定する機能を有する。ここで、平文データとは、ブロック暗号による暗号化の対象となるデータであり、上述した平文PTである。所定のブロック長blとは、ブロック暗号に規定される分割単位となる1ブロックのデータ長であり、例えば、上述したブロック長bl=16[byte]である。
具体的には、例えば、特定部301は、平文データのデータ長より長く、かつ、所定のブロック長blの倍数となるデータ長群の中において、最も短いデータ長を特定する。すなわち、特定部301は、平文PTを最小で何ブロックに分割すれば暗号化可能かを判断して、暗号化に必要となる最小のブロック数におけるデータ長を算出する。より具体的には、例えば、特定部301は、ブロック長blが16[byte]、平文PTが44[byte]とすると、平文PTは最小3ブロックに分割すれば暗号化可能であるため、ブロック長blの3倍の48[byte]を特定する。
これにより、特定部301は、平文PTが最小何ブロックに分割すればブロック暗号化できるかに基づいて、連結文APTのデータ長となるブロック長blの倍数のデータ長を特定することができる。ここで、特定部301が連結文APTのデータ長を特定することにより、作成される連結文APTのデータ長を制限することができる。
算出部302は、平文データのデータ長と特定部301によって特定されたデータ長との差分のデータ長を算出する機能を有する。ここで、差分のデータ長とは、パディング長plとなるデータ長である。具体的には、例えば、算出部302は、平文PTが44[byte]、特定部301によって特定されたデータ長が48[byte]とすると、パディング長plとなる差分のデータ長4[byte]を算出する。これにより、算出部302は、パディング長plを算出できる。
第1の生成部303は、算出部302によって算出された差分のデータ長を示す第1のコードを生成する機能を有する。ここで、第1のコードとは、差分のデータ長を示す2進数のコードである。
具体的には、例えば、第1の生成部303は、差分のデータ長を示す第1のコードを、所定のブロック長blを示すことができる最も短いデータ長で生成する。ここで、所定のブロック長blを示すことができる最も短いデータ長とは、パディング長plとなりうる最長のデータ長であるブロック長blを示すために必要かつ最も短いデータ長である。
より具体的には、例えば、第1の生成部303は、ブロック長blが16[byte]、差分のデータ長が4[byte]であれば、16を示すことができる最も短いデータ長の4[bit]で、差分のデータ長4[byte]を示す第1のコードを生成する。すなわち、第1の生成部303は、差分のデータ長4[byte]を示すコード4(16進数表記、なお、2進数表記では「0100」である)を生成する。
これにより、第1の生成部303は、改ざん検出装置102においてパディングpdを除去するために必要となるパディング長plを示すコードを生成することができる。
第2の生成部304は、平文データに基づいて算出される第2のコードを、差分のデータ長から第1の生成部303によって生成された第1のコードのデータ長を引いた残余のデータ長以内のデータ長で生成する機能を有する。ここで、第2のコードとは、平文PTから算出されたコードであり、例えば、平文PTからハッシュ関数により算出したハッシュ値(例えば、CRC)、または、平文PTから算出したパリティ符号である。第1のコードのデータ長とは、上述したパディング長領域長ll以下である。
具体的には、例えば、第2の生成部304は、平文データから算出する第2のコードを、差分のデータ長から第1のコードのデータ長を引いた残余のデータ長で生成する機能を有する。より具体的には、例えば、パディング長plを4[byte]、パディング長領域長llを4[bit]とすると、残余のデータ長は28[bit]となるから、第2の生成部304は、平文PTからCRCを28[bit]で生成する。
ここで、CRCの算出には、例えば、ROM202に記憶されているAPIを用いる。ROM202に複数のデータ長のCRCのそれぞれを算出する複数のAPIを記憶しておき、算出するCRCのデータ長に応じてAPIを使い分けてCRCを算出してもよい。また、ROM202には算出しうるCRCのうち、最長のデータ長のCRCを算出するAPIのみを記憶しておき、必要なデータ長に応じて算出したCRCの一部を抜き出してもよい。
これにより、第2の生成部304は、改ざん検出装置102における改ざんの検出の指標となる平文PTから算出するコードを、格納領域長clで生成することができる。
作成部305は、第2の生成部304によって生成された第2のコードを含み、第1のコードを末尾とするパディングを、差分のデータ長で作成する機能を有する。具体的には、例えば、作成部305は、第1のコードを末尾とし、第2のコードを先頭とするパディングを作成する。
より具体的には、例えば、作成部305は、第1のコードを末尾とし、第2のコードを先頭とするパディングを作成する。より具体的には、例えば、作成部305は、パディング長plを示すコードを末尾とし、平文PTから算出するCRCを先頭とするパディングpdを、算出されたパディング長plで作成する。パディング長plを7[byte]とし、CRCを32[bit]の「63350373」とすると、パディングpdは、パディング長plを示す「7」を末尾とし、「63350373」を先頭とする7[byte]の「63350373070707」となる。なお、パディングpdは、16進数表記である。
また、パディング長plを4[byte]とし、CRCを28[bit]の「3F459A1」とすると、パディングpdは、パディング長plを示す「4」を末尾とし、「3F459A1」を先頭とするデータ長4[byte]の「3F459A14」となる。なお、パディングpdは、16進数表記である。
また、具体的には、例えば、作成部305は、第1のコードを末尾とし、第2のコードを第1のコードの先頭と隣接させたパディングを、差分のデータ長で作成する。より具体的には、例えば、作成部305は、パディング長plを示すコードを末尾とし、平文PTから算出するCRCをパディング長plを示すコードの先頭と隣接させたパディングpdを、算出されたパディング長plで作成する。ここで、パディング長plを7[byte]とし、CRCを32[bit]の「63350373」とする場合を想定する。この場合、パディングpdは、パディング長plを示す「7」を末尾とし、「63350373」をパディング長plを示すコードの先頭と隣接させた7[byte]の「07070633503737」となる。なお、パディングpdは、16進数表記である。
また、作成部305は、第3の生成部309によって生成されたパディング長plに対応するコードを、パディング長領域と格納領域以外の領域に格納してもよい。
これにより、作成部305は、改ざん検出装置102において、パディングpdの除去に必要となるパディング長と、改ざんの検出の指標となる平文PTから算出するコードと、を含むパディングpdを作成することができる。また、第3の生成部309によって生成された改ざん検出装置102においてパディング長plが正しいかを判定する指標となるコードをさらに含むパディングを作成することができる。
連結部306は、作成部305によって作成されたパディングを平文データの末尾に連結させて連結データを生成する機能を有する。ここで、連結データとは、上述した連結文APTである。具体的には、例えば、連結部306は、平文PTの末尾にパディングpdを連結させて、データ長がブロック長blの倍数となる連結文APTを生成する。これにより、連結部306は、ブロック暗号による暗号化が可能となるデータ長がブロック長blの倍数となる連結文APTを生成することができる。
出力部307は、連結部306によって得られた連結データを出力する機能を有する。具体的には、例えば、出力部307は、I/F206によりネットワーク110を介して他の装置に連結文APTを送信する。また、出力部307は、光ディスクドライブを介して光ディスクに連結文APTを出力する。
出力部307は、暗号化部308によって所定のブロック長blごとに暗号化された暗号化連結データを出力する機能を有する。ここで、暗号化連結データとは、連結文APTをブロック長blごとに暗号化して生成した1暗号化ブロック、または、一連の暗号化ブロックである。
具体的には、例えば、出力部307は、I/F206によりネットワーク110を介して改ざん検出装置102に、連結文APTをブロック長blごとに暗号化して生成した暗号化ブロックを送信する。また、暗号化部308による暗号化の際に、初期化ベクトルIVを使用した場合は、初期化ベクトルIVを暗号化ブロックと併せて送信する。なお、初期化ベクトルIVは、秘匿された情報である必要はなく、暗号化せずに送信されてもよい。また、出力部307は、光ディスクドライブを介して光ディスクに、連結文APTをブロック長blごとに暗号化して生成した暗号化ブロックを出力する。
暗号化部308は、連結データを、暗号化と復号に共通して使用される鍵を用いて所定のブロック長blごとに暗号化する機能を有する。暗号化と復号に共通して使用される鍵とは、共通鍵である。具体的には、例えば、暗号化部308は、連結文APTをブロック長blごとに分割して、共通鍵を用いたブロック暗号により、暗号化して、暗号化ブロックを生成する。
より具体的には、例えば、暗号化部308は、DES(Data Encryption Standard)方式やAES方式(Advanced Encryption Standard)の暗号化回路205を用いて暗号化をおこなう。DES方式ではブロック長bl=8[byte]であり、AES方式ではブロック長bl=16[byte]である。また、各暗号化方式には複数の動作モードが規定されており、それらの動作モードに応じて、具体的な暗号化および復号化処理がおこなわれる。
動作モードとしては、DES方式、AES方式ともに、ECB(Electronic Codebook)モードとCBC(Cipher Block Chaining)モードとCFB(Cipher Feedback)モードとOFB(Output Feedback)モードとCTR(Counter)モードが利用できる。なお、暗号化に使用される初期化ベクトルIVとしては、例えば、暗号化ごとに生成された乱数を採用できる。
これにより、暗号化部308は、共通鍵を用いたブロック暗号により、連結文APTをブロック長blごとに暗号化して、連結文APTの秘匿性を確保することができる。
第3の生成部309は、第1のコードを特定する第3のコードを、差分のデータ長から第1のコードのデータ長と所定のデータ長とを引いた残余のデータ長で生成する機能を有する。ここで、第3のコードとは、パディング長plに対応するコードである。
具体的には、例えば、第3の生成部309は、パディング長を示す1byteコードを連続して並べたコードの先頭から抽出した残余の領域のデータ長分のコードを生成する。これにより、第3の生成部309は、改ざん検出装置102にて、パディング長plが正しいかを判定する指標となるコードを生成できる。
(改ざん検出装置102の機能的構成例)
次に、まず、図4を用いて、改ざん検出装置102の機能的構成例について説明する。
図4は、改ざん検出装置102の機能的構成を示すブロック図である。改ざん検出装置102は、入力部401と、復号部402と、第1の抽出部403と、決定部404と、第2の抽出部405と、第3の抽出部406と、生成部407と、判定部408と、出力部409と、を含む構成である。この制御部となる機能(入力部401〜出力部409)は、具体的には、例えば、図2に示したROM202、RAM203などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F206により、その機能を実現する。なお、各機能部によって処理されたデータは、RAM203などの記憶領域に記憶される。
入力部401は、平文データを所定のブロック長blごとに暗号化した暗号化データを入力する機能を有する。ここで、平文データとは、上述した平文PTである。暗号化データとは、上述した暗号化ブロックである。
具体的には、例えば、入力部401は、I/F206によりネットワーク110を介して情報処理装置101から、暗号化ブロックを受信する。また、入力部401は、光ディスクドライブを介して光ディスクから、暗号化ブロックを読み取る。これにより、入力部401は、改ざん検出の対象となる暗号化ブロックを入力することができる。
復号部402は、入力部401によって入力された暗号化データから、暗号化と復号に共通して使用される鍵を用いて復号した復号データを生成する機能を有する。暗号化と復号に共通して使用される鍵とは、共通鍵である。復号データとは、改ざんされていない暗号化ブロックから復号した場合は、情報処理装置101での連結文APTである。ただし、復号データとは、改ざんされた暗号化ブロックから復号した場合は、情報処理装置101での連結文APTとは内容の異なる連結文APT’となる。
具体的には、例えば、復号部402は、共通鍵を用いたブロック暗号のCBCモードにより、初期化ベクトルIV(Initial Vector)と暗号化ブロックから、連結文APTまたは、連結文APT’を復号する。なお、初期化ベクトルIVは、情報処理装置101が暗号化に使用した初期化ベクトルIVと同一データである。これにより、復号部402は、暗号化ブロックから、連結文を復号できる。
第1の抽出部403は、パディングpdのデータ長を格納する復号データの末尾となる第1の領域から、第1のコードを抽出する機能を有する。ここで、第1の領域とは、上述したパディング長領域である。第1のコードとは、暗号化ブロックの改ざんがなかった場合、または、パディングpdに改ざんの影響がなかった場合、パディング長plである。一方、第1のコードとは、パディングpdに改ざんの影響があった場合、無意味なコードである。
具体的には、例えば、第1の抽出部403は、復号部402によって復号された連結文の末尾4[bit]を参照して、パディング長plと推定される4[byte]を抽出する。これにより、第1の抽出部403は、パディング長plと推定されるデータ長を抽出できる。
決定部404は、第1の抽出部403によって抽出された第1のコードが示すデータ長に基づいて、平文データから算出されたコードを格納する復号データの第2の領域を決定する機能を有する。ここで、第2の領域とは、第1の抽出部403によって抽出されたパディング長plから推定される平文PTから算出されたコードの格納領域である。
具体的には、例えば、決定部404は、第1の領域の先頭と接する領域であって、第1のコードが示すデータ長から第1の領域のデータ長を引いた残余のデータ長の領域を、第2の領域に決定する。より具体的には、例えば、第1の抽出部403は、パディング長plが4[byte]であれば、パディング長領域の先頭と接する28[bit]の領域を格納領域に決定する。これにより、決定部404は、情報処理装置101が平文PTから算出したコードを格納した格納領域と推定される領域を決定することができる。
また、例えば、決定部404は、第2の領域の先頭に接する復号データ内の領域であって、第1のコードが示すデータ長から第1のコードのデータ長と所定のデータ長とを引いた残余のデータ長の領域を、第4の領域として決定する。これにより、決定部404は、情報処理装置101がパディングに対応するコードを格納した領域と推定される領域を決定することができる。
第2の抽出部405は、決定部404によって決定された第2の領域から第2のコードを抽出する機能を有する。ここで、第2のコードとは、暗号化ブロックが改ざんされなかった場合、または、パディングpdに改ざんの影響がなかった場合、情報処理装置101が格納した平文PTから算出されたコード(例えば、CRC)である。一方、第2のコードとは、パディングpdに改ざんの影響があった場合、改ざんの影響を受けた無意味なコードである。
具体的には、例えば、第2の抽出部405は、CRCの格納領域として推定された領域から、情報処理装置101が格納したCRC、または、改ざんの影響を受けた無意味なコードを抽出する。これにより、第2の抽出部405は、改ざんの検出の指標となるコードを抽出することができる。
第3の抽出部406は、第1のコードが示すデータ長となる復号データの末尾領域を除いた復号データの第3の領域から第3のコードを抽出する機能を有する。ここで、末尾領域とは、復号部402によって復号された連結文の末尾となる領域であり、暗号化ブロックが改ざんされなかった場合、または、パディングpdに改ざんの影響がない場合、パディングpdである。一方、末尾領域とは、復号部402によって復号された連結文の末尾となる領域であり、パディングpdに改ざんの影響があった場合、無意味な領域である。
具体的には、例えば、第3の抽出部406は、パディングpdと推定される末尾データを除いた情報処理装置101での平文PT、または、改ざんされた平文PT’を抽出する。これにより、第3の抽出部406は、改ざんの検出の対象となる平文を抽出することができる。
生成部407は、第3の抽出部406によって抽出された第3のコードを特定する第4のコードを、第2のコードのデータ長と同一データ長で生成する機能を有する。第4のコードとは、第3のコードを特定するコードであり、例えば、第3のコードからハッシュ関数により得られるハッシュ値(例えば、CRC)、第3のコードから得られるパリティ符号である。
具体的には、例えば、第2のコードが28[bit]であれば、第3のコードから28[bit]のCRCを生成する。これにより、生成部407は、情報処理装置101での平文PTから算出されるコード、または、改ざんされた平文PT’から算出されるコードを生成することができる。または第2のコードの長さは鍵と同様に事前に共有しておいてもよい。
判定部408は、生成部407によって生成された第4のコードと第2のコードとの一致判定をおこなう機能を有する。具体的には、例えば、判定部408は、平文PTから算出したCRCとパディングpdに格納されていたCRCとの一致判定をおこなう。
また、判定部408は、暗号化ブロックの改ざんの影響を受けた平文PT’から算出したCRC’とパディングpdに格納されていたCRCとの一致判定をおこなう。また、判定部408は、暗号化ブロックの改ざんの影響を受けた平文PT’から算出したCRC’と暗号化ブロックの改ざんの影響を受けたパディングpdに格納されていたCRC’’との一致判定をおこなう。
これにより、判定部408は、第3の抽出部406に抽出された平文が改ざんの影響を受けていない場合は、一致判定により一致すると判定され、改ざんなしと判定できる。また、判定部408は、第3の抽出部406に抽出された平文が改ざんの影響を受けている場合は、一致判定により一致しないと判定され、改ざんありと判定できる。
また、判定部408は、第4の抽出部410によって抽出された第5のコードにより特定されるコードと第1のコードとの一致判定をおこなう機能を有する。具体的には、情報処理装置101が格納したパディング長plに対応するコードから、第1の抽出部403が抽出したコードが正しいコードか判定する。これにより、判定部408は、正しいコードでない場合は、改ざんありと判定できる。
出力部409は、判定部408によって判定された判定結果を出力する機能を有する。具体的には、例えば、出力部409は、ディスプレイ207に、第4のコードと第2のコードとが一致したこと、すなわち、受信した暗号化ブロックは改ざんされていないことを出力する。また、出力部409は、ディスプレイ207に、第4のコードと第2のコードとが一致していないこと、すなわち、受信した暗号化ブロックは改ざんされていることを出力する。
これにより、出力部409は、受信した暗号化ブロックの改ざんの有無、すなわち、第3の抽出部406によって抽出された平文に改ざんの影響があるか否かを、出力することができる。また復号結果の復号データをディスクに出力する。
第4の抽出部410は、第1のコードを特定するコードを格納する第4の領域から第5のコードを抽出する機能を有する。具体的には、例えば、第4の抽出部410は、決定部404によって決定された情報処理装置101がパディング長plに対応するコードを格納したと推定される領域に格納されているコードを抽出する。これにより、第4の抽出部410は、パディングpdが改ざんの影響を受けていない場合は、情報処理装置101が格納したパディング長plに対応するコードを抽出できる。
(連結文APTのデータ構造)
次に、図5を用いて、連結文APTのデータ構造について説明する。
図5は、連結文APTのデータ構造の一例を示す説明図である。ここで、平文PT1〜PT7は、ブロック暗号により暗号化される平文PTである。ここでは、ブロック長blを16[byte]とする。平文PTに連結されるパディングpdは、末尾をパディング長領域とし、CRCの格納領域を含む。
CRCの格納領域は、パディング長領域の先頭に接する領域である。パディング長領域長llは、ブロック長bl=16[byte]を示すために必要な最小限のデータ長となる4[bit]である。CRCの格納領域長clは、最大32[bit]である。パディングpdの内容は、16進数表記とする。ただし、CRCは、「$」で示す。
また、パディングpdは、パディング長領域と格納領域とを除いた残余の領域がある場合、パディング長plに対応するコードを残余の領域に格納する。パディング長plに対応するコードとは、パディング長を示す1byteコードを連続して並べたコードの先頭から抽出した残余の領域のデータ長分のコードである。
平文PT1は、ブロック長blの倍数長より15[byte]長いデータ長のデータである。そのため、平文PT1を、ブロック暗号により暗号化するためには、1[byte]のパディングpdが必要となる。パディングpdは、末尾4[bit]となるパディング長領域にパディング長plである1[byte]を示す1を含み、パディング長領域の先頭に接する残余の4[bit]となる格納領域に平文PT1から得られたCRCを含む。
平文PT2は、ブロック長blの倍数長より14[byte]長いデータ長のデータである。そのため、平文PT2を、ブロック暗号により暗号化するためには、2[byte]のパディングpdが必要となる。パディングpdは、末尾4[bit]となるパディング長領域にパディング長plである2[byte]を示す2を含み、パディング長領域の先頭に接する残余の12[bit]となる格納領域に平文PT2から得られたCRCを含む。
平文PT3は、ブロック長blの倍数長より13[byte]長いデータ長のデータである。そのため、平文PT3を、ブロック暗号により暗号化するためには、3[byte]のパディングpdが必要となる。パディングpdは、末尾4[bit]となるパディング長領域にパディング長plである3[byte]を示す3を含み、パディング長領域の先頭に接する残余の20[bit]となる格納領域に平文PT3から得られたCRCを含む。
平文PT4は、ブロック長blの倍数長より12[byte]長いデータ長のデータである。そのため、平文PT4を、ブロック暗号により暗号化するためには、4[byte]のパディングpdが必要となる。パディングpdは、末尾4[bit]となるパディング長領域にパディング長plである4[byte]を示す4を含み、パディング長領域の先頭に接する残余の28[bit]となる格納領域に平文PT4から得られたCRCを含む。
平文PT5は、ブロック長blの倍数長より11[byte]長いデータ長のデータである。そのため、平文PT5を、ブロック暗号により暗号化するためには、5[byte]のパディングpdが必要となる。パディングpdは、末尾4[bit]となるパディング長領域にパディング長plである5[byte]を示す5を含み、パディング長領域の先頭に接する残余の36[bit]のうちの32[bit]となる格納領域に平文PT5から得られたCRCを含む。
また、パディングpdは、残余の4[bit]に、パディング長pl=5[byte]に対応するコード「0」を含む。コード「0」とは、パディング長plを示す1byteコードを連続して並べた「05050505…」の先頭4[bit]である。
平文PT6は、ブロック長blの倍数長より10[byte]長いデータ長のデータである。そのため、平文PT6を、ブロック暗号により暗号化するためには、6[byte]のパディングpdが必要となる。パディングpdは、末尾4[bit]となるパディング長領域にパディング長plである6[byte]を示す6を含み、パディング長領域の先頭に接する残余の44[bit]のうちの32[bit]となる格納領域に平文PT6から得られたCRCを含む。
また、パディングpdは、残余の12[bit]に、パディング長pl=6[byte]に対応するコード「060」を含む。コード「060」とは、パディング長plを示す1byteコードを連続して並べた「06060606…」の先頭12[bit]である。
平文PT7は、ブロック長blの倍数長のデータである。しかし、パディングpdを連結しない場合、パディングpdを連結していないことを示す情報を平文PT7に連結する必要があり、結果として、平文PT7は、ブロック長blの倍数長とならない。すなわち、平文PT7が、ブロック長blの倍数長のデータであっても、パディングpdを連結する必要がある。
そのため、平文PT7を、ブロック暗号により暗号化するためには、16[byte]のパディングpdが必要となる。パディングpdは、末尾4[bit]となるパディング長領域にパディング長plである16[byte]を示す「0」を含み、パディング長領域の先頭に接する残余の124[bit]のうちの32[bit]となる格納領域に平文PT7から得られたCRCを含む。
また、パディングpdは、残余の92[bit]に、パディング長pl=16[byte]に対応するコード「10101010101010101010101」を含む。コード「10101010101010101010101」とは、パディング長plを示す1byteコードを連続して並べた「101010101010101010101010…」の先頭92[bit]である。
ここで、格納領域としては、パディングpdの先頭となる最大32[bit]の領域を採用してもよい。また、格納領域として、閾値32[bit]を設けず、パディングpdの残余の全ての領域を採用してもよい。
格納領域に格納される平文PTから算出するコードとして、ハッシュ値を採用してもよい。また、格納領域に格納される平文PTから算出するコードとして、パリティを採用してもよい。また、パディング長plに対応するコードとして、ハッシュ値を採用してもよいし、パリティを採用してもよい。
各データ長のCRCを算出する場合は、各データ長に対応するCRC計算関数によりCRCを算出してもよい。また、パディング長plに関わらず、所定のデータ長でCRCを算出して、先頭から必要なデータ長のコードを抽出して算出してもよい。例えば、情報処理装置101は、パディング長plが8[bit]の場合に、32[bit]のCRCを算出し、CRCの先頭4[bit]を抽出して、格納領域に格納する。
(改ざん検出の具体例1)
次に、図6および図7を用いて、改ざん検出の具体例1について説明する。ここでは、情報処理装置101は、ブロック暗号のCBCモードにより暗号化をおこなう。また、改ざん検出装置102は、ブロック暗号のCBCモードにより復号をおこなう。
図6は、情報処理装置101による平文PTの暗号化の具体例1を示す説明図である。ここで、情報処理装置101は、ブロック長blの倍数長より9[byte]長いデータ長となる平文PTを暗号化する。
よって、情報処理装置101は、ブロック暗号による暗号化のために、平文PTに7[byte]のパディングpdを連結して連結文APTを生成する。次に、情報処理装置101は、連結文APTをブロック長blごとに分割して、ブロックB1〜Bnを生成する。そして、情報処理装置101は、ブロックB1〜Bnを、ブロック暗号のCBCモードにより暗号化して、暗号化ブロックC1〜Cnを生成する。
具体的には、情報処理装置101は、末尾をパディング長pl=7[byte]を示す7とし、32[bit]のCRC「63350373」を含み、残余をパディング長pl=7[byte]に対応する「07070」とするパディングpdを、平文PTに連結する。
次に、情報処理装置101は、パディングpdを連結した連結文APTをブロック長blごとに分割して、ブロックB1〜Bnを生成する。生成されたブロックBnには、パディングpdが含まれる。
そして、情報処理装置101は、生成されたブロックB1〜Bnごとに暗号化して、暗号化ブロックC1〜Cnを生成する。例えば、情報処理装置101は、先頭から1番目のブロックB1を暗号化する場合、ブロックB1と初期化ベクトルIVとの排他的論理和をとり、共通鍵で暗号化して、暗号化ブロックC1を生成する。また、情報処理装置101は、先頭からi番目のブロックBiを暗号化する場合、ブロックBiと暗号化ブロックCi−1との排他的論理和をとり、共通鍵で暗号化して、暗号化ブロックCiを生成する。
情報処理装置101は、生成した暗号化ブロックC1〜Cnを改ざん検出装置102に送信する。次に、送信された暗号化ブロックC1〜Cnを受信した改ざん検出装置102による改ざんの検出について説明する。
図7は、改ざん検出装置102による改ざん検出の具体例1を示す説明図である。ここで、情報処理装置101により送信された図6に示した暗号化ブロックC1〜Cnは、改ざんされずに改ざん検出装置102に受信されたとする。そして、改ざん検出装置102は、受信した暗号化ブロックC1〜Cnの改ざんの有無を検出する。
具体的には、まず、改ざん検出装置102は、暗号化ブロックC1〜CnからブロックB1〜Bnを復号する。例えば、改ざん検出装置102は、先頭から1番目の暗号化ブロックC1を復号する場合、暗号化ブロックC1を共通鍵で復号して、初期化ベクトルIVとの排他的論理和をとって、ブロックB1を生成する。また、改ざん検出装置102は、先頭からi番目の暗号化ブロックCiを復号する場合、暗号化ブロックCiを共通鍵で復号して、暗号化ブロックCi−1との排他的論理和をとり、ブロックBiを生成する。
次に、改ざん検出装置102は、生成した最終ブロックBnの末尾となるパディング長領域からパディング長plを抽出する。ここで、改ざん検出装置102は、パディングpdの末尾7を抽出し、パディング長plを7[byte]と判断する。
改ざん検出装置102は、抽出したパディング長pl=7[byte]が正しいか否かを判断するため、パディングpdから、パディング長plに対応するコードを抽出する。パディング長plに対応するコードとして、「07070」が抽出される。パディング長plに対応するコードは、「07070」であり、抽出されたコードと同一であるため、改ざん検出装置102は、パディング長pl=7[byte]を正しいと判断する。
また、改ざん検出装置102は、パディングpdからCRCを抽出する。改ざん検出装置102は、パディング長plが7[byte]であるから、CRCの格納領域長は、32[bit]であると判断する。そして、改ざん検出装置102は、CRCの格納領域から、CRC「63350373」を抽出する。
改ざん検出装置102は、復号したブロックBnの末尾データ7[byte]をパディングpdと判断して除去し、平文PTを生成する。改ざん検出装置102は、パディングpdを除去した平文PTから32[bit]のCRCを生成する。
ここで、改ざん検出装置102は、抽出したCRCと生成したCRCとの一致判定をおこない、改ざんの有無を検出する。改ざん検出装置102により生成された平文PTが情報処理装置101の平文PTと同一であれば、それぞれの平文PTから生成されるCRCも同一となる。
ここでは、暗号化ブロックC1〜Cnの改ざんがなかったので、改ざん検出装置102により生成されたCRCと情報処理装置101によりパディングpdに格納されたCRCとは同一となる。よって、改ざん検出装置102は、受信した暗号化ブロックC1〜Cnの改ざんはなく、改ざん検出装置102にてパディングpdを除去して得た平文PTは、情報処理装置101での平文PTのままであると判断する。
(改ざん検出の具体例2)
次に、図8および図9を用いて、改ざん検出の具体例2について説明する。ここでは、情報処理装置101は、ブロック暗号のCBCモードにより暗号化をおこなう。また、改ざん検出装置102は、ブロック暗号のCBCモードにより復号をおこなう。
図8は、情報処理装置101による平文PTの暗号化の具体例2を示す説明図である。ここで、図6と同様にして、情報処理装置101は、ブロック長blの倍数長より9[byte]長いデータ長となる平文PTを暗号化する。そして、暗号化ブロックC1〜Cnを改ざん検出装置102に送信する。
ただし、送信された暗号化ブロックC1〜Cnは、送信途中で攻撃者によりキャプチャされたとする。そして、攻撃者により、暗号化ブロックCn−1が改ざんされ、暗号化ブロックCn−1’に変化したとする。
図9は、改ざん検出装置102による改ざん検出の具体例2を示す説明図である。ここで、図8に示した暗号化ブロックC1〜Cn−2,Cn−1’,Cnは、改ざん検出装置102に受信されたとする。そして、改ざん検出装置102は、受信した暗号化ブロックC1〜Cn−2,Cn−1’,Cnの改ざんの有無を検出する。
ここで、改ざん検出装置102により復号されたブロックのうち、改ざんされた暗号化ブロックCn−1’に基づいて復号されたブロックは、情報処理装置101のブロックB1〜Bnとは異なるブロックとなる。すなわち、情報処理装置101の復号によりブロックBn−1,Bnが生成されるべき暗号化ブロックCn−1’Cnからは、ブロックBn−1,Bnとは異なるブロックBn−1’,Bn’が生成される。これにより、パディングpdの内容が変化することになる。
ここで、改ざん検出装置102は、生成した最終ブロックBn’の末尾となるパディング長領域からパディング長plを抽出する。ここで、改ざん検出装置102は、末尾6を抽出し、パディング長plを6[byte]と判断する。
改ざん検出装置102は、抽出したパディング長pl=6[byte]が正しいか否かを判断するため、パディングpdから、パディング長plに対応するコードを抽出する。パディングpdが変化したため、パディング長plに対応するコードとして「651」が抽出される。パディング長plに対応するコードは、「060」であり、抽出されたコードとは異なるため、改ざん検出装置102は、パディング長pl=6[byte]を誤りと判断する。
これにより、改ざん検出装置102は、暗号化ブロックの改ざんにより、パディングpdが変化していると判断する。そして、改ざん検出装置102は、CRCの一致判定をおこなわずに、改ざん検出装置102にてパディングpdを除去して得た平文PTの内容は、暗号化ブロックの改ざんの影響を受けて変化していると判断する。
なお、CRCの一致判定によっても改ざんが検出される。改ざん検出装置102は、パディングpdからCRCを抽出する。改ざん検出装置102は、パディング長plが6[byte]であるから、CRCの格納領域長は、32[bit]であると判断する。そして、改ざん検出装置102は、CRCの格納領域から、CRC’「651988243A」を抽出する。
改ざん検出装置102は、復号したブロックBn’の末尾データ6[byte]をパディングpdと判断して除去し、平文を生成する。ブロックBn−1’,Bn’は改ざんの影響を受けているため、情報処理装置101での平文PTとは異なる平文PT’が生成される。改ざん検出装置102は、パディングpdを除去した平文PT’から32[bit]のCRC’’を生成する。
ここで、改ざん検出装置102は、抽出したCRC’と生成したCRC’’との一致判定をおこない、改ざんの有無を検出する。改ざん検出装置102により生成された平文PT’が情報処理装置101の平文PTと同一であれば、それぞれの平文から生成されるCRCも同一となる。
ここでは、暗号化ブロックCn−1’の改ざんの影響により、格納されたCRCが変化し、CRC’となっている。また、暗号化ブロックCn−1’の改ざんの影響により変化した平文PT’からCRC’’が生成される。すなわち、パディングpdに格納されたCRC’と改ざん検出装置102により生成されたCRC’’は異なる。よって、改ざん検出装置102は、改ざん検出装置102にてパディングpdを除去して得た平文PTの内容は、暗号化ブロックの改ざんの影響を受けて変化していると判断できる。
(改ざん検出の具体例3)
次に、図10および図11を用いて、改ざん検出の具体例3について説明する。ここでは、情報処理装置101は、ブロック暗号のCBCモードにより暗号化をおこなう。また、改ざん検出装置102は、ブロック暗号のCBCモードにより復号をおこなう。
図10は、情報処理装置101による平文PTの暗号化の具体例3を示す説明図である。ここで、図6と同様にして、情報処理装置101は、ブロック長blの倍数長より9[byte]長いデータ長となる平文PTを暗号化する。そして、暗号化ブロックC1〜Cnを改ざん検出装置102に送信する。
ただし、送信された暗号化ブロックC1〜Cnは、送信途中で攻撃者によりキャプチャされたとする。そして、攻撃者により、暗号化ブロックC2が改ざんされ、暗号化ブロックC2’に変化したとする。
図11は、改ざん検出装置102による改ざん検出の具体例3を示す説明図である。ここで、図10に示した暗号化ブロックC1,C2’,C3〜Cn−1,Cnは、改ざん検出装置102に受信されたとする。そして、改ざん検出装置102は、受信した暗号化ブロックC1,C2’,C3〜Cn−1,Cnの改ざんの有無を検出する。
ここで、改ざん検出装置102により復号されたブロックのうち、改ざんされた暗号化ブロックC2’に基づいて復号されたブロックは、情報処理装置101のブロックB1〜Bnとは異なるブロックとなる。すなわち、情報処理装置101の復号によりブロックB2,B3が生成されるべき暗号化ブロックC2’C3からは、ブロックB2,B3とは異なるブロックB2’,B3’が生成される。これにより、パディングpdの内容は変化しない。
ここで、改ざん検出装置102は、生成した最終ブロックBnの末尾となるパディング長領域からパディング長plを抽出する。ここで、改ざん検出装置102は、末尾7を抽出し、パディング長plを7[byte]と判断する。
改ざん検出装置102は、抽出したパディング長pl=7[byte]が正しいか否かを判断するため、パディングpdから、パディング長plに対応するコードを抽出する。パディングpdは変化していないため、パディング長plに対応するコードとして「07070」が抽出される。パディング長plに対応するコードは、「07070」であり、抽出されたコードと同一であるため、改ざん検出装置102は、パディング長pl=7[byte]を正しいと判断する。
改ざん検出装置102は、パディングpdからCRCを抽出する。改ざん検出装置102は、パディング長plが7[byte]であるから、CRCの格納領域長は、32[bit]であると判断する。そして、改ざん検出装置102は、CRCの格納領域から、CRC「63350373」を抽出する。
改ざん検出装置102は、復号したブロックBnの末尾データ7[byte]をパディングpdと判断して除去し、平文を生成する。ブロックB2’,B3’は改ざんの影響を受けているため、情報処理装置101での平文PTとは異なる平文PT’が生成される。改ざん検出装置102は、パディングpdを除去した平文PT’から32[bit]のCRC’を生成する。
ここで、改ざん検出装置102は、抽出したCRCと生成したCRC’との一致判定をおこない、改ざんの有無を検出する。改ざん検出装置102により生成された平文PT’が情報処理装置101の平文PTと同一であれば、それぞれの平文から生成されるCRCも同一となる。
ここでは、暗号化ブロックC2’の改ざんの影響により変化した平文PT’からCRC’が生成される。すなわち、パディングpdに格納されたCRCと改ざん検出装置102により生成されたCRC’は異なる。よって、改ざん検出装置102は、改ざん検出装置102にてパディングpdを除去して得た平文PTの内容は、暗号化ブロックの改ざんの影響を受けて変化していると判断できる。
(情報処理装置101がおこなうパディング連結処理の詳細)
次に、図12を用いて、情報処理装置101がおこなうパディング連結処理の詳細について説明する。
図12は、情報処理装置101がおこなうパディング連結処理の詳細を示すフローチャートである。まず、CPU201は、平文PTの入力があったか否か判定する(ステップS1201)。平文PTの入力がない場合(ステップS1201:No)、ステップS1201に戻り、CPU201は、平文PTの入力を待つ。一方、平文PTの入力があった場合(ステップS1201:Yes)、ステップS1202に移行する。
次に、CPU201は、入力された平文PTに連結するパディングpdのパディング長plを算出する(ステップS1202)。そして、CPU201は、平文PTの末尾に算出したパディング長plのパディングpdを連結する(ステップS1203)。
次に、CPU201は、算出したパディング長plに応じたCRCを算出する(ステップS1204)。そして、CPU201は、算出したCRCを、パディングpdのCRCの格納領域に格納する(ステップS1205)。
次に、CPU201は、CRCを格納した連結文APTを、ブロック長blごとに、ブロック暗号のCBCモードにより暗号化する(ステップS1206)。そして、CPU201は、暗号化した暗号化ブロックを出力して(ステップS1207)、パディング連結処理を終了する。
これにより、情報処理装置101は、結果として、パディング長plを示すコードを末尾に含み、平文PTから算出されるコードを格納領域に含むパディングpdを作成できる。また、情報処理装置101は、結果として、パディングpdにパディング長領域と格納領域とを除いた残余の領域がある場合、パディング長plに対応するコードを残余の領域に含むパディングpdを作成できる。そして、情報処理装置101は、入力された平文PTに作成したパディングpdを連結して、連結文APTを作成することができる。
(改ざん検出装置102がおこなう改ざん検出処理の詳細)
次に、図13を用いて、改ざん検出装置102がおこなう改ざん検出処理の詳細について説明する。
図13は、改ざん検出装置102がおこなう改ざん検出処理の詳細を示すフローチャートである。まず、CPU201は、暗号化ブロックの入力があったか判定する(ステップS1301)。暗号化ブロックの入力がない場合(ステップS1301:No)、ステップS1301に戻り、CPU201は、暗号化ブロックの入力を待つ。一方、暗号化ブロックの入力があった場合(ステップS1301:Yes)、ステップS1302に移行する。
次に、CPU201は、ブロック暗号のCBCモードにより、暗号化ブロックから平文を復号する(ステップS1302)。そして、CPU201は、末尾からパディング長plを抽出し、パディング長plに基づいてCRCの格納領域長を算出する(ステップS1303)。次に、CPU201は、格納領域からCRCを抽出する(ステップS1304)。
そして、CPU201は、パディング長plが4[byte]以下か否かを判定する(ステップS1305)。パディング長plが4[byte]以下である場合(ステップS1305:Yes)、ステップS1308に移行する。
一方、パディング長plが4[byte]以下ではない場合(ステップS1305:No)、CPU201は、パディング長plが正しいか否か判定する(ステップS1306)。パディング長plが正しい場合(ステップS1306:Yes)、ステップS1308に移行する。
一方、パディング長plが誤りである場合(ステップS1306:No)、CPU201は、改ざんありと判断し、判断結果を出力して(ステップS1307)、改ざん検出処理を終了する。
ステップS1308にて、CPU201は、復号した平文からパディングpdを除去する(ステップS1308)。次に、CPU201は、パディングを除去した後の平文からCRCを算出する(ステップS1309)。
そして、CPU201は、ステップS1304にて抽出したCRCとステップS1309にて算出したCRCとが一致するか否か判定する(ステップS1310)。一致する場合(ステップS1310:Yes)、CPU201は、改ざんされていないと判断して、復号した平文を出力し(ステップS1311)、改ざん検出処理を終了する。
一方、一致しない場合(ステップS1310:No)、CPU201は、改ざんありと判断し、判断結果を出力して(ステップS1307)、改ざん検出処理を終了する。
これにより、改ざん検出装置102は、パディングpdにパディング長plに対応するコードが含まれている場合、パディング長plが正しいかを判定することにより、暗号化ブロックの改ざんの影響がパディングpdに及んでいるか否か判定することができる。
また、改ざん検出装置102は、パディングpdに含まれる情報処理装置101での平文PTから算出されたコードと改ざん検出装置102にて得られた平文から算出されたコードとの一致判定をおこなう。そのため、改ざん検出装置102は、暗号化ブロックの改ざんの影響により、改ざん検出装置102にて得られた平文が、情報処理装置101での平文PTから変化しているか否か判定することができる。
以上説明したように、情報処理装置101は、平文PTに連結するパディングpdのパディング長plを算出してから、パディング長plの範囲内で平文PTから算出するコードの格納領域長clを算出する。これにより、平文PTから算出するコードを、パディングpd内に格納可能なデータ長で生成することができる。これにより、生成した平文PTから算出したコードをパディングpdに格納してもパディングpdのデータ長が増加することがないため、連結文APTのデータ長の増加を防止し、リソースの使用量の削減をおこなうことができる。
また、改ざん検出装置102は、復号により得た平文から算出されたコードとパディングpdに格納された平文PTから算出されたコードとの一致判定をおこなう。これにより、暗号化ブロックの改ざんにより、平文が変化したことを検出することができる。
また、情報処理装置101は、格納領域を算出する際に、パディングpdの末尾のパディング長領域を確保しておく。これにより、改ざん検出装置102は、末尾のパディング長領域のコードが示すデータ長に基づいて、改ざんが検出されなかった連結文APTから、パディングpdを除去して、情報処理装置101での平文PTと同一の平文PTを得ることができる。
また、情報処理装置101は、パディング長領域長llをブロック長blを示すことができる最も短いデータ長で生成する。これにより、必要最小限のデータ長で、パディング長plを示すコードを格納できる。
また、情報処理装置101は、平文PTを暗号化するために必要最小限のデータ長でパディングpdを生成する。これにより、パディングpdを連結することによる送信データ量の増加を最小にすることができる。
なお、本実施の形態で説明した情報処理方法および改ざん検出方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムおよび本改ざん検出プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報処理プログラムおよび本改ざん検出プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)平文データのデータ長より長く、かつ、所定のブロック長の倍数となるデータ長を特定する特定手段と、
前記平文データのデータ長と前記特定手段によって特定されたデータ長との差分のデータ長を算出する算出手段と、
前記算出手段によって算出された差分のデータ長を示す第1のコードを生成する第1の生成手段と、
前記平文データから算出される第2のコードを、前記差分のデータ長から前記第1の生成手段によって生成された第1のコードのデータ長を引いた残余のデータ長以内のデータ長で生成する第2の生成手段と、
前記第2の生成手段によって生成された第2のコードを含み、前記第1のコードを末尾とするパディングを、前記差分のデータ長で作成する作成手段と、
前記作成手段によって作成されたパディングを前記平文データの末尾に連結させて連結データを生成する連結手段と、
前記連結手段によって得られた連結データを出力する出力手段と、
を備えることを特徴とする情報処理装置。
(付記2)前記連結データを、暗号化と復号に共通して使用される鍵を用いて前記所定のブロック長ごとに暗号化する暗号化手段を備え、
前記出力手段は、
前記暗号化手段によって前記所定のブロック長ごとに暗号化された暗号化連結データを出力することを特徴とする付記1に記載の情報処理装置。
(付記3)前記第1の生成手段は、
前記差分のデータ長を示す第1のコードを、前記所定のブロック長を示すことができる最も短いデータ長で生成することを特徴とする付記1または2に記載の情報処理装置。
(付記4)前記特定手段は、
前記平文データのデータ長より長く、かつ、前記所定のブロック長の倍数となるデータ長群の中において、最も短いデータ長を特定することを特徴とする付記1〜3のいずれか一つに記載の情報処理装置。
(付記5)前記第2の生成手段は、
前記平文データから算出される第2のコードを、前記差分のデータ長から前記第1のコードのデータ長を引いた残余のデータ長で生成し、
前記作成手段は、
前記第1のコードを末尾とし、前記第2のコードを先頭とするパディングを作成することを特徴とする付記1〜4のいずれか一つに記載の情報処理装置。
(付記6)前記第2の生成手段は、
所定のデータ長が前記差分のデータ長から前記第1のコードのデータ長を引いた残余のデータ長より短い場合、前記平文データから算出する第2のコードを、前記所定のデータ長で生成し、
前記作成手段は、
前記第1のコードを末尾とし、前記第2のコードを前記第1のコードの先頭と隣接させたパディングを、前記差分のデータ長で作成することを特徴とする付記1〜4のいずれか一つに記載の情報処理装置。
(付記7)前記第1のコードを特定する第3のコードを、前記差分のデータ長から前記第1のコードのデータ長と前記所定のデータ長とを引いた残余のデータ長で生成する第3の生成手段を備え、
前記作成手段は、
前記第1のコードを末尾とし、前記第2のコードを前記第1のコードの先頭と隣接させ、前記第3のコードを前記第2のコードの先頭と隣接させたパディングを作成することを特徴とする付記6に記載の情報処理装置。
(付記8)前記第2のコードは、前記平文データから得られたハッシュ値であることを特徴とする付記1〜7のいずれか一つに記載の情報処理装置。
(付記9)前記第2のコードは、前記平文データから得られたパリティ符号であることを特徴とする付記1〜7のいずれか一つに記載の情報処理装置。
(付記10)平文データを所定のブロック長ごとに暗号化した暗号化データを入力する入力手段と、
前記入力手段によって入力された前記暗号化データから、暗号化と復号に共通して使用される鍵を用いて復号した復号データを生成する復号手段と、
パディングのデータ長を格納する前記復号データの末尾となる第1の領域から、第1のコードを抽出する第1の抽出手段と、
前記第1の抽出手段によって抽出された第1のコードが示すデータ長に基づいて、平文データから算出されたコードを格納する前記復号データの第2の領域を決定する決定手段と、
前記決定手段によって決定された第2の領域から第2のコードを抽出する第2の抽出手段と、
前記第1のコードが示すデータ長となる前記復号データの末尾領域を除いた前記復号データの第3の領域から第3のコードを抽出する第3の抽出手段と、
前記第3の抽出手段によって抽出された第3のコードから算出する第4のコードを、前記第2のコードのデータ長と同一データ長で生成する生成手段と、
前記生成手段によって生成された第4のコードと前記第2のコードとの一致判定をおこなう判定手段と、
前記判定手段によって判定された判定結果を出力する出力手段と、
を備えることを特徴とする改ざん検出装置。
(付記11)前記決定手段は、
前記第1の領域の先頭に接する前記復号データ内の領域であって、前記第1のコードが示すデータ長から前記第1の領域のデータ長を引いた残余のデータ長の領域を、前記第2の領域に決定することを特徴とする付記10に記載の改ざん検出装置。
(付記12)前記決定手段は、
所定のデータ長が前記第1のコードが示すデータ長から前記第1のコードのデータ長を引いた残余のデータ長より短い場合、前記第1の領域の先頭に接する前記復号データ内の領域であって、前記所定のデータ長の領域を、前記第2の領域に決定することを特徴とする付記10に記載の改ざん検出装置。
(付記13)前記第1のコードを特定するコードを格納する第4の領域から第5のコードを抽出する第4の抽出手段を備え、
前記決定手段は、
前記第2の領域の先頭に接する前記復号データ内の領域であって、前記第1のコードが示すデータ長から前記第1のコードのデータ長と前記所定のデータ長とを引いた残余のデータ長の領域を、前記第4の領域として決定し、
前記第4の抽出手段は、
前記決定手段によって決定された第4の領域から、前記第5のコードを抽出し、
前記判定手段は、
前記第4の抽出手段によって抽出された第5のコードにより特定されるコードと前記第1のコードとの一致判定をおこなうことを特徴とする付記12に記載の改ざん検出装置。
(付記14)前記第4のコードは前記第3のコードから得られたハッシュ値であることを特徴とする付記11〜13のいずれか一つに記載の改ざん検出装置。
(付記15)前記第4のコードは前記第3のコードから得られたパリティ符号であることを特徴とする付記11〜13のいずれか一つに記載の改ざん検出装置。
(付記16)コンピュータが、
平文データのデータ長より長く、かつ、所定のブロック長の倍数となるデータ長を特定する特定工程と、
前記平文データのデータ長と前記特定工程によって特定されたデータ長との差分のデータ長を算出する算出工程と、
前記算出工程によって算出された差分のデータ長を示す第1のコードを生成する第1の生成工程と、
前記平文データから算出される第2のコードを、前記差分のデータ長から前記第1の生成工程によって生成された第1のコードのデータ長を引いた残余のデータ長以内のデータ長で生成する第2の生成工程と、
前記第2の生成工程によって生成された第2のコードを含み、前記第1のコードを末尾とするパディングを、前記差分のデータ長で作成する作成工程と、
前記作成工程によって作成されたパディングを前記平文データの末尾に連結させて連結データを生成する連結工程と、
前記連結工程によって得られた連結データを出力する出力工程と、
を実行することを特徴とする情報処理方法。
(付記17)コンピュータが、
平文データを所定のブロック長ごとに暗号化した暗号化データを入力する入力工程と、
前記入力工程によって入力された前記暗号化データから、暗号化と復号に共通して使用される鍵を用いて復号した復号データを生成する復号工程と、
パディングのデータ長を格納する前記復号データの末尾となる第1の領域から、第1のコードを抽出する第1の抽出工程と、
前記第1の抽出工程によって抽出された第1のコードが示すデータ長に基づいて、平文データから算出されたコードを格納する前記復号データの第2の領域を決定する決定工程と、
前記決定工程によって決定された第2の領域から第2のコードを抽出する第2の抽出工程と、
前記第1のコードが示すデータ長となる前記復号データの末尾領域を除いた前記復号データの第3の領域から第3のコードを抽出する第3の抽出工程と、
前記第3の抽出工程によって抽出された第3のコードから算出する第4のコードを、前記第2のコードのデータ長と同一データ長で生成する生成工程と、
前記生成工程によって生成された第4のコードと前記第2のコードとの一致判定をおこなう判定工程と、
前記判定工程によって判定された判定結果を出力する出力工程と、
を実行することを特徴とする改ざん検出方法。
(付記18)平文データのデータ長より長く、かつ、所定のブロック長の倍数となるデータ長を特定する特定工程と、
前記平文データのデータ長と前記特定工程によって特定されたデータ長との差分のデータ長を算出する算出工程と、
前記算出工程によって算出された差分のデータ長を示す第1のコードを生成する第1の生成工程と、
前記平文データから算出される第2のコードを、前記差分のデータ長から前記第1の生成工程によって生成された第1のコードのデータ長を引いた残余のデータ長以内のデータ長で生成する第2の生成工程と、
前記第2の生成工程によって生成された第2のコードを含み、前記第1のコードを末尾とするパディングを、前記差分のデータ長で作成する作成工程と、
前記作成工程によって作成されたパディングを前記平文データの末尾に連結させて連結データを生成する連結工程と、
前記連結工程によって得られた連結データを出力する出力工程と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
(付記19)平文データを所定のブロック長ごとに暗号化した暗号化データを入力する入力工程と、
前記入力工程によって入力された前記暗号化データから、暗号化と復号に共通して使用される鍵を用いて復号した復号データを生成する復号工程と、
パディングのデータ長を格納する前記復号データの末尾となる第1の領域から、第1のコードを抽出する第1の抽出工程と、
前記第1の抽出工程によって抽出された第1のコードが示すデータ長に基づいて、平文データから算出されたコードを格納する前記復号データの第2の領域を決定する決定工程と、
前記決定工程によって決定された第2の領域から第2のコードを抽出する第2の抽出工程と、
前記第1のコードが示すデータ長となる前記復号データの末尾領域を除いた前記復号データの第3の領域から第3のコードを抽出する第3の抽出工程と、
前記第3の抽出工程によって抽出された第3のコードから算出する第4のコードを、前記第2のコードのデータ長と同一データ長で生成する生成工程と、
前記生成工程によって生成された第4のコードと前記第2のコードとの一致判定をおこなう判定工程と、
前記判定工程によって判定された判定結果を出力する出力工程と、
をコンピュータに実行させることを特徴とする改ざん検出プログラム。
101 情報処理装置
102 改ざん検出装置
301 特定部
302 算出部
303 第1の生成部
304 第2の生成部
305 作成部
306 連結部
307 出力部
308 暗号化部
309 第3の生成部
401 入力部
402 復号部
403 第1の抽出部
404 決定部
405 第2の抽出部
406 第3の抽出部
407 生成部
408 判定部
409 出力部
410 第4の抽出部

Claims (15)

  1. 平文データのデータ長より長く、かつ、所定のブロック長の倍数となるデータ長を特定する特定手段と、
    前記平文データのデータ長と前記特定手段によって特定されたデータ長との差分のデータ長を算出する算出手段と、
    前記算出手段によって算出された差分のデータ長を示す第1のコードを生成する第1の生成手段と、
    前記平文データから算出される第2のコードを、前記差分のデータ長から前記第1の生成手段によって生成された第1のコードのデータ長を引いた残余のデータ長以内のデータ長で生成する第2の生成手段と、
    前記第2の生成手段によって生成された第2のコードを含み、前記第1のコードを末尾とするパディングを、前記差分のデータ長で作成する作成手段と、
    前記作成手段によって作成されたパディングを前記平文データの末尾に連結させて連結データを生成する連結手段と、
    前記連結手段によって得られた連結データを出力する出力手段と、
    を備えることを特徴とする情報処理装置。
  2. 前記連結データを、暗号化と復号に共通して使用される鍵を用いて前記所定のブロック長ごとに暗号化する暗号化手段を備え、
    前記出力手段は、
    前記暗号化手段によって前記所定のブロック長ごとに暗号化された暗号化連結データを出力することを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1の生成手段は、
    前記差分のデータ長を示す第1のコードを、前記所定のブロック長を示すことができる最も短いデータ長で生成することを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記特定手段は、
    前記平文データのデータ長より長く、かつ、前記所定のブロック長の倍数となるデータ長群の中において、最も短いデータ長を特定することを特徴とする請求項1〜3のいずれか一つに記載の情報処理装置。
  5. 前記第2の生成手段は、
    前記平文データから算出される第2のコードを、前記差分のデータ長から前記第1のコードのデータ長を引いた残余のデータ長で生成し、
    前記作成手段は、
    前記第1のコードを末尾とし、前記第2のコードを先頭とするパディングを作成することを特徴とする請求項1〜4のいずれか一つに記載の情報処理装置。
  6. 前記第2の生成手段は、
    前記第2のコードの最大の長さをあらわす所定のデータ長が前記差分のデータ長から前記第1のコードのデータ長を引いた残余のデータ長より短い場合、前記平文データから算出する第2のコードを、前記所定のデータ長で生成し、
    前記作成手段は、
    前記第1のコードを末尾とし、前記第2のコードを前記第1のコードの先頭と隣接させたパディングを、前記差分のデータ長で作成することを特徴とする請求項1〜4のいずれか一つに記載の情報処理装置。
  7. 前記第1のコードを特定する第3のコードを、前記差分のデータ長から前記第1のコードのデータ長と前記所定のデータ長とを引いた残余のデータ長で生成する第3の生成手段を備え、
    前記作成手段は、
    前記第1のコードを末尾とし、前記第2のコードを前記第1のコードの先頭と隣接させ、前記第3のコードを前記第2のコードの先頭と隣接させたパディングを作成することを特徴とする請求項6に記載の情報処理装置。
  8. 平文データを所定のブロック長ごとに暗号化した暗号化データを入力する入力手段と、
    前記入力手段によって入力された前記暗号化データから、暗号化と復号に共通して使用される鍵を用いて復号した復号データを生成する復号手段と、
    パディングのデータ長を格納する前記復号データの末尾となる第1の領域から、第1のコードを抽出する第1の抽出手段と、
    前記第1の抽出手段によって抽出された第1のコードが示すデータ長に基づいて、平文データから算出されたコードを格納する前記復号データの第2の領域を決定する決定手段と、
    前記決定手段によって決定された第2の領域から第2のコードを抽出する第2の抽出手段と、
    前記第1のコードが示すデータ長となる前記復号データの末尾領域を除いた前記復号データの第3の領域から第3のコードを抽出する第3の抽出手段と、
    前記第3の抽出手段によって抽出された第3のコードから算出する第4のコードを、前記第2のコードのデータ長と同一データ長で生成する生成手段と、
    前記生成手段によって生成された第4のコードと前記第2のコードとの一致判定をおこなう判定手段と、
    前記判定手段によって判定された判定結果を出力する出力手段と、
    を備えることを特徴とする改ざん検出装置。
  9. 前記決定手段は、
    前記第1の領域の先頭に接する前記復号データ内の領域であって、前記第1のコードが示すデータ長から前記第1の領域のデータ長を引いた残余のデータ長の領域を、前記第2の領域に決定することを特徴とする請求項8に記載の改ざん検出装置。
  10. 前記決定手段は、
    前記第2のコードの最大の長さをあらわす所定のデータ長が前記第1のコードが示すデータ長から前記第1のコードのデータ長を引いた残余のデータ長より短い場合、前記第1の領域の先頭に接する前記復号データ内の領域であって、前記所定のデータ長の領域を、前記第2の領域に決定することを特徴とする請求項8に記載の改ざん検出装置。
  11. 前記第1のコードを特定するコードを格納する第4の領域から第5のコードを抽出する第4の抽出手段を備え、
    前記決定手段は、
    前記第2の領域の先頭に接する前記復号データ内の領域であって、前記第1のコードが示すデータ長から前記第1のコードのデータ長と前記所定のデータ長とを引いた残余のデータ長の領域を、前記第4の領域として決定し、
    前記第4の抽出手段は、
    前記決定手段によって決定された第4の領域から、前記第5のコードを抽出し、
    前記判定手段は、
    前記第4の抽出手段によって抽出された第5のコードにより特定されるコードと前記第1のコードとの一致判定をおこなうことを特徴とする請求項10に記載の改ざん検出装置。
  12. プロセッサとメモリとを有するコンピュータが、
    前記プロセッサによって、平文データのデータ長より長く、かつ、所定のブロック長の倍数となるデータ長を特定し、前記メモリに記憶し、
    前記プロセッサによって、前記平文データのデータ長と特定されたデータ長との差分のデータ長を算出し、前記メモリに記憶し、
    前記プロセッサによって、算出された差分のデータ長を示す第1のコードを生成し、前記メモリに記憶し、
    前記プロセッサによって、前記平文データから算出される第2のコードを、前記差分のデータ長から生成された第1のコードのデータ長を引いた残余のデータ長以内のデータ長で生成し、前記メモリに記憶し、
    前記プロセッサによって、生成された第2のコードを含み、前記第1のコードを末尾とするパディングを、前記差分のデータ長で作成し、前記メモリに記憶し、
    前記プロセッサによって、作成されたパディングを前記平文データの末尾に連結させて連結データを生成し、前記メモリに記憶し、
    前記プロセッサによって、生成された連結データを出力する、
    処理を実行することを特徴とする情報処理方法。
  13. プロセッサとメモリとを有するコンピュータが、
    前記プロセッサによって、平文データを所定のブロック長ごとに暗号化した暗号化データを入力し、前記メモリに記憶し、
    前記プロセッサによって、入力された前記暗号化データから、暗号化と復号に共通して使用される鍵を用いて復号した復号データを生成し、前記メモリに記憶し、
    前記プロセッサによって、パディングのデータ長を格納する前記復号データの末尾となる第1の領域から、第1のコードを抽出し、前記メモリに記憶し、
    前記プロセッサによって、抽出された第1のコードが示すデータ長に基づいて、平文データから算出されたコードを格納する前記復号データの第2の領域を決定し、前記メモリに記憶し、
    前記プロセッサによって、決定された第2の領域から第2のコードを抽出し、前記メモリに記憶し、
    前記プロセッサによって、前記第1のコードが示すデータ長となる前記復号データの末尾領域を除いた前記復号データの第3の領域から第3のコードを抽出し、前記メモリに記憶し、
    前記プロセッサによって、抽出された第3のコードから算出する第4のコードを、前記第2のコードのデータ長と同一データ長で生成し、前記メモリに記憶し、
    前記プロセッサによって、生成された第4のコードと前記第2のコードとの一致判定をおこない、前記メモリに記憶し、
    前記プロセッサによって、判定結果を出力する、
    処理を実行することを特徴とする改ざん検出方法。
  14. プロセッサとメモリとを有するコンピュータに、
    前記プロセッサによって、平文データのデータ長より長く、かつ、所定のブロック長の倍数となるデータ長を特定し、前記メモリに記憶し、
    前記プロセッサによって、前記平文データのデータ長と特定されたデータ長との差分のデータ長を算出し、前記メモリに記憶し、
    前記プロセッサによって、算出された差分のデータ長を示す第1のコードを生成し、前記メモリに記憶し、
    前記プロセッサによって、前記平文データから算出される第2のコードを、前記差分のデータ長から生成された第1のコードのデータ長を引いた残余のデータ長以内のデータ長で生成し、前記メモリに記憶し、
    前記プロセッサによって、生成された第2のコードを含み、前記第1のコードを末尾とするパディングを、前記差分のデータ長で作成し、前記メモリに記憶し、
    前記プロセッサによって、作成されたパディングを前記平文データの末尾に連結させて連結データを生成し、前記メモリに記憶し、
    前記プロセッサによって、生成された連結データを出力する、
    処理を実行させることを特徴とする情報処理プログラム。
  15. プロセッサとメモリとを有するコンピュータに、
    前記プロセッサによって、平文データを所定のブロック長ごとに暗号化した暗号化データを入力し、前記メモリに記憶し、
    前記プロセッサによって、入力された前記暗号化データから、暗号化と復号に共通して使用される鍵を用いて復号した復号データを生成し、前記メモリに記憶し、
    前記プロセッサによって、パディングのデータ長を格納する前記復号データの末尾となる第1の領域から、第1のコードを抽出し、前記メモリに記憶し、
    前記プロセッサによって、抽出された第1のコードが示すデータ長に基づいて、平文データから算出されたコードを格納する前記復号データの第2の領域を決定し、前記メモリに記憶し、
    前記プロセッサによって、決定された第2の領域から第2のコードを抽出し、前記メモリに記憶し、
    前記プロセッサによって、前記第1のコードが示すデータ長となる前記復号データの末尾領域を除いた前記復号データの第3の領域から第3のコードを抽出し、前記メモリに記憶し、
    前記プロセッサによって、抽出された第3のコードから算出する第4のコードを、前記第2のコードのデータ長と同一データ長で生成し、前記メモリに記憶し、
    前記プロセッサによって、生成された第4のコードと前記第2のコードとの一致判定をおこない、前記メモリに記憶し、
    前記プロセッサによって、判定結果を出力する、
    処理を実行させることを特徴とする改ざん検出プログラム。
JP2013506884A 2011-03-25 2011-03-25 情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラム Expired - Fee Related JP5641133B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/057480 WO2012131856A1 (ja) 2011-03-25 2011-03-25 情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラム

Publications (2)

Publication Number Publication Date
JPWO2012131856A1 JPWO2012131856A1 (ja) 2014-07-24
JP5641133B2 true JP5641133B2 (ja) 2014-12-17

Family

ID=46929697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013506884A Expired - Fee Related JP5641133B2 (ja) 2011-03-25 2011-03-25 情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラム

Country Status (3)

Country Link
US (1) US9071420B2 (ja)
JP (1) JP5641133B2 (ja)
WO (1) WO2012131856A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018186238A1 (ja) 2017-04-04 2018-10-11 キヤノン株式会社 情報処理装置、情報処理方法およびコンピュータプログラム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5255154B1 (ja) * 2012-12-26 2013-08-07 株式会社エアー 部分一致検索の可能な暗号システム
US10575210B2 (en) 2015-10-30 2020-02-25 Qualcomm Incorporated Cyclic redundancy check length management
US10348506B2 (en) * 2016-09-30 2019-07-09 International Business Machines Corporation Determination of state of padding operation
US11115184B2 (en) * 2017-05-22 2021-09-07 Micro Focus Llc Format preserving encryption with padding
KR102452037B1 (ko) * 2020-11-10 2022-10-11 한국철도기술연구원 무선 통신 시스템에서 암호화 및 복호화 방법 및 장치
CN115001758B (zh) * 2022-05-18 2024-05-07 矩阵时光数字科技有限公司 一种基于量子加密的短字节消息安全加密方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0946321A (ja) * 1995-08-01 1997-02-14 Fujitsu Ltd データ通信方法及び装置
JPH09146785A (ja) * 1995-09-20 1997-06-06 Matsushita Electric Ind Co Ltd 可変長データ送受信装置
JP2001318600A (ja) * 2000-05-11 2001-11-16 Mitsubishi Heavy Ind Ltd メッセージ認証方法
JP2004134839A (ja) * 2002-10-08 2004-04-30 Fujitsu Ltd パディングが付加された伝送情報を受信する受信装置
JP2006220747A (ja) * 2005-02-08 2006-08-24 Toshiba Corp データ処理装置、データ記録装置、データ再生装置およびデータ格納方法
JP2008219746A (ja) * 2007-03-07 2008-09-18 Fujitsu Ltd 情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体
JP2009111563A (ja) * 2007-10-29 2009-05-21 Nec Electronics Corp データ処理方法およびデータ処理装置並びにプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7054445B2 (en) * 2000-03-31 2006-05-30 Vdg, Inc. Authentication method and schemes for data integrity protection
US20020048364A1 (en) * 2000-08-24 2002-04-25 Vdg, Inc. Parallel block encryption method and modes for data confidentiality and integrity protection
JP2003174650A (ja) * 2001-09-27 2003-06-20 Canon Inc 画像符号化装置、可変長符号化装置、制御装置およびそれらの方法
JP2011254440A (ja) * 2010-06-04 2011-12-15 Toshiba Corp 情報処理装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0946321A (ja) * 1995-08-01 1997-02-14 Fujitsu Ltd データ通信方法及び装置
JPH09146785A (ja) * 1995-09-20 1997-06-06 Matsushita Electric Ind Co Ltd 可変長データ送受信装置
JP2001318600A (ja) * 2000-05-11 2001-11-16 Mitsubishi Heavy Ind Ltd メッセージ認証方法
JP2004134839A (ja) * 2002-10-08 2004-04-30 Fujitsu Ltd パディングが付加された伝送情報を受信する受信装置
JP2006220747A (ja) * 2005-02-08 2006-08-24 Toshiba Corp データ処理装置、データ記録装置、データ再生装置およびデータ格納方法
JP2008219746A (ja) * 2007-03-07 2008-09-18 Fujitsu Ltd 情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体
JP2009111563A (ja) * 2007-10-29 2009-05-21 Nec Electronics Corp データ処理方法およびデータ処理装置並びにプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018186238A1 (ja) 2017-04-04 2018-10-11 キヤノン株式会社 情報処理装置、情報処理方法およびコンピュータプログラム

Also Published As

Publication number Publication date
WO2012131856A1 (ja) 2012-10-04
US9071420B2 (en) 2015-06-30
JPWO2012131856A1 (ja) 2014-07-24
US20140169555A1 (en) 2014-06-19

Similar Documents

Publication Publication Date Title
JP5641133B2 (ja) 情報処理装置、改ざん検出装置、情報処理方法、改ざん検出方法、情報処理プログラムおよび改ざん検出プログラム
CN103563290B (zh) 公共加密体系结构服务中组合密钥控制信息的方法和系统
TWI642294B (zh) 具有鑑認指令之密碼訊息之電腦程式產品、系統及方法
US7499552B2 (en) Cipher method and system for verifying a decryption of an encrypted user data key
EP2352251A1 (en) Content decoding apparatus, content decoding method and integrated circuit
KR20080050932A (ko) 데이터 암호화 방법 및 그 장치
JP2010528511A (ja) ソフトウェア暗号化方法およびソフトウェア暗号解読方法およびソフトウェア暗号化装置およびソフトウェア暗号解読装置
CN103957100A (zh) 利用单指令在多种模式中执行aes加密或解密
US9288061B2 (en) Safe communication method with card
CN108199847A (zh) 数字安全处理方法、计算机设备及存储介质
CN107358284A (zh) 二维码的生成方法、读取方法、生成装置和读取装置
US8494169B2 (en) Validating encrypted archive keys
JP2012043242A (ja) 暗号化文書生成装置及び暗号化文書生成プログラム
JP2007334016A (ja) データ暗号化装置及びデータ暗号化方法
JP6441160B2 (ja) 秘匿化装置、復号装置、秘匿化方法および復号方法
US11522675B2 (en) Apparatus and method for encryption and decryption based on tweak converter to which key table is applied
JP6631989B2 (ja) 暗号化装置、制御方法、及びプログラム
WO2021044465A1 (ja) 暗号化装置、復号装置、コンピュータプログラム、暗号化方法、復号方法及びデータ構造
WO2006025346A1 (ja) 暗号化、復号化プログラム及び暗号システム
JP4603022B2 (ja) 暗号化データ作成装置、および暗号化データ作成プログラム
EP4218197B1 (en) Method for securing an execution of a cryptographic process
JP6296589B2 (ja) 暗号処理システム
JP5540584B2 (ja) 電子文書閲覧システム,方法及びコンピュータプログラム
CN115801355A (zh) 一种基于随机数的数据加密方法、装置、设备及存储介质
JP2007158967A (ja) 情報処理装置、耐タンパーデバイス、暗号処理方法及びコンピュータプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140603

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140804

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141013

R150 Certificate of patent or registration of utility model

Ref document number: 5641133

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees