JP3650611B2 - 暗号化及び復号化するためのプログラム - Google Patents
暗号化及び復号化するためのプログラム Download PDFInfo
- Publication number
- JP3650611B2 JP3650611B2 JP2002173223A JP2002173223A JP3650611B2 JP 3650611 B2 JP3650611 B2 JP 3650611B2 JP 2002173223 A JP2002173223 A JP 2002173223A JP 2002173223 A JP2002173223 A JP 2002173223A JP 3650611 B2 JP3650611 B2 JP 3650611B2
- Authority
- JP
- Japan
- Prior art keywords
- message
- encryption
- data
- key
- hybrid
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/30—Compression, e.g. Merkle-Damgard construction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Description
【0001】
【発明の属する技術分野】
メッセージを送信者から受信者に送付する通信を、機密保持性のない電気通信回線において安全に実行するための方法に関する。更に詳しくは、メッセージを暗号化アルゴリズムにより暗号化し、第三者の攻撃からメッセージを防御するための暗号化プログラムに関する。
【0002】
【従来の技術】
暗号の歴史において、共通鍵暗号方式は、数世紀にわたって使用されてきた。共通鍵暗号方式とは、例えば古典的にはメッセージの送信者と受信者のみがメッセージの入った箱の共通の鍵を持ち、途中で第三者にメッセージを見られるのを防ぐ通信方法である。コンピューターネットワークの発達した現在では、この共通鍵暗号方式は秘密メールの通信などにも用いられている。
【0003】
この場合、メッセージ中の文字は一般に8ビットの2進数によって表現され、従ってメッセージ文も2進数で表される。そして同じく2進数である共通鍵を使って、暗号化アルゴリズムによって暗号化される。即ち共通鍵から抽出される情報を用いて、置換、換字等の組合わせである暗号化アルゴリズムに従って暗号メッセージを生成する。
【0004】
一般的な暗号化方法においては、2進数である鍵の長さ(以下「鍵長」という)が長いほど暗号文の解読は困難となるが、共通鍵暗号化方式では、比較的短い鍵長で暗号を設計することができる。これが共通鍵が長年にわたって使用されてきた理由であり、事実、軍事や諜報、その他ビジネス界等において広く用いられてきた。しかし一方で、安全な鍵配送にはコストがかかりすぎる等の問題もあった。
【0005】
1970年代に登場した公開鍵暗号方式は、暗号化アルゴリズムが数学的関数に基づいており、その数学的処理により各ユ−ザごとに関連した2種類の鍵を作成する。そのうち一方を非公開鍵として保護し、他方を公開鍵として公開してもよい。メッセージの発信者は公開鍵によりメッセージを暗号化し、受信者は、受信者のみが保有する非公開鍵によりメッセージを復号化する。従って共通鍵方式のように鍵を通信相手に渡す必要がなくなり、公開鍵暗号方式は上記の共通鍵暗号方式の問題点を解決した。更にそのアルゴリズムの性質から、電子署名とよばれる論理的な署名も実現する事ができた。
【0006】
しかし、第三者の鍵破りの攻撃から通信内容を守り得る高い強度の鍵を得るためには、公開鍵、非公開鍵は、共通鍵暗号方式よりも長い鍵長にする必要がある。そのため、計算量が大きくなり、共通鍵暗号方式と比べると暗号化/復号化処理がかなり遅くなってしまう。
【0007】
この問題は、ハイブリッド方式と呼ばれる共通鍵暗号方式と公開鍵暗号方式を組合わせて使用する方法で解決される。この方式では、まず、共通鍵暗号方式では配送しなければならない鍵を公開鍵暗号によって暗号化する。そしてこの暗号化された共通鍵と、共通鍵によって暗号化されたメッセージの両方を相手に送信する。
【0008】
この共通鍵暗号化のときに用いる共通鍵は、一度きりで使い捨てにするランダム鍵であり、セッション鍵と呼ばれる。共通鍵暗号を単体で用いる場合は、同じ鍵を複数回にわたって利用せざるを得なかったため、鍵を特定する攻撃法が有効であった。しかし、このセッション鍵を用いれば、以前に攻撃した暗号文の解読化情報を次の攻撃に利用することができなくなる。
【0009】
このハイブリッド方式で、公開鍵暗号で暗号化されるのは鍵のみであるので、公開鍵暗号の暗号化/復号化処理の速度の遅さが全体の処理速度に殆ど影響を与えることはない。更にセッション鍵については、暗号文を送る度に更新できるため、共通鍵暗号方式における共通鍵をも強化することとなる。
【0010】
PGP(Pretty Good Privacy)は、このハイブリッド方式を採用したハイブリッド暗号の代表的な応用例である。PGPでは、メッセージは圧縮アルゴリズムで圧縮されていてもよいことになっており、メッセージを圧縮することで共通鍵暗号の安全性はさらに向上する。これは、圧縮された暗号文は元のメッセージよりも冗長性が減り、攻撃がさらに困難となるためである。更に暗号文が圧縮されることによって、電子メール送信/受信の速度を高速化するという目的もある。
【0011】
PGPでは、圧縮アルゴリズムとしてZIP、ZLIBのいずれかを使用する。これらは、Lampel−Zivの開発した圧縮アルゴリズムLZ77を応用したDeflate圧縮アルゴリズムを利用している。
【0012】
また、PGPでは暗号メールとして利用するために、radix−64変換を用いる。ASCII Armorとも呼ばれるこの変換方式は、暗号文であるバイナリデータをASCII文字列に変換して表現する。実際には6bitsの値を8bitsのASCII文字列に変換するため、情報量は約1.33倍に拡大するが、圧縮アルゴリズムを用いることでその影響を回避している。
【0013】
ここでPGPの暗号化アルゴリズムを図6に示す。この図6において、Zは圧縮手段を、‖は結合手段を、Esは共通鍵暗号化手段を、Epは公開鍵暗号化手段を、R64はradix−64変換を、また実線はメッセージの流れを,点線は鍵の作用をそれぞれ表し、括弧は括弧内のブロックが省略可能であることを表している。
【0014】
このような従来のハイブリッド方式は、一見すると公開鍵暗号が破られなければ安全であるように思われる。それはセッション鍵がその都度ランダムな数を使って生成されるためである。即ち、仮にある暗号文を共通鍵暗号について攻撃し、そのとき用いたセッション鍵が判明しても、そのメッセージが解読されるだけであり、そのセッション鍵はそれ以降の暗号文への攻撃の参考にすることができない。従って、結局公開鍵暗号への攻撃が成功しない限り、常に完全な解読ができるわけではないのである。
【0015】
しかし、共通鍵暗号への攻撃は鍵の総当り以外の方法が発見されたり、またはもっと高速に鍵の総当りができるようになれば、攻撃の時間を一気に短縮できる可能性がある。更に、従来のハイブリッド暗号では公開鍵暗号がセッション鍵しか保護しないため、セッション鍵により共通鍵暗号で暗号化している暗号文を解読さえしてしまえば目的であるメッセージが全て得られてしまう。従ってハイブリッド暗号の暗号文を防御するにあたって、共通鍵暗号への攻撃は無視できない。
【0016】
【発明が解決しようとする課題】
本発明に係るハイブリッド方式の強化方法は、この共通鍵暗号部のメッセージと暗号文の完全1対1対応の関係を修正し、共通鍵暗号への攻撃を完全無効化することを目的とする。
【0017】
【課題を解決するための手段】
本発明に係る入力されたメッセージを暗号化するプログラムは、コンピュータを、バイナリデータを圧縮アルゴリズムによって圧縮する圧縮手段、複数のバイナリデータを結合させて新たなバイナリデータを生成する結合手段、コンピュータに入力されてバイナリデータ化されたメッセージを前記圧縮手段により圧縮して生成した圧縮メッセージから、欠落データを抜き落として欠落圧縮メッセージと欠落データとする抜落手段、前記欠落圧縮メッセージにセッション鍵を用いて共通鍵暗号化アルゴリズムによって暗号メッセージを生成する共通鍵暗号化手段、前記欠落データと前記セッション鍵のバイナリデータを前記結合手段により結合させ、公開鍵を用いて公開鍵暗号化アルゴリズムによって暗号ブロックを生成する公開鍵暗号化手段、前記暗号メッセージと前記暗号ブロックのバイナリデータを前記結合手段により結合させてハイブリッド暗号メッセージを生成するハイブリッド暗号化手段、として機能させ得る。
【0018】
本発明に係る前記ハイブリッド暗号メッセージを復号化するプログラムは、コンピュータを、前記圧縮手段により圧縮されたバイナリデータを解凍アルゴリズムによって解凍する解凍手段、前記結合手段により結合された前記新たなバイナリデータを前記複数のバイナリデータに分解する分解手段、前記ハイブリッド暗号化手段により生成されたハイブリッド暗号メッセージを前記分解手段により前記暗号メッセージと前記暗号ブロックの2つのバイナリデータに分解するハイブリッド復号化手段、前記暗号ブロックを非公開鍵を用いて非公開鍵復号化アルゴリズムによって復号化し、前記分解手段により前記欠落データと前記セッション鍵のバイナリデータに分解する非公開鍵復号化手段、前記非公開鍵復号化手段により得られた前記セッション鍵を用いて、共通鍵復号化アルゴリズムによって前記暗号メッセージを前記欠落圧縮メッセージに復号化する共通鍵復号化手段、前記欠落圧縮メッセージに前記欠落データを埋め込んで前記圧縮メッセージを復元化する埋込み手段、として機能させ、前記圧縮メッセージを前記解凍手段により解凍して前記入力されたメッセージに復号化する。
【0019】
本発明に係る入力されたメッセージを暗号化する装置は、バイナリデータを圧縮アルゴリズムによって圧縮する圧縮手段と、複数のバイナリデータを結合させて新たなバイナリデータを生成する結合手段と、を備える、メッセージを暗号化する装置であって、該装置に入力されてバイナリデータ化されたメッセージを前記圧縮手段により圧縮して生成した圧縮メッセージから、欠落データを抜き落として欠落圧縮メッセージと欠落データとする抜落手段と、前記欠落圧縮メッセージからセッション鍵を用いて共通鍵暗号化アルゴリズムによって暗号メッセージを生成する共通鍵暗号化手段と、前記欠落データと前記セッション鍵のバイナリデータを前記結合手段により結合させ、公開鍵を用いて公開鍵暗号化アルゴリズムによって暗号ブロックを生成する公開鍵暗号化手段と、前記暗号メッセージと前記暗号ブロックのバイナリデータを前記結合手段により結合させてハイブリッド暗号メッセージを生成するハイブリッド暗号化手段と、からなる。
【0020】
本発明に係る前記ハイブリッド暗号メッセージを復号化する装置は、前記圧縮手段により圧縮されたバイナリデータを解凍アルゴリズムによって解凍する解凍手段と、前記結合手段により結合された前記新たなバイナリデータを前記複数のバイナリデータに分解する分解手段と、を備える、暗号化されたメッセージを復号化する装置であって、前記ハイブリッド暗号化手段により生成されたハイブリッド暗号メッセージを前記分解手段により前記暗号メッセージと前記暗号ブロックの2つのバイナリデータに分解するハイブリッド復号化手段と、前記暗号ブロックを非公開鍵を用いて非公開鍵復号化アルゴリズムによって復号化し、前記分解手段により前記欠落データと前記セッション鍵のバイナリデータに分解する非公開鍵復号化手段と、前記非公開鍵復号化手段により得られた前記セッション鍵を用いて、共通鍵復号化アルゴリズムによって前記暗号メッセージを前記欠落圧縮メッセージに復号化する共通鍵復号化手段と、前記欠落圧縮メッセージに前記欠落データを埋め込んで前記圧縮メッセージを復元化する埋込み手段と、を備え、前記圧縮メッセージを前記解凍手段により解凍して前記入力されたメッセージに復号化し得る。
【0021】
本発明に係る入力されたメッセージを暗号化する方法は、バイナリデータを圧縮アルゴリズムによって圧縮する圧縮手段と、複数のバイナリデータを結合させて新たなバイナリデータを生成する結合手段と、を備えたコンピュータを用いてバイナリーデータとなっているメッセージを暗号化する方法であって、前記コンピュータの抜落手段が、該コンピュータに入力されてバイナリデータ化されたメッセージを前記圧縮手段により圧縮して生成した圧縮メッセージから、欠落データを抜き落として欠落圧縮メッセージと欠落データとする抜落ステップと、前記コンピュータの共通鍵暗号化手段が、前記欠落圧縮メッセージにセッション鍵を用いて共通鍵暗号化アルゴリズムによって暗号メッセージを生成する共通鍵暗号化ステップと、前記コンピュータの公開鍵暗号化手段が、前記欠落データと前記セッション鍵のバイナリデータを前記結合手段により結合させ、公開鍵を用いて公開鍵暗号化アルゴリズムによって暗号ブロックを生成する公開鍵暗号化ステップと、前記コンピュータのハイブリッド暗号化手段が、前記暗号メッセージと前記暗号ブロックのバイナリデータを前記結合手段により結合させてハイブリッド暗号メッセージを生成するハイブリッド暗号化ステップと、を含む。
【0022】
本発明に係る前記ハイブリッド暗号メッセージを復号化する方法は、前記圧縮手段により圧縮されたバイナリデータを解凍アルゴリズムによって解凍する解凍手段と、前記結合手段により結合された前記新たなバイナリデータを前記複数のバイナリデータに分解する分解手段と、を備えたコンピュータを用いて暗号化されたメッセージを復号化する方法であって、前記ハイブリッド暗号化手段により生成されたハイブリッド暗号メッセージを前記分解手段により前記暗号メッセージと前記暗号ブロックの2つのバイナリデータに分解するハイブリッド復号化ステップと、前記暗号ブロックを非公開鍵を用いて非公開鍵復号化アルゴリズムによって復号化し、前記分解手段により前記欠落データと前記セッション鍵のバイナリデータに分解する非公開鍵復号化ステップと、前記非公開鍵復号化ステップにおいて得られた前記セッション鍵を用いて、共通鍵復号アルゴリズムによって前記暗号メッセージを前記欠落圧縮メッセージに復号化する共通鍵復号化ステップと、前記欠落圧縮メッセージに前記欠落データを埋め込んで前記圧縮メッセージを復元化する埋込みステップと、を含み、前記圧縮メッセージを前記解凍手段により解凍して前記入力されたメッセージを復号化し得る。
【0023】
本発明に係るコンピュータ読み取り可能な記録媒体は、少なくとも前記暗号化又は復号化プログラムを記録している。
【0024】
本発明に係る、メッセージの送受信を機密保持性のない電気通信回線において安全に行なう方法は、前記記メッセージを暗号化する方法により、メッセージを暗号化して暗号メッセージを生成するステップ、前記暗号メッセージを電気通信回線を通して送信するステップ、受信した前記暗号メッセージを、前記メッセージを復号化する方法により前記メッセージに復号化するステップ、を含んでいる。
【0025】
【発明の実施の形態】
本発明の提案する新しいハイブリッド暗号は、共通鍵暗号方式で暗号化されるべき圧縮されたメッセージの情報から、その一部を抜落手段により抜き落とす作業を従来のハイブリッド暗号に追加して、セッション鍵と共にその抜き落とした情報を公開鍵暗号で暗号化するというものである。
【0026】
従って、たとえ共通鍵暗号が破られてもメッセージの情報が得られない設計にする。基本的な発想は共通鍵暗号で暗号化されるメッセージの情報を減らし、その分を公開鍵暗号で暗号化するというものである。しかし、更に安全性を高めるため、本発明のハイブリッド暗号の実施例においては、以下に説明する公開鍵暗号のブロックの構造とDeflate圧縮の構造の性質を最大限に活用する。
【0027】
本発明の実施態様において、新しいハイブリッド暗号を実装する際に使用するアルゴリズムは例えば以下の通りである。
(1)公開鍵暗号化アルゴリズム;PKCS#1(public−key−cryptography−specifications)で定義されたRSA(Rivest−Shamir−Adleman;1024bits)
(2)共通鍵暗号化アルゴリズム;AES[Advanced−Encryption−Standard]CBCモード(128bits)
(3)圧縮アルゴリズム ;GZIP(デフォルト仕様)
【0028】
上記(1)のRSAは、以下に説明する本発明の実施態様において公開鍵暗号化手段として用いられ、(2)のAES CBCモードは共通鍵暗号化手段として、(3)のGZIPは圧縮手段としてそれぞれ用いられる。また、本実施態様において、結合手段は2つのバイナリデータを単純に結合させる手段である。
【0029】
即ち、本発明の実施態様における新しいハイブリッド暗号のアルゴリズムは、コンピュータに入力されたメッセージを▲1▼バイナリデータに変換し、▲2▼バイナリデータに変換された当該メッセージを上記圧縮手段(GZIP)により圧縮して圧縮メッセージを生成し、▲3▼当該圧縮メッセージから抜落手段によりデータを抜き落として欠落圧縮メッセージと欠落データを生成する。この抜落手段によりデータを抜き落とす方法については以下の実施態様にて詳説される。続いて▲4▼上記欠落圧縮メッセージに上記セッション鍵を用いる共通鍵暗号化手段(AES CBCモード)によって暗号メッセージを生成し、▲5▼上記欠落データと上記セッション鍵のバイナリデータを上記結合手段により結合させ、公開鍵を用いて公開鍵暗号化手段(RSA)によって暗号ブロックを生成する。最後に▲6▼上記暗号メッセージと上記暗号ブロックのバイナリデータを前記結合手段により結合させるハイブリッド暗号化手段によりハイブリッド暗号メッセージを生成する。
【0030】
また、本発明の実施態様として上記アルゴリズムにより暗号化されたハイブリッド暗号メッセージを復号化して、元のメッセージを得るための解凍アルゴリズムは以下の通りである。まず、▲1▼上記暗号化アルゴリズムにより生成されたハイブリッド暗号メッセージを、分解手段を用いたハイブリッド復号化手段により上記暗号メッセージと上記暗号ブロックの2つのバイナリデータに分解する。以下に詳説するように、上記暗号化の際に上記暗号メッセージの長さの情報は上記暗号ブロックに復元情報として埋め込まれるため、上記ハイブリッド復号化手段により上記▲1▼の分解が可能となる。次に▲2▼上記暗号ブロックを上記RSAの非公開鍵を用いた非公開鍵復号化手段によって復号化し、上記欠落データと上記セッション鍵(128bits)のバイナリデータに分解し、▲3▼得られたセッション鍵を用いて、共通鍵復号化手段(AES CBCモード)によって上記暗号メッセージを上記欠落圧縮メッセージに復号化する。続いて▲4▼上記埋め込まれた復元情報に基づく埋込み手段により、欠落圧縮メッセージに上記欠落データを埋め込んで前記圧縮メッセージを復元化し、▲5▼上記圧縮メッセージを解凍手段により解凍して前記メッセージを復号化する。ここで解凍手段は、下記の実施態様で採用する上記圧縮アルゴリズム(GZIP)の解凍アルゴリズムを用いる。
【0031】
また、上述のような暗号化、復号化アルゴリズムをプログラム化して記録媒体に記録させたり、当該記録媒体から上記プログラムをコンピュータ等に読み込ませて暗号化・復号化装置として用いることもできる。そしてメッセージを暗号化、復号化することにより、送受信を機密保持性のない電気通信回線において安全に行なうことができる。
【0032】
まず、新しいハイブリッド暗号を提案するために、PGPでも使用されているRSA Laboratoriesによって定義された上記PKCS#1[Public Key Cryptography Standards]の公開鍵暗号の暗号化フォーマットを説明する。
【0033】
公開鍵暗号の暗号化フォーマット
RSAのなどの公開鍵暗号方式では、メッセージをBig−endian記法の多倍長整数として扱い、主に多倍長整数のべき乗剰余計算を行う。多倍長整数といっても実際は鍵長によって制限されるので、メッセージは鍵長である、べき乗剰余計算における法nの値以下のバイト数で分割しなければならない。つまり、公開鍵暗号方式も共通鍵暗号方式と同じいわゆるブロック暗号である。
【0034】
また解読をより困難にするため、公開鍵暗号の1ブロックは解読防止のためのパディングと呼ばれるランダムなバイナリデータで埋められている。例えば公開鍵暗号で1024bitsの鍵長のものを使用し、共通鍵暗号のセッション鍵で128bitsの鍵長のものを使用した場合、800bits以上もの情報がパディングとなる。
【0035】
PGPの場合は、公開鍵暗号でセッション鍵を暗号化するときには、さらに複数の共通鍵アルゴリズムを選択できるID値として1バイトを与える。ここで、PGPが公開鍵暗号のブロックに与える128bitsのセッション鍵のデータフォーマットは例えば以下のように表される。
D=ARG‖KEY (1)
D :PGPが公開鍵暗号でセッション鍵を暗号化するためのデータ(136bits)
ARG:共通鍵暗号化アルゴリズムのID値(8bits)
‖ :バイナリデータの結合
KEY:セッション鍵(128bits)
【0036】
この式(1)に示したデータDを公開鍵ブロックのデータとする。ここで、PGPの128bitsのセッション鍵を暗号化する場合の1024bitsの公開鍵暗号の1ブロックの構造を式(2)に示す。
【0037】
EB=00‖BT‖PS‖00‖D (2)
EB :公開鍵暗号の1ブロック(1024bits)
00 :1バイトの値(0)
‖ :バイナリデータの結合
BT :ブロックタイプ(送信者の公開鍵で暗号化するこの場合の値は02)
PS :パディング文字列(864bits)
D :共通鍵暗号化アルゴリズムID値とセッション鍵(136bits)
【0038】
本発明のハイブリッド暗号は、上記PKCS#1で定義される公開鍵暗号ブロックのパディング部分を、最小で8バイトまで小さくできるという性質を活用する。そして上述のメッセージから抜き落とした情報は、その伸縮可能なパディング部が小さくなることで得られるスペースを用いて公開鍵暗号ブロックに埋め込まれてゆくことになる。
【0039】
次に、共通鍵暗号を解読してもメッセージに復元できないようにするためにメッセージのデータを抜き落とす方法は、Deflate圧縮アルゴリズムの性質を利用する。それは、下記の3種類のそれぞれのブロックにおけるヘッダ情報、終端値を表す値、更にそれらの周辺の情報を抜き落とすという方法である(抜落手段)。そこで、ZIP、ZLIB、Gzipなどの圧縮アルゴリズムに使用されているDeflate圧縮のフォーマットを以下に説明する。
【0040】
Deflate圧縮のフォーマット
Deflate圧縮とは、LZ77圧縮アルゴリズムとHuffman符号化アルゴリズムの併用によりデータを圧縮する完全復元可能ないわゆる可逆圧縮である。
【0041】
LZ77圧縮では、入力されたデータストリームを1バイト文字列として扱い、文字列を先頭から読んで行く。そして同じ文字列が再度登場した場合に、ポインタ情報と置きかえることで情報圧縮する。ここでそのポインタ情報とは、現在位置から戻る距離(distance)と、戻った位置から復元する長さ(length)である。但し、長さは置き換えに対して有効となるためには、3以上であることが必要である。
【0042】
Deflate圧縮では、長さは最大で256バイト、距離は1から最大32キロバイト前までならば、重複した文字列への参照を行うことができる。ここでLZ77圧縮の簡単な例を示す。
【0043】
・圧縮可能データ
vvvvv
Blah blah blah!
・LZ77圧縮データ
Blah b[L=13,D=5]!
【0044】
またHuffman符号化とは、出現頻度の多い文字に少ないビット数の文字を割り当てて、元のデータストリームをバイナリデータとして出力する圧縮法である。ここでHuffman符号は、出力がバイナリデータであるにも拘わらず、符号語を一意に復元できるいわゆる瞬時符号である。そして異なる文字に対し異なる符号を与える方式では、平均符号長を最小にできるという特徴がある。
【0045】
Huffman符号化には、一般的な文章に現れる文字の出現頻度などからHuffman符号を前もって準備しておく静的な方法と、その文章の出現頻度を調べた上でHuffman符号を割り与える動的な方法がある。
【0046】
従って動的なHuffman符号化では、復元する時のために元の文字とHuffman符号との対応表であるHuffman Tableをバイナリデータに付加する必要がある。
【0047】
入力データが小さい場合、上記Huffman Tableが動的Huffman符号圧縮ブロックの圧縮率が悪くなる原因となる。よって、通常Huffman符号化のアルゴリズムは、動的なHuffman符号化を行った出力と、静的Huffman符号化を行って得られる出力を比べて、情報量の小さいほうを採用する。
【0048】
Deflate圧縮では、LZ77圧縮を行った後でHuffman符号化を行う。そのため、リテラル(literal)と呼ばれる1バイト文字だけでなく、LZ77圧縮における長さと距離の表現もHuffman符号化する。
【0049】
また、高い圧縮率を得るためHuffman符号の符号長は最大15bitsで制限する。更に動的なHuffman符号化を行った場合は、Huffman
TableをもHuffman符号化している。
【0050】
ここで、文字の出現頻度が与えられたときのHuffman符号化の簡単な例を表1に示す。
【0051】
【表1】
【0052】
Deflate圧縮において圧縮されたデータは、1つもしくは複数のブロックから構成される。ブロックは非圧縮ブロック、静的Huffman符号圧縮ブロック、動的Huffman符号圧縮ブロックの3種類がある。
【0053】
静的Huffman符号圧縮ブロックは予めHuffman Tableを用意しており、ブロックにヘッダ情報を付加しない。しかし、動的Huffman符号圧縮ブロックは出現頻度に応じてHuffman符号を与えるため、ブロックにHuffman Tableをヘッダ情報として付加しなければならない。
【0054】
ブロックの大きさは、非圧縮ブロックが65、535バイト以下に制限されているが、2種類のHuffman符号圧縮ブロックでは、任意の大きさになっている。
【0055】
また、非圧縮ブロックには、ヘッダ情報としてブロック長を付加するが、2種類のHuffman符号圧縮ブロックにはブロック長をヘッダ情報として与えない。そのため、上記2種類のHuffman符号圧縮ブロックの終わりには終端値が必要である。
【0056】
この終端値を使用するのは、2種類のHuffman符号圧縮ブロックがバイト単位で構成されている訳ではないので、通常は前のブロックの終端値と次のブロックの先頭の情報が同じ1バイト中に現れるためでもある。
【0057】
しかし、Deflate圧縮の出力はバイト単位であるため、最後のブロックが終わった直後の位置から、0が連続するbit列を与えて調整している。ブロックの先頭の3ビットは、それが最後のブロックであるのかという情報と上記3種類のうちのどのブロックであるのかという情報を示している。
【0058】
ここで、Deflate圧縮の3種類のブロックの構造を図2から図4に示す。
【0059】
次に、上記動的Huffman符号圧縮ブロックのHuffman Tableは、本発明の提案する新しいハイブリッド暗号のアルゴリズムにおいて重要な要素であるため、以下詳説することとする。
【0060】
まず、リテラルとブロックの終端値さらにLZ77圧縮における長さ及び距離の表現方法を説明する。
【0061】
リテラルと終端値及び長さは一連の値が与えられ、これらは一つのHuffman Tableでまとめられて圧縮される。値は0から285まで用意し、このうち1バイトを超える値は終端値(256)と、長さ(257から285)の値として割り当てられる。長さを示す値は、直後に追加bitを与えて実際の長さを表現する。この追加bitは、Huffman符号圧縮とは独立に存在する。
ここで、Deflate圧縮におけるリテラル/終端値の表現方法を表2に示す。
【0062】
【表2】
【0063】
また、LZ77圧縮における距離を表現するのは0から29までの値で、長さのときと同様に追加bitを与えることで実際の距離を表す。そして、距離は別のHuffman Tableを用いて圧縮される。ここで、Deflate圧縮における長さ/距離の表現方法を表3と表4に示す。
【0064】
【表3】
【0065】
【表4】
【0066】
更に、動的Huffman符号圧縮ブロックで与えられるHuffman符号は、辞書順に割り与えている。辞書順で符号を与えることで、動的Huffman符号を復元するための情報は、符号長を与えるのみで良くなる。
【0067】
つまり、リテラル/長さのHuffman Tableと距離のHuffman Tableは、0から最大値までのHuffman符号の符号長の連続として構成できる。Deflate圧縮では、この方法を用いてHuffman Tableの情報量を小さくしている。
【0068】
ここで、辞書順ならば符号長を与えただけでHuffman符号が得られるという簡単な例を表5に示す。簡単にするため、入力データはAからIまでのアルファベットのみで構成されているものとした。
【0069】
【表5】
【0070】
符号長の最大値は15であるが、通常リテラル/長さのためのHuffmanTableにおいて符号長0が連続するため、更に16から18までの値を追加して、符号長の連続を表現する。ここで、符号長の表現方法を表6で示す。
【0071】
【表6】
【0072】
そして、更に高い圧縮率を得るために、リテラル/長さと距離のための2つのHuffman Tableは、さらにHuffman符号で圧縮されている。つまり、19種類の符号長表現のためのHuffman符号を作成し、3bitsの値でその符号長を表現して、その3bitsの連続を符号長表現のためのHuffman Tableとする。
【0073】
符号長表現のためのHuffman Tableだけは、他の2つのHuffman Tableとは違い、0から最大値までの昇順のオーダーではなく、出現頻度を想定して作成されたオーダーの連続になっている。
【0074】
符号長表現のためのHuffman Tableのオーダーは、(16、17、18、0、8、7、9、6、10、5、11、4、12、3、13、2、14、1、15)の順であり、このオーダーで3bits列を構成する。
【0075】
これら3種類のHuffman Tableは、すべての値が登録されている訳ではない。Huffman Tableの値は、それぞれのオーダーに従って、その値が使用されている確率が低くなってゆく。
【0076】
そこで、Huffman Tableは、図4のなかで示したヘッダ情報にある、HLIT/HDIST/HCLENで得られる値から、その値で示される個数より後ろのオーダーの値をすべて0とみなして、その部分の情報をカットしている。
【0077】
Deflate圧縮の出力は、Little−endianで表現されている。しかし、Huffman符号だけは処理の高速化のために、与えられた符号を逆向きで出力する。
【0078】
以上のように、動的Huffman符号圧縮ブロックは、非常に高い圧縮率を得られる構造になっている。従ってDeflate圧縮は、大きな入力データを与えられた場合、通常では動的Huffman符号圧縮ブロックを選択することは明らかである。
【0079】
そこで本発明では、共通鍵暗号を解読してもメッセージに復元できないようにするため、上述のようなDeflate圧縮アルゴリズムの性質を利用して、情報の抜き落しを行なう。即ち、上記3種類のそれぞれのブロックにおけるヘッダ情報、終端値を表す値さらにそれらの周辺の情報を抜き落とす方法を採用する(抜落手段)。
【0080】
圧縮されたメッセージの復元を困難にするためには、ヘッダ情報を抜き落とすのが最も効果的である。これは、Deflate圧縮において動的Huffman符号圧縮ブロックが選択されるのが最も自然であり、かつ動的Huffman符号圧縮ブロックにおけるヘッダ情報であるHuffman Tableが無ければ、メッセージへの復元がまず不可能であるためである。
【0081】
終端値や周辺の情報も抜き出すが、これは動的Huffman符号圧縮ブロックにおいてHuffman Tableのない状態で攻撃を受けた場合に有効となる。これらの作業により、共通鍵暗号で暗号化するデータをほぼ完全なランダムバイナリデータとすることができる。
【0082】
また、ヘッダ情報や終端値などはバイナリデータであるが、抜き落とす情報はバイト単位で行う。これは、公開鍵暗号のパディング部がバイト単位であるためであり、更にハイブリッド暗号の暗号化/復号化処理の高速化のためでもある。
【0083】
ここで、公開鍵暗号のブロックの個数は複数であってもよい。高々数回公開鍵暗号の暗号化処理が追加した程度で、それほど極端に暗号化/復号化処理の速度は落ちないと期待されるからである。又、ブロック毎の僅かの情報すら渡さないという高度な安全性を追求するために、Deflate圧縮で生成した全てのブロックにおいて抜き落とす情報量を十分に確保するためでもある。
【0084】
最後に、抜き取る情報量は公開鍵暗号のブロック数が確定し、抜き落とす情報量の上限が決定したあとで、このハイブリッド暗号は、抜き落とす情報量をある程度ランダムにするという作業を行う。
【0085】
つまり、抜き落とす情報を上限一杯に抜き落とさないようにするのである。この作業を行うことで、さらに解読が困難になることが期待される。
【0086】
ここで新しいハイブリッド暗号のアルゴリズムを図1に示し、以下に上記アルゴリズムを効率良く実装する実施例について説明し、実施例の実効性について検討する。尚図1中、Zは圧縮手段を、Mは抜落手段を、‖は結合手段を、Esは共通鍵暗号化手段を、Epは公開鍵暗号化手段を、R64はradix−64変換を、また実線はメッセージの流れを,点線は鍵の作用をそれぞれ表す。
【0087】
(A) PGPでは、パケット方式を用いて各部品の属性や長さ、更に使用したアルゴリズムなどを識別している。しかし、本発明のハイブリッド暗号では、
1.共通鍵暗号部から正しいセッション鍵を用いて復号化したものすらランダムなバイナリデータであるよう設計すべきである。
2.公開鍵で保護できる情報量の上限値をできるだけ大きくとれるよう設計すべきである。
【0088】
以上の理由から、あえて識別子を用いるパケット方式は採用せず、アルゴリズムも選別しないことにする。
【0089】
このようにしても本発明のハイブリッド暗号の暗号文は、RSAで暗号化する公開鍵暗号の部分が1乃至複数個と、AESで暗号化する共通鍵暗号の部分で構成されるので、その識別にはそれぞれ別々にASCII Armourをかけることで識別の問題は解決できる。
【0090】
また、公開鍵暗号の1ブロックのなかで数種類のデータを暗号化することになるため、そのデータの識別が必要だが、公開鍵暗号のブロックに渡すデータのフォーマットを定義することで、その識別子は必要なくなる。そのデータフォーマットは以下に式(3)、(4)において示す。
【0091】
次に、PGPは圧縮アルゴリズムを必ずしも使用しなくてもよいという仕様だが、本発明のハイブリッド暗号では、必ず使用しなければならない。どんな小さなメッセージでも、必ずGzipがHuffman符号化されたどちらかのブロックを選択するからである。
【0092】
また、PGPのDeflate圧縮は、LZ77圧縮における移動窓の大きさにあたるバッファ値がデフォルト仕様の1/4とかなり小さくしているが、この制限は圧縮率がかなり悪くなるため採用しないこととする。
【0093】
最後に、抜き落とす情報を得るためには、Deflate圧縮された各ブロックについて、出力のどこからヘッダ情報で、どこに終端値があるのかという情報が必要である。しかし、Huffman符号化された出力をもう一度走査して、ブロックの終端を検知しなければならないのでは、2度手間となり、暗号化/復号化処理の速度が遅くなる。
【0094】
これについては、予めDeflate圧縮する際の返り値として、各ブロックの大きさも出力として与える機能をGzipに追加することで解決することができる。
【0095】
(B)公開鍵暗号を複数回使用することについて
本実施例で使用するRSAは、1024bitsの鍵長しかない。しかし、Deflate圧縮されるデータにおいて、使用される文字の種類やその出現頻度、更にLZ77圧縮の出力結果などにもよるが、動的Huffman符号圧縮ブロックのヘッダ情報は、大きなときには700bits以上になる。
【0096】
また、メッセージの情報量が大きい場合、RSAの公開鍵暗号ブロックを1個とすると、Deflate圧縮によって得られた各ブロックの1ブロック当りの抜き落とす情報量が小さくなってしまう。Deflate圧縮の出力には複数のブロックが用いられるためである。
【0097】
従って、本実施例ではRSAがそれぞれのブロックについて常に十分な情報量を保護するために、Deflate圧縮のブロックが複数個生成された場合は、ブロックの個数だけRSAの公開鍵暗号ブロックを作成することが望ましい。
【0098】
しかし、公開鍵暗号の複数回使用は、ハイブリッド暗号の暗号化/復号化処理の速度にそれほど大きな影響を与えない。それは、Deflate圧縮ではどこでブロックを複数に分ければ効果的なのかを32キロbits毎に判断しているためである。例えば電子メールで交換するテキストデータの情報量で考えても、ブロック数は多くても高々3個程度であり、また相当巨大な入力データでも、出力は10ブロック以上にならないのである。
【0099】
(C)Deflate圧縮されたメッセージを抜き落とす作業について
RSAを1024bitsで使用した場合、936bits(117バイト)が1ブロックのデータとして扱える最大値である。しかし、復号化のときの復元情報に使用するために4バイトを使用するため、抜き落とすデータの最大値は113バイトになる。
【0100】
更に、抜き落とす情報量をある程度ランダムにするという設計にするため、実装したアルゴリズムでは、最大値113バイトの約半分である57から113に収まる乱数を生成して、その値を公開鍵暗号の1ブロック毎の抜き落とすバイト数としてよい。但し、最初の公開鍵暗号のブロックはセッション鍵を付加する分の16バイト(128bits)だけ更に短くしておく必要がある。
【0101】
また、共通鍵暗号が暗号化したデータをランダムなバイナリデータに見せるため、そのデータは、ヘッダ情報と終端値を落とされた各ブロックの残りをそのまま結合したものとする。従って、復号化するには抜き落とした情報を正確に埋めるための復元情報が必要となる。
【0102】
これは、抜き落とされて残ったブロックの長さをその情報とする方法で解決できる。そしてその残ったブロックの長さが何バイトであるかの情報は、符号無し整数4バイト値として与え、その値はLittle−endianにされて、公開鍵暗号のブロックに渡すデータの先頭に付加してよい。
【0103】
ここで、ブロックの残りの長さを4バイトで表現するのは、符号無し整数2バイトでは、65535バイトまでしか表せないが、4バイトならば、約512メガバイトまで表せるためである。即ち、Deflate圧縮のブロック長が高々32キロbits(4096バイト)の整数倍であることを考えれば、残ったブロックの長さは512メガバイトまでの値で十分に収まるためである。
【0104】
(D) 公開鍵暗号の1ブロックにおいて、識別子を使用せずに各データを識別するための方法について
その識別方法とは、終端値及びその周辺の情報を表すフッタ情報を10バイトで固定するという制限を加えることである。そうすることで、ヘッダ情報に抜き落とすバイト数の残り全てを与えられていれば、ヘッダ情報は復号化のとき正確にフッタ情報と識別することができるようになる。
【0105】
従って、公開鍵暗号のブロックに渡すデータフォーマットは残ったブロックの長さ4バイトの値、ブロックのヘッダ情報そして10バイトのフッタ情報(最初の公開鍵ブロックならばさらに16バイトのセッション鍵)と続くデータストリームとして構成することができる。
【0106】
ここで、抜き落とす量をランダムに選択した結果が仮に720bitsだった場合の最初の公開鍵暗号のブロックに渡すデータフォーマットを式(3)に示し、2番目以降の公開鍵暗号のブロックに渡すデータフォーマットを式(4)に示す。
【0107】
D=LENGTH‖HEADER‖FOOTER‖KEY (3)
D :最初の公開鍵暗号ブロックに与えるデータ(720bits)
LENGTH:抜き落とされて残ったDeflate圧縮ブロックの長さ(32bits)
‖ :バイナリデータの結合
HEADER:Deflate圧縮ブロックのヘッダ情報(480bits)
FOOTER:Deflate圧縮ブロックの終端値を含む情報(80bits)
KEY :セッション鍵(128bits)
【0108】
D=LENGTH‖HEADER‖FOOTER (4)
D :2番目以降の公開鍵暗号ブロックに与えるデータ(720bits)
‖ :バイナリデータの結合
LENGTH:抜き落とされて残ったDeflate圧縮ブロックの長さ(32bits)
HEADER:Deflate圧縮ブロックのヘッダ情報(608bits)
FOOTER:Deflate圧縮ブロックの終端値を含む情報(80bits)
【0109】
上記本発明のハイブリッド暗号が処理されてゆく例を図5に示す。なお、この例ではDeflate圧縮が3ブロックを出力した場合である。
【0110】
(E) 公開鍵暗号の構成方法について
上記実施例では公開鍵暗号ブロックをDeflate圧縮ブロックの数だけ作成したが、公開鍵暗号ブロックの鍵長をを十分大きくして、1ブロックで保護してもよい。
【0111】
既存のハイブリッド暗号で現在使用されているものは、1024bitsから4096bits程度の鍵長である。しかし、この程度の鍵長の公開鍵暗号の攻撃に必要な計算量は、共通鍵暗号を総当り攻撃してセッション鍵を見つけるまでの計算量よりもかなり小さいものである。
【0112】
RSAの攻撃に必要なおよその計算量は試算されているため、それを考慮して既存の公開鍵暗号の将来を考えると、公開鍵の鍵の長さは最低でも8192bits以上の長さのものが好ましい。
【0113】
次に、本実施例では公開鍵暗号としてRSAを用いたが、公開鍵のアルゴリズムは本発明のハイブリッド暗号の本質には影響せず、Elgamal、楕円曲線暗号等であっても良い。
【0114】
従って、従来の公開鍵暗号の役割を楕円曲線暗号、量子暗号などの次世代の暗号へと置き換えることにより、上記の公開鍵暗号の鍵長肥大の問題も解決される。そして、本発明のハイブリッド暗号の信頼性はさらに向上することになる。
【0115】
例えば量子暗号に本発明のメッセージ抜落しアルゴリズムを加えることにより、従来の量子暗号方式以上の信頼性が得られることになる。量子暗号は鍵配送にのみ使用されるため、安全な通信を共通鍵(セッション鍵)のみで確保する従来のハイブリッド暗号と同方式と見ることもできるからである。
【0116】
(F) 共通鍵暗号の構成方法について
上述の公開鍵暗号と同様、本発明のハイブリッド暗号方式では共通鍵暗号のアルゴリズムにも影響を受けることがない。上記のように本発明に係るハイブリッド暗号における共通鍵暗号部への攻撃は、仮にセッション鍵が正しいものでも得られるデータがほぼ完全なランダムバイナリデータであるため、共通鍵暗号のアルゴリズムに拘わらず、総当りによるセッション鍵の特定が必要となる。
【0117】
そして、セッション鍵を特定してから、さらに抜き落とした情報やその位置を特定しなければならない。結局公開鍵暗号で暗号化した全てのデータを総当りするしかないのである。
【0118】
従って、本発明の提案するハイブリッド暗号を用いれば、共通鍵暗号暗号で全く保護しないメッセージの送信も可能である。公開鍵暗号として強度が十分なものを選択すれば、二重に鍵をかける必要を省いても安全にメッセージを送信可能なのである。
【0119】
(G)圧縮アルゴリズムについて
圧縮アルゴリズムとしては、圧縮することで復元する時に歪が発生しないアルゴリズムを必ず使用する必要がある。
【0120】
上記実施例で使用したDeflate圧縮では、Huffman符号が用いられている。この場合メッセージの出現頻度を必要とすることが重要な要素となっている。
【0121】
従って、Huffman符号に代えて算術符号を使用してもよい。算術符号とは生起確率を0以上1未満の小数で表現し、それを用いて全体を符号化する圧縮アルゴリズムであり、小数をそのまま符合として用いる性質をもつ。
【0122】
Huffman符号をこの算術符号に置き換えた場合、本発明のハイブリッド暗号はさらに信頼性が高まる。
【0123】
算術符号が本ハイブリッド暗号と相性が非常によいのは、Huffman符号よりもさらに高速で、高い圧縮率が得られるとされていることもあるが、算術符号には、元の文字が特定のbit文字として与えられるわけではないという特徴があるためである。
【0124】
この特徴を利用することで、共通鍵暗号で暗号化されるバイナリデータのランダム化に更に踏み込むことができる。
【0125】
【発明の効果】
上述したように、本発明に係るハイブリッド暗号における共通鍵暗号部への攻撃は、仮にセッション鍵が正しいものでも得られるデータがほぼ完全なランダムバイナリデータとなっている。しかも共通鍵は1度きり使い捨てのランダムなセッション鍵であるため、まずは共通鍵暗号のアルゴリズムとは無関係に、総当りによるセッション鍵の特定が必要となる。
【0126】
そして、セッション鍵を特定できても、更に抜き落とした情報やその位置を特定しなければならない。即ち、上述のように結局公開鍵暗号で暗号化した全てのデータを総当りするしかないのである。
【0127】
また、共通鍵暗号部への攻撃に必要な計算量は、桁違いに大きくなっている。従来のハイブリッド暗号ならば共通鍵暗号の総当り攻撃は、常に2128種類(最大でも2256種類)のセッション鍵の検索であった。しかし、実施例のハイブリッド暗号の場合、公開鍵暗号がnブロック生成された場合を考えると、共通鍵暗号部の総当り攻撃数は下式の回数にも上る。
【0128】
【数1】
【0129】
更に、このハイブリッド暗号には、公開鍵暗号の鍵長が長くなるに従って、抜き落とせるバイト量が飛躍的に大きくなるという利点がある。従って抜き落しによって更に共通鍵暗号部への攻撃は困難となる。
【0130】
以上のことから、ハイブリッド暗号における共通鍵暗号攻撃の無効化は実現されている。
【0131】
また、共通鍵暗号で暗号化する情報落ちのバイナリデータすら解読できないため、共通鍵暗号の開発は、少なくとも本ハイブリッド暗号のためにはもう必要無いということもできる。上記のように本発明のハイブリッド暗号アルゴリズムを用いれば、共通鍵で保護しないメッセージ送信も可能である。
【0132】
ただし、128bits以上の共通鍵暗号で保護する場合は、総当り攻撃などの通常に考えうる攻撃に対して十分に強力であり、ランダム化のために使用しても非常に効果的である。
【0133】
以上より明らかなように、本発明に係るハイブリッド暗号は、従来のハイブリッド方式の暗号化アルゴリズムを堅持して安易に共通鍵の鍵長を単純に伸ばしたものよりも遥かに優れた方式である。
【図面の簡単な説明】
【図1】本発明のハイブリッド暗号化のブロック図。図中Zは圧縮手段を、Mは抜落手段を、‖は結合手段を、Esは共通鍵暗号化手段を、Epは公開鍵暗号化手段を、R64はradix−64変換を、それぞれ表す。
【図2】本発明のDeflate圧縮における非圧縮ブロック。
【図3】本発明のDeflate圧縮における静的Huffman符号圧縮ブロック。
【図4】本発明のDeflate圧縮における動的Huffman符号圧縮ブロック。
【図5】ハイブリッド暗号の処理の流れ図。
【図6】PGPのブロック図。
【発明の属する技術分野】
メッセージを送信者から受信者に送付する通信を、機密保持性のない電気通信回線において安全に実行するための方法に関する。更に詳しくは、メッセージを暗号化アルゴリズムにより暗号化し、第三者の攻撃からメッセージを防御するための暗号化プログラムに関する。
【0002】
【従来の技術】
暗号の歴史において、共通鍵暗号方式は、数世紀にわたって使用されてきた。共通鍵暗号方式とは、例えば古典的にはメッセージの送信者と受信者のみがメッセージの入った箱の共通の鍵を持ち、途中で第三者にメッセージを見られるのを防ぐ通信方法である。コンピューターネットワークの発達した現在では、この共通鍵暗号方式は秘密メールの通信などにも用いられている。
【0003】
この場合、メッセージ中の文字は一般に8ビットの2進数によって表現され、従ってメッセージ文も2進数で表される。そして同じく2進数である共通鍵を使って、暗号化アルゴリズムによって暗号化される。即ち共通鍵から抽出される情報を用いて、置換、換字等の組合わせである暗号化アルゴリズムに従って暗号メッセージを生成する。
【0004】
一般的な暗号化方法においては、2進数である鍵の長さ(以下「鍵長」という)が長いほど暗号文の解読は困難となるが、共通鍵暗号化方式では、比較的短い鍵長で暗号を設計することができる。これが共通鍵が長年にわたって使用されてきた理由であり、事実、軍事や諜報、その他ビジネス界等において広く用いられてきた。しかし一方で、安全な鍵配送にはコストがかかりすぎる等の問題もあった。
【0005】
1970年代に登場した公開鍵暗号方式は、暗号化アルゴリズムが数学的関数に基づいており、その数学的処理により各ユ−ザごとに関連した2種類の鍵を作成する。そのうち一方を非公開鍵として保護し、他方を公開鍵として公開してもよい。メッセージの発信者は公開鍵によりメッセージを暗号化し、受信者は、受信者のみが保有する非公開鍵によりメッセージを復号化する。従って共通鍵方式のように鍵を通信相手に渡す必要がなくなり、公開鍵暗号方式は上記の共通鍵暗号方式の問題点を解決した。更にそのアルゴリズムの性質から、電子署名とよばれる論理的な署名も実現する事ができた。
【0006】
しかし、第三者の鍵破りの攻撃から通信内容を守り得る高い強度の鍵を得るためには、公開鍵、非公開鍵は、共通鍵暗号方式よりも長い鍵長にする必要がある。そのため、計算量が大きくなり、共通鍵暗号方式と比べると暗号化/復号化処理がかなり遅くなってしまう。
【0007】
この問題は、ハイブリッド方式と呼ばれる共通鍵暗号方式と公開鍵暗号方式を組合わせて使用する方法で解決される。この方式では、まず、共通鍵暗号方式では配送しなければならない鍵を公開鍵暗号によって暗号化する。そしてこの暗号化された共通鍵と、共通鍵によって暗号化されたメッセージの両方を相手に送信する。
【0008】
この共通鍵暗号化のときに用いる共通鍵は、一度きりで使い捨てにするランダム鍵であり、セッション鍵と呼ばれる。共通鍵暗号を単体で用いる場合は、同じ鍵を複数回にわたって利用せざるを得なかったため、鍵を特定する攻撃法が有効であった。しかし、このセッション鍵を用いれば、以前に攻撃した暗号文の解読化情報を次の攻撃に利用することができなくなる。
【0009】
このハイブリッド方式で、公開鍵暗号で暗号化されるのは鍵のみであるので、公開鍵暗号の暗号化/復号化処理の速度の遅さが全体の処理速度に殆ど影響を与えることはない。更にセッション鍵については、暗号文を送る度に更新できるため、共通鍵暗号方式における共通鍵をも強化することとなる。
【0010】
PGP(Pretty Good Privacy)は、このハイブリッド方式を採用したハイブリッド暗号の代表的な応用例である。PGPでは、メッセージは圧縮アルゴリズムで圧縮されていてもよいことになっており、メッセージを圧縮することで共通鍵暗号の安全性はさらに向上する。これは、圧縮された暗号文は元のメッセージよりも冗長性が減り、攻撃がさらに困難となるためである。更に暗号文が圧縮されることによって、電子メール送信/受信の速度を高速化するという目的もある。
【0011】
PGPでは、圧縮アルゴリズムとしてZIP、ZLIBのいずれかを使用する。これらは、Lampel−Zivの開発した圧縮アルゴリズムLZ77を応用したDeflate圧縮アルゴリズムを利用している。
【0012】
また、PGPでは暗号メールとして利用するために、radix−64変換を用いる。ASCII Armorとも呼ばれるこの変換方式は、暗号文であるバイナリデータをASCII文字列に変換して表現する。実際には6bitsの値を8bitsのASCII文字列に変換するため、情報量は約1.33倍に拡大するが、圧縮アルゴリズムを用いることでその影響を回避している。
【0013】
ここでPGPの暗号化アルゴリズムを図6に示す。この図6において、Zは圧縮手段を、‖は結合手段を、Esは共通鍵暗号化手段を、Epは公開鍵暗号化手段を、R64はradix−64変換を、また実線はメッセージの流れを,点線は鍵の作用をそれぞれ表し、括弧は括弧内のブロックが省略可能であることを表している。
【0014】
このような従来のハイブリッド方式は、一見すると公開鍵暗号が破られなければ安全であるように思われる。それはセッション鍵がその都度ランダムな数を使って生成されるためである。即ち、仮にある暗号文を共通鍵暗号について攻撃し、そのとき用いたセッション鍵が判明しても、そのメッセージが解読されるだけであり、そのセッション鍵はそれ以降の暗号文への攻撃の参考にすることができない。従って、結局公開鍵暗号への攻撃が成功しない限り、常に完全な解読ができるわけではないのである。
【0015】
しかし、共通鍵暗号への攻撃は鍵の総当り以外の方法が発見されたり、またはもっと高速に鍵の総当りができるようになれば、攻撃の時間を一気に短縮できる可能性がある。更に、従来のハイブリッド暗号では公開鍵暗号がセッション鍵しか保護しないため、セッション鍵により共通鍵暗号で暗号化している暗号文を解読さえしてしまえば目的であるメッセージが全て得られてしまう。従ってハイブリッド暗号の暗号文を防御するにあたって、共通鍵暗号への攻撃は無視できない。
【0016】
【発明が解決しようとする課題】
本発明に係るハイブリッド方式の強化方法は、この共通鍵暗号部のメッセージと暗号文の完全1対1対応の関係を修正し、共通鍵暗号への攻撃を完全無効化することを目的とする。
【0017】
【課題を解決するための手段】
本発明に係る入力されたメッセージを暗号化するプログラムは、コンピュータを、バイナリデータを圧縮アルゴリズムによって圧縮する圧縮手段、複数のバイナリデータを結合させて新たなバイナリデータを生成する結合手段、コンピュータに入力されてバイナリデータ化されたメッセージを前記圧縮手段により圧縮して生成した圧縮メッセージから、欠落データを抜き落として欠落圧縮メッセージと欠落データとする抜落手段、前記欠落圧縮メッセージにセッション鍵を用いて共通鍵暗号化アルゴリズムによって暗号メッセージを生成する共通鍵暗号化手段、前記欠落データと前記セッション鍵のバイナリデータを前記結合手段により結合させ、公開鍵を用いて公開鍵暗号化アルゴリズムによって暗号ブロックを生成する公開鍵暗号化手段、前記暗号メッセージと前記暗号ブロックのバイナリデータを前記結合手段により結合させてハイブリッド暗号メッセージを生成するハイブリッド暗号化手段、として機能させ得る。
【0018】
本発明に係る前記ハイブリッド暗号メッセージを復号化するプログラムは、コンピュータを、前記圧縮手段により圧縮されたバイナリデータを解凍アルゴリズムによって解凍する解凍手段、前記結合手段により結合された前記新たなバイナリデータを前記複数のバイナリデータに分解する分解手段、前記ハイブリッド暗号化手段により生成されたハイブリッド暗号メッセージを前記分解手段により前記暗号メッセージと前記暗号ブロックの2つのバイナリデータに分解するハイブリッド復号化手段、前記暗号ブロックを非公開鍵を用いて非公開鍵復号化アルゴリズムによって復号化し、前記分解手段により前記欠落データと前記セッション鍵のバイナリデータに分解する非公開鍵復号化手段、前記非公開鍵復号化手段により得られた前記セッション鍵を用いて、共通鍵復号化アルゴリズムによって前記暗号メッセージを前記欠落圧縮メッセージに復号化する共通鍵復号化手段、前記欠落圧縮メッセージに前記欠落データを埋め込んで前記圧縮メッセージを復元化する埋込み手段、として機能させ、前記圧縮メッセージを前記解凍手段により解凍して前記入力されたメッセージに復号化する。
【0019】
本発明に係る入力されたメッセージを暗号化する装置は、バイナリデータを圧縮アルゴリズムによって圧縮する圧縮手段と、複数のバイナリデータを結合させて新たなバイナリデータを生成する結合手段と、を備える、メッセージを暗号化する装置であって、該装置に入力されてバイナリデータ化されたメッセージを前記圧縮手段により圧縮して生成した圧縮メッセージから、欠落データを抜き落として欠落圧縮メッセージと欠落データとする抜落手段と、前記欠落圧縮メッセージからセッション鍵を用いて共通鍵暗号化アルゴリズムによって暗号メッセージを生成する共通鍵暗号化手段と、前記欠落データと前記セッション鍵のバイナリデータを前記結合手段により結合させ、公開鍵を用いて公開鍵暗号化アルゴリズムによって暗号ブロックを生成する公開鍵暗号化手段と、前記暗号メッセージと前記暗号ブロックのバイナリデータを前記結合手段により結合させてハイブリッド暗号メッセージを生成するハイブリッド暗号化手段と、からなる。
【0020】
本発明に係る前記ハイブリッド暗号メッセージを復号化する装置は、前記圧縮手段により圧縮されたバイナリデータを解凍アルゴリズムによって解凍する解凍手段と、前記結合手段により結合された前記新たなバイナリデータを前記複数のバイナリデータに分解する分解手段と、を備える、暗号化されたメッセージを復号化する装置であって、前記ハイブリッド暗号化手段により生成されたハイブリッド暗号メッセージを前記分解手段により前記暗号メッセージと前記暗号ブロックの2つのバイナリデータに分解するハイブリッド復号化手段と、前記暗号ブロックを非公開鍵を用いて非公開鍵復号化アルゴリズムによって復号化し、前記分解手段により前記欠落データと前記セッション鍵のバイナリデータに分解する非公開鍵復号化手段と、前記非公開鍵復号化手段により得られた前記セッション鍵を用いて、共通鍵復号化アルゴリズムによって前記暗号メッセージを前記欠落圧縮メッセージに復号化する共通鍵復号化手段と、前記欠落圧縮メッセージに前記欠落データを埋め込んで前記圧縮メッセージを復元化する埋込み手段と、を備え、前記圧縮メッセージを前記解凍手段により解凍して前記入力されたメッセージに復号化し得る。
【0021】
本発明に係る入力されたメッセージを暗号化する方法は、バイナリデータを圧縮アルゴリズムによって圧縮する圧縮手段と、複数のバイナリデータを結合させて新たなバイナリデータを生成する結合手段と、を備えたコンピュータを用いてバイナリーデータとなっているメッセージを暗号化する方法であって、前記コンピュータの抜落手段が、該コンピュータに入力されてバイナリデータ化されたメッセージを前記圧縮手段により圧縮して生成した圧縮メッセージから、欠落データを抜き落として欠落圧縮メッセージと欠落データとする抜落ステップと、前記コンピュータの共通鍵暗号化手段が、前記欠落圧縮メッセージにセッション鍵を用いて共通鍵暗号化アルゴリズムによって暗号メッセージを生成する共通鍵暗号化ステップと、前記コンピュータの公開鍵暗号化手段が、前記欠落データと前記セッション鍵のバイナリデータを前記結合手段により結合させ、公開鍵を用いて公開鍵暗号化アルゴリズムによって暗号ブロックを生成する公開鍵暗号化ステップと、前記コンピュータのハイブリッド暗号化手段が、前記暗号メッセージと前記暗号ブロックのバイナリデータを前記結合手段により結合させてハイブリッド暗号メッセージを生成するハイブリッド暗号化ステップと、を含む。
【0022】
本発明に係る前記ハイブリッド暗号メッセージを復号化する方法は、前記圧縮手段により圧縮されたバイナリデータを解凍アルゴリズムによって解凍する解凍手段と、前記結合手段により結合された前記新たなバイナリデータを前記複数のバイナリデータに分解する分解手段と、を備えたコンピュータを用いて暗号化されたメッセージを復号化する方法であって、前記ハイブリッド暗号化手段により生成されたハイブリッド暗号メッセージを前記分解手段により前記暗号メッセージと前記暗号ブロックの2つのバイナリデータに分解するハイブリッド復号化ステップと、前記暗号ブロックを非公開鍵を用いて非公開鍵復号化アルゴリズムによって復号化し、前記分解手段により前記欠落データと前記セッション鍵のバイナリデータに分解する非公開鍵復号化ステップと、前記非公開鍵復号化ステップにおいて得られた前記セッション鍵を用いて、共通鍵復号アルゴリズムによって前記暗号メッセージを前記欠落圧縮メッセージに復号化する共通鍵復号化ステップと、前記欠落圧縮メッセージに前記欠落データを埋め込んで前記圧縮メッセージを復元化する埋込みステップと、を含み、前記圧縮メッセージを前記解凍手段により解凍して前記入力されたメッセージを復号化し得る。
【0023】
本発明に係るコンピュータ読み取り可能な記録媒体は、少なくとも前記暗号化又は復号化プログラムを記録している。
【0024】
本発明に係る、メッセージの送受信を機密保持性のない電気通信回線において安全に行なう方法は、前記記メッセージを暗号化する方法により、メッセージを暗号化して暗号メッセージを生成するステップ、前記暗号メッセージを電気通信回線を通して送信するステップ、受信した前記暗号メッセージを、前記メッセージを復号化する方法により前記メッセージに復号化するステップ、を含んでいる。
【0025】
【発明の実施の形態】
本発明の提案する新しいハイブリッド暗号は、共通鍵暗号方式で暗号化されるべき圧縮されたメッセージの情報から、その一部を抜落手段により抜き落とす作業を従来のハイブリッド暗号に追加して、セッション鍵と共にその抜き落とした情報を公開鍵暗号で暗号化するというものである。
【0026】
従って、たとえ共通鍵暗号が破られてもメッセージの情報が得られない設計にする。基本的な発想は共通鍵暗号で暗号化されるメッセージの情報を減らし、その分を公開鍵暗号で暗号化するというものである。しかし、更に安全性を高めるため、本発明のハイブリッド暗号の実施例においては、以下に説明する公開鍵暗号のブロックの構造とDeflate圧縮の構造の性質を最大限に活用する。
【0027】
本発明の実施態様において、新しいハイブリッド暗号を実装する際に使用するアルゴリズムは例えば以下の通りである。
(1)公開鍵暗号化アルゴリズム;PKCS#1(public−key−cryptography−specifications)で定義されたRSA(Rivest−Shamir−Adleman;1024bits)
(2)共通鍵暗号化アルゴリズム;AES[Advanced−Encryption−Standard]CBCモード(128bits)
(3)圧縮アルゴリズム ;GZIP(デフォルト仕様)
【0028】
上記(1)のRSAは、以下に説明する本発明の実施態様において公開鍵暗号化手段として用いられ、(2)のAES CBCモードは共通鍵暗号化手段として、(3)のGZIPは圧縮手段としてそれぞれ用いられる。また、本実施態様において、結合手段は2つのバイナリデータを単純に結合させる手段である。
【0029】
即ち、本発明の実施態様における新しいハイブリッド暗号のアルゴリズムは、コンピュータに入力されたメッセージを▲1▼バイナリデータに変換し、▲2▼バイナリデータに変換された当該メッセージを上記圧縮手段(GZIP)により圧縮して圧縮メッセージを生成し、▲3▼当該圧縮メッセージから抜落手段によりデータを抜き落として欠落圧縮メッセージと欠落データを生成する。この抜落手段によりデータを抜き落とす方法については以下の実施態様にて詳説される。続いて▲4▼上記欠落圧縮メッセージに上記セッション鍵を用いる共通鍵暗号化手段(AES CBCモード)によって暗号メッセージを生成し、▲5▼上記欠落データと上記セッション鍵のバイナリデータを上記結合手段により結合させ、公開鍵を用いて公開鍵暗号化手段(RSA)によって暗号ブロックを生成する。最後に▲6▼上記暗号メッセージと上記暗号ブロックのバイナリデータを前記結合手段により結合させるハイブリッド暗号化手段によりハイブリッド暗号メッセージを生成する。
【0030】
また、本発明の実施態様として上記アルゴリズムにより暗号化されたハイブリッド暗号メッセージを復号化して、元のメッセージを得るための解凍アルゴリズムは以下の通りである。まず、▲1▼上記暗号化アルゴリズムにより生成されたハイブリッド暗号メッセージを、分解手段を用いたハイブリッド復号化手段により上記暗号メッセージと上記暗号ブロックの2つのバイナリデータに分解する。以下に詳説するように、上記暗号化の際に上記暗号メッセージの長さの情報は上記暗号ブロックに復元情報として埋め込まれるため、上記ハイブリッド復号化手段により上記▲1▼の分解が可能となる。次に▲2▼上記暗号ブロックを上記RSAの非公開鍵を用いた非公開鍵復号化手段によって復号化し、上記欠落データと上記セッション鍵(128bits)のバイナリデータに分解し、▲3▼得られたセッション鍵を用いて、共通鍵復号化手段(AES CBCモード)によって上記暗号メッセージを上記欠落圧縮メッセージに復号化する。続いて▲4▼上記埋め込まれた復元情報に基づく埋込み手段により、欠落圧縮メッセージに上記欠落データを埋め込んで前記圧縮メッセージを復元化し、▲5▼上記圧縮メッセージを解凍手段により解凍して前記メッセージを復号化する。ここで解凍手段は、下記の実施態様で採用する上記圧縮アルゴリズム(GZIP)の解凍アルゴリズムを用いる。
【0031】
また、上述のような暗号化、復号化アルゴリズムをプログラム化して記録媒体に記録させたり、当該記録媒体から上記プログラムをコンピュータ等に読み込ませて暗号化・復号化装置として用いることもできる。そしてメッセージを暗号化、復号化することにより、送受信を機密保持性のない電気通信回線において安全に行なうことができる。
【0032】
まず、新しいハイブリッド暗号を提案するために、PGPでも使用されているRSA Laboratoriesによって定義された上記PKCS#1[Public Key Cryptography Standards]の公開鍵暗号の暗号化フォーマットを説明する。
【0033】
公開鍵暗号の暗号化フォーマット
RSAのなどの公開鍵暗号方式では、メッセージをBig−endian記法の多倍長整数として扱い、主に多倍長整数のべき乗剰余計算を行う。多倍長整数といっても実際は鍵長によって制限されるので、メッセージは鍵長である、べき乗剰余計算における法nの値以下のバイト数で分割しなければならない。つまり、公開鍵暗号方式も共通鍵暗号方式と同じいわゆるブロック暗号である。
【0034】
また解読をより困難にするため、公開鍵暗号の1ブロックは解読防止のためのパディングと呼ばれるランダムなバイナリデータで埋められている。例えば公開鍵暗号で1024bitsの鍵長のものを使用し、共通鍵暗号のセッション鍵で128bitsの鍵長のものを使用した場合、800bits以上もの情報がパディングとなる。
【0035】
PGPの場合は、公開鍵暗号でセッション鍵を暗号化するときには、さらに複数の共通鍵アルゴリズムを選択できるID値として1バイトを与える。ここで、PGPが公開鍵暗号のブロックに与える128bitsのセッション鍵のデータフォーマットは例えば以下のように表される。
D=ARG‖KEY (1)
D :PGPが公開鍵暗号でセッション鍵を暗号化するためのデータ(136bits)
ARG:共通鍵暗号化アルゴリズムのID値(8bits)
‖ :バイナリデータの結合
KEY:セッション鍵(128bits)
【0036】
この式(1)に示したデータDを公開鍵ブロックのデータとする。ここで、PGPの128bitsのセッション鍵を暗号化する場合の1024bitsの公開鍵暗号の1ブロックの構造を式(2)に示す。
【0037】
EB=00‖BT‖PS‖00‖D (2)
EB :公開鍵暗号の1ブロック(1024bits)
00 :1バイトの値(0)
‖ :バイナリデータの結合
BT :ブロックタイプ(送信者の公開鍵で暗号化するこの場合の値は02)
PS :パディング文字列(864bits)
D :共通鍵暗号化アルゴリズムID値とセッション鍵(136bits)
【0038】
本発明のハイブリッド暗号は、上記PKCS#1で定義される公開鍵暗号ブロックのパディング部分を、最小で8バイトまで小さくできるという性質を活用する。そして上述のメッセージから抜き落とした情報は、その伸縮可能なパディング部が小さくなることで得られるスペースを用いて公開鍵暗号ブロックに埋め込まれてゆくことになる。
【0039】
次に、共通鍵暗号を解読してもメッセージに復元できないようにするためにメッセージのデータを抜き落とす方法は、Deflate圧縮アルゴリズムの性質を利用する。それは、下記の3種類のそれぞれのブロックにおけるヘッダ情報、終端値を表す値、更にそれらの周辺の情報を抜き落とすという方法である(抜落手段)。そこで、ZIP、ZLIB、Gzipなどの圧縮アルゴリズムに使用されているDeflate圧縮のフォーマットを以下に説明する。
【0040】
Deflate圧縮のフォーマット
Deflate圧縮とは、LZ77圧縮アルゴリズムとHuffman符号化アルゴリズムの併用によりデータを圧縮する完全復元可能ないわゆる可逆圧縮である。
【0041】
LZ77圧縮では、入力されたデータストリームを1バイト文字列として扱い、文字列を先頭から読んで行く。そして同じ文字列が再度登場した場合に、ポインタ情報と置きかえることで情報圧縮する。ここでそのポインタ情報とは、現在位置から戻る距離(distance)と、戻った位置から復元する長さ(length)である。但し、長さは置き換えに対して有効となるためには、3以上であることが必要である。
【0042】
Deflate圧縮では、長さは最大で256バイト、距離は1から最大32キロバイト前までならば、重複した文字列への参照を行うことができる。ここでLZ77圧縮の簡単な例を示す。
【0043】
・圧縮可能データ
vvvvv
Blah blah blah!
・LZ77圧縮データ
Blah b[L=13,D=5]!
【0044】
またHuffman符号化とは、出現頻度の多い文字に少ないビット数の文字を割り当てて、元のデータストリームをバイナリデータとして出力する圧縮法である。ここでHuffman符号は、出力がバイナリデータであるにも拘わらず、符号語を一意に復元できるいわゆる瞬時符号である。そして異なる文字に対し異なる符号を与える方式では、平均符号長を最小にできるという特徴がある。
【0045】
Huffman符号化には、一般的な文章に現れる文字の出現頻度などからHuffman符号を前もって準備しておく静的な方法と、その文章の出現頻度を調べた上でHuffman符号を割り与える動的な方法がある。
【0046】
従って動的なHuffman符号化では、復元する時のために元の文字とHuffman符号との対応表であるHuffman Tableをバイナリデータに付加する必要がある。
【0047】
入力データが小さい場合、上記Huffman Tableが動的Huffman符号圧縮ブロックの圧縮率が悪くなる原因となる。よって、通常Huffman符号化のアルゴリズムは、動的なHuffman符号化を行った出力と、静的Huffman符号化を行って得られる出力を比べて、情報量の小さいほうを採用する。
【0048】
Deflate圧縮では、LZ77圧縮を行った後でHuffman符号化を行う。そのため、リテラル(literal)と呼ばれる1バイト文字だけでなく、LZ77圧縮における長さと距離の表現もHuffman符号化する。
【0049】
また、高い圧縮率を得るためHuffman符号の符号長は最大15bitsで制限する。更に動的なHuffman符号化を行った場合は、Huffman
TableをもHuffman符号化している。
【0050】
ここで、文字の出現頻度が与えられたときのHuffman符号化の簡単な例を表1に示す。
【0051】
【表1】
【0052】
Deflate圧縮において圧縮されたデータは、1つもしくは複数のブロックから構成される。ブロックは非圧縮ブロック、静的Huffman符号圧縮ブロック、動的Huffman符号圧縮ブロックの3種類がある。
【0053】
静的Huffman符号圧縮ブロックは予めHuffman Tableを用意しており、ブロックにヘッダ情報を付加しない。しかし、動的Huffman符号圧縮ブロックは出現頻度に応じてHuffman符号を与えるため、ブロックにHuffman Tableをヘッダ情報として付加しなければならない。
【0054】
ブロックの大きさは、非圧縮ブロックが65、535バイト以下に制限されているが、2種類のHuffman符号圧縮ブロックでは、任意の大きさになっている。
【0055】
また、非圧縮ブロックには、ヘッダ情報としてブロック長を付加するが、2種類のHuffman符号圧縮ブロックにはブロック長をヘッダ情報として与えない。そのため、上記2種類のHuffman符号圧縮ブロックの終わりには終端値が必要である。
【0056】
この終端値を使用するのは、2種類のHuffman符号圧縮ブロックがバイト単位で構成されている訳ではないので、通常は前のブロックの終端値と次のブロックの先頭の情報が同じ1バイト中に現れるためでもある。
【0057】
しかし、Deflate圧縮の出力はバイト単位であるため、最後のブロックが終わった直後の位置から、0が連続するbit列を与えて調整している。ブロックの先頭の3ビットは、それが最後のブロックであるのかという情報と上記3種類のうちのどのブロックであるのかという情報を示している。
【0058】
ここで、Deflate圧縮の3種類のブロックの構造を図2から図4に示す。
【0059】
次に、上記動的Huffman符号圧縮ブロックのHuffman Tableは、本発明の提案する新しいハイブリッド暗号のアルゴリズムにおいて重要な要素であるため、以下詳説することとする。
【0060】
まず、リテラルとブロックの終端値さらにLZ77圧縮における長さ及び距離の表現方法を説明する。
【0061】
リテラルと終端値及び長さは一連の値が与えられ、これらは一つのHuffman Tableでまとめられて圧縮される。値は0から285まで用意し、このうち1バイトを超える値は終端値(256)と、長さ(257から285)の値として割り当てられる。長さを示す値は、直後に追加bitを与えて実際の長さを表現する。この追加bitは、Huffman符号圧縮とは独立に存在する。
ここで、Deflate圧縮におけるリテラル/終端値の表現方法を表2に示す。
【0062】
【表2】
【0063】
また、LZ77圧縮における距離を表現するのは0から29までの値で、長さのときと同様に追加bitを与えることで実際の距離を表す。そして、距離は別のHuffman Tableを用いて圧縮される。ここで、Deflate圧縮における長さ/距離の表現方法を表3と表4に示す。
【0064】
【表3】
【0065】
【表4】
【0066】
更に、動的Huffman符号圧縮ブロックで与えられるHuffman符号は、辞書順に割り与えている。辞書順で符号を与えることで、動的Huffman符号を復元するための情報は、符号長を与えるのみで良くなる。
【0067】
つまり、リテラル/長さのHuffman Tableと距離のHuffman Tableは、0から最大値までのHuffman符号の符号長の連続として構成できる。Deflate圧縮では、この方法を用いてHuffman Tableの情報量を小さくしている。
【0068】
ここで、辞書順ならば符号長を与えただけでHuffman符号が得られるという簡単な例を表5に示す。簡単にするため、入力データはAからIまでのアルファベットのみで構成されているものとした。
【0069】
【表5】
【0070】
符号長の最大値は15であるが、通常リテラル/長さのためのHuffmanTableにおいて符号長0が連続するため、更に16から18までの値を追加して、符号長の連続を表現する。ここで、符号長の表現方法を表6で示す。
【0071】
【表6】
【0072】
そして、更に高い圧縮率を得るために、リテラル/長さと距離のための2つのHuffman Tableは、さらにHuffman符号で圧縮されている。つまり、19種類の符号長表現のためのHuffman符号を作成し、3bitsの値でその符号長を表現して、その3bitsの連続を符号長表現のためのHuffman Tableとする。
【0073】
符号長表現のためのHuffman Tableだけは、他の2つのHuffman Tableとは違い、0から最大値までの昇順のオーダーではなく、出現頻度を想定して作成されたオーダーの連続になっている。
【0074】
符号長表現のためのHuffman Tableのオーダーは、(16、17、18、0、8、7、9、6、10、5、11、4、12、3、13、2、14、1、15)の順であり、このオーダーで3bits列を構成する。
【0075】
これら3種類のHuffman Tableは、すべての値が登録されている訳ではない。Huffman Tableの値は、それぞれのオーダーに従って、その値が使用されている確率が低くなってゆく。
【0076】
そこで、Huffman Tableは、図4のなかで示したヘッダ情報にある、HLIT/HDIST/HCLENで得られる値から、その値で示される個数より後ろのオーダーの値をすべて0とみなして、その部分の情報をカットしている。
【0077】
Deflate圧縮の出力は、Little−endianで表現されている。しかし、Huffman符号だけは処理の高速化のために、与えられた符号を逆向きで出力する。
【0078】
以上のように、動的Huffman符号圧縮ブロックは、非常に高い圧縮率を得られる構造になっている。従ってDeflate圧縮は、大きな入力データを与えられた場合、通常では動的Huffman符号圧縮ブロックを選択することは明らかである。
【0079】
そこで本発明では、共通鍵暗号を解読してもメッセージに復元できないようにするため、上述のようなDeflate圧縮アルゴリズムの性質を利用して、情報の抜き落しを行なう。即ち、上記3種類のそれぞれのブロックにおけるヘッダ情報、終端値を表す値さらにそれらの周辺の情報を抜き落とす方法を採用する(抜落手段)。
【0080】
圧縮されたメッセージの復元を困難にするためには、ヘッダ情報を抜き落とすのが最も効果的である。これは、Deflate圧縮において動的Huffman符号圧縮ブロックが選択されるのが最も自然であり、かつ動的Huffman符号圧縮ブロックにおけるヘッダ情報であるHuffman Tableが無ければ、メッセージへの復元がまず不可能であるためである。
【0081】
終端値や周辺の情報も抜き出すが、これは動的Huffman符号圧縮ブロックにおいてHuffman Tableのない状態で攻撃を受けた場合に有効となる。これらの作業により、共通鍵暗号で暗号化するデータをほぼ完全なランダムバイナリデータとすることができる。
【0082】
また、ヘッダ情報や終端値などはバイナリデータであるが、抜き落とす情報はバイト単位で行う。これは、公開鍵暗号のパディング部がバイト単位であるためであり、更にハイブリッド暗号の暗号化/復号化処理の高速化のためでもある。
【0083】
ここで、公開鍵暗号のブロックの個数は複数であってもよい。高々数回公開鍵暗号の暗号化処理が追加した程度で、それほど極端に暗号化/復号化処理の速度は落ちないと期待されるからである。又、ブロック毎の僅かの情報すら渡さないという高度な安全性を追求するために、Deflate圧縮で生成した全てのブロックにおいて抜き落とす情報量を十分に確保するためでもある。
【0084】
最後に、抜き取る情報量は公開鍵暗号のブロック数が確定し、抜き落とす情報量の上限が決定したあとで、このハイブリッド暗号は、抜き落とす情報量をある程度ランダムにするという作業を行う。
【0085】
つまり、抜き落とす情報を上限一杯に抜き落とさないようにするのである。この作業を行うことで、さらに解読が困難になることが期待される。
【0086】
ここで新しいハイブリッド暗号のアルゴリズムを図1に示し、以下に上記アルゴリズムを効率良く実装する実施例について説明し、実施例の実効性について検討する。尚図1中、Zは圧縮手段を、Mは抜落手段を、‖は結合手段を、Esは共通鍵暗号化手段を、Epは公開鍵暗号化手段を、R64はradix−64変換を、また実線はメッセージの流れを,点線は鍵の作用をそれぞれ表す。
【0087】
(A) PGPでは、パケット方式を用いて各部品の属性や長さ、更に使用したアルゴリズムなどを識別している。しかし、本発明のハイブリッド暗号では、
1.共通鍵暗号部から正しいセッション鍵を用いて復号化したものすらランダムなバイナリデータであるよう設計すべきである。
2.公開鍵で保護できる情報量の上限値をできるだけ大きくとれるよう設計すべきである。
【0088】
以上の理由から、あえて識別子を用いるパケット方式は採用せず、アルゴリズムも選別しないことにする。
【0089】
このようにしても本発明のハイブリッド暗号の暗号文は、RSAで暗号化する公開鍵暗号の部分が1乃至複数個と、AESで暗号化する共通鍵暗号の部分で構成されるので、その識別にはそれぞれ別々にASCII Armourをかけることで識別の問題は解決できる。
【0090】
また、公開鍵暗号の1ブロックのなかで数種類のデータを暗号化することになるため、そのデータの識別が必要だが、公開鍵暗号のブロックに渡すデータのフォーマットを定義することで、その識別子は必要なくなる。そのデータフォーマットは以下に式(3)、(4)において示す。
【0091】
次に、PGPは圧縮アルゴリズムを必ずしも使用しなくてもよいという仕様だが、本発明のハイブリッド暗号では、必ず使用しなければならない。どんな小さなメッセージでも、必ずGzipがHuffman符号化されたどちらかのブロックを選択するからである。
【0092】
また、PGPのDeflate圧縮は、LZ77圧縮における移動窓の大きさにあたるバッファ値がデフォルト仕様の1/4とかなり小さくしているが、この制限は圧縮率がかなり悪くなるため採用しないこととする。
【0093】
最後に、抜き落とす情報を得るためには、Deflate圧縮された各ブロックについて、出力のどこからヘッダ情報で、どこに終端値があるのかという情報が必要である。しかし、Huffman符号化された出力をもう一度走査して、ブロックの終端を検知しなければならないのでは、2度手間となり、暗号化/復号化処理の速度が遅くなる。
【0094】
これについては、予めDeflate圧縮する際の返り値として、各ブロックの大きさも出力として与える機能をGzipに追加することで解決することができる。
【0095】
(B)公開鍵暗号を複数回使用することについて
本実施例で使用するRSAは、1024bitsの鍵長しかない。しかし、Deflate圧縮されるデータにおいて、使用される文字の種類やその出現頻度、更にLZ77圧縮の出力結果などにもよるが、動的Huffman符号圧縮ブロックのヘッダ情報は、大きなときには700bits以上になる。
【0096】
また、メッセージの情報量が大きい場合、RSAの公開鍵暗号ブロックを1個とすると、Deflate圧縮によって得られた各ブロックの1ブロック当りの抜き落とす情報量が小さくなってしまう。Deflate圧縮の出力には複数のブロックが用いられるためである。
【0097】
従って、本実施例ではRSAがそれぞれのブロックについて常に十分な情報量を保護するために、Deflate圧縮のブロックが複数個生成された場合は、ブロックの個数だけRSAの公開鍵暗号ブロックを作成することが望ましい。
【0098】
しかし、公開鍵暗号の複数回使用は、ハイブリッド暗号の暗号化/復号化処理の速度にそれほど大きな影響を与えない。それは、Deflate圧縮ではどこでブロックを複数に分ければ効果的なのかを32キロbits毎に判断しているためである。例えば電子メールで交換するテキストデータの情報量で考えても、ブロック数は多くても高々3個程度であり、また相当巨大な入力データでも、出力は10ブロック以上にならないのである。
【0099】
(C)Deflate圧縮されたメッセージを抜き落とす作業について
RSAを1024bitsで使用した場合、936bits(117バイト)が1ブロックのデータとして扱える最大値である。しかし、復号化のときの復元情報に使用するために4バイトを使用するため、抜き落とすデータの最大値は113バイトになる。
【0100】
更に、抜き落とす情報量をある程度ランダムにするという設計にするため、実装したアルゴリズムでは、最大値113バイトの約半分である57から113に収まる乱数を生成して、その値を公開鍵暗号の1ブロック毎の抜き落とすバイト数としてよい。但し、最初の公開鍵暗号のブロックはセッション鍵を付加する分の16バイト(128bits)だけ更に短くしておく必要がある。
【0101】
また、共通鍵暗号が暗号化したデータをランダムなバイナリデータに見せるため、そのデータは、ヘッダ情報と終端値を落とされた各ブロックの残りをそのまま結合したものとする。従って、復号化するには抜き落とした情報を正確に埋めるための復元情報が必要となる。
【0102】
これは、抜き落とされて残ったブロックの長さをその情報とする方法で解決できる。そしてその残ったブロックの長さが何バイトであるかの情報は、符号無し整数4バイト値として与え、その値はLittle−endianにされて、公開鍵暗号のブロックに渡すデータの先頭に付加してよい。
【0103】
ここで、ブロックの残りの長さを4バイトで表現するのは、符号無し整数2バイトでは、65535バイトまでしか表せないが、4バイトならば、約512メガバイトまで表せるためである。即ち、Deflate圧縮のブロック長が高々32キロbits(4096バイト)の整数倍であることを考えれば、残ったブロックの長さは512メガバイトまでの値で十分に収まるためである。
【0104】
(D) 公開鍵暗号の1ブロックにおいて、識別子を使用せずに各データを識別するための方法について
その識別方法とは、終端値及びその周辺の情報を表すフッタ情報を10バイトで固定するという制限を加えることである。そうすることで、ヘッダ情報に抜き落とすバイト数の残り全てを与えられていれば、ヘッダ情報は復号化のとき正確にフッタ情報と識別することができるようになる。
【0105】
従って、公開鍵暗号のブロックに渡すデータフォーマットは残ったブロックの長さ4バイトの値、ブロックのヘッダ情報そして10バイトのフッタ情報(最初の公開鍵ブロックならばさらに16バイトのセッション鍵)と続くデータストリームとして構成することができる。
【0106】
ここで、抜き落とす量をランダムに選択した結果が仮に720bitsだった場合の最初の公開鍵暗号のブロックに渡すデータフォーマットを式(3)に示し、2番目以降の公開鍵暗号のブロックに渡すデータフォーマットを式(4)に示す。
【0107】
D=LENGTH‖HEADER‖FOOTER‖KEY (3)
D :最初の公開鍵暗号ブロックに与えるデータ(720bits)
LENGTH:抜き落とされて残ったDeflate圧縮ブロックの長さ(32bits)
‖ :バイナリデータの結合
HEADER:Deflate圧縮ブロックのヘッダ情報(480bits)
FOOTER:Deflate圧縮ブロックの終端値を含む情報(80bits)
KEY :セッション鍵(128bits)
【0108】
D=LENGTH‖HEADER‖FOOTER (4)
D :2番目以降の公開鍵暗号ブロックに与えるデータ(720bits)
‖ :バイナリデータの結合
LENGTH:抜き落とされて残ったDeflate圧縮ブロックの長さ(32bits)
HEADER:Deflate圧縮ブロックのヘッダ情報(608bits)
FOOTER:Deflate圧縮ブロックの終端値を含む情報(80bits)
【0109】
上記本発明のハイブリッド暗号が処理されてゆく例を図5に示す。なお、この例ではDeflate圧縮が3ブロックを出力した場合である。
【0110】
(E) 公開鍵暗号の構成方法について
上記実施例では公開鍵暗号ブロックをDeflate圧縮ブロックの数だけ作成したが、公開鍵暗号ブロックの鍵長をを十分大きくして、1ブロックで保護してもよい。
【0111】
既存のハイブリッド暗号で現在使用されているものは、1024bitsから4096bits程度の鍵長である。しかし、この程度の鍵長の公開鍵暗号の攻撃に必要な計算量は、共通鍵暗号を総当り攻撃してセッション鍵を見つけるまでの計算量よりもかなり小さいものである。
【0112】
RSAの攻撃に必要なおよその計算量は試算されているため、それを考慮して既存の公開鍵暗号の将来を考えると、公開鍵の鍵の長さは最低でも8192bits以上の長さのものが好ましい。
【0113】
次に、本実施例では公開鍵暗号としてRSAを用いたが、公開鍵のアルゴリズムは本発明のハイブリッド暗号の本質には影響せず、Elgamal、楕円曲線暗号等であっても良い。
【0114】
従って、従来の公開鍵暗号の役割を楕円曲線暗号、量子暗号などの次世代の暗号へと置き換えることにより、上記の公開鍵暗号の鍵長肥大の問題も解決される。そして、本発明のハイブリッド暗号の信頼性はさらに向上することになる。
【0115】
例えば量子暗号に本発明のメッセージ抜落しアルゴリズムを加えることにより、従来の量子暗号方式以上の信頼性が得られることになる。量子暗号は鍵配送にのみ使用されるため、安全な通信を共通鍵(セッション鍵)のみで確保する従来のハイブリッド暗号と同方式と見ることもできるからである。
【0116】
(F) 共通鍵暗号の構成方法について
上述の公開鍵暗号と同様、本発明のハイブリッド暗号方式では共通鍵暗号のアルゴリズムにも影響を受けることがない。上記のように本発明に係るハイブリッド暗号における共通鍵暗号部への攻撃は、仮にセッション鍵が正しいものでも得られるデータがほぼ完全なランダムバイナリデータであるため、共通鍵暗号のアルゴリズムに拘わらず、総当りによるセッション鍵の特定が必要となる。
【0117】
そして、セッション鍵を特定してから、さらに抜き落とした情報やその位置を特定しなければならない。結局公開鍵暗号で暗号化した全てのデータを総当りするしかないのである。
【0118】
従って、本発明の提案するハイブリッド暗号を用いれば、共通鍵暗号暗号で全く保護しないメッセージの送信も可能である。公開鍵暗号として強度が十分なものを選択すれば、二重に鍵をかける必要を省いても安全にメッセージを送信可能なのである。
【0119】
(G)圧縮アルゴリズムについて
圧縮アルゴリズムとしては、圧縮することで復元する時に歪が発生しないアルゴリズムを必ず使用する必要がある。
【0120】
上記実施例で使用したDeflate圧縮では、Huffman符号が用いられている。この場合メッセージの出現頻度を必要とすることが重要な要素となっている。
【0121】
従って、Huffman符号に代えて算術符号を使用してもよい。算術符号とは生起確率を0以上1未満の小数で表現し、それを用いて全体を符号化する圧縮アルゴリズムであり、小数をそのまま符合として用いる性質をもつ。
【0122】
Huffman符号をこの算術符号に置き換えた場合、本発明のハイブリッド暗号はさらに信頼性が高まる。
【0123】
算術符号が本ハイブリッド暗号と相性が非常によいのは、Huffman符号よりもさらに高速で、高い圧縮率が得られるとされていることもあるが、算術符号には、元の文字が特定のbit文字として与えられるわけではないという特徴があるためである。
【0124】
この特徴を利用することで、共通鍵暗号で暗号化されるバイナリデータのランダム化に更に踏み込むことができる。
【0125】
【発明の効果】
上述したように、本発明に係るハイブリッド暗号における共通鍵暗号部への攻撃は、仮にセッション鍵が正しいものでも得られるデータがほぼ完全なランダムバイナリデータとなっている。しかも共通鍵は1度きり使い捨てのランダムなセッション鍵であるため、まずは共通鍵暗号のアルゴリズムとは無関係に、総当りによるセッション鍵の特定が必要となる。
【0126】
そして、セッション鍵を特定できても、更に抜き落とした情報やその位置を特定しなければならない。即ち、上述のように結局公開鍵暗号で暗号化した全てのデータを総当りするしかないのである。
【0127】
また、共通鍵暗号部への攻撃に必要な計算量は、桁違いに大きくなっている。従来のハイブリッド暗号ならば共通鍵暗号の総当り攻撃は、常に2128種類(最大でも2256種類)のセッション鍵の検索であった。しかし、実施例のハイブリッド暗号の場合、公開鍵暗号がnブロック生成された場合を考えると、共通鍵暗号部の総当り攻撃数は下式の回数にも上る。
【0128】
【数1】
【0129】
更に、このハイブリッド暗号には、公開鍵暗号の鍵長が長くなるに従って、抜き落とせるバイト量が飛躍的に大きくなるという利点がある。従って抜き落しによって更に共通鍵暗号部への攻撃は困難となる。
【0130】
以上のことから、ハイブリッド暗号における共通鍵暗号攻撃の無効化は実現されている。
【0131】
また、共通鍵暗号で暗号化する情報落ちのバイナリデータすら解読できないため、共通鍵暗号の開発は、少なくとも本ハイブリッド暗号のためにはもう必要無いということもできる。上記のように本発明のハイブリッド暗号アルゴリズムを用いれば、共通鍵で保護しないメッセージ送信も可能である。
【0132】
ただし、128bits以上の共通鍵暗号で保護する場合は、総当り攻撃などの通常に考えうる攻撃に対して十分に強力であり、ランダム化のために使用しても非常に効果的である。
【0133】
以上より明らかなように、本発明に係るハイブリッド暗号は、従来のハイブリッド方式の暗号化アルゴリズムを堅持して安易に共通鍵の鍵長を単純に伸ばしたものよりも遥かに優れた方式である。
【図面の簡単な説明】
【図1】本発明のハイブリッド暗号化のブロック図。図中Zは圧縮手段を、Mは抜落手段を、‖は結合手段を、Esは共通鍵暗号化手段を、Epは公開鍵暗号化手段を、R64はradix−64変換を、それぞれ表す。
【図2】本発明のDeflate圧縮における非圧縮ブロック。
【図3】本発明のDeflate圧縮における静的Huffman符号圧縮ブロック。
【図4】本発明のDeflate圧縮における動的Huffman符号圧縮ブロック。
【図5】ハイブリッド暗号の処理の流れ図。
【図6】PGPのブロック図。
Claims (8)
- コンピュータを、
バイナリデータを圧縮する圧縮手段、
複数のバイナリデータを結合させる結合手段、
該コンピュータに入力されたメッセージを前記圧縮手段により圧縮した圧縮メッセージから、一部データを抜き落として欠落圧縮メッセージと欠落データとを生成する抜落手段、
セッション鍵を用いて共通鍵暗号化アルゴリズムによって前記欠落圧縮メッセージを暗号メッセージに暗号化する共通鍵暗号化手段、
前記欠落データと前記セッション鍵を前記結合手段により結合させ、公開鍵を用いて公開鍵暗号化アルゴリズムによって暗号ブロックに暗号化する公開鍵暗号化手段、
前記暗号メッセージと前記暗号ブロックを前記結合手段により結合させてハイブリッド暗号メッセージを生成するハイブリッド暗号化手段、
として機能させ、前記入力されたメッセージを暗号化するプログラム。 - 請求項1に記載のプログラムにより生成されたハイブリッド暗号メッセージを前記入力されたメッセージに復号化するプログラムであって、
コンピュータを、
前記圧縮手段により圧縮されたバイナリデータを解凍する解凍手段、
前記結合手段により結合されたバイナリデータを前記複数のバイナリデータに分解する分解手段、
前記ハイブリッド暗号メッセージを前記分解手段により前記暗号メッセージと前記暗号ブロックに分解するハイブリッド復号化手段、
前記暗号ブロックを非公開鍵を用いて非公開鍵復号化アルゴリズムによって復号化し、前記分解手段により前記欠落データと前記セッション鍵に分解する非公開鍵復号化手段、
前記セッション鍵を用いて、共通鍵復号化アルゴリズムによって前記暗号メッセージを前記欠落圧縮メッセージに復号化する共通鍵復号化手段、
前記欠落圧縮メッセージに前記欠落データを埋め込んで前記圧縮メッセージを復元化する埋込み手段、
として機能させ、前記圧縮メッセージを前記解凍手段により解凍して前記入力されたメッセージに復号化するプログラム。 - バイナリデータを圧縮する圧縮手段と、
複数のバイナリデータを結合させる結合手段と、
を備える、メッセージを暗号化する装置であって、
該装置に入力されたメッセージを前記圧縮手段により圧縮した圧縮メッセージから、一部データを抜き落として欠落圧縮メッセージと欠落データとを生成する抜落手段と、
セッション鍵を用いて共通鍵暗号化アルゴリズムによって前記欠落圧縮メッセージを暗号メッセージに暗号化する共通鍵暗号化手段と、
前記欠落データと前記セッション鍵を前記結合手段により結合させ、公開鍵を用いて公開鍵暗号化アルゴリズムによって暗号ブロックに暗号化する公開鍵暗号化手段と、
前記暗号メッセージと前記暗号ブロックを前記結合手段により結合させてハイブリッド暗号メッセージを生成するハイブリッド暗号化手段と、
からなるメッセージを暗号化する装置。 - 前記圧縮手段により圧縮されたバイナリデータを解凍する解凍手段と、
前記結合手段により結合されたバイナリデータを前記複数のバイナリデータに分解する分解手段と、
を備える、請求項3に記載の装置により生成されたハイブリッド暗号メッセージを前記入力されたメッセージに復号化する装置であって、
前記ハイブリッド暗号メッセージを前記分解手段により前記暗号メッセージと前記暗号ブロックに分解するハイブリッド復号化手段と、
前記暗号ブロックを非公開鍵を用いて非公開鍵復号化アルゴリズムによって復号化し、前記分解手段により前記欠落データと前記セッション鍵に分解する非公開鍵復号化手段と、
前記セッション鍵を用いて、共通鍵復号化アルゴリズムによって前記暗号メッセージを前記欠落圧縮メッセージに復号化する共通鍵復号化手段と、
前記欠落圧縮メッセージに前記欠落データを埋め込んで前記圧縮メッセージを復元化する埋込み手段と、
を備え、前記圧縮メッセージを前記解凍手段により解凍して前記入力されたメッセージに復号化する装置。 - バイナリデータを圧縮する圧縮手段と、
複数のバイナリデータを結合させる結合手段と、
を備えたコンピュータを用いてメッセージを暗号化する方法であって、
前記コンピュータの抜落手段が、該コンピュータに入力されたメッセージを前記圧縮手段により圧縮した圧縮メッセージから、一部データを抜き落として欠落圧縮メッセージと欠落データとを生成する抜落ステップと、
前記コンピュータの共通鍵暗号化手段が、セッション鍵を用いて共通鍵暗号化アルゴリズムによって前記欠落圧縮メッセージを暗号メッセージに暗号化する共通鍵暗号化ステップと、
前記コンピュータの公開鍵暗号化手段が、前記欠落データと前記セッション鍵を前記結合手段により結合させ、公開鍵を用いて公開鍵暗号化アルゴリズムによって暗号ブロックに暗号化する公開鍵暗号化ステップと、
前記コンピュータのハイブリッド暗号化手段が、前記暗号メッセージと前記暗号ブロックを前記結合手段により結合させてハイブリッド暗号メッセージを生成するハイブリッド暗号化ステップと、
を含む、前記入力されたメッセージを暗号化する方法。 - 前記圧縮手段により圧縮されたバイナリデータを解凍する解凍手段と、
前記結合手段により結合されたバイナリデータを前記複数のバイナリデータに分解する分解手段と、
を備えたコンピュータを用いて、請求項5に記載の方法により生成されたハイブリッド暗号メッセージを前記入力されたメッセージに復号化する方法であって、前記ハイブリッド暗号メッセージを前記分解手段により前記暗号メッセージと前記暗号ブロックに分解するハイブリッド復号化ステップと、
前記暗号ブロックを非公開鍵を用いて非公開鍵復号化アルゴリズムによって復号化し、前記分解手段により前記欠落データと前記セッション鍵に分解する非公開鍵復号化ステップと、
前記セッション鍵を用いて、共通鍵復号化アルゴリズムによって前記暗号メッセージを前記欠落圧縮メッセージに復号化する共通鍵復号化ステップと、
前記欠落圧縮メッセージに前記欠落データを埋め込んで前記圧縮メッセージを復元化する埋込みステップと、
を含み、前記圧縮メッセージを前記解凍手段により解凍して前記入力されたメッセージに復号化する方法。 - 請求項1又は2に記載されたプログラムを記録した、コンピュータ読み取り可能な記録媒体。
- 請求項5に記載のメッセージを暗号化する方法により、メッセージを暗号化して暗号メッセージを生成するステップ、
前記暗号メッセージを電気通信回線を通して送信するステップ、
受信した前記暗号メッセージを、請求項6に記載のメッセージを復号化する方法により前記メッセージに復号化するステップ、
を含む、メッセージの送受信を、機密保持性のない電気通信回線において安全に行なう方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002173223A JP3650611B2 (ja) | 2002-06-13 | 2002-06-13 | 暗号化及び復号化するためのプログラム |
US10/457,628 US20030235307A1 (en) | 2002-06-13 | 2003-06-09 | Encryption and decryption program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002173223A JP3650611B2 (ja) | 2002-06-13 | 2002-06-13 | 暗号化及び復号化するためのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004023293A JP2004023293A (ja) | 2004-01-22 |
JP3650611B2 true JP3650611B2 (ja) | 2005-05-25 |
Family
ID=29727902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002173223A Expired - Fee Related JP3650611B2 (ja) | 2002-06-13 | 2002-06-13 | 暗号化及び復号化するためのプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20030235307A1 (ja) |
JP (1) | JP3650611B2 (ja) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998053637A1 (en) | 1997-05-21 | 1998-11-26 | E.S.P. Communications, Inc. | System, method and apparatus for 'caller only' initiated two-way wireless communication with caller generated billing |
US7003304B1 (en) | 1997-09-19 | 2006-02-21 | Thompson Investment Group, Llc | Paging transceivers and methods for selectively retrieving messages |
US6253061B1 (en) | 1997-09-19 | 2001-06-26 | Richard J. Helferich | Systems and methods for delivering information to a transmitting and receiving device |
US6636733B1 (en) | 1997-09-19 | 2003-10-21 | Thompson Trust | Wireless messaging method |
US6826407B1 (en) | 1999-03-29 | 2004-11-30 | Richard J. Helferich | System and method for integrating audio and visual messaging |
US6983138B1 (en) | 1997-12-12 | 2006-01-03 | Richard J. Helferich | User interface for message access |
US8972590B2 (en) | 2000-09-14 | 2015-03-03 | Kirsten Aldrich | Highly accurate security and filtering software |
US7760882B2 (en) * | 2004-06-28 | 2010-07-20 | Japan Communications, Inc. | Systems and methods for mutual authentication of network nodes |
US7725716B2 (en) * | 2004-06-28 | 2010-05-25 | Japan Communications, Inc. | Methods and systems for encrypting, transmitting, and storing electronic information and files |
US20060036852A1 (en) * | 2004-08-16 | 2006-02-16 | Kwok-Yan Leung | Byte-based data-processing device and the processing method thereof |
US20060146805A1 (en) * | 2005-01-05 | 2006-07-06 | Krewson Brian G | Systems and methods of providing voice communications over packet networks |
US7598855B2 (en) | 2005-02-01 | 2009-10-06 | Location Based Technologies, Inc. | Apparatus and method for locating individuals and objects using tracking devices |
WO2008024159A2 (en) * | 2006-07-13 | 2008-02-28 | Dolby Laboratories Licensing Corporation | Codec-independent encryption of material that represents stimuli intended for human perception |
US20080046879A1 (en) * | 2006-08-15 | 2008-02-21 | Michael Hostetler | Network device having selected functionality |
GB2456996B (en) | 2006-12-26 | 2011-09-21 | Fujitsu Ltd | Data compression apparatus and data decompression apparatus |
US9111189B2 (en) | 2007-10-31 | 2015-08-18 | Location Based Technologies, Inc. | Apparatus and method for manufacturing an electronic package |
US8102256B2 (en) | 2008-01-06 | 2012-01-24 | Location Based Technologies Inc. | Apparatus and method for determining location and tracking coordinates of a tracking device |
US8244468B2 (en) | 2007-11-06 | 2012-08-14 | Location Based Technology Inc. | System and method for creating and managing a personalized web interface for monitoring location information on individuals and objects using tracking devices |
US8224355B2 (en) | 2007-11-06 | 2012-07-17 | Location Based Technologies Inc. | System and method for improved communication bandwidth utilization when monitoring location information |
US8774827B2 (en) * | 2007-04-05 | 2014-07-08 | Location Based Technologies, Inc. | Apparatus and method for generating position fix of a tracking device in accordance with a subscriber service usage profile to conserve tracking device power |
US8497774B2 (en) * | 2007-04-05 | 2013-07-30 | Location Based Technologies Inc. | Apparatus and method for adjusting refresh rate of location coordinates of a tracking device |
US20090006399A1 (en) * | 2007-06-29 | 2009-01-01 | International Business Machines Corporation | Compression method for relational tables based on combined column and row coding |
US8654974B2 (en) * | 2007-10-18 | 2014-02-18 | Location Based Technologies, Inc. | Apparatus and method to provide secure communication over an insecure communication channel for location information using tracking devices |
WO2009109884A1 (en) * | 2008-03-05 | 2009-09-11 | Koninklijke Philips Electronics N.V. | Cryptographic system |
GB2459735A (en) * | 2008-05-06 | 2009-11-11 | Benjiman John Dickson Whitaker | Hybrid asymmetric / symmetric encryption scheme which obviates padding |
US20100287231A1 (en) * | 2008-11-11 | 2010-11-11 | Esignet, Inc. | Method and apparatus for certifying hyperlinks |
US8442988B2 (en) | 2010-11-04 | 2013-05-14 | International Business Machines Corporation | Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data |
US20130259395A1 (en) * | 2012-03-30 | 2013-10-03 | Pascal Massimino | System and Method of Manipulating a JPEG Header |
US20140196079A1 (en) * | 2012-10-10 | 2014-07-10 | Red.Com, Inc. | Video distribution and playback |
US9811680B2 (en) * | 2015-06-04 | 2017-11-07 | Microsoft Technology Licensing, Llc | Secure storage and sharing of data by hybrid encryption using predefined schema |
AU2016320726A1 (en) * | 2015-09-09 | 2018-04-26 | Rodney Smith | A method of protecting data using compression algorithms |
CN107911370A (zh) * | 2017-11-22 | 2018-04-13 | 深圳市智物联网络有限公司 | 一种数据加密方法及装置、数据解密方法及装置 |
US11019042B1 (en) * | 2018-03-23 | 2021-05-25 | Northrop Grumman Systems Corporation | Data assisted key switching in hybrid cryptography |
US11403420B2 (en) * | 2018-08-31 | 2022-08-02 | Visa International Service Association | System, method, and computer program product for maintaining user privacy in advertisement networks |
US11431498B2 (en) * | 2019-02-12 | 2022-08-30 | Nxm Labs, Inc. | Quantum-augmentable hybrid encryption system and method |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5565909A (en) * | 1992-08-31 | 1996-10-15 | Television Computer, Inc. | Method of identifying set-top receivers |
US5499298A (en) * | 1994-03-17 | 1996-03-12 | National University Of Singapore | Controlled dissemination of digital information |
US5633932A (en) * | 1995-12-19 | 1997-05-27 | Intel Corporation | Apparatus and method for preventing disclosure through user-authentication at a printing node |
US6728269B1 (en) * | 1996-09-05 | 2004-04-27 | Hughes Electronics Corporation | Device and method for efficient delivery of redundant national television signals |
US6684330B1 (en) * | 1998-10-16 | 2004-01-27 | Tecsec, Inc. | Cryptographic information and flow control |
US7233942B2 (en) * | 2000-10-10 | 2007-06-19 | Truelocal Inc. | Method and apparatus for providing geographically authenticated electronic documents |
US7143289B2 (en) * | 2000-10-30 | 2006-11-28 | Geocodex Llc | System and method for delivering encrypted information in a communication network using location identity and key tables |
-
2002
- 2002-06-13 JP JP2002173223A patent/JP3650611B2/ja not_active Expired - Fee Related
-
2003
- 2003-06-09 US US10/457,628 patent/US20030235307A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2004023293A (ja) | 2004-01-22 |
US20030235307A1 (en) | 2003-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3650611B2 (ja) | 暗号化及び復号化するためのプログラム | |
US6122379A (en) | Method and apparatus for performing simultaneous data compression and encryption | |
US9043876B2 (en) | Cryptographic method and apparatus | |
EP1107504B1 (en) | Method of updating encryption keys in a data communication system | |
KR101737299B1 (ko) | 인코더, 디코더 및 방법 | |
US6266412B1 (en) | Encrypting speech coder | |
US20070028088A1 (en) | Polymorphic encryption method and system | |
US20170155504A1 (en) | Compressing encrypted data without the encryption key | |
WO2007052477A1 (ja) | メッセージ認証装置、メッセージ認証方法、メッセージ認証プログラムとその記録媒体 | |
EP1094634A2 (en) | Automatic resynchronization of crypto-sync information | |
JP6608436B2 (ja) | エンコーダ、デコーダ、及び部分的データ暗号化を用いる方法 | |
US7203834B1 (en) | Method of updating encryption keys in a data communication system | |
JP4703805B2 (ja) | 暗号化装置、暗号化方法、復号化装置、復号化方法および通信システム | |
Suresh et al. | Separable reversible data hiding using Rc4 algorithm | |
Al-Smadi et al. | Files cryptography based on one-time pad algorithm | |
Xie et al. | Multimedia data encryption via random rotation in partitioned bit streams | |
KR20030019365A (ko) | 메시지 인증 코드에 대한 키 정수 치환 발생 방법 및 장치 | |
Akhter et al. | Bangla and English text cryptography based on modified blowfish and Lempel-Ziv-Welch algorithm to minimize execution time | |
Lookabaugh | Selective encryption, information theory and compression | |
Rachmawati et al. | Enhancing file security by using vigenere cipher and even rodeh code algorithm | |
CN110581759A (zh) | Uoec-hex对称加密算法 | |
Triana et al. | Blowfish algorithm and Huffman compression for data security application | |
Jasuja et al. | Crypto-compression system: an integrated approach using stream cipher cryptography and entropy encoding | |
JPH10294669A (ja) | データ圧縮を伴う暗号通信方法 | |
Girdhar et al. | Role of data compression in cyber security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050208 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050218 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |