(57)【要約】      （修正有）【課題】ソフトウェアを不正なコピーから保護する。【解決手段】記憶デバイス１２０内の第一のメモリ１２２に記憶されているソフトウェア・アプリケーション１２２１は、コンピューティング・デバイス１１０によって実行されたときに記憶デバイス１２０を認証するコードを有する。記憶デバイス１２０は、ソフトウェア・アプリケーション１２２１の完全性を検証し、検証成功に際して、ソフトウェア・アプリケーション１２２１をコンピューティング・デバイス１１０に転送する。コンピューティング・デバイス１１０はソフトウェア・アプリケーション１２２１を実行し、記憶デバイス１２０を認証する。記憶デバイス１２０の認証が成功した場合、コンピューティング・デバイス１１０は記憶デバイス１２０の第二のメモリ１２３、１２４内のデータにアクセスする。そのデータは、実行の間に前記ソフトウェア・アプリケーション１２２１によって使用されうる。【選択図】図１
2011150701.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア・アプリケーションの実行の方法であって、記憶デバイスが、第一のメモリ内に、コンピューティング・デバイスによって実行されたときに前記記憶デバイスを認証するコードを有するソフトウェア・アプリケーションを記憶しており、当該方法は：
・前記記憶デバイスによって、前記ソフトウェア・アプリケーションの完全性を検証する段階を含み；
当該方法はさらに、完全性の検証が成功した場合：
・前記記憶デバイスによって、前記ソフトウェア・アプリケーションを前記コンピューティング・デバイスに転送する段階と；
・前記コンピューティング・デバイスによって、前記ソフトウェア・アプリケーションを実行する段階と；
・前記コンピューティング・デバイスによって、前記ソフトウェア・アプリケーションを使って、前記記憶デバイスを認証する段階と；
・前記認証が失敗した場合、前記ソフトウェア・アプリケーションの実行を止める段階とを有する、
方法。
【請求項２】
前記記憶デバイスの認証が成功した場合、前記コンピューティング・デバイスが、前記記憶デバイスの第二のメモリ内の、前記ソフトウェア・アプリケーションによって実行の間に使用されうるデータを要求する段階をさらに含む、請求項１記載の方法。
【請求項３】
前記認証する段階がさらに、前記コンピューティング・デバイスと前記記憶デバイスとの間にセキュアな認証されたチャネル（Secure  Authenticated  Channel）を確立する、請求項１記載の方法。
【請求項４】
記憶デバイスであって：
コンピューティング・デバイスによって実行されたときに前記記憶デバイスを認証するコードを有するソフトウェア・アプリケーションを記憶するよう適応された第一のメモリと；
プロセッサとを有し、前記プロセッサは：
前記ソフトウェア・アプリケーションの完全性を検証し；
完全性の検証が成功した場合にのみ前記ソフトウェア・アプリケーションを前記コンピューティング・デバイスに転送するよう適応されている、
記憶デバイス。
【請求項５】
請求項４記載の記憶デバイスであって、前記ソフトウェア・アプリケーションによって実行の間に使用されうるデータを記憶するよう適応された第二のメモリをさらに有しており、前記プロセッサがさらに、前記コンピューティング・デバイスのプロセッサの認証成功後に、前記コンピューティング・デバイスのプロセッサが前記第二のメモリ内のデータにアクセスする許すよう適応される、記憶デバイス。
【請求項６】
請求項５記載の記憶デバイスであって、当該記憶デバイスの前記プロセッサがさらに、認証の間、前記コンピューティング・デバイスのプロセッサとセキュアな認証されたチャネルを確立するよう適応されている、記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概括的にはソフトウェアに、詳細にはソフトウェア・コピー保護に関する。
【背景技術】
【０００２】
この節は、読者に技術の諸側面を紹介するために意図されている。それらの側面は以下に記述され、特許請求される本発明のさまざまな側面に関係することがありうる。この議論は、読者に、本発明のさまざまな側面のよりよい理解を容易にする背景情報を与える助けになると思われる。よって、これらの陳述はこの観点で読まれるべきであって、従来技術の自認として読まれるべきではないことを理解しておくべきである。
【０００３】
一部の人がソフトウェア・アプリケーションの不正コピーを対価を支払うことなく使っているという意味での海賊行為〔パイラシー〕（piracy）にソフトウェア頒布者が直面していることは驚くには当たらない。このことは、コンピュータ・ゲームの領域において特に真実である。したがって、ゲーム提供者〔プロバイダー〕（provider）および頒布者〔ディストリビューター〕（distributor）は、そのような海賊行為をくじこうとして、たとえばSecuROMおよびSafeMediaのようなプロテクト〔保護〕機構を使う。しかしながら、ハッカーはこれらのプロテクト機構を少なくとも部分的に打ち破るツールを開発することによって反応した。
【０００４】
基盤技術が変わるにつれてソフトウェア・アプリケーションの頒布が変わりうることは考えられる。たとえば、U3はユニバーサル・シリアル・バス（USB:  Universal  Serial  Bus）キー専用の技術であり；USBキーのフラッシュメモリ記憶領域内にあるアプリケーションの管理を容易にする。次世代USBプロトコルは、現行世代よりもずっと大きな転送レートをもつであろう。可能性としては、ハードディスク・ドライブからの転送よりも速いこともありうる。
【０００５】
サンディスク（SanDisk）トラステッドフラッシュ（TrustedFlash）技術は、フラッシュメモリ上での、認証、暗号化、セッション鍵およびDRM（Digital  Rights  Management［デジタル権利管理］）による権利管理といったいくつかのセキュリティ機能を可能にする。しかしながら、この技術は主として、ソフトウェア・アプリケーションではなく一般的なデータの保護に向けられており、ピンポイント的な問題に対する解決策というよりは技術ツールボックスである。
【０００６】
トムソン（Thomson）によって提供される最近のプロテクト方式は、アプリケーション基盤〔サポート〕に束縛された耐タンパー性のハードウェアの使用を通じてアプリケーション海賊行為を回避する。WO2008/129009は、プログラム・コードを記憶するメディア・パッケージを記載している。メディア・パッケージは、該メディア・パッケージ外部のプロセッサ上で実行されるよう意図されたプログラム・コードの第一の部分を記憶するデバイスと、状態および前記プログラム・コードの第二の部分を記憶する処理デバイスとを有する。前記プログラム・コードの第一および第二の部分は、前記プログラム・コードを実行するために相互作用〔対話〕するよう適応されている。前記処理デバイスは前記状態を検証する手段と、前記状態の検証により許可されることが示される場合に前記プログラム・コードの前記第二の部分を実行する手段と、前記メディア・パッケージの外部のプロセッサと通信する手段とを有する。前記処理デバイスはさらに、前記状態を前記プログラム・コードの第二の部分の実行を許可しない第一の状態から前記プログラム・コードの第二の部分の実行を許可する第二の状態に設定するために状態変化デバイスと相互作用するよう適応されたインターフェースを有する。状態変化デバイスは、有利にはたとえばスーパーマーケットにおける盗難防止システムに属する。
【０００７】
WO2009/074686はゲーム・コンソールと一緒に使うカートリッジを記述している。このカートリッジはROM、不揮発性メモリ、プロセッサおよびディスパッチャを有する。コンソール上で走るアプリケーションは、あらかじめ定義されたアドレスを使ってディスパッチャと通信しうる。該アドレスにより、ディスパッチャは場合によりROM、不揮発性メモリまたはプロセッサにアクセスできる。この発明は、アドレスがカートリッジごとに変わる場合には一般的なコピー方法が見出され得ないので、従来技術のコピープロテクトに対する改善となる。さらに、ソフトウェアをコピーするためには、プロセッサがエミュレートされねばならない。
【０００８】
提案された解決策は、光ディスク（または他の媒体）上に固定された、無接触通信手段を通じてアクセスされるセキュアな要素の使用に基づいている。欠点は、そのような解決策は、統合された無接触読み取り器〔リーダー〕をもつ専用の光学式読み取り器の使用を必要とするということである。
【０００９】
この欠点を克服するために、媒体とセキュアな要素を分離することが考えられる。しかしながら、特に、ティーンエージャーや子供が不注意に使用するとき、これではいくつかの重要な、使いやすさの点での欠点が伴う。たとえば一方または他方をなくすことがごく簡単に起こりうるからである。
【００１０】
さらに、セキュアな要素は一般に高価であり、よってシステム設計者は「セキュアなメモリ」の量を最小限にしようと努力する。したがって、セキュアな要素は、限られた量のデータ、一般には狭義にセキュリティに関係するデータしか記憶できない。これは、ユーザー構成設定データ、たとえばアバター3Dモデルをセキュアな要素に記憶することを妨げることになりうる。したがって、アプリケーション関係のデータ――デバイス構成設定、アプリケーション設定、スコア――がコンピュータのハードディスクに記憶されるので、これはアプリケーションの使用を単一のコンピュータに制限する。
【００１１】
EP1076279は異なる解決策を教示している。ここでは、コンピュータは、プラットフォームについての汎用ドングルとして機能する信頼されるモジュールを有する。ドングルはライセンシングおよび完全性（integrity）検査などを実行できる。しかしながら、この解決策は、全く可搬ではなく、信頼されるモジュールを有するコンピュータにしか適用されない。
【００１２】
US6442626は、ホストが記憶媒体に対してチャレンジ〔誰何〕を送信し、記憶媒体が応答〔レスポンス〕を返す、さらなる解決策と教示する。応答が正しい場合にのみ、ホストは記憶媒体上のデータにアクセスしうる。この解決策はたとえば、ホストが接続の前にチャレンジ・レスポンス・プロトコルを知っていることを要求する。このことも、このシステムの可搬性をきわめて低くする。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
したがって、特に標準的な、特化されたものでないプラットフォームに対し、アプリケーションの可搬性を可能にするソフトウェア・アプリケーション保護方式を提供する解決策が必要とされていることが理解できる。
【課題を解決するための手段】
【００１４】
第一の側面では、本発明は、ソフトウェア・アプリケーションの実行の方法に向けられる。記憶デバイスが、第一のメモリにおいて、コンピューティング・デバイスによって実行されたときに前記記憶デバイスを認証するコードを有するソフトウェア・アプリケーションを記憶する。記憶デバイスは、ソフトウェア・アプリケーションの完全性を検証する。完全性の検証が成功すれば、記憶デバイスはソフトウェア・アプリケーションを前記コンピューティング・デバイスに転送し、ソフトウェア・アプリケーションは前記コンピューティング・デバイスにおいて実行され、それにより記憶デバイスを認証する。ソフトウェア・アプリケーションの実行は認証が失敗した場合は止められる。
【００１５】
第一の好ましい実施形態では、記憶デバイスの認証が成功した場合に、コンピューティング・デバイスは記憶デバイスの第二のメモリ内のデータを要求する。そのデータは、実行の間に前記ソフトウェア・アプリケーションによって使用されうる。
【００１６】
第二の好ましい実施形態では、認証の間、コンピューティング・デバイスと記憶デバイスとの間にセキュアな認証されたチャネル（Secure  Authenticated  Channel）がある。
【００１７】
第二の側面では、本発明は、記憶デバイスであって、コンピューティング・デバイスによって実行されたときに前記記憶デバイスを認証するコードを有するソフトウェア・アプリケーションを記憶するよう適応された第一のメモリと、前記ソフトウェア・アプリケーションの完全性を検証し、完全性の検証が成功した場合にのみ前記ソフトウェア・アプリケーションを前記コンピューティング・デバイスに転送するよう適応されたプロセッサとを有する記憶デバイスに向けられる。
【００１８】
第一の好ましい実施形態では、本記憶デバイスはさらに、実行の間に前記ソフトウェア・アプリケーションによって使用されうるデータを記憶するよう適応された第二のメモリを有する。前記プロセッサはさらに、前記コンピューティング・デバイスのプロセッサの認証成功後に、前記コンピューティング・デバイスのプロセッサに前記第二のメモリ内のデータにアクセスすることを許容するよう適応される。
【００１９】
前記記憶デバイスのプロセッサがさらに、認証の間、前記コンピューティング・デバイスのプロセッサとセキュアな認証されたチャネルを確立するよう適応されていることが有利である。
【００２０】
本発明の好ましい特徴について、これから、限定しない例として、付属の図面を参照して説明する。
【図面の簡単な説明】
【００２１】
【図１】本発明のある好ましい実施形態に基づくシステムを示す図である。
【図２】本発明のある好ましい実施形態に基づくセキュアなデバイスとコンピュータとの間の対話の方法を示す図である。
【発明を実施するための形態】
【００２２】
本発明の主要な発明的な発想は、コンピュータ・アプリケーション（以下「アプリケーション」）、特にコンピュータ・ゲームの頒布のためのデバイスであって、コンピュータ上への恒久的な〔パーマネントな〕インストールを何ら必要としないものである。この解決策は、図１に示されているが、今日の遊動性の（nomadic〔ノマディック〕）環境に特に適合する。
【００２３】
図１は、本発明の、コンピュータ１１０およびセキュアなデバイス１２０を有するシステム１００を示している。セキュアなデバイス１２０は好ましくはUSBキーまたはU3技術を実装する他のUSBデバイスとして実装されるが、これは：
・アプリケーション・コード１２２１を記憶するための読み出し専用メモリ（ROM）１２２。
・持続的な初期化データおよび個人データ、たとえばゲームにおけるユーザーのキャラクターに関係するデータのようなデータ、を記憶するための不揮発性メモリ１２３、好ましくはフラッシュメモリ。
・好ましくは耐タンパー性ハードウェア（スマートカード・チップのような）において実装された、セキュアなプロセッサ１２１。これは、セキュアなデバイス１２０に対する唯一の入口〔エントリー・ポイント〕である。セキュアなプロセッサ１２１はいくつかの物理的なプロセッサとして具現されてもよいが、メモリ・アクセスを扱い、アプリケーション・コード１２１１の完全性をコントロールするための完全性ユニット１２１１と、アプリケーションがコンピュータ１１０上で実行されるときにアプリケーションについての認証を扱うための認証ユニット１２１２とを有する。
・コンピュータ１１０についてコントロールおよびフィードバックを提供するためのインターフェース１２５、好ましくはUSBインターフェース。
・電源オフに際して自動的に削除されるデータを記憶するための任意的な揮発性メモリ１２４。揮発性メモリ１２４は、セキュアなプロセッサ１２１のための追加的な一時記憶として、およびアプリケーションのためのセキュアな一時記憶として使われてもよい。
【００２４】
コンピュータ１１０、有利には標準的なパーソナル・コンピュータ（PC:  Personal  Computer）は、プロセッサ１１１、RAMメモリ１１２およびセキュアなデバイス１２０との通信のためのインターフェース１１３を有する。コンピュータ１１０のオペレーティング・システムおよびそのアプリケーションはRAMメモリ１１２にロードされ、そこから実行される。
【００２５】
セキュアなデバイス１２０は、コンピュータ１１０のインターフェース１１３に接続されているとき、標準的な記憶設備として認識されるよう構成される。
【００２６】
図２は、セキュアなデバイス１２０とコンピュータ１１０との間の相互作用の方法を示している。セキュアなデバイス１２０はまずコンピュータ１１０に接続される（２１０）。セキュアなデバイス１２０がコンピュータによって認識されない場合（２２０）、本方法は異常終了２９０をもって終了し、コンピュータ１１０は通信できない。
【００２７】
セキュアなデバイス１２０が認識される場合、セキュアなプロセッサ１２１はアプリケーション・コード１２２１の完全性を検証する。検証検査は、セキュアなプロセッサ１２１の完全性ユニット１２１１によって、たとえばハッシュ値を計算し、計算されたハッシュ値と記憶されている、好ましくは製造の際にハード・コードされた（hard  coded）ハッシュ値とを比較することによって、あるいは参照値と比較されるチェックサムを計算することによってなされる。完全性検査が失敗した場合、本方法は異常終了２９０をもって終了する：セキュアなプロセッサ１２１はコンピュータ１１０とのさらなる通信を拒否し、アプリケーション・コード１２２１はコンピュータ１１０にアップロードされない。他方、完全性検査が成功の場合、アプリケーション・コード１２２１はコンピュータ１１０に転送され（２４０）、そこでRAMメモリ１１２にコピーされ、アプリケーションがロードされる結果になる。
【００２８】
つまるところ、ROM  １２２に記憶されているアプリケーション・コード１２２１は、完全性を検証されて、コンピュータRAMメモリ１１２に転送される。
【００２９】
次いでアプリケーションはプロセッサ１１２によって実行される。実行の間、アプリケーションはセキュアなプロセッサ１２１と認証２５０を実行する。認証は、セキュアなプロセッサ１２１の認証ユニット１２１２および認証データと対話するアプリケーション内の認証機能およびデータを使って実行される。任意の好適な従来技術の認証プロトコル、好ましくはセキュアな認証されたチャネル（SAC）を確立するものが使用されうる。たとえば、米国特許7545932において記載されるものである。アプリケーション内の認証機能およびデータは好ましくは、たとえば従来技術のソフトウェア・プロテクト技法の使用を通じて保護される。
【００３０】
認証検査が失敗すると、本方法は異常終了２９０をもって終了する：セキュアなプロセッサ１２１はコンピュータ１１０とのいかなるさらなる通信も拒否し、アプリケーションは停止する。
【００３１】
認証が成功した場合、アプリケーションは実行され（２６０）、セキュアなプロセッサ１２１への要求を通じて、揮発性メモリ１２４および不揮発性メモリ１２３にアクセスできる。データはセキュアなプロセッサ１２１によって返される。
【００３２】
アプリケーションの実行が終了した場合、本方法は通常終了２８０（すなわち、ステップ２７０の「終了の型？」における「通常終了」）を実行する。その際、アプリケーションはセキュア・プロセッサ１２１に、ペンディングの動作があればそれを閉じるよう求め、その後、アプリケーションは自らをRAMメモリ１１２からクリアする。もしまだなされていなければ、アプリケーションはゲームにおけるユーザーのキャラクターに関係するデータのような関連するアプリケーション・パラメータを、不揮発性メモリ１２３における記憶のために転送する。次いで、セキュアなプロセッサ１１２は、好ましくは、揮発性メモリ１２４を無にし（nullify）、シャットダウンし、すべての認証クレデンシャルを無効にする。
【００３３】
セキュアなデバイス１２０がアプリケーションの実行中に異常に除去される場合（すなわち、ステップ２７０「終了の型？」における「異常終了」）、これは異常終了２９０である。この場合、揮発性メモリ１２４内のデータは失われる。次の接続（または電源投入）の際に、セキュアなプロセッサ１２１は、ペンディングの動作（たとえばメモリ・アクセス）があればそれをロール・バック（roll  back）し、以前の認証があればそれを無効にすることから始める。この段階ののち、セキュアなデバイス１２０は通常通りにリスタートする。すなわち、この接続は本方法のステップ２１０に対応する。セキュアなデバイス１２０は、新しい完全な転送プロセス２４０が行われるまで、以前にロードされたアプリケーションとのいかなる通信も受け入れない。セキュアなデバイス１２０がもはや存在していないまたは接続し直された場合には（認証が無効なので）アプリケーションはもはやセキュアなデバイス１２０と正しく相互作用できない。この場合、アプリケーションはRAMメモリ１１２から自らをクリアして終了するべきである。
【００３４】
本発明が実装する、コンピュータ・アプリケーションのためのコピー保護機構は：
・セキュアなデバイスに記憶されたアプリケーションの完全性を保証でき、
・コンピュータに関してわずらわしくない、すなわち追加的なハードウェアやソフトウェアを要求せず、
・遊動性の環境に特に適合し、異なるコンピュータの間でのアプリケーションおよびユーザー・データの可搬性を許容する、
ことが理解されるであろう。
【００３５】
システムは、少なくとも次のような主要な攻撃に対して耐性がある。
【００３６】
・インターフェースに対するソフトウェア攻撃：セキュアなデバイスはそのメモリへの直接アクセス（読み取り、書き込み、リスト）を提供しない。セキュアなプロセッサはこの種のインターフェースを実装しないであろう。
【００３７】
・セキュアなデバイスに対するハードウェア攻撃：定義により、セキュアなプロセッサは複製や修正されることができない。しかしながら、さらなるハードウェア保護なしでは、セキュアなデバイスのメモリはダンプされ、コピーされることがありうる。そのような攻撃に対する対策は存在するが、本発明の範囲外である。しかしながら、潜在的な対策を一瞥しておく。
【００３８】
○読み出し専用メモリのダンプはアプリケーション・コードのリバース・エンジニアリングを許容できる。そのようなリバース・エンジニアリングは、セキュアなプロセッサの使用をバイパスするためにアプリケーションを修正するために使われることができる。古典的な対策は、ソフトウェア保護技法を使うことである。
【００３９】
○他の揮発性および不揮発性メモリのダンプは、プライベートなアプリケーション・データへのアクセスを許容できる。古典的な対策は、好ましくはセキュアなプロセッサによって実施される、データ暗号化の使用である。
【００４０】
本発明が、ソフトウェア・アプリケーションおよび関連するユーザー・データの可搬性を可能にする、ソフトウェア・アプリケーションのためのコピー保護のためのデバイスを提供することが理解されるであろう。
【００４１】
本稿および（適切な場合には）請求項および図面において開示される各特徴は、独立して設けられてもよいし、あるいは任意の適切な組み合わせで設けられてもよい。ハードウェアで実装されるものとして記述されている特徴はソフトウェアで実装されてもよく、逆にソフトウェアで実装されるものとして記述されている特徴はハードウェアで実装されてもよい。請求項に参照符号があったとしても、単に例解のためであり、特許請求の範囲に対して限定する効果をもつものではない。
【符号の説明】
【００４２】
１００  システム
１１０  コンピュータ
１１１  プロセッサ
１１２  メモリ
１１３  I/O
１２０  セキュアなデバイス
１２１  プロセッサ
１２２  ROM
１２３  不揮発性メモリ
１２４  揮発性メモリ
１２５  I/O
１２１１  完全性
１２１２  認証
１２２１  アプリケーション
２１０  接続
２２０  認識された？
２３０  完全性OK？
２４０  データ転送
２５０  認証された？
２６０  実行
２７０  終了の型？
２８０  正常終了
２９０  異常終了
【図１】
2011150701.tif 000003
【図２】
2011150701.tif 000004
【外国語明細書】
2011150701000001.pdf