JP2003179595A - 暗号化通信方法、暗号化通信システム、暗号化通信を行うコンピュータ、記憶媒体及びプログラム - Google Patents

暗号化通信方法、暗号化通信システム、暗号化通信を行うコンピュータ、記憶媒体及びプログラム

Info

Publication number
JP2003179595A
JP2003179595A JP2001379888A JP2001379888A JP2003179595A JP 2003179595 A JP2003179595 A JP 2003179595A JP 2001379888 A JP2001379888 A JP 2001379888A JP 2001379888 A JP2001379888 A JP 2001379888A JP 2003179595 A JP2003179595 A JP 2003179595A
Authority
JP
Japan
Prior art keywords
algorithm
decryption
encryption
decryption algorithm
encryption algorithm
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
JP2001379888A
Other languages
English (en)
Inventor
Ichiro Suzuki
一郎 鈴木
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.)
Celestar Lexico Sciences Inc
Original Assignee
Celestar Lexico Sciences Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Celestar Lexico Sciences Inc filed Critical Celestar Lexico Sciences Inc
Priority to JP2001379888A priority Critical patent/JP2003179595A/ja
Publication of JP2003179595A publication Critical patent/JP2003179595A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 暗号化/復号化アルゴリズムに対し、送信側
と受信側での整合性を保証し、頻繁な変更を可能にし、
高い暗号強度と小さな処理コストを両立した暗号化通信
を提供する。 【解決手段】 送信側から、強度の高い暗号化アルゴリ
ズムAにより暗号化アルゴリズムC1に対応する復号化
アルゴリズムD1を暗号化して受信側に送信し、受信側
ではこれをアルゴリズムAに対応する復号化アルゴリズ
ムBにより復号化する。以降送信側から、送信対象デー
タExをC1によって暗号化して送信し、受信側ではこ
れをD1で復号化する。また送信側では適宜なタイミン
グで暗号化アルゴリズムC2、C3・・に対応する復号
化アルゴリズムD2、D3・・を送信する。そして送信
対象データExをC2、C3・・で暗号化して送信し、
受信側ではこれをD2、D3・・で復号化する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、暗号化通信につい
ての技術に関し、更に詳しくは、復号化アルゴリズムを
実装したモジュールをネットワークで伝送する技術、伝
送されてきた複合化アルゴリズムを受信側処理に組み込
む技術、復号化アルゴリズムを実装したモジュールを暗
号化してネットワークで伝送する技術、伝送されてきた
暗号化された複合化モジュールを復号して受信側処理に
組み込む技術、及びこれらの技術を用いて、送信側と受
信側での整合性の保証、暗号の強度及び暗号化/復号化
処理コストについての問題点を解決する暗号化通信技術
に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】信頼性
の低い経路を介した機密情報の伝達には、古来より暗号
が利用されてきている。特に、近年のインターネットの
普及とコンピュータ性能の向上に相まって、ネットワー
クセキュリティにおける暗号化技術の進展はめざましい
ものがある。
【0003】ネットワークセキュリティにおける暗号化
方式は、下記の(1)と(2)の前提のもと、(3)の
要領で暗号化通信を行う。 (1)機密情報の送信側が暗号化アルゴリズム、そして
受信側がそれに対応する復号化アルゴリズムを所持す
る。 (2)通常のこのような暗号化ならび復号化アルゴリズ
ムには、暗号鍵と復号鍵が存在し、送信側が暗号鍵を、
そして、受信側はそれに対応する復号鍵を所持する。 (3)送信側は、所定の暗号アルゴリズムと所定の暗号
鍵で、機密情報を暗号化し、受信側が、その暗号化され
た情報を所定の復号アルゴリズムと復号鍵で復号して、
元の機密情報を得る。
【0004】この場合、(1)と(2)の前提をネット
ワークプロトコルの一つと考え、ソフトウェアでこれを
実現する場合、SSL(Secure Sockets Layer)のよう
に、OSI参照モデルにおけるセッション層のプロトコ
ルとして実装する場合が多い(SSL v3の仕様書:
http://www.netscape.com/eng/ssl3/ssl-toc.html )。
【0005】上記で述べた暗号化通信の望むべき条件を
述べる。 (A)送信側の所持する暗号化処理と受信側の所持する
復号化処理の整合性が保証される暗号通信方式 上述したように、暗号化通信は、一種のネットワークプ
ロトコルと見なせる。従って、送信側の暗号化アルゴリ
ズムと暗号鍵、及び受信側の復号化アルゴリズムと復号
鍵の整合性の保証が必要となる。 (B)送信側の所持する暗号化処理と受信側の所持する
復号化処理の頻繁な変更を可能とする暗号通信方式 第三者による不正暗号解読の抑止として、これらのアル
ゴリズムや鍵を頻繁に変更することが有効であると考え
られている。 (C)高い暗号強度を保持したまま、暗号化ならびに復
号化処理コストがなるべく小さい暗号化方式 暗号アルゴリズム一般に言える事として、高い暗号強度
を保つためには、暗号鍵ならびに復号鍵を長くする必要
があり、これらの鍵を長くすると、暗号化ならびに復号
化処理コストが増大する。
【0006】本発明では、これら条件(A)(B)
(C)を同時に満たす方式を実現する。まず、条件
(A)を満たす方法として、送信側がその暗号化アルゴ
リズムを公開し、受信側がその復号化アルゴリズムを受
信処理に組み入れる方法である。この方式は現在定着し
ているが、公開された暗号化アルゴリズムは暗号解読の
大きな手がかりとなるため、機密性の高い情報を送るた
めには、鍵の長さを大きくする必要がある。これは、条
件(C)の実現を阻む。また、現方式では、送信側の暗
号化アルゴリズムの仕様書に基づき、受信側がその復号
化アルゴリズムを開発し、受信装置に組み入れる方式な
ので、条件(B)の実現は困難である。
【0007】まずは、条件(A)と(B)を満たす方式
であるが、条件(B)を少し弱めて、(B’)送信側の
暗号鍵と受信側の復号鍵の頻繁な変更を可能とする暗号
通信方式とした場合、条件(A)(B’)を同時に満た
す方式として、RSA暗号のように公開鍵暗号方式が発
明された。これにより、暗号鍵と復号鍵の頻繁な変更が
可能となった。(公開鍵暗号方式など、暗号全般に関し
ては、次のURL http://www.ipa.go.jp/security/fy
12/report/cryptrec-report2k.pdf が詳しい)しかし、
暗号化アルゴリズムと復号化アルゴリズムを頻繁に変更
する必要性は残る。事実、暗号鍵や復号鍵が比較的短い
場合、主要な暗号アルゴリズムの解読は成功されてい
る。
【0008】次に、条件(C)について述べる。基本的
にはどのような暗号アルゴリズムを利用しても、暗号強
度を高めれば、それだけ多くの処理コストがかかる。そ
して、従来は、暗号化アルゴリズムそのものの改良発展
して、暗号強度と処理コストの比を高める努力が払われ
てきた。
【0009】しかし、本発明は、1つ1つの暗号アルゴ
リズムの特性には依存しない方式なので、条件(C)を
満たす。次に、本発明によって実現される暗号化方式と
類似の暗号化通信を提唱している下記に挙げる公開公報
に開示されている発明があるが、これらの方式と本発明
の違いならびに、条件(A)、(B)、(C)の成立な
らびに不成立に関して述べる。 [引用1 特開平10−41934] [本発明と引用1の違い]引用1では、復号化アルゴリ
ズムとそれに対応する暗号化アルゴリズムで暗号化され
た情報を合成して送る。
【0010】本発明では、第2の復号化アルゴリズムを
第1の暗号化アルゴリズムで暗号化して受信側に送る。
また、本発明では、実際の情報と暗号化された第2の復
号化アルゴリズムは、必ずしも合成して送らない。 [条件(A)(B)(C)]引用1では、公開鍵暗号方
式を併用することにより条件(A)(B)を満たすこと
がわかる。しかし、引用1の方式では、送信側が、復号
化アルゴリズムとそれに対応する暗号化アルゴリズムを
合成して、受信側に送る。そのため、ネットワーク上の
第三者は、この復号化アルゴリズムを知りえる。従っ
て、暗号解読抑止のため、本復号化アルゴリズムならび
に対応する暗号化アルゴリズムの鍵の長さを長くする必
要がある。また、復号化アルゴリズムと暗号化された情
報を併せて送るので、データ量が多くなる。この事か
ら、この発明から、条件(C)を満たすという効果は期
待できない。 [引用2 特開2000−49770] [本発明と引用2の違い]本発明では、送信側から受信
側に復号化アルゴリズムを送信する場合が2種類ある。
1つは、第1の復号化アルゴリズムBをそのまま送る場
合であり、もう1つは、送信側の第1の暗号化アルゴリ
ズムで第2の復号化アルゴリズムを暗号化して、受信側
に送信する場合である。引用2では、送信側が受信側の
暗号化アルゴリズムで復号化アルゴリズムを送信する。 [条件(A)(B)(C)]引用2の場合、受信側の所
有する暗号化アルゴリズムで送信側の所有する復号化ア
ルゴリズムを暗号化して送るわけである。ここで、受信
側の所有する暗号化アルゴリズムを受信側この受信側の
所有する暗号化アルゴリズムの暗号強度を送信側が制御
できない場合、この方法には問題が生じる。なぜなら
ば、送信側が情報の機密性を管理するわけで、高機密情
報を送信したいときでも、受信側の暗号化アルゴリズム
がその機密性に対応するだけの暗号強度を有する保証は
ないからである。
【0011】従って引用2でも、条件(A)(B)を成
立させられるが、受信側の暗号化アルゴリズムの暗号強
度に保証が無い限り、送信側の復号化アルゴリズムを受
信側にそのまま送った場合と同じセキュリティ強度と見
なさねばならない。従って引用2は、送信側が受信側の
暗号化アルゴリズムを管理する、あるいは送信側と受信
側を管理する別の組織の存在を仮定しない限り、セキュ
リティ強度に問題が生じかねない。
【0012】本発明では、受信側のアルゴリズムは一切
利用せず、送信側のアルゴリズムのみを利用するため、
このような問題は生じない。尚、引用2では条件(C)
に関しては言及していない。 [引用3 特開2001−127747] [本発明と引用3の違い]本発明では、送信側から受信
側に復号化アルゴリズムを送信する場合が2種類ある。
1つは、第1の復号化アルゴリズムをそのまま送る場合
であり、もう1つは、送信側の第1の暗号化アルゴリズ
ムで第2の復号化アルゴリズムを暗号化して、受信側に
送信する場合である。また、この復号化アルゴリズムの
送信時期は、自動的に行える。
【0013】引用3の場合、新しい復号化アルゴリズム
を送信側から受信側に送信する場合、元の暗号化アルゴ
リズムで暗号化して送信する。また、この復号化アルゴ
リズムの送信は、モード切替手段によって手動で行うと
考えられる。 [条件(A)(B)(C)]引用3の場合、暗号化アル
ゴリズムの暗号強度が低下した場合に問題がある。なぜ
ならば、新しい復号アルゴリズムを暗号強度の低下した
暗号化アルゴリズムで暗号化するからである。従って、
元の暗号化アルゴリズムが低下する前に、未然の変更処
理の必要性がある。そのためには、手動でアルゴリズム
を変更するよりも自動的に変更したほうが得策である。
【0014】なお、引用3では条件(C)に関しては言
及していない。以上のように、上記した引用1,2,3
に開示されている暗号化通信では、条件(A)、
(B)、(C)を同時に満足しているものはない。本発
明は、この条件(A)、(B)、(C)を同時に満足す
る暗号化通信を提供することを課題とする。
【0015】
【課題を解決するための手段】本発明の基本的な考え方
は、2段階の暗号プロトコルを利用してより柔軟なネッ
トワークセキュリティの管理・運営の実現を図ることで
ある。本発明による暗号化通信方法では、送信側は、受
信側が保持する第1の復号化アルゴリズムに対応する第
1の暗号化アルゴリズムによって、第2の暗号化アルゴ
リズムに対応する第2の復号化アルゴリズム若しくは該
第2の暗号化アルゴリズム又は第2の復号化アルゴリズ
ムを示す情報を暗号化して送信データを生成し、 該送
信データを受信側に送信する。
【0016】そして受信側では、送信側から受信した前
記第1の暗号化アルゴリズムで暗号化された送信データ
を前記第1の復号化アルゴリズムによって復号化する。
そして以降の通信では、例えば送信側は、送信対象デー
タを前記第2の暗号化アルゴリズムによって暗号化して
送信データを生成、受信側に送信し、受信側は、送信側
から送信された前記第2の暗号化アルゴリズムで暗号化
された送信データを前記第2の復号化アルゴリズムによ
って復号化する。
【0017】これにより、本発明による暗号化通信で
は、送信側で用いられる暗号化アルゴリズムと受信側で
復号化アルゴリズムでの整合性が保証される。また第2
の暗号化アルゴリズム及び第2の復号化アルゴリズムを
変更することによって、頻繁に暗号化/復号化アルゴリ
ズムの変更を可能にする。
【0018】更に暗号強度は第1の暗号化/復号化アル
ゴリズムにより、処理コストは第2の暗号化/復号化ア
ルゴリズムによるので、高い暗号強度と小さな処理コス
トを両立することが出来る。また本発明は、暗号化通信
方法のみならず、暗号化通信システム、暗号化通信を行
うコンピュータ、記憶媒体及びプログラムも範囲に含
む。
【0019】
【発明の実施の形態】1 概要 図1は、本実施形態における暗号通信方式の基本原理を
説明する図である。本実施形態による暗号化通信では、
送信側が暗号化アルゴリズムAを所持し、受信側が暗号
化アルゴリズムAに対応する復号化アルゴリズムBを所
持していることを前提とする。
【0020】この前提状態において、まず送信側では、
送信側は所持しているが受信側は必ずしも所持していな
い暗号化アルゴリズムC1に対応する復号化アルゴリズ
ムD1若しくは暗号化アルゴリズムC1(若しくは復号
化アルゴリズムD1)を特定する情報を暗号化アルゴリ
ズムAによって暗号化し、これを受信側に送信する。次
に送信側では、送信対象となるデータE1を暗号化アル
ゴリズムC1によって暗号化して受信側に送信し、受信
側ではこれを復号化アルゴリズムD1によって復号化す
る。以降、送信側は、送信対象データE2、E3・・を
暗号化アルゴリズムC2によって暗号化して送信し、受
信側ではこれを復号化アルゴリズムD1で復号化する。
【0021】また適宜なタイミング、例えばネットワー
クセッション毎、暗号化アルゴリズムC1/復号化アル
ゴリズムD2の利用時間や送信対象データEの送信回数
が一定値以上になったときに、送信側は所持しているが
受信側は必ずしも所持していない暗号化アルゴリズムC
2に対応する復号化アルゴリズムD2若しくは暗号化ア
ルゴリズムC2(復号化アルゴリズムD2)を特定する
情報を暗号化アルゴリズムAによって暗号化し、これを
受信側に送信する。以降送信側では、送信対象データE
n、En+1・・を送信する際、この暗号化アルゴリズ
ムC2によって暗号化して受信側に送信し、受信側では
これを復号化アルゴリズムD2によって復号化する。そ
してまた適宜なタイミングで、送信側は、別の暗号化ア
ルゴリズムC3に対応する復号化アルゴリズムD3若し
くはそのアルゴリズムを通知する情報を暗号化アルゴリ
ズムAによって暗号化して受信側に送信し、暗号化/復
号化アルゴリズムを変更する。
【0022】本実施形態での暗号化通信は、事前に送信
側から受信側へ復号化アルゴリズムD若しくは暗号化ア
ルゴリズムC(若しくは復号化アルゴリズムD)を特定
する情報が送られるので、上述した条件(A)の送信側
と受信側での暗号化アルゴリズムの整合性は保証され
る。また条件(B)の暗号化アルゴリズムと受信側の所
持する復号化アルゴリズムの独立且つ頻繁な変更も可能
としている。
【0023】更に条件(C)の高い暗号強度を保持した
まま、暗号化ならびに復号化処理コストがなるべく小さ
くする点を、本実施形態における暗号化通信が満たすこ
とを説明する。以下の説明では、暗号化アルゴリズムA
と復号化アルゴリズムBによる暗号プロトコルを基本暗
号プロトコルと称し、暗号化アルゴリズムCと復号化ア
ルゴリズムDによる情報暗号プロトコルと称することと
する。
【0024】従来のネットワークセキュリティにおける
暗号化では、その暗号アルゴリズムを公開する場合が多
い。それには、多くの理由があるが、その大きな理由の
一つは、条件(A)と関わりを持つ。しかし、暗号化ア
ルゴリズムの公開は、暗号解読における大変に大きな手
がかりともなる。その暗号鍵と復号鍵の長さが短い場
合、実際に多くの暗号アルゴリズムで、暗号が破られて
いる。従って、暗号強度を高めるためには、鍵の長さを
大きくする必要があるが、反面、暗号化ならびに復号化
を行う処理量が増大する。
【0025】本実施形態の基本暗号プロトコルは、原
則、公開されるアルゴリズムであるが、この暗号プロト
コルは、送受信間で情報暗号プロトコルを確立する(す
なわち暗号アルゴリズムCと復号化アルゴリズムDの整
合性を図る)ことのみに利用され、1つのネットワーク
セッションでは、原則1回しか使われない。従って、基
本暗号プロトコルに、十分に大きな鍵を利用する等の処
理コストの大きなものを使用しても、1つのネットワー
クセッションの中では、大きな処理負担とはならない。
【0026】基本暗号アルゴリズムで、情報暗号プロト
コルを確立すると、実際の情報の伝送には、暗号化アル
ゴリズムCと復号化アルゴリズムDが使われることとな
るが、このアルゴリズムは第三者には秘匿されている。
従って、情報暗号プロトコルにおける鍵を比較的短い
(あるいは鍵が無い)処理コストの小さなものであって
も不正暗号解読は難しい。
【0027】復号化アルゴリズムD(若しくは暗号化ア
ルゴリズムC/復号化アルゴリズムDを特定する情報)
を暗号化アルゴリズムAで暗号化するわけであるから、
本実施形態におけるによる暗号化通信における暗号強度
は、基本暗号プロトコルの強度に準じ、処理コストは、
情報暗号プロトコルの処理コストに準じる。
【0028】これは条件(C)の成立を意味する。次に
本発明を実現する暗号化通信の具体的実装例を示す。尚
以下に説明する実施形態は、コンピュータネットワーク
におけるTCPプロトコル上のセッション層に実装する
例を示すが、本発明はこの形態には限定されない。ま
た、これらの処理を行うために、オブジェクト指向技術
を適用することによりアルゴリズムのカプセル化などが
容易に実現できるため、本実施形態では、処理をオブジ
ェクト指向で用いられている言葉で説明し、また各クラ
スの定義等は主にJava(登録商標)言語による記述
例を示す。また、これらの説明で使用するオブジェクト
は、オブジェクト直列化技法によりバイト列に変換でき
るものとする。(Java(登録商標)言語では、この
オブジェクトの直列化技法は実用化されており、その詳
細仕様に関しては、次のURLを参照すると良い。 http:www.javasoft.com/j2se/1.3/ja/docs/ja/guide/se
rialization/index.html)従って、本実施形態では暗号
化アルゴリズム等は、オブジェクトとして実現している
が、ネットワーク伝送等の必要に応じて、これらのオブ
ジェクトをバイト列に変換、あるいはバイト列に変換さ
れたオブジェクトを元のオブジェクトに復元することは
暗黙の操作として扱う。
【0029】また、本実施形態には、X.509形式の
デジタル証明書による認証並びに、伝送データに対する
デジタル署名ならびにその署名の検証処理が含まれる
が、これらの処理の詳細については、下記のURLを参
照すると良い。 [X.509証明書の仕様] http://www.ipa.go.jp/security/rfc/RFC2459JA.html [デジタル署名の概要] http://www.ipa.go.jp/security/fy12/report/cryptrec
-report2k.pdf 本実施形態では、コンピュータネットワークにおける通
信において、クライアント・サーバモデルを採用する。
無論、クライアントならびにサーバは、機密情報の送信
側にも受信側にもなりえる。
【0030】図2は本実施形態における暗号化通信プロ
トコルの概要を示す図である。本実施形態による暗号化
通信を実現するためには、本実施形態における暗号化通
信プロトコルをセッション層における一種のネットワー
クプロトコルと見なすことができ、それらは、下記のよ
うに4つのプロトコルに分解され、この処理の順番で処
理が進められる。 (1) 基本認証プロトコル サーバならびにクライアントが、それぞれのデジタル証
明書を用いて認証するプロトコル。 (2) 基本暗号プロトコル確立プロトコル 図1の暗号化アルゴリズムAとそれに対応する復号化ア
ルゴリズムBを、クライアントならびにサーバに配置す
るプロトコル。 (3) 情報暗号プロトコル確立プロトコル 図1の暗号化アルゴリズムCとそれに対応する復号化ア
ルゴリズムDを、クライアントならびにサーバに配置す
るプロトコル。 (4) 情報暗号プロトコル 図1の暗号化アルゴリズムCとそれに対応する復号化ア
ルゴリズムDを用いて、クライアントサーバ間で情報
(図1の送信対象データE)を送受信するプロトコル。 2 各プロトコルの詳細 2.1 基本認証プロトコル 2.1.1 基本認証プロトコルの概要 図3は基本認証プロトコルの概要を示す図である。
【0031】本プロトコルは、さらに下記の3つのサブ
プロトコルに分解される。 (1) サーバがクライアントを認証するプロトコル (2) クライアントがサーバを認証するプロトコル (3) セッションIDプロトコル 本プロトコルの処理手順は、このサブプロトコルを(1)
→(2) →(3) の順番で処理して行く。上記の(1) 、(2)
のプロトコルでは、サーバとクライアントを入れ替えて
も同じ処理となるので、以下では、一般に、ホストAが
ホストBを認証する認証プロトコルに関して説明する。 2.1.2 認証プロトコル 図4は認証プロトコルによる処理を示すフローチャー
ト、図5は認証プロトコルを構成する各処理やデータの
関係を示すブロック図である。尚図5及び後述する図
7、図11、図13、図16及び図20の中において、
円形ブロックはデータ、四角いブロックは処理を示し、
実線矢印は生成や代入等、点線矢印は参照を表してい
る。
【0032】以下に各クラスの定義を示す。 2.1.2.1 認証プロトコルの関連クラス (1) Certクラス デジタル証明書を表現するクラスである。例えば、X.
509証明書の形式を表現したものを考える。 <データフィールド> byte[] publicKey (証明書の公開鍵) <メソッド> 無し。 (2) CertReaderクラス 証明書ファイルよりを読み込みを表現するクラスであ
る。 <データフィールド> 無し。 <メソッド> Cert readCert(String filename);パラメタfilenameを
ファイル名を持つ証明書ファイルよりデータを読み込
み、該当するCertクラスのインスタンスを返す。 (3) CertChecker クラス デジタル証明書の妥当性検証を表現するクラスである。 <データフィールド> 無し。 <メソッド> boolean isValid(Cert cert);パラメタcertが妥当であ
る場合はtrue、そうでない場合はfalse を返す。本メソ
ッドの具体的な内容は、デジタル証明書の検証で行われ
る通常のアルゴリズムを利用する。例えば、X509証
明書の場合は、下記URLにそのアルゴリズムが明記さ
れている。 http://www.ipa.go.jp/security/rfc/RFC2459JA.html#0
61 2.1.2.2 認証プロトコルの処理手順 図4のフローチャートに従って認証プロトコルの処理手
順を説明する。 (1) ホストBは、証明書ファイル(CertFile)より、証明
書読込機能(CertReader)を利用して、自分のデジタル証
明書を読み込む(ステップS11)。 (2) 読み込まれたデジタル証明書を変数CertB に代入す
る(ステップS11)。 (3) ホストBは、CertB をホストAに送信する(ステッ
プS12)。 (4) ホストAは、ホストBからの受信状態に移り(ステ
ップS1)、ホストBからCertB を受信する(ステップ
S2)。 (5) ホストAは、デジタル証明書検証機能(CertChecke
r) を用いてCertB の妥当性を検証する(ステップS
3)。すなわち、CertChecker のisValid メソッドのパ
ラメタにCertB を代入して、メソッドを呼び出す。 (6) ホストAは、CertB の妥当であった場合、すなわ
ち、(5) のメソッド呼び出しがtrueを返した場合(ステ
ップS4、YES)、(7) に跳ぶ。(5) のメソッド呼び
出しがfalse を返した場合(ステップS4、NO)は、
(10)に跳ぶ。 (7) ホストAはCertB の内蔵している公開鍵publicKey
を変数pubKeyB に代入する(ステップS5)。 (8) ホストAは、文字列”VALID”をホストBに送
信する(ステップS6)。 (9) ホストAは本プロトコルにおける処理を終了し(12)
に跳ぶ。 (10)ホストAは、文字列”INVALID”をホストB
に送信する((ステップS7))。 (11)ホストAは、本ネットワークを切断し(ステップS
8)、本プロトコルにおける処理を終了する。 (12)ホストBは、ホストAよりメッセージを受信する
(ステップS14)。 (13)ホストBは、受信したメッセージが文字列”VAL
ID”の場合(ステップS15、YES)、そのまま本
プロトコルにおける処理を終了し、受信したメッセージ
が文字列”INVALID”の場合(ステップS15、
NO)、本ネットワークを切断し(ステップS16)、
本プロトコルにおける処理を終了する。 2.1.3 セッションIDプロトコル 図6はセッションIDプロトコルによる処理を示すフロ
ーチャート、図7はセッションIDプロトコルを構成す
る各処理やデータの関係を示すブロック図である。
【0033】本プロトコルは、不正者が過去に、同じサ
ーバとクライアントの通信データを傍受し、そのデータ
を用いて、現在の通信をかく乱する事を未然に防ぐため
のものである。本プロトコルは、上記した認証プロトコ
ルが実施されていることを前提としている。従って、サ
ーバ、クライアントともに、相手側のデジタル証明書に
含まれる公開鍵を取得している。
【0034】そこで、サーバのデジタル証明書の公開鍵
を変数PubKeyS 、そしてクライアントのデジタル証明書
の公開鍵を変数PubKeyC で表し、それらをサーバ、クラ
イアント共に所有しているとする。まず始めに、関連す
るクラスを定義し、次にその処理手順を説明する。 2.1.3.1 セッションIDプロトコルの関連クラ
ス (1) SessionIDReader クラス セッションIDデータベース(IPアドレス(バイト
列)をキーとして、セッション回数(整数)を値とする
索引ファイル)より、SessionID を読み込むためのクラ
ス。 <データフィールド> 無し。 <メソッド> int updateSessionID(byte[] addr);本メソッドの処理
について、下記にその手順を示す。 addrをキーにして、セッションIDデータベースを検
索する。 の検索で該当レコードが見つかった場合は、に跳
ぶ。該当レコードが見つからなかった場合は、に跳
ぶ。 該当レコードに記述されているセッション回数に1を
加えた値を、変数SessionID に代入する。 変数SessionID に1を代入する。 addrをキーとし、値をSessionID とするようにして、
セッションIDを更新する。 SessionID を返す。 (2) PrivateKeyReaderクラス 本クラスは、自分のデジタル証明書に対応する秘密鍵を
格納したファイル(CertPrivateKeyFile)を読み込む処
理を表現したものである。 <データフィールド> 無し。 <メソッド> byte[] readPrivateKey(String filename);本メソッド
は、filenameをファイル名とする秘密鍵ファイルより秘
密鍵を読み込み、バイト列表現で返すものである。 (3) Signクラス 本クラスは、デジタル署名を表現するクラスである。 <データフィールド> byte[] privateKey <メソッド> byte[] sign(byte[] data) 本メソッドは、privateKeyを秘密鍵とし、dataをデジタ
ル署名したデータを返すメソッドである。本メソッド
は、一般的に公開されているデジタル署名のアルゴリズ
ムを利用する。例えば、そのようなアルゴリズムは、下
記URLにある。 http://www.ipa.go.jp/security/fy12/report/cryptrec
-report2k.pdf (4) SignChecker クラス 本クラスは、デジタル署名されたデータの検証(データ
改ざんの有無)を行うためのクラスである。 <データフィールド> byte[] publicKey <メソッド> boolean isValid(byte[] signedData);公開鍵publicKey
を利用して、デジタル署名されたデータsignedDataの
検証を行い、改ざんされていない場合はtrueを、改ざん
されている場合はfalse を返す。本メソッドは、一般的
に公開されているデジタル署名のアルゴリズムを利用す
る。例えば、そのようなアルゴリズムは、下記URLに
ある。 http://www.ipa.go.jp/security/fy12/report/cryptrec
-report2k.pdf (5) RandomGenerator クラス 擬似乱数を発生させるためのクラスである。 <データフィールド> 無し。 <メソッド> byte[] random() 擬似乱数を発生させ、それに基づくバイト列を返す。 2.1.3.1 セッションIDプロトコルの処理手順 図6のフローチャートに従ってセッションIDプロトコ
ルの実施手順を説明する。 (1) サーバは、対象となるクライアントのIPアドレス
を変数addrに設定し(ステップS41)、SessionIDRea
der によりセッションIDを読み込み、それを変数Sess
ionID に代入する(ステップS42)。 (2) サーバは、PrivateKeyReaderにより秘密鍵を読み込
み、それを変数PrivateKeyS に代入する(ステップS4
3)。 (3) サーバは、Signクラスのインスタンスを生成し、そ
れを変数SIGNS に代入する(ステップS44)。 (4) サーバは、変数SIGNS のデータフィールドprivateK
eyにPrivateKeyS を代入する(ステップS45)。 (5) サーバは、変数SIGNS によりSessionID に署名を施
し(ステップS46)、クライアントに送り(ステップ
S47)、クライアントからの受信待機状態に移る(ス
テップS48)。 (6) サーバからの受信待機状態(ステップS21)とな
っているクライアントは、サーバから送られて来たデジ
タル署名されたデータを受信し、そのデータを変数Sign
edDataに代入する(ステップS22)。 (7) クライアントは、SignChecker クラスのインスタン
スを生成し、それを変数SCC に代入する(ステップS2
3)。 (8) クライアントは、変数SCC のデータフィールドpubl
ickey にPublicKeySを代入する(ステップS24)。 (9) クライアントは、変数SCCによって、SignedData を
検証する(ステップS25)。 (10)クライアントは、ステップS25での検証の結果、
署名の妥当性を見出した場合(ステップS26、YE
S)、(11)に跳ぶ。また署名の妥当性が得られなかった
場合は(ステップS26、NO)、ステップS21の受
信待機状態に移行する。 (11)クライアントは、SignedDataのセッションIDデー
タを変数SessionID に代入する(ステップS27)。 (12)クライアントは、PrivateKeyReaderにより秘密鍵を
読み込み、それを変数PrivateKeyC に代入する(ステッ
プS28)。 (13)クライアントは、Signクラスのインスタンスを生成
し、それを変数SIGNC に代入する(ステップS29)。 (14)クライアントは、変数SIGNC のデータフィールドpr
ivateKeyにPrivateKeyCを代入する。 (15)クライアントは、変数SIGNC によって変数SessionI
D に署名を施し(ステップS30)た後サーバに送った
後(ステップS31)本プロトコルにおける処理を終了
する。 (16)サーバは、クライアントからデータを受信する(ス
テップS49)と、SignChecker クラスのインスタンス
を生成し、それを変数SCS に代入する(ステップS5
0)。 (17)サーバは、変数SCS のデータフィールドpublickey
にPublicKeyCを代入する(ステップS51)。 (18)サーバは、変数SCS によって、クライアントから送
られて来たデジタル署名データを検証する(ステップS
52)。 (19)サーバは、署名の妥当性を見出した場合(ステップ
S53、YES)、クライアントから送られて来たSess
ionID と元のSessionID を比較し、等しければ(ステッ
プS54、YES)本プロトコルにおける処理を終了す
る。また署名に妥当性が見出せなかった場合(ステップ
S53、NO)、ステップS48の受信待機状態に移行
する。 (20)サーバは、ステップS54で2つのSessionID が異
なる場合(ステップS54、NO)、エラーメッセージ
を出力した後ステップS48の受信待機状態に移行し、
2つのSessionID が同じである場合(ステップS54、
YES)、本プロトコルにおける処理を終了する。 2.2基本暗号プロトコル確立プロトコル 2.2.1基本暗号プロトコル確立プロトコルの概要 図8は、基本暗号プロトコル確立プロトコルの概要を示
す図である。
【0035】基本認証プロトコルにより、相手側のデジ
タル証明書の妥当性を検出した場合、本プロトコルに移
行する。本プロトコルでは、図1に示した暗号化アルゴ
リズムAとそれに対応する復号化アルゴリズムBの整合
性を図るためのものである。本プロトコルは、下記の2
つのプロトコルに分解される。 (1) サーバ送信に関する基本暗号プロトコル確立プロト
コル (2) クライアント送信に関する基本暗号プロトコル確立
プロトコル この2つのプロトコルは、サーバとクライアントの入れ
替えに関して対称である。よって本プロトコルならびに
それ以降のプロトコルのおいて、(機密)情報を送る側
を「送信側」と、また(機密)情報を受け取る側を「受
信側」という表現を利用して説明する。
【0036】ここでは、基本暗号確立プロトコルを説明
する。まず初めに、本プロトコルで利用するクラスを説
明する。 2.2.2基本暗号プロトコル確立プロトコルの関連ク
ラス (1) FundamentalCryptProtocolクラス 本クラスは、基本暗号プロトコルを表現するクラスであ
り、下記のオブジェクトを内蔵している。 <データフィールド> A) int ver (バージョン番号) B) long time (本基本暗号プロトコルの利用開始
日時) C) KeyExchange ke (公開鍵交換アルゴリズム) D) SymmetricCrypt sc (暗号アルゴリズム) (2) SymmetricCryptクラス 対称鍵暗号アルゴリズムを表現するクラスである。
【0037】本クラスには、下記のオブジェクトが内蔵
されている。 <データフィールド> A)KeyDataMap A (暗号化アルゴリズム) B)KeyDataMap B (復号化アルゴリズム) 尚A)の暗号化アルゴリズムとB)の復号化アルゴリズム
は対応しているものとする。 (3) KeyDataMapクラス 暗号化アルゴリズムあるいは復号化アルゴリズムを表す
抽象クラスであり、本クラスは下記の抽象メソッドを持
つ。
【0038】byte[] getData(byte[] key, byte[] dat
a);本メソッドでは、鍵に対応するkey と暗号化あるい
は復号化の対象となるdataが与えられたときに、暗号化
あるいは復号化されたデータをバイト列で返すものであ
る。 (4) FundamentalDecryptProtocolクラス 本クラスは、受信側が持つ基本暗号プロトコルを表現す
るクラスであり、下記のオブジェクトを内蔵している。 <データフィールド> A) int ver (バージョン番号) B) KeyExchange ke (公開鍵交換アルゴリズム) C) KeyDataMap B (復号化アルゴリズム) (5) KeyExchange クラス 本クラスは、公開鍵交換アルゴリズムを表す抽象クラス
であり、下記の抽象メソッドを有している。 A) byte[] getPublicKey(byte[] key);秘密鍵key の
公開鍵を返すメソッドである。 B) byte[] getCommonKey(byte[] key1, byte[] key
2);公開鍵key1と秘密鍵key2から共通鍵を生成し、生成
した共有鍵を返すメソッドである。
【0039】但し、byte[]は、バイト列を表現する型で
ある。この公開鍵交換アルゴリズムでは、次の条件の成
立が必要である。 [条件] PKey1 = getPublicKey(SKey1); PKey2 = getPublicKey(SKey2); このとき、 getCommonKey(PKey1, SKey2)==getCommonKey(PKey2, SK
ey1) (6) FundamentalCryptProtocolChangeAlgorithm クラス 本クラスは、FundamentalCryptProtocolオブジェクトの
変更に関するアルゴリズムを表現する抽象クラスであ
る。本クラスは、下記の抽象クラスを有する。 A) boolean change(FundamentalCryptProtocol P, b
yte[] addr) これは、これまで利用されていたFundamentalCryptProt
ocol Pを、他のプロトコルと交換すべき場合はtrue,こ
れからも利用する場合はfalse を返す。ここで、addrは
受信側のIPアドレスのバイト表現である。 (7) FundamentalCryptProtocolFactory クラス 本クラスは、FundamentalCryptProtocolのオブジェクト
生成を行う抽象クラスである。本クラスには下記の抽象
メソッドが存在する。 A) FundamentalCryptProtocol create(byte[] add
r);本メソッドは、受信側のIPアドレスのバイト表現a
ddrがパラメタで与えられた場合に、それを参考情報と
して、FundamentalCryptProtocolのインスタンスを生成
し、それを返すメソッドである。 (8) SignWithSessionID クラス 本クラスは、セッションIDを付け加えたデータに署名
を行うためのクラスである。 <データフィールド> Sign sign int sid <メソッド> byte[] sign (byte[] data) 本メソッドは、dataにsid を付け加えたデータにsignの
signメソッドでデジタル署名したデータをバイト列とし
て返すものである。 (9) SignedWithSessionIDCheckerクラス 本クラスは、セッションIDを付け加えたデジタル署名
の検証を行うためのクラスである。 <データフィールド> SignChecker checker int sid <メソッド> boolean isValid(byte[] signedData) 本メソッドは、デジタル署名データsignedDataの妥当性
検査ならびに、セッションIDの検査を行うものであ
り、両方の検査を通過した場合のみtrueを返すメソッド
である。下記では、本メソッドの詳細な手順を説明す
る。 checkerのisValidメソッドにより、signedDataを検査
する。 での戻り値がfalse の場合、false を返し終了す
る。 signedDataに含まれるsid が本クラスのデータフィー
ルドのsid と等しければtrueを、等しくなければfalse
を返して終了する。 (10) FundamentalCryptProtocolReader クラス 基本暗号プロトコルデータベースとは、IPアドレスを
表現するバイト列をキーとし、FundamentalCryptProtoc
olオブジェクトを値とする索引ファイルであり、本クラ
スは、それに対するアクセス処理を表現したものであ
る。
【0040】尚、本データベース、画面等を通じて本暗
号プロトコル利用者が手動で、IPアドレスをキーとし
て、値として持つFundamentalCryptProtocol オブジェ
クトを更新できるものとする。 <データフィールド> String db#name(基本暗号プロトコルデータベース名) <メソッド> (A) boolean exists(byte[] addr);db#name を名前
として持つ基本暗号プロトコルデータベースに、addrを
キーとしたレコードが存在する場合はtrueを、そうでな
い場合はfalseを返す。 (B) FundamentalCryptProtocol read(byte[] addr) db#name を名前として持つ基本暗号プロトコルデータベ
ースに、addrをキーとした時の対応する、FundamentalC
ryptProtocolオブジェクトを返す。 (C) void update(byte[] addr, FundamentalCryptP
rotocol obj) db#name を名前として持つ基本暗号プロトコルデータベ
ースに、addrをキー、値をobj としてレコードを登録あ
るいは更新する。 (11) FundamentalDecryptProtocolReader クラス 基本復号アルゴリズムデータベースとは、IPアドレス
を表現するバイト列をキーとし、FundamentalDecryptPr
otocolオブジェクトを値とする索引ファイルであり、本
クラスは、それに対するアクセス処理を表現したもので
ある。
【0041】<データフィールド> String db#name (基本復号アルゴリズムデータベース
名) <メソッド> (A) boolean exists(byte[] addr); db#name を名前として持つ基本復号アルゴリズムデータ
ベースに、addrをキーとしたレコードが存在する場合は
trueを、そうでない場合はfalse を返す。 (B) FundamentalDecryptProtocol read(byte[] add
r) db#name を名前として持つ基本暗号プロトコルデータベ
ースに、addrをキーとした時の対応する、FundamentalD
ecryptProtocol オブジェクトを返す。 (C) void update(byte[] addr, FundamentalDecryptP
rotocol obj) db#name を名前として持つ基本暗号プロトコルデータベ
ースに、addrをキー、値をobj としてレコードを登録あ
るいは更新する。
【0042】次に、上記で説明したクラスの中で、抽象
クラスであるものに関して、その派生実装クラス例を下
記で示す。 [抽象クラスの実装例]ここでは、基本暗号プロトコル
確立プロトコルで利用するクラスの中で、抽象クラスと
なっているものを、具体的に実装した例を示す。
【0043】ここでは、公開鍵交換アルゴリズムに対応
するKeyExchange クラス、ならびに、図1に示した暗号
化アルゴリズムA及び復号化アルゴリズムBに対応する
KeyMapDataクラス、そしてこれらのアルゴリズムを生成
するためのFundamentalCryptProtocolFactory クラスを
中心に説明する。これらのアルゴリズムあるいはアルゴ
リズム生成アルゴリズムは、実際の暗号化通信の運用に
応じて、フレキシブルに変更、登録できる。 [例1] DiscreteLogKeyExchangeクラス(KeyExchang
e の実装) 本クラスは、離散対数問題のアルゴリズムを利用した、
KeyExchange クラスの実装例である。離散対数問題を利
用した公開鍵交換アルゴリズムの詳細に関しては、次の
URLを参照されたい。 http://www.ipa.go.jp/security/fy12/report/cryptrec
-report2k.pdf 本クラスには、下記のデータが内蔵されている。 A) 整数 素数p B) 整数 素体Fpの原始根a このとき、上記のメソッドC),D)は下記のように実
装される。 C) byte[] getPublicKey(byte[] key) の実装 Key を整数n と見なし、m=a**n (mod p)(**は指数関
数:mod はモジュロ関数)を計算する。m をバイト列に
変換してそれを返す。 D) byte[] getCommonKey(byte[] key1,byte[] key
2); の実装 key1を整数n と見なし、key2 を整数m と見なす。
【0044】このとき、k=n**m mod pを計算し、k をバ
イト列に変換してそれを返す。 [例2] PlainCryptMap クラス(KeyDataMapの実装) 本クラスは、何も暗号化しないという自明なKeyDataMap
クラスの実装クラスである。 A) getData(byte[] key,byte[] data);の実装 戻り値として、第二パラメタのdataをそのまま返す。 [例3] DESCryptMapクラス(KeyDataMapの実装) 本クラスは、DES(Data Encryption Standard)を利用
したクラスである。DESは、National Institute of
Standard and Technology に登録され公開されている対
象鍵型の暗号アルゴリズムであり、その仕様書は、下記
のURLに掲載されている。 http://csrc.nist.gov/cryptval/ A) getData(byte[] key,byte[] data);の実装 バイト列key の配列のサイズが8の倍数であると仮定す
る。このサイズが8の倍数でなかった場合は、8の倍数
になるようにバイト列key に0で埋まったバイト列を付
け加える。バイト列key を8バイトづつ区切り、8バイ
トのバイト列の列(key1,key2,key3,….keyN)を作成す
る。
【0045】暗号化対象のバイト列dataをkey1,key2,ke
y3,…keyN の順番で逐次DES暗号化したバイト列を返
す。同様にして、下記の実装クラスも考えられる。 [例4]DESDecryptクラス(KeyDataMapの実装) A) getData(byte[] key,byte[] data);の実装例 バイト列key の配列のサイズが8の倍数バイトであると
仮定する。このサイズが8の倍数バイトでなかった場合
は、8の倍数バイトになるようにバイト列keyに0で埋
まったバイト列を付け加える。バイト列key を8バイト
づつ区切り、8バイトのバイト列の列(key1,key2,key3,
….keyN)を作成する。
【0046】復号化対象のバイト列を、keyN,・・・,key3,
key2,key1 の順番で、逐次復号化したバイト列を返す。 [例5] StandardChangeAlgoritmクラス(Fundamenta
lCryptProtocol-ChangeAlgorithmの実装) 本クラスでは、基本暗号アルゴリズムの変更を、下記に
示すとおりネットワーク経路の信頼性、その基本アルゴ
リズムの利用時間や利用回数を元にして決定する。 A) boolean change (FundamentalCryptProtocol P,b
yte[] addr) の実装例 以下の手順で戻り値を求める。 (1) addrと送信側のIPアドレスaddr2 より、この通信
が信頼される経路での通信であることがわかれば、fals
e を返し、終了する。
【0047】addrと送信側のIPアドレスaddr2 よ
り、この通信が信頼される経路での通信でない場合は、
(2) に跳ぶ。 (2) これまで利用してきたFundamentalCryptProtocolオ
ブジェクトPより、利用開始日時T1をとってくる。次
に、現在の日時T2をとってきて、利用開始からこれま
での経過時間Tを計算する。 (3) 経過時間Tが1週間を超えていたら、trueを返し終
了する。経過時間Tが1週間以内の場合は、(4) に跳
ぶ。 (4) Pの内蔵する利用回数Cが1000回以内ならば、
false を返して終了する。またCが1000回を超える
場合は、trueを返して終了する。 [例6] StandardCryptCreatorクラス(FundamentalC
ryptProtocolFactory の実装) 本クラスでは、ネットワーク経路が信頼性がある場合
は、PlainCryptMap (暗号化をしない処理)を元にして
基本暗号プロトコルを生成し、信頼性がない場合は、DE
SCryptMapならびにDESDecryptMap(DESアルゴリズム
を利用した暗号処理)を元にして基本暗号プロトコルを
生成するものであり、その詳細処理手順を以下に示す。 A) FundamentalCryptProtocol create(byte[] add
r); の実装 以下に示す手順で、本メソッドの処理を進める。 (1) 例1のDiscreteLogKeyExchangeのインスタンスを生
成し、変数DLKEに代入する。 (2) SymmetricCryptのインスタンスを生成し、変数SCに
代入する。 (3) FundamentalCryptProtocolのインスタンスを生成
し、変数FCP に代入する。 (4) FCP の持つKeyExchange にDLKEを代入する。 (5) FCP の持つSymmetricCrypt にFCP を代入する。 (6) 受信側のIPアドレスaddrと送信側のIPアドレス
addr2 より、このネットワークが信頼される経路である
か否かを決定する。 (7) このネットワークが信頼される経路の場合には、
(8) に跳ぶ。またこのネットワークが信頼されない経路
の場合は、(11)に跳ぶ。 (8) 例2のPlainCryptMap のインスタンスを生成し、そ
れを変数PCM に代入する。 (9) 変数SCの持つ暗号化アルゴリズムならびに復号化ア
ルゴリズムにPCM を代入する。 (10)(14)に跳ぶ。 (11)例3のDESCryptMap のインスタンスを生成し、変数
DCM に代入する。 (12)例4のDESDecryptMap のインスタンスを生成し、変
数DDM に代入する。 (13)変数SCの持つ暗号化アルゴリズムにDCM を代入し、
同じく変数SCの持つ復号化アルゴリズムにDDM を代入す
る。 (14)FCP を返し、終了する。 2.2.3基本暗号プロトコル確立プロトコルのサブプ
ロトコル 以下では、基本暗号プロトコル確立プロトコルの手順を
説明するが、この基本暗号プロトコル確立プロトコルの
手順は、さらに次の2つのプロトコルに分解される。 (1) 基本暗号アルゴリズム交換プロトコル (2) 公開鍵交換プロトコル まず、基本暗号アルゴリズム交換プロトコルに関して、
その手順を説明する。本プロトコルは、上述した認証プ
ロトコルを前提としている。従って、送信側ならびに受
信側に変数SessionID の存在、ならびに送信側のSignオ
ブジェクトSIGNS とSignChecker オブジェクトSCS 、そ
して受信側のSignオブジェクトSIGNR とSignChecker オ
ブジェクトSCR の存在を仮定する。 2.2.3.1 基本暗号アルゴリズム交換プロトコル
の処理手順 図9及び図10は基本暗号アルゴリズム交換プロトコル
による処理を示すフローチャート、図11は基本暗号ア
ルゴリズム交換プロトコルを構成する各処理やデータの
関係を示すブロック図である。
【0048】図9及び図10のフローチャートに従って
基本暗号アルゴリズム交換プロトコルの実施手順を説明
する。 (1) 送信側は、受信側のIPアドレスをキーにして(ス
テップS61)、基本暗号プロトコルデータベースより
FundamentalCryptProtocolクラスのオブジェクトを検索
する(ステップS62)。 (2) 送信側は、(1) の検索で、該当するFundamentalCry
ptProtocolのオブジェクトが存在しなかった場合(ステ
ップS63、NO)、(3) に跳ぶ。また存在した場合
(ステップS63、YES)は、そのオブジェクトを変
数FCP に代入して(ステップS64)、(5) に跳ぶ。 (3) 送信側は、FundamentalCryptProtocolFactory の適
当なインスタンスFCPFによりFundamentalCryptProtocol
のインスタンスを生成し、それを変数FCP に代入する
(ステップS65)。 (4) 送信側は、変数FCP のバージョン番号フィールドve
r に1をセットし(ステップS66)、利用開始日時フ
ィールドtimeに、この処理を行っている現在の日時をセ
ットする(ステップS67)。 (5) 送信側は、FundamentalCryptProtocolChangeAlgori
thm の適当なインスタンスを用いて変数FCP と受信側の
IPアドレスから、基本暗号プロトコルを変更するか否
かを決定する(ステップS68)。 (6) 送信側は、(5) で基本暗号プロトコル変更が決定さ
れたとき(ステップS69、YES)(7) に跳ぶ。また
(5) で基本暗号プロトコル変更が決定されなかった場合
(ステップS69、NO)、(10)に跳ぶ。 (7) 送信側は、変数FCP の持つバージョン番号を変数Ve
r に保存する(ステップS70)。 (8) 送信側は、FCPFにより新たなFundamentalCryptProt
ocolのオブジェクトを生成し(ステップS71)、この
オブジェクトのバージョン番号フィールドver に、Ver+
1 をセットし(ステップS72)、利用開始日時フィー
ルドtimeに、この処理を行っている現在の日時をセット
する(ステップS73)。そして、このFundamentalCry
ptProtocolオブジェクトを変数FCP に代入する。 (9) 送信側は、キーを受信側IPアドレス、値をFCP と
して、基本暗号プロトコルデータベースを更新する(ス
テップS74)。 (10)送信側は、SignWithSesionIDクラスのインスタンス
を生成し、変数SWSIDSに代入する(ステップS75)。 (11)送信側は、変数SWSIDSのデータフィールドのsignに
SIGNS を代入し、またSWSIDSのデータフィールドのsid
にSessionID を代入する(ステップS76)。 (12)送信側は、SWSIDSにより文字列"Request Fundament
al Crypt Version" に、SessionID 付署名を施す(ステ
ップS77)。 (13)送信側は、(12)のデジタル署名データを、受信側に
送信する(ステップS75)。 (14)送信側からの受信待機状態(ステップS101)に
ある受信側は、送信側から送られて来たデジタル署名デ
ータを受信する(ステップS102)。 (15)受信側は、SignedWithSesionIDChecker クラスのイ
ンスタンスを生成し、それを変数SWSIDCR に代入する
(ステップS103)。 (16)受信側は、変数SWSIDCR のデータフィールドchecke
r にSCR を代入し、同じくデータフィールドsid にSess
ionID を代入する(ステップS104)。 (17)受信側は、SWSIDCR によって送信側から送られて来
たデジタル署名データを検証する(ステップS10
5)。 (18)受信側は、(17)の検証で妥当性を見出せない場合
(ステップS106、NO)、ステップS101の受信
待機状態に移行する。また妥当性が見出せた場合(ステ
ップS106、YES)、(19)に跳ぶ。 (19)受信側は、基本暗号プロトコルデータベースより送
信側IPアドレスをキーに(ステップS107)、基本
暗号プロトコルを検索する(ステップS108)。 (20)受信側は、(19)の検索で、該当するFundamentalDec
ryptProtocolのオブジェクトが存在しなかった場合(ス
テップS109、NO)、(21)に跳ぶ。また存在した場
合(ステップS109、YES)、(22)に跳ぶ。 (21)受信側は、変数Ver2に0を代入し(24)に跳ぶ(ステ
ップS110)。 (22)受信側は、(19)で検索されたFundamentalDecryptPr
otocolのオブジェクトを変数FDCPに代入する(ステップ
S111)。 (23)受信側は、変数FDCPのデータフィールドver を変数
Ver2に代入する(ステップS112)。 (24)受信側は、SignWithSesionID クラスのインスタン
スを生成し、変数SWSIDRに代入する(ステップS11
3)。 (25)受信側は、変数SWSIDRのデータフィールドsignにSI
GNR を代入し、同じくデータフィールドsid にSessionI
D を代入する(ステップS114)。 (26)受信側は、SWSIDRにより、Ver にSessionID 付署名
を施す(ステップS115)。 (27)受信側は、(26)のSessionID 付署名データを送信側
に送信し(ステップS116)、受信待機状態に移行す
る(ステップS117)。 (28)送信側は、受信側から送られて来たデータを受信す
る(ステップS80)。 (29)送信側は、SignedWithSessionIDCheckerクラスのイ
ンスタンスを生成し、それを変数SWSIDCS に代入する
(ステップS81)。 (30)送信側は、変数SWSIDCS のデータフィールドsignに
SIGNS を、同じくデータフィールドsid にSessionID を
代入する(ステップS82)。 (31)送信側は、SWSIDCS により(28)の受信データを検証
し(ステップS83)、妥当でない場合は(ステップS
84、NO)、エラーメッセージを出力して、ステップ
S79の受信待機状態に戻る。また妥当である場合(ス
テップS84、YES)、(32)に跳ぶ。 (32)送信側は、受信側から送られて来た変数Ver2の値
と、変数FCP のデータフィールドver の値を比較する。
等しい場合は(ステップS85、YES)、文字列”S
AME”を変数dataに代入し(ステップS86)、(35)
に跳ぶ。また等しくない場合は(ステップS85、N
O)、(33)に跳ぶ。 (33)送信側は、FundamentalDecryptProtocolのインスタ
ンスを生成し、変数dataに代入する(ステップS8
7)。 (34)送信側は、変数dataのデータフィールドver にFCP
のver を、dataのデータフィールドkeに変数FCP のke
を、dataのデータフィールドB に変数FCP のデータフィ
ールドscのB をそれぞれ代入する(ステップS88)。 (35)送信側は、SWSIDSによってdataにSessionID 付署名
を施す(ステップS89)。 (36)送信側は、(35)で生成したSessionID 付署名データ
を受信側に送信し(ステップS90)、本プロトコルの
処理を終了する。 (37)受信側は、送信側から送られて来たデータを受信す
る(ステップS118)。 (38)受信側は、SWSIDCR により、(37)の受信データを検
証し(ステップS119)、妥当でない場合は(ステッ
プS120、NO)、ステップS117の受信待機状態
に戻る。また妥当性が検証された場合(ステップS12
0、YES)は、 (39)に跳ぶ。 (39)受信側は、送信側から送られてきたデータが、文字
列”SAME”であった場合(ステップS121、YE
S)、本プロトコルにおける処理を終了し、文字列”S
AME”で無かった場合(ステップS121、NO)、
その中のFundamentalDecryptProtocolのインスタンス
を、変数FDCPに代入する(ステップS122)。 (40)受信側は、キーを送信側IPアドレス、値をFDCPに
して、受信側の基本暗号プロトコルデータベースを更新
した後(ステップS123)、本プロトコルにおける処
理を終了する。 2.2.3.2 公開鍵交換プロトコルの処理手順 次に、公開鍵交換プロトコルについて、その手順を説明
する。
【0049】図12は、公開鍵交換プロトコルによる処
理を示すフローチャート、図13は公開鍵交換プロトコ
ルを構成する各処理やデータの関係を示すブロック図で
ある以下に図12のフローチャートに従って公開鍵交換
プロトコルの実施手順を説明する。 (1) 受信側は、擬似乱数によりバイト列PrvKey1 を生成
する(ステップS141)。 (2) 受信側は、変数FDCPのkeのgetPublicKeyメソッドの
引数にPrvKey1 を代入して、バイト列pubKey1 を取得す
る(ステップS142、S143)。 (3) 受信側は、SWSIDRによりPubKey1 にSessionID 付き
署名を施す(ステップS144)。 (4) 受信側は、(3) のSessionID 付き署名データを、送
信側に送信する(ステップS145)。 (5) 受信待機状態(ステップS131)となっている送
信側は、SessionID 付き署名データを受信する(ステッ
プS132)。 (6) 送信側は、SWSIDCS により、受信側から送られて来
たSessionID 付き署名データの検証を行い(ステップS
133)、もし妥当でない場合は(ステップS134、
NO)、ステップS131の受信待機状態に移行する。
また妥当な場合は(ステップS134、YES)、(7)
に跳ぶ。 (7) 送信側は、受信側から送られて来たSessionID 付き
署名データに格納されているpubKey1 を、変数PubKey1
に代入する(ステップS135)。 (8) 送信側は、擬似乱数によりバイト列PrvKey2 を生成
する(ステップS136)。 (9) 送信側は、変数FCP のkeのgetCommonKeyメソッドの
第一パラメタにPubKey1を、第二パラメタにPrvKey2 を
それぞれ代入して、メソッドを呼び出し、その戻り値を
変数PrvKeyに代入する(ステップS137)。 (10)送信側は、変数FCP のkeのgetPublicKeyメソッドの
引数にPrvKey2 を代入して、そのメソッドの戻り値を変
数pubKey2 に代入する(ステップS138)。 (11)送信側は、変数SWSIDSによりPubKey2 にSessionID
付き署名を施す(ステップS139)。 (12)送信側は、(11)のSessionID 付き署名データを受信
側に送り(ステップS140)、本プロトコルでの処理
を終了する。 (13)受信側は、送信側から送られて来たSessionID 付き
署名データを受信する(ステップS147)。 (14)受信側は、SWSIDCR により、送信側から送られて来
たSessionID 付き署名データを検証し(ステップS14
8)、妥当でない場合は(ステップS149、NO)、
ステップS146の受信待機状態に移行する。また妥当
な場合は(ステップS149、YES)、(15)に移行す
る。 (15)受信側は、送信側から送られて来たSessionID 付き
署名データに格納されているpubKey2 を変数PubKey2 に
代入する(ステップS150)。 (16)受信側は、変数FDCPのkeのgetCommonKeyメソッドの
第一パラメタにPubKey2を、そして第二パラメタにPrvKe
y1 を代入して、本メソッドの戻り値を変数PrvKeyに代
入し(ステップS151)、本プロトコルでの処理を終
了する。 2.3 情報暗号プロトコル確立プロトコル 2.3.1情報暗号プロトコル確立プロトコルの概要 図14は、情報暗号プロトコル確立プロトコルの概要を
示す図である。
【0050】本プロトコルは、図1に示した暗号化アル
ゴリズムCとそれに対応する復号化アルゴリズムDの整
合性を図るためのもので、次の2つのプロトコルに分解
される。 (1) サーバ送信に関する情報暗号プロトコル確立プロト
コル (2) クライアント送信に関する情報暗号プロトコル確立
プロトコル この上記の2つのプロトコルでは、サーバとクライアン
トは同等で、入れ替えても同じなので、以下の説明で
は、送信側及び受信側という表現を用いて説明する。 2.3.2情報暗号プロトコル確立プロトコルの関連ク
ラス (1) InfoCryptProtocol クラス 本クラスは、図1に示した暗号化アルゴリズムCとそれ
に対応する復号化アルゴリズムDのペアを表す抽象クラ
スであり、以下のデータフィールドと抽象メソッドを有
するものとする。
【0051】[データフィールド] A) int cnt (利用回数) B) long time (利用開始日時) [抽象メソッド] C) MapData getCryptMap(); 暗号化アルゴリズムを返
すメソッド D) MapData getDecryptMap(); 復号化アルゴリズムを
返すメソッド 尚getCryptMap メソッドの返す暗号化アルゴリズムは、
getDecryptメソッドの返す復号化アルゴリズムと対応す
るものとする。 (2) MapData クラス 本クラスは、図1に示した暗号化アルゴリズムCあるい
は復号化アルゴリズムDを表す抽象クラスであり、下記
の抽象メソッドを有するものとする。
【0052】byte[] getMappedData(byte[] data);本ク
ラスは、鍵無しの暗号化ならびに復号化アルゴリズムを
表現している。 (3) InfoCryptProtocolFactoryクラス InfoCryptProtocol のインスタンスを生成する抽象クラ
スである。
【0053】本クラスには、下記の抽象メソッドがあ
る。 InfoCryptProtocol create(byte[] addr);ここで、addr
は、受信側のIPアドレスである。 [抽象クラスの実装例]情報暗号プロトコル確立プロト
コルで利用するクラスの中で、抽象クラスとなっている
ものを、具体的に実装した例を示す。
【0054】ここでは、図1に示した暗号化アルゴリズ
ムCと復号化アルゴリズムDに対応するKeyMapクラス、
そしてこれらのアルゴリズムを生成するためのInfoCryp
tProtocolFactoryクラスの実装例を示す。これらのアル
ゴリズムあるいはアルゴリズム生成アルゴリズムは、実
際の暗号化通信の運用に応じて、フレキシブルに変更、
登録できる。 [例1] 自明な実装クラス 本クラス群は、何も暗号化しないという自明なものであ
る。 [PlainCryptクラス]本クラスは、MapData の派生クラ
スである。
【0055】メソッドgetMappedData(byte[] data); の
戻り値=data [PlainCryptProtocolクラス]本クラスは、InfoCryptPro
tocol の派生クラスである。メソッドgetCryptMapなら
びにgetDecryptMapの戻り値は、PlainCryptクラスのイ
ンスタンス。 [例2] 数論的バイト列置換を利用したクラス [ReplaceMapクラス]本クラスは、MapData の派生クラ
スである。 <データフィールド> int a (整数) int b (整数) <メソッドの実装> メソッドgetMappedData(byte[] data); の戻り値は、下
記の手順で求める。 (1) dataの配列長をN とする。 (2) 整数a0≡a mod N (0≦a0<N)とする。 (3) a0<N/2ならば、aにa+[N/2]を代入して(2) に戻
る。 (4) 整数c を、N と互いに素な整数の中で、整数a0以上
で一番小さいものを選ぶ。 (5) バイト列data2 を下記の要領で作成する。 (6) 0 ≦s <N に対して、 data2[s]=data[k] 但し、k ≡c*s+b mod N 0 ≦k <
N (7) このdata2 を戻り値とする。 [ReplaceInverseMap クラス]本クラスは、MapData の
派生クラスである。 <データフィールド> int a (整数) int b (整数) <メソッドの実装> メソッドgetMappedData(byte[] data); の戻り値は、下
記の手順で求める。 (1) dataの配列長をN とする。 (2) 整数a0≡a mod N (0≦a0<N)とする。 (3) a0<N/2 ならば、a にa+[N/2] を代入して(2) に戻
る。 (4) 整数c に、N と互いに素な整数の中で、整数a0以上
で一番小さいものを選ぶ。 (5) 整数c のmod N における逆元d を求める。 (6) バイト列data2 を下記の要領で作成する。 (7) 0 ≦s <N に対して、 data2[s]=data[k] 但し、k ≡d*(s-b) mod N 0 ≦k
<N (8) このdata2 を戻り値とする。 [ReplaceMapProtocolクラス]本クラスは、InfoCryptP
rotocol の派生クラスである。 <データフィールド> int a (整数) int b (整数) <メソッドの実装>getCryptMap() メソッドの戻り値
を、ReplaceMapのインスタンスで、そのフィールドa,b
に本クラスのa,b を代入したものとする。
【0056】getDecryptMap() メソッドの戻り値を、Re
placeInverseMap のインスタンスで、そのフィールドa,
b に本クラスのa,b を代入したものとする。 [例3] 排他的論理和を利用したクラス [MaskMap クラス]本クラスは、MapData の派生クラス
である。 <データフィールド> int a (整数:0 ≦a <256 ) <メソッド>下記の抽象メソッドがあるとする。
【0057】int next(int n) <メソッドの実装> メソッドgetMappedData(byte[] data); の戻り値は、下
記の手順で求める。 (1) dataの配列長をN とする。 (2) 空のバイト列data2 を用意する。 (3) 変数i に0を代入する。 (4) data2[i]=data[i]+a(+は各ビット毎の排他的論理
和) (5) a にnext(a) の値を代入する。 (6) a にa を256で割った時の剰余を代入する。 (7) i にi+1 を代入する。 (8) i==Nならば、data2 を返す。 (9) (4) に飛ぶ。
【0058】メソッドnextは、単に整数を整数に対応さ
せるものなので、色々な実装クラスが考えられる。 [MaskMapProtocol クラス]本クラスは、InfoCryptPro
tocol の派生抽象クラスである。 <データフィールド> int a (整数:0 ≦a <256) getCryptMap メソッドとgetDecryptMap メソッドの戻り
値は同じ。
【0059】本クラスは、まだ抽象クラスであるが、Ma
skMap クラスの実装クラス毎に、本クラスの派生クラス
が存在する。 [例4] データ挿入を利用したクラス [InsertMap クラス] <データフィールド> int offset (整数) int length (整数) <メソッドの実装> メソッドgetMappedData(byte[] data); の戻り値は、下
記の手順で求める。 (1) 擬似乱数を用いて、バイト長がlengthとなるバイト
列seq を生成する。 (2) バイト列data2 にdataをコピーする。 (3) data2 のoffset番目にseq を挿入する。 (4) data2 を返す。 [TruncateMap クラス]本クラスは、MapData の派生ク
ラスである。 <データフィールド> int offset (整数) int length (整数) <メソッドの実装> メソッドgetMappedData(byte[] data); の戻り値は、下
記の手順で求める。 (1) バイト列data2 にdataをコピーする。 (2) data2 のoffset番目からバイト長lengthの文字列を
data2 から切り取る。 (3) data2 を返す。 [InsertMapProtocol クラス]本クラスは、InfoCryptP
rotocol の派生クラスである。 <データフィールド> int offset (整数) int length (整数) <メソッドの実装>getCryptMap メソッドの戻り値は、
InsertMap のインスタンスであり、そのフィールドのof
fset、lengthに本クラスのoffsetとlengthを代入したも
のである。
【0060】getDecryptMap メソッドの戻り値は、Trun
cateMap のインスタンスであり、そのフィールドのoffs
et、lengthに本クラスのoffsetとlengthを代入したもの
である。 [例5] 複数のアルゴリズムの組み合わせを利用した
クラス [CompoundMapData クラス]本クラスは、MapData の派
生クラスである。
【0061】<データフィールド> MapData[] mapdataArray (MapData オブジェクトの配
列) <メソッドの実装> メソッドgetMappedData(byte[] data); の戻り値は、下
記の手順で求める。 (1) mapdataArrayの配列長をN とする。 (2) バイト列data2 にdataをコピーする。 (3) 変数i に0を代入する。 (4) MapdataArray[i] の持つgetMappedData メソッドの
引数にdata2 を代入した戻り値をdata2 に代入する。 (5) i にi+1 を代入する。 (6) i==Nの場合、data2 を返す。 (7) (4) に跳ぶ。 [CompoundCryptProtocol クラス]本クラスは、InfoCr
yptProtocol の派生クラスである。
【0062】<データフィールド> InfoCryptProtocol[] protocolArray (InfoCryptProto
col オブジェクトの配列) <メソッドの実装>メソッドgetCryptMap の戻り値は、
下記の方法で求める。 (1) protocolArray の配列長をNとする。 (2) MapDataArrayの空の配列mapdataArrayを用意する。 (3) 変数n に0を代入する。 (4) protocolArray[n]のgetCryptMap メソッドの戻り値
を、mapdataArray[n] に代入する。 (5) n にn+1 を代入する。 (6) n <N の場合(4) に跳ぶ。 (7) CompoundMapData のインスタンスのフィールドにma
pdataArrayを代入し、返す。
【0063】メソッドgetDecryptMap の戻り値は、下記
の方法で求める。 (1) protocolArray の配列長をN とする。 (2) MapDataArrayの空の配列mapdataArrayを用意する。 (3) 変数n に0を代入する。 (4) protocolArray[N-n-1]のgetDecryptMap メソッドの
戻り値を、mapdataArray[n] に代入する。 (5) n にn+1 を代入する。 (6) n <N の場合(4) に跳ぶ。 (7) CompoundMapData のインスタンスのフィールドにma
pdataArrayを代入し、返す。
【0064】次に、InfoCryptProtocolFactoryの実装ク
ラス例を示す。 [Concreate InfoCryptProtocolFactoryクラス] <メソッドの実装>メソッドcreate(byte[] addr) の戻
り値を、下記のようにして求める。 (1) 送信側のIPアドレスをバイト列addr2 で求める。 (2) 受信側のIPアドレスaddrと送信側のIPアドレス
addr2 より、本通信が信頼される経路であると判断され
た場合、[例1]のPlainCryptProtocolのインスタンス
を返し終了する。 (3) 受信側のIPアドレスaddrと送信側のIPアドレス
addr2 より、本通信が信頼される経路であると判断され
なかった場合、配列長3のInfoCryptProtocol の空の配
列、protocolを用意する。 (4) 擬似乱数により、整数a と整数b を生成し、例2の
ReplaceMapProtocolのインスタンスのフィールドa ,b
に代入する。protocol[0] に、このReplaceMapProtocol
オブジェクトを代入する。 (5) 擬似乱数により整数を生成し、その256による剰
余をa とする。例3のMaskMapProtocol (のある実装ク
ラス)のインスタンスのフィールドにこのa を代入す
る。protocol[1] に、このMaskMapProtocolオブジェク
トを代入する。 (6) 擬似乱数により、整数offsetとlengthを生成し、例
4のInsertMapProtocolのインスタンスのフィールドに
代入する。protocol[2]にこのInsertMapProtocol オブ
ジェクトを代入する。 (7) CompoundCryptProtocol のインスタンスを生成し、
そのフィールドにprotocolを代入する。 (8) このCompoundCryptProtocol オブジェクトを返す。 [Concreate InfoCryptProtocolFactory2クラス]予
め、整数をキーに、InfoCryptProtocol の実装クラスを
値として持つ、InfoCryptProtocol データベースを用意
しておく。本実施形態では、このデータベースに次のエ
ントリが実施済みであるものとする。
【0065】
【表1】 <メソッドの実装>メソッドcreate(byte[] addr) の戻
り値を、下記のようにして求める。 (1) 送信側のIPアドレスをバイト列addr2 で求める。 (2) 受信側のIPアドレスaddrと送信側のIPアドレス
addr2 より、本通信が信頼される経路であると判断され
た場合、[例1]のPlainCryptProtocolのインスタンスを
返し終了する。 (3) 受信側のIPアドレスaddrと送信側のIPアドレス
addr2 より、本通信が信頼されている経路であると判断
されなかった場合、配列長3のInfoCryptProtocol の空
の配列であるprotocolを用意する。 (4) 擬似乱数を用いて、0か1か2を値とする配列a
[0],a[1],a[2]を作成する。 (5) 変数n に0を代入する。 (6) a[n]をキーにして、InfoCryptProtocol データベー
スよりInfoCryptProtocol の実装クラスXを取得する。 (7) 実装クラスXがReplaceMapProtocolと等しい場合、
(13)に飛ぶ。 (8) 実装クラスXがMaskMapProtocol と等しい場合、(1
4)に飛ぶ。 (9) 実装クラスXがInsertMapProtocol と等しい場合、
(15)に飛ぶ。 (10)n を1増加させる。 (11)n が2以下ならば、(6) に跳ぶ。 (12)CompoundCryptProtocol のインスタンスを生成し、
そのフィールドにprotocolを代入する。 (12)このCompoundCryptProtocol オブジェクトを返し、
終了する。 (13)ReplaceMapProtocolのインスタンスAを生成し、更
に擬似乱数により、整数aと整数bを生成し、Aのフィ
ールドa,b に代入する。protocol[n] に、Aを代入す
る。そして、(10)に跳ぶ。 (14)MaskMapProtocol のインスタンスBを生成し、さら
に擬似乱数により整数を生成し、その256による剰余
をaとする。Bのインスタンスのフィールドにこのaを
代入する。protocol[n] に、Bを代入する。そして、(1
0)に跳ぶ。 (15)InsertMapProtocol のクラスCを生成し、さらに擬
似乱数により、整数offset とlength を生成し、Cのイ
ンスタンスのフィールドに代入する。protocol[n] に、
Cを代入する。そして、(10)に跳ぶ。 2.3.3情報暗号プロトコル確立プロトコルの処理手
順 図15は情報暗号プロトコル確立プロトコルによる処理
を示すフローチャート、図16は情報暗号プロトコル確
立プロトコルを構成する各処理やデータの関係を示すブ
ロック図である。
【0066】図15のフローチャートに従って、以下に
情報暗号プロトコル確立プロトコルの処理手順を説明す
る。 (1) 送信側は、受信側のIPアドレスを変数addrに設定
し(ステップS161)、この受信側IPアドレスと送
信側が所有するInfoCryptProtocolFactoryのインスタン
スを利用して、InfoCryptProtocol オブジェクトを生成
し、変数P に代入する(ステップS162)。 (2) 変数P の利用開始日時データフィールドtimeに現在
の日時を代入する。また変数P の利用回数データフィー
ルドcnt に0を代入する(ステップS163)。 (3) 送信側は、P のメソッドgetCryptMap の戻り値をC
とし、同じくP のメソッドgetDecryptMap の戻り値をD
とする(ステップS164)。(それぞれ、図1に示し
た暗号化アルゴリズムCと復号化アルゴリズムDに対
応) (4) 送信側は、変数FCP (基本暗号プロトコル確立プロ
トコルで定義)より、それの内蔵する暗号アルゴリズム
(SymmetricCryptオブジェクト)より暗号化アルゴリズ
ムA(KeyDataMapオブジェクト 図1に示した暗号化ア
ルゴリズムAに対応)を取り出す(ステップS16
5)。 (5) 送信側は、暗号化アルゴリズムAと受信側と共通で
持つ秘密鍵PrvKeyによって、復号化アルゴリズムDを暗
号化し、それを変数CD(Crypt Data)に代入する(ステッ
プS166)。 (6) 送信側は、SWSIDSでCDにSessionID 付の署名を施す
(ステップS167)。 (7) 送信側は、SessionID 付の署名データを受信側に送
り(ステップS168)、受信滝待ち状態に移行する
(ステップS169)。 (8) 受信待機状態(ステップS181)にある受信側
は、SessionID 付の署名データを受信する(ステップS
182)。 (9) 受信側は、受信データの妥当性をSWSIDCR で検証す
る(ステップS183)。 (10)受信側は、(9) で妥当性を見出せない場合(ステッ
プS184、NO)、ステップS181の受信待機状態
に移行する。また妥当性を見出した場合(ステップS1
84、YES)は(11)に跳ぶ。 (11)受信側は、送信側から送られて来たデータを、受信
側の持つ変数FDCPより復号化アルゴリズムB(KeyDataM
apオブジェクトであり、図1に示した復号化アルゴリズ
ムBに対応)を取り出す(ステップS185)。 (12)受信側は、送信側から送られて来たCDを、復号化ア
ルゴリズムBで復号化し、復号化アルゴリズムDを取得
する(ステップS186、S187)。 (13)受信側は、文字列"Ready" にSessionID を付け加え
たデータに署名を行い(ステップS188)、送信側に
送り(ステップS189)、本プロトコルにおける処理
を終了する。 (14)送信側は、SessionID 付の署名データを受信する
(ステップS170)。 (15)送信側は、SWSIDCS により(14)の受信データを検証
し(ステップS171)、妥当でない場合は(ステップ
S172、NO)、エラーメッセージを出力して、ステ
ップS169の受信待機状態に戻る。また妥当である場
合(ステップS172、YES)は処理を終了する。 2.4情報暗号プロトコル 2.4.1情報暗号プロトコルの概要 図17は、情報暗号プロトコルの概要を示す図である。
【0067】情報暗号プロトコルは、下記の3つのプロ
トコルが存在する。 A) 情報暗号プロトコル開始プロトコル B) サーバ送信に関する情報暗号プロトコル C) クライアント送信に関する情報暗号プロトコル A)の情報暗号プロトコル開始プロトコルは、情報暗号
プロトコルを開始するに行われる処理であり、不正者に
対するリトライ攻撃対策処理である。
【0068】B)、C)のプロトコルは、随時行われる
手順であり、これまでのプロトコルの説明と違い、B)
とC)の処理は、それぞれ複数回行われる可能性もあ
り、またこれらの処理の順番も特に決まりはない。これ
らは、この暗号化通信方法を利用するアプリケーション
プロトコルで決定することとなる。
【0069】B)、C)のプロトコルは、サーバとクラ
イアントの入れ替えで同じものである。そこで、以下で
は、送信側がデータXを受信側に送信する場合の本プロ
トコルの手順を説明する。 2.4.2情報暗号プロトコルの関連クラス (1) AppendCounter クラス 本クラスは、送信したいデータに、セッションIDと送
信カウンタを付け加えたデータを作成するクラスであ
る。 <データフィールド> int sid (セッションID) int scnt (送信回数) <メソッド> byte[] appendCounter(byte[] data);本メソッドの実行
手順を説明する。 data にsid を付け加え、それを変数data2 に代入す
る。 scntを1増やす。 data2 にscntを付け加え、それを返す。 (2) AppendCounterCheckerクラス <データフィールド> int sid (セッションID) int rcnt (受信回数) <メソッド> boolean isValid(byte[] appendData);本メソッドの実
行処理の手順を下記で示す。 appendDataから送信回数情報を変数scntに代入する。 scnt - rcnt==1ならば、に跳ぶ。そうでないなら
ば、false を返す。 appendDataからセッションID情報を変数sid2に代入
する。 sid==sid2 ならばに跳ぶ。そうでないならば、fals
e を返す。 rcntの値を1増やす。 trueを返す。 2.4.3情報暗号プロトコル開始プロトコルの処理手
順 図18は、情報暗号プロトコル開始プロトコルの処理手
順を示すフローチャートである。
【0070】以下に図18のフローチャートに従って情
報暗号プロトコル開始プロトコルの処理手順を説明す
る。尚本処理は、クライアント側とサーバー側とでは、
基本的に同じ内容の処理を行う。 (1) クライアント側は、AppendCounter のインスタンス
を生成し、変数ACC に代入する(ステップS191)。 (2) クライアント側は、変数ACC のsid にSessionID を
代入し、また変数ACC のscntに0を代入する(ステップ
S192)。 (3) クライアント側は、AppendCounterCheckerのインス
タンスを生成し、変数ACCCに代入する(ステップS19
3)。 (4) クライアント側は、変数ACCCのsid にSessionID を
代入し、変数ACCCのrcntに0を代入する(ステップS1
94)。 (5) クライアント側と同様サーバ側では、AppendCounte
r のインスタンスを生成し、変数ACS に代入する(ステ
ップS201)。 (6) サーバ側は、変数ACS のsid にSessionID を代入
し、変数ACS のscntに0を代入する(ステップS20
2)。 (7) サーバ側は、AppendCounterCheckerのインスタンス
を生成し、変数ACCSに代入する(ステップS203)。 (8) サーバ側は、変数ACCSのsid にSessionID を代入
し、変数ACCSのrcntに0を代入する(ステップS20
4)。 2.4.4情報暗号プロトコルの処理手順 図19は情報暗号プロトコルによる処理を示すフローチ
ャート、図20は情報暗号プロトコルを構成する各処理
やデータの関係を示すブロック図である。
【0071】以下に図19のフローチャートに従って公
開鍵交換プロトコルの実施手順を説明する。本処理で
は、クライアントとサーバでは基本的に同じ処理を行う
ので送信側と受信側に分けた形でデータX(図1の送信
対象データEに対応)を送信するプロトコルを説明す
る。尚図19及び下記の説明では、変数名等は送信側で
はサーバ、受信側にはクライアントのものを用いてい
る。
【0072】また本処理は、図18に示した前段階の情
報暗号プロトコル開始プロトコルが実施されたことを前
提としており、送信側には、AppendCounter オブジェク
トACS が、受信側には、AppendCounterCheckerオブジェ
クトACCRが存在するものと仮定する。 (1) 送信側は、ACS によって、データXにSessionID と
SendCount を付け加え、そのデータを変数X2に代入する
(ステップS211)。 (2) 送信側は、X2を暗号化アルゴリズムCで暗号化し、
それを変数X3に代入する(ステップS212)。 (3) 送信側は、X3を受信側に送信し(ステップS21
2)、本プロトコルによる処理を終了する。 (4) 受信待機状態(ステップS221)にある受信側
は、送信側から送られて来た暗号化データを受信して変
数X3に代入する(ステップS222)。 (5) 受信側は、X3を、復号化アルゴリズムDで復号化
し、そのデータを変数X2に代入する(ステップS22
3)。 (6) 受信側は、ACCRでX2を検証する(ステップS22
4)。 (7) 受信側は、(6) の検証で妥当性を見出せなかった場
合は(ステップS225、NO)、ステップS221の
受信待機状態に移行する。また妥当性を見出した場合は
(ステップS225、YES)、(8) に跳ぶ。 (8) 受信側は、X2よりセッションID情報や送信回数情
報を剥ぎ取り、データXを得る(ステップS226)。
【0073】図21は、本実施形態によって用いられる
クライアント側及びサーバ側のシステム環境を示す図で
ある。このクライアント側やサーバ側の情報処理装置
は、図21の様にCPU11、主記憶装置12、ハード
ディスク等による補助記憶装置13、ディスプレイ、キ
ーボード等の入出力装置(I/O)14、モデム等のネ
ットワーク接続装置15及びディスク、磁気テープなど
の可搬記憶媒体から記憶内容を読み出す媒体読取り装置
16を有し、これらが互いにバス18により接続される
構成を備えている。
【0074】図21の情報処理システムでは、媒体読取
り装置16により磁気テープ、フレキシブルディスク、
CD−ROM、MO等の記憶媒体17に記憶されている
プログラム、データを読み出し、これを主記憶装置12
または補助記憶装置13にダウンロードし、CPU11
がこのプログラムやデータを実行することにより、上記
したプロトコルをソフトウェア的に実現することが可能
である。
【0075】また、この情報処理システムでは、フレキ
シブルディスク等の記憶媒体17を用いてアプリケーシ
ョンソフトの交換が行われる場合がある。よって、本発
明は、通信方法に限らず、コンピュータにより使用され
たときに、上述の本発明の実施の形態の機能をコンピュ
ータに行わせるためのコンピュータ読み取り可能な記憶
媒体17やプログラムとして構成することもできる。
【0076】この場合、「記憶媒体」には、例えば図2
2に示されるように、CD−ROM、フレキシブルディ
スク(あるいはMO、DVD、リムーバブルハードディ
スク等であってもよい)等の媒体駆動装置27に脱着可
能な可搬記憶媒体26や、ネットワーク回線23経由で
送信される外部の装置(サーバ等)内の記憶手段(デー
タベース等)22、あるいは情報処理装置21の本体2
4内のメモリ(RAM又はROM、ハードディスク等)
25等が含まれる。可搬記憶媒体26や記憶手段(デー
タベース等)22に記憶されているプログラムは、本体
24内のメモリ(RAM又はROM、ハードディスク
等)25にロードされて、実行される。
【0077】
【発明の効果】本発明によれば、送信側の所持する暗号
化処理と受信側の所持する復号化処理の整合性が保証さ
れた暗号化通信を実現することが出来る。また強度の大
きい暗号化による機密情報の効率的な伝達を可能とした
暗号化通信を実現することが出来る。
【0078】更に利用される暗号アルゴリズムを頻繁に
変更でき、第三者による不正解読の手がかりを抑え込
め、る。また機密情報の種類や経路の信頼性に応じて、
暗号アルゴリズムを動的に設定できる暗号化通信を実現
することが出来る。
【図面の簡単な説明】
【図1】本実施形態における暗号通信方式の基本原理を
説明する図である。
【図2】本実施形態における暗号化通信プロトコルの概
要を示す図である。
【図3】図3は基本認証プロトコルの概要を示す図であ
る。
【図4】認証プロトコルによる処理を示すフローチャー
トである。
【図5】認証プロトコルを構成する各処理やデータの関
係を示すブロック図である。
【図6】セッションIDプロトコルによる処理を示すフ
ローチャートである。
【図7】セッションIDプロトコルを構成する各処理や
データの関係を示すブロック図である。
【図8】基本暗号プロトコル確立プロトコルの概要を示
す図である。
【図9】基本暗号アルゴリズム交換プロトコルによる処
理を示すフローチャート(その1)である。
【図10】基本暗号アルゴリズム交換プロトコルによる
処理を示すフローチャート(その2)である。
【図11】基本暗号アルゴリズム交換プロトコルを構成
する各処理やデータの関係を示すブロック図である。
【図12】公開鍵交換プロトコルによる処理を示すフロ
ーチャート、
【図13】公開鍵交換プロトコルを構成する各処理やデ
ータの関係を示すブロック図である。
【図14】情報暗号プロトコル確立プロトコルの概要を
示す図である。
【図15】情報暗号プロトコル確立プロトコルによる処
理を示すフローチャートである。
【図16】情報暗号プロトコル確立プロトコルを構成す
る各処理やデータの関係を示すブロック図である。
【図17】情報暗号プロトコルの概要を示す図である。
【図18】情報暗号プロトコル開始プロトコルの処理手
順を示すフローチャートである。
【図19】情報暗号プロトコルによる処理を示すフロー
チャートである。
【図20】情報暗号プロトコルを構成する各処理やデー
タの関係を示すブロック図である。
【図21】クライアント及びサーバシステム環境を示す
図である。
【図22】記憶媒体の例を示す図である。
【符号の説明】
11 CPU 12 主記憶装置 13 補助記憶装置 14 入出力装置 15 ネットワーク接続装置 16 媒体読取り装置
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5J104 AA09 AA16 AA35 AA36 EA06 EA18 JA03 JA31 KA04 MA05 NA01 NA02 PA07

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 送信側は、受信側が保持する第1の復号
    化アルゴリズムに対応する第1の暗号化アルゴリズムに
    よって、第2の暗号化アルゴリズムに対応する第2の復
    号化アルゴリズム若しくは該第2の暗号化アルゴリズム
    又は第2の復号化アルゴリズムを示す情報を暗号化して
    送信データを生成し、 該送信データを受信側に送信することを特徴とする暗号
    通信方法。
  2. 【請求項2】 送信側は前記第1の暗号化アルゴリズム
    とそれに対応する第1の復号化アルゴリズムのバージョ
    ン管理を行い、 受信側が前記第1の復号化アルゴリズムを所持していな
    い場合、あるいは前記第1の暗号化アルゴリズムと前記
    第1の復号化アルゴリズムのバージョンが異なる場合、
    送信側は受信側に前記第1の暗号化アルゴリズムに対応
    する前記第2の復号化アルゴリズムを送信し、受信側は
    第1の復号化アルゴリズムを送信側から受信したものに
    置き換えることを特徴とする請求項1に記載の暗号通信
    方法。
  3. 【請求項3】 送信側が所持している第1の暗号化アル
    ゴリズムの利用開始時期、利用トランザクション数、受
    信側の通信アドレス、あるいは受信側の署名情報の少な
    くとも1つを元に、送信側は第1の暗号化アルゴリズム
    を自動的に変更することを特徴とする請求項1又は2に
    記載の暗号通信方法。
  4. 【請求項4】 第1の暗号化アルゴリズムが、送信側に
    おいて手動で変更されることを特徴とする請求項1又は
    2に記載の暗号通信方法。
  5. 【請求項5】 受信側は、送信側から受信した前記第1
    の暗号化アルゴリズムで暗号化された送信データを前記
    第1の復号化アルゴリズムによって復号化し、 以降送信側は、送信対象データを前記第2の暗号化アル
    ゴリズムによって暗号化して送信データを生成、受信側
    に送信し、 受信側は、送信側から送信された前記第2の暗号化アル
    ゴリズムで暗号化された送信データを前記第2の復号化
    アルゴリズムによって復号化することを特徴とする請求
    項1乃至4の何れか1つに記載の暗号通信方法。
  6. 【請求項6】 前記第1の暗号化アルゴリズム及び前記
    第2の復号化アルゴリズムには暗号強度が高いものが用
    いられ、前記第2の暗号化アルゴリズムならびには複号
    化前記第2の復号化アルゴリズムに処理コストが小さい
    ものが用いられることを特徴とする請求項1乃至5の何
    れか1つに記載の暗号通信方法。
  7. 【請求項7】 送信側は、通信経路の信頼性に応じて、
    前記第2の復号化アルゴリズムを動的に変更することを
    特徴とする請求項1乃至6の何れか1つに記載の暗号通
    信方法。
  8. 【請求項8】 送信側は、ネットワークセッション毎
    に、前記第2の暗号化アルゴリズム並びに前記第2の復
    号化アルゴリズムを変更することを特徴とする請求項1
    乃至7の何れか1つに記載の暗号通信方法。
  9. 【請求項9】 送信側は、同一ネットワークセッション
    中、前記第2の暗号化アルゴリズムの利用時間若しくは
    利用回数に応じて、前記第2の暗号化アルゴリズムを変
    更し、該変更した第2の暗号化アルゴリズムに対応する
    第2の復号化アルゴリズム若しくは該変更した第2の暗
    号化アルゴリズム又は該対応する第2の復号化アルゴリ
    ズムを前記第1の暗号化アルゴリズムで暗号化して受信
    側に送信することを特徴とする請求項1乃至8の何れか
    1つに記載の暗号通信方法。
  10. 【請求項10】 送信側は、前記第2の暗号化アルゴリ
    ズム及び対応する前記第2の復号化アルゴリズムを自動
    的に作成することを特徴とする請求項1乃至9の何れか
    1つに記載の暗号通信方法。
  11. 【請求項11】 送信側は、複数の暗号アルゴリズムが
    登録されている暗号アルゴリズムデータベースからラン
    ダムに抽出した複数の暗号アルゴリズムを組み合わせて
    前記第2の暗号アルゴリズムを生成することを特徴とす
    る請求項10に記載の暗号アルゴリズム生成装置。
  12. 【請求項12】 前記送信側と前記受信側との間のセッ
    ションを特定するID又は送信回数を示す情報のうち少
    なくとも1つを前記送信データに含ませることにより、
    不正リトライ攻撃防御機能を備えることを特徴とする請
    求項1乃至11の何れか1つに記載の暗号通信方法。
  13. 【請求項13】 送信側は、前記第1の暗号化アルゴリ
    ズムで暗号化された送信データ及び前記第2の暗号化ア
    ルゴリズムで暗号化された送信データに署名データを付
    与して受信側に送信することを特徴とする請求項1乃至
    12の何れか1つに記載の暗号通信方法。
  14. 【請求項14】 送信側と受信側とでネットワークを介
    して暗号化通信を行う暗号化通信システムにおいて、 前記送信側は、 前記受信側が保持する第1の復号化アルゴリズムに対応
    する第1の暗号化アルゴリズムによって、第2の復号化
    アルゴリズム若しくは該第2の復号化アルゴリズム又は
    第2の復号化アルゴリズムに対応する第2の暗号化アル
    ゴリズムを示す情報を暗号化して送信データを生成する
    送信データ生成手段と、 該送信データを前記ネットワークを介して受信側に送信
    するデータ送信手段とを備え、 前記受信側は、 前記ネットワークを介して前記送信データを受信するデ
    ータ受信手段と、 前記送信データを前記第1の復号化アルゴリズムによっ
    て復号化して前記第2の復号化アルゴリズム若しくは該
    第2の復号化アルゴリズム又は第2の復号化アルゴリズ
    ムに対応する第2の暗号化アルゴリズムを示す情報を取
    り出す復号化手段とを備えることを特徴とする暗号化通
    信システム。
  15. 【請求項15】 ネットワークを介して暗号化通信を行
    うコンピュータにおいて、 前記暗号化通信の相手が保持する第1の復号化アルゴリ
    ズムに対応する第1の暗号化アルゴリズムによって、第
    2の復号化アルゴリズム若しくは該第2の復号化アルゴ
    リズム又は第2の復号化アルゴリズムに対応する第2の
    暗号化アルゴリズムを示す情報を暗号化して送信データ
    を生成する送信データ生成手段と、該送信データを前記
    ネットワークを介して前記暗号化通信の相手に送信する
    データ送信手段とを備えることを特徴としたコンピュー
    タ。
  16. 【請求項16】 ネットワークを介して暗号化通信を行
    うコンピュータにおいて、 前記ネットワークを介して前記暗号化通信の相手からの
    送信データを受信する受信手段と、 前記送信データを第1の復号化アルゴリズムによって復
    号化して第2の復号化アルゴリズム若しくは該第2の復
    号化アルゴリズム又は第2の復号化アルゴリズムに対応
    する第2の暗号化アルゴリズムを示す情報を取り出す復
    号化手段と、 を備えることを特徴としたコンピュータ。
  17. 【請求項17】 ネットワークを介して通信を行うコン
    ピュータによって使用されたとき、 受信側が保持する第1の復号化アルゴリズムに対応する
    第1の暗号化アルゴリズムによって、第2の復号化アル
    ゴリズム若しくは該第2の復号化アルゴリズム又は第2
    の復号化アルゴリズムに対応する第2の暗号化アルゴリ
    ズムを示す情報を暗号化して送信データを生成し、 該送信データを前記ネットワークを介して受信側に送信
    することを前記コンピュータに行わせるためプログラム
    を記憶した前記コンピュータが読み出し可能な記録媒
    体。
  18. 【請求項18】 ネットワークを介して通信を行うコン
    ピュータによって使用されたとき、 前記ネットワークを介して送信データを受信し、 前記送信データを第1の暗号化アルゴリズムによって復
    号化して第2の復号化アルゴリズム若しくは該第2の復
    号化アルゴリズム又は第2の復号化アルゴリズムに対応
    する第2の暗号化アルゴリズムを示す情報を取り出し、 以降前記送信側からの送信データを前記第2の復号化ア
    ルゴリズムによって復号化することを前記コンピュータ
    に行わせるためのプログラムを記憶した前記コンピュー
    タが読み出し可能な記録媒体。
  19. 【請求項19】 ネットワークを介して通信を行うコン
    ピュータのプログラムであって、 受信側が保持する第1の復号化アルゴリズムに対応する
    第1の暗号化アルゴリズムによって、第2の復号化アル
    ゴリズム若しくは該第2の復号化アルゴリズム又は第2
    の復号化アルゴリズムに対応する第2の暗号化アルゴリ
    ズムを示す情報を暗号化して送信データを生成し、 該送信データを前記ネットワークを介して受信側に送信
    することを前記コンピュータに行わせるためのプログラ
    ム。
  20. 【請求項20】 ネットワークを介して通信を行うコン
    ピュータによって使用されたとき、 前記ネットワークを介して送信データを受信し、 前記送信データを第1の暗号化アルゴリズムによって復
    号化して第2の復号化アルゴリズム若しくは該第2の復
    号化アルゴリズム又は第2の復号化アルゴリズムに対応
    する第2の暗号化アルゴリズムを示す情報を取り出し、 以降前記送信側からの送信データを前記第2の復号化ア
    ルゴリズムによって復号化することを前記コンピュータ
    に行わせるためプログラム。
JP2001379888A 2001-12-13 2001-12-13 暗号化通信方法、暗号化通信システム、暗号化通信を行うコンピュータ、記憶媒体及びプログラム Pending JP2003179595A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001379888A JP2003179595A (ja) 2001-12-13 2001-12-13 暗号化通信方法、暗号化通信システム、暗号化通信を行うコンピュータ、記憶媒体及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001379888A JP2003179595A (ja) 2001-12-13 2001-12-13 暗号化通信方法、暗号化通信システム、暗号化通信を行うコンピュータ、記憶媒体及びプログラム

Publications (1)

Publication Number Publication Date
JP2003179595A true JP2003179595A (ja) 2003-06-27

Family

ID=19187016

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001379888A Pending JP2003179595A (ja) 2001-12-13 2001-12-13 暗号化通信方法、暗号化通信システム、暗号化通信を行うコンピュータ、記憶媒体及びプログラム

Country Status (1)

Country Link
JP (1) JP2003179595A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021502014A (ja) * 2017-11-03 2021-01-21 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 確立したセッション内で暗号および鍵を変更するための方法およびシステム(確立したセッション内での暗号および鍵の変更)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03107842U (ja) * 1990-02-21 1991-11-06
JPH04286434A (ja) * 1990-11-16 1992-10-12 General Instr Corp 安全な通信網を保つための端末の機能更新方法とその装置
JPH06216897A (ja) * 1993-01-20 1994-08-05 Nippon Signal Co Ltd:The データ送受信装置
JPH10126406A (ja) * 1996-10-23 1998-05-15 Toyo Commun Equip Co Ltd ネットワークにおけるデータの暗号方式
JP2000244547A (ja) * 1999-02-17 2000-09-08 Nippon Telegr & Teleph Corp <Ntt> 認証方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03107842U (ja) * 1990-02-21 1991-11-06
JPH04286434A (ja) * 1990-11-16 1992-10-12 General Instr Corp 安全な通信網を保つための端末の機能更新方法とその装置
JPH06216897A (ja) * 1993-01-20 1994-08-05 Nippon Signal Co Ltd:The データ送受信装置
JPH10126406A (ja) * 1996-10-23 1998-05-15 Toyo Commun Equip Co Ltd ネットワークにおけるデータの暗号方式
JP2000244547A (ja) * 1999-02-17 2000-09-08 Nippon Telegr & Teleph Corp <Ntt> 認証方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021502014A (ja) * 2017-11-03 2021-01-21 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 確立したセッション内で暗号および鍵を変更するための方法およびシステム(確立したセッション内での暗号および鍵の変更)

Similar Documents

Publication Publication Date Title
US5657390A (en) Secure socket layer application program apparatus and method
US7305548B2 (en) Using atomic messaging to increase the security of transferring data across a network
US6094485A (en) SSL step-up
US6628786B1 (en) Distributed state random number generator and method for utilizing same
US8249255B2 (en) System and method for securing communications between devices
US7979707B2 (en) Secure seed generation protocol
Karn et al. Photuris: Session-key management protocol
KR100480225B1 (ko) 데이터 안전화 통신장치 및 그 방법
US7120249B2 (en) Methods and systems for generating encryption keys using random bit generators
Chou Inside SSL: the secure sockets layer protocol
US7457956B2 (en) Securing arbitrary communication services
US20020056040A1 (en) System and method for establishing secure communication
EP1583322A2 (en) A method and system for recovering password protected private data via a communication network without exposing the private data
JP2004501547A (ja) 安全なコラボレーティブ・トランザクションを管理する方法及び装置
JP6326173B1 (ja) データ送受信システム及びデータ送受信方法
GB2345620A (en) Secure distribution of session keys to a chain of network nodes
US7894608B2 (en) Secure approach to send data from one system to another
Elgohary et al. Design of an enhancement for SSL/TLS protocols
CN112929166A (zh) 一种基于Modbus-TCP协议的主站、从站及数据传输系统
CN116743372A (zh) 基于ssl协议的量子安全协议实现方法及系统
US20080181397A1 (en) Secure data transmission and storage using limited-domain functions
JP2003179595A (ja) 暗号化通信方法、暗号化通信システム、暗号化通信を行うコンピュータ、記憶媒体及びプログラム
Kocher The ssl protocol version 3.0
Karn et al. RFC2522: Photuris: Session-Key Management Protocol
JP4104315B2 (ja) 鍵管理システム、鍵管理装置、情報暗号化装置、情報復号化装置、およびプログラムを記憶した記憶媒体

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050426

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050719

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050818

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050928

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20051202