(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、メモリと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を有し、前記メモリには、少なくとも２つのデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、前記２つのデータに応じて一義的に定まる暗号用鍵情報を発生させる鍵情報発生プログラムと、前記暗号用鍵情報を用いた暗号化／復号化を内部もしくは外部で行うための処理を行う暗号化／復号化プログラムと、が格納されている複数のＩＣカードを、それぞれ特定のグループに所属する特定の個人に発行し、発行したＩＣカードを用いて、暗号化／復号化の処理を行う方法であって、
発行処理段階と暗号化／復号化処理段階とを有し、
前記発行処理段階は、
前記ＣＰＵが、前記Ｉ／Ｏ部を介して外部から与えられた書込コマンドに基づいて、当該ＩＣカードの発行対象となる個人が所属するグループについて定義された秘密グループコードを前記メモリ内に書き込む段階と、
前記ＣＰＵが、前記Ｉ／Ｏ部を介して外部から与えられた書込コマンドに基づいて、当該ＩＣカードの発行対象となる個人が指定した第１の秘密個人コードおよび第２の秘密個人コードを前記メモリ内に書き込む段階と、
前記ＣＰＵが、前記鍵情報発生プログラムを実行することにより、前記第１の秘密個人コードと前記秘密グループコードとに基づいて第１のキーテーブルを発生させ、前記第２の秘密個人コードと前記秘密グループコードとに基づいて第２のキーテーブルを発生させ、これら２つのキーテーブルを暗号用鍵情報として前記メモリ内に書き込む段階と、
を有し、
前記暗号化／復号化処理段階は、
前記ＣＰＵが、前記暗号化／復号化プログラムを実行することにより、前記Ｉ／Ｏ部を介して外部から与えられた指示に基づいて、前記第１のキーテーブルの一部分と前記第２のキーテーブルの一部分とを合成することにより、暗号化もしくは復号化に用いる暗号用キーを生成する段階と、
前記ＣＰＵが、前記暗号化／復号化プログラムを実行することにより、前記暗号用キーを用いて暗号化もしくは復号化を行うか、もしくは、生成した暗号用キーを外部に出力する段階と、
を有することを特徴とするＩＣカードを発行して暗号化／復号化を行う方法。
【請求項２】
請求項１に記載の方法において、
鍵情報発生プログラムに、ＩＣカード上で所定回数だけ実行すると、以後の実行を禁止する指示をＩＣカード内に記録するルーチンと、前記指示が記録されていた場合に、実行を禁止するルーチンと、が含まれていることを特徴とするＩＣカードを発行して暗号化／復号化を行う方法。
【請求項３】
固有の暗号用鍵情報を用いた暗号化処理もしくは復号化処理を実行するために利用されるＩＣカードであって、
ＣＰＵと、メモリと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を有し、
前記メモリには、
前記メモリ内の第１の格納場所、第２の格納場所、第３の格納場所に、それぞれ外部から与えられた暗号用鍵情報生成用のデータを格納する処理を行うプログラムと、
前記第１の格納場所に格納されている第１のデータおよび前記第２の格納場所に格納されている第２のデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、これら２つのデータに応じて一義的に定まる第１のキーテーブルを発生させ、これを暗号用鍵情報として前記メモリ内に格納するプログラムと、
前記第１の格納場所に格納されている第１のデータおよび前記第３の格納場所に格納されている第３のデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、これら２つのデータに応じて一義的に定まる第２のキーテーブルを発生させ、これを暗号用鍵情報として前記メモリ内に格納するプログラムと、
前記第１のキーテーブルの一部分と前記第２のキーテーブルの一部分とを合成することにより、暗号化もしくは復号化に用いる暗号用キーを生成するプログラムと、
生成した暗号用キーを利用して、ＩＣカード内部で暗号化処理もしくは復号化処理を実行するプログラムと、
が格納されていることを特徴とする暗号化もしくは復号化処理用のＩＣカード。
【請求項４】
固有の暗号用鍵情報を用いた暗号化処理もしくは復号化処理を実行するために利用されるＩＣカードであって、
ＣＰＵと、メモリと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を有し、
前記メモリには、
前記メモリ内の第１の格納場所、第２の格納場所、第３の格納場所に、それぞれ外部から与えられた暗号用鍵情報生成用のデータを格納する処理を行うプログラムと、
前記第１の格納場所に格納されている第１のデータおよび前記第２の格納場所に格納されている第２のデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、これら２つのデータに応じて一義的に定まる第１のキーテーブルを発生させ、これを暗号用鍵情報として前記メモリ内に格納するプログラムと、
前記第１の格納場所に格納されている第１のデータおよび前記第３の格納場所に格納されている第３のデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、これら２つのデータに応じて一義的に定まる第２のキーテーブルを発生させ、これを暗号用鍵情報として前記メモリ内に格納するプログラムと、
前記第１のキーテーブルの一部分と前記第２のキーテーブルの一部分とを合成することにより、暗号化もしくは復号化に用いる暗号用キーを生成するプログラムと、
ＩＣカード外部で暗号化処理もしくは復号化処理を実行するために、前記暗号用キーを外部へ読み出すプログラムと、
が格納されていることを特徴とする暗号化もしくは復号化処理用のＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号用鍵情報を格納したＩＣカードを発行して暗号化／復号化を行う方法に関し、特に、固有の暗号用鍵情報をそれぞれ格納した複数のＩＣカードを、それぞれ特定のグループに所属する特定の個人に発行して暗号化／復号化を行う方法に関する。
【背景技術】
【０００２】
ＩＣカードは、極めて機密性の高い携帯型情報記録媒体として様々な用途に利用されており、最近は、社員証を兼ねた多機能のＩＣカードを各社員に配付する企業も増えている。このような機密性に着目して、ＩＣカードを、情報の暗号化および復号化のために用いる鍵情報を格納しておく記録媒体として利用する例も少なくない。一般的な暗号化の手法では、暗号化アルゴリズムにおける種（Seed）として秘密の暗号用キーや暗号用キーテーブル（ここでは、これらを総称して暗号用鍵情報と呼ぶ）が用いられることが多い。所定の平文データを暗号文データに変換する暗号化プロセスでは、この秘密の暗号用鍵情報を用いた処理が実行される。この場合、暗号文データを平文データに戻す復号化プロセスでは、暗号化プロセスで用いた秘密の暗号用鍵情報が不可欠の要素となる。すなわち、秘密の暗号用鍵情報がない限り、復号化を行うことができない。そこで、この秘密の暗号用鍵情報をＩＣカードに格納しておくようにすれば、不正な手段で暗号用キーにアクセスすることが非常に困難になり、暗号文自身のセキュリティの向上を図ることができる。
【０００３】
一般に、暗号文データの復号化は、暗号化を行った本人が許可した者のみに許されるべきものであるので、暗号用鍵情報は、各個人ごとにそれぞれ異なる固有のデータにする必要がある。そこで、社員証を兼ねた多機能のＩＣカードなどでは、各社員ごとにそれぞれ固有の暗号用鍵情報を定め、ＩＣカードを発行する際に、この固有の暗号用鍵情報を各ＩＣカード内に格納する処理が行われる。その結果、各社員に対して発行されたＩＣカードには、それぞれ異なる固有の暗号用鍵情報が格納された状態となる。この暗号用鍵情報は、上述したように、暗号化処理および復号化処理のプロセスで、処理装置が用いる秘密のキーコードであるので、通常、ＩＣカードを所持する社員本人も知る必要はないデータであり、ＩＣカード内に秘密のデータとして維持されることになる。
【０００４】
このような暗号用鍵情報を格納したＩＣカードを発行する際には、暗号用鍵情報が漏えいすることのないように、十分セキュリティに配慮した発行処理が必要になる。そこで、たとえば、下記の特許文献１には、ＩＣカードの発行時に、暗号用鍵情報自身を暗号化した状態でＩＣカード内へと送信し、ＩＣカード内部で復号化してこれを格納する技術が開示されている。また、下記の特許文献２には、暗号用鍵情報を格納したＩＣカードを紛失したような場合に、これを再発行する技術が開示されている。
【特許文献１】特開平９−４４６１８号公報
【特許文献２】特開２００３−７８５１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したように、ＩＣカード内に格納される暗号用鍵情報は、本来、ＩＣカードを所持する本人ですら知らない秘密のデータとして取り扱われるべきものであり、理想的には、当該ＩＣカードの内部のみに存在するデータであって、誰も知り得ないデータとなるようにするのが好ましい。たとえば、ＩＣカードの内部で乱数を用いてランダムに発生させたコードを、暗号用鍵情報としてＩＣカード内にそのまま格納するようにすれば、誰も知りえない情報が、暗号用鍵情報としてＩＣカード内にのみ格納されることになる。
【０００６】
しかしながら、実用上は、ＩＣカードを再発行する道を残しておく必要があるため、上述のような理想的な方法をとることはできない。既に述べたとおり、特定の暗号用鍵情報を用いて暗号化されたデータを復号化するプロセスを行うためには、暗号化に用いたものと同一の暗号用鍵情報が必要である。したがって、万一、ＩＣカードを紛失したり、ＩＣカードを破損したりした場合に、同一の暗号用鍵情報が格納されたＩＣカードを再発行することができないと、過去に暗号化したデータを二度と復号化することができなくなってしまう。したがって、実用上は、ＩＣカードの再発行が可能になるように、ＩＣカード内に格納した暗号用鍵情報と同一の情報を、外部のどこかに保管しておき、再発行する必要がある場合には、この外部に保管しておいた暗号用鍵情報を新たなＩＣカードに書き込むという方法がとられることが多い。
【０００７】
このように、ＩＣカードの外部に暗号用鍵情報を保管しておく、という方法は、信頼のおける管理者の厳重な管理下で保管が行われるという前提では、何ら問題はない。しかしながら、実用上は、十分なセキュリティを確保できないという問題が生じる。通常、企業が社員証として機能するＩＣカードを各社員に配付するような場合、ＩＣカードの調達および発行業務をＩＣカード提供業者（たとえば、大手印刷会社）に依頼するのが一般的である。この場合、個々の社員ごとの暗号用鍵情報の管理を、当該ＩＣカード提供業者に委ねる必要がある。再発行のための暗号用鍵情報の保管業務を自社で行うにしても、少なくとも個々のＩＣカードを発行する処理をＩＣカード提供業者に委ねる以上、発行時には、個々の社員ごとの暗号用鍵情報のデータを当該ＩＣカード提供業者に引き渡す必要がある。
【０００８】
もちろん、ＩＣカード提供業者は、万全のセキュリティが確保できるように、十分な配慮のもとに、顧客企業から提供された個々の社員ごとの暗号用鍵情報のデータを取り扱うことになる。しかしながら、ＩＣカード発行業務に携わるスタッフの中に、不正を働く者が絶対に存在しないことを保証することはできない。また、ＩＣカード提供業者は、複数の顧客からの受注を受けるのが一般的であり、故意ではないにしろ、何らかの過失により、顧客企業Ａの社員についての暗号用鍵情報を、別な顧客企業Ｂの担当者に渡してしまうようなトラブルが発生する可能性もある。
【０００９】
そこで本発明は、固有の暗号用鍵情報をそれぞれ格納した複数のＩＣカードを、それぞれ特定のグループに所属する特定の個人に発行する場合に、再発行が可能な態様で、かつ、十分なセキュリティを確保可能な態様で発行できるようにし、発行したＩＣカードを用いて暗号化／復号化を行う方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
(1)   本発明の第１の態様は、ＣＰＵと、メモリと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を有し、メモリには、少なくとも２つのデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、２つのデータに応じて一義的に定まる暗号用鍵情報を発生させる鍵情報発生プログラムと、暗号用鍵情報を用いた暗号化／復号化を内部もしくは外部で行うための処理を行う暗号化／復号化プログラムと、が格納されている複数のＩＣカードを、それぞれ特定のグループに所属する特定の個人に発行し、発行したＩＣカードを用いて、暗号化／復号化の処理を行う方法において、
発行処理段階と暗号化／復号化処理段階とを行うようにし、
発行処理段階では、
ＣＰＵが、Ｉ／Ｏ部を介して外部から与えられた書込コマンドに基づいて、当該ＩＣカードの発行対象となる個人が所属するグループについて定義された秘密グループコードをメモリ内に書き込む段階と、
ＣＰＵが、Ｉ／Ｏ部を介して外部から与えられた書込コマンドに基づいて、当該ＩＣカードの発行対象となる個人が指定した第１の秘密個人コードおよび第２の秘密個人コードをメモリ内に書き込む段階と、
ＣＰＵが、鍵情報発生プログラムを実行することにより、第１の秘密個人コードと秘密グループコードとに基づいて第１のキーテーブルを発生させ、第２の秘密個人コードと秘密グループコードとに基づいて第２のキーテーブルを発生させ、これら２つのキーテーブルを暗号用鍵情報としてメモリ内に書き込む段階と、
を行い、
暗号化／復号化処理段階では、
ＣＰＵが、暗号化／復号化プログラムを実行することにより、Ｉ／Ｏ部を介して外部から与えられた指示に基づいて、第１のキーテーブルの一部分と第２のキーテーブルの一部分とを合成することにより、暗号化もしくは復号化に用いる暗号用キーを生成する段階と、
ＣＰＵが、暗号化／復号化プログラムを実行することにより、暗号用キーを用いて暗号化もしくは復号化を行うか、もしくは、生成した暗号用キーを外部に出力する段階と、
を行うようにしたものである。
【００１１】
(2)   本発明の第２の態様は、上述した第１の態様に係るＩＣカードを発行して暗号化／復号化を行う方法において、
鍵情報発生プログラムに、ＩＣカード上で所定回数だけ実行すると、以後の実行を禁止する指示をＩＣカード内に記録するルーチンと、指示が記録されていた場合に、実行を禁止するルーチンと、が含まれているようにしたものである。
【００１２】
(3)   本発明の第３の態様は、固有の暗号用鍵情報を用いた暗号化処理もしくは復号化処理を実行するために利用されるＩＣカードにおいて、
ＣＰＵと、メモリと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を設け、
メモリには、
メモリ内の第１の格納場所、第２の格納場所、第３の格納場所に、それぞれ外部から与えられた暗号用鍵情報生成用のデータを格納する処理を行うプログラムと、
第１の格納場所に格納されている第１のデータおよび第２の格納場所に格納されている第２のデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、これら２つのデータに応じて一義的に定まる第１のキーテーブルを発生させ、これを暗号用鍵情報としてメモリ内に格納するプログラムと、
第１の格納場所に格納されている第１のデータおよび第３の格納場所に格納されている第３のデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、これら２つのデータに応じて一義的に定まる第２のキーテーブルを発生させ、これを暗号用鍵情報としてメモリ内に格納するプログラムと、
第１のキーテーブルの一部分と第２のキーテーブルの一部分とを合成することにより、暗号化もしくは復号化に用いる暗号用キーを生成するプログラムと、
生成した暗号用キーを利用して、ＩＣカード内部で暗号化処理もしくは復号化処理を実行するプログラムと、
が格納されているようにしたものである。
【００１３】
(4)   本発明の第４の態様は、固有の暗号用鍵情報を用いた暗号化処理もしくは復号化処理を実行するために利用されるＩＣカードにおいて、
ＣＰＵと、メモリと、外部に対して情報のやりとりを行うＩ／Ｏ部と、を設け、
メモリには、
メモリ内の第１の格納場所、第２の格納場所、第３の格納場所に、それぞれ外部から与えられた暗号用鍵情報生成用のデータを格納する処理を行うプログラムと、
第１の格納場所に格納されている第１のデータおよび第２の格納場所に格納されている第２のデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、これら２つのデータに応じて一義的に定まる第１のキーテーブルを発生させ、これを暗号用鍵情報としてメモリ内に格納するプログラムと、
第１の格納場所に格納されている第１のデータおよび第３の格納場所に格納されている第３のデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、これら２つのデータに応じて一義的に定まる第２のキーテーブルを発生させ、これを暗号用鍵情報としてメモリ内に格納するプログラムと、
第１のキーテーブルの一部分と第２のキーテーブルの一部分とを合成することにより、暗号化もしくは復号化に用いる暗号用キーを生成するプログラムと、
ＩＣカード外部で暗号化処理もしくは復号化処理を実行するために、暗号用キーを外部へ読み出すプログラムと、
が格納されているようにしたものである。
【発明の効果】
【００２０】
本発明に係るＩＣカードを発行して暗号化／復号化を行う方法によれば、暗号用鍵情報は、ＩＣカードの内部において、秘密グループコードと秘密個人コードとを用いて作成され、そのままＩＣカード内に格納される。ここで、秘密グループコードは、発行対象となる個人が所属するグループについて定義されたコードであり、たとえば、ＩＣカード提供業者の管理者などによって保管することができる。一方、秘密個人コードは発行対象となる個人が指定したコードであり、当該個人が自分自身で保管することができる。秘密グループコードも、秘密個人コードも、それ自身は暗号用鍵情報ではないので、結局、ＩＣカード内の暗号用鍵情報は、誰にも知られない状態で格納された状態を維持することになる。万一、ＩＣカードを紛失したり、破損したりした場合には、管理者が保管していた秘密グループコードと個人が保管していた秘密個人コードとを新たなＩＣカードに入力することにより、再びＩＣカード内部で同一の暗号用鍵情報を作成することが可能になるので、ＩＣカードの再発行が可能になる。このため、本発明によれば、固有の暗号用鍵情報をそれぞれ格納した複数のＩＣカードを、それぞれ特定のグループに所属する特定の個人に発行する場合に、再発行が可能な態様で、かつ、十分なセキュリティを確保可能な態様で、発行処理を行うことができるようになる。しかも、秘密個人コードとして２通りのコードが書き込まれ、２つのキーテーブルが暗号用鍵情報としてＩＣカード内に格納される。そして、暗号化／復号化を行う際には、第１のキーテーブルの一部分と第２のキーテーブルの一部分とを合成することにより暗号用キーが作成されるので、セキュリティを更に向上させることができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明を図示する実施形態に基づいて説明する。
【００２２】
＜＜＜  §１．暗号用鍵情報を格納した一般的なＩＣカード  ＞＞＞
はじめに、暗号用鍵情報を格納した一般的なＩＣカードの構成と、その利用形態を簡単に説明しておく。図１は、現在広く利用されている一般的なＩＣカード１００の構成と、このＩＣカード１００を利用した暗号化処理のプロセスを説明するブロック図である。図示のとおり、このＩＣカード１００は、メモリ１１０と、ＣＰＵ１２０と、Ｉ／Ｏ部１３０とを有している。ここに示す例では、メモリ１１０は、書換不能な不揮発性メモリであるＲＯＭ１１１と、書換可能な不揮発性メモリであるＥＥＰＲＯＭ１１２と、書換可能な揮発性メモリであるＲＡＭ１１３から構成されている。ＲＯＭ１１１には、このＩＣカード１００が備えている基本的な処理機能を実行するためのプログラムが格納されており、ＥＥＰＲＯＭ１１２には、このＩＣカード１００に記録しておくべき種々のデータが格納されている。また、ＲＡＭ１１３は、ＣＰＵ１２０が種々の処理を実行する際の作業領域として利用される
【００２３】
メモリ１１０は、ＣＰＵ１２０によってのみアクセス可能であり、外部から直接メモリ１１０へアクセスすることはできない。外部からのアクセスは、Ｉ／Ｏ部１３０を介して行われる。すなわち、ＣＰＵ１２０は、Ｉ／Ｏ部１３０を介して外部から与えられるコマンドを、ＲＯＭ１１１内のプログラムに基づいて実行し、実行結果をレスポンスとして、Ｉ／Ｏ部１３０を介して外部へと返す。図示の例は、平文データを暗号文データに変換する暗号化処理と、逆に、暗号文データを平文データに変換する復号化処理とを実行する機能を有するＩＣカードの例であり、ＲＯＭ１１１内には、この暗号化および復号化を行うためのプログラムが格納されており、ＥＥＰＲＯＭ１１２内には、このプログラムが利用する暗号用キーが格納されている。
【００２４】
このＩＣカード１００に対して、Ｉ／Ｏ部１３０を介して、所定の暗号化コマンドと平文データを与えると、ＣＰＵ１２０は、ＲＯＭ１１１内のプログラムに基づいて、与えられた暗号化コマンドを実行し、与えられた平文データに対して所定の暗号化処理を施し、得られた暗号文データを、Ｉ／Ｏ部１３０を介して、レスポンスとともに外部へ出力する処理を行う。この暗号化処理を行う際に、ＥＥＰＲＯＭ１１２内に格納されている暗号用キーが利用される。逆に、このＩＣカード１００に対して、Ｉ／Ｏ部１３０を介して、所定の復号化コマンドと暗号文データを与えると、ＣＰＵ１２０は、ＲＯＭ１１１内のプログラムに基づいて、与えられた復号化コマンドを実行し、与えられた暗号文データに対して所定の復号化処理を施し、元の平文データを復元し、この平文データを、Ｉ／Ｏ部１３０を介して、レスポンスとともに外部へ出力する処理を行う。この復号化処理を行う際にも、ＥＥＰＲＯＭ１１２内に格納されている暗号用キーが利用される。このとき、暗号化処理に用いた暗号用キーと同一のキーを用いないと、平文データの復元を正しく行うことはできない。
【００２５】
なお、ここでは、暗号化／復号化の処理プログラムがＲＯＭ１１１内に用意されている例を示したが、このプログラムはＥＥＰＲＯＭ１１２に用意しておくことも可能である。暗号化／復号化の処理プログラムをＥＥＰＲＯＭ１１２内に用意しておくようにすると、必要に応じて、この処理プログラムを書き換えることも可能である。また、ここでは説明の便宜上、暗号化および復号化の処理機能のみをもったＩＣカード１００を示すが、実用上は、ＩＣカード１００は様々な用途に利用されるので、ＲＯＭ１１１あるいはＥＥＰＲＯＭ１１２内には、これら様々な用途における様々な処理を実行するためのプログラムが格納されていることになる。
【００２６】
図２は、暗号化／復号化の処理を、ＩＣカード１００の内部ではなく、外部の演算処理装置２００内で行う場合の実施形態を示すブロック図である。この例では、外部の演算処理装置２００に平文データを与えると、暗号文データとして出力されることになり、逆に、暗号文データを与えると、平文データとして出力されることになる。このように、暗号化／復号化の処理を外部の演算処理装置２００で行う場合、ＥＥＰＲＯＭ１１２内に格納されている暗号用キーが、Ｉ／Ｏ部１３０を介して、外部の演算処理装置２００側へと読み出される。暗号化および復号化のためのプログラムは、外部の演算処理装置２００側に用意されており、当該プログラムが、ＩＣカード１００から読み出した暗号用キーを用いて暗号化／復号化の処理を実行することになる。
【００２７】
図２に示す実施形態では、ＥＥＰＲＯＭ１１２内に格納されている暗号用キーが、ＩＣカード１００の外部へと読み出されてしまうため、セキュリティの観点からは、図１に示す実施形態の方が優れている。図１に示す実施形態では、ＥＥＰＲＯＭ１１２に格納された暗号用キーがＩＣカード１００の外部に読み出されることはないので、暗号用キーがＥＥＰＲＯＭ１１２に格納された後は、不正な手段で知られる可能性は極めて低い。
【００２８】
ここでは、このような暗号化／復号化の処理を行うための暗号用キーを格納したＩＣカードを、社員証として発行する場合を考えてみる。前述したように、通常、企業が社員証として機能するＩＣカードを各社員に配付するような場合、ＩＣカードの調達および発行業務をＩＣカード提供業者（たとえば、大手印刷会社）に依頼するのが一般的である。図３は、ＩＣカード提供業者Ｘが、顧客企業Ａおよび顧客企業Ｂに所属する各社員に対して、それぞれ社員証として機能するＩＣカードを発行する様子を示すブロック図である。ここでは、便宜上、顧客企業Ａに所属する３名の社員甲、乙、丙と、顧客企業Ｂに所属する３名の社員丁、戊、己に対して、それぞれ固有の暗号用キーを格納したＩＣカードを社員証として発行する例を示すが、実用上は、より多数の社員に対してＩＣカードの発行が行われ、また、顧客企業もより多数存在することになる。
【００２９】
各ＩＣカードに格納される暗号用キーは、互いに異なる固有のキーになる。図示の例では、社員甲、乙、丙、丁、戊、己に対して発行されるＩＣカード内には、それぞれ固有の暗号用キーＫ（甲）、Ｋ（乙）、Ｋ（丙）、Ｋ（丁）、Ｋ（戊）、Ｋ（己）が格納された状態が示されている。このような固有の暗号用キーを格納したＩＣカードを発行する場合、従来は、ＩＣカード提供業者Ｘ側にこれらの暗号用キーのデータを用意しておき、発行時に、個々のＩＣカードに個々の暗号用キーを書き込む処理を行うのが一般的である。そして、前述したとおり、再発行を行う場合の便宜を考え、暗号用キーのデータは、ＩＣカード提供業者Ｘ側で保管するか、あるいは、顧客企業Ａおよび顧客企業Ｂの管理担当者が保管することになる。いずれにしても、ＩＣカードの発行作業をＩＣカード提供業者Ｘに委ねる以上、暗号用キーのデータをＩＣカード提供業者Ｘ側に提供する必要があるので、ＩＣカード提供業者Ｘ側の不正行為や過失により、暗号用キーが漏えいする可能性は否定できない。また、顧客企業Ａや顧客企業Ｂ内に不正行為をなすものが存在する可能性も否定できない。暗号化／復号化処理に用いる暗号用キーは、本来、このような漏えいが生じることがないように、厳重なセキュリティの下に管理されるべきものである。
【００３０】
このような漏えいを防ぐ方法として、個々のＩＣカード内で乱数を用いてランダムな暗号用キーを発生させ、これをそのままＩＣカード内に格納する方法もある。しかしながら、この方法では、万一、ＩＣカードを紛失したり、破損したりした場合、暗号用キーが永遠に失われてしまい、ＩＣカードの再発行を行うことができなくなるので、過去に暗号化したデータを復号化することができなくなってしまう。本発明は、十分なセキュリティを確保することができ、しかも再発行が可能になるＩＣカードの発行方法を提供するものである。
【００３１】
＜＜＜  §２．本発明の基本的実施形態  ＞＞＞
図４は、本発明に係るＩＣカード内に用意される鍵情報発生プログラムの処理プロセスを示すブロック図である。本発明で用いる鍵情報発生プログラムは、少なくとも２つのデータを用いて、所定のアルゴリズムに基づく演算処理を行うことにより、当該２つのデータに応じて一義的に定まる暗号用鍵情報（暗号用キー）を発生させる機能を有している。図４には、秘密グループコードＧと秘密個人コードＰという２つのデータを用いて、所定のアルゴリズムＡに基づく演算処理を実行した結果、暗号用鍵情報Ｋが生成される例が示されている。秘密グループコードＧおよび秘密個人コードＰの意味合いや、両者の相違については後述する。
【００３２】
ここで、所定のアルゴリズムＡとしては、どのようなアルゴリズムを用いてもかまわないが、図には、一例として、４桁の数字からなる秘密グループコードＧと、同じく４桁の数字からなる秘密個人コードＰとの和を求め、この和の下４桁を暗号用鍵情報Ｋとする単純なアルゴリズムが示されている。たとえば、秘密グループコードＧが「６７８９」なる数字、秘密個人コードＰが「５１５１」なる数字であった場合、図示のとおり、「１９４０」なる数字からなる暗号用鍵情報Ｋが生成されることになる。このようなアルゴリズムを採用すれば、２つのデータＧおよびＰが与えられると、この２つのデータに応じて一義的に定まる暗号用鍵情報Ｋを発生させることができる。
【００３３】
なお、暗号用鍵情報Ｋを発生させるアルゴリズムは、必ずしも２つのデータに基づく演算処理に限定されるものではなく、秘密グループコードＧと秘密個人コードＰという２つのデータが少なくとも用いられ、これら２つのデータに応じて一義的に定まる暗号用鍵情報Ｋが得られるアルゴリズムであれば、第３のデータや第４のデータを用いる演算であってもかまわない。
【００３４】
このように、秘密グループコードＧと秘密個人コードＰという２つのデータを用いたアルゴリズムによって暗号用鍵情報Ｋを生成させるようにしておけば、十分なセキュリティを確保するという要請と、ＩＣカードの再発行を可能にするという要請との双方を満たすことが可能になる。すなわち、十分なセキュリティを確保するという点に関しては、暗号用鍵情報Ｋを得るためには、秘密グループコードＧと秘密個人コードＰとの２つのコードが必要になり、どちらか一方だけでは、暗号用鍵情報Ｋを生成することができないので、秘密グループコードＧと秘密個人コードＰとをそれぞれ別個の管理環境におけば、不正な方法で暗号用鍵情報Ｋが取得される可能性を極めて低減させることができる。一方、秘密グループコードＧと秘密個人コードＰとの２つのコードさえあれば、これら２つのコードに基づいて一義的に定まる情報として、暗号用鍵情報Ｋをいつでも生成することができるので、万一の場合には、ＩＣカードを再発行することも可能になる。
【００３５】
図５は、本発明に係るＩＣカードの発行方法の基本的な手順を示す流れ図である。まず、ステップＳ１において、図１に示すような構成、すなわち、メモリ１１０と、ＣＰＵ１２０と、外部に対して情報のやりとりを行うＩ／Ｏ部１３０と、を有するＩＣカードが用意される。しかも、このメモリ１１０内には、図４に示す暗号用鍵情報の生成プロセスを実行するためのプログラムが用意されている。すなわち、ステップＳ１では、少なくとも２つのデータを用いて所定のアルゴリズムに基づく演算処理を行うことにより、当該２つのデータに応じて一義的に定まる暗号用鍵情報を発生させる鍵情報発生プログラムが格納されたＩＣカードが用意されることになる。
【００３６】
続くステップＳ２では、秘密グループコードＧの書き込みが行われ、ステップＳ３では、秘密個人コードＰの書き込みが行われる。これらの書込処理は、実際には、ＩＣカード１００に対して、所定の書込コマンドとともに、書込対象データを与えることによって行われる。そして、最後のステップＳ４において、暗号用鍵情報Ｋの発生処理が行われる。すなわち、図４に示すプロセスがＩＣカード１００の内部で実行され、生成された暗号用鍵情報Ｋが、そのままＥＥＰＲＯＭ１１２へ書き込まれて格納される。この暗号用鍵情報Ｋの発生処理は、実際には、ＩＣカード１００に対して、鍵情報発生プログラムを実行させるための実行コマンドを与えることによって行われる。
【００３７】
なお、ステップＳ２，Ｓ３の書込処理は、ＥＥＰＲＯＭ１１２に対して行ってもよいし、ＲＡＭ１１３に対して行ってもよい。もっとも、ＲＡＭ１１３は不揮発性メモリなので、ステップＳ４の実行前に、ＩＣカード１００に対する電源供給が一時ストップするような工程をとる場合には、不揮発性メモリであるＥＥＰＲＯＭ１１２への書き込みを行うようにする必要がある。
【００３８】
続いて、図３に示す具体的事例に本発明に係る発行方法を適用した場合の実施形態を、図６のブロック図を参照しながら説明する。前述したとおり、この実施形態は、顧客企業Ａおよび顧客企業Ｂからの委託を受けたＩＣカード提供業者Ｘが、社員甲、乙、丙、丁、戊、己に対して、それぞれ固有の暗号用キーＫ（甲）、Ｋ（乙）、Ｋ（丙）、Ｋ（丁）、Ｋ（戊）、Ｋ（己）が格納されたＩＣカードを発行する事例である。
【００３９】
まず、ＩＣカード提供業者Ｘは、各企業ごとに、それぞれ秘密グループコードＧを定義する。図示の例では、顧客企業Ａに対しては、秘密グループコードＧ（Ａ）が定義され、顧客企業Ｂに対しては、秘密グループコードＧ（Ｂ）が定義された例が示されている。これらコードＧ（Ａ），Ｇ（Ｂ）は、互いに異なるコードであれば、どのようなコードであってもかまわない。また、図には示されていないが、第３の顧客企業Ｃ，第４の顧客企業Ｄなどがあれば、これらの企業に対しても、それぞれ異なる秘密グループコードＧ（Ｃ），Ｇ（Ｄ）を定義する。このように、本発明における秘密グループコードとは、１つのグループに対して共通して付与されるユニークなコードである。
【００４０】
なお、ここでは、１企業を１グループとして取り扱う例を示すが、同一企業内の部や課を１グループとして取り扱うことも可能である。この場合、同一企業であっても、所属する部や課に応じて、それぞれ異なる秘密グループコードが割り振られることになる。逆に、複数企業をまとめて１グループとして取り扱うことも可能である。
【００４１】
図５のステップＳ２では、ＩＣカードに対して、秘密グループコードの書き込みが行われることになるが、このプロセスは、図６に示す実施形態の場合、ＩＣカード提供業者Ｘ側において、顧客企業Ａに納品すべきＩＣカードには、秘密グループコードＧ（Ａ）を書き込む処理を行い、顧客企業Ｂに納品すべきＩＣカードには、秘密グループコードＧ（Ｂ）を書き込む処理を行う作業ということになる。結局、図６に示す実施形態の場合、ＩＣカード提供業者Ｘは、秘密グループコードＧ（Ａ）が書き込まれた３枚のＩＣカードを顧客企業Ａに納品し、秘密グループコードＧ（Ｂ）が書き込まれた３枚のＩＣカードを顧客企業Ｂに納品すればよい。
【００４２】
このように、図５の前半に示すステップＳ１およびＳ２の処理は、ＩＣカード提供業者Ｘ側で行われる処理であるが、図５の後半に示すステップＳ３およびＳ４の処理は、各顧客企業Ａ，Ｂ側で行われる処理である。たとえば、顧客企業Ａには、既に秘密グループコードＧ（Ａ）が書き込まれた３枚のＩＣカードが納品されるので、顧客企業Ａの担当者は、これらのＩＣカードを各社員甲、乙、丙に配付し、各自所定の初期化プロセスを実行して、ＩＣカードを初期化するように指示する。この初期化プロセスにおいて、図５のステップＳ３，Ｓ４が実行されることになる。すなわち、社員甲、乙、丙は、それぞれ固有の秘密個人コードＰ（甲）、Ｐ（乙）、Ｐ（丙）を各自のＩＣカード内に書き込む処理を行った後、ＩＣカードに対して、鍵情報発生プログラムを実行させるための実行コマンドを与え、秘密グループコードＧ（Ａ）と、各自が書き込んだ秘密個人コードＰ（甲）、Ｐ（乙）、Ｐ（丙）とを利用して、それぞれＩＣカード内部で暗号用鍵情報Ｋ（甲）、Ｋ（乙）、Ｋ（丙）を発生させ、そのままＩＣカード内のＥＥＰＲＯＭ１１２に格納させる処理を行う。
【００４３】
かくして、上述した初期化プロセスを実行した後の段階では、社員甲、乙、丙が所持する各ＩＣカード内には、それぞれ固有の暗号用鍵情報Ｋ（甲）、Ｋ（乙）、Ｋ（丙）が格納された状態になり、暗号化／復号化処理に利用できる状態になる。同様に、顧客企業Ｂには、既に秘密グループコードＧ（Ｂ）が書き込まれた３枚のＩＣカードが納品されるので、社員丁、戊、己が、それぞれ固有の秘密個人コードＰ（丁）、Ｐ（戊）、Ｐ（己）を書き込む処理を行った後、鍵情報発生プログラムを実行させるための実行コマンドを与えれば、それぞれ暗号用鍵情報Ｋ（丁）、Ｋ（戊）、Ｋ（己）が格納された状態のＩＣカードを得ることができる。
【００４４】
なお、上述した初期化プロセスを実行するには、ＩＣカード用のリーダライタ装置が装備され、専用の初期化用プログラムが組み込まれたコンピュータを用意しておくのが好ましい。具体的には、社員が自分のＩＣカードを、このコンピュータのリーダライタ装置に挿入し、初期化用プログラムを実行すると、コンピュータの画面上に、秘密個人コードＰの入力を促すメッセージが表示されるようにしておき、社員が、任意のコードを秘密個人コードＰとして入力すると、当該任意のコードをＩＣカード内に書き込む処理（図５のステップＳ３）を行うためのコマンドがＩＣカードに与えられ、続けて、鍵情報発生プログラムを実行する処理（図５のステップＳ４）を行うためのコマンドがＩＣカードに与えられるようにしておけばよい。
【００４５】
図６に示す実施形態からもわかるとおり、本発明で用いられる秘密グループコードＧは、発行対象となる個人（図示の例では各社員）が所属するグループ（図示の例では各企業）について定義されたコードであるのに対し、秘密個人コードＰは、発行対象となる個人が指定したコードということになる。このように、２通りのコードを用いれば、固有の暗号用鍵情報をそれぞれ格納した複数のＩＣカードを、それぞれ特定のグループに所属する特定の個人に発行する場合に非常に都合がよい。
【００４６】
たとえば、図６に示す例の場合、秘密グループコードＧ（Ａ），Ｇ（Ｂ）は、ＩＣカード提供業者Ｘの管理者（別言すれば、Ａ，Ｂいずれのグループにも所属しない管理者）が保管管理することになる。これらのコードは、各暗号用鍵情報を発生させるためには不可欠のコードであるが、その実体は、暗号用鍵情報そのものではなく、個々のグループについて付与された秘密コードというべきものであるので、当該管理者は、企業Ａ，Ｂに所属する個々の社員が携帯するＩＣカード内に格納されている暗号用鍵情報がどのようなデータであるかを知る由もない。別言すれば、ＩＣカード提供業者Ｘ側の管理者が知り得る内容は、顧客企業Ａ宛てに出荷されたＩＣカードには、Ｇ（Ａ）なる秘密グループコードが書き込まれており、顧客企業Ｂ宛てに出荷されたＩＣカードには、Ｇ（Ｂ）なる秘密グループコードが書き込まれている、という事実にすぎない。したがって、万一、ＩＣカード提供業者Ｘ側の原因により、これらの秘密グループコードＧ（Ａ），Ｇ（Ｂ）が漏えいしたとしても、セキュリティ保護上、重大な事態には至らない。
【００４７】
なお、秘密グループコードは、各顧客企業側の担当者が保管管理するようにしてもかまわない。たとえば、秘密グループコードＧ（Ａ）については、顧客企業Ａ側の担当者が保管管理を行い、秘密グループコードＧ（Ｂ）については、顧客企業Ｂ側の担当者が保管管理を行うようにし、ＩＣカード提供業者Ｘ側では、これらのコードの保管管理を一切行わないようにしてもよい。もちろん、顧客企業Ａ，Ｂ側の担当者と、ＩＣカード提供業者Ｘ側の管理者との双方で、保管管理することもできる。
【００４８】
一方、秘密個人コードＰについては、それぞれ当該個人のみが知りうる状態となるように管理するのが好ましい。たとえば、社員甲についての秘密個人コードＰ（甲）は、社員甲が自己のＩＣカードに対する初期化プロセスで入力したコードであり、甲のみが知っている秘密のコードとすることができる。ただし、万一のときに、ＩＣカードの再発行を受けるためには、この秘密個人コードＰが必須になるので、初期化プロセスで入力する秘密個人コードとしては、決して忘れることのないコードにするのが好ましく、できれば機密メモとして記録しておくのが好ましい。
【００４９】
本発明の利点は、上述したように、個々のＩＣカードに格納されている暗号用鍵情報については十分なセキュリティが確保されつつ、万一の場合には、ＩＣカードの再発行が可能になる点である。たとえば、社員甲が、自分のＩＣカードを紛失したり、破損したりしてしまった場合、当該ＩＣカードを用いないと、過去に暗号化したデータを復元することが一切できなくなってしまう。このような場合、社員甲は、単に、ＩＣカード提供業者Ｘから新たなＩＣカードを納品してもらい、前回と同じ秘密個人コードＰ（甲）を用いて初期化プロセスを行えば、再発行したＩＣカードを取得することができる。この場合、ＩＣカード提供業者Ｘは、顧客企業Ａに対する納品であるので、ＩＣカードに、秘密グループコードＧ（Ａ）を書き込んだ状態で納品することになる。したがって、社員甲が、前回と同じ秘密個人コードＰ（甲）を用いて初期化プロセスを行う限り、再発行したＩＣカード内には、前回と同じ暗号用鍵情報Ｋ（甲）が格納されることになるので、過去に暗号化したデータの復元が可能になる。
【００５０】
＜＜＜  §３．本発明の変形例  ＞＞＞
以上、本発明を図示する基本的な実施形態について説明したが、ここでは、本発明のいくつかの変形例を述べておく。
【００５１】
(1)   暗号用キーテーブルを用いる例
図１および図２では、ＩＣカード内に格納されている暗号用キーを用いて、暗号化処理および復号化処理を行う例を示したが、本発明における「暗号用鍵情報」とは、このように、暗号化もしくは復号化に用いる暗号用キー自身だけではなく、その一部分が、暗号化もしくは復号化に用いる暗号用キーとして利用されるキーテーブルも含んだ広い概念を意味するものである。
【００５２】
図７は、このようなキーテーブルの概念を示す図である。図示の例では、１つのマス目は１バイトのデータを示しており、合計２０バイトのデータ列によって、キーテーブルが構成されている。このようなキーテーブルをＩＣカード内に暗号用鍵情報として格納しておくようにすれば、必要に応じて、このキーテーブルの所望の一部分を暗号用キーとして抽出して利用することができ、複数通りのバリエーションをもった暗号用キーとして利用することができるようになる。たとえば、暗号化処理の際に、「７バイト目から８バイト分を暗号用キーとして用いよ」なる指示を外部から与えて暗号化処理を実行させたとすれば、図示の例のように、キーテーブルから指定された一部分のみが抽出されて暗号用キーとして利用されることになる。このような方法で暗号化されたデータを復号化する際には、暗号化処理の際と同じ「７バイト目から８バイト分を暗号用キーとして用いよ」なる指示を与えて、暗号用キーを特定する必要があるので、セキュリティを更に向上させることが可能になる。
【００５３】
本発明で用いる暗号用鍵情報Ｋは、図４に示す処理プロセスで発生させられるデータであり、秘密グループコードＧの桁数や秘密個人コードＰの桁数を適当に設定することにより、あるいはアルゴリズムＡとして特定のアルゴリズムを採用することにより、任意の桁数をもった暗号用鍵情報Ｋを発生させることが可能である。したがって、本発明により発生させた暗号用鍵情報Ｋは、上述したキーテーブルとして利用することも十分に可能である。
【００５４】
(2)   ２つのキーテーブルを用いる例
図８に示す変形例は、上述したキーテーブルを利用した変形例の更なる発展形態である。この変形例では、図５のステップＳ３において、秘密個人コードとして２通りのコードが書き込まれる。そして、ステップＳ４では、第１の秘密個人コードと秘密グループコードとに基づいて第１のキーテーブルを発生させ、第２の秘密個人コードと秘密グループコードとに基づいて第２のキーテーブルを発生させ、これら２つのキーテーブルを暗号用鍵情報としてＩＣカード内に格納する処理が行われる。このように、２つのキーテーブルを暗号用鍵情報として格納しておくと、第１のキーテーブルの一部分と第２のキーテーブルの一部分とを合成することにより、暗号化もしくは復号化に用いる暗号用キーを得ることができるので、セキュリティを更に向上させることができる。
【００５５】
たとえば、図８に示す具体例では、社員甲が、２つの秘密個人コードＰ（甲１），Ｐ（甲２）を入力した例が示されている。ＩＣカード内には、既に、顧客企業Ａについての秘密グループコードＧ（Ａ）が格納されているので、秘密個人コードＰ（甲１）と秘密グループコードＧ（Ａ）とについて所定のアルゴリズムに基づく演算を施すことにより、第１のキーテーブルを発生させることができ、秘密個人コードＰ（甲２）と秘密グループコードＧ（Ａ）とについて所定のアルゴリズムに基づく演算を施すことにより、第２のキーテーブルを発生させることができる。そこで、ステップＳ４では、これら２つのキーテーブルをそのままＩＣカード内に格納する処理を行う。
【００５６】
ここで、暗号化処理を行う際には、たとえば、「第１のキーテーブルの１４バイト目から４バイト分に、第２のキーテーブルの３バイト目から４バイト分を連結したものを、暗号用キーとして用いよ」なる指示を与えて暗号化処理を実行させればよい。このような利用形態では、２つのキーテーブルがＩＣカード内に存在することが必須要件となるので、セキュリティは更に向上することになる。
【００５７】
(3)   暗号用鍵情報発生処理の実行を所定回数に制限する例
前述したとおり、図５のステップＳ４の処理、すなわち、暗号用鍵情報の発生処理は、ＩＣカードに対して、所定のコマンドを与え、ＲＯＭ１１１（あるいはＥＥＰＲＯＭ１１２）に組み込まれている鍵情報発生プログラムを実行させることにより行われる。通常、ＩＣカードに対しては、同じコマンドを何度も与えることが可能であり、ＩＣカード側では、与えられたコマンドに対応するプログラムがメモリ内に用意されていれば、これを何度も実行することが可能である。
【００５８】
しかしながら、セキュリティを確保する観点からは、鍵情報発生プログラムの実行は、所定回数（たとえば１回）だけに制限した方が好ましい。なぜなら、正規の方法でＩＣカードを発行するのであれば、鍵情報発生プログラムの処理は、上述した初期化プロセスで１回（あるいは失敗した場合を考慮して数回）実行すれば足りる処理であり、繰り返し実行する必要のある処理ではない。その一方で、このＩＣカードが不正利用者の手に渡った場合、当該不正利用者が、秘密グループコードや秘密個人コードを不正な手段によって書き換え、鍵情報発生プログラムを繰り返し実行することにより、鍵情報発生のアルゴリズムなどを解析する可能性がある。このような点を考慮すれば、鍵情報発生プログラムの実行を、所定回数だけに制限することは理にかなっている。
【００５９】
そこで、実用上は、ＩＣカード内に用意する鍵情報発生プログラムに、ＩＣカード上で所定回数だけ実行すると、以後の実行を禁止する指示をＩＣカード内（たとえば、ＥＥＰＲＯＭ１１２内）に記録するルーチンと、当該指示が記録されていた場合に、実行を禁止するルーチンと、を含ませておくようにすればよい。
【図面の簡単な説明】
【００６０】
【図１】現在広く利用されている一般的なＩＣカードの構成と、このＩＣカードを利用した暗号化処理のプロセスを説明するブロック図である。
【図２】暗号化／復号化の処理を、ＩＣカード１００の内部ではなく、外部の演算処理装置２００内で行う場合の実施形態を示すブロック図である。
【図３】ＩＣカード提供業者Ｘが、顧客企業Ａおよび顧客企業Ｂに所属する各社員に対して、それぞれ社員証として機能するＩＣカードを発行する様子を示すブロック図である。
【図４】本発明に係るＩＣカード内に用意される鍵情報発生プログラムの処理プロセスを示すブロック図である。
【図５】本発明に係るＩＣカードの発行方法の基本的な手順を示す流れ図である。
【図６】図３に示す具体的事例に本発明に係る発行方法を適用した場合の実施形態を示すブロック図である。
【図７】暗号化／復号化処理に利用されるキーテーブルの概念を示す図である。
【図８】図７に示すキーテーブルを２組利用した発展形態を示す図である。
【符号の説明】
【００６１】
１００…ＩＣカード
１１０…メモリ
１１１…ＲＯＭ
１１２…ＥＥＰＲＯＭ
１１３…ＲＡＭ
１２０…ＣＰＵ
１３０…Ｉ／Ｏ部
２００…外部の演算処理装置
Ａ…顧客企業／アルゴリズム
Ｂ…顧客企業
Ｇ…秘密グループコード
Ｋ…暗号用鍵情報
Ｐ…秘密個人コード
Ｓ１〜Ｓ４…流れ図の各ステップ
Ｘ…ＩＣカード提供業者
【図１】
0004646050.tif 000002
【図２】
0004646050.tif 000003
【図３】
0004646050.tif 000004
【図４】
0004646050.tif 000005
【図５】
0004646050.tif 000006
【図６】
0004646050.tif 000007
【図７】
0004646050.tif 000008
【図８】
0004646050.tif 000009