(57)【要約】【課題】リモートサーバーに対してセキュアクライアントデバイスの認証を行うための改善された方法およびシステムを提供する。【解決手段】メモリサブシステムは、不揮発性メモリにアクセスするためのメモリインターフェース、ホストと通信するためのホストインターフェース、およびプロセッサを含む。プロセッサは、ホストがによって使用され、不揮発性メモリに保存されたプログラムコードにより署名を計算し、ホストが行ったブートプロセスを検出すると、ブートプロセスが合法であるかどうかを検証し、ブートプロセスが合法であると検証された場合にのみ、ホストに署名を提供して、リモートサーバーに対して認証を行うよう構成される。【選択図】図１
2019122030.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリにアクセスするためのメモリインターフェースと、
ホストと通信するためのホストインターフェースと、
プロセッサと、
を含み、前記プロセッサが、
前記ホストによって使用され、前記不揮発性メモリに保存されたプログラムコードにより署名を計算し、
前記ホストが行ったブートプロセスを検出すると、前記ブートプロセスが合法であるかどうかを検証し、
前記ブートプロセスが合法であると検証された場合にのみ、前記ホストに前記署名を提供して、リモートサーバーに対して認証を行うよう構成されたメモリサブシステム。
【請求項２】
前記プロセッサが、前記署名を揮発性レジスタに保存し、前記ブートプロセスが合法でないことが検出されると、それに応じて前記揮発性レジスタを消去するよう構成された請求項１に記載のメモリサブシステム。
【請求項３】
前記プロセッサが、前記不揮発性メモリに対する前記ホストの１つまたはそれ以上の第１アクセスが合法であると事前に定義されたメモリアドレスの範囲にアドレス指定されているかどうかを検証することによって、前記ブートプロセスが合法であるかどうかを検証するよう構成された請求項１に記載のメモリサブシステム。
【請求項４】
前記ブートプロセスが合法であると検証された時、前記プロセッサが、合法であると事前に定義された前記メモリアドレスの範囲を修正するよう構成された請求項３に記載のメモリサブシステム。
【請求項５】
不揮発性メモリと、
ホストと、
メモリサブシステムと、
を含み、前記メモリサブシステムが、
前記ホストのために前記不揮発性メモリにアクセスし、
前記ホストによって使用され、前記不揮発性メモリに保存されたプログラムコードにより署名を計算し、
前記ホストが行ったブートプロセスを検出すると、前記ブートプロセスが合法であるかどうかを検証し、
前記ブートプロセスが合法であると検証された場合にのみ、前記ホストに前記署名を提供して、リモートサーバーに対して認証を行うよう構成されたセキュアクライアントデバイス。
【請求項６】
前記メモリサブシステムが、前記署名を揮発性レジスタに保存し、前記ブートプロセスが合法でないことが検出されると、それに応じて前記揮発性レジスタを消去するよう構成された請求項５に記載のセキュアクライアントデバイス。
【請求項７】
前記メモリサブシステムが、前記不揮発性メモリに対する前記ホストの１つまたはそれ以上の第１アクセスが合法であると事前に定義されたメモリアドレスの範囲にアドレス指定されているかどうかを検証することによって、前記ブートプロセスが合法であるかどうかを検証するよう構成された請求項５に記載のセキュアクライアントデバイス。
【請求項８】
前記ブートプロセスが合法であると検証された時、前記メモリサブシステムが、合法であると事前に定義された前記メモリアドレスの範囲を修正するよう構成された請求項７に記載のセキュアクライアントデバイス。
【請求項９】
ホストによって使用され、不揮発性メモリに保存されたプログラムコードにより署名を計算することと、
前記ホストが行ったブートプロセスを検出すると、前記ブートプロセスが合法であるかどうかを検証することと、
前記ブートプロセスが合法であると検証された場合にのみ、前記ホストに前記署名を提供して、リモートサーバーに対して認証を行うことと、
を含む方法。
【請求項１０】
前記署名を揮発性レジスタに保存し、前記ブートプロセスが合法でないことが検出されると、それに応じて前記揮発性レジスタを消去することを含む請求項９に記載の方法。
【請求項１１】
前記ブートプロセスが合法であるかどうかを検証することが、前記不揮発性メモリに対する前記ホストの１つまたはそれ以上の第１アクセスが合法であると事前に定義されたメモリアドレスの範囲にアドレス指定されているかどうかを検証することを含む請求項９に記載の方法。
【請求項１２】
前記ブートプロセスが合法であると検証された時、合法であると事前に定義された前記メモリアドレスの範囲を修正することを含む請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアな通信およびデータ保存に関するものであり、特に、セキュアクライアントデバイスの認証方法およびシステムに関するものである。
【背景技術】
【０００２】
サーバーと通信するセキュアクライアントは、サーバーに対して当人であることの認証を行い、敵対的な第三者によって不正アクセスが行われていないことを証明することが時に要求される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
この種の認証プロセスに対し、様々な解決案が提案されてきた。ある解決案は、クライアントのセキュアＩＤを作成し、サーバーに報告することを含む。例えば、トラステッド・コンピューティング・グループ（Trusted Computing Group, TCG）は、「デバイス識別子コンポジションエンジン（Device Identifier Composition Engine, DICE）」と称す解決案を「Trusted Platform Architecture Hardware Requirements for a Device Identifier Composition Engine, Family 2.0, Level 00, 20 Revision 69, December 16, 2016」に規定している（本明細書に参考として組み込まれる）。
【課題を解決するための手段】
【０００４】
本発明の１つの実施形態は、不揮発性メモリ（non-volatile memory, NVM）にアクセスするためのメモリインターフェース、ホストと通信するためのホストインターフェース、およびプロセッサを含むメモリサブシステムを提供する。プロセッサは、ホストによって使用され、不揮発性メモリに保存されたプログラムコードにより署名（signature）を計算し、ホストが行ったブート（boot）プロセスを検出すると、ブートプロセスが合法であるかどうかを検証し、ブートプロセスが合法であると検証された場合にのみ、ホストに署名を提供して、リモートサーバーに対して認証を行うよう構成される。
【０００５】
いくつかの実施形態において、プロセッサは、署名を揮発性レジスタ（volatile register）に保存し、ブートプロセスが合法でないことが検出されると、それに応じて揮発性レジスタを消去するよう構成される。いくつかの実施形態において、プロセッサは、不揮発性メモリに対するホストの１つまたはそれ以上の第１アクセスが合法であると事前に定義されたメモリアドレスの範囲にアドレス指定されているかどうかを検証することによって、ブートプロセスが合法であるかどうかを検証するよう構成される。１つの実施形態において、ブートプロセスが合法であると検証された時、プロセッサは、合法であると事前に定義されたメモリアドレスの範囲を修正するよう構成される。
【０００６】
本発明の１つの実施形態において、さらに、不揮発性メモリ、ホスト、およびメモリサブシステムを含むセキュアクライアントデバイスを提供する。メモリサブシステムは、ホストのために不揮発性メモリにアクセスし、ホストによって使用され、不揮発性メモリに保存されたプログラムコードにより署名を計算し、ホストが行ったブートプロセスを検出すると、ブートプロセスが合法であるかどうかを検証し、ブートプロセスが合法であると検証された場合にのみ、ホストに署名を提供して、リモートサーバーに対して認証を行うよう構成される。
【０００７】
本発明の１つの実施形態において、さらに、ホストによって使用され、不揮発性メモリに保存されたプログラムコードにより署名を計算することを含む方法を提供する。ホストが行ったブートプロセスを検出すると、ブートプロセスが合法であるかどうかを検証する。ブートプロセスが合法であると検証された場合にのみ、ホストに署名を提供して、リモートサーバーに対して認証を行う。
【発明の効果】
【０００８】
上述した手段で作動する時、合法のブートプロセスを行うホストのみがサーバーに正しい署名を提供することができる。違法のブートプロセスとみなされた不正ホストは、メモリサブシステムから正しい署名を受け取らないため、サーバーに対して当人であることの認証を行うことができない。これによって、高度のセキュリティーを提供する。
【０００９】
本発明の上記および他の目的、特徴、および利点をより分かり易くするため、図面と併せた幾つかの実施形態を以下に説明する。
【図面の簡単な説明】
【００１０】
添付図面は、本発明の原理がさらに理解されるために含まれており、本明細書に組み込まれ、且つその一部を構成するものである。図面は、本発明の実施形態を例示しており、説明とともに、本発明の原理を説明する役割を果たしている。
【００１１】
【図１】本発明の１つの実施形態に係るリモートサーバーと通信するセキュアクライアントデバイスを概略的に示したものである。
【図２】本発明の１つの実施形態に係るコード署名の条件付き規定の方法を概略的に示したフローチャートである。
【発明を実施するための形態】
【００１２】
ここで説明する実施形態は、リモートサーバーに対してセキュアクライアントデバイスの認証を行うための改善された方法およびシステムを提供する。開示した実施形態において、セキュアクライアントデバイスは、不揮発性メモリ、ホスト、およびホストの代わりに不揮発性メモリにアクセスするメモリサブシステムを含む。セキュアクライアントデバイスとサーバーの間の認証プロセスの一部として、ホストは、ホストの不揮発性メモリに保存されたいくつかまたは全てのプログラムコード（ソフトウェアコード）より計算される署名をサーバーに提供しなければならない。
【００１３】
このようなプロセスに潜むセキュリティ上の脆弱性は、敵対的な第三者が正しい署名にアクセスする可能性があることである。第三者は、正しい署名を使用してサーバーに当人であることの認証を行い、不正プログラムコードを使用してサーバーと通信することができる。いくつかの実施形態において、セキュアクライアントデバイスのメモリサブシステムは、セキュアクライアントデバイスのブートプロセスが合法であると検証された場合にのみホストに署名を提供することによって、この脆弱性およびその他の脆弱性を解消する。
【００１４】
１つの例示的実施形態において、メモリサブシステムは、プログラムコードにより署名を計算して、署名を揮発性レジスタに保存する。この準備工程は、セキュアクライアントデバイスがブートする前の任意の適切な時間において行うことができる。その後、メモリサブシステムは、セキュアクライアントデバイスのブートプロセスの開始を検出する。例えば、メモリサブシステムは、ホストから不揮発性メモリに発行された（１つまたはそれ以上の）第１読み込みコマンドを検出することができる。メモリサブシステムは、例えば、第１読み込みコマンドが既知のメモリアドレスにアドレス指定され、合法なブートコードを含むかどうかをチェックすることにより、ブートプロセスが合法であるかどうかを検証する。ブートプロセスが違法であると思われる場合、メモリサブシステムは、署名を保持している揮発性レジスタの内容を消去する。
【００１５】
メモリサブシステムが上述した手段で作動する時、合法のブートプロセスを行うホストのみがサーバーに正しい署名を提供することができる。違法のブートプロセスとみなされた不正ホストは、メモリサブシステムから正しい署名を受け取らないため、サーバーに対して当人であることの認証を行うことができない。
【００１６】
いくつかの実施形態において、合法のコードが合法であると事前に定義されたアドレスの範囲からブートすると、コードは、このアドレス範囲の修正（例えば、拡大）を許可される。この特徴によって、署名の消去を行わずに、より大きなアドレス範囲から合法なコードを実行し続けることができる。
【００１７】
開示した技術は、一般的に、メモリサブシステム内のハードウエアにおいて実施され、ホストに対して透過的（transparent）である。ここで説明した技術は、実施しやすいが、同時に、高度のセキュリティーを提供する。開示した技術は、様々な認証フレームワーク、例えば、ＴＣＧのＤＩＣＥフレームワークに埋め込むことができる。
システムの説明
【００１８】
図１は、本発明の１つの実施形態に係るセキュアクライアントデバイス２４が通信ネットワーク３２によりリモートサーバー２８と通信するシステム２０を概略的に示したものである。簡潔に説明するため、ここでは、セキュアクライアントデバイス２４およびリモートサーバー２８を単に「クライアント」および「サーバー」と称す。
【００１９】
１つの例示的実施形態において、クライアント２４は、モノのインターネット（internet of things, IOT）端末の一部であり、サーバー２８は、ＩｏＴアプリケーションサーバーを含む。別の例示的実施形態において、クライアント２４は、車両における自動車サブシステムの一部であり、サーバー２８は、車両の中央コンピュータを含む。さらに、クライアント２４およびサーバー２８は、任意の他の適切な応用に使用される任意の他の適切なコンピューティングプラットフォーム（computing platform）を含んでもよい。ネットワーク３２は、任意の適切な通信ネットワーク、例えば、ローカルエリアネットワーク（local-area network, LAN）、インターネット等の広域エリアネットワーク（wide-area network, WAN）、セルラーネットワーク、または２つ以上のネットワークの組み合わせを含むことができる。
【００２０】
図１の例において、クライアント２４は、ホストプロセッサ３６（単に「ホスト」と称す）、不揮発性メモリ４０、およびメモリサブシステム４４を含む。ホスト３６は、任意の適切なプロセッサを含むことができる。本例において、不揮発性メモリ４０は、フラッシュメモリを含むが、別の実施形態において、他の適切な種類の不揮発性メモリを使用することができる。不揮発性メモリ４０は、ホスト３６が実行するプログラムコード（ソフトウェアコード）を含む様々な種類のデータを保存するために使用される。メモリサブシステム４４は、ホスト３６の代わりに不揮発性メモリ４０にアクセスする。例えば、メモリサブシステム４４は、ホスト３６によって発行された読み込みおよび書き込みコマンドを受け取り、これらのコマンドを不揮発性メモリ４０で実行する。
【００２１】
図１の実施形態において、メモリサブシステム４４は、ホスト３６と通信するためのホストインターフェース４８、不揮発性メモリ４０と通信するためのメモリインターフェース５２、およびメモリサブシステムの様々なタスクを実行するよう構成されたプロセッサ５６を含む。他のタスクの中で、プロセッサ５６は、不揮発性メモリ４０に保存されたプログラムコードによりセキュアな署名を計算し、署名を揮発性レジスタ６０に保存する。プロセッサ５６は、また、ホスト３６が不揮発性メモリ４０からブートプロセスを開始したかどうかを識別し、ブートプロセスが合法であるかを検証し、合法でない場合にレジスタ６０の内容を消去する。以下、このセキュリティメカニズムについて詳しく説明する。
【００２２】
図１に示したシステム２０およびクライアント２４の構成は、概念を明確するために簡潔に示した構成例である。別の実施形態において、他の適切な構成を使用してもよい。１つの実施形態において、メモリサブシステム４４および不揮発性メモリ４０は、単一のシステムオンチップ（system on chip, SoC）、例えば、同じデバイスのパッケージに実装された各半導体ダイにおいて製造される。別の実施形態において、メモリサブシステム４４および不揮発性メモリ４０は、別々のデバイスとして製造される。明確に説明するため、開示した技術の理解に必要ない素子は、図面から除外してある。
【００２３】
様々な実施形態において、図１に示したクライアント２４の異なる素子を特定用途向けＩＣ（application specific integrated circuit, ASIC）またはフィールドプログラマブルゲートアレイ（field programmable gate array, FPGA）等の任意の適切なハードウェアを使用して実施してもよい。あるいは、クライアント２４のいくつかの機能、例えば、ホスト３６および／またはプロセッサ５６の機能をソフトウェアで、またはソフトウェアとハードウェアの素子を組み合わせて実施してもよい。
【００２４】
一般的に、ホスト３６およびプロセッサ５６は、ソフトウェアにプログラミングされ、ここで説明した機能を実行する一般用途のプロセッサである。例えば、ソフトウェアをネットワークにより電子形式で任意のプロセッサにダウンロードしてもよく、あるいは、代替的または追加的に、磁気、光学、または電子メモリ等の非一時的な有形的表現媒体（non-transitory tangible media）に提供および／または保存してもよい。
メモリサブシステムによるプログラムコード署名の条件付き規定
【００２５】
いくつかの実施形態において、クライアント２４は、サーバー２８に当人であることの認証を行い、セキュリティーが不正アクセスされていないことを証明する必要がある。認証プロセスの例において、クライアント２４は、不揮発性メモリ４０に保存されたホスト３６の少なくとも一部のプログラムコードにより署名を計算する。クライアント２４は、署名値を使用して、サーバーに当人であることの認証を行う。サーバーは、通常、クライアントによって提供された署名と署名の期待値を比較する。クライアントは、例えば、一方向の暗号化動作（cryptographic operation）をプログラムコードに適用することによって、署名を計算することができる。一方向の暗号化動作の一般例は、ＳＨＡ等のハッシング関数（hashing function）である。
【００２６】
いくつかの実施形態において、メモリサブシステム４４は、追加のセキュリティメカニズムを実行して、署名が最初のコードにのみ提供され、どの不正コードにも提供されていないことを確実にする。これらの実施形態において、メモリサブシステム４４のプロセッサ５６は、署名を揮発性レジスタ６０に保存する。ホスト３６がブートプロセスを開始したことを検出した時、プロセッサ５６は、ブートプロセスが合法であるかどうかを検証する。ブートプロセスが違法であるとプロセッサ５６が疑う場合（ホスト３６がおそらく不正アクセスされていることを意味する）、プロセッサは、レジスタ６０の内容を消去して、署名を消去する。このように、合法なブートプロセスを実行するプログラムコードのみが、真の署名値を取得する（および使用中のサーバーに認証を行う）ことができる。
【００２７】
図２は、本発明の１つの実施形態に係るメモリサブシステム４４のプロセッサ５６によって実行されたコード署名の条件付き規定の方法を概略的に示したフローチャートである。この方法の第１段階（ステップ７０〜８６）において、プロセッサ５６は、コード署名を計算し、保存する。この段階は、クライアント２４をブートする前、例えば、各ブート前および／またはソフトウェアのアップグレード後の任意の適切な時間に実行することができる。この方法の第２段階（ステップ９０〜１０２）において、プロセッサ５６は、合法なプログラムコードに対してのみ署名を利用できるようにする。
【００２８】
この方法は、キーローディング（key loading）ステップ７０において、プロセッサ５６を用いて初期化ベクトル（キー）のロードを開始し、コード署名を計算する。データ読み出し（data readout）ステップ７４において、プロセッサ５６は、ホスト３６のプログラムコードを保存するために使用された不揮発性メモリ４０の領域から次のデータ塊（data chunk）（例えば、単語またはページ）を読み込む。
【００２９】
ハッシュ（hashing）ステップ７８において、プロセッサ５６は、データ塊をハッシュする。ハッシュ操作は、増加的（incremental）である。すなわち、ステップ７８を繰り返すことにより、最近ロードしたデータ塊および全ての前データ塊の累積署名を提供する。
【００３０】
終端チェック（termination checking）ステップ８２において、プロセッサ５６は、必要なプログラムコード（署名が定義されたコード）全てがハッシュされたかどうかをチェックする。されていない場合、方法は、上述したステップ７３に戻り、不揮発性メモリ４０から次の塊のプログラムコードを読み込む。プログラムコード全体がハッシュされた後、プロセッサ５６は、署名保存ステップ８６において、取得した署名を揮発性レジスタ６０に保存する。
【００３１】
後のある時点で、プロセッサ５６は、ブート検出ステップ９０において、ホスト３６がブートプロセスの実行を開始したことを検出する。例えば、プロセッサ５６は、パワーアップ後に、ホスト３６によって不揮発性メモリ４０に発行された（１つまたはそれ以上の）第１読み込みコマンドを検出する。
【００３２】
ブート検証（boot verification）ステップ９４において、プロセッサ５６は、検出したブートプロセスが合法であるかどうかをチェックする。１つの実施形態において、プロセッサ５６は、ホスト３６の本物のブートコードを保存したメモリアドレスを認識する。パワーアップ後に、ホスト３６によって発行された第１読み込みコマンドを検出した時、プロセッサ５６は、これらの読み込みコマンドをこれらのアドレスにアドレス指定すべきであると仮定する。
【００３３】
第１読み込みコマンドが予期されたメモリアドレスに確かにアドレス指定されている場合、プロセッサ５６は、ブートプロセスが合法であると判断し、通常実行（normal execution）ステップ９８において、実行を継続する。特に、ホスト３６がメモリサブシステム４４からコード署名を後で要求する場合、プロセッサ５６は、レジスタ６０に保存された真の署名値に戻る。
【００３４】
一方、第１読み込みコマンドが予期されたメモリアドレスにアドレス指定されていない場合、プロセッサ５６は、ブートプロセスがある敵方によって不正アクセスされたと判断する。それに応じて、プロセッサ５６は、通常実行ステップ９８に戻る前に、署名消去（signature erasure）ステップ１０２において、レジスタ１０２の内容を消去する。この場合、ホスト３６は、コード署名を取得することができない。その結果、不正コードは、サーバー２８との認証プロセスを完了することができない。
【００３５】
図２の方法フローは、概念を明確するために簡潔に示したフロー例である。別の実施形態において、他の適切なフローを使用して、開示した技術を実施してもよい。例えば、プロセッサ５６は、他の基準を使用して、ホスト３６のブートプロセスが合法であるかどうかを検証してもよいため、読み込み中のメモリアドレスと関連している必要はない。
【００３６】
他の例として、上述したように、プロセッサ５６が合法なブートプロセスを完了すると、プロセッサは、コード読み出しに対して合法とみなされるアドレスの範囲を修正することができる。このようにして、プロセッサ５６は、レジスタ１０２において署名の消去を行わずに、より大きなアドレス範囲から合法なコードを実行し続けることができる。
【００３７】
いくつかの実施形態において、ブートプロセスを検証し、レジスタ６０を消去するプロセッサ５６の機能は、メモリサブシステムの専用ハードウェアロジックを使用することによって少なくとも実施され、回避しにくくする。
【００３８】
上述した実施形態は例示のために引用され、本発明は上記に特に示され記述されたものに限定されるものではないことが理解されるであろう。むしろ、本発明の範囲は、上述した様々な特徴の組み合わせおよび部分的組み合わせの両方とともに、上述した説明を読むことで当業者が思いつくであろう、先行技術には開示されていない変更と修正も含む。参照により本特許出願に組み込まれる文献は、これらの組み込まれた文献においていずれかの用語が、本明細書において明示的または暗示的になされた定義と矛盾して定義されている場合には本明細書における定義のみを考慮するものとする点を除き、本出願の一部とみなすものとする。
【産業上の利用可能性】
【００３９】
本発明は、セキュアクライアントデバイスの認証方法およびシステムを提供する。合法のブートプロセスを行うホストのみがサーバーに正しい署名を提供することができる。違法のブートプロセスとみなされた不正ホストは、メモリサブシステムから正しい署名を受け取らないため、サーバーに対して当人であることの認証を行うことができない。これによって、高度のセキュリティーを提供する。
【符号の説明】
【００４０】
２０：システム
２４：セキュアクライアントデバイス
２８：リモートサーバー
３２：通信ネットワーク
３６：ホストプロセッサ
４０：不揮発性メモリ
４４：メモリサブシステム
４８：ホストインターフェース
５６：プロセッサ
６０：揮発性レジスタ
７０、７４、７８、８２、８６、９０、９４、９８、１０２：ステップ
【図１】
2019122030.tif 000003
【図２】
2019122030.tif 000004
【外国語明細書】
2019122030000001.pdf