特許第5767657号(P5767657)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ レノボ・シンガポール・プライベート・リミテッドの特許一覧

特許5767657不揮発性メモリが記憶するデータを保護する方法およびコンピュータ
<>
  • 特許5767657-不揮発性メモリが記憶するデータを保護する方法およびコンピュータ 図000002
  • 特許5767657-不揮発性メモリが記憶するデータを保護する方法およびコンピュータ 図000003
  • 特許5767657-不揮発性メモリが記憶するデータを保護する方法およびコンピュータ 図000004
  • 特許5767657-不揮発性メモリが記憶するデータを保護する方法およびコンピュータ 図000005
  • 特許5767657-不揮発性メモリが記憶するデータを保護する方法およびコンピュータ 図000006
  • 特許5767657-不揮発性メモリが記憶するデータを保護する方法およびコンピュータ 図000007
  • 特許5767657-不揮発性メモリが記憶するデータを保護する方法およびコンピュータ 図000008
  • 特許5767657-不揮発性メモリが記憶するデータを保護する方法およびコンピュータ 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5767657
(24)【登録日】2015年6月26日
(45)【発行日】2015年8月19日
(54)【発明の名称】不揮発性メモリが記憶するデータを保護する方法およびコンピュータ
(51)【国際特許分類】
   G06F 21/60 20130101AFI20150730BHJP
   G06F 21/88 20130101ALI20150730BHJP
【FI】
   G06F21/60
   G06F21/88
【請求項の数】9
【全頁数】18
(21)【出願番号】特願2013-15598(P2013-15598)
(22)【出願日】2013年1月30日
(65)【公開番号】特開2014-146256(P2014-146256A)
(43)【公開日】2014年8月14日
【審査請求日】2014年1月17日
(73)【特許権者】
【識別番号】505205731
【氏名又は名称】レノボ・シンガポール・プライベート・リミテッド
(74)【代理人】
【識別番号】100106699
【弁理士】
【氏名又は名称】渡部 弘道
(74)【代理人】
【識別番号】100132595
【弁理士】
【氏名又は名称】袴田 眞志
(72)【発明者】
【氏名】塚本 泰通
(72)【発明者】
【氏名】米持 健信
(72)【発明者】
【氏名】宮口 康宏
【審査官】 脇岡 剛
(56)【参考文献】
【文献】 特開平09−311822(JP,A)
【文献】 特開平11−175406(JP,A)
【文献】 特開2005−222383(JP,A)
【文献】 特開2006−127648(JP,A)
【文献】 特開2011−048861(JP,A)
【文献】 特開2007−074090(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60
G06F 21/88
(57)【特許請求の範囲】
【請求項1】
コンピュータの筐体に収納されたメモリ・モジュールに含まれる不揮発性メモリが記憶するデータを前記コンピュータのシステムが保護する方法であって、
初期化時に前記システムが前記メモリ・モジュールと識別情報を共有するステップと、
前記システムがパワー・オフ状態の間に前記メモリ・モジュールが取り外された可能性を示すアクセス信号を生成するステップと、
前記アクセス信号に応答して前記不揮発性メモリにタンパー・ビットを設定するステップと、
ブート時に前記システムが前記タンパー・ビットを検査するステップと、
前記タンパー・ビットの設定を検出したときに前記システムが前記識別情報で前記メモリ・モジュールを認証するステップと、
前記認証が失敗したときに前記メモリ・モジュールに前記不揮発性メモリのデータを消去するコマンドを送り、前記認証が成功したときに前記不揮発性メモリに対するアクセスを可能にするステップと
を有する方法。
【請求項2】
前記メモリ・モジュールが磁気ディスク装置のキャッシュとして機能するキャッシュ・モジュールである請求項1に記載の方法。
【請求項3】
前記アクセス信号が、前記筐体が開放されたことを示す信号である請求項1または請求項2に記載の方法。
【請求項4】
コンピュータの筐体に収納されたメモリ・モジュールに含まれる不揮発性メモリが記憶するデータを前記コンピュータのシステムが保護する方法であって、
初期化時に前記システムが前記メモリ・モジュールと識別情報を共有するステップと、
前記初期化時に前記メモリ・モジュールが搭載する揮発性メモリに前記システムから電力が供給されていることを示すパワー・ビットを設定するステップと
ブート時に前記システムが前記パワー・ビットを検査するステップと、
前記パワー・ビットの解除を検出したときに前記システムが前記識別情報で前記メモリ・モジュールを認証するステップと、
前記認証が失敗したときに前記メモリ・モジュールに前記不揮発性メモリのデータを消去するコマンドを送り、前記認証が成功したときに前記不揮発性メモリに対するアクセスを可能にするステップと
を有する方法。
【請求項5】
デバイスを収納するシステム筐体と、
オペレーティング・システムを実行するプロセッサと、
不揮発性メモリを含むメモリ・モジュールと、
前記メモリ・モジュールが取り外された可能性を示すアクセス信号を生成するセンサと、
前記アクセス信号に応答して前記メモリ・モジュールにタンパー・ビットを設定し、ブート時に前記タンパー・ビットの設定を検出したときに前記メモリ・モジュールを認証し、該認証が成功したときに前記メモリ・モジュールに対するアクセスを可能にし、前記認証が失敗したときに前記不揮発性メモリのデータを消去するコントローラと
を有するコンピュータ。
【請求項6】
前記コントローラはブート時に前記タンパー・ビットの解除を検出したときに前記認証をしないで前記メモリ・モジュールに対するアクセスを可能にする請求項5に記載のコンピュータ。
【請求項7】
前記コントローラは、RTC(Real Time Clock)の電力源を利用してシステムに前記タンパー・ビットを設定する請求項5または請求項6に記載のコンピュータ。
【請求項8】
デバイスを収納するシステム筐体と、
オペレーティング・システムを実行するプロセッサと、
不揮発性メモリと前記コンピュータから電力が供給されていることを示すパワー・ビットを設定した揮発性メモリを含むメモリ・モジュールと、
ブート時に前記パワー・ビットの解除を検出したときに前記メモリ・モジュールを認証し、該認証が成功したときに前記メモリ・モジュールに対するアクセスを可能にし、前記認証が失敗したときに前記不揮発性メモリのデータを消去するコントローラと
を有するコンピュータ。
【請求項9】
前記コントローラはブート時に前記パワー・ビットの設定を検出したときに前記認証をしないで前記メモリ・モジュールに対するアクセスを可能にする請求項8に記載のコンピュータ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリが記憶するデータの盗聴を防止する技術に関し、さらに詳細にはコンピュータから取り外された不揮発性メモリのデータに対する盗聴を確実に防止する技術に関する。
【背景技術】
【0002】
コンピュータの大容量記憶装置として、ハードディスク・ドライブ(HDD)とそのキャッシュとして機能する不揮発性半導体メモリ(以下、不揮発性メモリ)を組み合わせたシステムを採用する場合がある。このようなシステムは、ビット単価の安いHDDとビット単価は高いが高速アクセスが可能な不揮発性メモリのそれぞれの利点を兼ね備えた記憶装置として機能する。この不揮発性メモリには、ハイバネーション・データおよびHDDの磁気ディスクと同期したデータが記憶される。
【0003】
不揮発性メモリは比較的寿命が短いことから消耗品と考えられており、ユーザが交換できるようにコネクタでマザーボードに接続する。その結果、使用済みの不揮発性メモリがシステムから取り外されて不適切な方法で廃棄処分がされると重要なデータが漏洩する危険性がある。あるいは、第3者がコンピュータから不揮発性メモリを不正に抜き取ってデータを盗聴する可能性もある。
【0004】
特許文献1は、取引処理装置本体のカバー・オープンを検知すると秘密情報を記憶したRAMをアクセス不能にする発明を開示する。この発明は、カバー・オープンを検知してRAMの電力供給を停止する方法ではRAMのデータが消失する問題を改善することを目的としている。特許文献2は、コンピュータからHDDが不正に取り外されたことを検出してHDDに記憶されたデータを消去する発明を開示する。HDDはコンピュータから取り外されたときに電源を供給する電池を搭載し、不正な取り外しであると判断したときにデータを消去する。特許文献3は、システムとHDDが秘密鍵を共有して相互認証を行う発明を開示する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001−184567号公報
【特許文献2】特開平11−175406号公報
【特許文献3】特開2003−18151号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
キャッシュに利用する不揮発性メモリは、NAND素子とコントローラが回路基板に実装された状態でキャッシュ・モジュールとして構成されている。そしてキャッシュ・モジュールに、HDDやSSDと同様にパスワードを設定することは可能である。しかし、パスワードが設定されたキャッシュ・モジュールを第3者が完全に支配できるときは、総当たり攻撃や辞書攻撃などのさまざまな攻撃を繰り返すことができるため、パスワードが解読される危険がある。また、パスワードを設定すると、キャッシュ・モジュール取り外さないで継続的に使用するときにブートごとに認証のための時間を費やすためブート時間の遅延をもたらす。
【0007】
最も確実に盗聴を防止する方法は、コンピュータに装着されているキャッシュ・モジュールが取り外されたときに、記憶されているデータを消去することである。取り外された後にデータを消去するためには電源を必要とするが、特許文献2に記載する発明では、HDDが搭載する電池を電源としてデータの消去をしている。しかし、電池を搭載しないキャッシュ・モジュールでは、取り外された後にデータを消去することができない。また、通常キャッシュ・モジュールの取り外しは、コンピュータがキャッシュ・モジュールに電源を供給しないパワー・オフ状態や、コンピュータから完全に電源を取り除いた状態で行われるため、システムからの電源を確保することも簡単にはできない。たとえ電源が確保できるとしても、キャッシュ・モジュールが取り外される前にデータを消去する必要がある。
【0008】
そこで本発明の目的は、システムから取り外された不揮発性メモリのデータの盗聴を防止する方法を提供することにある。さらに本発明の目的は、ブート時間の遅延をもたらさないようにしながら盗聴を防止する方法を提供することにある。さらに本発明の目的は、総当たり攻撃や辞書攻撃などに対して確実に盗聴を防止する方法を提供することにある。さらに本発明の目的はそのような方法を実現するコンピュータおよびメモリ・モジュールを提供することにある。
【課題を解決するための手段】
【0009】
本発明は、コンピュータの筐体に収納されたメモリ・モジュールに含まれる不揮発性メモリが記憶するデータの盗聴を防止する方法を提供する。本発明の一の態様では主としてシステムがデータの保護を実行する。システムがパワー・オフ状態の間にメモリ・モジュールが取り外された可能性を示すアクセス信号を生成する。アクセス信号に応答してメモリ・モジュールと信号を送るために必要な少なくともシステムの一部に電源を投入する。アクセス信号に応答してシステムが不揮発性メモリのデータを消去するための消去信号をメモリ・モジュールに送る。電源が投入されたメモリ・モジュールは不揮発性メモリが記憶するデータを消去する。
【0010】
上記手順によればシステムがパワー・オフ状態であってもメモリ・モジュールが取り外される前に不揮発性メモリのデータを消去できるため盗聴を確実に防止できる。メモリ・モジュールは磁気ディスク装置のキャッシュとして機能するキャッシュ・モジュールとすることができる。データの消去に代えてメモリ・モジュールが一切のアクセスを禁止するようにロックしてもよい。消去信号に代えて、BIOSを実行するプロセッサがコマンドを送ってデータを消去してもよいが、消去信号をブート中にハードウェア・レベルで送ると短時間で消去できるため、アクセス信号が生成されてからメモリ・モジュールが取り外されるまでの間に確実にデータを消去できる。
【0011】
アクセス信号は、筐体が開放されたことを示す信号であってよい。この場合、筐体の開放からメモリ・モジュールの取り外しまでは比較的長い時間を必要とするので、データを消去するための時間を確保することができる。アクセス信号に応答してメモリ・モジュールが搭載する不揮発性メモリにタンパー・ビットを設定し、ブート時にシステムがタンパー・ビットを検査し、タンパー・ビットの設定を検出したときにメモリ・モジュールに不揮発性メモリのデータを消去するコマンドを送ることができる。
【0012】
初期化時にシステムがメモリ・モジュールと識別情報を共有し、ブート時にタンパー・ビットの設定を検出したときにシステムが識別情報でメモリ・モジュールを認証し、認証が失敗したときにメモリ・モジュールにデータを消去するコマンドを送り、認証が成功したときに不揮発性メモリに対するアクセスを可能にすることができる。認証が失敗したときは、他のコンピュータで使用されていたメモリ・モジュールが装着されたと想定できるため、データを消去して当該コンピュータでメモリ・モジュールを利用できるようにする。
【0013】
また認証が成功したときは、識別情報でバインディングされていたメモリ・モジュールが一旦取り外されたあとに再度装着されたりメモリ・モジュールを取り外すことなくアクセス信号が消滅したりしたと想定できるため、盗聴ではないとして扱って不揮発性メモリのデータを確保することができる。タンパー・ビットを検出しないときは、認証をしないで不揮発性メモリにアクセスできるようにすれば、キャッシュ・モジュールが取り外されない多くのブートにおいてブート時間が遅延することを防ぐことができる。
【0014】
アクセス信号は、メモリ・モジュールにシステムが供給する電力が停止したことを示す信号とすることができる。通常筐体を開放してメモリ・モジュールを取り外すときはすべての電源を取り除くようになっているので、この信号をアクセス信号に利用することができる。携帯式コンピュータではこのアクセス信号が、AC/DCアダプタが取り外されかつ電池が取り外されたときに生成される。
【0015】
初期化時にメモリ・モジュールが搭載する揮発性メモリにシステムから電力が供給されていることを示すパワー・ビットを設定し、ブート時にシステムがパワー・ビットを検査し、パワー・ビットの解除を検出したときにメモリ・モジュールに不揮発性メモリのデータを消去するコマンドを送ることができる。パワー・ビットはメモリ・モジュールが取り外されたときには必ず解除されるので、確実にデータを消去できるようになる。初期化時にシステムがメモリ・モジュールと識別情報を共有し、パワー・ビットの解除を検出したときにシステムが識別情報でメモリ・モジュールを認証し、認証が失敗したときにメモリ・モジュールにデータを消去するコマンドを送り、認証が成功したときに不揮発性メモリに対するアクセスを可能にすることができる。
【0016】
本発明の他の態様は、主としてメモリ・モジュールがデータの保護を実行する。メモリ・モジュールはパワー・オフ状態でメモリ・モジュールが取り外された可能性を示すアクセス信号をシステムから受け取る。アクセス信号に応答して不揮発性メモリにタンパー・ビットを設定する。ブート時にメモリ・モジュールがタンパー・ビットを検査する。タンパー・ビットの設定を検出したときにメモリ・モジュールが不揮発性メモリのデータを消去する。
【0017】
上記の構成によれば、あるコンピュータで使用されていたメモリ・モジュールが他のコンピュータに装着された場合に、メモリ・モジュールが自律的にデータを消去するため、再取り付け先のシステムの環境にかかわらずデータを保護することができる。初期化時にメモリ・モジュールがシステムと識別情報を共有し、タンパー・ビットの設定を検出したときにメモリ・モジュールが識別情報でシステムを認証し、認証が失敗したときにメモリ・モジュールが不揮発性メモリのデータを消去し、認証が成功したときにシステムのアクセスを許可することができる。
【0018】
この構成により、データの保護を図りながら消去後のメモリ・モジュールの再利用を可能にすることができる。初期化時に、メモリ・モジュールにシステムから電力が供給されていることを示すパワー・ビットを揮発性メモリに設定し、ブート時にメモリ・モジュールがパワー・ビットを検査し、パワー・ビットの解除を検出したときにメモリ・モジュールが不揮発性メモリのデータを消去することができる。
【発明の効果】
【0019】
本発明により、システムから取り外された不揮発性メモリのデータの盗聴を防止する方法を提供することができた。さらに本発明により、ブート時間の遅延をもたらさないようにしながら盗聴を防止する方法を提供することができた。さらに本発明により、総当たり攻撃や辞書攻撃などに対する盗聴を確実に防止する方法を提供することができた。さらに本発明によりそのような方法を実現するコンピュータおよびメモリ・モジュールを提供することができた。
【図面の簡単な説明】
【0020】
図1】本実施の形態にかかるノートPC10の主要な構成を示す機能ブロック図である。
図2】ノートPC10のボトム・カバー57を開けたときの状態を説明する図である。
図3】キャッシュ・モジュール21に対するタンパーを検出するハードウェアの構成を説明する図である。
図4】BIOS_ROM23のデータ構造を示す図である。
図5】BIOSコード107がキャッシュ・モジュール21を初期化する手順を示すフローチャートである。
図6】ノートPC10がタンパーを検出してデータを消去する手順を説明するフローチャートである。
図7】キャッシュ・モジュール21の抜き取りがない場合のブートの手順を説明する図である。
図8】キャッシュ・モジュール21が抜き取られた場合のブートの手順を説明する図である。
【発明を実施するための形態】
【0021】
[ノートPCの構成とパワー・ステート]
図1は、ノートPC10のハードウェア構成の一例を説明するための機能ブロック図で、図2はボトム・カバー57を開けたときの状態を説明する図で、図3はキャッシュ・モジュール21に対するタンパーを検出する構成を説明する図である。多くのハードウェアの構成は周知であるため、ここでは本発明の理解に必要な範囲で説明する。最初にノートPC10のパワー・ステートについて説明する。ノートPC10は、ACPI(Advanced Configuration and Power Interface)の省電力機能に対応している。ACPIでは、S1ステートからS4ステートまでの4つのスリーピング・ステート(スリープ状態)、S0ステート(パワー・オン状態)、およびS5ステート(パワー・オフ状態またはソフト・オフ状態)を定義している。
【0022】
ACPIのスリーピング・ステートのなかでノートPC10は、一例としてS3ステートとS4ステートだけを定義しているが他のスリーピング・ステートを定義してもよい。また、S5ステートは独立して定義しないでS4ステートの中に含めるようにしてもよい。S3ステート(サスペンド状態)では、メイン・メモリ13の記憶保持とノートPC10の電源を投入するのに必要なデバイス以外のデバイスに対する電力を停止する。
【0023】
S4ステート(ハイバネーション状態)は、ACPIでサポートされるスリーピング・ステートの中で最もレイテンシィが長く、かつ消費電力が少ないパワー・ステートである。ノートPC10がパワー・オン状態からハイバネーション状態に遷移する際には、OSがHDD19またはキャッシュ・モジュール21のハイバネーション領域などにメイン・メモリ13が記憶するハイバネーション・データを格納してからパワー・コントローラ29などの電源の投入に必要なデバイス以外のデバイスに対する電力を停止する。
【0024】
S5ステートは、OSがハイバネーション・データをHDD23などに格納しない点を除いては基本的に電力を供給するデバイスの範囲はS4ステートと同じである。さらに、AC/DCアダプタ39および電池ユニット35が外されてボタン電池を除く電力源がない状態をG3ステート(メカニカル・オフ状態)という。G3ステートは、ボトム・カバー57を外してシステム筐体53の内部に物理的にアクセスしても安全な状態に相当する。
【0025】
図2(A)は、ノートPC10の外形を示す斜視図で、図2(B)はボトム・カバー57を外した状態のシステム筐体53の内部を示す底面図である。ノートPC10は、ディスプレイ15を実装するディスプレイ筐体51と表面にキーボード27を実装し内部に多くのデバイスを収納するシステム筐体53がヒンジ機構55a、55bで開閉できるように結合されている。
【0026】
システム筐体53の底面には、ネジでボトム・カバー57が取り付けられている。ボトム・カバー57を取り外すとマザーボード61、HDD19などが露出する。マザーボード61には、CPU11、チップ・セット17、エンベデッド・コントローラ(EC)25、キャッシュ・モジュール21、および電池ユニット35などが実装されている。
【0027】
キャッシュ・モジュール21はユーザが容易に交換できるようにコネクタでマザーボード61に実装されている。したがって、耐用年数が経過したような場合にユーザはボトム・カバー57を開放してキャッシュ・モジュール21を交換することができる。システム筐体53には、ボトム・カバー57が開放されたときに信号を出力するカバー・センサ33が取り付けられている。カバー・センサ33は特に種類を限定する必要はなく、ボトム・カバー57とシステム筐体53が密着および離間している状態を検出できるものであれば、磁気センサ、静電容量センサ、または機械式スイッチなどを採用することができる。
【0028】
図1において、チップ・セットとして構成されるプラットフォーム・コントロール・ハブ(PCH)17にはCPU11、HDD19、キャッシュ・モジュール21、BIOS_ROM23およびEC25が接続されている。CPU11にはメイン・メモリ13およびLCD15が接続されている。PCH17は、さまざまな規格のインターフェース機能を備えており、図1では代表的にSATAコントローラにHDD19およびキャッシュ・モジュール21が接続され、SPIにBIOS_ROM23が接続され、LPCにEC25が接続されている。キャッシュ・モジュール21は、HDD19に対するキャッシュとして機能する不揮発性メモリを含む。
【0029】
EC25には、キーボード27およびパワー・コントローラ29が接続されている。EC25は、CPU、ROM、RAMなどで構成されたマイクロ・コンピュータである。EC25は、ノートPC10の内部の動作環境の管理にかかるプログラムをCPU11とは独立して実行することができる。EC25は、パワー・コントローラ33を通じてDC/DCコンバータ37の動作を制御する。
【0030】
パワー・コントローラ29には、パワー・ボタン31、カバー・センサ33およびDC/DCコンバータ37の制御回路が接続されている。パワー・コントローラ29は、EC25からの指示に基づいてDC/DCコンバータ37を制御するワイヤード・ロジックのディジタル制御回路(ASIC)である。パワー・コントローラ29は、ノートPC10をレジュームさせるためにスリープ状態およびパワー・オフ状態でも電力が維持される。
【0031】
スリープ状態またはパワー・オフ状態のときにパワー・ボタン31の押下またはカバー・センサ33の動作があると、パワー・コントローラ29は、システムをパワー・オン状態にするために必要な各デバイスに電力を供給する。AC/DCアダプタ39および電池ユニット35は、ノートPC10の電力源である。DC/DCコンバータ37は、AC/DCアダプタ39または電池パック35から供給される直流電圧を、ノートPC10を動作させるために必要な複数の電圧に変換し、さらにパワー・ステートに応じて定義された電力供給区分に基づいて各々のデバイスに電力を供給する。
【0032】
図3は、タンパー検出に関連するデバイスを詳細に示している。キャッシュ・モジュール21は、基板にNAND型フラッシュ・メモリ(以下、フラッシュ・メモリ)81、mSATAのインターフェースを含むコントローラ86、および揮発性メモリ88が実装されている。ただし、本発明はタンパー・ビット85でタンパーを検知できるため、揮発性メモリ88を実装しないキャッシュ・モジュールに適用することもできる。フラッシュ・メモリ81はデータ領域83とシステム領域に区分されている。データ領域83は一例として、HDD19のキャッシュとして利用するキャッシュ領域とS4ステートに遷移させるときのハイバネーション・データ記憶するハイバネーション領域の2つのパーティションで区切られている。
【0033】
PCH17は、RTC(Real Time Clock)とキャッシュ・モードでの動作を制御するキャッシュ・コントローラを含む。RTCとPCH17の一部の機能には、ボタン電池で構成されたRTC電源系統16から電力が供給される。RTC電源系統16の電力は、ノートPC10がG3ステートのときにも確保される。キャッシュ・コントローラの基本的な動作では、キャッシュ領域をライト・スルー方式に設定し、ハイバネーション領域をライト・バック方式に設定する。いずれのキャッシュ・モードに設定されても、フラッシュ・メモリ81にはシステムが処理したデータが残る。フラッシュ・メモリ81のシステム領域は、CPU11がアクセスできないセキュアな領域である。システム領域には、識別情報109b、共通鍵111b、およびタンパー・ビット85が格納されている。
【0034】
識別情報109bは、BIOSコード107(図4参照)とキャッシュ・モジュール21が相互認証をするためのデータである。共通鍵111bは識別情報109bを暗号化したり、BIOSコード107から受け取った暗号化された識別情報109a(図4参照)を復号したりする際にコントローラ86が使用する。タンパー・ビット85は、カバー・センサ33の動作に応じてEC25からライン95を通じてタンパー信号を受け取ったときにコントローラ86が設定する。他の例として、RTC電源系統16からカバー・センサ33に電力を供給することで、G3ステートでボトム・カバー57が開放されたときにPCH17のセキュアな記憶領域にタンパー・ビットを設定してもよい。なお、識別情報109b、共通鍵111b、タンパー・ビット85はフラッシュ・メモリ81とは異なるものとして用意したセキュアな不揮発性メモリに格納するようにしてもよい。
【0035】
コントローラ86は、CPU、RAM、ROM、および暗号エンジンを含み、フラッシュ・メモリ81に対するシステムからのリード/ライト・アクセスを制御したり、盗聴を防止するためのさまざまな処理をしたりする。コントローラ86は、BIOSコード107から取得した識別情報109aとフラッシュ・メモリ81が格納する識別情報109bでBIOSコード107の認証を行う。
【0036】
コントローラ86は、共通鍵111bで識別情報109bを暗号化してBIOSコード107に送ったり、BIOSコード107により共通鍵111aで暗号化された識別情報109aを共通鍵111bで復号したりする。識別情報109bは、BIOS_ROM23に格納された識別情報109aと同じデータである。揮発性メモリ88のパワー・ビット87は、DC/DCコンバータ37のS5/S4系統からライン99を通じて電力が供給されているときにシステムの正当性を認証したコントローラ86により設定され、電力が停止すると自動的に解除される。
【0037】
コントローラ86は、PCH17とSATAの信号ライン91で接続され、EC25およびDC/DCコンバータ37のS0系統とSATAの電力ライン93、97で接続される。EC25は、タンパーを検出したときにタンパー信号を送るために、SATAのラインに追加したライン95でキャッシュ・コントローラ86に接続されている。EC25はSATAの電力ライン93を通じてコントローラ86に1ワイヤ方式のプロトコルで消去信号を送る。
【0038】
DC/DCコンバータ37は、システムのパワー・ステートに対応して、S5/S4系統、S3系統、およびS0系統に区分されている。S5/S4系統は、S5ステートまたはS4ステートのときに電力を供給する系統である。S3系統はS3ステートのときにS5/S4系統に加えて電力を供給する系統である。S0系統はS0ステートのときに、S5/S4系統、S3系統に加えて電力を供給する系統である。
【0039】
システムがS5ステートまたはS4ステートのときは、パワー・コントローラ29、PCH17の一部および揮発性メモリ88に電力が供給される。S3ステートのときはEC25、PCH17の一部などに電力が供給される。S0ステートのときはすべてのデバイスに電力が供給される。AC/DCアダプタ39および電池ユニット35が取り外されてシステムがG3ステートに遷移したときは、すべての系統が停止する。
【0040】
〔BIOS_ROMの構成〕
図4は、BIOS_ROM23のデータ構造を説明する図である。BIOS_ROM23は、BIOSコードを格納するBIOS領域101とBIOSコードだけが利用するデータ領域103を含む。BIOS領域101にはBIOSコードが格納され、データ領域103には、識別情報109a、共通鍵111aが格納される。BIOS_ROM23はBIOSコードの書き換えに伴うリスクを軽減するためにブート・ブロック方式を採用している。BIOS領域101はブート・ブロックとシステム・ブロックに分かれている。
【0041】
ブート・ブロックは書き込み保護がされている記憶領域でここに格納されたBIOSコードはTPM(Trusted Platform Module )の仕様書に規定するCRTM(Core Root of Trust for Measurement)105として扱われ特別な権限がないと書き換えができないようになっている。CRTM105は基本デバイスの初期化コードおよび一貫性認証コードなどを含む。CRTM105は、BIOSコードの中で一貫性のある部分として構成され、ノートPC10がブートするときに必ず最初に実行される。ノートPC10のプラットフォームに関するすべての一貫性の計測はCRTMの一貫性認証コードにより行われる。
【0042】
CRTM105以外のBIOSコード107は、POSTコード、認証コード、暗号モジュール、セットアップ・コードおよびI/Oコードなどを含む。POSTコードは、スリープ状態またはパワー・オフ状態からブートをする際に、デバイスのPOST処理を行う。認証コードは、パワー・オン・パスワード、HDDパスワード、および管理者パスワードなどのBIOSパスワードの設定のためのプロンプトをLCD15に表示したり、入力されたパスワードを認証しまたはHDD19に送ってロックを解除したりする。
【0043】
認証コードはさらに、キャッシュ・モジュール21から取得した識別情報109bでキャッシュ・モジュール21の認証を行う。暗号モジュールは、共通鍵暗号方式に使用する共通鍵111a、111bを生成したり、共通鍵111aで識別情報109aを暗号化してコントローラ86に送ったり、コントローラ86により共通鍵111bで暗号化された識別情報109bを共通鍵111aで復号したりする。セットアップ・コードは、ブートの途中でユーザがファンクション・キーを押下したときに実行されユーザがデバイスの設定をする。I/Oコードは、CPU11がリアル・モードで動作する際に周辺デバイスにアクセスするための入出力のインターフェースを提供する。
【0044】
[初期化の手順]
図5は、BIOSコード107がキャッシュ・モジュール21を初期化する手順を示すフローチャートである。ブロック201から215まではBIOSコード107の処理を示し、ブロック301から311まではコントローラ86の処理を示している。ここではマザーボード61に新しいキャッシュ・モジュール21が取り付けられたと想定する。S5/S4ステートのときにパワー・ボタン31が押下されると、ブロック201でS0ステートに遷移するためのデバイスに電力が供給されてシステムはブートを開始する。
【0045】
ブロック301でフラッシュ・メモリ81には、識別情報109bおよび共通鍵111bは格納されておらず、タンパー・ビット85およびパワー・ビット87は不定である。ブートを開始するとCPU11がCRTM105およびBIOSコード107を実行してPOSTを開始する。ブロック203でユーザはブートの初期の段階でファンクション・キーを押してセットアップ・コードを実行しキャッシュ・モジュール21の初期化を行う。
【0046】
すでにバインディングが終わっているため初期化が必要ないと判断した場合は、ファンクション・キーを押さないで図7のブロック603に移行する。ユーザによってキャッシュ・モジュール21の初期化が選択されると、BIOSコード107はブロック205でキャッシュ・モジュール21とPCH17のインターフェースを初期化してからキャッシュ・モジュール21に識別情報を要求して確認する。新しいキャッシュ・モジュール2はバインディングされていないことが明らかなのでこの手順は省略してもよい。
【0047】
識別情報109bを受け取ることができないためキャッシュ・モジュール21を認証できないことを確認したBIOSコード107はブロック207でコントローラ86にリセット・コマンドを送る。ブロック303でリセット・コマンドを受け取ったコントローラ86はデータ領域83を初期化してデータを消去する。データの消去は、データ領域83にランダムなデータを書き込むことで元のデータを再現できないようにする行為も含む。
【0048】
ブロック209でBIOSコード107は、キャッシュ・モジュール21とバインディングするために、識別情報109aと共通鍵暗号方式に使用する共通鍵111a、111bを生成する。共通鍵111aはBIOSコード107が使用し共通鍵111bはコントローラ86が使用する。なお、BIOSコード107は共通鍵111a、111bに代えて公開鍵暗号方式に使用する秘密鍵と公開鍵のペアを生成してもよい。この場合、共通鍵111aに秘密鍵を対応させ、共通鍵111bに公開鍵を対応させて公開鍵はコントローラ86がセキュアに保持する。
【0049】
識別情報109aは、BIOSコード107が生成した乱数や現在の時刻などの第3者が容易に想像できない秘密情報とすることが望ましい。BIOSコード107は、識別情報109aと共通鍵111aをデータ領域103に格納する。ブロック211でBIOSコード107は、識別情報109aと共通鍵111bをキャッシュ・モジュール21に送る。ブロック305でコントローラ86は受け取った識別情報109aと共通鍵111bをフラッシュ・メモリ81に格納する。なお、格納された状態の識別情報109aは説明の便宜上識別情報109bと表記する。すなわち、識別情報109aと識別情報109bは同じデータである。
【0050】
ブロック307でコントローラ86はフラッシュ・メモリ81のタンパー・ビット85を解除し、揮発性メモリ88にパワー・ビット87を設定する。パワー・ビット87はS5/S4系統の電源が停止したときに自動的に解除されるが、コントローラ86は識別情報109aをBIOSコード107から受け取って認証しない限り再設定しない。したがって不正なシステムがパワー・ビット87を設定することはできず、パワー・ビット87が解除されていることは、バインディングのあとにシステムがG3ステートに遷移したか、またはキャッシュ・モジュール21がマザーボード61から取り外されたことを示す。
【0051】
ブロック309でコントローラ86はキャッシュ・モジュール21の自主検査が終了するとブロック311でBIOSコード107にレディ信号を送る。レディ信号を受け取ったBIOSコード107はブロック213でキャッシュ・モジュール21を認識する。以後、システムはキャッシュ・モジュール21を利用できるようになる。その後、ブートはOSの処理に引き継がれてブロック215で終了しシステムはS0ステートに遷移する。
【0052】
[タンパーの検出手順]
図6は、パワー・オフ状態のシステムがタンパーを検出してデータを消去する手順を説明するフローチャートである。本明細書においてタンパーは、マザーボード61からキャッシュ・モジュール86を実際に抜き取った行為またはその可能性を示す行為をいう。ブロック401からブロック413まではEC25の処理を示し、ブロック501からブロック509まではキャッシュ・モジュール21のコントローラ86の処理を示している。ブロック401でシステムはAC/DCアダプタ39が外され、電池ユニット35が装着されてS5/S4ステートに遷移している。このタイミングにおいてブロック501でキャッシュ・モジュール21はS0系統、S3系統の電源が停止しS5/S4系統の電源がキャッシュ・モジュール21の揮発性メモリ88に電力を供給してパワー・ビット87の設定を維持している。
【0053】
また、フラッシュ・メモリ81のタンパー・ビット85は解除されている。このとき、真正なユーザが交換のためまたは不正な第3者がデータの盗聴のためにキャッシュ・モジュール21を取り外そうとする。行為者はボトム・カバー57のネジを外してマザーボード61を露出させ最初に電池ユニット35を取り外すと予想される。あるいは、電池ユニット35を装着したままキャッシュ・モジュール21を取り外すことも想定する必要がある。
【0054】
電池ユニット35を取り外すとシステムはG3ステートに遷移する。カバー・センサ33が動作してからG3ステートに遷移する場合はブロック405に移行する。本発明はシステム筐体53のベイに装着された電池パックを搭載するノートPCにも適用することができる。電池パックは、ボトム・カバー57を開放する前に取りはずせるため、この場合はカバー・センサ33が動作しないでブロック411に移行してシステムはG3ステートに遷移する。ただし、RTC電源系統16を利用してPCH17にタンパー・ビットを設定する方法を採用すれば、G3ステートでカバー・センサ33が動作したときにタンパーを検知して、ブート時に図7の手順で処理することができる。
【0055】
ブロック405から409までの手順は主として、システム筐体53の内部に電池ユニット35が収納されているようなシステムで実行される。ブロック405でカバー・センサ33の動作を検知したパワー・コントローラ29は、EC25に起動原因とともに通知する。EC25は、S0系統で動作するデバイスに電力を供給する。この時の起動原因に対して動作するデバイスは、パワー・コントローラ29、EC25およびキャッシュ・モジュール21だけなので、EC25はその範囲のデバイスにだけ電力を供給できるようにDC/DCコンバータ37を構成してもよい。
【0056】
ブロック503でキャッシュ・モジュール21にもS0系統の電力が供給される。BIOSコード107はブートを開始するがブートが進んでコマンドを送れるようになるまでは所定の時間を費やす。したがってブロック407でEC25はライン95を通じてコントローラ86にカバー・センサ33の動作を示すタンパー信号を送る。ブロック505でタンパー信号を受け取ったコントローラ86は、フラッシュ・メモリ81にタンパー・ビット85を設定する。
【0057】
つづいて、ブロック409でEC25はライン93を1ワイヤ方式のプロトコルでオン/オフ制御して、コントローラ86に消去信号を送る。ブロック507で消去信号を受け取ったコントローラ86は、データ領域86のすべてのデータを消去する。コントローラ86がデータを消去するためには電源が必要となるため、ブロック407、505、409、507の手順は電池ユニット35またはキャッシュ・モジュール21がマザーボード61から取り外される前に行う必要がある。
【0058】
本実施の形態ではブロック407、409の手順を、CPU11がBIOSコード107を実行して行うのではなく、EC25によるハードウェア・レベルまたはファームウェア・レベルで行うため短時間で終了することができる。ブロック507のタイミングまで電池ユニット35が取り外されないでかつキャッシュ・モジュール21が取り外されない場合は、カバー・センサ33の動作でタンパー・ビット505が設定されかつフラッシュ・メモリ81のデータが消去される。本実施の携帯ではタンパー・ビット505の設定はキャッシュ・モジュール21に対するタンパーが発生したものとして扱う。
【0059】
カバー・センサ33が動作してから電池ユニット35またはキャッシュ・モジュール21の取り外しまでの時間がブロック407、409の手順を終了するまでの時間より短い場合は、タンパー・ビット85の設定およびデータの消去またはいずれか一方の処理が行われない場合がある。本発明ではBIOSコード107を実行するCPU11がライン91を通じてデータを消去するコマンドを送る方法を採用することも可能であるが、EC25による方法より一層長い時間を費やすことになりデータ消去の実現性は低下する。
【0060】
ブロック411で電池ユニット35が取り外されるかまたはキャッシュ・モジュール21がマザーボード61から取り外される。その場合、キャッシュ・モジュール21の揮発性メモリに対するS5/S4系統の電源が停止して、ブロック509で揮発性メモリ88のパワー・ビット87が解除される。電池ユニット35が取り外されないでキャッシュ・モジュール21が取り外された場合でもその時点でパワー・ビット87は必ず解除される。本実施の形態ではパワー・ビット87の解除はキャッシュ・モジュール21に対するタンパーが発生したものとして扱う。カバー・センサ33が動作してもタンパー・ビット85は設定されない可能性が残るが、パワー・ビット87はキャッシュ・モジュール21が取り外されると必ず解除される。
【0061】
カバー・センサ33が動作せず、電池ユニット35およびキャッシュ・モジュール21が取り外されない場合は、パワー・ビットが設定されタンパー・ビットが解除された状態でブロック413に移行しタンパーの検出処理は終了する。ここではブートを完了する必要がないため、BIOSコード107はブロック409でコントローラからデータを消去した通知を受けたあとはシステムをパワー・オフ状態に遷移させることができる。ブロック511ではキャッシュ・モジュール21に関して以下の4つのシナリオを想定する。第1のシナリオは、タンパー・ビットが解除されかつパワー・ビット87が設定されている状態である。第1のシナリオは、ボトム・カバー57、電池ユニット35およびキャッシュ・モジュール21が取り外されない通常の状態に相当する。
【0062】
第2のシナリオから第4のシナリオは、パワー・ビット87が解除されタンパー・ビット85が不定の状態でキャッシュ・モジュール21が何らかのコンピュータに装着された場合である。タンパー・ビット85が不定であるのは、ブロック407の手順が実行される前に電池ユニット35またはキャッシュ・モジュール21が取り外された場合を想定しているからである。
【0063】
第2のシナリオは、初期化がされてバインディングされたノートPC10に再装着された状態に相当する。第3のシナリオは、図5のブロック207から211までの機能を備えているがバインディングされていないBIOSコードを実装するノートPCに装着された状態に相当する。第4のシナリオは図5のブロック207から211までの機能を備えていないコンピュータに装着された状態に相当する。データが消去されないで第3のシナリオまたは第4のシナリオを迎えると、フラッシュ・メモリ81のデータが盗聴される可能性がでてくる。
【0064】
[装着後の盗聴の防止手順]
図7図8は、第1のシナリオから第4のシナリオのいずれかでキャッシュ・モジュールがコンピュータに装着されたときのデータの盗聴を防止する方法を説明するフローチャートである。ブロック601からブロック657まではBIOSコード107の処理を示し、ブロック701からブロック757まではキャッシュ・モジュール21のコントローラ86の処理を示している。ブロック601でS5/S4ステートにおいてパワー・ボタン31が押下されるとS0ステートで動作するデバイスに電力が供給されてシステムはブートを開始する。
【0065】
ブロック701におけるキャッシュ・モジュール21の状態は、揮発性メモリ88のパワー・ビット87の状態、フラッシュ・メモリ81のタンパー・ビット85の状態およびデータ領域83の消去状態が不定になっている。パワー・ビット87の状態が不定であるのは、第1のシナリオを想定しているからである。ブートを開始するとBIOSコード107はCRTM105およびBIOSコード107を実行してPOSTを開始する。ブロック603でBIOSコード107は、キャッシュ・モジュール21が装着されていることを認識するとキャッシュ・モジュール21とPCH17のインターフェースを初期化してからブロック603で、キャッシュ・モジュール21にタンパー・ビット85の状態を問い合わせる。
【0066】
コントローラ86は、BIOS107によるタンパー・ビット85の照会に対しては、BIOSコード107の認証をしないで即時に応答する。RTC電源系統16の電力でPCH17にタンパー・ビットを設定した場合もBIOS107はこの時点で確認する。ブロック605でBIOSコード107はタンパー・ビット85が解除されていると判断したときはブロック607に移行し設定されていると判断したときは図8のブロック651に移行する。ブロック607でBIOSコード107は、キャッシュ・モジュール21にパワー・ビット87の状態を問い合わせる。
【0067】
コントローラ86は、BIOS107によるパワー・ビット87の照会に対しては、BIOSコード107の認証をしないで即時に応答する。ブロック609でBIOSコード107はパワー・ビット85が設定されていると判断したときはブロック611に移行し解除されていると判断したときは図8のブロック651に移行する。ブロック703でコントローラ86は、自主検査のなかでタンパー・ビット85の状態をシステムとは独立して独自に確認する。タンパー・ビット85が設定されていると判断したときは図8のブロック751に移行し、解除されていると判断したときはブロック705に移行する。
【0068】
ブロック705でコントローラ86は、パワー・ビット87の設定状態を独自に確認する。パワー・ビット87が設定されていると判断したときはブロック707に移行し、解除されていると判断したときは図8のブロック751に移行する。ブロック707でコントローラ86はキャッシュ・モジュール21の自主検査が終了するとブロック709でBIOSコード107にレディ信号を送る。レディ信号を受け取ったBIOSコード107はブロック611でキャッシュ・モジュール21を認識する。以後、システムはキャッシュ・モジュール21を利用できるようになる。
【0069】
その後、ブートはOSの処理に引き継がれてブロック613で終了してシステムはS0ステートに遷移する。ブートを開始したときにシステムがブロック613に到達するのは、初期化のあとに第1のシナリオの経緯をたどった場合である。システムはブロック601からブロック613までの手順で動作するが、タンパー・ビット85とパワー・ビット87の確認だけで処理できるため、本発明の導入でブート時間が遅延することはない。
【0070】
図8のブロック651、751では、BIOSコード107とコントローラ86がチャレンジ・レスポンス方式で相互認証を行う。BIOSコード107は、チャレンジとして一時的に利用する乱数(ワンタイム・パスワード)を生成してコントローラ86に送る。チャレンジは認証のたびに異なる乱数とする。コントローラ86は、BIOS107からのチャレンジに対しては、BIOSコード107の認証をする前であっても応答する。コントローラ86は、受け取ったチャレンジと識別情報109bを結合した結合データを共通鍵111bで暗号化してからBIOSコード107に送る。
【0071】
コントローラ86は、暗号化された結合データを送る際にBIOSコード107に識別情報109bを要求する。BIOSコード107は、チャレンジと識別情報109aを結合したデータを共通鍵111aで暗号化した結合データをコントローラ86に送る。ブロック653でBIOSコード107は、コントローラ86から受け取った暗号化された結合データを共通鍵111aで復号して抽出した識別情報109bを識別情報109aと比較する。
【0072】
もし、両者が一致しない場合またはいずれの識別情報も受け取ることができない場合は、再使用のためにキャッシュ・モジュール21を初期化する必要があるので図5のブロック207に戻る。ブロック207に戻るのは、キャッシュ・モジュール21が、図5の手順でタンパーからデータ領域83を保護する機能を備えているがバインディングされていないBIOSコードを実装するノートPCに装着された第3のシナリオの場合である。
【0073】
このとき、BIOSコード107は、キャッシュ・モジュール21のデータ領域83にアクセスすることを停止して、データの消去とバインディングを含む初期化を行って、キャッシュ・モジュール21を再利用する。第4のシナリオの場合は、装着先で動作するBIOSの処理にしたがうことになるため、当該BIOSはデータを消去しないでデータ領域83にアクセスできるかも知れない。ただし、以下のブロック753、303におけるコントローラ86の処理でデータ領域83のデータは消去されるので盗聴を防止することはできる。
【0074】
コントローラ86は、BIOSコード107から受け取った暗号化されたチャレンジと識別情報109aの結合データを共通鍵111bで復号して抽出した識別情報109aを識別情報109bと比較する。もし、両者が一致しない場合またはいずれの識別情報も受け取ることができない場合は、初期化が行われたコンピュータとは異なるコンピュータに接続されて不正にアクセスされている可能性があるため、図5のブロック303に戻る。
【0075】
ブロック303に戻るのは第3のシナリオ3および第4のシナリオの場合である。このとき、キャッシュ・モジュール21は、BIOSコード107を認証できないと判断するとBIOSコード107からリセット・コマンドを受け取らない場合でも自律的にデータ領域83のデータを消去して盗聴を防止する。したがってキャッシュ・モジュール21を、バインディングされていないコンピュータに接続して不正なアクセスをしようとすれば、キャッシュ・モジュールはただちにデータを消去して盗聴を防止する。
【0076】
ブロック653で両者が一致してBIOSコード107がキャッシュ・モジュール21を認証すると、ブロック655に移行する。またブロック753で両者が一致してキャッシュ・モジュール21がBIOSコード107を認証すると、ブロック755に移行する。ブロック655でBIOSコード107は必要に応じて、コントローラ86にタンパー・ビット85の解除要求をすると、ブロック755でコントローラ86はタンパー・ビット85を解除する。なお、コントローラ86は、自らが認証したBIOSコード107からの要求がない限りタンパー・ビット85の解除はしない。
【0077】
ブロック657でBIOSコード107は必要に応じて、コントローラ86にパワー・ビット87の設定要求をすると、ブロック757でコントローラ86はパワー・ビット87を設定する。なお、コントローラ86は、自らが認証したBIOSコード107からの要求がない限りパワー・ビット87の設定はしない。ブロック657から図7のブロック611に移行し、ブロック757から図7のブロック707に移行する。
【0078】
ブロック611、707へ移行するのは、第2のシナリオの場合である。すなわち、キャッシュ・モジュール21がノートPC10から取り外され、再度ノートPC10に装着されたときは、みかけ上はタンパーが発生した状態であるが、すでにバインディングがされているので盗聴の可能性はないと判断してデータを消去することなくキャッシュ・モジュール21を利用できるようにしている。
【0079】
キャッシュ・モジュール21のタンパーを、カバー・センサ33によるボトム・カバー57の開放で検出する方法を説明したが、本発明はキャッシュ・モジュール21を取り外す際に避けることができない他の物理的な行為を検出する方法も採用することができる。たとえば、キャッシュ・モジュール21を取り外すために必ず外さなければならない部品や基板などの取り外しを検出してタンパーの発生としてもよい。データ領域83の盗聴を防止するために、データを消去する例を説明したがキャッシュ・モジュール21の再利用をする必要がない場合は、キャッシュ・モジュール21がシステムからのすべてのアクセスに対して応答しないようにロックしたりアドレステーブルを破壊したりすることで盗聴を防止するようにしてもよい。
【符号の説明】
【0080】
10 ノートPC
21 キャッシュ・モジュール
33 カバー・センサ
53 システム筐体
57 ボトム・カバー
107 BIOSコード
109a、109b 識別情報
図1
図2
図3
図4
図5
図6
図7
図8