(57)【要約】【課題】より安全性の高い携帯可能電子装置、及び携帯可能電子装置の制御方法を提供する。【解決手段】携帯可能電子装置（２）は、制御部（２５）と、前記制御部とバスを介して接続される暗号処理部（２９）とを具備する。前記制御部は、前記暗号処理部に対して暗号処理を行うデータを前記バスを介して入力し、前記暗号処理部に対して鍵指定情報を前記バスを介して入力する。前記暗号処理部は、予め鍵指定情報と暗号鍵とを対応付けて複数記憶し、前記制御部から入力される鍵指定情報に基づいて暗号鍵を予め記憶した複数の暗号鍵の中から取得し、前記取得した暗号鍵に基づいて前記制御部から入力されるデータに対して演算処理を行い、前記演算処理の処理結果を前記バスを介して前記制御部に出力する。【選択図】      図３
2011010218.tif 000002
【特許請求の範囲】
【請求項１】
制御部と、前記制御部とバスを介して接続される暗号処理部とを備える携帯可能電子装置であって、
前記制御部は、
前記暗号処理部に対して暗号処理を行うデータを前記バスを介して入力するデータ入力部と、
前記暗号処理部に対して鍵指定情報を前記バスを介して入力する鍵指定部と、
を具備し、
前記暗号処理部は、
予め鍵指定情報と暗号鍵とを対応付けて複数記憶する鍵記憶部と、
前記制御部から入力される鍵指定情報に基づいて暗号鍵を前記鍵記憶部から取得する鍵取得部と、
前記鍵取得部により取得した暗号鍵に基づいて前記制御部から入力されるデータに対して演算処理を行う第１の暗号演算部と、
前記第１の暗号演算部の処理結果を前記バスを介して前記制御部に出力する出力部と、
を具備することを特徴とする携帯可能電子装置。
【請求項２】
前記暗号処理部は、鍵指定情報を記憶する為の鍵指定情報記憶部をさらに具備し、
前記鍵指定部は、鍵指定情報を前記鍵指定情報記憶部に書き込み、
前記鍵取得部は、前記鍵指定情報記憶部に格納されている鍵指定情報と一致する鍵指定情報に対応付けられている暗号鍵を前記鍵記憶部から取得する、
ことを特徴とする請求項１に記載の携帯可能電子装置。
【請求項３】
前記制御部は、アプリケーションと鍵指定情報とを対応付けて記憶する記憶部をさらに具備し、
前記鍵指定部は、実行するアプリケーションに対応付けられている鍵指定情報を前記記憶部から取得することを特徴とする請求項１に記載の携帯可能電子装置。
【請求項４】
前記鍵取得部は、取得した暗号鍵を乱数によりスクランブルし、前記第１の暗号演算部に出力することを特徴とする請求項１に記載の携帯可能電子装置。
【請求項５】
前記制御部は、
前記暗号処理部に対して初期値指定情報を前記バスを介して入力する初期値指定部をさらに具備し、
前記暗号処理部は、
予め初期値指定情報と初期値のデータとを対応付けて複数記憶する初期値記憶部と、
前記制御部から入力される初期値指定情報に基づいて初期値のデータを前記初期値記憶部から取得する初期値取得部と、
前記初期値取得部により取得した初期値のデータと前記制御部から入力されるデータとの排他的論理和を行い、結果を前記１の暗号演算部に入力する第２の暗号演算部と、
をさらに具備することを特徴とする請求項１に記載の携帯可能電子装置。
【請求項６】
前記暗号処理部は、初期値指定情報を記憶する為の初期値指定情報記憶部をさらに具備し、
前記初期値指定部は、初期値指定情報を前記初期値指定情報記憶部に書き込み、
前記初期値取得部は、前記初期値指定情報記憶部に格納されている初期値指定情報と一致する初期値指定情報に対応付けられている初期値のデータを前記初期値記憶部から取得する、
ことを特徴とする請求項５に記載の携帯可能電子装置。
【請求項７】
前記制御部は、アプリケーションと初期値指定情報とを対応付けて記憶する記憶部をさらに具備し、
前記初期値指定部は、実行するアプリケーションに対応付けられている初期値指定情報を前記記憶部から取得することを特徴とする請求項５に記載の携帯可能電子装置。
【請求項８】
前記初期値取得部は、取得した初期値のデータを乱数によりスクランブルし、前記第２の暗号演算部に出力することを特徴とする請求項５に記載の携帯可能電子装置。
【請求項９】
前記制御部から暗号処理の割り込み要求がある場合、前記初期値記憶部は、演算途中の前記第１の暗号演算部の出力に対して識別情報を付与して記憶し、
暗号処理が再開される場合、前記初期値取得部は、前記初期値記憶部により付与した識別情報に基づいて初期値のデータを前記初期値記憶部から取得することを特徴とする請求項５に記載の携帯可能電子装置。
【請求項１０】
制御部と、前記制御部とバスを介して接続される暗号処理部とを備える携帯可能電子装置の制御方法であって、
前記制御部は、
前記暗号処理部に対して暗号処理を行うデータを前記バスを介して入力し、
前記暗号処理部に対して鍵指定情報を前記バスを介して入力し、
前記暗号処理部は、
予め鍵指定情報と暗号鍵とを対応付けて複数記憶し、
前記制御部から入力される鍵指定情報に基づいて暗号鍵を予め記憶した複数の暗号鍵の中から取得し、
前記取得した暗号鍵に基づいて前記制御部から入力されるデータに対して演算処理を行い、
前記演算処理の処理結果を前記バスを介して前記制御部に出力する、
ことを特徴とする携帯可能電子装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、外部装置からのコマンドに応じて処理を行う携帯可能電子装置、及び携帯可能電子装置の制御方法に関する。
【背景技術】
【０００２】
一般的に、携帯可能電子装置として用いられるＩＣカードは、プラスチックなどで形成されたカード状の本体と本体に埋め込まれたＩＣモジュールとを備えている。ＩＣモジュールは、ＩＣチップを有している。ＩＣチップは、電源が無い状態でもデータを保持することができるＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）またはフラッシュＲＯＭなどの不揮発性メモリと、種々の演算を実行するＣＰＵとを有している。
【０００３】
ＩＣカードは、例えば、ＩＳＯ／ＩＥＣ７８１６−１ｐａｒｔ１，２に準拠したＩＣカードである。ＩＣカードは、一般的に、ＣＰＵ、ＲＯＭ、ＲＡＭ、不揮発性メモリ（ＥＥＰＲＯＭ）、及び通信部などを備えており、互いにデータバスなどを介して接続されている。
【０００４】
ＩＣカードは、携帯性に優れ、且つ、外部装置との通信及び複雑な演算処理を行う事ができる。また、偽造が難しい為、ＩＣカードは、機密性の高い情報などを格納してセキュリティシステム、電子商取引などに用いられることが想定される。
【０００５】
この為、保持している機密性の高い情報を第三者に不正に読み取れないように、データを暗号化して送受信を行う携帯可能電子装置が提供されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−４５７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記した携帯可能電子装置は、暗号化処理を行う為のコプロセッサ（暗号処理部）を備えている。ＩＣカードは、コプロセッサにより、例えば、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）、またはＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）等の規格に基づいて暗号処理を行う。
【０００８】
またさらに、暗号化処理の出力と入力との排他的論理和を入力として暗号化を行うＣｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎ（ＣＢＣ）モードによる暗号処理も一般的に用いられている。
【０００９】
また、上記した携帯可能電子装置は、暗号化に用いる鍵、及びＣＢＣモードに用いられる初期値などを不揮発性メモリ、またはＲＯＭなどに記憶している。携帯可能電子装置のＣＰＵは、不揮発性メモリ、またはＲＯＭから鍵及び初期値などを読み出し、コプロセッサにデータバスを介して送信する。コプロセッサは、受け取った鍵及び初期値を用いて暗号化処理を行う。
【００１０】
このような暗号処理を行う際に、暗号鍵または初期値が解析される可能性があるという問題がある。
【００１１】
そこで、本発明の目的は、より安全性の高い携帯可能電子装置、及び携帯可能電子装置の制御方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明の一実施形態としての携帯可能電子装置は、制御部と、前記制御部とバスを介して接続される暗号処理部とを備える携帯可能電子装置であって、前記制御部は、前記暗号処理部に対して暗号処理を行うデータを前記バスを介して入力するデータ入力部と、前記暗号処理部に対して鍵指定情報を前記バスを介して入力する鍵指定部と、を具備し、前記暗号処理部は、予め鍵指定情報と暗号鍵とを対応付けて複数記憶する鍵記憶部と、前記制御部から入力される鍵指定情報に基づいて暗号鍵を前記鍵記憶部から取得する鍵取得部と、前記鍵取得部により取得した暗号鍵に基づいて前記制御部から入力されるデータに対して演算処理を行う第１の暗号演算部と、前記第１の暗号演算部の処理結果を前記バスを介して前記制御部に出力する出力部と、を具備する。
【００１３】
また、本発明の一実施形態としての携帯可能電子装置の制御方法は、制御部と、前記制御部とバスを介して接続される暗号処理部とを備える携帯可能電子装置の制御方法であって、前記制御部は、前記暗号処理部に対して暗号処理を行うデータを前記バスを介して入力し、前記暗号処理部に対して鍵指定情報を前記バスを介して入力し、前記暗号処理部は、予め鍵指定情報と暗号鍵とを対応付けて複数記憶し、前記制御部から入力される鍵指定情報に基づいて暗号鍵を予め記憶した複数の暗号鍵の中から取得し、前記取得した暗号鍵に基づいて前記制御部から入力されるデータに対して演算処理を行い、前記演算処理の処理結果を前記バスを介して前記制御部に出力する。
【発明の効果】
【００１４】
この発明の一形態によれば、より安全性の高い携帯可能電子装置、及び携帯可能電子装置の制御方法を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の一実施形態に係る携帯可能電子装置、及び携帯可能電子装置の制御方法の構成の例について説明するためのブロック図である。
【図２】図２は、図１に示すＩＣカードの構成例について説明するためのブロック図である。
【図３】図３は、図２に示すコプロセッサの構成及び動作について説明するための説明図である。
【図４】図４は、図１乃至図３に示すＩＣカードの動作について説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら、本発明の一実施形態に係る携帯可能電子装置、及び携帯可能電子装置の制御方法について詳細に説明する。
【００１７】
図１は、本実施形態に係るＩＣカード２と通信を行うＩＣカード処理装置１の構成例について説明するためのブロック図である。  
図１に示すようにＩＣカード処理装置１は、端末装置１１、ディスプレイ１２、キーボード１３、及びカードリーダライタ１４などを有している。
【００１８】
端末装置１１は、ＣＰＵ、種々のメモリ、及び各種インターフェースなどを備える。端末装置１１は、ＩＣカード処理装置１全体の動作を制御する。
【００１９】
ディスプレイ１２は、端末装置１１の制御により種々の情報を表示する。キーボード１３は、ＩＣカード処理装置１の操作者による操作を操作信号として受け取る。
【００２０】
カードリーダライタ１４は、ＩＣカード２と通信を行うためのインターフェース装置である。カードリーダライタ１４は、ＩＣカード２に対して、電源供給、クロック供給、リセット制御、及びデータの送受信を行う。
【００２１】
端末装置１１は、カードリーダライタ１４によりＩＣカード２に対して種々のコマンドを入力する。ＩＣカード２は、例えば、カードリーダライタ１４からデータの書き込みコマンドを受信した場合、受信したデータを内部の不揮発性メモリに書き込む処理を行う。
【００２２】
また、端末装置１１は、ＩＣカード２に読み取りコマンドを送信することにより、ＩＣカード２からデータを読み出す。端末装置１１は、ＩＣカード２から受信したデータに基づいて種々の処理を行う。
【００２３】
図２は、図１に示すＩＣカード２の構成例について説明するためのブロック図である。  
図２に示すように、ＩＣカード２は、カード状の本体２１と、本体２１内に内蔵されたＩＣモジュール２２とを備えている。ＩＣモジュール２２は、１つ又は複数のＩＣチップ２３と、通信部２４とを備える。ＩＣチップ２３と通信部２４とは、互いに接続された状態でＩＣモジュール２２に形成されている。
【００２４】
ＩＣチップ２３は、データバス２０、通信部２４、ＣＰＵ２５、ＲＯＭ２６、ＲＡＭ２７、不揮発性メモリ２８、及びコプロセッサ２９などを備えている。通信部２４、ＣＰＵ２５、ＲＯＭ２６、ＲＡＭ２７、不揮発性メモリ２８、及びコプロセッサ２９は、データバス２０を介して互いに接続されている。
【００２５】
ＩＣカード２は、ＩＣカード処理装置１などの上位機器から電力の供給を受けた場合、動作可能な状態になる。例えば、ＩＣカード２が接触式通信によりＩＣカード処理装置１と接続される場合、つまり、ＩＣカード２が接触式のＩＣカードで構成される場合、ＩＣカード２は、通信部としてのコンタクト部などを介してＩＣカード処理装置１からの動作電源及び動作クロックの供給を受けて活性化される。
【００２６】
また、ＩＣカード２が非接触式の通信方式によりＩＣカード処理装置１と接続される場合、つまり、ＩＣカード２が非接触式のＩＣカードで構成される場合、ＩＣカード２は、通信部としてのアンテナなどを介してＩＣカード処理装置１からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化するようになっている。
【００２７】
通信部２４は、ＩＣカード処理装置１のカードリーダライタ１４との通信を行うためのインターフェースである。  
通信部２４は、例えば、ＩＣカード処理装置１のカードリーダライタ１４と接触して信号の送受信を行うコンタクト部を備える。この場合、ＩＣカード２は、接触式のＩＣカードとして機能する。  
また、通信部２４は、例えば、ＩＣカード処理装置１のカードリーダライタ１４と無線通信を行うアンテナを備える。この場合、ＩＣカード２は、非接触式のＩＣカードとして機能する。
【００２８】
ＣＰＵ２５は、ＩＣカード２全体の制御を司る制御部として機能する。ＣＰＵ２５は、ＲＯＭ２６あるいは不揮発性メモリ２８に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。
【００２９】
ＲＯＭ２６は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ＲＯＭ２６は、製造段階で制御プログラム及び制御データなどを記憶した状態でＩＣカード２内に組み込まれる。即ち、ＲＯＭ２６に記憶される制御プログラム及び制御データは、予めＩＣカード２の仕様に応じて組み込まれる。
【００３０】
ＲＡＭ２７は、ワーキングメモリとして機能する揮発性のメモリである。ＲＡＭ２７は、ＣＰＵ２５の処理中のデータなどを一時的に格納する。例えば、ＲＡＭ２７は、通信部２４を介してＩＣカード処理装置１から受信したデータを一時的に格納する。また、ＲＡＭ２７は、ＣＰＵ２５が実行するプログラムを一時的に格納する。
【００３１】
不揮発性メモリ２８は、例えば、ＥＥＰＲＯＭあるいはフラッシュＲＯＭなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。不揮発性メモリ２８は、ＩＣカード２の運用用途に応じて制御プログラム、アプリケーション、及び種々のデータを格納する。
【００３２】
たとえば、不揮発性メモリ２８では、プログラムファイル及びデータファイルなどが創成される。創成された各ファイルには、制御プログラム及び種々のデータなどが書き込まれる。ＣＰＵ２５は、不揮発性メモリ２８、または、ＲＯＭに記憶されているプログラムを実行することにより、種々の処理を実現することができる。
【００３３】
コプロセッサ２９は、暗号鍵を用いて暗号化されたデータの復号、及び、平文のデータの暗号化を行う。即ち、コプロセッサ２９は、暗号処理部として機能する。例えば、ＣＰＵ２５は、暗号処理を行いデータをコプロセッサ２９にバス２０を介して入力する。この場合、ＣＰＵ２５は、データ入力部として機能する。コプロセッサ２９は、入力されるデータに対して暗号処理を施し、ＣＰＵ２５にバス２０を介して出力する。
【００３４】
図３は、図２に示すコプロセッサ２９の構成及び動作について説明するための説明図である。なお、ここでは、コプロセッサ２９は、ＤＥＳにより暗号処理を行うとして説明するが、これに限定されない。例えば、ＡＥＳなどにより暗号処理を行う場合であっても、同様に本発明を実施することができる。また、暗号処理ではなく復号処理を行う場合であっても、同様に本発明を実施することができる。
【００３５】
本実施形態に係るコプロセッサ２９は、入力データに対して非線形処理を含む一定の演算処理を所定回数行う。コプロセッサ２９は、この演算処理を行う為に暗号鍵を用いる。
【００３６】
図３に示すように、コプロセッサは、インターフェース部２９１、初期値ストレージ２９２、鍵ストレージ２９３、制御部２９４、初期転置処理部２９５、演算部２９６及び、鍵生成部２９７を備えている。
【００３７】
インターフェース部２９１は、データバス２０と接続するためのインターフェースである。インターフェース部２９１は、入力レジスタ２９１１、出力レジスタ２９１２、初期値レジスタ２９１３、及び鍵レジスタ２９１４などを備えている。
【００３８】
入力レジスタ２９１１は、データバス２０を介してコプロセッサ２９に入力されるデータを一時的に格納する。即ち、ＩＣカード２のＣＰＵ２５は、入力レジスタ２９１１にデータを書き込むことにより、コプロセッサ２９に対してデータを送信する。通常、入力レジスタ２９１１に格納される入力データは、所定の長さのビットを１ブロックとする複数ブロックのデータを格納する。
【００３９】
出力レジスタ２９１２は、データバス２０を介してコプロセッサ２９から出力するデータを一時的に格納する。即ち、ＩＣカード２のＣＰＵ２５は、出力レジスタ２９１２に書き込まれているデータを読み込む事により、コプロセッサ２９からデータを受信する。出力レジスタ２９１２は、制御部２９４の制御に基づいて動作することにより、出力部として機能する。
【００４０】
初期値レジスタ２９１３は、初期値指定情報記憶部として機能する。初期値レジスタ２９１３は、ＣＢＣモードにおける暗号処理に用いる初期値を決定するための初期値ＩＤ（初期値指定情報）を格納する。また、鍵レジスタ２９１４は、鍵指定情報記憶部として機能する。鍵レジスタ２９１４は、暗号処理に用いる鍵を決定するための鍵ＩＤ（鍵指定情報）を格納する。鍵ＩＤ及び初期値ＩＤは、ＣＰＵ２５により書き込まれる。初期値ＩＤは、ＣＰＵ２５により書き込まれる。
【００４１】
初期値ストレージ２９２は、初期値記憶部及び初期値取得部として機能する。初期値ストレージ２９２は、複数の異なる初期値を記憶する。また、初期値ストレージ２９２は、各初期値にそれぞれ固有のＩＤ（初期値ＩＤ）を対応付けて記憶する。この複数の異なる初期値は、カード発行段階で格納される。初期値ストレージ２９２は、初期値レジスタ２９１３に初期値ＩＤが書き込まれる場合、初期値レジスタ２９１３に書き込まれた初期値ＩＤと一致する初期値ＩＤに対応付けられている初期値を出力する。
【００４２】
鍵ストレージ２９３は、鍵記憶部及び鍵取得部として機能する。鍵ストレージ２９３は、複数の異なる暗号鍵を記憶する。また、鍵ストレージ２９３は、各暗号鍵にそれぞれ固有のＩＤ（鍵ＩＤ）を対応付けて記憶する。この複数の異なる暗号鍵は、カード発行段階で格納される。鍵ストレージ２９３は、鍵レジスタ２９１４に鍵ＩＤが書き込まれる場合、鍵レジスタ２９１４に書き込まれた鍵ＩＤと一致する鍵ＩＤに対応付けられている暗号鍵を出力する。
【００４３】
制御部２９４は、コプロセッサ２９内の各部の動作を制御する制御部である。入力レジスタ２９１１に入力データが入力される場合、制御部２９４は、入力データを１ブロック読み出す。また、初期値ストレージ２９２から出力される初期値を取得する。制御部２９４は、読み出した１ブロックの入力データと、初期値との排他的論理和を演算し、初期転置処理部２９５に出力する。この場合、制御部２９４は、暗号演算部として機能する。
【００４４】
初期転置処理部２９５は、入力されたデータの並べ替えを行う。例えば、６４ビットのデータが入力された場合、初期転置処理部２９５は、入力された６４ビットのデータを３２ビットずつに区切る。初期転置処理部２９５は、上位の３２ビットを第１の入力データＬｉ、下位の３２ビットを第２の入力データＲｉとして演算部２９６にそれぞれ入力する。
【００４５】
演算部２９６は、入力されたデータと鍵生成部２９７から出力される鍵とに基づいて演算を行い、データを暗号化（復号）する処理を行う。即ち、初期転置処理部２９５、演算部２９６、及び鍵生成部２９７は、暗号演算部として機能する。
【００４６】
鍵生成部２９７は、鍵ストレージ２９３から出力される鍵を記憶するレジスタを備えている。鍵生成部２９７は、レジスタに格納されている鍵に対して、転置処理、変換処理、及びシフト処理を行い、巡回鍵を生成する。ＤＥＳによる暗号化処理は、通常、第１段から第１６段の処理を有している。即ち、コプロセッサ２９は、演算部２９６にデータを入力し、その演算結果である出力を得る処理を１つの段として、１６段の処理を繰り返す。鍵生成部２９７は、各段に毎に異なる鍵Ｋ１乃至Ｋ１６（Ｋｎ）を逐次生成し、演算部２９６に供給する。
【００４７】
演算部２９６は、入力データＬｉ、入力データＲｉ、及び鍵生成部２９７から供給される巡回鍵に基づいて、演算を行い、出力データＬｏ及び出力データＲｏを出力する。まず、演算部２９６は、鍵生成部２９７から供給される鍵ＫｎとＲｉとに基づいて、Ｆ関数の演算を行う。即ち、演算部２９６は、変換処理、及び排他的論理和などの演算を行う。演算部２９６は、この演算結果と、Ｌｉとで排他的論理和を行う。演算部２９６は、この結果を出力データＲｏとして出力する。また、演算部２９６は、入力データＲｉを出力データＬｏとして出力する。これにより、演算部２９６による１段の処理が終了する。
【００４８】
例えば、１段目の暗号処理を行う場合、演算部２９６は、鍵生成部２９７から鍵Ｋ１を受け取る。また、２段目の暗号処理を行う場合、演算部２９６は、鍵生成部２９７から鍵Ｋ２を受け取る。
【００４９】
また、例えば、２段目の暗号処理の出力結果に対して再び鍵Ｋ２を用いて演算処理を行う場合、１段目の暗号処理の出力結果と同一のデータが出力される。即ち、演算部２９６は、暗号処理に用いられた鍵を用いて演算処理を行うことにより、暗号化されたデータを復号することができる。
【００５０】
例えば、１乃至１６段の暗号処理により暗号化されたデータを複合する場合、演算部２９６は、鍵Ｋ１６乃至Ｋ１を順に用いて演算処理を行うことにより元の平文データを取得することができる。
【００５１】
制御部２９４は、演算部２９６による処理が何段目であるかをカウントする。制御部２９４は、演算部２９６による処理結果を受け取り、カウントした段数に応じて適宜出力先を選択する。
【００５２】
例えば、演算部２９６による処理が１段目乃至１５段目である場合、制御部２９４は、出力データＬｏ及びＲｏを演算部２９６に入力する。演算部２９６は入力されたＬｏ及びＲｏに対して、繰り返し上記した処理を行う。
【００５３】
また、例えば、演算部２９６による処理が１６段目である場合、制御部２９４は、出力データＬｏ及びＲｏを出力レジスタ２９１２に入力する。さらに、制御部２９４は、次のブロックの処理に移行する。即ち、制御部２９４は、入力レジスタ２９１１から、入力データを１ブロック読み出す。制御部２９４は、読み出した１ブロックの入力データと、演算部２９６の出力データＬｏ及びＲｏとの排他的論理和を演算し、演算部２９６に入力する。
【００５４】
コプロセッサ２９は、上記した処理を入力レジスタ２９１１の入力データの全てのブロックに対して行う。全てのブロックについて暗号処理を行った場合、コプロセッサ２９は、出力レジスタ２９１２に格納されているデータを出力する。
【００５５】
なお、コプロセッサ２９がＣＢＣモードを用いずに暗号処理を行う場合、初期値レジスタ２９１３、初期値ストレージ２９２の構成を省略することができる。また、この場合、制御部２９４は、排他的論理和の演算を行わない。
【００５６】
図２に示す不揮発性メモリ２８は、上記の鍵ＩＤ及び初期値ＩＤを記憶する記憶部として機能する。即ち、不揮発性メモリ２８は、当該ＩＣカード２で実行することができるアプリケーションを示す情報の一覧を記憶する。不揮発性メモリ２８は、アプリケーションを示す情報に、それぞれ鍵ＩＤ及び初期値ＩＤを対応付けて記憶する。例えば、不揮発性メモリ２８は、アプリケーションＡを示す情報に、鍵ＩＤ−Ａ、及び初期値ＩＤ−Ａを対応付けて記憶することができる。
【００５７】
ＣＰＵ２５は、ＩＣカード処理装置１から受信するコマンドに基づいて、不揮発性メモリ２８に格納されている複数のアプリケーションから実行するアプリケーションを選択する。ＣＰＵ２５は、選択したアプリケーションを読み出し、実行する。
【００５８】
この場合、ＣＰＵ２５は、実行するアプリケーションを示す情報に対応付けられている鍵ＩＤ及び初期値ＩＤを取得する。例えば、実行するアプリケーションがアプリケーションＡである場合、ＣＰＵ２５は、鍵ＩＤ−Ａ、及び初期値ＩＤ−Ａを不揮発性メモリ２８から読み出す。ＣＰＵ２５は、読み出した鍵ＩＤ及び初期値ＩＤをコプロセッサ２９のインターフェース部２９１の初期値レジスタ２９１３、及び鍵レジスタ２９１４にそれぞれ書き込む。即ち、ＣＰＵ２５は、鍵指定部、及び初期値指定部として機能する。
【００５９】
図４は、図１乃至図３に示すＩＣカード２の動作について説明するためのフローチャートである。  
ＩＣカード２は、ＩＣカード処理装置１から起動コマンドを受信することにより起動される。ＩＣカード２は、ＩＣカード処理装置１からコマンドを受信する（ステップＳ１１）。
【００６０】
ＣＰＵ２５は、ＩＣカード処理装置１から受信するコマンドに基づいて、不揮発性メモリ２８に格納されている複数のアプリケーションから実行するアプリケーションを選択し、不揮発性メモリ２８から読み出す（ステップＳ１２）。
【００６１】
ＣＰＵ２５は、不揮発性メモリ２８を参照し、読み出したアプリケーションに対応するアプリケーション情報に対応付けられている鍵ＩＤ及び初期値ＩＤを取得する（ステップＳ１３）。
【００６２】
ＣＰＵ２５は、読み出した鍵ＩＤ及び初期値ＩＤをコプロセッサ２９のインターフェース部２９１の初期値レジスタ２９１３、及び鍵レジスタ２９１４にそれぞれ書き込む（ステップＳ１４）。また、暗号処理を行うデータがある場合、ＣＰＵ２５は、データ（入力データ）をコプロセッサ２９の入力レジスタ２９１１に書き込む。
【００６３】
コプロセッサ２９の初期値ストレージ２９２は、初期値レジスタ２９１３に書き込まれた初期値ＩＤと一致する初期値ＩＤに対応付けられている初期値を出力する（ステップＳ１５）。
【００６４】
コプロセッサ２９の制御部２９４は、入力レジスタ２９１１から入力データを１ブロック読み出す（ステップＳ１６）。また、制御部２９４は、初期値ストレージ２９２から出力される初期値を取得する。
【００６５】
制御部２９４は、読み出した１ブロックの入力データと、初期値との排他的論理和を演算し、初期転置処理部２９５に出力する（ステップＳ１７）。初期転置処理部２９５は、入力されたデータを上位３２ビットのデータ、及び下位３２ビットのデータに分割し、コプロセッサ２９の演算部２９６に入力する。
【００６６】
コプロセッサ２９の鍵ストレージ２９３は、鍵レジスタ２９１４に書き込まれた鍵ＩＤと一致する鍵ＩＤに対応付けられている暗号鍵を鍵生成部２９７に出力する（ステップＳ１８）。これにより、鍵生成部２９７は、逐次巡回鍵を生成し、演算部２９６に入力する。
【００６７】
演算部２９６は、初期転置処理部２９５から入力されるデータ及び鍵生成部２９７から入力される巡回鍵に基づいて暗号処理を行い、結果を制御部２９４に出力する（ステップＳ１９）。
【００６８】
制御部２９４は、演算部２９６による処理が何段目であるかをカウントすることにより、暗号処理が完了したか否かを判断する（ステップＳ２０）。
【００６９】
即ち、制御部２９４は、例えば、演算部２９６による処理が１段目乃至１５段目である場合、暗号処理が未了であると判断し（ステップＳ２０、ＮＯ）、ステップＳ１９に移行し、暗号処理を継続する。
【００７０】
制御部２９４は、例えば、演算部２９６による処理が１６段目である場合、１ブロックのデータに対する暗号処理が完了したと判断する（ステップＳ２０、ＹＥＳ）。制御部２９４は、暗号処理の結果をコプロセッサ２９の出力レジスタ２９１２に格納する。
【００７１】
また、制御部２９４は、入力データの全てのブロックに対して暗号処理が完了したか否か判断する（ステップＳ２１）。即ち、制御部２９４は、入力レジスタ２９１１に未処理のデータブロックが存在するか否か判断する。
【００７２】
全てのブロックに対して暗号処理が完了していないと判断した場合（ステップＳ２１、ＮＯ）、制御部２９４は、ステップＳ１６に移行し、入力レジスタ２９１１から１ブロックのデータを読み出す。この場合、制御部２９４は、１つ前のブロックの暗号処理の結果と、読み出したデータとの排他的論理和を初期転置処理部２９５に対して出力する。
【００７３】
全てのブロックに対して暗号処理が完了したと判断した場合（ステップＳ２１、ＹＥＳ）、制御部２９４は、出力レジスタ２９１２に格納されている出力データをデータバス２０を介してＣＰＵ２５に出力し（ステップＳ２２）、処理を終了する。
【００７４】
上記したように、本実施形態に係るＩＣカード２は、複数の異なる初期値及び暗号鍵がコプロセッサ２９のチップ内に格納された状態で発行される。また、ＩＣカード２の不揮発性メモリ２８は、コプロセッサ２９内に格納されている初期値及び暗号鍵を識別するためのＩＤと、アプリケーションを識別するための情報とを対応付けて記憶する。
【００７５】
ＣＰＵ２５は、実行するアプリケーションに基づいて不揮発性メモリ２８を参照し、初期値ＩＤ及び鍵ＩＤを取得し、コプロセッサ２９に送信する。コプロセッサ２９は、受信した初期値ＩＤ及び鍵ＩＤに基づいて記憶している複数の初期値及び暗号鍵から暗号処理に用いる初期値及び暗号鍵を選択する。
【００７６】
この構成によると、暗号処理を行う場合、暗号化データ、復号データ、及び、初期値と暗号鍵とを指定するためのＩＤがＩＣカード２のデータバス２０を流れる。即ち、暗号鍵、及び初期値がデータバス２０を流れない。この結果、より安全性の高い携帯可能電子装置、及び携帯可能電子装置の制御方法を提供することができる。
【００７７】
なお、初期値ストレージ２９２と制御部２９４との間で初期値の送受信が行われる場合、乱数によりスクランブルされた状態のデータが送受信される。また、鍵ストレージ２９３と鍵生成部２９７との間で初期値の送受信が行われる場合、乱数によりスクランブルされた状態のデータが送受信される。これにより、コプロセッサ２９内における送受信においても、高セキュリティを実現することができる。
【００７８】
また、演算途中の初期値のデータを保存しておき、別の暗号化処理を割り込ませて実施する場合、制御部２９４は、演算途中の初期値のデータ（演算部２９６の出力）にＩＤを付与し、初期値ストレージ２９２の空き領域に保存する。処理を再開する場合、制御部２９４は、付与したＩＤを指定して初期値ストレージ２９２から初期値のデータを取得する。これにより、制御部２９４は、演算途中の初期値のデータを取得し、演算の続きの処理を行うことができる。
【００７９】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具現化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合わせてもよい。
【００８０】
例えば、トリプルＤＥＳなどの、複数の鍵を同時に利用する必要がある場合であっても、本発明を容易に適用することができる。この場合、不揮発性メモリ２８は、アプリケーション毎に複数の鍵ＩＤを対応付けて記憶する。また、鍵レジスタ２９１４は、複数の鍵ＩＤを個別に格納することができるように構成される。鍵ストレージ２９３は、鍵レジスタ２９１４に格納される複数の鍵ＩＤに基づいて、複数の暗号鍵を鍵生成部２９７に適宜出力する。これにより、複数の鍵を同時に使用する暗号方式にも本発明を適用させることができる。
【００８１】
例えば、トリプルＤＥＳにより暗号処理を行う場合、２ＫＥＹ（１６バイト）または３ＫＥＹ（２４バイト）で暗号処理が行われる。本発明では、この鍵に対して、８バイト毎に鍵ＩＤを付与する。鍵ＩＤは、例えば１バイトのデータであり、鍵８バイト＋鍵ＩＤ１バイトのデータがＩＣカード２の発行時に鍵ストレージ２９３に格納される。同時に、鍵ＩＤは、アプリケーションを示す情報と対応付けられた状態で不揮発性メモリ２８にも格納される。
【符号の説明】
【００８２】
１…ＩＣカード処理装置、２…ＩＣカード、１１…端末装置、１２…ディスプレイ、１３…キーボード、１４…カードリーダライタ、２０…データバス、２１…本体、２２…ＩＣモジュール、２３…ＩＣチップ、２４…通信部、２５…ＣＰＵ、２６…ＲＯＭ、２７…ＲＡＭ、２８…不揮発性メモリ、２９…コプロセッサ、２９１…インターフェース部、２９２…初期値ストレージ、２９３…鍵ストレージ、２９４…制御部、２９５…初期転置処理部、２９６…演算部、２９７…鍵生成部、２９１１…入力レジスタ、２９１２…出力レジスタ、２９１３…初期値レジスタ、２９１４…鍵レジスタ。
【図１】
2011010218.tif 000003
【図２】
2011010218.tif 000004
【図３】
2011010218.tif 000005
【図４】
2011010218.tif 000006