(57)【要約】【課題】  グループ内のメンバー間で暗号通信を行う場合に、メンバーに変動が生じても柔軟に対応し、十分なセキュリティを確保する。【解決手段】  企業Ａの社員全員に、同一の固定コードＦ（ａ）が格納されたＩＣカードを配付する。同じプロジェクトグループに所属する社員甲，乙間で暗号通信を行う場合、送信側の甲は、任意の可変コードＶ（１）をＩＣカード１００ａに書き込み、ＩＣカード内部でＦ（ａ）とＶ（１）に基づき暗号用鍵情報Ｋ（ａ１）を発生させ、Ｋ（ａ１）を用いて、データＤ１を暗号化する。受信側の乙は、甲から伝達を受けた可変コードＶ（１）を、ＩＣカード１００ｂに書き込み、暗号用鍵情報Ｋ（ａ１）を発生させる。このＫ（ａ１）を用いて、受信した暗号文データＤ２を復号化してデータＤ３を得る。固定コードＦ（ａ）は企業ごとに異ならせ、書換不能とすることにより、セキュリティを確保する。【選択図】  図７
2005322963.tif 000002
【特許請求の範囲】
【請求項１】
固有の暗号用鍵情報を用いた暗号化処理もしくは復号化処理を実行するために利用されるＩＣカードであって、
メモリと、このメモリ内に格納されているデータおよびプログラムに基づいて所定の処理を実行するＣＰＵと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を有し、
前記メモリには、第１の格納場所、第２の格納場所、第３の格納場所が確保されており、
前記第１の格納場所には、予め所定の固定コードが格納されており、前記固定コードは書き換えができないように構成されており、
前記第２の格納場所には、外部から任意の可変コードを書き込むことができ、前記可変コードは書き換えができるように構成されており、
前記メモリには、前記第１の格納場所に格納されている固定コードおよび前記第２の格納場所に格納されている可変コードを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、前記２つのコードに応じて一義的に定まる暗号用鍵情報を発生させ、これを前記第３の格納場所に格納する鍵情報発生プログラムと、前記第３の格納場所に格納されている暗号用鍵情報を利用してＩＣカード内部で暗号化処理もしくは復号化処理を実行する暗号化／復号化プログラムと、
が格納されていることを特徴とする暗号化もしくは復号化処理用のＩＣカード。
【請求項２】
固有の暗号用鍵情報を用いた暗号化処理もしくは復号化処理を実行するために利用されるＩＣカードであって、
メモリと、このメモリ内に格納されているデータおよびプログラムに基づいて所定の処理を実行するＣＰＵと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を有し、
前記メモリには、第１の格納場所、第２の格納場所、第３の格納場所が確保されており、
前記第１の格納場所には、予め所定の固定コードが格納されており、前記固定コードは書き換えができないように構成されており、
前記第２の格納場所には、外部から任意の可変コードを書き込むことができ、前記可変コードは書き換えができるように構成されており、
前記メモリには、前記第１の格納場所に格納されている固定コードおよび前記第２の格納場所に格納されている可変コードを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、前記２つのコードに応じて一義的に定まる暗号用鍵情報を発生させ、これを前記第３の格納場所に格納する鍵情報発生プログラムと、ＩＣカード外部で暗号化処理もしくは復号化処理を実行するために前記第３の格納場所に格納されている暗号用鍵情報もしくはその一部を外部へ読み出す鍵読出プログラムと、
が格納されていることを特徴とする暗号化もしくは復号化処理用のＩＣカード。
【請求項３】
請求項１または２に記載のＩＣカードにおいて、
鍵情報発生プログラムが、暗号用鍵情報として、暗号化もしくは復号化に用いる暗号用キー自身を発生させる機能を有することを特徴とする暗号化もしくは復号化処理用のＩＣカード。
【請求項４】
請求項１または２に記載のＩＣカードにおいて、
鍵情報発生プログラムが、暗号用鍵情報として、その一部分が、暗号化もしくは復号化に用いる暗号用キーとして利用されるキーテーブルを発生させる機能を有することを特徴とする暗号化もしくは復号化処理用のＩＣカード。
【請求項５】
請求項１〜４のいずれかに記載されたＩＣカードであって、互いに同一の固定コードが格納されている第１のＩＣカードおよび第２のＩＣカードと、
前記第１のＩＣカードを用いて暗号化された暗号文データを送信する送信手段と、
送信されてきた前記暗号文データを受信し、これを復号化するために前記第２のＩＣカードに与える受信手段と、
を備えることを特徴とする暗号通信システム。
【請求項６】
請求項１〜４のいずれかに記載されたＩＣカードであって、互いに同一の固定コードが格納されている第１のＩＣカードおよび第２のＩＣカードを用意し、前記第１のＩＣカードを送信者側に、前記第２のＩＣカードを受信者側に、それぞれ配置する準備段階と、
前記送信者側において、前記第１のＩＣカードに所定の可変コードを書き込んで暗号用鍵情報を発生させ、発生させた暗号用鍵情報を利用して、送信対象データを暗号化する処理を行う暗号化段階と、
前記送信者側から前記受信者側に、暗号化された前記送信対象データを送信するとともに、前記可変コードを伝達する送信伝達段階と、
前記受信者側において、伝達されてきた前記可変コードを、前記第２のＩＣカードに書き込んで暗号用鍵情報を発生させ、発生させた暗号用鍵情報を利用して、送信されてきた前記送信対象データを復号化する処理を行う復号化段階と、
を有することを特徴とする暗号通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号通信システムおよび暗号通信方法に関し、特に、暗号化もしくは復号化処理用のＩＣカードを利用して暗号通信を行う技術に関する。
【背景技術】
【０００２】
近年、コンピュータネットワークの普及により、暗号通信の技術は、極めて重要かつ不可欠の技術となっている。一般的な暗号通信の方法では、送信者側において、送信対象データを暗号化し、暗号文データとして受信者側へと送信し、受信者側では、送信されてきた暗号文データを復号化して元の送信対象データを得る、という手順が実行される。したがって、両者間で暗号通信を行うには、データの送受信を行う手段を設けるとともに、送信者側に暗号化処理を実行する手段を設け、受信者側に復号化処理を実行する手段を設ける必要がある。
【０００３】
このような暗号化処理あるいは復号化処理を実行する方法として、ＩＣカードを利用する方法が脚光を浴びている。ＩＣカードは、極めて機密性の高い携帯型情報記録媒体として古くから様々な用途に利用されており、最近では、社員証を兼ねた多機能のＩＣカードを各社員に配付する企業も増えている。このような機密性を有する携帯型情報記録媒体は、暗号化処理あるいは復号化処理に利用するのに最適である。一般的な暗号化の手法では、暗号化アルゴリズムにおける種（Seed）として秘密の暗号用キーや暗号用キーテーブル（ここでは、これらを総称して暗号用鍵情報と呼ぶ）が用いられることが多い。所定の平文データを暗号文データに変換する暗号化プロセスでは、この秘密の暗号用鍵情報を用いた処理が実行される。この場合、暗号文データを平文データに戻す復号化プロセスでは、暗号化プロセスで用いた秘密の暗号用鍵情報が不可欠の要素となる。すなわち、秘密の暗号用鍵情報がない限り、復号化を行うことができない。そこで、この秘密の暗号用鍵情報をＩＣカードに格納しておくようにすれば、不正な手段で暗号用キーにアクセスすることが非常に困難になり、暗号文自身のセキュリティの向上を図ることができる。
【０００４】
ＩＣカードを利用した暗号通信は、同一の暗号用鍵情報を格納した２組のＩＣカードを用意することにより実現できる。すなわち、第１のＩＣカードを送信者が所持し、第２のＩＣカードを受信者が所持するようにし、送信者は第１のＩＣカード内の暗号用鍵情報を利用して暗号化処理を行い、受信者は第２のＩＣカード内の暗号用鍵情報を利用して復号化処理を行えばよい。もちろん、同一の暗号用鍵情報が格納された多数のＩＣカードを用意し、これを所定のグループに所属するメンバーに配付するようにすれば、当該グループに所属するメンバー間での暗号通信が可能になる。たとえば、下記の特許文献１には、複数のＩＣカードを利用して多数間での暗号通信を行うシステムが開示されている。
【特許文献１】特開平５−３４７６１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
暗号通信システムは、そもそも所定のグループに所属するメンバーに限って解読が可能となるように、暗号データをやりとりするシステムであり、グループに所属しない部外者には、暗号データの解読が行われることのないような対策がとられることを前提としている。しかしながら、比較的大規模な企業などでは、特定のグループに所属するメンバーが、頻繁に変動するケースも少なくない。
【０００６】
たとえば、社内で、ある特定のプロジェクトを遂行するために、特定のメンバーからなるプロジェクトチームを発足させたとしよう。この場合、当該プロジェクトチームのメンバーのみを対象として、暗号通信を行いたい、という状況が起こりうるであろう。このような場合、もちろん、当該特定のプロジェクトに関与しない社員には、解読を行うことができないような態様で暗号通信を行うことが、従来の暗号通信技術でも可能である。ただ、社内のプロジェクトチームは、一定の期間が経過すると、解散したり、合併したり、新規メンバーが加わったり、既存メンバーが抜けたりと、頻繁にメンバーの変動が起こりやすい。したがって、実用上は、メンバーの変動に応じて、柔軟に対処可能な暗号通信システムが必要になる。しかし、柔軟性とセキュリティとは、一般的には相反する要素であり、柔軟性をもたせれば、それだけセキュリティは低下せざるを得ない。
【０００７】
そこで本発明は、所定のグループに所属するメンバー間で暗号通信を行う場合に、メンバーに変動が生じても柔軟な対応が可能であり、かつ、十分なセキュリティを確保することが可能な暗号通信システムおよび暗号通信方法を提供することを目的とし、また、これに利用可能なＩＣカードを提供することを目的とする。
【課題を解決するための手段】
【０００８】
(1)   本発明の第１の態様は、固有の暗号用鍵情報を用いた暗号化処理もしくは復号化処理を実行するために利用されるＩＣカードにおいて、
メモリと、このメモリ内に格納されているデータおよびプログラムに基づいて所定の処理を実行するＣＰＵと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を設け、
メモリには、第１の格納場所、第２の格納場所、第３の格納場所を確保し、
第１の格納場所には、予め所定の固定コードを格納しておき、この固定コードは書き換えができないように構成しておき、
第２の格納場所には、外部から任意の可変コードを書き込むことができるようにし、この可変コードは書き換えができるように構成しておき、
メモリには、第１の格納場所に格納されている固定コードおよび第２の格納場所に格納されている可変コードを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、２つのコードに応じて一義的に定まる暗号用鍵情報を発生させ、これを第３の格納場所に格納する鍵情報発生プログラムと、第３の格納場所に格納されている暗号用鍵情報を利用してＩＣカード内部で暗号化処理もしくは復号化処理を実行する暗号化／復号化プログラムと、
を格納しておくようにしたものである。
【０００９】
(2)   本発明の第２の態様は、固有の暗号用鍵情報を用いた暗号化処理もしくは復号化処理を実行するために利用されるＩＣカードにおいて、
メモリと、このメモリ内に格納されているデータおよびプログラムに基づいて所定の処理を実行するＣＰＵと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を設け、
メモリには、第１の格納場所、第２の格納場所、第３の格納場所を確保し、
第１の格納場所には、予め所定の固定コードを格納しておき、この固定コードは書き換えができないように構成しておき、
第２の格納場所には、外部から任意の可変コードを書き込むことができるようにし、この可変コードは書き換えができるように構成しておき、
メモリには、第１の格納場所に格納されている固定コードおよび第２の格納場所に格納されている可変コードを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、２つのコードに応じて一義的に定まる暗号用鍵情報を発生させ、これを第３の格納場所に格納する鍵情報発生プログラムと、ＩＣカード外部で暗号化処理もしくは復号化処理を実行するために第３の格納場所に格納されている暗号用鍵情報もしくはその一部を外部へ読み出す鍵読出プログラムと、
を格納しておくようにしたものである。
【００１０】
(3)   本発明の第３の態様は、上述の第１または第２の態様に係る暗号化もしくは復号化処理用のＩＣカードにおいて、
鍵情報発生プログラムが、暗号用鍵情報として、暗号化もしくは復号化に用いる暗号用キー自身を発生させる処理を行うようにしたものである。
【００１１】
(4)   本発明の第４の態様は、上述の第１または第２の態様に係る暗号化もしくは復号化処理用のＩＣカードにおいて、
鍵情報発生プログラムが、暗号用鍵情報として、その一部分が、暗号化もしくは復号化に用いる暗号用キーとして利用されるキーテーブルを発生させる処理を行うようにしたものである。
【００１２】
(5)   本発明の第５の態様は、上述の第１〜第４の態様に係る暗号化もしくは復号化処理用のＩＣカードを利用した暗号通信システムにおいて、
互いに同一の固定コードが格納されている第１のＩＣカードおよび第２のＩＣカードと、
第１のＩＣカードを用いて暗号化された暗号文データを送信する送信手段と、
送信されてきた暗号文データを受信し、これを復号化するために第２のＩＣカードに与える受信手段と、
を設けるようにしたものである。
【００１３】
(6)   本発明の第６の態様は、上述の第１〜第４の態様に係る暗号化もしくは復号化処理用のＩＣカードを利用した暗号通信方法において、
互いに同一の固定コードが格納されている第１のＩＣカードおよび第２のＩＣカードを用意し、第１のＩＣカードを送信者側に、第２のＩＣカードを受信者側に、それぞれ配置する準備段階と、
送信者側において、第１のＩＣカードに所定の可変コードを書き込んで暗号用鍵情報を発生させ、発生させた暗号用鍵情報を利用して、送信対象データを暗号化する処理を行う暗号化段階と、
送信者側から受信者側に、暗号化された送信対象データを送信するとともに、第１のＩＣカードに書き込んだ可変コードを伝達する送信伝達段階と、
受信者側において、伝達されてきた可変コードを、第２のＩＣカードに書き込んで暗号用鍵情報を発生させ、発生させた暗号用鍵情報を利用して、送信されてきた送信対象データを復号化する処理を行う復号化段階と、
を行うようにしたものである。
【発明の効果】
【００１４】
本発明によれば、暗号化処理あるいは復号化処理に必要な暗号用鍵情報は、ＩＣカード内部に格納されている固定コードおよび可変コードなる２つのコードに基づく演算処理によって、ＩＣカード内部で発生される。ここで、固定コードは、ＩＣカードに予め書き込まれたデータであり、書き換えができないよう構成されている。したがって、たとえば、特定の企業に対して発行するＩＣカードに、当該企業に固有の同一の固定コードを書き込んでおくようにすれば、当該固定コードは、当該企業の社員が所持するＩＣカードにのみ格納されたデータとなるので、社外の不特定多数の者に対しては十分なセキュリティ対策を施すことができる。一方、可変コードは、自由に書き換えが可能なコードであるので、プロジェクトチームのメンバー改変などがあるたびに、新たに書き換えるようにすれば、柔軟な対応が可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を図示する実施形態に基づいて説明する。
【００１６】
＜＜＜  §１．暗号用鍵情報を格納した一般的なＩＣカード  ＞＞＞
本発明に係る暗号通信システムは、暗号化もしくは復号化処理用のＩＣカードを利用して暗号通信を行うシステムである。そこで、はじめに、暗号用鍵情報を格納した一般的なＩＣカードの構成と、このＩＣカードを利用した暗号化および復号化のプロセスを簡単に説明しておく。図１は、現在広く利用されている一般的なＩＣカード１００の構成と、このＩＣカード１００を利用した暗号化処理のプロセスを説明するブロック図である。図示のとおり、このＩＣカード１００は、メモリ１１０と、ＣＰＵ１２０と、Ｉ／Ｏ部１３０とを有している。ここに示す例では、メモリ１１０は、書換不能な不揮発性メモリであるＲＯＭ１１１と、書換可能な不揮発性メモリであるＥＥＰＲＯＭ１１２と、書換可能な揮発性メモリであるＲＡＭ１１３から構成されている。ＲＯＭ１１１には、このＩＣカード１００が備えている基本的な処理機能を実行するためのプログラムが格納されており、ＥＥＰＲＯＭ１１２には、このＩＣカード１００に記録しておくべき種々のデータが格納されている。また、ＲＡＭ１１３は、ＣＰＵ１２０が種々の処理を実行する際の作業領域として利用される
【００１７】
メモリ１１０は、ＣＰＵ１２０によってのみアクセス可能であり、外部から直接メモリ１１０へアクセスすることはできない。外部からのアクセスは、Ｉ／Ｏ部１３０を介して行われる。すなわち、ＣＰＵ１２０は、Ｉ／Ｏ部１３０を介して外部から与えられるコマンドを、ＲＯＭ１１１内のプログラムに基づいて実行し、実行結果をレスポンスとして、Ｉ／Ｏ部１３０を介して外部へと返す。図示の例は、平文データを暗号文データに変換する暗号化処理と、逆に、暗号文データを平文データに変換する復号化処理とを実行する機能を有するＩＣカードの例であり、ＲＯＭ１１１内には、この暗号化および復号化を行うためのプログラムが格納されており、ＥＥＰＲＯＭ１１２内には、このプログラムが利用する暗号用キーが格納されている。
【００１８】
このＩＣカード１００に対して、Ｉ／Ｏ部１３０を介して、所定の暗号化コマンドと平文データを与えると、ＣＰＵ１２０は、ＲＯＭ１１１内のプログラムに基づいて、与えられた暗号化コマンドを実行し、与えられた平文データに対して所定の暗号化処理を施し、得られた暗号文データを、Ｉ／Ｏ部１３０を介して、レスポンスとともに外部へ出力する処理を行う。この暗号化処理を行う際に、ＥＥＰＲＯＭ１１２内に格納されている暗号用キーが利用される。逆に、このＩＣカード１００に対して、Ｉ／Ｏ部１３０を介して、所定の復号化コマンドと暗号文データを与えると、ＣＰＵ１２０は、ＲＯＭ１１１内のプログラムに基づいて、与えられた復号化コマンドを実行し、与えられた暗号文データに対して所定の復号化処理を施し、元の平文データを復元し、この平文データを、Ｉ／Ｏ部１３０を介して、レスポンスとともに外部へ出力する処理を行う。この復号化処理を行う際にも、ＥＥＰＲＯＭ１１２内に格納されている暗号用キーが利用される。このとき、暗号化処理に用いた暗号用キーと同一のキーを用いないと、平文データの復元を正しく行うことはできない。
【００１９】
なお、ここでは、暗号化／復号化の処理プログラムがＲＯＭ１１１内に用意されている例を示したが、このプログラムはＥＥＰＲＯＭ１１２に用意しておくことも可能である。暗号化／復号化の処理プログラムをＥＥＰＲＯＭ１１２内に用意しておくようにすると、必要に応じて、この処理プログラムを書き換えることも可能である。また、ここでは説明の便宜上、暗号化および復号化の処理機能のみをもったＩＣカード１００を示すが、実用上は、ＩＣカード１００は様々な用途に利用されるので、ＲＯＭ１１１あるいはＥＥＰＲＯＭ１１２内には、これら様々な用途における様々な処理を実行するためのプログラムが格納されていることになる。
【００２０】
図２は、暗号化／復号化の処理を、ＩＣカード１００の内部ではなく、外部の演算処理装置２００内で行う場合の実施形態を示すブロック図である。この例では、外部の演算処理装置２００に平文データを与えると、暗号文データとして出力されることになり、逆に、暗号文データを与えると、平文データとして出力されることになる。このように、暗号化／復号化の処理を外部の演算処理装置２００で行う場合、ＥＥＰＲＯＭ１１２内に格納されている暗号用キーが、Ｉ／Ｏ部１３０を介して、外部の演算処理装置２００側へと読み出される。暗号化および復号化のためのプログラムは、外部の演算処理装置２００側に用意されており、当該プログラムが、ＩＣカード１００から読み出した暗号用キーを用いて暗号化／復号化の処理を実行することになる。
【００２１】
図２に示す実施形態では、ＥＥＰＲＯＭ１１２内に格納されている暗号用キーが、ＩＣカード１００の外部へと読み出されてしまうため、セキュリティの観点からは、図１に示す実施形態の方が優れている。図１に示す実施形態では、ＥＥＰＲＯＭ１１２に格納された暗号用キーがＩＣカード１００の外部に読み出されることはないので、暗号用キーがＥＥＰＲＯＭ１１２に格納された後は、不正な手段で知られる可能性は極めて低い。
【００２２】
なお、図１および図２では、ＩＣカード内に格納されている暗号用キーを用いて、暗号化処理および復号化処理を行う例を示したが、実用上は、暗号化処理および復号化処理に用いる暗号用キーそのものをＩＣカード内に格納する代わりに、暗号用キーテーブルを格納する場合もある。図３は、このようなキーテーブルの概念を示す図である。図示の例では、１つのマス目は１バイトのデータを示しており、合計２０バイトのデータ列によって、キーテーブルが構成されている。このようなキーテーブルをＩＣカード内に格納しておくようにすれば、必要に応じて、このキーテーブルの所望の一部分を暗号用キーとして抽出して利用することができ、複数通りのバリエーションをもった暗号用キーとして利用することができるようになる。
【００２３】
たとえば、暗号化処理の際に、「７バイト目から８バイト分を暗号用キーとして用いよ」なる指示を外部から与えて暗号化処理を実行させたとすれば、図示の例のように、キーテーブルから指定された一部分のみが抽出されて暗号用キーとして利用されることになる。このような方法で暗号化されたデータを復号化する際には、暗号化処理の際と同じ「７バイト目から８バイト分を暗号用キーとして用いよ」なる指示を与えて、暗号用キーを特定する必要があるので、セキュリティを更に向上させることが可能になる。
【００２４】
結局、図３に示すキーテーブルは、その一部分が、暗号化もしくは復号化に用いる暗号用キーとして利用されるデータということができる。そこで、本願では、暗号用キー自身と、図３に示すようなキーテーブルと、を総称して「暗号用鍵情報」と呼ぶことにする。
【００２５】
＜＜＜  §２．本発明に係るＩＣカードの構成  ＞＞＞
上述した§１では、暗号化および復号化に利用される一般的なＩＣカードの構成を説明したが、ここでは、本発明に係るＩＣカードの構成を説明する。本発明に係るＩＣカードの特徴は、２つのコードを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、これら２つのコードに応じて一義的に定まる暗号用鍵情報を発生させる鍵情報発生プログラムを内蔵している点である。そこで、まず、この鍵情報発生プログラムの処理プロセスの概念を説明する。
【００２６】
図４は、この鍵情報発生プログラムの処理プロセスを示すブロック図である。本発明で用いられる鍵情報発生プログラムは、図示のとおり、固定コードＦと可変コードＶという２つのデータを用いて、所定のアルゴリズムＡに基づく演算処理を実行し、暗号用鍵情報Ｋを生成する機能を有している。このように、固定コードＦと可変コードＶという２つのデータを用いたアルゴリズムによって暗号用鍵情報Ｋを生成させるメリットについては後述する。
【００２７】
ここで、所定のアルゴリズムＡとしては、どのようなアルゴリズムを用いてもかまわないが、図には、一例として、４桁の数字からなる固定コードＦと、同じく４桁の数字からなる可変コードＶとの和を求め、この和の下４桁を暗号用鍵情報Ｋとする単純なアルゴリズムが示されている。たとえば、固定コードＦが「６７８９」なる数字、可変コードＶが「５１５１」なる数字であった場合、図示のとおり、「１９４０」なる数字からなる暗号用鍵情報Ｋが生成されることになる。このようなアルゴリズムを採用すれば、２つのデータＦおよびＶが与えられると、この２つのデータに応じて一義的に定まる暗号用鍵情報Ｋを発生させることができる。固定コードＦの桁数や可変コードＶの桁数を適当に設定することにより、あるいはアルゴリズムＡとして特定のアルゴリズムを採用することにより、任意の桁数をもった暗号用鍵情報Ｋを発生させることが可能である。したがって、このような方法で発生させた暗号用鍵情報Ｋは、前述したキーテーブルとして利用することも十分に可能である。
【００２８】
なお、暗号用鍵情報Ｋを発生させるアルゴリズムは、必ずしも２つのデータに基づく演算処理に限定されるものではなく、固定コードＦと可変コードＶという２つのデータが少なくとも用いられ、これら２つのデータに応じて一義的に定まる暗号用鍵情報Ｋが得られるアルゴリズムであれば、第３のデータや第４のデータを用いる演算であってもかまわない。いずれにしても、暗号用鍵情報Ｋを得るためには、固定コードＦと可変コードＶとの２つのコードが必要になり、どちらか一方だけでは、暗号用鍵情報Ｋを生成することはできない。
【００２９】
図５は、本発明の一実施形態に係るＩＣカード１００の基本構成を示すブロック図である。§１で述べた従来の一般的なＩＣカードと同様に、図５の実施形態に係るＩＣカード１００も、メモリ１１０と、ＣＰＵ１２０と、外部に対して情報のやりとりを行うＩ／Ｏ部１３０と、を有しており、メモリ１１０は、ＲＯＭ１１１、ＥＥＰＲＯＭ１１２、ＲＡＭ１１３から構成されている。
【００３０】
この実施形態の場合、図示のとおり、ＲＯＭ１１１内には、基本プログラムＰ１，鍵情報発生プログラムＰ２，暗号化／復号化プログラムＰ３が格納されており、ＥＥＰＲＯＭ１１２内には、第１の格納場所Ｌ１、第２の格納場所Ｌ２、第３の格納場所Ｌ３が確保されている。ここで、第１の格納場所Ｌ１は、固定コードＦを格納するための場所であり、第２の格納場所Ｌ２は、可変コードＶを格納するための場所であり、第３の格納場所Ｌ３は、暗号用鍵情報Ｋを格納するための場所である。ＣＰＵ１２０は、ＲＯＭ１１１内に格納されているプログラムおよびＥＥＰＲＯＭ１１２やＲＡＭ１１３内に格納されているデータに基づいて所定の処理を実行することになる。前述したとおり、ＣＰＵ１２０が実行する処理内容は、Ｉ／Ｏ部１３０を介して外部から与えられるコマンドに応じて決定され、実行結果はレスポンスとして外部へと出力される。
【００３１】
ＥＥＰＲＯＭ１１２内に格納されている固定コードＦ、可変コードＶ、暗号用鍵情報Ｋは、図４に示す各ブロックに対応するものである。このＩＣカード１００の目的は、暗号化処理もしくは復号化処理を実行することにあり、この本来の目的のために必要なデータは、暗号用鍵情報Ｋである。これに対して、固定コードＦおよび可変コードＶは、図４に示すプロセスに基づいて、暗号用鍵情報Ｋを生成するために必要なデータということになる。
【００３２】
ＲＯＭ１１１に格納されている基本プログラムＰ１は、このＩＣカード１００の基本的な動作に必要なプログラムであり、通常、このＩＣカード用のＯＳプログラムとして組み込まれるプログラムである。本実施形態の場合、第１の格納場所Ｌ１に固定コードＦを書き込む処理や、第２の格納場所Ｌ２に可変コードＶを書き込む処理は、この基本プログラムＰ１によって実行される。実際の書込作業は、外部からＩ／Ｏ部１３０を介して、所定の書込コマンドと書込対象データ（固定コードＦもしくは可変コードＶ）とを与える操作を行うことによりなされる。
【００３３】
なお、後述するように、可変コードＶは、自由に書き込みが可能なコードであり、随時、書き換えることができるが、固定コードＦは、書き換えができないように固定されたコードにしておく必要がある。もっとも、ここで、「書き換えができないように固定された」とは、このＩＣカード１００の利用者にとって書き換えができないように固定されていればよい。別言すれば、このＩＣカード１００が通常の利用環境下にある限りは、固定コードＦの書き換えができない状態になっていればよいので、必要があれば、製造者あるいは提供者については、固定コードＦを書き換えることができるような運用も可能である。
【００３４】
このように、固定コードＦの書き換えができないような構成をとるためには、通常の環境下では、書込コマンド（いわゆるＷＲＩＴＥコマンド）による第１の格納場所Ｌ１への書き込みが禁止されるような手段を講じておけばよい。具体的には、第１の格納場所Ｌ１を、ＯＳによって管理される特別なアドレス領域に確保するようにし、ＩＣカードの製造者や提供者のみが知っている特別な手順を踏まなければ、この特別なアドレス領域へのデータ書き込みができないようなアクセス制御を、ＯＳプログラムに組み込んでおけばよい。あるいは、この特別なアドレス領域に対しては、書込処理が１回のみ許されるような構成にしておいてもよい。いずれにしても、この第１の格納場所に対する固定コードの書込処理は、ＩＣカードの製造者あるいは提供者側で行われるようにし、一般の利用者が、ＩＣカード１００を手にしたときには、既に、第１の格納場所に所定の固定コードＦが書き込まれている状態となるようにする。
【００３５】
一方、鍵情報発生プログラムＰ２は、図４に示すプロセスを実行することにより暗号用鍵情報Ｋを発生させるためのプログラムであり、第１の格納場所Ｌ１に格納されている固定コードＦおよび第２の格納場所Ｌ２に格納されている可変コードＶを用いて、所定のアルゴリズムＡに基づく演算処理を行うことにより、これら２つのコードに応じて一義的に定まる暗号用鍵情報Ｋを発生させ、これを第３の格納場所Ｌ３に格納する処理が行われる。実際には、外部からＩ／Ｏ部１３０を介して、所定の鍵情報発生コマンドを与えることにより、プログラムＰ２が実行されることになる。
【００３６】
また、暗号化／復号化プログラムＰ３は、第３の格納場所Ｌ３に格納されている暗号用鍵情報Ｋを利用してＩＣカード１００の内部で暗号化処理もしくは復号化処理を実行するためのプログラムである。このプログラムＰ３により暗号化処理を実行する際には、外部からＩ／Ｏ部１３０を介して、暗号化処理のためのコマンドと、暗号化の対象となる平文データとを与えればよい。暗号化処理により生成された暗号文データは、レスポンスとして、Ｉ／Ｏ部１３０を介して外部へ出力される。同様に、このプログラムＰ３により復号化処理を実行する際には、外部からＩ／Ｏ部１３０を介して、復号化処理のためのコマンドと、復号化の対象となる暗号文データとを与えればよい。復号化処理により生成された平文データは、レスポンスとして、Ｉ／Ｏ部１３０を介して外部へ出力される。
【００３７】
なお、この図５に示す実施形態では、説明の便宜上、各プログラムＰ１〜Ｐ３がすべてＲＯＭ１１１内に用意されている例を示したが、これらのプログラムはＥＥＰＲＯＭ１１２に用意しておくことも可能である。また、前述したとおり、ＩＣカード１００は様々な用途に利用されるので、実用上は、ＲＯＭ１１１あるいはＥＥＰＲＯＭ１１２内には、これら様々な用途における様々な処理を実行するためのプログラムも格納されることになる。一方、データに関しても、図５に示す実施形態では、可変コードＶおよび暗号用鍵情報ＫをＥＥＰＲＯＭ１１２内に格納した例を示したが、可変コードＶの入力作業、暗号用鍵情報Ｋの発生作業（プログラムＰ２の実行）、暗号化もしくは復号化の処理作業（プログラムＰ３の実行）を、ＩＣカード１００に対する電源供給を停止させることなく連続して実行するのであれば、可変コードＶを格納する第２の格納場所Ｌ２および暗号用鍵情報Ｋを格納する第３の格納場所Ｌ３を、揮発性メモリであるＲＡＭ１１３内に確保することも可能である。
【００３８】
＜＜＜  §３．本発明に係る暗号通信システム  ＞＞＞
続いて、§２で述べたＩＣカード１００を利用した暗号通信システムの運用例を説明する。図６は、本発明に係るＩＣカード１００の発行形態を示すブロック図である。ここに示す形態は、顧客企業Ａおよび顧客企業Ｂからの委託を受けたＩＣカード提供業者Ｘが、それぞれの企業に所属する個々の社員に対して、それぞれＩＣカードを発行する事例である。
【００３９】
この事例では、まず、ＩＣカード提供業者Ｘは、各企業ごとに、それぞれ固定コードＦを定義する。図示の例では、顧客企業Ａに対しては、固定コードＦ（ａ）が定義され、顧客企業Ｂに対しては、固定コードＦ（ｂ）が定義された例が示されている。これらコードＦ（ａ），Ｆ（ｂ）は、互いに異なるコードであれば、どのようなコードであってもかまわない。また、図には示されていないが、第３の顧客企業Ｃ，第４の顧客企業Ｄなどがあれば、これらの企業に対しても、それぞれ異なる固定コードＦ（ｃ），Ｆ（ｄ）を定義する。このように、固定コードＦは、１つのグループ（図示の例の場合は、１つの企業）に対して共通して付与されるユニークなコードになる。
【００４０】
結局、図６に示す発行プロセスでは、ＩＣカード提供業者Ｘは、顧客企業Ａに納品すべきＩＣカードには、固定コードＦ（ａ）を書き込む処理を行い、顧客企業Ｂに納品すべきＩＣカードには、固定コードＦ（ｂ）を書き込む処理を行うことになる。その結果、企業Ａの社員に対して発行されたＩＣカード１００ａには、すべて同一の固定コードＦ（ａ）が格納されており、企業Ｂの社員に対して発行されたＩＣカード１００ｂには、すべて同一の固定コードＦ（ｂ）が格納されていることになる。
【００４１】
なお、ＩＣカード提供業者Ｘは、企業Ａ以外には、固定コードＦ（ａ）が書き込まれたＩＣカード１００ａを決して納品しないようにし、企業Ｂ以外には、固定コードＦ（ｂ）が書き込まれたＩＣカード１００ｂを決して納品しないようにする。このような運用を行えば、固定コードＦ（ａ）が書き込まれたＩＣカード１００ａを所持する者は、企業Ａの社員に限られ、固定コードＦ（ｂ）が書き込まれたＩＣカード１００ｂを所持する者は、企業ｂの社員に限られることになるので、少なくとも、社外に対して十分なセキュリティを確保した暗号通信システムの構築が可能になる。
【００４２】
本発明の目的は、所定のグループに所属するメンバー間で暗号通信を行う場合に、メンバーに変動が生じても柔軟な対応が可能であり、かつ、十分なセキュリティを確保することが可能な暗号通信システムを提供することにある。そこで、ここでは、企業Ａ内に、特別なプロジェクトチームが編成され、当該プロジェクトチームの構成メンバーである社員間で暗号通信を行うための暗号通信システムを構築し、当該システムを利用して、実際に暗号通信を行う方法を説明しよう。
【００４３】
図７は、本発明に係る暗号通信システムの構成例を示すブロック図である。ここでは、企業Ａの東京本社に在籍する社員甲および大阪支社に在籍する社員乙が、特別なプロジェクトチームの所属メンバーであり、社員甲から社員乙に対して、所定のデータを送信する際に、本発明に係る暗号通信を利用する場合を考える。図６に示す発行プロセスにおいて述べたとおり、企業Ａの社員には、それぞれＩＣカード１００ａが配付されている。したがって、社員甲および乙も、このＩＣカード１００ａを所持しており、その中には、同一の固定コードＦ（ａ）が格納されている。
【００４４】
このように、本発明に係る暗号通信方法では、§２で述べた機能を有し、かつ、互いに同一の固定コードが格納されている２つのＩＣカードを用意し、一方のＩＣカードを送信者側（社員甲側）に、他方のＩＣカードを受信者側（社員乙側）に、それぞれ配置する必要がある。
【００４５】
続いて、送信者である社員甲側において、ＩＣカードに所定の可変コードＶを書き込んで暗号用鍵情報Ｋを発生させる作業を行う。図７の左半分には、社員甲が、自己のＩＣカード１００ａに対して可変コードＶ（１）を入力して、暗号用鍵情報Ｋ（ａ１）を発生させた例が示されている。前述したとおり、可変コードＶ（１）を第２の格納場所Ｌ２に書き込む処理は、所定の書込コマンドにより基本プログラムＰ１の書込処理機能を実行させることにより行うことができる。また、暗号用鍵情報Ｋ（ａ１）を発生させる処理は、所定の鍵情報発生コマンドにより鍵情報発生プログラムを実行させることにより行うことができる。暗号用鍵情報Ｋ（ａ１）は、図４に示すとおり、固定コードＦ（ａ）と可変コードＶ（１）とに所定のアルゴリズムに基づく演算処理を施すことにより生成される。可変コードＶ（１）は、任意のコードでかまわないが、当該プロジェクトチームの構成メンバー以外には知られることのないよう、秘密に管理するようにする。
【００４６】
こうして、ＩＣカード１００ａ内に暗号用鍵情報Ｋ（ａ１）が生成できたら、この暗号用鍵情報Ｋ（ａ１）を利用した暗号化処理を実行することにより、送信対象となる平文データＤ１を暗号化し、暗号文データＤ２を作成する。この暗号化処理は、前述したとおり、所定の暗号化処理コマンドにより暗号化／復号化プログラムＰ３を実行させることにより行うことができる。
【００４７】
続いて、社員甲は、作成された暗号文データＤ２を、送信手段Ｔを介して、大阪支社へと送信する作業を行う。図示のとおり、暗号文データＤ２は、東京本社の送信手段Ｔから、大阪支社の受信手段Ｒへと送信される。送信手段Ｔや受信手段Ｒは、一般的な送受信機能をもった装置であれば、どのような装置で構成してもかまわない。企業Ａの本支店間を接続する専用線を用いてもよいし、インターネットなどの公衆伝達網を利用した送信（たとえば、ＦＴＰなどのプロトコルを利用したデータ転送や、電子メールの添付書類としての転送など）を用いてもよい。暗号文データＤ２は、暗号化されているため、送信時のセキュリティは十分に確保することができる。
【００４８】
また、社員甲は、可変コードＶ（１）を何らかの手段で社員乙に伝達する。具体的には、電子メール、電話、ＦＡＸなどを利用して伝えればよい。もちろん、可変コードＶ（１）そのものを必ずしも伝達する必要はなく、乙が理解可能な態様であれば、可変コードＶ（１）を類推可能なヒントのみを伝達するようにしてもかまわない。たとえば、プロジェクトチームのリーダー名を可変コードＶ（１）として用いた場合であれば、「リーダーの名前」という情報を乙に伝えれば用が足りる。あるいは、前回と同じ可変コードＶ（１）をそのまま用いている場合には、「前回と同じ」という情報を乙に伝えればよい。
【００４９】
一方、社員乙は、こうして伝達された可変コードＶ（１）を、自己のＩＣカード１００ａに入力して、暗号用鍵情報Ｋ（ａ１）を発生させる。こうして発生された暗号用鍵情報Ｋ（ａ１）は、当然、社員甲側のＩＣカード１００ａ内で発生された暗号用鍵情報Ｋ（ａ１）と同一になる。なお、可変コードＶ（１）が前回と同じ場合には、既に、ＩＣカード１００ａ内に暗号用鍵情報Ｋ（ａ１）が格納された状態となっているので、この手順は省略することができる。
【００５０】
こうして、ＩＣカード１００ａ内に暗号用鍵情報Ｋ（ａ１）が用意できたら、この暗号用鍵情報Ｋ（ａ１）を利用した復号化処理を実行することにより、受信手段Ｒが受け取った暗号文データＤ２を復号化し、平文データＤ３を作成する。この復号化処理は、前述したとおり、所定の復号化処理コマンドにより暗号化／復号化プログラムＰ３を実行させることにより行うことができる。得られた平文データＤ３は、オリジナルの平文データＤ１と同一のものになる。
【００５１】
以上、社員甲から社員乙に対して暗号送信を行う例を示したが、プロジェクトチームの構成メンバーが、たとえば、社員甲、乙、丙、丁の４名の場合、社員丙，社員丁に対しても、同様の方法で暗号送信を行うことが可能である。ここで、もし、社員丙が当該プロジェクトチームから脱けることになったとしよう。この場合、もはや社員丙には、当該プロジェクトチームに関する暗号解読の権限を与えることは適切ではない。そのような場合でも、本発明に係る暗号通信システムは適切に対処することが可能である。すなわち、社員丙が脱けた時点で、可変コードＶ（１）を別な可変コードＶ（２）に変更すればよい。あるいは、暗号通信を行う度に、毎回、可変コードを変更するような運用を行うようにし、脱けた社員丙には、新たな可変コードを知らせないようにしてもよい。
【００５２】
結局、本発明によれば、階層構造をもったグループ定義がなされている場合に、上位階層のグループ間では十分なセキュリティを確保することができ、下位階層のグループに関してはメンバーに変動が生じても柔軟な対応が可能になる。上述の例の場合、個々の企業が上位階層のグループに相当する。すなわち、企業Ａと企業Ｂとは、それぞれ上位階層のグループとして、それぞれ別々のグループということになる。一方、企業Ａ内に発足したプロジェクトチームは、下位階層のグループということができる。
【００５３】
本発明では、上位階層のグループ間、すなわち、上述の例における異なる企業間におけるセキュリティは十分に確保することができる。たとえば、固定コードＦ（ａ）が格納されたＩＣカード１００ａは、企業Ａの社員のみが入手可能であり、企業Ｂの社員や他の一般人は入手することができない。したがって、図７の例における可変コードＶ（１）を伝達するプロセスにおいて、万一、可変コードＶ（１）が漏えいすることがあったとしても、少なくとも企業Ａの社員以外の者が、暗号文データＤ２を解読することはできない。これは、裏を返せば、可変コードＶ（１）が漏えいすると、企業Ａの社員であれば、当該プロジェクトチームに所属していない社員であっても、暗号文データＤ２を解読する可能性があることを示している。ただ、一般的には、社外の人間に暗号解読されるリスクに比べて、社内の人間に暗号解読されるリスクは小さい。
【００５４】
このように、本発明の狙いは、階層構造をもったグループ定義がなされている場合に、上位階層のグループ間では、十分なセキュリティを確保できるようにするが、下位階層のグループ間では、若干、セキュリティが低下しても、メンバー変動に柔軟に対応できるようにする、という点にある。これまで述べてきたＩＣカードは、このような狙いにかなった暗号通信システムを構築するのに適している。
【００５５】
＜＜＜  §４．本発明の変形例  ＞＞＞
以上、本発明を図示する基本的な実施形態について説明したが、ここでは、本発明のいくつかの変形例を述べておく。
【００５６】
(1)   暗号用鍵情報としてキーテーブルを用いる場合
§１で述べたとおり、図５に示す第３の格納場所Ｌ３に格納する暗号用鍵情報Ｋとして、暗号用キーそのものを用いる代わりに、図３に示すようなキーテーブルを用いることも可能である。この場合、可変コードＶとともに、「７バイト目から８バイト分を暗号用キーとして用いよ」なる指示を、送信者側から受信者側へ伝達するようにすればよい。
【００５７】
(2)   外部で暗号化処理もしくは復号化処理を行う場合
図５に示すＩＣカード１００は、ＩＣカードの内部で暗号化処理もしくは復号化処理を行う場合に用いる実施形態であるが、図２に示す形態のように、ＩＣカード１００の外部で暗号化処理もしくは復号化処理を行うケースもあり得る。このようなケースに本発明を適用する場合は、図５に示す暗号化／復号化プログラムＰ３の代わりに、「第３の格納場所Ｌ３に格納されている暗号用鍵情報を（暗号用鍵情報として、図３に示すようなキーテーブルを用いる場合には、その一部を）、外部へ読み出す鍵読出プログラムＰ４」を用意しておくようにすればよい。
【００５８】
(3)   グループ構成
これまで述べた実施形態では、１企業を１グループ（前述した上位階層のグループ）として取り扱い、同一企業内の社員に発行するＩＣカードには、すべて同一の固定コードＦを格納する例を示したが、同一企業内の部や課を１グループとして取り扱うことも可能である。この場合、同一企業であっても、所属する部や課に応じて、それぞれ異なる固定コードが割り振られることになる。逆に、複数企業をまとめて１グループとして取り扱うことも可能である。この場合、異なる企業であっても、同一の固定コードが割り振られることになる。
【図面の簡単な説明】
【００５９】
【図１】現在広く利用されている一般的なＩＣカードの構成と、このＩＣカードを利用した暗号化処理のプロセスを説明するブロック図である。
【図２】暗号化／復号化の処理を、ＩＣカード１００の内部ではなく、外部の演算処理装置２００内で行う場合の実施形態を示すブロック図である。
【図３】暗号化／復号化処理に利用されるキーテーブルの概念を示す図である。
【図４】本発明に係るＩＣカード内に用意される鍵情報発生プログラムの処理プロセスを示すブロック図である。
【図５】本発明に係るＩＣカードの基本構成を示すブロック図である。
【図６】本発明に係るＩＣカードの発行形態を示すブロック図である。
【図７】本発明に係る暗号通信システムの構成例を示すブロック図である。
【符号の説明】
【００６０】
１００，１００ａ，１００ｂ…ＩＣカード
１１０…メモリ
１１１…ＲＯＭ
１１２…ＥＥＰＲＯＭ
１１３…ＲＡＭ
１２０…ＣＰＵ
１３０…Ｉ／Ｏ部
２００…外部の演算処理装置
Ａ…顧客企業／アルゴリズム
Ｂ…顧客企業
Ｄ１…平文データ（送信対象データ）
Ｄ２…暗号文データ
Ｄ３…平文データ（復号されたデータ）
Ｆ，Ｆ（ａ），Ｆ（ｂ）…固定コード
Ｋ…暗号用鍵情報
Ｌ１，Ｌ２，Ｌ３…メモリ内の格納場所
Ｐ１…基本プログラム
Ｐ２…鍵情報発生プログラム
Ｐ３…暗号化／復号化プログラム
Ｒ…受信手段
Ｔ…送信手段
Ｖ，Ｖ（１）…可変コード
Ｘ…ＩＣカード提供業者
【図１】
2005322963.tif 000003
【図２】
2005322963.tif 000004
【図３】
2005322963.tif 000005
【図４】
2005322963.tif 000006
【図５】
2005322963.tif 000007
【図６】
2005322963.tif 000008
【図７】
2005322963.tif 000009