JP2018117185A - 情報処理装置、情報処理方法 - Google Patents
情報処理装置、情報処理方法 Download PDFInfo
- Publication number
- JP2018117185A JP2018117185A JP2017005266A JP2017005266A JP2018117185A JP 2018117185 A JP2018117185 A JP 2018117185A JP 2017005266 A JP2017005266 A JP 2017005266A JP 2017005266 A JP2017005266 A JP 2017005266A JP 2018117185 A JP2018117185 A JP 2018117185A
- Authority
- JP
- Japan
- Prior art keywords
- key
- processing
- holding
- information processing
- devk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】 従来よりも簡単な処理ステップで、なりすましの困難なデバイス認証を実現するための技術を提供すること。【解決手段】 RTMコードを実行することで、秘密情報及び公開鍵を記憶するExtend処理と、ブートローダの実行を開始するブート処理と、を実行する。セキュリティ処理は、ハッシュ値に対して秘密鍵で署名処理を行って、ディジタル署名を生成する処理である。【選択図】 図1
Description
本発明は、デバイス認証技術に関するものである。
近年、カメラやスマートフォンなどの組み込みデバイスが、ネットワークに接続してサーバが提供するサービスと連携するケースが増加している。これまでの汎用PCでのサービス接続では、サービス要求ユーザをパスワードなど用いて認証してきた。しかしながら、サーバが要求元のデバイス(例えばデバイスのモデルや製品構成)の正当性に基づいてサービス要求元を認証したい場合には、デバイス認証と呼ばれる異なる技術が必要である。
デバイスを認証する技術の一つとして、TCGが策定するAttestation (構成証明)がある。当該技術によれば、デバイスはモジュールのロード時に計測したハッシュ値をTPM内のPCRに保存(Extend処理)することで、デバイスのシステム構成が正当であることを主張する。つまり、サーバに対してAIK(Attestation Identity Key)鍵ペアを使ってディジタル署名を送信することで、サーバは正当なデバイスからリクエストが届いていることを検証できる。
或いは、SCEP (Simple Certificate Enrollment Protocol)と呼ばれるプロトコルでは、デバイスの公開鍵に対する証明書要求に付随してパスワードを送付する。認証局は、パスワードに基づいてデバイス証明書の発行可否を判断する。つまり、本技術では、ユーザが入力したパスワードに基づいてデバイスの正当性を検証してデバイス証明書を発行している。
TCG Attestation
SCEP
TCGによるAttestationでは、PCRに署名したAIK (Attestation Identity Key) 鍵ペアの検証が必要になるため、AIK鍵ペアに対する証明書発行が必要になる。AIK鍵ペアに対する証明書発行プロトコルとしてはAIK Certificate Enrollmentと呼ばれるプロトコルが公開されており、個々のデバイスに対して証明書発行の煩雑な処理が必要である。加えて、AIK Certificate Enrollmentでは、TPMに保存されたEK (Endorsement Key) 証明書(或いは、TPM証明書とも呼ばれる)が必要であるが、EK証明書が初期状態では設定されていないTPMも多い。この場合には、EK証明書を手動で生成するための煩雑な手続きがさらに必要になる。
一方、SCEPでは、ユーザの入力するパスワードに応じて証明書を発行しているため、デバイスのなりすましが可能であるという問題点がある。つまり、パスワードが第三者に漏えいした場合には、不正な証明書発行が行われてしまう。或いは、本来の意図とは異なるデバイスに対するCSRに対して正当なパスワードを付与して証明書発行要求を行った場合には、不正なデバイスに対する証明書の発行が行われてしまう。つまり、デバイスのなりすましが容易である。
本発明はこのような問題に鑑みてなされたものであり、従来よりも簡単な処理ステップで、なりすましの困難なデバイス認証を実現するための技術を提供する。
本発明の一様態は、公開鍵と秘密鍵とのペアである鍵ペア、及び秘密情報を用いたセキュリティ処理を行う情報処理装置であって、秘密情報及びRTMコードを保持する第1の保持手段と、起動信号に応じて前記RTMコードを実行する起動処理手段と、データのハッシュ値を保持する第2の保持手段と、ブートローダ及びシステムの起動イメージを保持する第3の保持手段とを備え、前記起動処理手段は前記RTMコードを実行することで、前記秘密情報及び前記公開鍵を前記第2の保持手段へ記憶するExtend処理と、前記第3の保持手段からロードしたブートローダの実行を開始するブート処理と、を実行し、前記セキュリティ処理は、前記第2の保持手段に保存されたハッシュ値に対して前記秘密鍵で署名処理を行って、ディジタル署名を生成する処理であることを特徴とする。
本発明の構成によれば、従来よりも簡単な処理ステップで、なりすましの困難なデバイス認証を実現することができる。
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の1つである。
[第1の実施形態]
以下の説明では、暗号化、復号、ハッシュ処理などを以下のような記法で記載し、以降では、暗号技術に関連する処理及びデータを以下の記述規則によって記載する。暗号化処理C = Enc(K,P) は、秘密鍵Kを使って平文Pを暗号化して暗号文Cを取得する処理である。秘密鍵Kは対称鍵暗号方式の鍵でもよいし、非対称鍵暗号鍵方式の鍵(通常は公開鍵)でもよい。復号処理 P = Dec(K,C)は、鍵Kを使って暗号文Cを復号して平文Pを得る処理である。ここで、RSAなどの非対称鍵暗号方式では、Kは通常は秘密鍵である。署名処理S = Sign(K,D)は、データDに対して鍵ペアKの秘密鍵で署名処理してディジタル署名Sを得る処理である。 Mac (Message Authentication Code)の生成処理はS = Mac(K,D)と記述し、これは秘密鍵KでデータDへのMac値Sを取得する処理である。ディジタル署名及びMac値の検証処理はVerify(K,S)と記述する。この検証処理は、Sがディジタル署名の場合はKはRSA鍵ペアKの公開鍵、SがMac値の場合にはMac値の生成に利用した秘密鍵KによってSの完全性を検証する処理である。検証処理の結果は成功或いは失敗となる。一方で、暗号化されたデータについて、{Data}Kは鍵KでDataが暗号化されていることを示す。KがRSAなどの非対称鍵暗号方式の場合には、鍵ペアKの公開鍵で暗号化されていることを示す。また、演算子”|”はデータの連結を表し、さらにハッシュ関数内の”||“はハッシュ処理の連鎖を表す。つまり、Hash(D1||D2) = Hash( Hash(D1) | D2 ) である。
以下の説明では、暗号化、復号、ハッシュ処理などを以下のような記法で記載し、以降では、暗号技術に関連する処理及びデータを以下の記述規則によって記載する。暗号化処理C = Enc(K,P) は、秘密鍵Kを使って平文Pを暗号化して暗号文Cを取得する処理である。秘密鍵Kは対称鍵暗号方式の鍵でもよいし、非対称鍵暗号鍵方式の鍵(通常は公開鍵)でもよい。復号処理 P = Dec(K,C)は、鍵Kを使って暗号文Cを復号して平文Pを得る処理である。ここで、RSAなどの非対称鍵暗号方式では、Kは通常は秘密鍵である。署名処理S = Sign(K,D)は、データDに対して鍵ペアKの秘密鍵で署名処理してディジタル署名Sを得る処理である。 Mac (Message Authentication Code)の生成処理はS = Mac(K,D)と記述し、これは秘密鍵KでデータDへのMac値Sを取得する処理である。ディジタル署名及びMac値の検証処理はVerify(K,S)と記述する。この検証処理は、Sがディジタル署名の場合はKはRSA鍵ペアKの公開鍵、SがMac値の場合にはMac値の生成に利用した秘密鍵KによってSの完全性を検証する処理である。検証処理の結果は成功或いは失敗となる。一方で、暗号化されたデータについて、{Data}Kは鍵KでDataが暗号化されていることを示す。KがRSAなどの非対称鍵暗号方式の場合には、鍵ペアKの公開鍵で暗号化されていることを示す。また、演算子”|”はデータの連結を表し、さらにハッシュ関数内の”||“はハッシュ処理の連鎖を表す。つまり、Hash(D1||D2) = Hash( Hash(D1) | D2 ) である。
一方、データの記載方法についてはRSAなどの非対称鍵暗号アルゴリズムを利用した署名データは{Data}K^1と示し、Dataが鍵ペアKの秘密鍵で署名(暗号化)されていることを示す。最後に、Cert{ID,K}caは、CAによって発行された証明書であり、公開鍵Kを保持する主体がIDで示される主体(例えばURL)であることをCAが証明していることを示す。
[第1の実施形態]
<システムの構成>
先ず、PC(パーソナルコンピュータ)やスマートフォンに代表される情報処理装置に係るデバイス認証を行うためのシステムの構成例について、図1のブロック図を用いて説明する。図1に示す如く、本実施形態に係るシステムは、認証要求を行う情報処理装置としてのデバイス101と、デバイス101を認証する認証サーバ102と、を有する。本システムの目的は、認証サーバ102がデバイス101を認証し、デバイス101が正当なデバイスと認証された場合に限って、該デバイス101に対してサービスを提供することである。このような認証が必要となるサービスの例としては、正当なデバイスにのみ証明書を発行する証明書発行サービス、或いは正当なデバイスにのみ更新ファームウェアを提供するシステムアップデートサービスが挙げられる。これにより、認証サーバ102はデバイス101の正当性をより厳密に検証することが可能となる。
<システムの構成>
先ず、PC(パーソナルコンピュータ)やスマートフォンに代表される情報処理装置に係るデバイス認証を行うためのシステムの構成例について、図1のブロック図を用いて説明する。図1に示す如く、本実施形態に係るシステムは、認証要求を行う情報処理装置としてのデバイス101と、デバイス101を認証する認証サーバ102と、を有する。本システムの目的は、認証サーバ102がデバイス101を認証し、デバイス101が正当なデバイスと認証された場合に限って、該デバイス101に対してサービスを提供することである。このような認証が必要となるサービスの例としては、正当なデバイスにのみ証明書を発行する証明書発行サービス、或いは正当なデバイスにのみ更新ファームウェアを提供するシステムアップデートサービスが挙げられる。これにより、認証サーバ102はデバイス101の正当性をより厳密に検証することが可能となる。
デバイス101は認証サーバ102からのサービスを利用するために、デバイス101のネットワーク処理部110及び認証サーバ102のネットワーク処理部114を介して、認証サーバ102とのデータ通信を行う。データ通信はイーサネット等の有線LANなどを介して行ってもよいし、無線LAN技術を利用してもよい。認証に必要なメッセージの交換シーケンスは後述する。
デバイス101は、一般に使われる汎用PC、モバイルフォンやスマートフォンなどの計算装置で実現することが可能である。これらの計算装置におけるソフトウェア構成の一例について図5のブロック図を用いて説明する。図5において、App 501はユーザ権限で実行される1つ以上のアプリケーションであり、Rich OS 502はシステム権限で実行されるOS (Operating System)である。Hardware TPM503は、計算装置に搭載されたセキュリティチップである。TPMの仕様については、TCG (Trusted Computing Group)によって公開されており、公知であるため説明は省略する。OSは周辺機器やメモリ等のデバイスの管理を行い、アプリケーションに対してデバイスの機能を抽象化して利用できる環境を提供する。なお、デバイス101と認証サーバ102とは全く同じ構成であることに限らない。
<デバイス101>
図1を用いて、デバイス101の構成例について説明する。セキュアROM104は、認証サーバ102と事前に共有した秘密情報Ks及びデバイス101の起動時に実行されるRTMコード(Root of Trust for Measurement)が保存された不揮発メモリである。秘密情報Ksはデバイス101と認証サーバ102との間でだけ安全に共有される鍵である。RTMコードは、例えばBIOSやUEFIなどの初期実行コード、或いは組み込みデバイスのBoot ROMに保存される特殊な実行ソフトウェアである。セキュアROM104は、攻撃者からの不正な読み出しを防止するために、機密性を提供する耐タンパな実装となっていることが望ましい。例えば、CPUやGPUを集積したアプリケーションプロセッサ(SoC)上に実装されたOn Chip ROMである。
図1を用いて、デバイス101の構成例について説明する。セキュアROM104は、認証サーバ102と事前に共有した秘密情報Ks及びデバイス101の起動時に実行されるRTMコード(Root of Trust for Measurement)が保存された不揮発メモリである。秘密情報Ksはデバイス101と認証サーバ102との間でだけ安全に共有される鍵である。RTMコードは、例えばBIOSやUEFIなどの初期実行コード、或いは組み込みデバイスのBoot ROMに保存される特殊な実行ソフトウェアである。セキュアROM104は、攻撃者からの不正な読み出しを防止するために、機密性を提供する耐タンパな実装となっていることが望ましい。例えば、CPUやGPUを集積したアプリケーションプロセッサ(SoC)上に実装されたOn Chip ROMである。
フラッシュROM105は、初期実行コードであるRTMコードから呼び出されるブートローダや、OS(Operating System)などのシステムを含んだ起動イメージが保存された不揮発メモリである。
起動処理部103は、起動信号を受けると、システムの起動処理を開始する。起動信号は不図示のボタン入力によって起動処理部103に入力されても良いし、仮想化技術などにおけるソフトウェアで実現された信号処理によって起動処理部103に入力されても良い。起動信号を受けると、起動処理部103はセキュアブート処理を開始する。セキュアブート処理では先ず、RTMコードの実行によるデバイス周辺機器の初期化が行われる。続いて、セキュアROM104から読み出された秘密情報KsについてExtend処理が行われる。さらに、セキュリティ処理部107内部に保持された鍵ペアDevKの公開鍵についてExtend処理が行われる。鍵ペアDevKとは、デバイス101で管理される非対称鍵暗号アルゴリズム(例えばRSA)の鍵ペアであり、公開鍵DevK_pubと秘密鍵DevK_priとで構成される。鍵ペアDevKはデバイス毎に異なるものであり、特に秘密鍵DevK_priは当該デバイス内でだけ安全に保持される。Extend処理とは、PCR記憶部108(PCR)に記憶されているハッシュ値(PCR値)を入力データDを使って更新する処理であり、Hn+1=Hash(Hn | D)のようにしてPCR記憶部108に記憶されているハッシュ値を更新する処理である。ここで、Hash()関数はSHA1などの一方向性のハッシュ処理であり、Hnは現在のPCRが保持するハッシュ値であり、Hn+1はExtend処理のハッシュ結果を指す。続いて起動処理部103は、フラッシュROM105から読み出したブートローダの実行を開始する。ブートローダの実行により、フラッシュROM105から読み出された起動イメージはOS実行部106にロードされ、OSの実行が開始される。
セキュリティ処理部107は、デバイス認証に必要なセキュリティ情報を管理する。セキュリティ処理部107の一つの実現形態はTPM(Trusted Platform Module)チップである。TPMはハードウェアチップとしての実装でもよいし、ソフトウェアで実現された機能でもよい。
PCR記憶部108は、前述のExtend処理によって更新されるハッシュ値(PCR値)を記憶するRAMである。認証データ生成部109は、OS実行部106からの要求に基づいてPCR記憶部108に記憶されたハッシュ値に対してDevKの秘密鍵でディジタル署名処理(Sign(DevK, PCR))(式におけるPCRはPCR値を表す)を行う。不揮発性メモリ111は、デバイス鍵の鍵ペアDevKを安全に管理し、許可された条件下においてDevKの公開鍵及び秘密鍵の利用を可能にする。許可された条件とは、例えばPCR記憶部108が保持するハッシュ値が特定の値である場合に限って、秘密鍵の利用を許可する等が挙げられる。
OS実行部106は、起動処理部103から渡されたOSのシステムイメージ(カーネルやRAMDISK)を使ってシステムをブートする。また、OS実行部106は、認証データ生成部109と連携してネットワーク処理部110を介して認証サーバ102と通信を行う。つまり、OS実行部106は、認証データ生成部109から受け取った認証データをネットワーク処理部110に渡し、認証サーバ102がこの認証データを参照してデバイス101の正当性を検証する。デバイス認証に係るメッセージ交換に関する詳細は後述するが、認証データ生成部109はOS実行部106から渡されたチャレンジデータNaと、PCR記憶部108に保持されたハッシュ値と、に対してDevKの公開鍵で署名する。つまり、チャレンジデータNaに対して以下のようにして認証子を生成する。
{Na, Hash(Ks||DevK)}DevK^1 = Sign(DevK, (Na, Hash(Ks||DevK))
ネットワーク処理部110は、OS実行部106からの要求に応じて認証サーバ102(ネットワーク処理部114)との間でメッセージ交換を行う。
ネットワーク処理部110は、OS実行部106からの要求に応じて認証サーバ102(ネットワーク処理部114)との間でメッセージ交換を行う。
<認証サーバ102>
図1を用いて、認証サーバ102の構成例について説明する。認証サーバ102は、デバイス101からのリクエストを受けて、認証されたデバイスにのみサービスを提供する認証サーバである。
図1を用いて、認証サーバ102の構成例について説明する。認証サーバ102は、デバイス101からのリクエストを受けて、認証されたデバイスにのみサービスを提供する認証サーバである。
Ks記憶部112は、デバイス101とあらかじめ共有した秘密情報Ksを安全に保持する。Ks記憶部112は、DRAMに代表される不揮発性メモリでもよいし、スマートカードに代表される耐タンパ性のある記録メディアでもよい。スマートカードに記憶する場合には、秘密情報Ksを認証処理部113に直接渡すことなく、そのハッシュ値Hash(Ks)を認証処理部113に渡す。
認証処理部113は、ネットワーク処理部114を介してデバイス101から受け取った認証子を認証し、該認証に成功した場合には、デバイス101にサービスを提供する。認証処理部113による認証処理の詳細については後述する。
ネットワーク処理部114は、NICに代表される認証サーバ102のネットワークインターフェースであり、デバイス101(ネットワーク処理部110)との間のデータ通信を行うためのものである。ネットワーク処理部114は、例えば、認証処理部113から渡されたデータを使ったデバイス101とのメッセージ交換を行う。
<認証シーケンス図>
次に、デバイス101がデバイス証明書を取得するユースケースにおけるデバイス101と認証サーバ102との間のメッセージ交換のシーケンスについて、図2のシーケンス図を用いて説明する。図2に示したメッセージ交換は、デバイス101のネットワーク処理部110と認証サーバ102のネットワーク処理部114との間で行われる。
次に、デバイス101がデバイス証明書を取得するユースケースにおけるデバイス101と認証サーバ102との間のメッセージ交換のシーケンスについて、図2のシーケンス図を用いて説明する。図2に示したメッセージ交換は、デバイス101のネットワーク処理部110と認証サーバ102のネットワーク処理部114との間で行われる。
ステップS201では、起動処理部103は、セキュアブート処理によってシステムを起動する。ここで重要なのは、ステップS201の終了後においてPCR記憶部108のPCRが保持する値は、正常なハッシュ値Hash(Ks||DevK_pub)である、ということである。つまり、ステップS201の処理前におけるPCR値は初期値(例えば0x00000000)であるが、ステップS201の終了後におけるPCR値はHash(Ks||DevK_pub)となっている。
次にステップS202では、デバイス101は、認証サーバ102にデバイス証明書を発行してもらうためのメッセージを作成する。具体的には、OS実行部106は、デバイス101の識別子DevID(例えばシリアル番号やモデル番号)を何れかのメモリから取得し、該識別子DevIDを、ネットワーク処理部110を介して認証サーバ102に送信する。なお、以降の説明では、デバイス101と認証サーバ102との間の通信経路はSSLや専用線を用いて保護されているものとし、ネットワーク上でのメッセージの改ざんや挿入は考慮しないものとする。SSL通信においてデバイス101から認証サーバ102に対してセキュアな通信チャネルを開始する方法に関しては公知であるため、説明を省略する。
ステップS203で認証処理部113は、デバイス101から送信された識別子DevIDをネットワーク処理部114を介して受信すると、送信元であるデバイス101の正当性を検証するために乱数Naを生成する。そして認証処理部113は、該生成した乱数Naをチャレンジデータとしてデバイス101に送信する。
ステップS204では、認証データ生成部109は、ネットワーク処理部110を介して認証サーバ102から受信したチャレンジデータNaを、鍵ペアDevKの秘密鍵で署名し、認証子を生成する。つまり、認証データ生成部109は署名処理により {Na, PCR}DevK^-1 = Sign(DevK_pri,(Na, PCR))を生成する。ここで、PCRは上記のステップS201のセキュアブート処理で設定されたハッシュ値を保持しており、PCR=Hash(Ks || DevK_pub)である。署名後、ネットワーク処理部110は、{Na, PCR}DevK^-1、PCR、DevK_pub、DevIDをメッセージとして認証サーバ102に対して送信する。ここで、認証サーバ102に送信されるメッセージにはDevK_pubに対する証明書が含まれていないことに注意されたい。認証サーバ102はDevK_pubの正当性をPCRに含まれるハッシュ値を元に検証する。認証サーバ102における署名の検証処理の詳細については後述する。
ステップS205では、認証処理部113は、デバイス101から受け取ったメッセージを検証し、検証に成功した場合にはデバイス101に対してデバイス証明書を発行する。
ステップS206では、OS実行部106は、認証サーバ102から受け取った証明書をフラッシュROM105などの不揮発性のストレージに保存する。
<セキュアブート処理>
図2のステップS201において行われるセキュアブート処理の一例について、図3のフローチャートを用いて説明する。本セキュアブート処理の目的は、デバイス101内のPCR記憶部108に、認証サーバ102がデバイス認証できる認証子を設定することである。
図2のステップS201において行われるセキュアブート処理の一例について、図3のフローチャートを用いて説明する。本セキュアブート処理の目的は、デバイス101内のPCR記憶部108に、認証サーバ102がデバイス認証できる認証子を設定することである。
ステップS301では、起動処理部103は、デバイス101の電源ONやソフトウェアイベントに応じて発生する起動信号を受け取る。ステップS302では、起動信号を受け取った起動処理部103は、セキュアROM104からRTMコードを読み出して実行することで、デバイス101に接続された周辺機器の初期化処理などを実行する。
ステップS303では、起動処理部103は、フラッシュROM105からブートローダ及び起動イメージを読み出して実行することで、完全性の検証を行う。ここで、完全性の検証とは、ブートローダや起動イメージの改ざんを検出するための処理である。完全性はハッシュ値、Mac(Message Authentication Code)値或いはディジタル署名を使って検証することが可能である。ハッシュ値を用いる場合には、セキュアROM104に保存されたハッシュ値と起動イメージのハッシュ値とを比較することによって検証を行う。同様にMac値を利用する場合には、Mac鍵をセキュアROM104に保存しておき、起動イメージから計算されたMac値がフラッシュROM105に保存されたMac値と等しいことを検証する。或いは、ディジタル署名の場合には、検証用の公開鍵をセキュアROM104に保存しておき、フラッシュROM105に保存されたディジタル署名値が起動イメージに付与された署名と等しいことを確認する。また、完全性の検証は、RTMコードがブートローダ、起動イメージ両方の完全性を検証してもよいし、RTMコードがブートローダの完全性を検証し、続いてブートローダが起動イメージの完全性を検証する、というように検証を連鎖させてもよい。
ステップS303における起動イメージの完全性検証に失敗した場合(ステップS304でNo)には、処理はステップS305に進み、起動処理部103は起動処理を中止する。一方、完全性検証に成功した場合(ステップS304でYes)には、処理はステップS306に進み、RTMコードの実行を継続する。
ステップS306において起動処理部103は、デバイス101に設定されたデバイス認証子生成モードを取得する。デバイス認証子生成モードとは、例えば、ジャンパースイッチ、ユーザ入力のボタン、或いは基板に入力された電気信号から設定されるモード値である。あらかじめ定められたボタンを押し続けた起動処理や、特殊な装置が入力ピンに接続された状態でのデバイス101の起動処理であると理解されたい。デバイス認証子生成モードが設定されていない場合(ステップS306でNo)には、処理はステップS311に進む。ステップS311では、起動処理部103は、通常の起動処理シーケンスとして、ブートローダに制御を渡して起動イメージの実行を開始する。
一方で、デバイス認証子生成モードが設定されている場合(ステップS306でYes)、処理はステップS307に進み、ステップS307では、起動処理部103は、RTMコードの実行により、セキュアROM104から秘密情報Ksを読み込む。
ステップS308では、起動処理部103は、秘密情報Ksを使ってExtend処理を行い、PCR記憶部108のハッシュ値を更新する。つまり、PCR記憶部108が保持するハッシュ値H1は、H0を初期値とするとH1=Hash(H0|Ks)となる。
ステップS309では、起動処理部103は、不揮発性メモリ111からDevKの公開鍵DevK_pubを取得してExtend処理を行う。これにより、PCR記憶部108のPCRはHash(Ks||DevK_pub)を保持することになる。
ここで、ステップS307〜S309においてPCRにExtend処理を行う順序は変更可能である。つまり、認証サーバ102における検証処理と同じであればPCRに設定される値はHash(DevK_pub||Ks)でもよい。さらに、鍵ペアDevKは本実施形態のようにセキュリティ処理部107内の不揮発性メモリ111に保存されてもよいし、フラッシュROM105に暗号化された状態({DevK}Ksの形式)で保存してもよい。ここで重要なことは、鍵ペアDevKの機密性、特にDevKの秘密鍵DevK_priの機密性を実現できることである。セキュリティ処理部107が耐タンパ性を持つTPMチップなどで実現される場合には、不揮発性メモリ111に鍵ペアを保存することでDevKの機密性が確保される。一方、{DevK}Ksの形式でフラッシュROM105に保存する場合には、秘密情報Ksで暗号化することにより、耐タンパ性のないフラッシュメモリにおいても機密性を確保することが可能である。さらに、ステップS309において、鍵ペアDevKが存在しない場合には、本ステップにおいて鍵ペアDevKの生成処理を行ってもよい。この場合には、生成した鍵ペアDevKをExtend処理するとともに、不揮発性メモリ111或いはフラッシュROM105に保存する。
ステップS310で起動処理部103は、秘密情報Ksが後のブート処理において読みだされることを防止するために、秘密情報KsをセキュアROM104から消去する。これにより、秘密情報Ksがデバイス101に対する静的解析による攻撃によって漏えいしないように保護する。或いは、秘密情報Ksがデバイス101の起動中に(不図示の)作業用メモリから読みだされることを防止するために、秘密情報Ksを作業用メモリから消去する。これにより、秘密情報Ksがデバイス101に対する動的解析による攻撃によって漏えいしないように保護する。
以上説明したステップS307〜S310の一連の処理ステップによってPCR記憶部108に適切なハッシュ値を記憶した後、ステップS311では、起動処理部103は、RTMコードから制御をブートローダに渡してデバイス101を起動する。
以上、デバイス101におけるセキュアブート処理の一例を示した。なお、鍵ペアDevKの公開鍵のExtend処理は、例えばブートローダ内部で行うことも可能である。しかしながら、デバイス101の起動処理のより早い段階でPCR記憶部108に正当なハッシュ値Hash(Ks||DevK_pub)を設定することは、本セキュリティシステムに対する攻撃をより困難にさせることが可能である。
<検証処理>
図2のステップS205において行われる、デバイス101から送られたメッセージの検証を行う処理の一例について、図4のフローチャートを用いて説明する。この検証処理によって、認証サーバ102は、デバイス101が正当なシステムとして起動し、DevKの鍵ペアを保持していることを検証することができる。
図2のステップS205において行われる、デバイス101から送られたメッセージの検証を行う処理の一例について、図4のフローチャートを用いて説明する。この検証処理によって、認証サーバ102は、デバイス101が正当なシステムとして起動し、DevKの鍵ペアを保持していることを検証することができる。
上記のステップS204の後、デバイス101から{Na, PCR}DevK^-1, PCR, DevK_pub, DevIDを受け取った認証サーバ102の認証処理部113は、これらのメッセージの正当性の検証を開始する。また、チャレンジデータNaは認証サーバ102が生成したデータであるので、このデータを保持しているものとする。
ステップS401では、認証処理部113は、署名値{Na, PCR}DevK^-1の正当性をDevK_pubで検証する。つまり、認証処理部113は、Verify(DevK, {Na, PCR}DevK^-1)を実行する。ステップS401の処理の結果、Na及びPCR値が改ざんされていないこと、加えてこのデータを送信したデバイス101がDevKの鍵ペアを保持することの2つを検証することができる。
ステップS401における検証に失敗した場合(ステップS402でNo)、処理はステップS403に進み、ステップS403では、認証処理部113は、署名検証に失敗したものとして処理を中止する。一方、ステップS401における検証に成功した場合(ステップS402でYes)、処理はステップS404に進む。
ステップS405では、認証処理部113は、チャレンジデータNaの値の正当性を検証する。この検証では、チャレンジデータNaの値が、ステップS203においてデバイス101に送信した値と同値であることを検証する。またこの検証では、チャレンジデータNaが、過去一定の時間内に送信されたデータであることを確認する。
チャレンジデータNaの値が、デバイス101に送信した値と同値ではなかった場合(ステップS405でNo)、処理はステップS403に進み、ステップS403では、認証処理部113は、再送攻撃などの不正になり、デバイス認証を失敗とする。一方、チャレンジデータNaの値が、デバイス101に送信した値と同値である場合(検証に成功した場合)(ステップS405でYes)、処理はステップS406に進む。
ステップS406では、認証処理部113は、Ks記憶部112から秘密情報Ksを読み出し、該読み出した秘密情報Ksと、デバイス101から送られてきたDevK_pubと、を用いてそのハッシュ値Hash(Ks||DevK_pub)を生成する。そして認証処理部113は、該生成したHash(Ks||DevK_pub)が、デバイス101から送信されてきたPCR値と等しいことを確認する。
この確認の結果、生成したHash(Ks||DevK_pub)が、デバイス101から送信されてきたPCR値と等しくない場合(ステップS407でNo)、処理はステップS403に進む。ステップS403では、認証処理部113は、デバイス101は定められたセキュアブート処理を経て起動していないことになるため、デバイス認証を失敗とする。つまり、デバイス101は不正な改変が加えられているか、正当な鍵ペアDevKを保持していないことになる。
一方、生成したHash(Ks||DevK_pub)が、デバイス101から送信されてきたPCR値と等しい場合(ステップS407でYes)、処理はステップS408に進む。ステップS408で認証処理部113は、デバイス認証は成功と判定し、デバイス101に対する証明書Cert{DevID, DevK_pub}caを生成し、該生成した証明書をネットワーク処理部114を介してデバイス101に送信する。
以上説明した一連の処理の結果、デバイス101は証明書を受け取ることができる。ここで、図2においてデバイス101から認証サーバ102に送られるデータにはDevKの公開鍵に対する証明書が含まれていないことに注意されたい。つまり、認証サーバ102は、DevKの公開鍵証明書を利用することなくデバイス認証を行うことができることになる。また、デバイス101の管理者もDevKの鍵ペアに対する証明書を予め取得する必要はない。
以上、本実施形態において、認証サーバ102がデバイス101を認証し、サービスを提供する方法について説明した。なお、本実施形態では認証サーバ102がデバイス101にデバイス証明書を発行するサービスを提供する場合を例として説明を行ったが、別のサービスを提供するようにしても良い。たとえば、認証サーバ102はデバイス101に対してファームウェアを配信するサービスを提供してもよい。この場合には、ステップS202の後にデバイス101から認証サーバ102に送るリクエストをファームウェア送信要求とし、ステップS205の後に認証サーバ102から送られるデータはファームウェアデータとなる。これにより、認証サーバ102は正当なデバイスにのみファームウェアデータを、安全に配信することができる。
<変形例1>
第1の実施形態では、図5に示すようなOSとアプリケーションの2つの権限でデバイスを管理するモデルでの実現を説明した。しかし、図6の論理構成で示すように、CPUの提供する仮想実行技術を利用することも可能である。仮想実行技術では、デバイスのメモリや周辺機器などのリソースをNormal World 601とSecure World 602とに分割する。Secure World602に割り当てられたリソースに対するNormal World601からの直接アクセスは防止される。つまり、Normal World601におけるRich OS 603はNormal World601に割り当てられたデバイス上のリソースを管理し、App 604 に対してリソースの利用を可能にさせる。一方で、Secure World 602 はMonitor Code 605 を介してNormal World 601のRich OS603からサービスの要求を受け付け、Secure World602に割り当てられたリソースを使ったサービスを提供する。つまり、Normal World601における実行プロセスからSecure World602は論理的に隔離されていることになる。すなわち、デバイスにおけるセキュリティ処理を行う安全な実行環境となる。Trusted OS 606 は、Secure World602側のリソースを管理するOSであり、Soft TPM 607及びSecure App 608 に対してリソースを使ったサービスを提供する。
第1の実施形態では、図5に示すようなOSとアプリケーションの2つの権限でデバイスを管理するモデルでの実現を説明した。しかし、図6の論理構成で示すように、CPUの提供する仮想実行技術を利用することも可能である。仮想実行技術では、デバイスのメモリや周辺機器などのリソースをNormal World 601とSecure World 602とに分割する。Secure World602に割り当てられたリソースに対するNormal World601からの直接アクセスは防止される。つまり、Normal World601におけるRich OS 603はNormal World601に割り当てられたデバイス上のリソースを管理し、App 604 に対してリソースの利用を可能にさせる。一方で、Secure World 602 はMonitor Code 605 を介してNormal World 601のRich OS603からサービスの要求を受け付け、Secure World602に割り当てられたリソースを使ったサービスを提供する。つまり、Normal World601における実行プロセスからSecure World602は論理的に隔離されていることになる。すなわち、デバイスにおけるセキュリティ処理を行う安全な実行環境となる。Trusted OS 606 は、Secure World602側のリソースを管理するOSであり、Soft TPM 607及びSecure App 608 に対してリソースを使ったサービスを提供する。
このような構成においては、第1の実施形態におけるPCR記憶部108及び認証データ生成部109をSecure World602側のSoft TPM 607 で実現できる。そして、Rich OS 603はMonitor Code 605を介して認証データ生成部109のデバイス認証子生成を依頼する。つまり、ステップS204では、Soft TPM 607がPCR記憶部108に管理されるハッシュ値に対してDevKの秘密鍵でディジタル署名処理を実行してRich OS 605に返す。
また、デバイス101のSecure Boot処理における起動処理部103は、Secure World602で実行される。起動処理部103は、暗号化された鍵ペア{DevK}KsをセキュアROM104から読み出し、復号してSoft TPM 607に入力する。これにより、ハードウェアのTPMチップに供えられたNVRAMを利用することなく鍵ペアDevKを保護することが可能である。
このような構成にすることによって、ハードウェアTPMチップを持たないデバイスにおいても、第1の実施形態と同等のセキュリティ機能を実現することが可能となる。さらに、第1の実施形態における認証サーバ102からデバイス101へのサービス提供(ステップS205の後にデバイス101に送信されるメッセージ提供)では、データをDevKの公開鍵で暗号化して返信するとさらに強固なセキュリティを実現できる。つまり、認証サーバ102からデバイス101に送信される証明書は、{ Cert{DevID, DevK_pub}ca }DevKの形式で送信することができる。或いは、第1の実施形態で説明したファームウェア配信の場合においては、認証サーバ102はファームウェアデータFirmを{Firm}DevKの形にして送信する。これにより、証明書データ或いはファームウェアデータは、デバイス101におけるSecure World602で実行されるDevKの秘密鍵を保持するプロセスまで安全に届けることができる。つまり、デバイス101におけるNormal World601に不正なプロセスが存在していても、その不正なプロセスはSecure World602に送信される証明書或いはファームウェアを不正に取得することはできない。
[第2の実施形態]
図1に示したデバイス101及び認証サーバ102の各機能部の全てはハードウェアで実装しても良い。しかし一部(例えば起動処理部103、OS実行部106、認証データ生成部109、認証処理部113)をソフトウェア(コンピュータプログラム)で実装し、残りの機能部をハードウェア(メモリ、通信インターフェース等)で実装しても良い。この場合、このソフトウェアを実行可能なプロセッサ、メモリ、通信インターフェース、を有するコンピュータ装置は、デバイス101及び認証サーバ102に適用可能である。
図1に示したデバイス101及び認証サーバ102の各機能部の全てはハードウェアで実装しても良い。しかし一部(例えば起動処理部103、OS実行部106、認証データ生成部109、認証処理部113)をソフトウェア(コンピュータプログラム)で実装し、残りの機能部をハードウェア(メモリ、通信インターフェース等)で実装しても良い。この場合、このソフトウェアを実行可能なプロセッサ、メモリ、通信インターフェース、を有するコンピュータ装置は、デバイス101及び認証サーバ102に適用可能である。
デバイス101及び認証サーバ102に適用可能なコンピュータ装置のハードウェア構成例について、図7のブロック図を用いて説明する。なお、デバイス101と認証サーバ102とで異なるハードウェア構成を有する機器を採用しても良い。
CPU701は、RAM702やROM703に格納されているコンピュータプログラムやデータを用いて処理を実行する。これによりCPU701は、コンピュータ装置全体の動作制御を行うと共に、デバイス101及び認証サーバ102のそれぞれが行うものとして上述した各処理を実行若しくは制御する。
RAM702は、ROM703からロードされたコンピュータプログラムやデータを格納するためのエリア、I/F(インターフェース)706を介して外部から受信したデータを格納するためのエリア、を有する。また、RAM702は、CPU701が各種の処理を実行する際に用いるワークエリアを有する。このようにRAM702は、各種のエリアを適宜提供することができる。RAM702は、例えば、図1のPCR記憶部108として機能する。
ROM703には、コンピュータ装置の設定データや起動プログラムなどが格納されている。ROM703は、セキュアROM104、フラッシュROM105、不揮発性メモリ111、Ks記憶部112として機能する。
操作部704は、マウスやキーボード、ボタンなどのユーザインターフェースにより構成されており、ユーザが操作することで各種の指示をCPU701に対して入力することができる。例えば、上記の起動信号は、操作部704への操作に応じて入力することができる。
表示部705は、CRTや液晶画面などにより構成されており、CPU701による処理結果を画像や文字などでもって表示することができる。なお、操作部704と表示部705とを一体化させてタッチパネル画面を構成しても良い。
I/F706は、外部の機器との間のデータ通信を行うための通信インターフェースとして機能するものであり、例えば、図1のネットワーク処理部110、ネットワーク処理部114として機能する。CPU701、RAM702、ROM703、操作部704、表示部705、I/F706は何れもバス707に接続されている。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
104:セキュアROM 105:フラッシュROM 103:起動処理部 106:OS実行部 110:ネットワーク処理部 108:PCR記憶部 109:認証データ生成部 111:不揮発性メモリ
Claims (7)
- 公開鍵と秘密鍵とのペアである鍵ペア、及び秘密情報を用いたセキュリティ処理を行う情報処理装置であって、
秘密情報及びRTMコードを保持する第1の保持手段と、
起動信号に応じて前記RTMコードを実行する起動処理手段と、
データのハッシュ値を保持する第2の保持手段と、
ブートローダ及びシステムの起動イメージを保持する第3の保持手段と
を備え、
前記起動処理手段は前記RTMコードを実行することで、前記秘密情報及び前記公開鍵を前記第2の保持手段へ記憶するExtend処理と、前記第3の保持手段からロードしたブートローダの実行を開始するブート処理と、を実行し、
前記セキュリティ処理は、前記第2の保持手段に保存されたハッシュ値に対して前記秘密鍵で署名処理を行って、ディジタル署名を生成する処理である
ことを特徴とする情報処理装置。 - 前記起動処理手段は、前記Extend処理の後に前記秘密情報を読み込みできない状態にすることを特徴とする請求項1に記載の情報処理装置。
- 前記起動処理手段は、デバイス認証子を生成するモードの場合に、前記第2の保持手段へのExtend処理を行うことを特徴とする請求項1に記載の情報処理装置。
- 前記起動処理手段による処理と前記セキュリティ処理とは安全な実行環境で実行されることを特徴とする請求項1に記載の情報処理装置。
- 前記セキュリティ処理では、前記公開鍵で暗号化されたデータが前記安全な実行環境で復号処理されることを特徴とする請求項4に記載の情報処理装置。
- 公開鍵と秘密鍵とのペアである鍵ペア、及び秘密情報を用いたセキュリティ処理を行う情報処理装置であって、
秘密情報及びRTMコードを保持する第1の保持手段と、
データのハッシュ値を保持する第2の保持手段と、
ブートローダ及びシステムの起動イメージを保持する第3の保持手段と
を有する前記情報処理装置が行う情報処理方法であって、
前記RTMコードを実行することで、前記秘密情報及び前記公開鍵を前記第2の保持手段へ記憶するExtend処理と、前記第3の保持手段からロードしたブートローダの実行を開始するブート処理と、を実行し、
前記セキュリティ処理は、前記第2の保持手段に保存されたハッシュ値に対して前記秘密鍵で署名処理を行って、ディジタル署名を生成する処理である
ことを特徴とする情報処理方法。 - コンピュータに、請求項6に記載の情報処理方法を実行させるためのコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017005266A JP2018117185A (ja) | 2017-01-16 | 2017-01-16 | 情報処理装置、情報処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017005266A JP2018117185A (ja) | 2017-01-16 | 2017-01-16 | 情報処理装置、情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018117185A true JP2018117185A (ja) | 2018-07-26 |
Family
ID=62985461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017005266A Pending JP2018117185A (ja) | 2017-01-16 | 2017-01-16 | 情報処理装置、情報処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018117185A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190357A (zh) * | 2018-08-30 | 2019-01-11 | 袁精侠 | 一种仅利用缓存资源进行人机验证的手势验证码实现方法 |
CN112654985A (zh) * | 2019-01-28 | 2021-04-13 | 欧姆龙株式会社 | 安全系统以及维护方法 |
CN114944049A (zh) * | 2022-05-23 | 2022-08-26 | 天津君秒安减灾科技有限公司 | 一种地震救援现场报警设备 |
US11797457B2 (en) | 2020-09-18 | 2023-10-24 | Kabushiki Kaisha Toshiba | Electronic apparatus and method for controlling data update processing on memory |
JP7406013B2 (ja) | 2020-06-22 | 2023-12-26 | アップル インコーポレイテッド | 構成設定の安全な署名 |
-
2017
- 2017-01-16 JP JP2017005266A patent/JP2018117185A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190357A (zh) * | 2018-08-30 | 2019-01-11 | 袁精侠 | 一种仅利用缓存资源进行人机验证的手势验证码实现方法 |
CN109190357B (zh) * | 2018-08-30 | 2021-08-06 | 袁精侠 | 一种仅利用缓存资源进行人机验证的手势验证码实现方法 |
CN112654985A (zh) * | 2019-01-28 | 2021-04-13 | 欧姆龙株式会社 | 安全系统以及维护方法 |
CN112654985B (zh) * | 2019-01-28 | 2024-04-09 | 欧姆龙株式会社 | 安全系统以及维护方法 |
JP7406013B2 (ja) | 2020-06-22 | 2023-12-26 | アップル インコーポレイテッド | 構成設定の安全な署名 |
US11797457B2 (en) | 2020-09-18 | 2023-10-24 | Kabushiki Kaisha Toshiba | Electronic apparatus and method for controlling data update processing on memory |
CN114944049A (zh) * | 2022-05-23 | 2022-08-26 | 天津君秒安减灾科技有限公司 | 一种地震救援现场报警设备 |
CN114944049B (zh) * | 2022-05-23 | 2024-02-02 | 天津君秒安减灾科技有限公司 | 一种地震救援现场报警设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10530753B2 (en) | System and method for secure cloud computing | |
US10721080B2 (en) | Key-attestation-contingent certificate issuance | |
CN109313690B (zh) | 自包含的加密引导策略验证 | |
US9838205B2 (en) | Network authentication method for secure electronic transactions | |
EP3540626B1 (en) | Enclave launch and authentication | |
US8997192B2 (en) | System and method for securely provisioning and generating one-time-passwords in a remote device | |
CN110677240B (zh) | 通过证书签发提供高可用计算服务的方法、装置及介质 | |
US7697691B2 (en) | Method of delivering Direct Proof private keys to devices using an on-line service | |
US7934096B2 (en) | Integrity protected smart card transaction | |
CN109639427B (zh) | 一种数据发送的方法及设备 | |
JP5136012B2 (ja) | データ送付方法 | |
US20050283826A1 (en) | Systems and methods for performing secure communications between an authorized computing platform and a hardware component | |
CN110874478B (zh) | 密钥处理方法及装置、存储介质和处理器 | |
US7693286B2 (en) | Method of delivering direct proof private keys in signed groups to devices using a distribution CD | |
JP2018117185A (ja) | 情報処理装置、情報処理方法 | |
JP2004508619A (ja) | トラステッド・デバイス | |
US9280687B2 (en) | Pre-boot authentication using a cryptographic processor | |
US7792303B2 (en) | Method of delivering direct proof private keys to devices using a distribution CD | |
KR102012262B1 (ko) | 키 관리 방법 및 fido 소프트웨어 인증장치 | |
CN110730159A (zh) | 一种基于TrustZone的安全和可信混合系统启动方法 | |
JP2017011491A (ja) | 認証システム | |
CN113366461A (zh) | 使用非对称密码访问固件设置 | |
CN115037480A (zh) | 设备认证和校验的方法、装置、设备和存储介质 | |
US20220166608A1 (en) | Method for end entity attestation | |
Stumpf et al. | Towards secure e-commerce based on virtualization and attestation techniques |