(57)【要約】  本発明は、スマートカード１００の保護方法を提供する。スマートカードは、処理手段１０１と、該処理手段によって実行されるソフトウェアモジュール１１５を暗号化形式で格納する記憶部１１０と、ジャストインタイム型復号ソフトウェアモジュールとして構成された復号手段１３０とを具備する。本方法は、ホワイトボックス実装型の復号手段をスマートカードに提供する段階を有する。一実施形態において、ホワイトボックス実装は、Ｌｏｍｂｏｋ暗号化アルゴリズムによるホワイトボックス実装である。
2011512726.tif 000002
【特許請求の範囲】
【請求項１】
スマートカード（１００）の保護方法であって、
処理手段（１０１）と、該処理手段によって実行されるソフトウェアモジュール（１１５）を暗号化形式で格納する記憶部（１１０）と、ジャストインタイム型復号ソフトウェアモジュールとして構成された復号手段（１３０）とを具備したスマートカードに、ホワイトボックス実装型の復号手段を提供する段階を有することを特徴とする方法。
【請求項２】
復号手段（１３０）が、４ビットの入力を４ビットの出力にマッピングするＳボックスを用いて暗号化アルゴリズムを実行することを特徴とする請求項１に記載の方法。
【請求項３】
ホワイトボックス実装が、ルックアップテーブルへのＸＯＲ演算の変換の代わりに、復号手段に用いられる暗号化アルゴリズム中に任意のＸＯＲ演算を残すことを特徴とする請求項１又は２に記載の方法。
【請求項４】
ホワイトボックス実装が、Ｌｏｍｂｏｋ暗号化アルゴリズムのホワイトボックス実装であることを特徴とする請求項１に記載の方法。
【請求項５】
スマートカード（１００）であって、
処理手段（１０１）と、
該処理手段によって実行されるソフトウェアモジュール（１１５）を暗号化形式で格納する記憶部（１１０）と、
ジャストインタイム型復号ソフトウェアモジュールとして構成されたホワイトボックス実装型の復号手段（１３０）と
を具備することを特徴とするスマートカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スマートカード及びそのようなスマートカードを保護するための方法に関する。
【背景技術】
【０００２】
スマートカード、マイクロプロセッサカード、チップカード、又は集積回路カード（ＩＣＣ）は、情報の処理機能を有した集積回路が組み込まれた比較的小さい、通常はポケットサイズであるカードと定義される。そのようなスマートカードは、価値のあるアルゴリズムやノウハウを実現する暗号化鍵やソフトウェアルーチンなどの機密情報をセキュアに格納するために使用される。
【０００３】
その閉鎖的性質により、スマートカードは、ブラックボックスと見なされる。攻撃者は、入力及び出力の監視だけしか行えず、実装された暗号化アルゴリズムの動作自体は監視できない。しかしながら、今日では、そのような実装の詳細を取得するための多くの技術が存在しており、時には、組み込まれたソフトウェアの全部分又は一部分がカードから抽出されることすらある。既知の例が、フォールトインジェクション攻撃及びバッファオーバーラン攻撃である。
【０００４】
スマートカードへのフォールトインジェクション攻撃では、攻撃者は、無効な入力をカードに与えることによって、又は、カードを過大な電圧などの規格外の状況にさらすことによって、スマートカードの挙動を変化させることを試みる。また、フォールトインジェクション攻撃では、侵襲的な手法が実行されることもある。侵襲的フォールトインジェクションの一例としては、チップを物理的に分解し、保護されていないハードウェアを電磁波にさらすことによってチップの挙動を変化させる手法が挙げられる。そのような故意による誤り（フォールト）の結果として変化した挙動から、何らかの機密情報が暴露されるおそれがある。
【０００５】
バッファオーバーラン攻撃では、攻撃者は、格納可能な量を超えるデータで記憶場所を満たすことで、他のデータ構造体を破壊する。データを適切に選択することで、破壊が、メモリ内から外界へのデータ又はコードの断片の漏洩を引き起こすことがある。
【０００６】
これらの種類の攻撃の概要については、例えば、非特許文献１を参照されたい。
【０００７】
これらの種類の攻撃からデータを守るために、特許文献１及び特許文献２では、ホワイトボックス実装を用いて暗号化実装を保護することを提案するとともに、この解決策がスマートカード内の他のデバイスに使用可能であることに言及している。暗号化アルゴリズムのホワイトボックス実装は、ホワイトボックス攻撃、すなわち、攻撃者がプロセッサにより実行される命令の一部分又は全部分を取得可能となる攻撃に対して、暗号化アルゴリズムの内部動作の一部分又は全部分を隠蔽する実装である。ある場合には、攻撃者は、動作環境をコントロールするいくつかの手法を有し、それにより、彼らは、暗号化動作の少なくとも一部分を取得するとともに、実行中にアルゴリズムで使用される暗号化鍵の少なくとも一部分を特定できてしまう。例えば、攻撃者は、デバッグ環境又は仮想マシン内で実装を実行し、それによって、すべての動作を観察し、データバッファを操作し、かつ実行フローを監視することが可能となる。
【０００８】
別の場合では、攻撃者は、暗号化アルゴリズム実行中に、動作環境が実装の一部分又はデータバッファの内容の一部分を「漏らす（leak）」か又は暴露する原因となる。例えば、攻撃者は、バッファオーバーフロー攻撃を用いて、暗号化実装の一部分を抽出することがある。都合のよい部分が抽出された場合、それによって、攻撃者は、暗号化鍵又は実装の特定の設定を学習し、暗号化保護の一部分又は全部分の無効化を可能にする。
【０００９】
ホワイトボックス実装は、暗号化アルゴリズムの内部動作の一部分又は全部分、特に、鍵データを隠蔽する。これは、さまざまな方法で実行可能である。ホワイトボックス実装を構築するためのありふれた技術としては、暗号化アルゴリズムの符号化テーブルとランダム全単射との組み合わせを用いて、個々のステップではなくその合成物を表わす手法が挙げられる。事実上、復号鍵及び復号アルゴリズムは、一体構造の１つのブロックと化す。この単一ブロックは、アルゴリズムの内部動作又は鍵について、何の情報も明らかにしない。つまり、ホワイトボックス実装の全体が得られたとしても、技術者が元のアルゴリズム又は用いられた復号鍵にたどり着くことは非常に困難となる。特許文献３に開示された別の技術は、ＲＳＡなどの暗号化アルゴリズムを指数によって難解化するものである。
【００１０】
スマートカードにホワイトボックス実装型の暗号化アルゴリズムを使用することの欠点は、ホワイトボックス実装によりコードサイズが伝統的実装に比べて極度に肥大化する一方で、スマートカードの記憶容量が極めて限られているということにある。例えば、Ｃｈｏｗ １（以降で説明する）によって提案されたようなＡＥＳ暗号化アルゴリズムのホワイトボックス実装は、０．７メガバイトを超えるサイズを有する。参考として、伝統的な、すなわち、非ホワイトボックス形式のＡＥＳの一実装は、１０キロバイト程度のサイズとなる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】国際公開第２００７／１０５１２６号パンフレット
【特許文献２】米国特許出願公開第２００６／０１４０４０１号明細書
【特許文献３】欧州特許出願第０８１５５７９８．５号明細書
【特許文献４】米国特許第７０４３０１６号明細書
【特許文献５】欧州特許第１３０７９９３号明細書
【特許文献６】米国特許第４１６８３９６号明細書
【特許文献７】米国特許第５２２４１６６号明細書
【特許文献８】国際公開第２００５／０６０１４７号パンフレット
【特許文献９】国際公開第２００７／０３１８９４号パンフレット
【特許文献１０】国際公開第２００６／０４６１８７号パンフレット
【非特許文献】
【００１２】
【非特許文献１】Oliver Koemmerling, Markus G. Kuhn, "Design Principles for Tamper-Resistant Smartcard Processors", Proceeding of the USENIX Workshop on Smartcard Technology (Smartcard '99), Chicago, Illinois, USA, May 10-11, 1999, USENIX Association, pp. 9-20, ISBN 1-880446-34-0
【非特許文献２】Stanley Chow, Philip Eisen, Harold Johnson, and Paul C. Van Oorschot, "White-Box Cryptography and an AES Implementation", Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, Canada, August 15-16, 2002
【非特許文献３】Stanley Chow, Phil Eisen, Harold Johnson, and Paul C. Van Oorschot, "White-Box DES Implementation for DRM Applications", Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, November 18, 2002
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、スマートカード中のソフトウェアモジュールの働きについての情報を暴露する攻撃からスマートカードを効果的に保護することである。
【課題を解決するための手段】
【００１４】
本発明は、請求項１に定義された方法と、請求項５に定義されたスマートカードとで、この目的を達成する。保護されることを必要とするソフトウェアモジュールは、任意の適切な暗号化アルゴリズムを用いて暗号化される。例えば、３ＤＥＳ又はＡＥＳが使用できる。ジャストインタイム型復号モジュールが提供され、これは、実行する必要があるときに、ソフトウェアモジュール（又は、その必要な部分）を復号する。復号されたモジュールのコピーは、その後、可能な限りすみやかに削除される。これにより、攻撃者がソフトウェアモジュールのコピーを取得する機会を減らす。攻撃者は、このモジュールの暗号化されたバージョンを抽出可能であるが、このバージョンは、正式な復号鍵が無ければ役に立たない。
【００１５】
本発明によれば、ホワイトボックス実装型の復号モジュールが使用される。これはホワイトボックス技術を用いて比較的小容量のモジュールとして実現されるので、スマートカードで必要となる記憶域は、ほんの僅かしか増加しない。そのようなホワイトボックス実装を構築するために上記技術が使用されるが、既知の又は以後開発される他のホワイトボックス技術が使用されてもよい。
【００１６】
主な要件は、ホワイトボックス実装が小さいサイズとなり過ぎないこと、及び、攻撃者が実装の（アルゴリズムによって使用される鍵を含む）任意の部分を有したとしても、そこから機能的に正しい復号機能を取り出すことがことが困難となるプロパティを有することである。この要件は、ホワイトボックス実装で想定されるものよりも脆弱であり、すなわち、攻撃者は、環境のコントロールが行える。故に、本発明は、ホワイトボックスセキュリティと鍵のサイズとのトレードオフを許す。
【００１７】
復号アルゴリズムの実装のために必要な条件は、そのような方法によって、攻撃者が実装の一部分から基礎となる鍵を取り出すことを不可能にすることである。いくつかのホワイトボックス技術、例えば、先に記載した符号化テーブルの組合せの使用は、攻撃者が環境のコントロールを達成したときのホワイトボックス攻撃に対抗するように設計される。そのような技術は本発明の目的に適しているが、本発明に適した他のより簡単なホワイトボックス技術も存在する。
【００１８】
一例として、ＡＥＳのホワイトボックス実装を構築する際、非線形符号化によって各ルックアップテーブルの入力及び出力を符号化することで事足りる。線形符号化によりＸＯＲ演算の前に行なわれるルックアップテーブルの出力の符号化によって（また、同様に、ＸＯＲ演算に続くルックアップテーブルの入力についても）、ルックアップテーブルによってＸＯＲ演算を実現することは、本願発明の目的には必要無くなる。
【００１９】
追加的な利点は、保護に必要となるソフトウェアがより隔離されることであり、これは、上記の攻撃からソフトウェアを保護することにより集中できることを意味する。
【００２０】
故に、この重要と思われるコードの実行の間、攻撃成功の機会が著しく減少する。他のソフトウェアが攻撃の影響を受けやすいままでも、そのような攻撃は、せいぜい、保護されたソフトウェアモジュールの暗号化された部分を暴露するに過ぎない。攻撃者は、これらの部分を使用できるようにはならない。
【００２１】
好ましくは、ホワイトボックス実装は、特許文献４及び特許文献５に開示されたようなＬｏｍｂｏｋ暗号化アルゴリズムのホワイトボックス実装である。この実施態様の利点は、Ｌｏｍｂｏｋのホワイトボックス実装がＡＥＳのホワイトボックス実装よりもより小さいサイズとなることである。これは、Ｌｏｍｂｏｋは４ビットＳボックス、すなわち、４ビットから４ビットへのマッピングを行うＳボックスを有し、一方、ＡＥＳは８ビットＳボックスを有することに起因する。
【００２２】
Ｓボックス毎に、ホワイトボックスＬｏｍｂｏｋ及びＡＥＳ実装は、それらを含んだルックアップテーブルを有する。ｍビットのＳボックスからは、２ｍ行を有したルックアップテーブルが生じる。故に、より小さいＳボックスは、より小さいホワイトボックス実装をもたらす。
【００２３】
本発明のこれら及びその他の態様は、添付の図面に示された例示的な実施形態から明らかであり、かつその参照によって明らかとなる。
【図面の簡単な説明】
【００２４】
【図１】スマートカードの概略図である。
【発明を実施するための形態】
【００２５】
図１は、プロセッサ１０１と、該プロセッサ１０１によって実行される１つ以上のソフトウェアモジュールを格納するためのメモリ１１０とを具備したスマートカード１００を概略的に示す。ソフトウェアモジュールの１つがモジュール１１５であり、これが本発明の主要部となる。メモリ１１０は、好ましくは、ＥＥＰＲＯＭ又はフラッシュメモリとして実現されるが、多くの代替記憶媒体が利用可能である。メモリ１１０は、暗号化鍵又は認証要素などのデータを追加的に格納してよい。また、例えば、命令とデータとの分離が望まれる場合には、そのようなデータを格納するために別個のメモリ（図示せず）が使用されてもよい。
【００２６】
また、スマートカード１００は、スマートカード１００に接続されたデバイス（図示せず）に対するデータの送受信を行うための入力／出力モジュール１２０を具備する。このモジュール１２０は、通常、デバイス内の読取部の電気コネクタに接続されるチップとして実現され、好ましくは、ＩＳＯ／ＩＥＣ ７８１６及びＩＳＯ／ＩＥＣ ７８１０規格シリーズの定義に従う。変形例として、無接点スマートカードと称されるものが用いられ、この場合、データの送信は、無線周波数誘導技術、例えば、ＩＳＯ／ＩＥＣ １４４４３に定義された技術を介して行われる。
【００２７】
例えば、スマートカード１００は、限定受信システム又はＤＲＭシステムに使用でき、認証の際、オーディオ及び／又はビデオデータを復号するためのソフトウェア実装された復号アルゴリズムを提供する。そして、セットトップボックス、テレビ受像機、コンピュータ、又はその他のデバイスは、暗号化されたデータをＩ／Ｏモジュール１２０を介してスマートカード１００に送信するとともに、デバイスによるこのデータの受信が許可されているとの判断がスマートカード１００によってなされた場合、返信として、復号されたデータを受信する。このために、メモリ１１０（又は、その他のメモリ）によって、権利付与メッセージ、許可証、又は権利証明書が格納されるか、又は、デバイスによって、そのようなアイテムがそれらの適用されるデータと共に提供されてよい。
【００２８】
そのようなシステムの動作方法は既知であるので、さらに詳細には記載しない。また、当業者には既知の通り、スマートカードは、セキュリティが望まれる他の多くの状況下で有用である。
【００２９】
メモリ１１０に格納されたソフトウェアモジュール１１５は、暗号化形式で格納される。このソフトウェアモジュール１１５を暗号化するために、既知の次世代暗号化アルゴリズム、例えば、ＡＥＳ又は３ＤＥＳが使用できる。これにより、攻撃者がメモリ１１０の内容の全部分又は一部分の抽出を成し遂げたとしても、彼らがソフトウェアモジュール１１５の有用な情報を取得することはない。このモジュール１１５には、カードの保護に必要な価値のあるノウハウ又は暗号化鍵、例えば、認証鍵又は復号鍵が含まれてよい。
【００３０】
ソフトウェアモジュール１１５は、メモリ１１０に格納された複数のソフトウェアモジュールのうちの１つに過ぎない。他のソフトウェアモジュールは、暗号化形式又は非暗号化形式（プレーンテキスト）で、同じメモリ１１０に格納されてよい。
【００３１】
スマートカード１００は、ソフトウェアモジュール１１５のうちの関連性のある部分を、それらがプロセッサによって実行される際に復号するように構成されたジャストインタイム型復号モジュール１３０を提供する。モジュール１３０の実現可能な実装は、各命令がプロセッサ１０１に送られる前に、それらの命令を復号すること、又は、後にその全体がプロセッサ１０１に与えられるソフトウェアモジュール１１５をブロック単位で復号することである。復号された（複数の）命令又は（複数の）ブロックは、実行の後、できる限り速やかにメモリから消去される。
【００３２】
ジャストインタイム型復号のある実施形態では、復号された（複数の）命令又は（複数の）ブロックは、プロセッサ１０１内又はその近傍の一時メモリ（図示せず）に格納される。そのような実施形態においては、この一時メモリは、（複数の）命令又は（複数の）ブロックが実行され終えたとき、及びスマートカード１００が有効化又は無効化されたときにクリアされなければならない。
【００３３】
典型的に、ジャストインタイム型復号機能は、スマートカード１００上の単独のハードウェアモジュールとして実現されるか、又は、組込みソフトウェアモジュールとして実現される。バス暗号化等の名称でも知られるスマートカードにおけるジャストインタイム方式の概念については、例えば、特許文献６及び特許文献７に詳しい。例えば、特許文献７は、システム内のセキュアな物理的部位に内部キャッシュメモリを備えたスマートカードなどのデータ処理システムを開示している。メモリ１１０に相当する外部メモリは、セキュアな物理的部位の外側に配置され、暗号化された及び暗号化されていないデータ及び／又は命令を格納する。命令は、セキュアな物理的部位内に含まれた非公開鍵へのアクセスを可能にする。非公開鍵は、暗号化されたデータ及び命令に添えられた暗号化されたマスター鍵の復号に使用される。
【００３４】
セキュアな物理的部位中の復号モジュール１３０に類似したインタフェース回路は、非公開鍵の使用によって、暗号化された各マスター鍵を復号し、また、復号された各マスター鍵に関連した暗号化されたデータ及び命令を復号する。プロセッサ１０１に相当する中央演算装置は、外部メモリの暗号化及び非暗号化データ及び命令の両方のセグメントにアクセスし、インタフェース回路に、復号されたマスター鍵を用いたデータ及び命令の復号と、復号した情報の内部メモリキャッシュへの格納とを行わせる。暗号化されていないデータ及び命令は、直接、内部メモリキャッシュに格納される。
【００３５】
本発明によれば、モジュール１３０の復号機能は、適切な暗号化アルゴリズムのホワイトボックス実装として提供される。先にも記載したが、ホワイトボックス実装は、暗号化アルゴリズムの符号化テーブルと、ランダム全単射との組合せを用いて、個々のステップではなくその合成物を表わすことによって、暗号化アルゴリズムの内部動作を隠蔽する。
【００３６】
特許文献８、特許文献９、及び特許文献１０が、暗号化アルゴリズムのホワイトボックス実装を開示している。
【００３７】
非特許文献２（以降、「Ｃｈｏｗ １」と称する）及び非特許文献３（以降、「Ｃｈｏｗ ２」と称する）は、暗号化アルゴリズムのホワイトボックス実装の構築方法を開示している。
【００３８】
これにより、復号モジュール１３０が従来通り動作するとともに、メモリ１１０に格納されたソフトウェアモジュール１１５の該当部分を復号できても、復号モジュール１３０の内容の任意の部分を抽出することが、その動作に対して又はメモリ１１０のソフトウェアモジュールの各部分の復号に用いられる復号鍵に対して有用な何の情報も提供しない。
【００３９】
スマートカードからデータの断片を抽出するための複数の技術が存在している（「背景技術」を参照されたい）としても、それらの技術は、データのわずかな部分しか明らかにしない。例えば、ＩＳＯ規格７８１６は、そのような攻撃によってもせいぜい２５５バイトのデータしか漏洩し得ないことを定めている。ＲＯＭ抽出攻撃などの攻撃は、より多くのコードを暴露するが、そのような攻撃の特性により、典型的に、抽出されるデータの５バイトのうちの１バイトは、誤った値を有している。これは、攻撃者が、平均すると８０％の確率でしかホワイトボックス実装にアクセスできないことを意味し、そこから何らかの有用な情報を回収するには不十分である。
【００４０】
モジュール１３０で実現された復号メカニズムはメモリ１１０の内容に比べて比較的小容量であるので、このホワイトボックス実装に要する記憶域も比較的小容量となる。
【００４１】
また、このメカニズムの小ささは、より木々しいコードセキュリティ手段の使用を可能とする。
【００４２】
ホワイトボックス実装の記憶域要件を緩和するために、選択的に、８ビットＳボックスを用いるＡＥＳのようなアルゴリズムの代わりに、４ビットＳボックスを使用する暗号化アルゴリズムが使用される。ｍビットのＳボックスからは、２ｍ行を有するルックアップテーブルが生じる。別の選択肢として、上記選択の有無に関わらず、ルックアップテーブル内へＸＯＲ演算子を変換する代わりに、アルゴリズム中にＸＯＲ演算子をＸＯＲ演算子のまま残す手法がとられてよい。
【００４３】
好適な実施形態においては、使用される暗号化アルゴリズムは、特許文献４及び特許文献５に開示されたように、Ｌｏｍｂｏｋ暗号化アルゴリズムである。Ｌｏｍｂｏｋのホワイトボックス実装をどのように提供するかについてのさらなる情報は、特許文献８から得ることができる。Ｌｏｍｂｏｋは、ホワイトボックス実装に極めて適している。Ｌｏｍｂｏｋのホワイトボックス実装が１０キロバイトほどの小容量となり得ることが実験的に分かっている。
【００４４】
１つの暗号化されたモジュール１１５を参照して発明を説明したが、当然ながら、２つ以上のソフトウェアモジュールが暗号化形式で格納され、モジュール１３０を用いて復号されてもよい。
【００４５】
当然ながら、上記の各実施形態は、発明の限定ではなく例示を意図し、当業者は、添付の特許請求の範囲から逸脱することなく、変形実施形態を設計し得る。
【００４６】
特許請求の範囲において、括弧内に記載した参照符号は、請求項の限定として解釈すべきものではない。語「comprising（有する、具備する）」は、請求項中に列挙された以外の構成要素又は段階の存在を除外しない。構成要素直前の語「a」又は「an」（日本語訳においては、複数あるものとして記載されなかった構成要素）は、そのような構成要素が複数存在することを除外しない。本発明は、いくつかの互いに異なる構成要素を具備したハードウェア手段によって、及び、適切にプログラムされたコンピュータ手段によって、実現できる。
【００４７】
いくつかの手段を列挙する装置の請求項では、それらの手段のうちのいくつかは、同一のハードウェアアイテムによって実現できる。ある複数の手段が互いに異なる独立請求項で定義されているという事実は、それらの手段の組合せを有利に使用できないことを指すのではない。
【符号の説明】
【００４８】
１００  スマートカード
１０１  プロセッサ
１１０  メモリ
１１５  ソフトウェアモジュール
１２０  入出力（Ｉ／Ｏ）モジュール
１３０  ジャストインタイム型復号モジュール
【図１】
2011512726.tif 000003
【国際調査報告】
2011512726.tif 000004
2011512726.tif 000005