JPH10171350A - ハッシュ値生成方法および装置 - Google Patents

ハッシュ値生成方法および装置

Info

Publication number
JPH10171350A
JPH10171350A JP8329741A JP32974196A JPH10171350A JP H10171350 A JPH10171350 A JP H10171350A JP 8329741 A JP8329741 A JP 8329741A JP 32974196 A JP32974196 A JP 32974196A JP H10171350 A JPH10171350 A JP H10171350A
Authority
JP
Japan
Prior art keywords
data
message
parameter
bit
conversion
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
JP8329741A
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 JP8329741A priority Critical patent/JPH10171350A/ja
Priority to US08/986,390 priority patent/US6141421A/en
Priority to EP97121605A priority patent/EP0848518A3/en
Priority to US09/090,417 priority patent/US6122375A/en
Publication of JPH10171350A publication Critical patent/JPH10171350A/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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • 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
    • 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/30Compression, e.g. Merkle-Damgard construction

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【課題】 処理速度を低下させることなく安全性の高い
ハッシュ値生成方法および装置を提供する。 【解決手段】 メッセージMが与えられたときに、それ
をある種の暗号的特性をもつように圧縮するようなハッ
シュ関数を実現する。この過程において、(1)メッセー
ジの分割データを入力し、それよりも長いデータを出力
するような単射拡大処理を行い、(2) 乗算処理、およ
び、それぞれシフト数が異なる複数個の巡回シフト処理
を行う。これにより、従来のメッセージ分割データの単
純な圧縮の繰り返し方法に比べてハッシュ関数の高速化
を行うことが可能になった。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータネッ
トワークにおけるセキュリティを確保する技術に関す
る。
【0002】
【従来の技術】従来、電子捺印において、公開鍵暗号だ
けを使って長いメッセージに対する電子捺印(ディジタ
ル署名)を生成しようとすると多くの時間がかかってし
まう。そこで、メッセージを、一旦、短いデータに圧縮
してから圧縮されたデータに対して電子捺印を生成する
方法がとられる。圧縮の仕方は、通常のデータ圧縮のよ
うに圧縮されたデータから元のメッセージが復元される
必要はないが、ある種の暗号的特性を持つように圧縮さ
れる。そこで考えられたのがハッシュ関数(hashfunctio
n)である。
【0003】商取引文書等のメッセージ、例えば、文書
A: 「洲崎商会殿 乗用車(カタログNo. 1443)を104
万円で購入します。 1996年3月10日 吉浦」がハッ
シュ関数への入力データとなる。入力データの長さはど
んなに長くても構わない。ハッシュ関数は、この入力デ
ータに対して暗号変換に似た処理を施すことで一定長の
短いデータになるように圧縮する。例えば、 ハッシュ値:283AC9081E83D5B28977 がハッシュ関数の出力となる。このハッシュ値はメッセ
ージダイジェスト、あるいはフィンガープリント(指
紋)とも呼ばれ、理想的にはメッセージ一つに対して世
の中に実質上一つしか存在しない。この「世の中に実質
上一つしか存在しない」ことを保証するため、ハッシュ
値の長さは少なくとも128ビット程度は必要と言われて
いる。より詳しくいえばハッシュ関数は、次のような特
性をもつことが必要である。
【0004】(1) 一方向性(one-way property):あるハ
ッシュ関数の出力値が与えられたとする。この出力値と
同じ出力値をもたらすような別のメッセージMを求める
ことが計算量的に困難であること。
【0005】例 和夫君の誕生日が2月22日とする。
和夫君の誕生日と同じ誕生日を持つ別の人を探すのは平
均して365/2≒183人程度の誕生日を当たってみれば同じ
誕生日の人が見つかる。人をメッセージと置き換え、誕
生日をハッシュ値と置き換えて同様の計算方法が成り立
つ。つまり、ハッシュ値の長さを160ビットとすれば、
ハッシュ値の総数は2160通りある。あるメッセージのハ
ッシュ値と同じハッシュ値をもつ別のメッセージを探す
のは平均して2160/2=2159個のメッセージに当たってみ
れば同じハッシュ値をもつメッセージが見つかる。これ
は計算量的に困難である。
【0006】(2) 衝突回避性(collision free propert
y):メッセージもハッシュ値も何であるかは問わない。
とにかく同じハッシュ値となるように二つの異なるメッ
セージMとM'を見つけることが計算量的に困難であるこ
と。
【0007】例 とにかく誰でも良いから同じ誕生日を
持つ人二人を探したい。この場合、平均して24人程度の
人の誕生日を当たってみれば同じ誕生日となる二人が見
つかる。同様に、ハッシュ値の長さを160ビットとすれ
ば、何でも良いから同じハッシュ値をもつ二つの異なる
メッセージを見つけるのは平均して2160/2=280組程度
のメッセージを当たってみれば良い。この個数は一方向
性の場合と比べるとかなり小さい。しかし、依然、計算
量的には困難である。
【0008】ハッシュ関数を実現する仕組みとしては種
々の方法が発表されているが、公開鍵暗号より圧倒的に
速い方法として換字と転置の繰り返しを行う方法が主流
になっている。その処理の仕組みを示す従来例が次の文
献において開示されている。
【0009】ISO/IEC 10118-2, "Information technolo
gy - Security techniques - Hash-functions: Part 2:
Hash-functions using an n-bit block cipher algori
thm"(1994) 上記従来例においては、図21に示すように、先ず、圧縮
したいメッセージ2501を一定の長さ毎に区切って、第1
区分M12502、第2区分M22503、・・・というように分割
し、ハッシュ関数2507に入力する。ハッシュ関数2507に
おいては、初期値2504をパラメータとして第1区分M1250
2に対して換字・転置繰り返し処理2505を施すことで第1
番目の中間出力を得る。次に、その中間出力をパラメー
タにして第2区分M22503に対して換字・転置繰り返し処
理2505を施すことで第2番目の中間出力を得る。・・・
という処理を繰り返し最後に出てきた中間出力が求める
ハッシュ値H2506となる。
【0010】この換字、換字・転置繰り返し処理2505の
ところで、上記従来文献においては米国暗号標準DESの
ような暗号化関数を用いている。これは「ブロック暗号
を利用したハッシュ関数」と呼ばれISOで標準化済みで
あり、それが上記文献において開示されている。この方
法の詳細は次のとおりである。
【0011】初期値2504を変換関数2508により変換した
ものをパラメータとして第1区分M12502に対して暗号化
関数2509を施すことにより暗号化する。次に、その暗号
化結果と第1区分M12502との間でビット毎の排他的論理
和2510を施し、その結果を換字・転置繰り返し処理2505
の中間出力とする。次の中間出力を再度フィードバック
して換字・転置繰り返し処理2505への入力とし、変換関
数2508により変換したものをパラメータにして第2区分M
22503に対して暗号化関数2509を施すことにより暗号化
する。次に、その暗号化結果と第2区分M22503に対して
ビット毎の排他的論理和2510を施し、その結果を換字・
転置繰り返し処理2505の中間出力とする。・・・という
処理を繰り返し最後に出てきた中間出力が求めるハッシ
ュ値H2506となる。
【0012】ここで、暗号化関数2509としてDESを用い
る場合、第1区分M12502、第2区分M22503等の各区分の長
さは64ビット、換字・転置繰り返し処理2505の出力の長
さは各64ビットとなり、ハッシュ値H2506の長さも64ビ
ットとなる。この「ブロック暗号を利用したハッシュ関
数」の特徴は、メッセージの各区分 M12502、 M22503、
・・・の長さと、換字・転置繰り返し処理2505の出力の
長さが等しいことである。
【0013】前記の換字・転置繰り返し処理2505におい
て、DESのような暗号化関数2509を用いない方法は「専
用ハッシュ関数」と呼ばれインターネット標準のMD5やI
SOで標準化中のSHA-1, RIPEMD-160などがある。
【0014】このうち、MD5は次の文献で開示されてい
る。
【0015】R. Rivest, "The MD5 Message-Digest Alg
orithm," IETF RFC 1321(1992)MD5においては、メッ
セージ2501を512ビット毎の長さに区切って、512ビット
の第1区分M12502、512ビットの第2区分M22503、・・・
というように分割し、ハッシュ関数2507に入力する。ハ
ッシュ関数2507においては、128ビットの初期値2504を
パラメータとして512ビットの第1区分M12502に対して換
字・転置繰り返し処理2505を施すことにより128ビット
の中間出力を得る。次に、その中間出力をパラメータと
して512ビットの第2区分M22503に対して換字・転置繰り
返し処理2505を施すことにより128ビットの中間出力を
得る。・・・という処理を繰り返し最後に出てきた128
ビットの中間出力が求めるハッシュ値H2506となる。
【0016】この「専用ハッシュ関数」の特徴は、メッ
セージの各区分 M12502、 M22503、・・・の長さより
も、換字・転置繰り返し処理2505の出力の長さが短いこ
とである。
【0017】このMD5は処理速度が速く、公開鍵暗号に
比べて1,000倍以上の処理速度が出る。例えば、ペンテ
ィアム90MHzを使ったパソコン上のソフトでは約1ミリ秒
(千分の1秒)で約10万ビットのデータを圧縮処理す
る。これにより、比較的長い文章や図形に対しても電子
捺印を高速に生成することが可能になる。
【0018】
【発明が解決しようとする課題】しかし、上記公知例に
おいては次の不満足点があった。
【0019】(1) 「ブロック暗号を利用したハッシュ関
数」により生成されるハッシュ値は処理速度が遅い。
【0020】このハッシュ関数に用いることができるDE
S等の暗号化関数(ブロック暗号)は、入力長、およ
び、出力長が64ビットと短く、その結果、得られるハッ
シュ値も64ビットとなり、前記の衝突回避性を実現する
うえでは十分な長さではない。そのため、初期値等を変
えてハッシュ関数の計算を2回行うことで128ビットの
ハッシュ値を生成することになるが、そのため、処理速
度が遅くなるという不満が生じる。
【0021】(2) 「専用ハッシュ関数」により生成され
るハッシュ値には安全上の不安がある。
【0022】先程述べたように、「専用ハッシュ関数」
は、メッセージを分割したデータに対して単純な換字・
転置の繰り返し処理2505を行っていた。ここで、入力値
の長さ(例えば、512ビット)と比べて、出力値の長さ
(例えば、128ビット)の方が短い。このため、1箇所の
メッセージ分割データ入力512ビット→圧縮データ出力1
28ビットの関係に着目して、入力衝突、すなわち、異な
る二つの入力に対して同一の出力となること、を起こす
ことが比較的容易にできた。つまり、ハッシュ関数を比
較的容易に破ることができた。
【0023】したがって、本発明の目的は、処理速度を
低下させることなく安全性の高いハッシュ値生成方法お
よび装置を提供することにある。
【0024】
【課題を解決するための手段】上記、従来の問題を解決
するため、本発明では次の手段を用いる。
【0025】(1) 前記の従来例では、換字・転置繰
り返し処理2507へ入力されるメッセージ区分の長さと出
力される中間出力の長さを比べると、出力の長さは入力
の長さと等しいか(「ブロック暗号を利用したハッシュ
関数」)、出力の長さは入力の長さよりも短かった
(「専用ハッシュ関数」)。これに対して、本発明で
は、出力の長さは入力の長さより長くし、かつ、入力値
が異なれば出力値も必ず異なるような単射拡大変換を行
う処理を含むようにした。これにより、MD5で問題とな
ったような、換字・転置の繰り返し処理2505におけるメ
ッセージの衝突を避けることが比較的容易にできるよう
になった。
【0026】(2) 前記の単射拡大変換は、入力値を
変換したものに対して、乗算を行う処理、および、それ
ぞれシフト数が異なる複数個の巡回シフト計算を行う処
理を含むようにした。これにより、ペンティアム等、最
近のマイクロプロセッサの進展により取り分け処理速度
が向上している乗算や巡回シフト計算をデータの撹乱に
有効利用することが可能となった。つまり、ハッシュ関
数の計算において乗算や巡回シフト計算が利用されるこ
ととなり、ハッシュ関数の計算を著しく向上させること
が可能となった。
【0027】(3) 前記の従来例では、初期値2504は
最初にパラメータとして用いられるとそれ以降何ら処理
には関与しなかった。これに対し、本発明では、最初に
パラメータとして用いられた初期値2504は、後程、メッ
セージ2501が入力されるのと同じ入力部の方へ再度入力
されるようにした。これにより、異なった初期値に対し
て同じハッシュ値が導かれるような初期値の衝突が起こ
りにくいようにした。
【0028】(4) 前記の従来例では、M12502、M225
03等のメッセージの各区分は一旦処理されるとそれ以降
何ら処理には関与しなかった。これに対し、本発明で
は、一度処理されたメッセージの各区分は、後程、同じ
入力部の方へ再度入力されるようにした。これにより、
異なったメッセージに対して同じハッシュ値が導かれる
ようなメッセージの衝突が起こりにくいようにした。
【0029】なお、本発明の方法は、ソフトウエア(コ
ンピュータプログラム)により実現されるものであり、
そのプログラムはハードディスク装置などの記録媒体に
保存され、また、ROM、CD−ROM、フレキシブル
ディスク等の可搬性の記録媒体に格納された形で流通し
うる。
【0030】
【発明の実施の形態】以下、本発明の好適な実施の形態
について、詳細に説明する。
【0031】図1は本発明の第一の実施の形態を示す図
であり、メッセージ2501がハッシュ関数101に入力され
ると、データ拡大部102において、「メッセージと初期
値の混合」処理103が実施された後、「上記混合データ
のLブロック毎K回繰り返し伸長」処理104が実施され拡
大データ107が出力される。次に、拡大データ107を64ビ
ット毎の長さに区切って、64ビットの第1区分E1108、64
ビットの第2区分E2109、・・・というように分割し、単
射拡大部105に入力する。単射拡大部105においては、25
6ビットの初期値110をパラメータとして64ビットの第1
区分E1108に対して単射拡大105を施すことにより256ビ
ットの中間出力を得る。次に、その中間出力をパラメー
タとして64ビットの第2区分E2109に対して単射拡大105
を施すことにより256ビットの中間出力を得る。・・・
という処理を繰り返し最後に出てきた256ビットの中間
出力が求めるハッシュ値H111となる。
【0032】図2は図1における「メッセージと初期値の
混合」処理103の詳細を示したものである。「メッセー
ジと初期値の混合」処理103には初期値110とメッセージ
2501が入力される。初期値110は4個の64ビットデータブ
ロックI1201, I2202, I3203,I4204がこの順に連なった
ものである。先ず、パディング処理220においては、予
め設定されている整数Lを参照して、メッセージ2501は
その長さに256加えた数値がL×64の整数倍になるように
データが接続される。すなわち、 (1) メッセージ2501の長さに256加えた数値が丁度L×64
の整数倍であった場合、メッセージの後部にビット"
1"、および、 L×64−1個のビット"0"をこの順番につな
げる。
【0033】(2) メッセージ2501の長さに256加えた数
値がL×64ビットの整数倍でない場合、メッセージの後
部にビット"1"、および、ビット"0"をいくつか(0個から
L×64−2個の間)この順番につなげることによって、全
体の長さが丁度L×64ビットの整数倍になるようにす
る。
【0034】メッセージ2501は、このパディング後に、
N個の64ビットデータブロックM1205, M2206, M3207, M4
208, M5209, …がこの順に連なったデータ216となる。
処理217にこのデータ216が入力されると、M1→ D1, I1
→ D2, M2→ D3, I2→ D4, M3→ D5, I3→ D6, M4
D7, I4→ D8, M5→ D9, M6→ D10, M7→ D11,…という
データの置き換えが行われ、置き換えた結果としてのN
+4個の64ビットデータブロックD1210, D2211, D3212,
D4213, D5214, …がこの順に連なったものが中間拡大デ
ータ215として出力される。この中間拡大データ215の長
さは丁度L×64ビットの整数倍となる。
【0035】図3は図1における「上記混合データのLブ
ロック毎K回繰り返し伸長」処理104の詳細フローを示し
たものである。図3においては、次の処理が行われる。
【0036】ステップ301:はじめ。
【0037】ステップ302:図2の処理において求めた
中間拡大データD1, D2,・・・を入力する。
【0038】ステップ303:i=1, j=0と設定する。
【0039】ステップ304:m=(i−(i(mod L・K)))/K+
((i−1)(mod L))+1 ステップ305:Ei=Dm ステップ306:Eiを出力する。
【0040】ステップ307:Dmは最後の入力データか?
もし、そうであればステップ308へ進む。もし、そうで
なければ、ステップ310へ進む。
【0041】ステップ308:j=j+1 ステップ309:j>Kか?もし、そうであれば、ステップ3
11に進む。もし、そうでなければ、ステップ310に進
む。
【0042】ステップ310:i=i+1。ステップ304に戻
る。
【0043】ステップ311:おわり。
【0044】図3の処理を実行することにより、中間拡
大データD1, D2,・・・がLブロック毎K回繰り返すよう
な形に伸長され、拡大データE1, E2,・・・として出力
される。拡大データE1, E2,・・・の長さは中間拡大デ
ータD1, D2,・・・の長さのK倍となる。
【0045】図4は図1における単射拡大部105の詳細フ
ローを示したものである。図4においては、次の処理が
行われる。
【0046】ステップ401:はじめ。
【0047】ステップ402:256ビットの初期値を入力
し、Hとする。
【0048】ステップ403:i=1とする。
【0049】ステップ404:図3の出力である拡大デー
タのうち、第i番目の64ビットブロックEiを入力する。
【0050】ステップ405: Eiに対して、64ビット→96
ビットの単射拡大を行う。この結果、96ビットのデータ
を得る。
【0051】ステップ406:得られた96ビットのデータ
に対して、96ビット→128ビットの単射拡大を行う。こ
の結果、128ビットのデータを得る。
【0052】ステップ407:得られた128ビットのデータ
に対して、128ビット→256ビットの単射拡大を行う。こ
の結果得た256ビットのデータをHとする。
【0053】ステップ408: Eiは最後の入力データか?
もし、そうであれば、ステップ410へ進む。もし、そう
でなければ、ステップ409へ進む。
【0054】ステップ409:i=i+1とする。ステップ40
4へ戻る。
【0055】ステップ410:256ビットのデータHを出力
する。
【0056】ステップ411:おわり。
【0057】図4の処理の結果得られる出力値Hが求める
ハッシュ値H111である。
【0058】図5は図4における「64ビット→96ビットの
単射拡大」ステップ405の詳細フローを示したものであ
る。図5においては、次の処理が行われる。
【0059】ステップ501:はじめ。
【0060】ステップ502:64ビットデータブロックEi
を入力し、Eiの上位32ビットをX1、下位32ビットをY1
する。同様に、256ビットデータブロックHを入力し、先
頭から32ビット毎に分割し、8個の32ビットデータH1, H
2,・・・, H8とする。
【0061】ステップ503:X2=X1+(Y1+H1)2, Y2=Y1
を計算する。この結果、X2は64ビット、Y2は32ビットの
データとなる。
【0062】ステップ504:X2、Y2を出力する。
【0063】ステップ505:おわり。
【0064】図5の処理により、64ビットの入力データE
iが、64ビットのX2、および、32ビットのY2の合計96ビ
ットに伸長されて出力される。なお、ステップ503の処
理において、 X1、Y1→ X2、Y2は単射拡大である。なん
となれば、出力空間(96ビット)は入力空間(64ビット)
より長く、かつ、X2、Y2が与えられたとき、X1=X2−(Y
2+H1)2、Y1=Y2により、 X1、Y1が一意に定まるからで
ある。
【0065】図6は図4における「96ビット→128ビット
の単射拡大」ステップ406の詳細フローを示したもので
ある。
【0066】ステップ601:はじめ。
【0067】ステップ602:図5で得られたX2、Y2を入力
する。また、H1、H2、H3、H4、H5、H6、H7、H8を入力す
る。
【0068】ステップ603:X2の上位32ビットをXH、下
位32ビットをXLとする。
【0069】ステップ604:以下の計算を順番に行う。
【0070】A=rot5(XL+H2+1) B=A+(XHVH3)+1 C=B+rot12(B)+1 D=XH+(H4 XOR C)+1 E=C・D+Y2 F=X2+E+(H5‖H6) X3=E+F+(H7‖H8) Y3=F ここに、rotT(U)は数値データUを上位側へTビット巡
回シフトすることによって得られるデータを示す。例え
ば、rot2(110000)は000011となる。ここで、数値データ
の左側が上位側である。また、XORはビット毎の排他的
論理和を示す(図面では丸印の中に”+”を有する記号
で示す)。例えば、110010 XOR 011001=101011であ
る。+は数の加算を示す。ただし、最上位ビットの計算
において桁上げが生じた場合は、桁上げ部分を無視す
る。例えば、101101+100100=010001となる。
【0071】なお、‖はデータの接合を表わす。例え
ば、101101 ‖ 100100 = 101101100100となる。
【0072】ステップ605:X3、Y3を出力する。
【0073】ステップ606:おわり。
【0074】図6の処理により、64ビットの入力データX
2、および、32ビットのY2が、64ビットのX3、および、6
4ビットのY3の合計128ビットに伸長されて出力される。
なお、ステップ604の処理は、ステップ503と同様に単射
拡大となっている。
【0075】図7は図4における「128ビット→256ビット
の単射拡大」407の詳細フローを示したものである。
【0076】ステップ701:はじめ。
【0077】ステップ702:図6で得られたX3、Y3を入力
する。また、図5で得られたH1、H2、H3、H4、H5、H6、H
7、H8を入力する。
【0078】ステップ703: X3の上位32ビットをXH、下
位32ビットをXLとする。
【0079】ステップ704: Y3の上位32ビットをYH、下
位32ビットをYLとする。
【0080】ステップ705:以下の処理を行う。
【0081】 K1‖K2=((XH XOR H3)‖(XH XOR H4))+(H7‖H8) K3‖K4=((XL XOR H1)‖(XL XOR H2))+(H5‖H6) K5‖K6=((YH XOR H7)‖(YH XOR H8))+(H2‖H1) K7‖K8=((YL XOR H5)‖(YL XOR H6))+(H4‖H3) ステップ706:K1‖K2‖K3‖K4‖K5‖K6‖K7‖K8→ H ステップ707:Hを出力。
【0082】ステップ708:おわり。
【0083】図7の処理により、64ビットの入力データX
3、および、64ビットのY3が、256ビットのHに伸長され
て出力される。なお、ステップ705は、ステップ503と同
様に単射拡大となっている。
【0084】図8は本発明の第2の実施の形態を示す図で
あり、図1とは初期値802、ハッシュ値H804、「メッセー
ジと初期値の混合」処理801、単射拡大部803が異なる。
【0085】(1) 図1では、初期値110の長さは256ビッ
トであった。図8では、初期値802の長さは80ビットとな
る。
【0086】(2) 図1では、ハッシュ値H111の長さは256
ビットであった。図8では、ハッシュ値H804の長さは80
ビットとなる。
【0087】(3) 図1では、「メッセージと初期値の混
合」処理103の詳細は図2のとおりであった。図8では、
「メッセージと初期値の混合」処理801は図9のとおりと
なる。すなわち、「メッセージと初期値の混合」処理80
1には初期値802とメッセージ2501が入力される。初期値
802は64ビットデータブロックI1901と16ビットデータブ
ロックI2902がこの順に連なったものである。メッセー
ジ2501はパディング処理220により、N個の64ビットデー
タブロックM1205, M2206, M3207, M4208, M5209, … が
この順に連なったものに変換される。処理903にこれら
のデータが入力されると、M1→ D1, I1→ D2, M2→ D3,
I2‖I2‖I2‖I2→ D4, M3→ D5, M4→ D6, M5→ D7, M
6→ D8, M7→ D9,… というデータの置き換えが行わ
れ、置き換えた結果としてのN+2個の64ビットデータブ
ロックD1211, D2211, D3212, D4213, D5214,…がこの順
に連なったものが中間拡大データ215として出力され
る。
【0088】(4) 図1では、単射拡大部105の処理は図4
のとおりであった。図8では、単射拡大部803の処理は図
10のとおりとなる。すなわち、ステップ1001:はじめ。
【0089】ステップ1002:80ビットの初期値を入力
し、Hとする。
【0090】ステップ1003:i=1とする。
【0091】ステップ1004:図3の出力である拡大デー
タのうち、第i番目の64ビットブロックEiを入力する。
【0092】ステップ1005: Eiに対して、64ビット→6
4ビットの単射変換を行う。この結果、80ビットのデー
タを得る。
【0093】ステップ1006:得られた80ビットのデータ
に対して、64ビット→80ビットの単射拡大を行う。この
結果、80ビットのデータを得る。この結果得た80ビット
のデータをHとする。
【0094】ステップ1007: Eiは最後の入力データか
?もし、そうであれば、ステップ1009へ進む。もし、そ
うでなければ、ステップ1008へ進む。
【0095】ステップ1008:i=i+1とする。ステップ1
004へ戻る。
【0096】ステップ1009:80ビットのデータHを出力
する。
【0097】ステップ1010:おわり。
【0098】図10の処理の結果得られる出力値Hが求め
るハッシュ値H804である。
【0099】図11は図10における「64ビット→80ビット
の単射拡大」1005の詳細フローを示したものである。図
11においては、次の処理が行われる。
【0100】ステップ1101:はじめ。
【0101】ステップ1102:64ビットデータブロックEi
を入力し、 Eiの上位32ビットをX1、下位32ビットをY1
とする。同様に、80ビットデータブロックHを入力し、
先頭から32ビット、32ビット、16ビットに分割し、3個
のデータH1, H2, H3とする。
【0102】ステップ1103:X2=X1+(Y1+H1)2 (mod 2
32), Y2=Y1を計算する。ここで、X (mod 232)は、Xを2
32で割った余りを示す。この結果、X2は32ビット、Y2
32ビットのデータとなる。
【0103】ステップ1104:X2、Y2を出力する。
【0104】ステップ1105:おわり。
【0105】図11の処理により、64ビットの入力データ
Eiが、32ビットのX2、および、32ビットのY2の合計64ビ
ットに変換されて出力される。なお、ステップ1103の処
理において、 X1、Y1→ X2、Y2は単射である。なんとな
れば、X2、Y2が与えられたとき、X1=X2−(Y2+H1)2 (m
od 248)、Y1=Y2により、 X1、Y1が一意に定まるからで
ある。
【0106】図12は図10における「64ビット→80ビット
の単射拡大」1006の詳細フローを示したものである。
【0107】ステップ1201:はじめ。
【0108】ステップ1202:図11で得られたX2、Y2を入
力する。また、H1、H2、H3を入力する。
【0109】ステップ1203:以下の計算を順番に行う。
【0110】A=rot5(X2+H2+1) B=A+(X2 XOR (H3‖ H3)+1 C=rot13(B+H1) D=C+(B∨H2)+1 E=D2+Y2 (mod 248) F=X2+H3+E (mod 232) X3=E+F+(H1‖ H2) (mod 248) Y3=F ステップ1204:X3、Y3を出力する。
【0111】ステップ1205:おわり。
【0112】図12の処理により、32ビットの入力データ
X2、および、32ビットのY2が、32ビットのX3、および、
48ビットのY3の合計80ビットに伸長されて出力される。
なお、ステップ1203の処理は、単射拡大となっている。
【0113】上記、第2の実施の形態により、単射拡大
を用いて80ビットの出力を生成するハッシュ関数を構成
することができた。
【0114】同様に、単射拡大を用いることにより64ビ
ット以上の任意の長さの出力を生成するハッシュ関数を
構成することができる。
【0115】図13は、本発明の第3の実施の形態を示す
図である。図13において、暗号装置1311に任意長のデー
タ鍵1302と128ビットの平文1305が入力され、128ビット
の暗号文1310が出力される。ハッシュ関数h1301は図1に
示したハッシュ関数と同じものであり、任意長のデータ
鍵を入力して、256ビットのハッシュ値を生成してそれ
をワーク鍵1304とするものである。システム鍵1303はハ
ッシュ関数h1301の初期値として与えられる。256ビット
のワーク鍵は、8個の32ビットデータH1、H2、・・・、H
8に分割される。128ビットの平文1305は、ワーク鍵1304
のうち、H8を除いた7個の32ビットデータH1〜H7を鍵と
して関数π1306により変換される。さらに、この変換結
果はワーク鍵1304のうち、H1を除いた7個の32ビットデ
ータH2〜H8を鍵として関数π1307により変換される。・
・・というように処理が繰り返され、最後に、ワーク鍵
1304のうち、H7を除いた7個の32ビットデータH8〜H6
鍵として関数π1309により変換される。この結果、128
ビットの暗号文が出力される。
【0116】図14は、図13における関数π1306の処理フ
ローを示す。
【0117】ステップ1401:はじめ。
【0118】ステップ1402:2個の64ビットデータX1、Y
1を入力。7個の32ビットデータH1〜H7を入力。
【0119】ステップ1403:X1の上位32ビットをXHとす
る。X1の下位32ビットをXLとする。
【0120】ステップ1404:以下の計算を順番に行う。
【0121】A=rot5(XL+H1+1) B=A+(XHVH2)+1 C=B+rot12(B)+1 D=XH +(H1XOR C)+1 E=C・D+Y1 F= X1+E+(H4‖H5) X2=E+F+(H6‖H7) Y2=F ステップ1405:X2、Y2を出力する。
【0122】ステップ1406:おわり。
【0123】図14の処理により、64ビットの入力データ
X1、および、64ビットのY1が、64ビットのX2、および、
64ビットのY2の合計128ビットに変換されて出力され
る。この関数π:X1‖Y1→ X2‖Y2の処理は全単射であ
る。つまり、出力X2‖Y2から入力X1‖Y1への逆変換π-1
が存在する: (1) X2‖Y2をπ-1への入力とする。
【0124】(2) 以下の計算を順番に行う。
【0125】F =Y2 E=X2−F−(H6‖H7) X1= F−E−(H4‖H5) XH‖XL=X1 A=rot5(XL+H1+1) B=A+(XHVH2)+1 C=B+rot12(B)+1 D=XH+(H3 XOR C)+1 Y1=E−C・D (3) X1‖Y1をπ-1からの出力とする。
【0126】他の関数π1307〜1309についても、同様の
処理が行われる。これにより、図13において生成される
暗号文1310は、π-1を使った逆変換により元の平文に復
号することが可能になる。
【0127】なお、図13の実施の形態においては、関数
fの繰り返し回数nはn=8としたが、一般に、nの値を外
部から与えるようにして、nを任意の正の整数に変更で
きるようにしてもよい。
【0128】図15は、本発明の第4の実施の形態を示す
図である。図15において、マスキング装置1501に128ビ
ットの共通鍵1502と伸長データ1503が入力される。伸長
データ1503は共通鍵1502をN個つなげたものである。マ
スキング装置1601内においては、乱数発生器1508により
乱数1521が生成される。乱数1521と共通鍵1502をつなげ
て得られるデータがハッシュ関数h1509に入力され、そ
の出力値がワーク鍵1524となる。伸長データ1503のう
ち、最初の128ビットのデータである第1区分1504が入
力されると、ワーク鍵1524 の一部のデータをパラメー
タとしてπ関数1513により変換され128ビットのワーク
鍵1525となる。ここで、π関数1513は図14に示したよう
な処理を行う。後で述べるπ関数1513, 1518, 1519につ
いても同様である。ワーク鍵1525は、ワーク鍵1524 の
一部のデータをパラメータとしてπ関数1514により変換
され128ビットのH11522となる。伸長データ1503のう
ち、次の128ビットの第2区分1505が入力されると、ワー
ク鍵1525をパラメータとしてπ関数1518により変換され
128ビットのワーク鍵1526となる。ワーク鍵1526は、ワ
ーク鍵1525をパラメータとしてπ関数1519により変換さ
れ128ビットのH21523となる。・・・というように伸長
データ1503がすべて変換され、マスキングデータ1520が
出力される。
【0129】第4の実施の形態においては、マスキング
データ1502は共通鍵1502を伸長させたデータと見ること
ができる。また、マスキングデータ1502は共通鍵1502に
よって伸長データ1503を暗号化したデータと見ることも
できる。実際、図15と逆の処理を行うことにより、共通
鍵1502とマスキングデータ1502を入力して、伸長データ
1503を復号することができる。
【0130】なお、第4の実施の形態では、共通鍵1502
の長さは128ビットとしたが、一般に任意の長さにして
もよい。また、第4の実施の形態では、伸長データ1503
の各データブロック1504、1505、・・・に対してπ関数
は各2回作用させるようにしたが、一般にN回作用させ
てもよい。
【0131】図16は、本発明の第5の実施の形態を示す
図である。図16において、暗号装置1601に楕円暗号にお
けるパラメータであるベースポイントP1602と公開鍵Q16
03、および、平文1604が入力される。
【0132】ここで、楕円暗号とは、楕円曲線、 y2=x3+ax+b の上の2点(x1, y1)、(x2, y2)の加算(x1, y1)+(x2,
y2)や整数倍演算k(x1, y1)などを定義することにより生
成される公開鍵暗号のことである。ベースポイントP160
2や公開鍵Q1603も上記の楕円曲線上の点であり、後で述
べる秘密鍵d1802との間で次の関係を満たす。
【0133】Q=dP 暗号装置1601内においては、乱数生成機能1607により乱
数kが生成される。そして、整数倍演算機能1608に該乱
数kとベースポイントP1602が入力され、R=kPが計算さ
れ、R1616が出力される。整数倍演算機能1609には、該
乱数kと公開鍵Q1603が入力され、(x, y)=kQが計算さ
れ、このうちのx座標の数値xが出力される。
【0134】番号生成機能1610はシーケンス番号「1」
を生成し、このシーケンス番号「1」と前記数値xが接続
されて得られるデータに対して、ハッシュ関数h1611は
ハッシュ値を生成し、出力する。このハッシュ値を鍵と
して、圧縮・暗号化機能1612は、平文1604のうちの最初
のNビット1605を圧縮・暗号化する。圧縮・暗号化され
た結果はc11618として出力される。
【0135】番号生成機能1613はシーケンス番号「2」
を生成し、このシーケンス番号「2」と前記数値xが接続
されて得られるデータに対して、ハッシュ関数h1614は
ハッシュ値を生成し、出力する。このハッシュ値を鍵と
して、圧縮・暗号化機能1614は、平文1604のうちの次の
Nビット1606を圧縮・暗号化する。圧縮・暗号化された
結果はc21619として出力される。・・・という処理を
繰り返して、平文1604すべてが変換される。その結果、
暗号文1616が得られる。
【0136】図17は、図16のうち圧縮・暗号化機能1612
の詳細を示す。圧縮・暗号化機能1701内においては、鍵
1705が入力されると、拡張機能1706は鍵1705を複数個コ
ピーし、それらをつなぎ合わせたものを、ワーク鍵1723
として出力する。最初のNビット1702のうち、第1区分1
703が入力されると、ワーク鍵1723の一部のデータをパ
ラメータとして圧縮(換字)処理1707が施され、128ビ
ットの圧縮データ1708と端数1709が出力される。圧縮
(換字)処理1707としては、例えば、ハフマン圧縮が用
いられる。後で述べる圧縮(換字)処理1713についても
同様である。128ビットの圧縮データ1708は、ワーク鍵1
723 の一部のデータをパラメータとしてπ関数1710によ
り変換され、その変換結果が拡張機能1712において拡張
され、ワーク鍵1722として出力される。ここで、π関数
1710は図14に示したような処理を行う。後で述べるπ関
数1711, 1716, 1718についても同様である。前記π関数
1710の出力は、ワーク鍵1723 の一部のデータをパラメ
ータとしてπ関数1711により変換され128ビットのg1172
0となる。平文1702のうち、第2区分1704が入力される
と、ワーク鍵1722の一部をパラメータとして圧縮(換
字)処理1713が施され、128ビットの圧縮データ1714と
端数1715が出力される。端数1709と圧縮データ1714をつ
なげたデータの長さが128ビットとなる。端数1709と圧
縮データ1714をつなげたデータは、ワーク鍵1722の一部
をパラメータとしてπ関数1716により変換され、その
変換結果が拡張機能1717において拡張される。前記π関
数1716の出力は、ワーク鍵1722の一部のデータをパラメ
ータとしてπ関数1718により変換され128ビットのg2172
1となる。・・・という処理を繰り返して最初のNビット
1702をすべて変換すると、変換結果としてc11719が得ら
れる。
【0137】第5の実施の形態においては、平文1604は
公開鍵Q1603を用いて、暗号文1616に変換されたという
意味で、従来のRSAのような公開鍵暗号と同じである。
しかし、ハフマン圧縮等により圧縮が効くような通常の
平文に対しては、暗号文1616の長さが平文1604 の長さ
より短くなるという点で従来の公開鍵暗号とは異なる。
第5の実施の形態では、図17において、128ビットの圧縮
データ1708、端数1709と圧縮データ1714、・・・に対し
てπ関数は各2回作用させるようにしたが、一般にN回
作用させてもよい。
【0138】図18は、本発明の第6の実施の形態を示す
図である。図18において、復号装置1801に楕円暗号にお
けるパラメータである秘密鍵1802、および、暗号文1803
が入力される。
【0139】復号装置1801内においては、秘密鍵1802、
および、暗号文1803のうちのR1804が整数倍演算機能180
7に入力され、(x, y)=dRが計算され、このうちのx座標
の数値xが出力される。
【0140】番号生成機能1808はシーケンス番号「1」
を生成する。ハッシュ関数h1809は、このシーケンス番
号「1」と前記数値xがつなぎ合わされたデータに対し
て、ハッシュ値を生成し、出力する。このハッシュ値を
鍵として、復号・伸長機能1810は、暗号文1803のうちの
c11805を復号・伸長する。復号・伸長された結果は最
初のNビット1815として出力される。
【0141】番号生成機能1811はシーケンス番号「2」
を生成する。ハッシュ関数h1812、このシーケンス番号
「2」と前記数値xがつなぎ合わされたデータに対してハ
ッシュ値を生成し、出力する。このハッシュ値を鍵とし
て、復号・伸長機能1813は、暗号文1803のうちのc21806
を復号・伸長する。復号・伸長された結果は次のNビッ
ト1816として出力される。・・・という処理を繰り返し
て、暗号文1803すべてが変換される。その結果、平文18
14が得られる。
【0142】図19は、図18のうち復号・伸長機能1810の
詳細を示す。復号・伸長機能1810内においては、鍵1905
が入力されると、拡張機能1906は鍵1905を複数個コピー
し、それらをつなぎ合わせたものを、ワーク鍵1923とし
て出力する。c11902のうち、g11903が入力されると、ワ
ーク鍵1923の一部のデータをパラメータとしてπ-1関数
1907により変換され、その変換結果が拡張機能1909にお
いて拡張され、ワーク鍵1924として出力される。ここ
で、π-1関数1907は図17におけるπ関数1711の逆関数で
ある。つまり、同じパラメータをπ関数1711とπ-1関数
1907に設定した場合に、データmをπ関数1711によって
変換して得られるデータπ(m)をさらに、π-1関数1907
によって変換を加えると元のデータmに戻る。すなわ
ち、 m=π-1(π(m)). 前記π-1関数1907の出力は、ワーク鍵1923 の一部のデ
ータをパラメータとしてπ-1関数1910により変換され、
出力される。その出力結果は、伸長(換字)機能1911に
より、ワーク鍵1923の一部のデータをパラメータとして
伸長され、その結果が伸長データ1912、および、端数19
13となる。伸長データ1912は第1区分1921として出力さ
れる。
【0143】ここで、伸長(換字)機能1911は図17にお
ける圧縮(換字)機能1707の逆変換である。つまり、同
じパラメータを圧縮(換字)機能1707と伸長(換字)機
能1911に設定した場合に、データmを圧縮(換字)機能1
707によって変換して得られるデータをさらに、伸長
(換字)機能1911によって変換を加えると元のデータに
戻る。
【0144】c11902のうち、g21904が入力されると、ワ
ーク鍵1924の一部のデータをパラメータとしてπ-1関数
19141により変換され、その変換結果が拡張機能1915に
おいて拡張される。
【0145】前記π-1関数1914の出力は、ワーク鍵1924
の一部のデータをパラメータとしてπ-1関数1916により
変換され、出力される。その出力結果は、伸長(換字)
機能1917により、ワーク鍵1924の一部のデータをパラメ
ータとして伸長され、その結果が伸長データ1918、およ
び、端数1919となる。前の処理で得られた端数1913と今
回の処理で得られた伸長データ1912をつなぎ合わせたデ
ータは第2区分1922として出力される。・・・という処
理を繰り返してc11902をすべて変換すると、最初のNビ
ット1920が得られる。
【0146】第6の実施の形態においては、暗号文1803
は秘密鍵d1802を用いて、平文1814に復号変換されたと
いう意味で、従来のRSAのような公開鍵暗号と同じであ
る。しかし、ハフマン圧縮等により圧縮がなされた暗号
文に対しては、復号前よりも復号後の方がデータの長さ
が長くなるという点で従来の公開鍵暗号とは異なる。
【0147】図20は、本発明の第7の実施の形態を示す
図である。図20において、暗号装置2001に楕円暗号にお
けるパラメータであるベースポイントP2002と公開鍵Q20
03、および、平文2004が入力される。
【0148】暗号装置2001内においては、乱数生成機能
2007により乱数kが生成される。そして、整数倍演算機
能2008に該乱数kとベースポイントP2002が入力され、R
=kPが計算され、暗号文R2016が出力される。整数倍演
算機能2009には、該乱数kと公開鍵Q2003が入力され、
(x, y)=kQが計算され、このうちのx座標の数値xが出力
される。
【0149】前記数値xに対して、ハッシュ関数h2001は
ハッシュ値を生成し、鍵2020として出力する。鍵2020を
鍵として、圧縮・暗号化機能2012は、平文2004のうちの
最初のNビット2005を圧縮・暗号化する。圧縮・暗号化
された結果はc12018として出力される。
【0150】鍵2020に対して、ハッシュ関数h2014はハ
ッシュ値を生成し、鍵2021として出力する。この鍵2021
を鍵として、圧縮・暗号化機能2015は、平文2004のうち
の次のNビット2006を圧縮・暗号化する。圧縮・暗号化
された結果はc22019として出力される。・・・という処
理を繰り返して、平文2004すべてが変換される。その結
果、暗号文2016が得られる。
【0151】第7の実施の形態においては、平文2004は
公開鍵Q2003を用いて、暗号文2016に変換されたという
意味で、従来のRSAのような公開鍵暗号と同じである。
しかし、ハフマン圧縮等により圧縮が効くような通常の
平文に対しては、暗号文2016の長さが平文2004の長さよ
り短くなるという点で従来の公開鍵暗号とは異なる。
【0152】
【発明の効果】本発明は次のような格別な効果を奏す
る。
【0153】(1) 高速なハッシュ関数を実現できる。
【0154】ハッシュ関数の処理の過程において、図6
に示すように32ビットのデータに対する巡回シフト処理
(A=rot5(XL+H2+1)、 C=B+rot12(B)+1の処理)と3
2ビット同士の積演算(E=C・D+Y2の処理)とを併用し
ている。これは、データの撹乱を効率よく進めるうえで
有効である。なんとなれば、巡回シフトは一回の処理で
32ビットの転置を実現するが、最近のマイクロプロセッ
サ、例えば、インテル社のペンティアムは1サイクルで
この巡回シフトを完了する。100MHzのペンティアムなら
ば、1秒間に1億回の巡回シフトを行う。かつての20MHz
の68020プロセッサだと1秒間に250万回程度しか巡回シ
フトができなかったのに対して40倍の高速化となってい
る。また、32ビット同士の積演算、すなわち、32ビット
×32ビット→64ビットは、出力の各1ビットずつがすべ
ての入力ビットの影響を受けるというデータ撹乱度を高
めるうえで非常に有効な換字である。100MHzのペンティ
アムならば、1秒間に1千万回の積演算を行う。かつての
20MHzの68020プロセッサだと1秒間に50万回程度しか積
演算ができなかったのに対して20倍の高速化となってい
る。このような転置・換字混合の処理を行ううえで、最
近の技術革新により特に有利になっているマイクロプロ
セッサの基本演算を使うようにしたのが本発明の特徴の
一つである。これにより、高速なハッシュ関数の実現が
可能になった。ちなみに、従来、換字処理でよく用いら
れていた32ビット同士の加算については、100MHzのペン
ティアムならば、1秒間に1億回の加算を行う。かつての
20MHzの68020プロセッサだと1秒間に1千万回
程度の加算ができたのに対して10倍の高速化にしかなっ
ていない。乗算は加算32回分とシフト32回分のデータ撹
乱効果があることを考えると、ペンティアムの時代にな
って、加算よりも乗算を用いる有利性が増したといえ
る。
【0155】(2) 安全な(セキュリティの高い)ハッ
シュ関数を実現できる。
【0156】(a) 図21の従来例では、換字・転置繰り
返し処理2505へ入力されるメッセージ区分の長さと出力
される中間出力の長さを比べると、入力の長さは出力の
長さと等しいか(「ブロック暗号を利用したハッシュ関
数」)、入力の長さは出力の長さよりも長かった(「専
用ハッシュ関数」)。これに対して、本発明では、図1
の単射拡大部105に示されるように、メッセージの入力
単位の長さは出力の長さより短くし、かつ、入力値が異
なれば出力値も必ず異なるような単射拡大変換を行う処
理を含むようにした。これにより、MD5で問題となった
ような、換字・転置の繰り返し処理2505におけるメッセ
ージの衝突を避けることが比較的容易にできるようにな
った。
【0157】(3) 前記の従来例では、初期値2504は最
初に処理されるとそれ以降何ら処理には関与しなかっ
た。これに対し、本発明では、図1に示すように、最初
に処理された初期値110は、データ拡大部102での処理を
経た後、単射拡大部105のメッセージの入力単位が入力
されるのと同じ入力部の方へ再度入力されるようにし
た。これにより、異なった初期値に対して同じハッシュ
値が導かれるような初期値の衝突が起こりにくいように
なった。
【0158】(4) 前記の従来例では、M12502、M22503
等のメッセージの各区分は一旦処理されるとそれ以降何
ら処理には関与しなかった。これに対し、本発明では、
図1の処理104に示すように、一般にK回、同じ入力部の
方へ再度入力されるようにした。これにより、異なった
メッセージに対して同じハッシュ値が導かれるようなメ
ッセージの衝突が起こりにくいようになった。
【0159】(5) 従来、公開鍵暗号と共通鍵暗号、お
よび、データ圧縮は別々の機能として提供されていた。
つまり、従来、メッセージを圧縮して暗号化通信をした
い場合には、(a) 乱数生成により生成したセッション鍵
を公開鍵暗号機能により暗号化して、受信者に配送す
る、(b) メッセージをデータ圧縮機能により圧縮する、
(c) 圧縮したメッセージをセッション鍵と共通鍵暗号機
能により暗号化して受信者に送信するという処理を別々
に行っていた。これに対して、本発明では、公開鍵暗号
と共通鍵暗号、および、データ圧縮を分離できない形で
融合することによりこれら3つの機能を同時に効率よく
実現することを可能にした。
【図面の簡単な説明】
【図1】本発明の第一の実施の形態を示す256ビットハ
ッシュ関数の構成例を示す説明図である。
【図2】図1の256ビットハッシュ関数のうちメッセー
ジと初期値の混合処理の構成例を示す説明図である。
【図3】図1の256ビットハッシュ関数のうち混合デー
タのLブロック毎K回繰り返し伸長フローを示すフローチ
ャートである。
【図4】図1の単射拡大部の処理フローを示すフローチ
ャートである。
【図5】図4の単射拡大部の処理フローのうち64ビット
→96ビットの単射拡大処理フローを示すフローチャート
である。
【図6】図4の単射拡大部の処理フローのうち96ビット
→128ビットの単射拡大処理フローを示すフローチャー
トである。
【図7】図4の単射拡大部の処理フローのうち128ビット
→256ビットの単射拡大処理フローを示すフローチャー
トである。
【図8】本発明の第二の実施の形態を示す80ビットハッ
シュ関数の構成例を示す説明図である。
【図9】図8の80ビットハッシュ関数のうちメッセージ
と初期値の混合処理の構成例を示す説明図である。
【図10】図8の単射拡大部の処理フローを示すフロー
チャートである。
【図11】図10の単射拡大部の処理フローのうち64ビッ
ト→64ビットの単射処理フローを示すフローチャートで
ある。
【図12】図10の単射拡大部の処理フローのうち64ビッ
ト→80ビットの単射拡大処理フローを示すフローチャー
トである。
【図13】本発明の第三の実施の形態を示す128ビット
ブロック暗号の構成例を示す説明図である。
【図14】図13のブロック暗号のうち、π関数の詳細フ
ローを示すフローチャートである。
【図15】本発明の第四の実施の形態を示すマスキング
装置の構成例を示す説明図である。
【図16】本発明の第五の実施の形態を示す暗号装置の
構成例を示す説明図である。
【図17】図16の暗号装置のうち、圧縮・暗号化機能
の構成例を示す説明図である。
【図18】本発明の第六の実施の形態を示す復号装置の
構成例を示す説明図である。
【図19】図18の復号装置のうち、復号・伸長機能の
構成例を示す説明図である。
【図20】本発明の第七の実施の形態を示す暗号装置の
構成例を示す説明図である。
【図21】従来の装置構成を示す図である。
【符号の説明】
2501…メッセージ、101…ハッシュ関数、102…データ拡
大部、103…「メッセージと初期値の混合」処理、104…
「上記混合データのLブロック毎K回繰り返し伸長」処
理、107…拡大データ、108…64ビットの第1区分E1、109
…64ビットの第2区分E2、105…単射拡大部、110…256ビ
ットの初期値、111…ハッシュ値H

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】メッセージを逆変換困難なように変換する
    ハッシュ値生成方法であって、 メッセージを複数個のブロックに分割し、分割されたメ
    ッセージブロックを変換して得られるNビットの第1の
    中間データに対して乗算を行うステップと、 該乗算の結果得られる2×NビットのデータをNビットの
    第2の中間データとNビットの第3の中間データに分割
    するステップと、 該第2の中間データを変換して得られるデータに対して
    巡回シフト計算を行い、該第3の中間データを変換して
    得られるデータに対しても巡回シフト計算を行うステッ
    プと、 を含むことを特徴とするハッシュ値生成方法。
  2. 【請求項2】メッセージを逆変換困難なように変換する
    ハッシュ値生成方法であって、 メッセージを複数個に分割し、分割して得られたそれぞ
    れの分割メッセージに対して入力値が異なれば出力値も
    必ず異なり、かつ、入力値の長さよりも出力値の長さが
    長くなるような単射拡大変換を行うステップを含み、 ある分割メッセージに対する単射拡大変換は、他の分割
    メッセージに依存して変化することを特徴とするハッシ
    ュ値生成方法。
  3. 【請求項3】前記単射拡大変換を行うステップは、入力
    値を変換したものに対して、乗算を行うステップ、ある
    いは、それぞれシフト数が異なる複数個の巡回シフト計
    算を行うステップを含むことを特徴とする請求項2記載
    のハッシュ値生成方法。
  4. 【請求項4】前記複数個の分割メッセージのうち、ある
    分割メッセージの単射拡大変換は前記メッセージとは独
    立に設定される初期値をパラメータとして変化するよう
    になっており、また、別の分割メッセージの単射拡大変
    換は該初期値の単射拡大変換の結果をパラメータとして
    変化するようになっていることを特徴とする請求項2記
    載のハッシュ値生成方法。
  5. 【請求項5】前記複数個の分割メッセージのうち、第1
    の分割メッセージに対しては、単射拡大変換を行うステ
    ップを2回含み、そのうち、それぞれの単射拡大変換は
    第1の分割メッセージとは異なる第2の分割メッセージ
    の単射拡大変換の結果をパラメータとして変化すること
    を特徴とする請求項2記載のハッシュ値生成方法。
  6. 【請求項6】一定長のメッセージブロックを暗号変換し
    て一定長の暗号文ブロックを出力するブロック暗号化方
    法であって、 メッセージブロックを変換して得られるNビットの第1
    の中間データに対して乗算を行うステップと、 該乗算の結果得られる2×NビットのデータをNビットの
    第2の中間データとNビットの第3の中間データに分割
    するステップと、 該第2の中間データを変換して得られるデータに対して
    巡回シフト計算を行い、該第3の中間データを変換して
    得られるデータに対しても巡回シフト計算を行うステッ
    プを含むことを特徴とするブロック暗号化方法。
  7. 【請求項7】メッセージを逆変換困難なように変換する
    ハッシュ値生成装置であって、 メッセージを複数個のブロックに分割し、分割されたメ
    ッセージブロックを変換して得られるNビットの第1の
    中間データに対して乗算を行う手段と、 該乗算の結果得られる2×NビットのデータをNビットの
    第2の中間データとNビットの第3の中間データに分割
    する手段と、 該第2の中間データを変換して得られるデータに対して
    巡回シフト計算を行い、該第3の中間データを変換して
    得られるデータに対しても巡回シフト計算を行う手段
    と、 を含むことを特徴とするハッシュ値生成装置。
  8. 【請求項8】メッセージを逆変換困難なように変換する
    ハッシュ値生成装置であって、 メッセージを複数個に分割し、分割して得られたそれぞ
    れの分割メッセージに対して入力値が異なれば出力値も
    必ず異なり、かつ、入力値の長さよりも出力値の長さが
    長くなるような単射拡大変換を行う手段を含み、 ある分割メッセージに対する単射拡大変換は、他の分割
    メッセージに依存して変化することを特徴とするハッシ
    ュ値生成装置。
  9. 【請求項9】前記単射拡大変換を行う手段は、入力値を
    変換したものに対して、乗算を行う手段、あるいは、そ
    れぞれシフト数が異なる複数個の巡回シフト計算を行う
    手段を含むことを特徴とする請求項8記載のハッシュ値
    生成装置。
  10. 【請求項10】前記複数個の分割メッセージのうち、あ
    る分割メッセージの単射拡大変換は前記メッセージとは
    独立に設定される初期値をパラメータとして変化するよ
    うになっており、また、別の分割メッセージの単射拡大
    変換は該初期値の単射拡大変換の結果をパラメータとし
    て変化するようになっていることを特徴とする請求項8
    記載のハッシュ値生成装置。
  11. 【請求項11】前記複数個の分割メッセージのうち、第
    1の分割メッセージに対しては、単射拡大変換を行う手
    段を2回含み、そのうち、それぞれの単射拡大変換は第
    1の分割メッセージとは異なる第2の分割メッセージの
    単射拡大変換の結果をパラメータとして変化することを
    特徴とする請求項8記載のハッシュ値生成装置。
  12. 【請求項12】一定長のメッセージブロックを暗号変換
    して一定長の暗号文ブロックを出力するブロック暗号化
    装置であって、 メッセージブロックを変換して得られるNビットの第1
    の中間データに対して乗算を行う手段と、 該乗算の結果得られる2×NビットのデータをNビットの
    第2の中間データとNビットの第3の中間データに分割
    する手段と、 該第2の中間データを変換して得られるデータに対して
    巡回シフト計算を行い、該第3の中間データを変換して
    得られるデータに対しても巡回シフト計算を行う手段を
    含むことを特徴とするブロック暗号化装置。
  13. 【請求項13】メッセージを逆変換可能なように圧縮・
    暗号変換して暗号文を出力する圧縮・暗号化方法であっ
    て、 鍵を変換して得られるデータをパラメータとして、メッ
    セージの一部を圧縮変換する処理をした後、さらに単射
    変換を行い、その結果を暗号文の一部として出力する処
    理と、該単射変換の処理途中に得られる中間生成データ
    をパラメータとしてメッセージの別の一部を圧縮変換す
    ることを含み、該単射変換の過程においては、乗算を行
    う処理、および、巡回シフト計算を行う処理を含むこと
    を特徴とする圧縮・暗号化方法。
  14. 【請求項14】任意の長さの入力データを逆変換困難な
    ように任意の長さに変換するマスキングデータ生成方法
    であって、 該入力データと乱数データより生成されるデータのハッ
    シュ値を生成するステップと、 該ハッシュ値をパラメータとして該入力データの一部を
    単射変換し、その結果をマスキングデータの一部として
    出力するステップと、 該単射変換の途中に得られる中間生成データをパラメー
    タとして該入力データの一部を単射変換するステップ
    と、 を含むことを特徴とするマスキングデータ生成方法。
  15. 【請求項15】公開鍵と平文を入力とし、暗号文を出力
    とする公開鍵暗号化方法であって、 乱数生成ステップと、 該乱数生成ステップによって生成される乱数と該公開鍵
    を作用させて得られるデータをパラメータとして該平文
    の一部を圧縮または暗号化変換するステップと、 該圧縮または暗号化変換の途中に得られるデータをパラ
    メータとして該平文の他の一部を圧縮または暗号化変換
    するステップと、 を含むことを特徴とする公開鍵暗号化方法。
  16. 【請求項16】秘密鍵と暗号文を入力とし、平文を出力
    とする際、該暗号文の一部と該秘密鍵を作用させて得ら
    れるデータをパラメータとして該暗号文の他の一部を復
    号または伸長変換した後、該復号または伸長変換の途中
    で得られるデータをパラメータとして該暗号文のさらに
    他の一部を復号または伸長変換することを特徴とする請
    求項15記載の公開鍵暗号化方法。
  17. 【請求項17】公開鍵と平文を入力とし、暗号文を出力
    とする公開鍵暗号化方法であって、 乱数生成ステップと、 該乱数生成ステップによって生成される乱数と該公開鍵
    を作用させて得られるデータをハッシュ関数によってさ
    らに変換させたものをパラメータとして該平文の一部を
    圧縮または暗号化変換するステップと、 該圧縮または暗号化変換の途中に得られるデータをパラ
    メータとして該平文の他の一部を圧縮または暗号化変換
    するステップと、 を含むことを特徴とする公開鍵暗号化方法。
  18. 【請求項18】公開鍵と平文を入力とし、暗号文を出力
    とする公開鍵暗号化装置であって、 乱数生成手段と、 該乱数生成手段によって生成される乱数と該公開鍵を作
    用させて得られるデータをパラメータとして該平文の一
    部を圧縮または暗号化変換する手段と、 該圧縮または暗号化変換の途中に得られるデータをパラ
    メータとして該平文の他の一部を圧縮または暗号化変換
    する手段と、 を含むことを特徴とする公開鍵暗号化装置。
  19. 【請求項19】秘密鍵と暗号文を入力とし、平文を出力
    とする際、該暗号文の一部と該秘密鍵を作用させて得ら
    れるデータをパラメータとして該暗号文の他の一部を復
    号または伸長変換した後、該復号または伸長変換の途中
    で得られるデータをパラメータとして該暗号文のさらに
    他の一部を復号または伸長変換することを特徴とする請
    求項18記載の公開鍵暗号化装置。
  20. 【請求項20】公開鍵と平文を入力とし、暗号文を出力
    とする公開鍵暗号化装置であって、 乱数生成手段と、 該乱数生成手段によって生成される乱数と該公開鍵を作
    用させて得られるデータをハッシュ関数によってさらに
    変換させたものをパラメータとして該平文の一部を圧縮
    または暗号化変換する手段と、 該圧縮または暗号化変換の途中に得られるデータをパラ
    メータとして該平文の他の一部を圧縮または暗号化変換
    する手段と、 を含むことを特徴とする公開鍵暗号化装置。
JP8329741A 1996-12-10 1996-12-10 ハッシュ値生成方法および装置 Pending JPH10171350A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP8329741A JPH10171350A (ja) 1996-12-10 1996-12-10 ハッシュ値生成方法および装置
US08/986,390 US6141421A (en) 1996-12-10 1997-12-08 Method and apparatus for generating hash value
EP97121605A EP0848518A3 (en) 1996-12-10 1997-12-08 Method and apparatus for generating a hash value
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
JP8329741A JPH10171350A (ja) 1996-12-10 1996-12-10 ハッシュ値生成方法および装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2000056471A Division JP2000214779A (ja) 2000-01-01 2000-03-01 ハッシュ値生成方法および装置

Publications (1)

Publication Number Publication Date
JPH10171350A true JPH10171350A (ja) 1998-06-26

Family

ID=18224768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8329741A Pending JPH10171350A (ja) 1996-12-10 1996-12-10 ハッシュ値生成方法および装置

Country Status (3)

Country Link
US (1) US6141421A (ja)
EP (1) EP0848518A3 (ja)
JP (1) JPH10171350A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009069844A (ja) * 2004-08-12 2009-04-02 Cmla Llc セキュリティ強化のための転置データ変換
US8077861B2 (en) 2004-08-12 2011-12-13 Cmla, Llc Permutation data transform to enhance security
US8155310B2 (en) 2004-08-12 2012-04-10 Cmla, Llc Key derivation functions to enhance security
JP2014509755A (ja) * 2011-03-31 2014-04-21 イルデト ビー ヴイ 暗号ハッシュ関数の実行を保護する方法とシステム

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10340048A (ja) * 1997-06-06 1998-12-22 Hitachi Ltd ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
EP0936776B1 (en) 1998-02-13 2004-05-19 Hitachi, Ltd. A network system using a threshold secret sharing method
US6668375B1 (en) * 1999-12-15 2003-12-23 Pitney Bowes Inc. Method and system for providing build-to-order software applications
US6704730B2 (en) * 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US7620832B2 (en) * 2000-09-20 2009-11-17 Mips Technologies, Inc. Method and apparatus for masking a microprocessor execution signature
US6810398B2 (en) * 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US7006629B2 (en) * 2000-12-19 2006-02-28 International Business Machines Corporation Method and system for processing a data set
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7162621B2 (en) * 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7237097B2 (en) 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
DE10110049A1 (de) * 2001-03-02 2002-09-05 Bosch Gmbh Robert Verfahren und Vorrichtung zur Datenverschlüsselung bei der Programmierung von Steuergeräten
US6829355B2 (en) * 2001-03-05 2004-12-07 The United States Of America As Represented By The National Security Agency Device for and method of one-way cryptographic hashing
US7318145B1 (en) 2001-06-01 2008-01-08 Mips Technologies, Inc. Random slip generator
US8001054B1 (en) 2001-07-10 2011-08-16 American Express Travel Related Services Company, Inc. System and method for generating an unpredictable number using a seeded algorithm
US7151829B2 (en) * 2002-04-22 2006-12-19 International Business Machines Corporation System and method for implementing a hash algorithm
US7219211B1 (en) * 2002-11-19 2007-05-15 Juniper Networks, Inc. Precompute logic for software packet processing
JP4079319B2 (ja) * 2002-12-25 2008-04-23 インターナショナル・ビジネス・マシーンズ・コーポレーション 識別情報生成装置、識別情報解決装置及びこれらを用いた情報システム、並びに、これらの制御方法及びプログラム
US7593526B2 (en) * 2004-01-23 2009-09-22 Alcatel-Lucent Usa Inc. Method and apparatus for compressing rabin signatures
TW200615868A (en) * 2004-11-05 2006-05-16 Synaptic Lab Ltd A method of encoding a signal
TW200616407A (en) * 2004-11-05 2006-05-16 Cb Capital Man S A Methods of encoding and decoding data
KR101194837B1 (ko) * 2005-07-12 2012-10-25 삼성전자주식회사 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법
CA2651323C (en) 2006-05-05 2016-02-16 Hybir Inc. Group based complete and incremental computer file backup system, process and apparatus
US8086860B2 (en) * 2007-10-01 2011-12-27 Tata Consultancy Services Limited Method for preventing and detecting hash collisions of data during the data transmission
JP5297688B2 (ja) * 2008-05-09 2013-09-25 株式会社日立製作所 ベクトル秘匿型内積計算システム、ベクトル秘匿型内積計算方法及び暗号鍵共有システム
JP5862397B2 (ja) * 2012-03-22 2016-02-16 富士通株式会社 演算処理装置
US9231615B2 (en) * 2012-10-24 2016-01-05 Seagate Technology Llc Method to shorten hash chains in Lempel-Ziv compression of data with repetitive symbols
DE102015225651A1 (de) * 2015-12-17 2017-06-22 Robert Bosch Gmbh Verfahren und Vorrichtung zum Übertragen einer Software
US10255462B2 (en) 2016-06-17 2019-04-09 Arm Limited Apparatus and method for obfuscating power consumption of a processor
CN109634957B (zh) * 2018-11-19 2019-11-29 中国石油集团长城钻探工程有限公司 一种测井数据动态高效存取方法
CN114531284B (zh) * 2022-02-03 2024-02-09 百果园技术(新加坡)有限公司 数据加密方法、装置、电子设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764772A (en) * 1995-12-15 1998-06-09 Lotus Development Coporation Differential work factor cryptography method and system
US6269163B1 (en) * 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009069844A (ja) * 2004-08-12 2009-04-02 Cmla Llc セキュリティ強化のための転置データ変換
US8077861B2 (en) 2004-08-12 2011-12-13 Cmla, Llc Permutation data transform to enhance security
JP2012023764A (ja) * 2004-08-12 2012-02-02 Cmla Llc セキュリティ強化のための転置データ変換
US8155310B2 (en) 2004-08-12 2012-04-10 Cmla, Llc Key derivation functions to enhance security
US8737608B2 (en) 2004-08-12 2014-05-27 Cmla, Llc Exponential data transform to enhance security
JP2014509755A (ja) * 2011-03-31 2014-04-21 イルデト ビー ヴイ 暗号ハッシュ関数の実行を保護する方法とシステム
US9443091B2 (en) 2011-03-31 2016-09-13 Irdeto B.V. Method and system for protecting execution of cryptographic hash functions

Also Published As

Publication number Publication date
EP0848518A3 (en) 2001-01-17
US6141421A (en) 2000-10-31
EP0848518A2 (en) 1998-06-17

Similar Documents

Publication Publication Date Title
JPH10171350A (ja) ハッシュ値生成方法および装置
JP3992742B2 (ja) データブロックおよび鍵を非線形的に結合する暗号方法および装置
US6829355B2 (en) Device for and method of one-way cryptographic hashing
JP4712017B2 (ja) ストリーム暗号を利用したメッセージ認証コード生成方法とストリーム暗号を利用した認証暗号化方法及びストリーム暗号を利用した認証復号化方法
US5870470A (en) Method and apparatus for encrypting long blocks using a short-block encryption procedure
JP3225440B2 (ja) デジタル信号ブロックの変換装置およびその使用方法
US6370247B1 (en) Hash value generating method and device, data encryption method and device, data decryption method and device
AU767323B2 (en) Block encryption device using auxiliary conversion
US7860241B2 (en) Simple universal hash for plaintext aware encryption
JPH0863097A (ja) データを暗号化するための対称暗号化方法およびシステム
JP2002023622A (ja) 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体
US20040107341A1 (en) Parallelizable authentication tree for random access storage
JP4793268B2 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及び共通鍵ブロック暗号化プログラム
US20080232591A1 (en) Simple and efficient one-pass authenticated encryption scheme
WO1998031122A1 (en) A method and apparatus for generating secure hash functions
JPH0675525A (ja) 暗号通信装置
Masoodi et al. Symmetric algorithms I
JP2003516659A (ja) 1の補数暗号コンバイナ
JPH10340048A (ja) ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置
JP2000209195A (ja) 暗号通信システム
JP2000214779A (ja) ハッシュ値生成方法および装置
JPH09269727A (ja) 暗号化方法および暗号化装置
JPH1091066A (ja) 擬似ランダムビット列生成器及びそれを使用する暗号通信方法
JPH04335730A (ja) 暗号送信装置、暗号受信装置、暗号通信システム
JP2001142395A (ja) 拡大鍵生成装置、暗復号装置、拡大鍵生成方法、及び記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20031210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060411

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060612

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070320