JPH10340048A - ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置 - Google Patents

ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置

Info

Publication number
JPH10340048A
JPH10340048A JP9149423A JP14942397A JPH10340048A JP H10340048 A JPH10340048 A JP H10340048A JP 9149423 A JP9149423 A JP 9149423A JP 14942397 A JP14942397 A JP 14942397A JP H10340048 A JPH10340048 A JP H10340048A
Authority
JP
Japan
Prior art keywords
data
conversion
processing
encryption
hash value
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.)
Pending
Application number
JP9149423A
Other languages
English (en)
Inventor
Kazuo Takaragi
和夫 宝木
Hiroyuki Kurumaya
博之 車谷
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP9149423A priority Critical patent/JPH10340048A/ja
Priority to EP98110182A priority patent/EP0886399A3/en
Priority to US09/090,417 priority patent/US6122375A/en
Publication of JPH10340048A publication Critical patent/JPH10340048A/ja
Priority to US09/655,712 priority patent/US6370247B1/en
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • 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/30Compression, e.g. Merkle-Damgard construction

Abstract

(57)【要約】 【課題】データ攪乱度の高いハッシュ値や鍵、あるいは
暗号文などを、迅速に生成する。 【解決手段】メッセージが与えられたときに、メッセー
ジの分割データを入力し、それよりも長いデータを出力
するような単射拡大処理を行う。また、乗算処理、およ
び巡回シフト処理を行う処理を含むハッシュ関数によ
り、ハッシュ値を生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、電子捺印やデータ
暗号化などのコンピュータネットワークにおけるセキュ
リティを確保する技術に関し、特に、メッセージを逆変
換困難な値であるハッシュ値に変換する方法に関する。
【0002】
【従来の技術】電子メールなどのネットワークを介して
やり取りされるデータの暗号化方式として、公開鍵暗号
化方式がある。この公開鍵暗号化方式による処理の流れ
を概説すると、次のとおりである。
【0003】ユーザは、自己宛てのメールを暗号化す
るための公開鍵を、予めメールの送信者に配布してお
く。
【0004】メールの送信者は、メールの宛先となる
ユーザによって予め配布された公開鍵を用いて、メール
を暗号化する。そして、暗号化されたメールを、当該メ
ールの宛先へ送信する。
【0005】自己が配布した公開鍵で暗号化された電
子メールを受け取ったユーザは、自己が所有する秘密鍵
(公開鍵とは異なる数値を持つ)を用いて、当該電子メ
ールを復号化する。
【0006】ところで、この公開鍵暗号化方式は、デー
タの暗号化のみならず、ネットワークを用いた商取引
(電子商取引)において、電子的に契約などの正当性を
証明する技術である電子捺印(デジタル署名)技術にも
応用されている。
【0007】しかしながら、電子捺印技術において、公
開鍵暗号だけを用いて長いメッセージに対する電子捺印
を生成しようとすると、多くの処理時間を要する。この
ため、メッセージを、一旦、短いデータに圧縮してか
ら、この圧縮されたデータに対して電子捺印を生成する
方法が提案されている。
【0008】ここで、圧縮の方法は、通常のデータ圧縮
のように、圧縮されたデータから元のメッセージを復元
できるように圧縮する必要はない。しかし、ある種の暗
号的特性を持つように圧縮する必要がある。このような
圧縮を実現する関数として、ハッシュ関数(hash functi
on)が提案されている。
【0009】商取引文書等のメッセージ、たとえば 文書A:「太郎商会殿 乗用車(カタログNo. 1443)を
104万円で購入します。1996年3月10日 吉浦」 が、ハッシュ関数への入力データとなる。入力データの
長さはどんなに長くても構わない。
【0010】ハッシュ関数は、この入力データに対して
暗号変換に似た処理を施すことで一定長の短いデータに
なるように圧縮する。たとえば、 ハッシュ値:283AC9081E83D5B28977 が、ハッシュ関数の出力となる。
【0011】このハッシュ値は、メッセージダイジェス
ト、あるいはフィンガープリント(指紋)とも呼ばれて
おり、理想的には一つの入力データ(メッセージ)に対
して世の中に実質上一つしか存在しない。この「世の中
に実質上一つしか存在しない」ことを保証するため、ハ
ッシュ値の長さは少なくとも128ビット程度は必要とい
われている。より詳しくいえば、ハッシュ関数は、次の
ような特性をもつことが必要である。
【0012】一方向性(one−way property) あるハッシュ関数の出力値が与えられたとする。この出
力値と同じ出力値をもたらすような別のメッセージを求
めることが、計算量的に困難でなければならない。
【0013】たとえば、和夫君の誕生日が2月22日で
あるとする。和夫君の誕生日と同じ誕生日を持つ別の人
を探し出すためには、確立的にいえば、365/2=1
83人程度の人の誕生日を調べればよい。
【0014】このことは、人をメッセージに置き換え、
誕生日をハッシュ値に置き換えても、同様に成り立つ。
すなわち、ハッシュ値の長さを160ビットとすれば、
ハッシュ値の総数は2160通りある。あるメッセージの
ハッシュ値と同じハッシュ値をもつ別のメッセージを探
し出すためには、平均して、2160/2=2159個の
メッセージに調べる必要がある。これは計算量的に困難
である。
【0015】衝突回避性(collision free property) メッセージもハッシュ値も何であるかは問わない。とに
かく同じハッシュ値となる二つの異なるメッセージを見
つけることが計算量的に困難でなけらばならない。
【0016】たとえば、とにかく誰でも良いから同じ誕
生日を持つ二人を探したい。この場合、確率的にいえ
ば、3651/2=24人程度の人の誕生日を調べればよ
い。
【0017】このことは、人をメッセージに置き換え、
誕生日をハッシュ値に置き換えても、同様に成り立つ。
すなわち、ハッシュ値の長さを160ビットとすれば、
同じハッシュ値をもつ二つの異なるメッセージ(どんな
メッセージでもよい)を探し出すためには、平均して、
160/2=280組程度のメッセージを調べる必要があ
る。この数は、一方向性の場合と比べるとかなり小さ
い。しかし、依然、計算量的には困難である。
【0018】上記のような特性を必要とするハッシュ関
数を実現する方法として、種々の方法が発表されている
が、現在、換字と転置の繰り返しを行うことでハッシュ
値を得る方法が主流になっている。その処理の仕組みを
示す従来例が、次の文献1において開示されている。
【0019】ISO/IEC 10118-2, "Information technolo
gy - Security techniques - Hash-functions: Part 2:
Hash-functions using an n-bit block cipher algori
thm"(1994) 上記文献1に開示されているハッシュ関数について、図
面を用いて説明する。
【0020】図27は従来のハッシュ関数を説明するた
めの図であり、図27(a)は一般的なハッシュ関数の
処理の流れを説明するための図、図27(b)は図27
(a)に示す換字・転置繰り返し処理3005に、DE
S(Data Encryption Standard)のような暗号化関数を
用いた場合の処理の流れを説明するための図である。
【0021】図27(a)において、圧縮しようとして
いるメッセージ3001は、第1区分P13002、第
2区分P23003、・・・というように、一定の長さ
毎に分割され、順次、ハッシュ関数3007に入力され
る。
【0022】ハッシュ関数3007は、初期値3004
をパラメータとして、第1区分P13002に対して換
字・転置繰り返し処理3005を施す。これにより、第
1番目の中間出力を算出する。
【0023】次に、その第1番目の中間出力をパラメー
タ(初期値3004の代わり)にして、第2区分P2
003に対して換字・転置繰り返し処理3005を施
す。これにより、第2番目の中間出力を算出する。
【0024】上記の処理を最後の区分のデータが入力さ
れるまで繰り返すことで、最後に算出された中間出力
を、ハッシュ値Hash3006として用いる。
【0025】ここで、上記文献1では、換字・転置繰り
返し処理3005として、米国暗号標準DESのような
暗号化関数(ブロック暗号)を用いている。このような
ハッシュ関数は、「ブロック暗号を利用したハッシュ関
数」と呼ばれおり、ISO(International Organizati
on for Standardization)で標準化済みである。
【0026】この「ブロック暗号を利用したハッシュ関
数」の詳細は次のとおりである。
【0027】図27(b)において、初期値3004を
変換関数3008で変換したものを、パラメータとし
て、第1区分P13002を暗号化関数3009に入力
する。そして、暗号化関数3009での暗号化結果と、
第1区分P13002との間で、ビット毎に排他的論理
和3010を施す。これにより、換字・転置繰り返し処
理3005での第1番目の中間出力を算出する。
【0028】次に、第1番目の中間出力をフィードバッ
クして、これを変換関数3008で変換したものをパラ
メータとして、第2区分P23003を暗号化関数30
09に入力する。そして、暗号化関数3009での暗号
化結果と、第2区分P23003との間で、ビット毎に
排他的論理和3010を施す。これにより、換字・転置
繰り返し処理3005での第2番目の中間出力を算出す
る。
【0029】上記の処理を最後の区分のデータが入力さ
れるまで繰り返すことで、最後に算出された中間出力
を、ハッシュ値Hash3006として用いる。
【0030】図27(b)に示す「ブロック暗号を利用
したハッシュ関数」において、暗号化関数3009とし
てDESなどを用いる場合、通常、第1区分P1300
2、第2区分P23003、・・・の各区分の長さ、お
よび、換字・転置繰り返し処理3005の出力の長さ
は、各々64ビットとなる。したがって、ハッシュ値H
ash3006の長さも64ビットとなる。
【0031】この「ブロック暗号を利用したハッシュ関
数」の特徴は、メッセージの各区分P13002、P2
003、・・・の長さと、換字・転置繰り返し処理30
05の出力の長さが等しいことである。
【0032】なお、換字・転置繰り返し処理3005と
して、DESのような暗号化関数を用いないハッシュ関
数も提案されている。このようなハッシュ関数は、「専
用ハッシュ関数」と呼ばれおり、インターネット標準の
MD5や、ISOで標準化中のSHA−1、RIPEM
D−160などがある。
【0033】このうち、MD5については、次の文献2
で開示されている。
【0034】R.Rivest,"The MD5 Message-Digest Algor
ithm," IETF RFC 1321(1992) なお、MD5の処理の流れ自体は、図27(a)に示す
ものと同じであるので、この図を用いて説明する。
【0035】まず、圧縮しようとしているメッセージ3
001は、第1区分P13002、第2区分P2300
3、・・・というように、512ビット毎に分割され、
順次、ハッシュ関数3007に入力される。
【0036】ハッシュ関数3007は、128ビットの
初期値3004をパラメータとして、第1区分P130
02に対して、単純な換字・転置繰り返し処理3005
を施す。これにより、128ビットの第1番目の中間出
力を算出する。
【0037】次に、その第1番目の中間出力をパラメー
タ(初期値3004の代わり)にして、第2区分P2
003に対して、単純な換字・転置繰り返し処理300
5を施す。これにより、128ビットの第2番目の中間
出力を算出する。
【0038】上記の処理を最後の区分のデータが入力さ
れるまで繰り返すことで、最後に算出された128ビッ
トの中間出力を、ハッシュ値Hash3006として用い
る。
【0039】この「専用ハッシュ関数」の特徴は、メッ
セージの各区分P13002、P23003、・・・の
長さよりも、換字・転置繰り返し処理3005の出力の
長さが短いことである。
【0040】
【発明が解決しようとする課題】以上説明した従来技術
には、以下のような問題点がある。
【0041】(1)従来提案されているハッシュ関数の
問題点 「ブロック暗号を利用したハッシュ関数」の問題点 上述したように、「ブロック暗号を利用したハッシュ関
数」では、DESなどの暗号化関数(ブロック暗号)を
用いている。ブロック暗号は、通常、入力および出力の
データ長が64ビットである。このため、ハッシュ値も
64ビットとなる。一方、上述したように、一つの入力
データ(メッセージ)に対して、ハッシュ値が、「世の
中に実質上一つしか存在しない」ことを保証するために
は、ハッシュ値の長さを、少なくとも128ビット程度
以上にする必要があるといわれている。
【0042】したがって、「ブロック暗号を利用したハ
ッシュ関数」において、128ビットのハッシュ値を得
ようとする場合、ブロック暗号への入力データ(64ビ
ット)各々に対して、初期値などを変えて、当該ブロッ
ク暗号処理を2回行う必要がある。すなわち、ブロック
暗号への入力データ(64ビット)各々に対して、出力
(64ビット)を2回算出する必要がある。これでは、
ハッシュ値生成の処理速度が遅くなるという不満が生じ
る。
【0043】「専用ハッシュ関数」の問題点 「専用ハッシュ関数」では、「ブロック暗号を利用した
ハッシュ関数」と異なり、メッセージを分割したデータ
各々に対して、換字・転置繰り返し処理を2回行わなく
ても、128ビットのハッシュ値を得ることができる。
【0044】しかしながら、「専用ハッシュ関数」で
は、上述したように、メッセージを分割したデータ各々
に対して、単純な換字・転置繰り返し処理を施すこと
で、ハッシュ値を得ている。ここで、換字・転置繰り返
し処理の出力値の長さ(上記の例では、512ビット)
は、その入力値の長さ(上記の例では、128ビット)
より短い。すなわち、換字・転置繰り返し処理におい
て、圧縮が行われていることになる。
【0045】このため、たとえば、512ビット毎に複
数のデータに分割した場合に、最後の区分のデータのみ
が異なるような2つのメッセージを想定した場合、単純
な換字・転置繰り返し処理により最後の区分のデータ
(512ビット)を128ビットの出力に圧縮する過程
において、その出力(すなわちハッシュ値)が同じにな
る確立が高まる。これでは、衝突回避性を劣化させてし
まう。
【0046】なお、上記、で述べた問題点は、ハ
ッシュ関数を電子捺印に用いた場合にのみ生じる問題で
はない。たとえば、データの暗号化方式に用いた場合で
も、同様に生じる問題である。
【0047】(2)公開鍵暗号方式の問題点 上述したように、公開鍵暗号を用いて長いデータを暗
号化しようとすると、多くの処理時間を要する。
【0048】公開鍵暗号方式を電子メールなどのデー
タ暗号化に適用した場合、同じ電子メールを複数の宛先
に暗号化して送信しようとすると、送信者は、各宛先毎
に、当該宛先から予め配布されて公開鍵を用いて暗号化
処理を行わなければならない。すなわち、電子メールの
暗号化処理を宛先の数だけ繰り返し行わなければならな
い。
【0049】一方、受信者は、間違ってファイルから復
号鍵を消去するなどして、復号鍵を紛失してしまった場
合、自己宛てに送られてきた、自己が配布した公開鍵で
暗号化された電子メールを復号することができなくなっ
てしまう。
【0050】本発明は上記事情に鑑みてなされたもので
あり、本発明の目的はデータ攪乱度の高いハッシュ値や
鍵、あるいは暗号文などを、迅速に生成する方法および
装置を提供することにある。
【0051】また、本発明の他の目的は、間違ってファ
イルから復号鍵を消去するなどして、復号鍵を紛失して
しまった場合でも、自己宛てに送られてきた暗号化デー
タを、他の二人以上の受信者が協力することで復号する
ことが可能なデータ暗号化方法および装置を提供するこ
とにある。
【0052】
【課題を解決するための手段】上記課題を解決するため
に、本発明のハッシュ値生成方法および装置は、対象デ
ータを少なくとも2つのブロックに分割する第一の構成
要素と、前記第一の構成要素の結果得られた少なくとも
2つのブロックのうちのいずれか1つに対して、換字お
よび/または転置変換を行う第二の構成要素と、前記第
二の構成要素の結果得られたデータに対して、結果が当
該データのデータ長よりも長くなるような乗算を行う第
三の構成要素と、前記第三の構成要素の結果得られたデ
ータを、さらに少なくとも2つのブロックに分割する第
四の構成要素と、前記第四の構成要素の結果得られた少
なくとも2つのブロック各々に対して、換字および/ま
たは転置変換を行う第五の構成要素と、を含む。
【0053】本発明のハッシュ値生成方法および装置で
は、上述したように、ハッシュ値生成過程において、入
力値に対して出力値の長さが長くなるような乗算を行っ
ている。乗算処理によれば、出力値のビット各々が入力
値のビット各々の影響を受けるので、データの攪乱を効
率よく行うことができる。
【0054】ところで、乗算処理は、最近のマイクロプ
ロセッサの進展により取り分け処理速度が向上してい
る。したがって、データ攪乱度の高いハッシュ値の生成
を迅速に行うことができる。
【0055】また、本発明の他のハッシュ値生成方法お
よび装置は、対象データを少なくとも2つに分割する第
一の構成要素と、前記第一の構成要素の結果得られた少
なくとも2つのブロックのうちの、いずれか少なくとも
1つに対して、入力値が異なれば出力値も必ず異なり
(単射)、かつ出力値の長さが入力値の長さよりも長く
なる(拡大)変換である単射拡大変換を行う第二の構成
要素と、を含む。
【0056】本発明の他のハッシュ値生成方法および装
置では、ハッシュ値生成の過程において、出力の長さを
入力の長さより長くし、かつ、入力値が異なれば出力値
も必ず異なるような単射拡大変換を行っている。このた
め、衝突回避性の高い、すなわち安全なハッシュ値を生
成することができる。
【0057】ここで、対象データは、単射拡大変換での
パラメータとして用いる初期値と混合させてから、第一
の構成要素に入力するようにしてもよい。このようにす
ることで、異なった初期値に対して同じハッシュ値が導
かれるといったような初期値の衝突が、起こる確率を低
くすることができる。
【0058】また、第一の構成要素に入力した対象デー
タを、再度、第一の構成要素に入力するようにしてもよ
い。このようにすることで、異なったメッセージに対し
て同じハッシュ値が導かれるといったようなメッセージ
の衝突が、起こる確率を低くすることができる。
【0059】また、本発明のデータ暗号化方法および装
置は、一定長のデータを暗号変換して一定長の暗号化デ
ータを出力するものであり、対象データを換字および/
または転置変換を行う第一の構成要素と、前記第一の構
成要素の結果得られたデータに対して、結果が当該デー
タのデータ長よりも長くなるような乗算を行う第二の構
成要素と、前記第二の構成要素の結果得られたデータ
を、少なくとも2つのブロックに分割する第三の構成要
素と、前記第三の構成要素の結果得られた少なくとも2
つのブロック各々に対して、換字および/または転置変
換を行う第四の構成要素と、含む。
【0060】この構成においても、データ暗号化の過程
において、入力値に対して出力値の長さが長くなるよう
な乗算を行っているので、データの攪乱を効率よく行う
ことができる。
【0061】さらに、本発明の他のデータ暗号化方法お
よび装置は、公開鍵を用いて平文を暗号化する公開鍵暗
号を用いたものであり、第一の公開鍵を変換することで
得られたデータをパラメータとして、平文に対して暗号
化変換を行う第一の構成要素と、少なくとも1つの第二
の公開鍵に応じたデータと、前記第一の公開鍵を変換す
ることで得られたデータとの間において、前記第二の公
開鍵に応じたデータが分かれば、前記第一の公開鍵を変
換することで得られたデータを、直接あるいは間接に求
めることができる関係式を満たすデータ値を生成する第
二の構成要素と、を含み送信すべき暗号化データとし
て、前記第一の処理の結果得られたデータに、前記第二
の処理の結果得られたデータ値を付与したことを特徴と
する。
【0062】また、このデータ暗号化方法および装置と
対になるデータ復号化方法および装置は、第二の公開鍵
に応じたデータを、当該第二の公開鍵と対になる秘密鍵
から求める第三の構成要素と、暗号文に付加されたデー
タ値と、前記第三の構成要素で求めたデータとを基に、
第一の公開鍵を変換することで得られたデータを求める
第四の構成要素と、前記第四の構成要素で求めたデータ
をパラメータとして、暗号文を復号する第五の構成要素
と、を含む。
【0063】この構成によれば、第二の公開鍵と対にな
る秘密鍵を有する者は、単独あるいは他の第二の公開鍵
を有する者と協力することで、第二の構成要素で生成さ
れたデータ値から、第一の公開鍵を変換することで得ら
れたデータを得ることができる。
【0064】したがって、第一の公開鍵と対の秘密鍵を
有する者は勿論のこと、第二の公開鍵と対になる秘密鍵
を有する者であっても、データの復号が可能となる。
【0065】このことは、送信側にとっては、同じ電子
メールを複数の宛先に暗号化して送信しようとする場合
に、各宛先毎に、当該宛先各々から予め配布された公開
鍵を用い、電子メールの暗号化処理を一々行なう必要が
なくなることを意味する。
【0066】
【発明の実施の形態】以下に、本発明の第一実施形態に
ついて説明する。
【0067】図1は本発明の第一実施形態であるハッシ
ュ値生成装置の機能構成を示す図である。このハッシュ
値生成装置は、たとえば、パーソナルコンピュータやI
Cカードなどのマイクロプロセッサを備えた情報処理装
置において、マイクロプロセッサに所定のプログラムを
実行させることで実現可能である。また、1つのLSI
で実現させることも可能である。なお、このハッシュ値
生成装置は、電子捺印や電子メールなどのデータ暗号化
に用いることができる。
【0068】図1において、圧縮しようとしているメッ
セージ3001が、ハッシュ値生成装置101に入力さ
れると、まず、データ拡大部102において、以下の処
理が行われる。
【0069】混合処理部103において、入力された
メッセージ3001と初期値との混合処理が行われる。
この混合処理については後述する。
【0070】伸長処理部104において、混合処理部
103で得た混合データのLブロック毎K回繰り返し伸
長処理が行われる。このLブロック毎K回繰り返し伸長
処理については後述する。
【0071】上記、の処理によりメッセージ300
1の拡大データ107を生成する。
【0072】データ拡大部102で生成された拡大デー
タ107は、第1区分E1108、第2区分E2109、
・・・というように、64ビット毎のフレーム(ブロッ
クのかたまり)に分割されて、順次、単射拡大部105
に入力される。
【0073】単射拡大部105は、256ビットの初期
値110をパラメータとして、第1区分E1108に対
して、換字・転置を行いながら単射拡大処理(これにつ
いては後述する)を施す。これにより、256ビットの
第1番目の中間出力を算出する。
【0074】次に、その第1番目の中間出力をパラメー
タ(初期値110の代わり)にして、第2区分E210
9に対して、換字・転置を行いながら単射拡大処理を施
す。これにより、256ビットの第2番目の中間出力を
算出する。
【0075】上記の処理を最後の区分のフレームが入力
されるまで繰り返すことで、最後に算出された256ビ
ットの中間出力を、ハッシュ値Hash111として用い
る。
【0076】次に、図1に示すハッシュ値生成装置10
1の各部での処理について、詳述する。
【0077】まず、データ拡大部102の混合処理部1
03での処理について説明する。
【0078】混合処理部103は、メッセージ3001
および初期値110を各々複数のデータブロックに分割
して、両者を混ぜ合わせるといった処理を行う。
【0079】図2は、混合処理部103での処理の一例
を説明するための図である。
【0080】ここで、初期値110は、4個の64ビッ
トデータブロックI1201、I2202、I3203、
4204がこの順番に連なって構成されたものとす
る。
【0081】まず、パディング処理部220において、
メッセージ3001の長さに初期値110の長さ(25
6ビット)を加えた値が、L×64の整数倍となるよう
に、メッセージ3001を加工する。
【0082】ここで、Lとは、後述する伸長処理部10
4において行われるLブロック毎K回繰り返し伸長処理
によって定義される値である。また、64とは、単射拡
大部105に入力されるフレーム(1つの区分のデー
タ)のビット長である。
【0083】パディング処理部220は、具体的には、
以下のようにして、メッセージ3001を加工する。
【0084】メッセージ3001の長さに初期値11
0の長さ(256ビット)を加えた値が、L×64の整
数倍である場合、メッセージ3001の後部に、ビット
「11」とL×64−2個のビット「0101・・・」
とを、この順番で接続する。
【0085】メッセージ3001の長さに初期値11
0の長さ(256ビット)を加えた値が、L×64ビッ
トの整数倍でない場合、メッセージ3001の後部に、
ビット「11」と、0個〜L×64−1個の間でいくつ
かのビット「0101」とを、この順番に接続する。こ
のようにすることで、メッセージ3001全体の長さ
が、L×64の整数倍となるようにする。
【0086】次に、パディング処理部220にて、全体
の長さがL×64の整数倍となるように加工されたメッ
セージ3001は、N個の64ビットデータブロックM
1205、M2206、M3207、M4208、M520
9、・・・がこの順番に連なったデータ216に変換さ
れる。
【0087】その後、処理部217において、このN個
の64ビットデータブロックと、初期値110を構成す
る4個の64ビットデータブロックとを混ぜ合わせる。
具体的には、図2に示すように、 「M1→D1、I1→D2、M2→D3、I2→D4、M3
5、I3→D6、M4→D7、I4→D8、M5→D9、M6
10、M7→D11、・・・・・」 といったデータの置き換えが行われる。
【0088】この置き換えた結果としてのN+4個の6
4ビットデータブロックD1210、D2311、D3
12、D4213、D5214、・・・がこの順番で連な
ったものが、中間拡大データ215として出力される。
【0089】この中間拡大データ215の長さは、L×
64ビットの整数倍となる。
【0090】次に、データ拡大部102の伸長処理部1
04での処理について説明する。
【0091】伸長処理部104は、中間拡大データ21
5の伸長処理を行う。
【0092】図3は、伸長処理部104での処理の一例
を説明するためのフロー図である。
【0093】ここでは、中間拡大データ215のLブロ
ック分をコピーし、これをコピーしたブロックのうちの
最後のブロックの後に追加するといった動作を、Lブロ
ック毎にK回繰り返して行っている。本実施形態では、
この処理をLブロック毎K回繰り返し伸長処理と称して
いる。
【0094】まず、ステップ302において、混合処理
部103で求めた中間拡大データ215を構成するN+
4個の64ビットデータブロックD1210、D231
1、D3212、D4213、D5214、・・・を入力
する。
【0095】次に、ステップ303において、i=1、
j=0を設定する。
【0096】次に、ステップ304において、次式によ
りmを求める。
【0097】m=(i−(i(mod L・K)))/K+
((i−1)(mod L))+1 ここで、mod Xとは、Xで割った余りをとるという処理
を示す。たとえば、5(mod 2)=1である。
【0098】次に、ステップ305において、中間拡大
データ215を構成するN+4個の64ビットデータブ
ロックのうち、m番目のデータブロックDmを、上述し
た拡大データ107を構成するフレームのうちのi番目
のフレームEiに設定する。
【0099】次に、ステップ306において、ステップ
305で設定したフレームEiを出力する。
【0100】次に、ステップ307において、m番目の
データブロックDmが、中間拡大データ215を構成す
るN+4個の64ビットデータブロックのうちの最後の
ブロックに相当するか否かを判断する。最後のブロック
である場合は、ステップ308へ移行し、そうでない場
合は、ステップ310へ移行する。
【0101】ステップ308では、jの値を1つインク
リメント(j=j+1)し、ステップ309へ移行す
る。
【0102】ステップ309では、jがKより大きいか
否かを判断する(j>K?)。jがKより大きい場合は
このフローを終了し、jがK以下の場合はステップ31
0へ移行する。
【0103】ステップ310では、iの値を1つインク
リメント(i=i+1)し、その後、ステップ304へ
戻る。
【0104】上記のフローを実行することで、中間拡大
データ215に対して、上記説明したLブロック毎K回
繰り返し伸長処理が施され、結果として、図1に示す拡
大データ107を構成するフレームE1108、E210
9、・・・が順次出力される。なお、拡大データ107
は、中間拡大データ215のK倍になる。
【0105】次に、単射拡大部105での処理について
説明する。
【0106】単射拡大部105は、当該単射拡大部10
5に入力される拡大データ107に対して換字・転置処
理を行うという点では、従来の「ブロック暗号を利用し
たハッシュ関数」や「専用ハッシュ関数」と同じであ
る。
【0107】しかしながら、本実施形態の単射拡大部1
05は、当該単射拡大部105に入力された、拡大デー
タ107を構成するフレーム各々について、入力値が異
なれば出力値も必ず異なり(単射)、且つ入力値の長さ
よりも出力値の長さの方が長くなる(拡大)ように、入
力されたフレームを変換する処理を行う点で、従来のハ
ッシュ関数と異なる。なお、本実施形態では、この処理
を単射拡大処理と称している。
【0108】図4は、単射拡大部105での処理の一例
を説明するためのフロー図である。
【0109】まず、ステップ402において、256ビ
ットの初期値110を入力する。そして、これをHに設
定する。
【0110】次に、ステップ403において、q=1に
設定する。
【0111】次に、ステップ404において、図1に示
す拡大データ107のうち、q番目のフレームEqを入
力する。
【0112】次に、ステップ405において、フレーム
qに対し、Hをパラメータとして、その長さを64ビ
ットから96ビットへ拡大するような単射拡大処理を施
す。
【0113】次に、ステップ406において、ステップ
405で得たデータに対し、Hをパラメータとして、そ
の長さを96ビットから128ビットへ拡大するような
単射拡大処理を施す。
【0114】次に、ステップ407において、ステップ
406で得たデータに対し、Hをパラメータとして、そ
の長さを128ビットから256ビットへ拡大するよう
な単射拡大処理を施す。そして、得た256ビットのデ
ータをHに設定する。
【0115】次に、ステップ408では、q番目のフレ
ームEqが、拡大データ107を構成するフレームE1
2・・・のうちの最後のフレームに相当するか否かを
判断する。最後のフレームである場合は、ステップ41
0へ移行し、そうでない場合は、ステップ409へ移行
する。
【0116】ステップ409では、qの値を1つインク
リメント(q=q+1)し、その後、ステップ404へ
戻る。
【0117】ステップ410では、ステップ407で設
定した256ビットのデータHが、拡大データ107を
構成するフレームのうちの最後のフレームに対するもの
であるので、このHをハッシュ値Hash111として出
力する。
【0118】次に、図4に示すステップ405〜407
での単射拡大処理について説明する。
【0119】まず、図4に示すステップ405での単射
拡大処理(64ビット→96ビットの単射拡大)につい
て説明する。
【0120】図5は、図4に示すステップ405におけ
る64ビットデータから96ビットデータへの単射拡大
処理の一例を説明するためのフロー図である。
【0121】まず、ステップ502において、図4に示
すステップ404で入力された64ビットのフレームE
qを、上位32ビットのデータX1と下位32ビットのデ
ータY1とに分割する。
【0122】また、256ビットのデータH(図4にお
いて、ステップ404で入力されたフレームが1番目の
フレームE1である場合は、ステップ402で設定した
値、2番目以降のフレームE2・・・である場合は、直
前に実施されたステップ407で設定した値)を、先頭
から32ビット毎に分割して、8個の32ビットデータ
1、H2、H3、・・・H8を得る。
【0123】次に、ステップ503において、次式で示
される処理を行うことで、X2、Yを生成する。
【0124】X=X1+(Y1+H122=Y1 この結果、X2は64ビット、Y2は32ビットのデータ
となる。なお、図5のステップ503において、太線の
矢印は64ビットデータの流れを、そして、細線の矢印
は、32ビットデータの流れを示している。
【0125】次に、ステップ504において、X2、Y2
を出力し、その後、このフローを終了する。
【0126】上記のフローにより、32ビットのデータ
1および32ビットのデータX1からなるフレームEq
を、64ビットのデータX2および32ビットのデータ
2の合計96ビットのデータに拡大することができ、
且つ、X2、Y2が与えられたとき、X1=X2−(Y2
1)2、および、Y1=Y2から、X1、Y1が一意的に定
まる関係、すなわち単射とすることができる。
【0127】したがって、上記のフローにより、64ビ
ットデータから96ビットデータへの単射拡大を行うこ
とができる。
【0128】ただし、図4に示すステップ405での処
理は、図5に示すものに限定されるものではなく、64
ビットデータから96ビットデータへの単射拡大処理を
行うものであればよい。
【0129】次に、図4に示すステップ406での単射
拡大処理(96ビット→128ビットの単射拡大)につ
いて説明する。
【0130】図6は、図4に示すステップ406におけ
る96ビットデータから128ビットデータへの単射拡
大処理の一例を説明するためのフロー図である。
【0131】まず、ステップ602において、図5に示
すフローで生成した64ビットデータX2および32ビ
ットデータY2を入力する。また、図5に示すステップ
502により256ビットのデータHを分割することで
生成した、8個の32ビットデータH1、H2、H3、・
・・H8のうち、H2、H3、H4、H5、H6、H7、H8
入力する。
【0132】次に、ステップ603において、64ビッ
トデータX2を、上位32ビットのデータXHと下位32
ビットのデータXLとに分割する。
【0133】次に、ステップ604において、次式で示
される処理を順番に行うことでX3、Y3を生成する。
【0134】A=XL eor H2 B=XH+H3+1 C=A・B C´=(C eor Y2)+(H4‖H5)+1 C´H‖C´L=C´ D=rot5(C´L) eor H6 E=rot12(C´H)+H7+1 F=(D‖E) G=X2+F+1 X3=C´+G+(H8‖H1) Y3=G ここで、 eor は、ビット毎の排他的論理和を示す。た
とえば、110010eor 011001=101011
である。また、+は加算を示す。ただし、最上位ビット
の計算において桁上げが生じた場合は、桁上げ部分を無
視する。たとえば、101101+100100=01
0001となる。
【0135】また、‖はデータの結合を示す。たとえ
ば、111111‖000000=111111000
000である。また、rotT(U)は、数値データUを上
位側へTビット巡回シフトすることで得られるデータを
示す。たとえば、rot2(110000)=000011
となる。ここで、数値データの左側が上位側である。
【0136】上記の式で示される処理を順次行うことに
より、X3およびY3は、各々64ビットのデータとな
る。なお、図6のステップ604において、太線の矢印
は64ビットデータの流れを、そして、細線の矢印は、
32ビットデータの流れを示している。
【0137】次に、ステップ605において、X3、Y3
を出力し、その後、このフローを終了する。
【0138】上記のフローにより、64ビットのデータ
2および32ビットのデータY2の合計96ビットのデ
ータを、64ビットのデータX3および64ビットのデ
ータY3の合計128ビットのデータに拡大することが
でき、且つ、X3、Y3が与えられたとき、X2、Y2が一
意的に定まる関係、すなわち単射とすることができる。
【0139】したがって、上記のフローにより、96ビ
ットデータから128ビットデータへの単射拡大を行う
ことができる。
【0140】ただし、図4に示すステップ406での処
理は、図6に示すものに限定されるものではなく、96
ビットデータから128ビットデータへの単射拡大処理
を行うものであればよい。
【0141】次に、図4に示すステップ407での単射
拡大処理(128ビット→256ビットの単射拡大)に
ついて説明する。
【0142】図7は、図4に示すステップ407におけ
る128ビットデータから256ビットデータへの単射
拡大処理の一例を説明するためのフロー図である。
【0143】まず、ステップ702において、図6に示
すフローで生成した64ビットデータX3、Y3を入力す
る。また、図5に示すステップ502により256ビッ
トのデータHを分割することで生成した8個の32ビッ
トデータH1、H2、H3、H4、H5、H6、H7、H8を入
力する。
【0144】次に、ステップ703において、64ビッ
トデータX3を、上位32ビットのデータXHと下位32
ビットのデータXLとに分割する。
【0145】次に、ステップ704において、64ビッ
トデータY3を、上位32ビットのデータYHと下位32
ビットのデータYLとに分割する。
【0146】次に、ステップ705において、次式で示
される処理を順番に行うことで、換字・転置を繰り返し
ながら、K1、K2、・・・K8を生成する。
【0147】K1‖K3=(H8‖H6)+(XH‖XL)+
((XH eor YH)‖(HL eor YL)) K2‖K4=(H7‖H5) eor ((H8‖H6)+(XH
L)) K5‖K7=(H4‖H2)+(YH‖YL)+((XL eor
H)‖(XH eor YL)) K6‖K8=(H3‖H1) eor ((H4‖H2)+(YH
L)) この結果、K1、K2、K3、K4、K5、K6、K7、K
8は、各々32ビットのデータとなる。なお、図7のス
テップ705において、細線の矢印は、32ビットデー
タの流れを示している。
【0148】次に、ステップ706において、K1
2、K3、K4、K5、K6、K7、K8をこの順序で結合
して、Hを生成する(K1‖K2‖K3‖K4‖K5‖K6
7‖K8→H)。これにより、Hは32ビット×8=2
56ビットのデータとなる。
【0149】ステップ708では、ステップ706で生
成したHを出力し、その後、このフローを終了する。
【0150】上記のフローにより、64ビットのデータ
3およびY3の合計128ビットのデータを、256ビ
ットのデータHに拡大することができ、且つ、Hが与え
られたとき、X3、Y3が一意的に定まる関係、すなわち
単射とすることができる。
【0151】したがって、上記のフローにより、128
ビットデータから256ビットデータへの単射拡大を行
うことができる。
【0152】ただし、図4に示すステップ407での処
理は、図7に示すものに限定されるものではなく、12
8ビットデータから256ビットデータへの単射拡大処
理を行うものであればよい。
【0153】上記の第一実施形態では、入力されたフレ
ームEqと、初期値110あるいは単射拡大部105の
出力であるHとを用いて、ハッシュ値を生成する過程に
おいて、換字・転置処理を行う単射拡大部105におい
て、32ビットデータ同士の乗算処理を行っている(図
5に示すステップ503での処理X2=X1+(Y1
12、および図6に示すステップ604での処理C=
A・B)。併せて、32ビットデータに対する巡回シフ
ト計算をも行っている(図6に示すステップ604での
処理D=rot5(C´L) eor H6、E=rot12(C´H
+H7+1)。
【0154】このようにすることで、従来の「ブロック
暗号を利用したハッシュ関数」や「専用ハッシュ関数」
に比べて、データ攪乱度の高いハッシュ値を、迅速に生
成することができる。
【0155】すなわち、32ビットデータ同士の乗算
(32ビット×32ビット→64ビット)は、出力され
る64ビットデータの各ビットが、すべての入力ビット
の影響を受ける。このため、データの撹乱度が高いの
で、効率よく換字処理を行うことができる。
【0156】なお、現在、主にパーソナルコンピュータ
用のマイクロプロセッサとして普及しているインテル社
製の100MHzのペンティアムプロセッサならば、1
秒間に1千万回の積演算(乗算)を行うことができる。
これは、1980年代中期に発表されたモトローラ社製
の20MHzの68020プロセッサでは1秒間に50
万回程度しか積演算を行うことができなかったのに対し
て、およそ20倍の高速化となっている。
【0157】また、32ビットデータの巡回シフト計算
も、効率よく換字処理を行うという点で有効である。
【0158】マイクロプロセッサによる演算処理では、
一回の処理で巡回シフト計算、すなわち32ビットデー
タの転置処理を実現することができるが、最近のマイク
ロプロセッサ、たとえば、インテル社製のペンティアム
プロセッサによれば、1サイクルでこの巡回シフトを完
了する。インテル社製の100MHzのペンティアムプ
ロセッサならば、1秒間に1億回の巡回シフト計算処理
を行うことができる。これは、1980年代中期に発表
されたモトローラ社製の20MHzの68020プロセ
ッサでは1秒間に250万回程度しか巡回シフトを行う
ことができなかったのに対して、およそ40倍の高速化
となっている。
【0159】このように、本発明の第一実施形態は、換
字・転置処理を行うに際して、最近の技術革新により特
に有利になっているマイクロプロセッサの基本演算を使
用することで、データ攪乱度の高いハッシュ値の生成を
迅速に行うようにしている。
【0160】ところで、従来の「ブロック暗号を利用し
たハッシュ関数」や「専用ハッシュ関数」では、通常、
32ビットデータ同士の加算を行うことで、換字処理を
実現している。この32ビットデータ同士の加算処理
は、インテル社製の100MHzのペンティアムプロセ
ッサならば、1秒間に1億回実行することができる。こ
れは、1980年代中期に発表されたモトローラ社製の
20MHzの68020プロセッサでは1秒間に1千万
回程度しか加算を行うことができなかったのに対して、
およそ10倍程度しか高速化されていない。
【0161】乗算処理は、32回分の加算処理と、32
回分の巡回シフト処理とを行ったのと同じデータ撹乱効
果がある。このことを考慮すれば、インテル社製のペン
ティアムプロセッサが主流となっている現在において
は、加算処理よりも乗算処理を用いる有利性が、さらに
増したといえる。
【0162】また、本発明の第一実施形態では、入力さ
れたフレームEqと、初期値110あるいは単射拡大部
105の出力であるHとを用いて、ハッシュ値を生成す
る過程において、換字・転置処理を行う単射拡大部10
5において、当該単射拡大部105に入力された、拡大
データ107を構成するフレーム各々について、入力値
が異なれば出力値も必ず異なり(単射)、且つ入力値の
長さよりも出力値の長さの方が長くなる(拡大)よう
に、入力されたフレームを変換する処理を行っている。
【0163】これにより、衝突回避性の高い、すなわち
安全なハッシュ値を生成することができる。
【0164】すなわち、従来のハッシュ関数では、換字
・転置繰り返し処理へ入力されるメッセージの区分(フ
レーム)の長さと、出力される中間出力の長さとを比べ
た場合、中間出力の長さは、入力されるフレームの長さ
と等しいか(「ブロック暗号を利用したハッシュ関
数」)、あるいは短かった(「専用ハッシュ関数」)。
【0165】これに対し、本発明の第一実施形態では、
上記の単射拡大処理により、中間出力の長さ(256ビ
ット)が、入力されるフレームの長さ(64ビット)よ
り長くなる。したがって、MD5で問題となったよう
な、換字・転置の繰り返し処理におけるメッセージの衝
突回避を比較的容易に実現できる。
【0166】また、本発明の第一実施形態では、図1に
示すように、初期値110を、単射拡大部105へ入力
する最初のパラメータとしてのみならず、メッセージ3
001を単射拡大部105へ入力する前段階の処理とし
て、当該メッセージ3001を拡大して拡大データ10
7を生成するのにも用いている。
【0167】このようにすることで、図27に示すよう
に、初期値3004を換字・転置繰り返し処理3005
へ入力する最初のパラメータとしてのみ用いていた従来
のハッシュ関数に比べ、異なった初期値に対して同じハ
ッシュ値が導かれるといったような、初期値の衝突が起
こる確率を、低減させることができる。
【0168】さらに、本発明の第一実施形態では、図1
に示すように、メッセージ3001を単射拡大部105
へ入力する前段階の処理として、メッセージを分割して
複数のブロックを生成し、この生成した複数のブロック
の一部あるいは全部をコピーして、元の複数のブロック
に混ぜるといった処理(本実施形態では、Lブロック毎
K回繰り返し伸長処理と称している)を行っている。
【0169】このようにすることで、図27に示すよう
に、メッセージ3001を換字・転置繰り返し処理30
05へ入力する前段階の処理として、当該メッセージ3
001を分割して、複数の区分P1、P2・・・を生成す
るのみであった従来のハッシュ関数に比べ、異なったメ
ッセージに対して同じハッシュ値が導かれるといったよ
うな、メッセージの衝突が起こる確率を、低減させるこ
とができる。
【0170】なお、上記の第一実施形態では、換字・転
置を行う単射拡大部256での32ビットデータ乗算処
理として、図5に示すステップ503のX2=X1+(Y
1+H12で示される処理と、図6に示すステップ60
4のC=A・Bで示される処理と、を行うものについて
説明した。しかしながら、本発明でいう乗算処理がこれ
等の式に限定されるものでないことは、当然のことであ
る。
【0171】同様に、本発明でいう巡回シフト計算処理
も、図6に示すステップ604のD=rot5(C´L) eo
r H6、E=rot12(C´H)+H7+1で示される処理に
限定されるものではない。
【0172】また、上記の実施形態では、単射拡大部1
05へ入力される拡大データ107のフレームE1、E
2、・・・を64ビットとし、単射拡大部105から出
力される中間拡大データを256ビット(したがって、
ハッシュ値は256ビット)としたものについて説明し
た。しかしながら、本発明はこれに限定されるものでは
ない。
【0173】以下に、本発明の第一実施形態の変形例と
して、単射拡大部へ入力されるフレームを64ビットと
し、単射拡大部からの中間出力を80ビット(したがっ
て、ハッシュ値は80ビット)としたものについて説明
する。
【0174】図8は本発明の第一実施形態の変形例であ
るハッシュ値生成装置の機能構成を示す図である。ここ
で、図1に示すハッシュ値生成装置101と同じ機能を
有するものには、同じ符号を付している。
【0175】図8に示すハッシュ値生成装置101aが
図1に示すハッシュ値生成装置101と異なる点は、2
56ビットの初期値110に代えて80ビットの初期値
802を用いた点、混合処理部103に代えて混合処理
部801を用いた点、および、単射拡大部105に代え
て単射拡大部803を用いた点である。その他の構成
は、図1に示すものと同様である。
【0176】図8に示すハッシュ値生成装置101aで
は、80ビットのハッシュ値Hash804を生成する。
【0177】混合処理部801は、メッセージ2501
および初期値802各々を複数のデータブロックに分割
して、両者を混ぜ合わせるといった処理を行う点で、図
1に示す混合処理部103と同様である。ただし、80
ビットの初期値802を用いているため、具体的な処理
が異なってくる。
【0178】図9は、混合処理部801での処理の一例
を説明するための図である。
【0179】ここで、初期値802は、64ビットのデ
ータブロックI1901と、16ビットのデータブロッ
クI2902とが、この順番で連なって構成されたもの
とする。
【0180】まず、パディング処理部220において、
メッセージ2501の長さに初期値802の長さ(80
ビット)を加えた値が、L×64の整数倍となるよう
に、メッセージ2501を加工する。この処理は、図2
に示す混合処理部103でのパディング処理220と同
様である。
【0181】次に、パディング処理部220にて、全体
の長さがL×64の整数倍となるように加工されたメッ
セージ2501は、N個の64ビットデータブロックM
1205、M2206、M3207、M4208、M520
9、・・・がこの順番に連なったデータ216に変換さ
れる。
【0182】その後、処理部903において、このN個
の64ビットデータブロックと、初期値802を構成す
る64ビットのデータブロックI1901および16ビ
ットのデータブロックI2902と、を混ぜ合わせる。
具体的には、図9に示すように、 「M1→D1、I1→D2、M2→D3、I2‖I2‖I2‖I2
→D4、M3→D5、M4→D6、M5→D7、M6→D8、M7
→D9、・・・・・」 といったデータの置き換えが行われる。
【0183】この置き換えた結果としてのN+2個の6
4ビットデータブロックD1210、D2311、D3
12、D4213、D5214、・・・がこの順番で連な
ったものが、中間拡大データ215として出力される。
【0184】この中間拡大データ215の長さは、L×
64ビットの整数倍となる。
【0185】単射拡大部803は、当該単射拡大部80
3に入力される拡大データ107に対して、換字・転置
処理を行いながら単射拡大を行うという点で、図1に示
す単射拡大部105と同様である。ただし、単射拡大部
803からの出力(中間出力)を80ビットのデータと
するために、具体的な処理が異なってくる。
【0186】図10は単射拡大部803での処理の一例
を説明するためのフロー図である。
【0187】まず、ステップ1002において、80ビ
ットの初期値802を入力する。そして、これをHに設
定する。
【0188】次に、ステップ1003において、q=1
に設定する。
【0189】次に、ステップ1004において、図8に
示す拡大データ107のうち、q番目のフレームEq
入力する。
【0190】次に、ステップ1005において、フレー
ムEqに対し、Hをパラメータとして単射処理を施す。
【0191】次に、ステップ1006において、ステッ
プ1005で得たデータに対し、Hをパラメータとし
て、その長さを64ビットから80ビットへ拡大するよ
うな単射拡大処理を施す。そして、得た80ビットのデ
ータをHに設定する。
【0192】次に、ステップ1007では、q番目のフ
レームEqが、拡大データ107を構成するフレーム
1、E2・・・のうちの最後のフレームに相当するか否
かを判断する。最後のフレームである場合は、ステップ
1009へ移行し、そうでない場合は、ステップ100
8へ移行する。
【0193】ステップ1008では、qの値を1つイン
クリメント(q=q+1)し、その後、ステップ100
4へ戻る。
【0194】ステップ1009では、ステップ1006
で設定した80ビットのデータHが、拡大データ107
を構成するフレームのうちの最後のフレームに対するも
のであるので、このHをハッシュ値Hash804として
出力する。
【0195】次に、図10に示すステップ1005での
単射処理、およびステップ1006での単射拡大処理に
ついて説明する。
【0196】まず、図10に示すステップ1005での
単射処理(64ビット→64ビットの単射)について説
明する。
【0197】図11は、図10に示すステップ1005
における64ビットデータから64ビットデータへの単
射処理の一例を説明するためのフロー図である。
【0198】まず、ステップ1102において、図10
に示すステップ1004で入力された64ビットのフレ
ームEqを、上位32ビットのデータX1と下位32ビッ
トのデータY1とに分割する。
【0199】また、80ビットのデータH(図10にお
いて、ステップ1004で入力されたフレームが1番目
のフレームE1である場合は、ステップ1002で設定
した値、2番目以降のフレームE2・・・である場合
は、直前に実施されたステップ1006で設定した値)
を、先頭から32ビットデータH1、32ビットデータ
2、および16ビットデータH3に分割する。
【0200】次に、ステップ1103において、次式で
示される処理を行うことで、X2、Y2を生成する。
【0201】X2=X1+(Y1+H12(mod232) Y2=Y1 この結果、X2、Y2は、ともに32ビットのデータとな
る。なお、図11のステップ1103において、細線の
矢印は32ビットデータの流れを示している。
【0202】次に、ステップ1104において、X2
2を出力し、その後、このフローを終了する。
【0203】上記のフローにより、32ビットのデータ
1および32ビットのデータX1からなるフレームEq
を、32ビットのデータX2および32ビットのデータ
2の合計64ビットのデータに変換することができ
る。また、X2、Y2が与えられたとき、X1=X2−(Y
2+H1)2(mod248)、および、Y1=Y2から、X1、Y
1が一意的に定まる関係、すなわち単射とすることがで
きる。
【0204】したがって、上記のフローにより、64ビ
ットデータから64ビットデータへの単射を行うことが
できる。
【0205】ただし、図10に示すステップ1005で
の処理は、図11に示すものに限定されるものではな
く、64ビットデータから64ビットデータへの単射処
理を行うものであればよい。
【0206】次に、図10に示すステップ1006での
単射拡大処理(64ビット→80ビットの単射拡大)に
ついて説明する。
【0207】図12は、図10に示すステップ1006
における64ビットデータから80ビットデータへの単
射拡大処理の一例を説明するためのフロー図である。
【0208】まず、ステップ1202において、図11
に示すフローで生成した32ビットデータX2、Y2を入
力する。また、図11に示すステップ1102により8
0ビットのデータHを分割することで生成した、32ビ
ットデータH1、H2と、16ビットデータH3とを入力
する。
【0209】次に、ステップ1203において、次式で
示される処理を順番に行うことでX3、Y3を生成する。
【0210】A=rot5(X2+H2+1) B=A+X2 eor (H3‖H3)+1 C=rot13(B+H1) D=C+(B or H2)+1 E=D2+Y2(mod248) F=X2+H3+E(mod232) X3=E+F+(H1‖H2)(mod248) Y3=F ここで、 or は、ビット毎の論理和を示す。
【0211】上記の式で示される処理を順次行うことに
より、X3は48ビットのデータ、そして、Y3は32ビ
ットのデータとなる。なお、図12のステップ1203
において、太線の矢印は48ビットデータの流れを、そ
して、細線の矢印は、32ビットデータの流れを示して
いる。
【0212】次に、ステップ1204において、X3
3を出力し、その後、このフローを終了する。
【0213】上記のフローにより、32ビットデータX
2および32ビットデータY2の合計64ビットのデータ
を、48ビットのデータX3および32ビットのデータ
3の合計80ビットのデータに拡大することができ、
且つ、X3、Y3が与えられたとき、X2、Y2が一意的に
定まる関係、すなわち単射とすることができる。
【0214】したがって、上記のフローにより、64ビ
ットデータから80ビットデータへの単射拡大を行うこ
とができる。
【0215】ただし、図10に示すステップ1006で
の処理は、図12に示すものに限定されるものではな
く、64ビットデータから80ビットデータへの単射拡
大処理を行うものであればよい。
【0216】次に、本発明の第二実施形態について説明
する。
【0217】図13は本発明の第二実施形態であるデー
タ暗号化装置の機能構成を示す図である。このデータ暗
号化装置は、第一実施形態のハッシュ値生成装置と同様
に、パーソナルコンピュータやICカードなどのマイク
ロプロセッサを備えた情報処理装置において、マイクロ
プロセッサに所定のプログラムを実行させることで実現
可能である。また、1つのLSIで実現させることも可
能である。
【0218】図13において、任意長のデータ鍵130
2が、データ暗号化装置1311に入力されると、ハッ
シュ値生成装置1301において、256ビットのシス
テム鍵1303が初期値として与えられ、当該データ鍵
1302に対する256ビットのハッシュ値が生成され
る。このハッシュ値がワーク鍵1304となる。
【0219】ワーク鍵1304は、8個の32ビットデ
ータW1、W2、・・・W8に分割される。
【0220】ここで、ハッシュ値生成装置1302は、
本発明の第一実施形態で説明したものでもよいし、従来
の「ブロック暗号を利用したハッシュ関数」や「専用ブ
ロック関数」であってもよい。
【0221】また、暗号化の対象となる128ビットの
平文1305が、データ暗号化装置1311に入力され
ると、当該平文1305は、2個の64ビットデータに
分割されて、π関数処理部1306に入力される。
【0222】そして、8個の32ビットデータW1
2、・・・W8を鍵として、2個の64ビットのデータ
に変換(これについては後述する)された後、π関数処
理部1307に入力され、π関数処理部1306での処
理と同じ要領で、2個の64ビットのデータに変換され
る。
【0223】その後、上記の処理がπ関数処理部130
8〜1313で順次行われ、これにより、π関数処理部
1313から2個の64ビットデータが出力される。こ
の2個の64ビットデータが結合され、128ビットの
暗号文1310が生成される。
【0224】次に、図13に示すπ関数処理部1306
〜1313での処理について説明する。
【0225】π関数処理1306〜1313は、入力さ
れた2つの64ビットデータに対し、ワーク鍵1304
をパラメータとして、換字・転置処理を行う。ただし、
本実施形態のπ関数処理1306〜1313は、従来の
換字・転置処理で用いられているDESなどの暗号化関
数と異なり、32ビット同士の乗算処理、および32ビ
ットの巡回シフト計算を含むようにしている。
【0226】図14は、π関数処理1306〜1313
における処理の一例を説明するためのフロー図である。
【0227】まず、ステップ1402において、2個の
64ビットデータX1、Y1(π関数処理1306では、
平文128ビットを2つに分割することで得られたデー
タ、π関数処理部1307〜1313では、一つ前のπ
関数処理部から出力されたデータ)を入力する。また、
ワーク鍵1304を構成する8個の32ビットデータW
1〜W8を入力する。
【0228】次に、ステップ1403において、ステッ
プ1402で入力した64ビットデータX1を、上位3
2ビットのデータXHと下位32ビットのデータXLとに
分割する。
【0229】次に、ステップ1404において、次式で
示される処理を順番に行うことで、X2、Y2を生成す
る。
【0230】A=XL eor W1 B=XH+W2+1 C=A・B C´=(C eor Y2)+(W3‖W4)+1 C´H‖C´L=C´ D=rot5(C´L) eor W5 E=rot12(C´H)+W6+1 F=D‖E G=X1+F+1 X2=C´+G+(W7‖W8) Y2=G 上記の式で示される処理を順次行うことにより、X2
よびY2は、ともに64ビットのデータとなる。なお、
図14のステップ1404において、太線の矢印は64
ビットデータの流れを、そして、細線の矢印は、32ビ
ットデータの流れを示している。
【0231】次に、ステップ1405において、X2
2を出力し、その後、このフローを終了する。
【0232】上記のフローにより、64ビットのデータ
1、Y1の合計128ビットのデータを、換字・転置を
行って、64ビットのデータX2、Y2の合計128ビッ
トのデータに変換することができる。
【0233】また、X1‖Y1→X2‖Y2への変換処理を
全単射とすることができる。すなわち、出力X2‖Y2
ら入力X1‖Y1へ逆変換することが可能な関数であるπ
-1関数が存在する。
【0234】具体的には、次式で示される処理を順次行
うことで、X2、Y2からX1、Y1を求めることができ
る。
【0235】G=Y2 C´=X2−G−(W7‖W8) C´H‖C´L=C´ D=rot5(C´L) eor W5 E=rot12(C´H)+W6+1 F=D‖E X1=G−F−1 XH‖XL=X2 A=XL eor W1 B=XH+W2+1 C=A・B Y1=(C´−(W3‖W4)−1) eor C 上記の式で示される処理を順次行うことにより、X1
よびY1を求めることができるので、このデータ暗号化
装置1311が生成した暗号文1310は、π-1関数を
用いた逆変換により、元の平文1305に復号化するこ
とができる。
【0236】なお、図13に示すπ関数処理部1306
〜1313での処理は、図14に示すものに限定される
ものではなく、全単射の換字・転置を行うに際して、3
2ビット同士の乗算処理、および32ビットの巡回シフ
ト計算を含むようにしたものであればよい。
【0237】本実施形態の第二実施形態によれば、ワー
ク鍵1304を用いて平文1305を暗号化する過程に
おいて、換字・転置処理を行うπ関数処理部1306〜
1313において、32ビットデータ同士の乗算処理を
行っている(図14に示すステップ1404での処理C
=A・B)。併せて、32ビットデータに対する巡回シ
フト計算をも行っている(図14に示すステップ140
4での処理D=rot5(C´L) eor W5、E=rot12(C
´H)+W6+1)。
【0238】このようにすることで、上述したように、
換字・転置処理にDESなどの暗号化関数を用いた場合
にくらべて、データ攪乱度の高い暗号文を、迅速に生成
することができる。
【0239】なお、上記の第二実施形態では、図13に
示すように、π関数処理部での処理を8回行うもの(n
=8)について説明したが、本発明はこれに限定される
ものではない。nの値を外部から与えるようにして、n
を任意の正の整数に変更できるようにしてもよい。
【0240】次に、本発明の第三実施形態について説明
する。
【0241】図15は本発明の第三実施形態であるマス
キング装置の機能構成を示した図である。ここで、マス
キング装置とは、データをマスクする(覆い隠す)ため
のデータを生成する装置のことである。マスキング装置
で生成されたデータは、たとえばデータを暗号化するた
めの鍵として用いることも可能である。
【0242】本実施形態のデータ暗号化装置は、第一実
施形態のハッシュ値生成装置と同様に、パーソナルコン
ピュータやICカードなどのマイクロプロセッサを備え
た情報処理装置において、マイクロプロセッサに所定の
プログラムを実行させることで実現可能である。また、
1つのLSIで実現させることも可能である。
【0243】図15において、128ビットの共通鍵1
502と、この共通鍵1502をN個繋げて構成された
伸長データ1503とが入力されると、ハッシュ値生成
装置1509において、乱数生成装置1508で生成さ
れた乱数1521と、入力された共通鍵1502とを繋
ぎ合わせたデータに対する128ビットのハッシュ値が
生成される。このハッシュ値が、伸長データ1503の
最初の128ビットデータである第一区分1504を暗
号化するためのワーク鍵1524となる。また、乱数生
成装置1503で生成された乱数1521が、マスキン
グデータ1520の最初のデータとなる。
【0244】ここで、ハッシュ値生成装置1302は、
本発明の第一実施形態で説明したものでもよいし、従来
の「ブロック暗号を利用したハッシュ関数」や「専用ブ
ロック関数」であってもよい。
【0245】一方、π関数処理部1513において、ワ
ーク鍵1524の一部をパラメータとして、伸長データ
1503の第一区分1504が換字・転置されて、12
8ビットのデータに変換される。その後、π関数処理部
1514において、ワーク鍵1524の一部をパラメー
タとして、π関数処理部1513で生成された128ビ
ットのデータが換字・転置されて、128ビットのデー
タに変換される。このデータが、マスキングデータ15
20の2番目のデータg11522となる。また、π関
数処理部1513で生成された128ビットのデータ
が、伸長データ1503の2番目の128ビットデータ
である第二区分1505を暗号化するためのワーク鍵1
525となる。
【0246】また、π関数処理部1518において、ワ
ーク鍵1525の一部をパラメータとして、伸長データ
1503の第二区分1505が換字・転置されて、12
8ビットのデータに変換される。その後、π関数処理部
1519において、ワーク鍵1525の一部をパラメー
タとして、π関数処理部1518で生成された128ビ
ットのデータが換字・転置されて、128ビットのデー
タに変換される。このデータが、マスキングデータ15
20の3番目のデータg21523となる。また、π関
数処理部1518で生成された128ビットのデータ
が、伸長データの3番目の128ビットデータである第
三区分(図示せず)を暗号化するためのワーク鍵152
6となる。
【0247】上記の処理を伸長データを構成する全ての
区分(128ビットデータ)に対して行うことで、マス
キングデータ1520を生成する。
【0248】ここで、図15に示すマスキング装置15
01において、π関数処理部1513、1514、15
18、1519、・・・は、図13に示す第二実施形態
で用いたπ関数処理部1306〜1313と同じもので
ある。
【0249】したがって、本発明の第三実施形態によれ
ば、換字・転置処理にDESなどの暗号化関数を用いた
場合にくらべて、データ攪乱度の高いマスクデータを、
迅速に生成することができる。
【0250】また、本発明の第三実施形態において、マ
スキングデータ1520は、共通鍵1502を伸長させ
たデータと見ることができる。また、マスキングデータ
1520は、共通鍵1502によって伸長データ150
3を暗号化したデータと見ることができる。すなわち、
図15に示す処理と逆の処理を行うことで、共通鍵15
02およびマスキングデータ1520から、伸長データ
1503を復号することができる。
【0251】なお、本発明の第三実施形態では、共通鍵
1502の長さを128ビットとしたが、本発明はこれ
に限定されない。また、伸長データ1503の各区分1
504、1505、・・・の各々に対して、π関数処理
部での処理を2回行うようにしたが、本発明はこれに限
定されるものではない。
【0252】次に、本発明の第四実施形態について説明
する。
【0253】本実施形態は、電子メールなどのデータ暗
号化システムに関するものであり、データ暗号化装置
と、データ復号化装置とを含む。なお、以下に説明する
データ暗号化装置およびデータ復号化装置は、第一実施
形態のハッシュ値生成装置と同様に、パーソナルコンピ
ュータやICカードなどのマイクロプロセッサを備えた
情報処理装置において、マイクロプロセッサに所定のプ
ログラムを実行させることで実現可能である。また、1
つのLSIで実現させることも可能である。
【0254】まず、データ暗号化装置について説明す
る。
【0255】図16は、本発明の第四実施形態であるデ
ータ暗号化システムを構成するデータ暗号化装置の機能
構成を示す図である。
【0256】図16に示すデータ暗号化装置1601に
は、楕円曲線暗号におけるパラメータであるベースポイ
ントP1602、公開鍵Q1603、および、平文16
04が入力される。
【0257】ここで、楕円曲線暗号とは、次式、 y2=x3+ax+b で表される楕円曲線上の2点(x1,y1)、(x2
2)の加算(x1,y1)+(x2,y2)や、整数倍倍
演算k(x1,y1)などを定義することにより生成され
る公開鍵暗号のことである。
【0258】ベースポイントP1602や公開鍵Q16
03も、上記の楕円曲線上の点であり、後で述べる秘密
鍵d1802との間で次の関係を満たす。
【0259】Q=dP データ暗号化装置1601に入力されたベースポイント
Pは1602は、乱数生成装置1607で生成された乱
数kとともに、整数倍演算部1608へ入力される。こ
れを受けて、整数倍演算部1608は、次式で示される
処理を実行することで、データR1617を生成する。
【0260】R=kP このデータR1617は、暗号文1616の最初のデー
タとなる。
【0261】また、データ暗号化装置1601に入力さ
れた公開鍵Q1603は、乱数生成装置1607で生成
された乱数kとともに、整数倍演算部1609へ入力さ
れる。これを受けて、整数倍演算部1609は、次式で
示される処理を実行することで、上記の楕円曲線上の点
(x,y)を生成する。
【0262】(x,y)=kQ また、データ暗号化装置1601に入力された平文16
04のうち、最初のNビットデータ1605は、圧縮・
暗号化部1612に入力される。これを受けて、圧縮・
暗号化部1612は、ハッシュ値生成装置1611で生
成されたハッシュ値を鍵として、最初のNビットデータ
1605の圧縮・暗号化処理を行う。これによりデータ
11618を生成する。このデータC11618は、暗
号文1616の2番目のデータとなる。
【0263】なお、ハッシュ値生成装置1611は、番
号生成部1610で生成されたシーケンス番号「1」
と、整数倍演算部1609で生成した(x,y)のうち
の数値xとを接続することで得られるデータに対するハ
ッシュ値を生成する。
【0264】また、データ暗号化装置1601に入力さ
れた平文1604のうち、2番目のNビットデータ16
06は、圧縮・暗号化部1615に入力される。これを
受けて、圧縮・暗号化部1615は、ハッシュ値生成装
置1614で生成されたハッシュ値を鍵として、2番目
のNビットデータ1606の圧縮・暗号化処理を行う。
これによりデータC21619を生成する。このデータ
21619は、暗号文1616の3番目のデータとな
る。
【0265】なお、ハッシュ値生成装置1614は、番
号生成部1613で生成されたシーケンス番号「2」
と、整数倍演算部1609で生成した(x,y)のうち
の数値xとを接続することで得られるデータに対するハ
ッシュ値を生成する。
【0266】上記の処理を平文1604を構成する全て
のNビットデータに対して行うことで、暗号文1616
を生成する。
【0267】なお、図16に示すデータ暗号化装置16
01において、ハッシュ値生成装置1611、161
4、・・・は、本発明の第一実施形態で説明したもので
もよいし、従来の「ブロック暗号を利用したハッシュ関
数」や「専用ブロック関数」であってもよい。
【0268】次に、図16に示す圧縮・暗号化部161
2、1615、・・・での処理について説明する。
【0269】図17は、図16に示す圧縮・暗号化部1
612、1615、・・・の機能構成を示す図である。
【0270】ここで、Nビットデータとは、図16にお
いて、平文1604を構成するNビットデータ160
5、1606、・・・に相当する。また、データCは、
図16において、圧縮・暗号化部1612、1615、
・・・が生成するデータC11618、C21619、・
・・を示す。さらに、鍵1705とは、図16におい
て、対応するハッシュ値生成装置1611、1614、
・・・が生成したハッシュ値に相当する。
【0271】図17において、鍵1705が入力される
と、拡張部1706はこの鍵1705を受け取ってコピ
ーを複数個生成し、これ等を繋ぎ合わせてワーク鍵17
23を生成する。
【0272】また、Nビットデータの最初のデータ区分
である第1区分1703は、圧縮処理部1707におい
て、ワーク鍵1723の一部をパラメータとして、ハフ
マン圧縮などにより圧縮(換字)処理が施される。そし
て、その結果が、128ビットの圧縮データ1708お
よび端数データ1706として出力される。
【0273】128ビットの圧縮データ1708は、π
関数処理部1710において、ワーク鍵1723の一部
をパラメータとして、換字・転置処理が施され、128
ビットのデータに変換される。その後、π関数処理部1
711において、ワーク鍵1723の一部をパラメータ
として、さらに換字・転置処理が施されて、128ビッ
トのデータに変換される。このデータが、生成すべきデ
ータCの最初のデータb11720となる。また、π関
数処理部1710で生成された128ビットのデータ
は、拡張部1712に入力され、複数コピーされる。そ
して、これ等が繋ぎ合わされて、Nビットデータの2番
目のデータ区分である第2区分1704を暗号化するた
めのワーク鍵1722となる。
【0274】また、Nビットデータの2番目のデータ区
分である第2区分1704は、圧縮処理部1713にお
いて、ワーク鍵1722の一部をパラメータとして、ハ
フマン圧縮などにより圧縮(換字)処理が施される。そ
して、その結果が、圧縮データ1714および端数デー
タ1715として出力される。ここで、圧縮データ17
14は、第1区分1703を圧縮(換字)処理した際に
生成された端数データ1709との合計ビット長が、1
28ビットとなるように生成される。
【0275】圧縮データ1715は、第1区分1703
を圧縮(換字)処理した際に生成された端数データ17
09とを繋ぎ合わされて、128ビットのデータにな
る。その後、π関数処理部1716において、ワーク鍵
1722の一部をパラメータとして、換字・転置処理が
施され、128ビットのデータに変換される。さらにそ
の後、π関数処理部1718において、ワーク鍵172
2の一部をパラメータとして、さらに換字・転置処理が
施されて、128ビットのデータに変換される。このデ
ータが、生成すべきデータCの2番目のデータb217
21となる。また、π関数処理部1716で生成された
128ビットのデータは、拡張部1717に入力され、
複数コピーされる。そして、これ等が繋ぎ合わされて、
Nビットデータの3番目のデータ区分を暗号化するため
のワーク鍵となる。
【0276】上記の処理をNビットデータを構成する全
ての区分に対して行うことで、対応するデータCを生成
する。
【0277】ここで、図17に示すπ関数処理部171
0、1711、11716、1718、・・・は、図1
3に示す第二実施形態で用いたπ関数処理部1306、
1307、1308、・・・1313と同じものであ
る。
【0278】本発明の第四実施形態を構成するデータ暗
号化装置では、楕円暗号とハッシュ値生成装置とを組み
合わせることで、データの暗号化を行っている。くわえ
て、圧縮・暗号化部として、第二実施形態で用いたπ関
数処理部を利用している。
【0279】したがって、本発明の第四実施形態を構成
するデータ暗号化装置によれば、従来のRSA(Rives
t,Shamir,Adleman)のような公開鍵暗号方式のデータ暗
号化装置に比べて、長いデータに対し、データ攪乱度の
高い暗号文を、迅速に生成することができる。
【0280】なお、このデータ暗号化装置は、公開鍵Q
1603を用いて、平文1604を暗号文1616に変
換するという点において、従来のRSAの公開鍵暗号方
式を用いたデータ暗号化装置と共通する。しかしなが
ら、本発明の第四実施形態を構成するデータ暗号化装置
では、上述したように、π関数処理部を用いて換字・転
置処理を行っている点で従来のものと異なる。
【0281】また、圧縮処理部1707、1713、・
・・において、ハフマン圧縮などにより圧縮(換字)処
理を行っているので、このハフマン圧縮などにより圧縮
することができる通常の平文に対しては、暗号文161
6の長さが平文1604の長さよりも短くなる。この点
でも、従来のものと異なる。
【0282】ところで、図17に示す圧縮・暗号化部1
612、1615、・・・では、Nビットデータを構成
する各区分(第1区分1703、第2区分1704、・
・・)に対して、π関数処理部での変換処理を2回行う
ようにしている。しかしながら、本発明はこれに限定さ
れるものではない。
【0283】次に、データ復号化装置について説明す
る。
【0284】図18は、本発明の第四実施形態であるデ
ータ暗号化システムを構成するデータ復号化装置の機能
構成を示す図である。
【0285】図18に示すデータ復号化装置1801に
は、楕円曲線暗号におけるパラメータである秘密鍵d1
802、および、暗号文1803が入力される。
【0286】データ復号化装置1801に入力された秘
密鍵d1802は、同じくデータ復号化装置1801に
入力された暗号文1803のうちの最初のデータR18
04(これは、図16におけるデータR1617に相
当)とともに、整数倍演算部1807へ入力される。こ
れを受けて、整数倍演算部1807は、次式で示される
処理を実行することで、楕円曲線上の点(x、y)を生
成する。
【0287】(x,y)=kR また、データ復号化装置1801に入力された暗号文1
803のうち、2番目のデータC11805は、復号・
伸長化部1810に入力される。これを受けて、復号・
伸長化部1810は、ハッシュ値生成装置1809で生
成されたハッシュ値を鍵として、2番目のデータC1
805の復号・伸長化処理を行う。これにより、Nビッ
トのデータを生成する。このデータは、平文1814の
最初のNビットデータ1815となる。
【0288】なお、ハッシュ値生成装置1809は、番
号生成部1808で生成されたシーケンス番号「1」
と、整数倍演算部1807で生成した(x,y)のうち
の数値xとを接続することで得られるデータに対するハ
ッシュ値を生成する。
【0289】また、データ復号化装置1801に入力さ
れた暗号文1803のうち、3番目のデータC2180
6は、復号・伸長化部1813に入力される。これを受
けて、復号・伸長化部1813は、ハッシュ値生成装置
1812で生成されたハッシュ値を鍵として、3番目の
データC21806の復号・伸長化処理を行う。これに
より、Nビットのデータを生成する。このデータは、平
文1814の2番目のNビットデータ1816となる。
【0290】なお、ハッシュ値生成装置1812は、番
号生成部1811で生成されたシーケンス番号「2」
と、整数倍演算部1807で生成した(x,y)のうち
の数値xとを接続することで得られるデータに対するハ
ッシュ値を生成する。
【0291】上記の処理を暗号文1803を構成する2
番目のデータC11805から最後のデータまでに対し
て行うことで、平文1814を生成する。
【0292】なお、図18に示すデータ復号化装置18
01において、ハッシュ値生成装置1809、181
2、・・・は、図16に示すものと同じである。
【0293】次に、図18に示す復号・伸長化部181
0、1813、・・・での処理について説明する。
【0294】図19は、図18に示す復号・伸長化部1
810、1813、・・・の機能構成を示す図である。
【0295】ここで、データCは、図18において、暗
号文1803の2番目以降のデータC11805、C2
806、・・・を示す。また、Nビットデータとは、図
18において、復号・伸長化部1810、1813、・
・・が生成したNビットデータ1815、1816、・
・・に相当する。さらに、鍵1905とは、図18にお
いて、対応するハッシュ値生成装置1809、181
2、・・・が生成したハッシュ値に相当する。
【0296】また、π-1関数処理部1907、191
0、1914、1916、・・・は、図17に示すπ関
数処理部1710、1711、1716、1718、・
・・での処理と逆関数の関係にある処理を行う。すなわ
ち、π-1関数は、π関数の逆関数である。
【0297】同じパラメータをπ関数とπ-1関数に設定
した場合、データmをπ関数によって変換して得られる
データπ(m)を、さらに、π-1関数によって変換する
と、元のデータmに戻る。すなわち、π-1関数はπ関数
と次式のような関係にある。
【0298】m=π−1(π(m)) また、伸長処理部1911、1917、・・・は、図1
7に示す圧縮処理部1707、1713、・・・での処
理と逆変換の関係にある処理を行う。
【0299】同じパラメータを圧縮処理部と伸長処理部
に設定した場合、データmを圧縮(換字)処理によって
変換して得られるデータを、さらに、伸長(換字)処理
によって変換すると、元のデータmに戻る。
【0300】図19において、鍵1905が入力される
と、拡張部1906はこの鍵1905を受け取ってコピ
ーを複数個生成し、これ等を繋ぎ合わせてワーク鍵19
23を生成する。
【0301】また、データCの最初の128ビットデー
タb11903は、π-1関数処理部1907において、
ワーク鍵1923の一部をパラメータとして、換字・転
置処理が施されて128ビットデータ変換された後、π
-1関数処理部1910において、ワーク鍵1923の一
部をパラメータとして、さらに換字・転置処理が施され
て、128ビットデータに変換される。
【0302】π-1関数処理部1910の出力結果は、伸
長処理部1911において、ワーク鍵1923の一部を
パラメータとして、伸長(換字)処理が施される。そし
て、その結果が、128ビットの伸長データ1912お
よびその端数データ1913として出力される。この1
28ビットの伸長データが、生成すべきNビットデータ
のうちの第1区分のデータ1921となる。また、π-1
関数処理部1907で生成された128ビットのデータ
は、拡張部1909に入力され、複数コピーされる。そ
して、これ等が繋ぎ合わされて、データCの2番目の1
28ビットデータb21904を復号化するためのワー
ク鍵1924となる。
【0303】また、データCの2番目の128ビットデ
ータb21904は、π-1関数処理部1914におい
て、ワーク鍵1924の一部をパラメータとして、換字
・転置処理が施されて128ビットデータに変換された
後、π-1関数処理部1916において、ワーク鍵192
4の一部をパラメータとして、さらに換字・転置処理が
施されて、128ビットデータに変換される。
【0304】π-1関数処理部1916の出力結果は、伸
長処理部1917において、ワーク鍵1924の一部を
パラメータとして、伸長(換字)処理が施される。そし
て、その結果が、伸長データ1918およびその端数デ
ータ1919として出力される。
【0305】ここで、伸長データ1918は、データb
11903を伸長(換字)処理した際に生成された端数
データ1913との合計ビット長が、128ビットとな
るように生成される。この伸長データ1918と端数デ
ータ1913とを繋いだ合計128ビットのデータが、
生成すべきNビットデータのうちの第2区分のデータ1
922となる。また、π-1関数処理部1914で生成さ
れた128ビットのデータは、拡張部1915に入力さ
れ、複数コピーされる。そして、これ等が繋ぎ合わされ
て、データCの3番目の128ビットデータを復号化す
るためのワーク鍵となる。
【0306】上記の処理をデータCを構成する全ての1
28ビットデータb1、b2、・・・に対して行うことで
Nビットデータを生成する。
【0307】本発明の第四実施形態を構成するデータ復
号化装置は、秘密鍵d1802を用いて、暗号文180
3を平文1814に復号変換するという点において、従
来のRSAの公開鍵暗号方式を用いたデータ復号化装置
と共通する。しかしながら、本発明の第四実施形態を構
成するデータ暗号化装置では、上述したように、π-1
数処理部を用いて換字・転置処理を行っている点で従来
のものと異なる。
【0308】また、伸長処理部1911、1917、・
・・において、伸長(換字)処理を行っているので、こ
のハフマン圧縮などで圧縮された暗号文に対して、復号
化された平文1814は、そのデータ長が長くなる。こ
の点でも、従来のものと異なる。
【0309】次に、上記の第四実施形態におけるデータ
暗号化装置の変形例について説明する。
【0310】図20は、図16に示す本発明の第四実施
形態におけるデータ暗号化装置の変形例の機能構成を示
す図である。
【0311】図20に示すデータ暗号化装置2001に
は、楕円曲線暗号におけるパラメータであるベースポイ
ントP2002、公開鍵Q2003、および、平文20
04が入力される。
【0312】データ暗号化装置2001に入力されたベ
ースポイントP2002は、乱数生成装置2007で生
成された乱数kとともに、整数倍演算部2008へ入力
される。これを受けて、整数倍演算部2008は、次式
で示される処理を実行することで、データR2017を
生成する。
【0313】R=kP このデータR2017は、暗号文2016の最初のデー
タとなる。
【0314】また、データ暗号化装置2001に入力さ
れた公開鍵Q2003は、乱数生成装置2007で生成
された乱数kとともに、整数倍演算部2009へ入力さ
れる。これを受けて、整数倍演算部2009は、次式で
示される処理を実行することで、楕円曲線上の点(x,
y)を生成する。
【0315】(x,y)=kQ また、データ暗号化装置2001に入力された平文20
04のうち、最初のNビットデータ2005は、圧縮・
暗号化部2012に入力される。これを受けて、圧縮・
暗号化部2012は、ハッシュ値生成装置2011で生
成されたハッシュ値を鍵2020として、最初のNビッ
トデータ2005の圧縮・暗号化処理を行う。これによ
りデータC12018を生成する。このデータC1201
8は、暗号文2016の2番目のデータとなる。
【0316】なお、ハッシュ値生成装置2011は、整
数倍演算部2009で生成した(x,y)のうちの数値
xに対するハッシュ値を生成する。このハッシュ値が上
記の鍵2020となる。
【0317】また、データ暗号化装置2001に入力さ
れた平文2004のうち、2番目のNビットデータ20
06は、圧縮・暗号化部2015に入力される。これを
受けて、圧縮・暗号化部2015は、ハッシュ値生成装
置2014で生成されたハッシュ値を鍵2021とし
て、2番目のNビットデータ2006の圧縮・暗号化処
理を行う。これによりデータC22019を生成する。
このデータC22019は、暗号文2016の3番目の
データとなる。
【0318】なお、ハッシュ値生成装置2014は、鍵
2020に対するハッシュ値を生成する。このハッシュ
値が上記の鍵2021となる。
【0319】上記の処理を平文2004を構成する全て
のNビットデータに対して行うことで、暗号文2016
を生成する。
【0320】なお、図16に示すデータ暗号化装置16
01において、圧縮・暗号化部2012、2015、・
・・には、図16に示す圧縮・暗号化部1612、16
15、...と同じものが用いられる。
【0321】次に、本発明の第五実施形態について説明
する。
【0322】本実施形態は、本発明の第四実施形態と同
様、電子メールなどのデータ暗号化システムに関するも
のであり、データ暗号化装置と、データ復号化装置とを
含む。なお、以下に説明するデータ暗号化装置およびデ
ータ復号化装置は、第一実施形態のハッシュ値生成装置
と同様に、パーソナルコンピュータやICカードなどの
マイクロプロセッサを備えた情報処理装置において、マ
イクロプロセッサに所定のプログラムを実行させること
で実現可能である。また、1つのLSIで実現させるこ
とも可能である。
【0323】まず、データ暗号化装置について説明す
る。
【0324】図21は、本発明の第五実施形態であるデ
ータ暗号化システムを構成するデータ暗号化装置の機能
構成を示す図である。
【0325】図21に示すデータ暗号化装置2101に
は、楕円曲線暗号におけるパラメータであるベースポイ
ントP2102、公開鍵Q12103、公開鍵Q2210
4、公開鍵Q32105、公開鍵Q42123、および、
平文2106が入力される。
【0326】データ暗号化装置2101に入力されたベ
ースポイントP2102は、乱数生成装置2113で生
成された乱数kとともに、整数倍演算部2123へ入力
される。これを受けて、整数倍演算部2123は、次式
で示される処理を実行することで、データR2109を
生成する。
【0327】R=kPこのデータR2109は、暗号文
2108の最初のデータとなる。
【0328】また、データ暗号化装置2101に入力さ
れた公開鍵Q12103は、乱数生成装置2113で生
成された乱数kとともに、整数倍演算部2114へ入力
される。これを受けて、整数倍演算部2114は、次式
で示される処理を実行することで、上記の楕円曲線上の
点(x1,y1)を生成する。
【0329】(x1,y1)=kQ1 この(x1,y1)のうち、数値x1は、その後、ハッシ
ュ値生成装置2119に入力されて、ハッシュ値h(x
1)に変換される。
【0330】同様に、データ暗号化装置2101に入力
された公開鍵Q22104は、乱数生成装置2113で
生成された乱数kとともに、整数倍演算部2115へ入
力される。これを受けて、整数倍演算部2115は、次
式で示される処理を実行することで、上記の楕円曲線上
の点(x2,y2)を生成する。
【0331】(x2,y2)=kQ2 この(x2,y2)のうち、数値x2は、その後、ハッシ
ュ値生成装置2126に入力されて、ハッシュ値h(x
2)に変換される。
【0332】また、同様に、データ暗号化装置2101
に入力された公開鍵Q32105は、乱数生成装置21
13で生成された乱数kとともに、整数倍演算部211
6へ入力される。これを受けて、整数倍演算部2116
は、次式で示される処理を実行することで、上記の楕円
曲線上の点(x3,y3)を生成する。
【0333】(x3,y3)=kQ3 この(x3,y3)のうち、数値x3は、その後、ハッシ
ュ値生成装置2127に入力されて、ハッシュ値h(x
3)に変換される。
【0334】さらに、同様に、データ暗号化装置210
1に入力された公開鍵Q42123は、乱数生成装置2
113で生成された乱数kとともに、整数倍演算部21
24へ入力される。これを受けて、整数倍演算部212
4は、次式で示される処理を実行することで、上記の楕
円曲線上の点(x4,y4)を生成する。
【0335】(x4,y4)=kQ4 この(x4,y4)のうち、数値x4は、その後、ハッシ
ュ値生成装置2128に入力されて、ハッシュ値h(x
4)に変換される。
【0336】しきい値ロジック部2125は、ハッシュ
値生成装置2126、2127、2128で生成したハ
ッシュ値h(x2)、h(x3)、h(x4)のうち、い
ずれか2つのハッシュ値が分かれば、ハッシュ値生成装
置2119で生成したハッシュ値h(x1)を求めるこ
とができる条件式を満たす値f12110、f22111
を生成する。この値f12110、f22111は、それ
ぞれ、暗号文2108の2番目、3番目のデータとな
る。
【0337】なお、このしきい値ロジック部2125の
詳細については後述する。
【0338】データ暗号化装置2101に入力された平
文2106のうち、最初のNビットデータ2107は、
圧縮・暗号化部2120に入力される。これを受けて、
圧縮・暗号化部2120は、ハッシュ値生成装置211
9で生成されたハッシュ値h(x1)を鍵2120とし
て、最初のNビットデータ2107の圧縮・暗号化処理
(これについては後述する)を行う。これによりデータ
12112を生成する。このデータC12112は、暗
号文2108の4番目のデータとなる。また、鍵212
0は、ハッシュ値生成装置2121に入力されて、平文
2106の2番目のNビットデータを暗号化するための
鍵2122に変換される。
【0339】上記の処理を平文2106を構成する全て
のNビットデータに対して行うことで、暗号文2108
12を生成する。
【0340】なお、図21に示すデータ暗号化装置21
01において、ハッシュ値生成装置は、本発明の第一実
施形態で説明したものでもよいし、従来の「ブロック暗
号を利用したハッシュ関数」や「専用ブロック関数」で
あってもよい。
【0341】次に、図21に示すしきい値ロジック部2
125での処理について説明する。
【0342】上述したように、しきい値ロジック部21
25は、ハッシュ値h(x2)、h(x3)、h(x4
のうちのいずれか2つのハッシュ値が分かれば、ハッシ
ュ値h(x1)を求めることができる条件式を満たす値
1、f2を生成する。
【0343】図22は、図21に示すしきい値ロジック
部2125の機能構成を示す図である。
【0344】図22に示すように、しきい値ロジック部
2125には、5つのデータq1X2202、h(x1
2203、h(x2)2204、h(x3)2205、h
(x4)2206が入力される。
【0345】ここで、q1X2202は、図21におい
て、公開鍵Q12103のx座標値である。また、h
(x1)2203、h(x2)2204、h(x3)22
05、h(x4)2206は、それぞれ、ハッシュ値生
成装置2119、2126、2127、2128で生成
されたハッシュ値である。
【0346】演算部2208は、次式で示される処理を
実行することで、データf12110を生成する。
【0347】f1=g(q1X,h(x1),h(x2),
h(x3),h(x4)) また、演算部2210は、次式で示される処理を実行す
ることで、データf22111を生成する。
【0348】f2=g(h(q1x),h(x1),h(x
2),h(x3),h(x4)) なお、上記の式f1、f2において、関数gは、g(x,
1,a2,a3,a4)=a1+a2・x+a3・x2+a4
・x3(mod n)で定義されものである。
【0349】したがって、演算部2208、2210で
生成されたデータf1、f2は、q1x、および、h
(x1),h(x2),h(x3),h(x4)との間におい
て、以下に示す四元連立方程式が成立する。
【0350】f1=h(x1)+h(x2)・q1x+h
(x3)・q1x 2+h(x4)・q1x 3(mod n) f2=h(x1)+h(x2)・h(q1x)+h(x3)・
h(q1x2+h(x4)・h(q1x3(mod n) よって、f1、f2、q1xの値が既知である場合、h(x
1),h(x2),h(x3),h(x4) のうちのいずれか二つの値が分かれば、他の二つの値も
分かることになる(未知数2、方程式数2の連立方程式
となるため)。
【0351】次に、図21に示す圧縮・暗号化部212
0、・・・での処理について説明する。
【0352】図23は、図21に示す圧縮・暗号化部2
120、・・・の機能構成を示す図である。
【0353】ここで、Nビットデータとは、図21にお
いて、平文2106を構成するNビットデータ210
7、・・・に相当する。また、データCは、図21にお
いて、圧縮・暗号化部2120、・・・が生成するデー
タC12112、・・・を示す。さらに、鍵2309と
は、図21において、鍵2120、2122、・・・に
相当する。
【0354】図23において、鍵2309が入力される
と、拡張部2310はこの鍵2309を受け取ってコピ
ーを複数個生成し、これ等を繋ぎ合わせてワーク鍵23
11を生成する。
【0355】また、Nビットデータの最初のデータ区分
である第1区分2303は、圧縮処理部2312におい
て、ワーク鍵2311の一部をパラメータとして、ハフ
マン圧縮などにより圧縮(換字)処理が施される。そし
て、その結果が、128ビットの圧縮データ2313お
よびその端数データ2314として出力される。
【0356】128ビットの圧縮データ2313は、π
関数処理部2315において、ワーク鍵2311の一部
をパラメータとして、ブロック暗号処理が施され、12
8ビットのデータに変換される。その後、π関数処理部
2316において、ワーク鍵2311の一部をパラメー
タとして、さらにブロック暗号処理が施されて、128
ビットのデータに変換される。このデータが、生成すべ
きデータCの最初のデータb12306となる。また、
π関数処理部2315で生成された128ビットのデー
タは、拡張部2317に入力され、複数コピーされる。
そして、これ等が繋ぎ合わされて、Nビットデータの2
番目のデータ区分である第2区分2304を暗号化する
ためのワーク鍵2318となる。
【0357】また、Nビットデータの2番目のデータ区
分である第2区分2304は、圧縮処理部2319にお
いて、ワーク鍵2318の一部をパラメータとして、ハ
フマン圧縮などにより圧縮(換字)処理が施される。そ
して、その結果が、圧縮データ2320および端数デー
タ2321として出力される。ここで、圧縮データ23
20は、第1区分2303を圧縮(換字)処理した際に
生成された端数データ2314との合計ビット長が、1
28ビットとなるように生成される。
【0358】圧縮データ2320は、第1区分2303
を圧縮(換字)処理した際に生成された端数データ23
14とを繋ぎ合わされて、128ビットのデータにな
る。その後、π関数処理部2322において、ワーク鍵
2318の一部をパラメータとして、ブロック暗号処理
が施され、128ビットのデータに変換される。その
後、π関数処理部2324において、ワーク鍵2318
の一部をパラメータとして、さらにブロック暗号処理が
施されて、128ビットのデータに変換される。このデ
ータが、生成すべきデータCの2番目のデータb223
07となる。
【0359】なお、第2区分2304を圧縮(換字)処
理した際に生成された端数データ2321がrビット
(r≧1)である場合、ハッシュ値生成装置2323
は、鍵2309に対するハッシュ値を生成する。これを
受けて、演算部2325は、ハッシュ値生成装置232
3で生成されたハッシュ値の上位rビットと、端数デー
タ2321との排他的論理的をとり、rビットのデータ
を生成する。このデータが、生成すべきデータCの3番
目のデータb32308となる。
【0360】上記の処理により、Nビットデータに対す
る暗号データCが生成される。
【0361】本発明の第五実施形態を構成するデータ暗
号化装置では、平文2106の暗号化には、初期値とし
て、ハッシュ値h(x1)を用いている。したがって、
このデータ暗号化装置で暗号化された暗号文2108を
復号するためには、ハッシュ値h(x1)求めればよ
い。
【0362】ところで、このデータ暗号化装置では、し
きい値ロジック部2125において、ハッシュ値h(x
1)、h(x2)、h(x3)、h(x4)のうちのいずれ
か2つのハッシュ値が分かれば、ハッシュ値h(x1
を求めることができる条件式を満たす値f1、f2を生成
し、このf1、f2を暗号文2108に付加している。
【0363】このため、暗号文2108を受信した者
(すなわち、f1、f2を取得した者)は、h(x2)、
h(x3)およびh(x4)のうちのいずれか2つ(ただ
し、図22に示す例でいえば、さらにq1xが必要)が分
かれば、暗号化に用いたh(x1)を求めることができ
る。
【0364】よって、暗号文2108を復号は、公開鍵
1と対になる秘密鍵d1を所有する(単独でハッシュ値
h(x1)を求めることができる)者のみならず、公開
鍵Q2と対になる秘密鍵d2を所有する(単独でハッシュ
値h(x2)を求めることができる)者、公開鍵Q3と対
になる秘密鍵d3を所有する(単独でハッシュ値h
(x3)を求めることができる)者、および、公開鍵Q4
と対になる秘密鍵d4を所有する(単独でハッシュ値h
(x4)を求めることができる)者のうちの、いずれか
二人が協力することでも行うことができる。
【0365】前者は、1 out of 1の復号ロジックであ
り、後者は2 out of 3の復号ロジックである。本実施
形態によれば、このように、復号可能となる受信者数の
しきい値制御が可能となる。
【0366】すなわち、暗号文2108を秘密鍵d1
2、d3、d4の所有者各々に対して同報通信(マルチ
キャスト)することで、秘密鍵d1の持ち主が単独で復
号できるとともに、秘密鍵d2、d3、d4の持ち主3人
のうちの2人が協力すれば復号可能なようにすることが
できる。
【0367】次に、図21に示すデータ暗号化装置の変
形例について説明する。
【0368】図25は図21に示すデータ暗号化装置の
変形例の機能構成を示す図である。
【0369】ここで、図21に示すデータ暗号化装置2
101と同じ機能を有するものには、同じ符号を付して
いる。
【0370】図25に示すデータ暗号化装置2101a
は、整数倍演算部2123に代えて整数倍演算部250
1を用いた点で、図21に示すデータ暗号化装置210
1と異なる。その他の構成は、図21に示すものと同じ
である。
【0371】整数倍演算部2501は、ベースポイント
P2102と、乱数生成装置2113で生成された乱数
kとを受け取って、R=kPで示される処理を実行する
点で、図21に示す整数倍演算部2123と同じであ
る。しかしながら、上記の式で求められるRのうち、x
座標の値Rx2502のみを出力する点で異なる。
【0372】したがって、図25に示すデータ暗号化装
置2101aでは、このデータRx2502が、暗号文
2108aの最初のデータとなる。
【0373】図25に示すデータ暗号化装置2101a
では、図21に示すデータ暗号化装置2101に比べ
て、生成される暗号文の長さが幾分短くなる。
【0374】すなわち、図21に示すデータ暗号化装置
2101では、整数倍演算部2123において、楕円曲
線上の点R=kPを求め、求めたRのx座標値Rxおよ
びy座標値Ryを出力して、暗号文2108の最初のデ
ータR2109としていた。
【0375】これに対し、図25に示すデータ暗号化装
置2101aでは、整数倍演算部2501において、楕
円曲線上の点R=kPを求め、求めたRのうちのx座標
値Rxのみを出力して、暗号文2108aの最初のデー
タRx2502としている。
【0376】したがって、図25に示すデータ暗号化装
置2101aで生成された暗号文2108aは、図21
に示すデータ暗号化装置2101で生成された暗号文2
108よりも、y座標値Ryのデータ分(たとえば、1
60ビット)だけ短くなる。
【0377】次に、データ復号化装置について説明す
る。
【0378】図26は、本発明の第五実施形態であるデ
ータ暗号化システムを構成するデータ復号化装置の機能
構成を示す図である。このデータ復号化装置は、図25
に示すデータ暗号化装置2101aで生成された暗号文
2108aを復号するためのものである。
【0379】データ復号化装置は、図26に示すよう
に、データ回復機関2607と、鍵保管機関A2608
と、鍵保管機関B2609とで構成される。
【0380】図26に示すデータ回復機関2607に、
公開鍵Q12103と、暗号文2108aとが入力され
ると、演算部2611は、暗号文2108aの最初のデ
ータRx2502との間で、次の楕円曲線方程式を満足
するy座標値Ryを求める。
【0381】Ry 2=Rx 3+a・Rx+b通常、この方程
式の解Ryは2つ存在する。一方の解をrとすると、他
方は−rとなる(ただし、楕円曲線としてy2+xy=
3+ax+bを用いる場合には、一方の解をrとする
と、他方はRx+rとなる)。
【0382】どちらか任意の一方をとり、他方を無視す
る。ここでは、rの方をとるものとする。演算部261
1は、R=(Rx,r)を出力する。
【0383】次に、データ回復機関2607は、演算部
2611から出力された値Rを鍵保管機関A2608、
B2609に各々送信する。
【0384】これを受けて、鍵保管機関A2608、以
下に示す処理を順次行う。
【0385】自己が格納している秘密鍵d22618
(公開鍵Q22104と対)を読み出す。
【0386】演算部2619において、データ回復機
関2607から送られてきた値Rとの間で、次式を満た
す楕円曲線上の点(x2,y2)を求める。
【0387】(x2,y2)=d2R ハッシュ値生成装置2620において、演算部261
9で求めた(x2,y2)のうちのx座標値x2のハッシ
ュ値h(x2)を生成する。
【0388】ハッシュ値生成装置2620で生成した
ハッシュ値h(x2)を、データ回復機関2607へ送
信する。
【0389】また、鍵保管機関B2609は、以下に示
す処理を順次行う。
【0390】自己が格納している秘密鍵d32621
(公開鍵Q32105と対)を読み出す。
【0391】演算部2622において、データ回復機
関2607から送られてきた値Rとの間で、次式を満た
す楕円曲線上の点(x3,y3)を求める。
【0392】(x3,y3)=d3R ハッシュ値生成装置2623において、演算部262
2で求めた(x3,y3)のうちのx座標値x3のハッシ
ュ値h(x3)を生成する。
【0393】ハッシュ値生成装置2623で生成した
ハッシュ値h(x3)を、データ回復機関2607へ送
信する。
【0394】上記のような処理の結果、得られたハッシ
ュ値h(x2)、h(x3)は以下に示すような特徴を有
する。
【0395】かりに、鍵保管機関A2608、B260
9に各々送信されるデータが、R=(Rx,r)ではな
く、R´=(Rx,−r)であったとする。
【0396】この場合、鍵保管機関A2608の演算部
2919では、(x2´,y2´)=d2R´の計算が行わ
れことになる。
【0397】しかし、楕円曲線上の演算の性質より、
(x2´,y2´)=(x2,−y2)となる。
【0398】すなわち、楕円曲線y2=x3+ax+bを
用いた演算では、−(x,y)=(x,−y)が成立す
る。このとき、(x2,y2)=d2(Rx、r)であった
とすると、d2(Rx,−r)=d2(−(Rx,r))=
−d2(Rx,r)=(x2,−y2)となる。
【0399】また、楕円曲線y2+xy=x3+ax+b
を用いた演算では、−(x,y)=(x,x+y)が成
立する。このとき、(x2,y2)=d2(Rx,r)であ
ったとすると、d2(Rx,Rx+r)=d2(−(Rx,
r))=−d2(Rx,r)=(x2,x2+y2)となる。
【0400】したがって、h(x2´)=h(x2)とな
る。
【0401】つまり、R=(Rx,r)を入力しても、
あるいはR´=(Rx,−r)を入力しても、鍵保管機関
A2608が出力するハッシュ値h(x2)は変化しな
い。
【0402】同様に、R=(Rx,r)を入力しても、
あるいはR´=(Rx,−r)を入力しても、鍵保管機関
B2609が出力するハッシュ値h(x3)も変化しな
い。
【0403】データ回復機関2607の演算部2611
において、方程式の解Ryが2つ存在するにもかかわら
ず、どちらか任意の一方のみを、鍵保管機関A2608
および鍵保管機関B2609に送信したのは、このよう
な理由による。
【0404】次に、データ回復機関2607は、鍵保管
機関A2608および鍵保管機関B2609から各々ハ
ッシュ値h(x2)、h(x3)を受け取ると、しきい値
逆算ロジック部2612による処理を開始する。
【0405】しきい値逆算ロジック部2612は、ま
ず、ハッシュ値h(x2)、h(x3)と、公開鍵Q1
103のx座標値q1xと、暗号文2108aの2番目お
よび3番目のデータf12110、f22111と、を受
け取る。
【0406】そして、以下に示す2元連立方程式を満た
すh(x1)、h(x4)を生成する。
【0407】f1=h(x1)+h(x2)・q1x+h
(x3)・q1x 2+h(x4)・q1x 3(mod n) f2=h(x1)+h(x2)・h(q1x)+h(x3)・
h(q1x2+h(x4)・h(q1x3(mod n) ここで、上記の2元連立方程式は、図21および図25
に示すハッシュ値生成装置で生成されたハッシュ値h
(x1)、h(x2)、h(x3)、h(x4)の値を未知
とする4元連立方程式のうち、h(x2)とh(x3)と
を既知とした場合に相当する。
【0408】図21および図25に示すハッシュ値生成
装置では、乱数生成装置で生成した乱数kを用いて(x
2,y2)=kQ2を求め、このうちのx座標の数値x2
対するハッシュ値をh(x2)としている。同様に、乱
数kを用いて(x3,y3)=kQ3を求め、このうちのx
座標の数値x3に対するハッシュ値をh(x3)としてい
る。
【0409】これに対し、図26に示すハッシュ値生成
装置では、上記と同じ乱数kを用いてR=kPにより求
められたR(あるいは、このRとy座標の符号だけ異な
るR´)を用いて、d2R(あるいは、d2R´)を求
め、このうちのx座標の数値x2(あるいは、x2´)対
するハッシュ値をh(x2)としている。同様に、d3
(あるいは、d3R´)を求め、このうちのx座標の数
値x3(あるいは、x3´)対するハッシュ値をh
(x3)としている。
【0410】ここで、楕円曲線暗号における秘密鍵と公
開鍵との関係から、Q2=d2P、Q3=d3Pが成立す
る。したがって、 d2R=d2kP=kd2P=kQ2=(x2,y2) d3R=d3kP=kd3P=kQ3=(x3,y3) となる。また、上述した理由により、d2R、d3Rのx
座標は、それぞれx2、x3となる。
【0411】したがって、図26に示すハッシュ値生成
装置で生成されたハッシュ値h(x2)、h(x3)と、
図21および図25に示すハッシュ値生成装置で生成さ
れたハッシュ値h(x2)、h(x3)は各々一致するの
で、図26に示すしきい値逆ブロック部2612で求め
たハッシュ値h(x1)、h(x4)は、図21および図
25に示すハッシュ値生成装置で生成されたハッシュ値
h(x1)、h(x4)と各々一致する。
【0412】復号処理部2613は、しきい値逆ブロッ
ク部2612で求めたハッシュ値h(x1)を鍵261
3として、暗号文2108aの4番目のでデータC1
112に対して復号・伸長処理を行う。これにより、平
文2106の最初のNビットデータ2107を生成す
る。
【0413】さらに、復号処理部2617は、ハッシュ
値生成装置2615において、鍵2613を基に生成さ
れたハッシュ値を新しい鍵2616として、暗号文21
08aの5番目のデータに対して復号・伸長処理を行
う。これにより、平文2106の2番目のNビットデー
タを生成する。
【0414】上記の処理を、暗号文2108aを構成す
る最後のデータまで、順次繰り返すことで、平文210
6を復元することができる。
【0415】なお、本発明の第五実施形態は、暗号文に
1、f2、・・・、fnを含めることで、n人の相手に
対してマルチキャストを行い、そのn人のうちの何人か
は単独で復号可能とし、残りの者は少なくとも二人が協
力することで、復号可能とすることもできる。あるい
は、n人各々が単独で復号可能とすることもできる。
【0416】図24は、本発明の第五実施形態を構成す
るデータ暗号化装置のしきい値ロジック部の変形例の機
能構成を示す図である。
【0417】図24に示すように、しきい値ロジック部
2125aには、3つのデータx12402、x2240
3、x32404が入力される。
【0418】ここで、x12402、x22403、x3
2406は、それぞれ、図21に示す整数倍演算部21
14、2115、2116で生成されたx座標値であ
る。
【0419】演算部2408は、次式で示される処理を
実行することで、データf12406を生成する。
【0420】f1=x1−h(x2) ここで、h(x2)は、図21に示すハッシュ値生成装
置2126で生成されたハッシュ値である。
【0421】また、演算部2410は、次式で示される
処理を実行することで、データf22407を生成す
る。
【0422】f2=x1−h(x3) ここで、h(x3)は、図21に示すハッシュ値生成装
置2127で生成されたハッシュ値である。
【0423】図24に示すしきい値ロジック部2125
aを用いることで、図21に示すデータ暗号化装置21
01は、暗号化処理途中に生成される乱数kと公開鍵Q2
2104とを基にデータf12406を生成することに
なる。このため、公開鍵Q22104と対の関係にある
秘密鍵d2の持ち主も、暗号文2108を単独で復号す
ることができる。
【0424】同様に、暗号化処理途中に生成される乱数
kと公開鍵Q32105とを基に、データf22407を
生成することになる。このため、公開鍵Q32105と
対の関係にある秘密鍵d3の持ち主も、暗号文2108
を単独で復号することができる。
【0425】すなわち、暗号文2108を秘密鍵d1
2、d3のそれぞれの持ち主に同報通信(マルチキャス
ト)することで、これ等の持ち主各々が単独で復号する
ことが可能となる。また、通信相手を一人増やすには、
単に、ハッシュ値の長さ分(たとえば、80ビット)の
データを増やせばよいので、同報暗号通信を効率的に行
うことができる。ここで、ハッシュ関数には一方向性だ
けが要求され、衝突回避性は要求されない。
【0426】なお、上記の実施形態では、楕円曲線暗号
として、 y2=x3+ax+b に基づくものを用いたが、その代わりに、楕円曲線暗号
として、y2+xy=x3+ax+bに基づくものを用い
てもよい。
【0427】
【発明の効果】以上説明したように本発明によれば、デ
ータ攪乱度の高いハッシュ値を、迅速に生成することが
できる。
【0428】また、データ攪乱度の高い鍵や暗号文など
のデータを、迅速に生成することができる。
【0429】さらに、同じデータを複数の宛先に暗号化
して送信しようとする場合に、各宛先毎に、当該宛先か
ら予め配布されて公開鍵を用いて暗号化処理を行わなう
必要がなくなる。
【0430】また、間違ってファイルから復号鍵を消去
するなどして、復号鍵を紛失してしまった場合でも、自
己宛てに送られてきた暗号化データを、他の二人以上の
受信者が協力することで復号することが可能になる。
【図面の簡単な説明】
【図1】本発明の第一実施形態であるハッシュ値生成装
置の機能構成を示す図である。
【図2】図1に示す混合処理部103での処理の一例を
説明するための図である。
【図3】図に示す伸長処理部104での処理の一例を説
明するためのフロー図である。
【図4】図1に示す単射拡大部105での処理の一例を
説明するためのフロー図である。
【図5】図4に示すステップ405における64ビット
データから96ビットデータへの単射拡大処理の一例を
説明するためのフロー図である。
【図6】図4に示すステップ406における96ビット
データから128ビットデータへの単射拡大処理の一例
を説明するためのフロー図である。
【図7】図4に示すステップ407における128ビッ
トデータから256ビットデータへの単射拡大処理の一
例を説明するためのフロー図である。
【図8】本発明の第一実施形態の変形例であるハッシュ
値生成装置の機能構成を示す図である。
【図9】図8に示す混合処理部801での処理の一例を
説明するための図である。
【図10】図8に示す単射拡大部803での処理の一例
を説明するためのフロー図である。
【図11】図10に示すステップ1005における64
ビットデータから64ビットデータへの単射処理の一例
を説明するためのフロー図である。
【図12】図10に示すステップ1006における64
ビットデータから80ビットデータへの単射拡大処理の
一例を説明するためのフロー図である。
【図13】本発明の第二実施形態であるデータ暗号化装
置の機能構成を示す図である。
【図14】図13に示すπ関数処理部1306〜131
3における処理の一例を説明するためのフロー図であ
る。
【図15】本発明の第三実施形態であるマスキング装置
の機能構成を示した図である。
【図16】本発明の第四実施形態であるデータ暗号化シ
ステムを構成するデータ暗号化装置の機能構成を示す図
である。
【図17】図16に示す圧縮・暗号化部1612、16
15、・・・の機能構成を示す図である。
【図18】本発明の第四実施形態であるデータ暗号化シ
ステムを構成するデータ復号化装置の機能構成を示す図
である。
【図19】図18に示す復号・伸長化部1810、18
12、・・・の機能構成を示す図である。
【図20】図16に示す本発明の第四実施形態における
データ暗号化装置の変形例の機能構成を示す図である。
【図21】本発明の第五実施形態であるデータ暗号化シ
ステムを構成するデータ暗号化装置の機能構成を示す図
である。
【図22】図21に示すしきい値ロジック部2125の
機能構成を示す図である。
【図23】図21に示す圧縮・暗号化部2120、・・
・の機能構成を示す図である。
【図24】本発明の第五実施形態を構成するデータ暗号
化装置のしきい値ロジックの変形例の機能構成を示す図
である。
【図25】本発明の第五実施形態を構成するデータ暗号
化装置の変形例の機能構成を示す図である。
【図26】本発明の第五実施形態であるデータ暗号化シ
ステムを構成するデータ復号化装置の機能構成を示す図
である。
【図27】従来のハッシュ関数を説明するための図であ
る。
【符号の説明】
101、101a、1301、1509、1809、1
912、2011、2014、2119、2121、2
126〜2128、2323、2620、2623、2
615 ハッシュ値生成装置 102 データ拡大部 103、801 混合処理部 104 伸長処理部 105、803 単射拡大部 1311、1601、1801、2001 データ暗号
化装置 1306〜1313、1513、1514、1518、
1519、1710、1711、1716、1718、
2315、2316、2322、2324 π関数処理
部 1501 マスキング生成装置 1508、1607、2007、2113 乱数生成装
置 1608、1609、1807、2008、2009、
2114〜2116、2123、2124、2501、
2619、2622 整数倍演算部 1610、1613、1808、1811 番号生成部 1612、1615、2012、2015、2120
圧縮・暗号化部 1707、1713、2312、2319 圧縮処理部 1706、1712、1717、1906、1909、
1915、2310、2317 拡張部 1810、1813 復号伸長部 1911、1917、2614、2617 伸長処理部 1907、1910、1914、1916 π-1関数処
理部 2125 しきい値ロジック部 2325、2611 演算部 2607 データ回復機関 2608、2609 鍵保管機関 2612 しきい値逆ロジック部

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】電子捺印、あるいはデータ暗号化に用いら
    れるハッシュ値生成方法であって、 対象データを少なくとも2つのブロックに分割する第一
    の処理と、 前記第一の処理の結果得られた少なくとも2つのブロッ
    クのうちのいずれか1つに対して、換字および/または
    転置変換を行う第二の処理と、 前記第二の処理の結果得られたデータに対して、結果が
    当該データのデータ長よりも長くなるような乗算を行う
    第三の処理と、 前記第三の処理の結果得られたデータを、さらに少なく
    とも2つのブロックに分割する第四の処理と、 前記第四の処理の結果得られた少なくとも2つのブロッ
    ク各々に対して、換字および/または転置変換を行う第
    五の処理と、 を含んでいることを特徴とするハッシュ値生成方法。
  2. 【請求項2】電子捺印、あるいはデータ暗号化に用いら
    れるハッシュ値生成方法であって、 対象データを少なくとも2つに分割する第一の処理と、 前記第一の処理の結果得られた少なくとも2つのブロッ
    クのうちの、いずれか少なくとも1つに対して、入力値
    が異なれば出力値も必ず異なり(単射)、かつ出力値の
    長さが入力値の長さよりも長くなる(拡大)変換である
    単射拡大変換を行う第二の処理と、 を含んでいることを特徴とするハッシュ値生成方法。
  3. 【請求項3】請求項2記載のハッシュ値生成方法であっ
    て、 単射拡大変換は、前記第一の処理の結果得られた少なく
    とも2つのブロックのうち、当該単射拡大変換の対象と
    なるデータ以外のデータを、パラメータとすることを特
    徴とするハッシュ値生成方法。
  4. 【請求項4】請求項2記載のハッシュ値生成方法であっ
    て、 単射拡大変換は、前記第一の処理の結果得られた少なく
    とも2つのブロックとは別個に設定された初期値をパラ
    メータとすることを特徴とするハッシュ値生成方法。
  5. 【請求項5】請求項2記載のハッシュ値生成方法であっ
    て、 前記第二の処理は、前記第一の処理の結果得られた少な
    くとも2つのブロックのうちの、いずれか少なくとも2
    つに対して、単射拡大変換を行うものであり、 当該いずれか少なくとも2つのうちの1つに対して行わ
    れる単射拡大変換は、前記第一の処理の結果得られた少
    なくとも2つのブロックとは別個に設定された初期値を
    パラメータとするものであり、 他の1つに対して行われる単射拡大変換は、前記初期値
    をパラメータとする単射拡大変換の結果をパラメータと
    するものであることを特徴とするハッシュ値生成方法。
  6. 【請求項6】請求項2記載のハッシュ値生成方法であっ
    て、 前記第二の処理は、前記第一の処理の結果得られた少な
    くとも2つのブロックのうちの、いずれか少なくとも2
    つに対して、単射拡大変換を行うものであり、かつその
    うちの1つに対しては、単射拡大変換を2回行うもので
    あり、 当該そのうちの1つに対して2回行われる単射拡大変換
    は、他の1つに対して行われる単射拡大変換の結果をパ
    ラメータとすることを特徴とするハッシュ値生成方法。
  7. 【請求項7】請求項2記載のハッシュ値生成方法であっ
    て、 前記単射拡大変換は、入力値に対して換字および/ある
    いは転置変換を行う第三の処理と、 前記第三の処理の結果得られた入力値に対して、結果が
    当該データのデータ長よりも長くなるような乗算を行う
    第四の処理と、 を含んでいることを特徴とするハッシュ値生成方法。
  8. 【請求項8】請求項2記載のハッシュ値生成方法であっ
    て、 前記単射拡大変換は、入力値に対して換字および/ある
    いは転置変換を行う第三の処理と、 前記第三の処理の結果得られた入力値に対して、巡回シ
    フト計算を行う第四の処理と、 を含んでいることを特徴とするハッシュ値生成方法。
  9. 【請求項9】一定長のデータを暗号変換して一定長の暗
    号化データを出力するデータ暗号化方法であって、 対象データを換字および/または転置変換を行う第一の
    処理と、 前記第一の処理の結果得られたデータに対して、結果が
    当該データのデータ長よりも長くなるような乗算を行う
    第二の処理と、 前記第二の処理の結果得られたデータを、少なくとも2
    つのブロックに分割する第三の処理と、 前記第三の処理の結果得られた少なくとも2つのブロッ
    ク各々に対して、換字および/または転置変換を行う第
    四の処理と、 含んでいることを特徴とするデータ暗号化方法。
  10. 【請求項10】データを暗号変換して暗号化データを出
    力するデータ暗号化方法であって、 対象データの一部を圧縮変換する第一の処理と、前記第
    一の処理の結果得られたデータに対して、入力値が異な
    れば出力値も必ず異なる変換である単射変換を行う第二
    の処理と、前記第二の処理の結果得られたデータを、暗
    号化データの一部として出力する第三の処理と、を含む
    暗号化処理を、当該対象データを構成する全ての部分に
    対して順次行うものであり、 前記第一の処理は、対象データを構成する最初の一部に
    対しては、鍵を変換して得られるデータをパラメータと
    して圧縮変換を行い、対象データを構成する二番目以降
    の一部に対しては、一つ前の暗号化処理において行われ
    た第二の処理の結果をパラメータとして圧縮変換を行う
    ものであり、 前記第二の処理は、単射変換の過程において乗算を2回
    以上行うものであることを特徴とするデータ暗号化方
    法。
  11. 【請求項11】公開鍵を用いて平文を暗号化する公開鍵
    暗号を用いたデータ暗号化方法であって、 第一の公開鍵を変換することで得られたデータをパラメ
    ータとして、平文に対して暗号化変換を行う第一の処理
    と、 少なくとも1つの第二の公開鍵に応じたデータと、前記
    第一の公開鍵を変換することで得られたデータとの間に
    おいて、前記第二の公開鍵に応じたデータが分かれば、
    前記第一の公開鍵を変換することで得られたデータを、
    直接あるいは間接に求めることができる関係式を満たす
    データ値を生成する第二の処理と、を含み、 送信すべき暗号化データとして、前記第一の処理の結果
    得られたデータに、前記第二の処理の結果得られたデー
    タ値を付与したことを特徴とするデータ暗号化方法。
  12. 【請求項12】請求項11記載のデータ暗号化方法であ
    って、 前記第一の処理は、生成した乱数と第一の公開鍵とを作
    用させることで得られたデータを、パラメータとして用
    いるものであることを特徴とするデータ暗号化方法。
  13. 【請求項13】請求項11記載のデータ暗号方法であっ
    て、 前記第一の処理は、複数に区分に分割された平文に対し
    て、区分単位で順次暗号化変換を行うものであり、 かつ、最初の区分に対しては、生成した乱数と第一の公
    開鍵とを作用させることで得られたデータを、パラメー
    タとして、暗号化変換を行い、 二番目以降の区分に対しては、一つ前の区分に対する暗
    号化データ生成の過程で発生した中間データを、パラメ
    ータとして、暗号化変換を行うものでることを特徴とす
    るデータ暗号化方法。
  14. 【請求項14】秘密鍵を用いて暗号文を復号化する公開
    鍵暗号を用いたデータ復号化方法であって、 当該方法は、請求項11記載のデータ暗号化方法によっ
    て得られた暗号文を復号化するものであり、 請求項11記載の第二の公開鍵に応じたデータを、当該
    第二の公開鍵と対になる秘密鍵から求める第三の処理
    と、 暗号文に付加されたデータ値と、前記第三の処理で求め
    たデータとを基に、請求項11において第一の公開鍵を
    変換することで得られたデータを求める第四の処理と、 前記第四の処理で求めたデータをパラメータとして、暗
    号文を復号する第五の処理と、 を含んでいることを特徴とするデータ復号化方法。
  15. 【請求項15】請求項14記載のデータ復号化方法であ
    って、 当該方法は、請求項13記載のデータ暗号化方法によっ
    て得られた暗号文を復号化するものであり、 前記第五の処理は、複数に区分に分割された暗号文に対
    して、区分単位で順次復号化変換を行うものであり、 かつ、最初の区分に対しては、前記第四の処理で求めた
    データをパラメータとして、復号化変換を行い、 二番目以降の区分に対しては、一つ前の区分に対する復
    号化データ生成の過程で発生した中間データを、パラメ
    ータとして、復号化変換を行うものであることを特徴と
    するデータ復号化方法。
  16. 【請求項16】公開鍵暗号を用いたデータ暗号化・復号
    化方法であって、 送信側において、 楕円曲線上のベースポイントPのk倍点kPのx座標値
    と、公開鍵Qのk倍点kQのx座標と、平文とを作用さ
    せることで、暗号文を生成するとともに、 当該生成した暗号文に前記kPのx座標値を付加して送
    信し、 受信側において、 受信した暗号文と、当該暗号文に付加されたkPのx座
    標値に対応する楕円曲線上の2点のうちのいずれか一方
    の点Rを公開鍵Qと対になる秘密鍵dでd倍した点dR
    のx座標値と、を作用させることで、平文を生成するこ
    とを特徴とするデータ暗号化・復号化方法。
  17. 【請求項17】元のデータへの逆変換が困難であるハッ
    シュ値を生成するハッシュ値生成装置であって、 対象データを少なくとも2つのブロックに分割する第一
    の分割手段と、 前記第一の分割手段で分割され少なくとも2つのブロッ
    クのうちのいずれか1つに対して、換字および/または
    転置変換を行う第一の換字・転置変換手段と、 前記第一の換字・転置変換手段で変換されたデータに対
    して、結果が当該データのデータ長よりも長くなるよう
    な乗算を行う乗算手段と、 前記乗算手段で乗算されたデータを、さらに少なくとも
    2つのブロックに分割する第二の分割手段と、 前記第第二の分割手段で分割された少なくとも2つのブ
    ロック各々に対して、換字および/または転置変換を行
    う第二の換字・転置変換手段と、 を含んでいることを特徴とするハッシュ値生成装置。
  18. 【請求項18】元のデータへの逆変換が困難であるハッ
    シュ値を生成するハッシュ値生成装置であって、 対象データを少なくとも2つに分割する第一の分割手段
    と、 前記第一の分割手段で分割された少なくとも2つのブロ
    ックのうちの、いずれか少なくとも1つに対して、入力
    値が異なれば出力値も必ず異なり(単射)、かつ出力値
    の長さが入力値の長さよりも長くなる(拡大)変換であ
    る単射拡大変換を行う単射拡大変換手段と、 を含んでいることを特徴とするハッシュ値生成装置。
  19. 【請求項19】一定長のデータを暗号変換して一定長の
    暗号化データを出力するデータ暗号化装置であって、 対象データに対して換字および/または転置変換を行う
    第一の換字・転置変換手段と、 前記第一の換字・転置変換手段で変換されたデータに対
    して、結果が当該データのデータ長よりも長くなるよう
    な乗算を行う乗算手段と、 前記乗算手段で乗算されたデータを、少なくとも2つの
    ブロックに分割する分割手段と、 前記分割手段で分割された少なくとも2つのブロック各
    々に対して、換字および/または転置変換を行う第二の
    換字・転置変換手段と、 含んでいることを特徴とするデータ暗号化装置。
  20. 【請求項20】データを暗号変換して暗号化データを出
    力するデータ暗号化装置であって、 対象データの一部を圧縮変換する圧縮手段と、前記圧縮
    手段で圧縮されたデータに対して、入力値が異なれば出
    力値も必ず異なる変換である単射変換を行う単射変換手
    段と、前記第単射変換手段で変換されたデータを、暗号
    化データの一部として出力する出力手段と、を含む暗号
    化手段と、 当該対象データを構成する全ての部分を、前記暗号化手
    段に順次入力する手段と、を有し、 前記圧縮手段は、対象データを構成する最初の一部に対
    しては、鍵を変換して得られるデータをパラメータとし
    て圧縮変換を行い、対象データを構成する二番目以降の
    一部に対しては、一つ前に入力されたデータに対する前
    記単射変換手段での結果をパラメータとして圧縮変換を
    行うものであり、 前記単射変換手段は、単射変換の過程において乗算を2
    回以上行うものであることを特徴とするデータ暗号化装
    置。
  21. 【請求項21】公開鍵を用いて平文を暗号化する公開鍵
    暗号を用いたデータ暗号化装置であって、 第一の公開鍵を変換することで得られたデータをパラメ
    ータとして、平文に対して暗号化変換を行う暗号化手段
    と、 少なくとも1つの第二の公開鍵に応じたデータと、前記
    第一の公開鍵を変換することで得られたデータとの間に
    おいて、前記第二の公開鍵に応じたデータが分かれば、
    前記第一の公開鍵を変換することで得られたデータを、
    直接あるいは間接に求めることができる関係式を満たす
    データ値を生成するデータ値生成手段と、を含み、 送信すべき暗号化データとして、前記暗号化手段で暗号
    化されたデータに、前記データ値生成手段で生成された
    データ値を付与することを特徴とするデータ暗号化装
    置。
  22. 【請求項22】秘密鍵を用いて暗号文を復号化する公開
    鍵暗号を用いたデータ復号化装置であって、 当該装置は、請求項21記載のデータ暗号化装置によっ
    て生成された暗号文を復号化するものであり、 請求項21記載の第二の公開鍵に応じたデータを、当該
    第二の公開鍵と対になる秘密鍵から求める第一のデータ
    算出手段と、 暗号文に付加されたデータ値と、前記第三の処理で求め
    たデータとを基に、請求項11において第一の公開鍵を
    変換することで得られたデータを求める第二のデータ算
    出手段と、 前記第二のデータ算出手段で求めたデータをパラメータ
    として、暗号文を復号化する復号化手段と、 を含んでいることを特徴とするデータ復号化装置。
JP9149423A 1996-12-10 1997-06-06 ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置 Pending JPH10340048A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP9149423A JPH10340048A (ja) 1997-06-06 1997-06-06 ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置
EP98110182A EP0886399A3 (en) 1997-06-06 1998-06-04 Hash value generating method and device, data encryption method and device, data decryption method and device
US09/090,417 US6122375A (en) 1996-12-10 1998-06-04 Hash value generating method and device, data encryption method and device, data decryption method and device
US09/655,712 US6370247B1 (en) 1996-12-10 2000-09-05 Hash value generating method and device, data encryption method and device, data decryption method and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9149423A JPH10340048A (ja) 1997-06-06 1997-06-06 ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置

Publications (1)

Publication Number Publication Date
JPH10340048A true JPH10340048A (ja) 1998-12-22

Family

ID=15474796

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9149423A Pending JPH10340048A (ja) 1996-12-10 1997-06-06 ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置

Country Status (2)

Country Link
EP (1) EP0886399A3 (ja)
JP (1) JPH10340048A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970561B1 (en) 1999-04-21 2005-11-29 Nec Corporation Encryption and decryption with endurance to cryptanalysis
JP2011518373A (ja) * 2008-03-28 2011-06-23 アリババ グループ ホールディング リミテッド ネットワーク上でのファイルフォルダ送信
WO2015115074A1 (ja) * 2014-01-30 2015-08-06 株式会社モフィリア 撮像システム及び撮像装置
US9300721B2 (en) 2009-09-14 2016-03-29 Alibaba Group Holding Limited Method, apparatus and system for file transfer based on file directory
JP2018013802A (ja) * 2013-08-08 2018-01-25 インテル・コーポレーション セキュア暗号ハッシュラウンド機能を提供する命令およびロジック
CN114124356A (zh) * 2021-11-24 2022-03-01 中国银行股份有限公司 应用于区块链的密文生成方法、服务器、介质及装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6928162B1 (en) 2000-04-07 2005-08-09 International Business Machines Corporation Method and system for manipulating and telescoping a hash function
JP2010128392A (ja) * 2008-11-28 2010-06-10 Canon Inc ハッシュ処理装置及びその方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171350A (ja) * 1996-12-10 1998-06-26 Hitachi Ltd ハッシュ値生成方法および装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970561B1 (en) 1999-04-21 2005-11-29 Nec Corporation Encryption and decryption with endurance to cryptanalysis
JP2011518373A (ja) * 2008-03-28 2011-06-23 アリババ グループ ホールディング リミテッド ネットワーク上でのファイルフォルダ送信
US9128952B2 (en) 2008-03-28 2015-09-08 Alibaba Group Holding Limited File folder transmission on network
US9792297B2 (en) 2008-03-28 2017-10-17 Alibaba Group Holding Limited File folder transmission on network
US9300721B2 (en) 2009-09-14 2016-03-29 Alibaba Group Holding Limited Method, apparatus and system for file transfer based on file directory
JP2018013802A (ja) * 2013-08-08 2018-01-25 インテル・コーポレーション セキュア暗号ハッシュラウンド機能を提供する命令およびロジック
WO2015115074A1 (ja) * 2014-01-30 2015-08-06 株式会社モフィリア 撮像システム及び撮像装置
JPWO2015115074A1 (ja) * 2014-01-30 2017-03-23 株式会社モフィリア 撮像システム及び撮像装置
CN114124356A (zh) * 2021-11-24 2022-03-01 中国银行股份有限公司 应用于区块链的密文生成方法、服务器、介质及装置
CN114124356B (zh) * 2021-11-24 2024-01-26 中国银行股份有限公司 应用于区块链的密文生成方法、服务器、介质及装置

Also Published As

Publication number Publication date
EP0886399A3 (en) 2004-02-18
EP0886399A2 (en) 1998-12-23

Similar Documents

Publication Publication Date Title
US6370247B1 (en) Hash value generating method and device, data encryption method and device, data decryption method and device
JPH10171350A (ja) ハッシュ値生成方法および装置
US5790675A (en) Cryptographic communication process
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
US6111952A (en) Asymmetrical cryptographic communication method and portable object therefore
US20050240762A1 (en) Cryptographic method and apparatus
JPH10340048A (ja) ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置
JP2001282103A (ja) 暗号化方法
EP3923512A1 (en) Method for processing encrypted data
Nakahara Jr Lai-Massey Cipher Designs: History, Design Criteria and Cryptanalysis
JPH09200196A (ja) 暗号通信方式
JP2001211155A (ja) 共通鍵生成方法,共通鍵生成装置及び暗号通信方法
JP2002215026A (ja) 署名付き暗号通信方法及びその装置
JP5293612B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法およびプログラム
JPH1155244A (ja) 鍵回復方法および装置
JP2000089667A (ja) アルゴリズム生成型秘密鍵暗号方式
Oguntunde et al. A comparative study of some traditional and modern cryptographic techniques
Zekaj et al. Using incomplete polynomial functions of the odd degree n and their inverses for data encryption and decryption
abdual Rahman et al. A new approach for Encryption using radix modular
Abbas et al. Audio cryptosystem based on LFSH and Chaotic map with ECC key management
JP3668138B2 (ja) 署名付き暗号文変換方法、その検証方法およびこれらの装置
JPH02165186A (ja) Icカード装置
AU743461B2 (en) Cryptographic communication process
JP3722744B2 (ja) 暗号化装置,暗号通信システム,記録媒体
JP2000214779A (ja) ハッシュ値生成方法および装置