(57)【要約】【課題】  コスト及びRAM制約の大きいIoT等のコンシューマ分野向けで使用される物理的な安全性が高いSE[セキュアエレメント(TPM/eSIM等)]に安全性を維持しつつ、用途に適したカスタマイズが可能となる手段を提供する。【解決手段】  カスタム化が可能なSEを備えた暗号処理用プラットフォーム１００であって、 SEのデフォルトコード１０１とカスタムコード１１５を切り替えて使用することにより、揮発性メモリ１１９、レジスタ１２０及びレジスタによって制御される暗号処理ハードウェア１１４はデフォルトコード１０１とカスタムコード１１５で共用可能とする。さらにデフォルトコード１０１及びデフォルトコードが使用するデフォルトコード機密情報１１３をアクセス禁止領域として規定するため、不正なカスタムコードによってこれら情報を参照しようとする中間者攻撃による改ざんの危険性もなくセキュリティ強度の向上を図ることができる。【選択図】図１
2020201526.tif 000002
【特許請求の範囲】
【請求項１】
カスタマイズ可能な暗号処理用プラットフォームで、プラットフォームはCPU、CPUの動作を制御するオブジェクトコード及びコードが利用する暗号鍵等の秘密情報を含む不揮発性メモリ、作業領域である揮発性メモリ、並びに少なくとも外部通信インタフェースを含む周辺装置制御用のレジスタを含み、オブジェクトコードは、電源ONを伴うコールドリセット時にデフォルト起動されるデフォルトコード、及びデフォルトコード動作時に特定イベントで起動されるカスタムコードを含み、デフォルトコードには少なくとも次の手段が実装され、
・外部通信インタフェースから入力されたデータの暗号化手段
・カスタムコード格納手段 
・カスタムコード起動手段 
更に、カスタムコードの起動手段に次の機能を付勢することによって、デフォルトコード及びデフォルトコードが使用する秘密情報をカスタムコードから保護することを特徴とする暗号処理用プラットフォーム。
・不揮発性メモリ、揮発性メモリ、及び/またはレジスタ格納値を利用して
コールドリセットと電源操作を伴わないウォームリセットを識別し、
起動トリガを判定する起動トリガ判定機能 
・カスタムコードの起動に先行して、カスタムコードの起動に関連する部分を
除くデフォルトコード及びデフォルトコードが使用する秘密情報をアクセス
禁止領域として規定するアクセス可能領域設定機能
・カスタムコードの起動に先行して、デフォルトコード起動時に初期化されない
揮発性メモリを初期化する揮発性領域初期化機能 
・カスタムコードへの分岐機能
【請求項２】
デフォルトコードは外部通信インタフェースを介して入力された命令の解析及び実装手段を備え、特定命令受信時にソフトウェア割り込み等の割込みを利用してデフォルトコードを再起動することで、最終的にカスタムコードを起動することを特徴とする請求項１記載の暗号処理用プラットフォーム。
【請求項３】
カスタムコードに起動トリガ判定に利用される情報の変更手段を設け、同情報をコールドリセットと同条件、もしくはコールドリセットとウォームリセットとは異なる第3の条件に設定した後に、ソフトウェア割り込み等の割り込みを利用してデフォルトコードを再起動することで、デフォルトコードに再遷移可能としたことを特徴とする請求項１または請求項２記載の暗号処理用プラットフォーム。
【請求項４】
少なくともデフォルトコード内の秘密情報を除くコードの一部をカスタムコードからアクセス可能領域として規定することを特徴とする請求項１から請求項３記載の暗号処理用プラットフォーム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、SE［セキュアエレメント］等のカスタマイズ可能な暗号処理用プラットフォームを対象とする。
【背景技術】
【０００２】
近年、IoT［Internet of things］機器に関してはネットワークカメラを踏み台としたDDoS［distributed denial of service、（分散型サービス妨害）］攻撃、また4G / 5G携帯電話から特定個人の動線分析を可能とするToRPEDO攻撃等が出現し、攻撃で被った被害に対してこれら機器ベンダが補償するケースが報告される事態に至っている。
【０００３】
また、IoT応用の適用対象は、車載市場では自動運転技術、また決済市場では携帯電話を利用したQRコード(登録商標)決済等と想定される被害が甚大となるPL［product liability（製造物責任）］対象市場へと拡大していくと予想されている。
【０００４】
これら機器では、図３に示すように アセット呼ばれるファームウェア及び暗号鍵等の秘密情報が格納される信頼境界の故障注入［fault injection］を阻止するために、攻撃可能面［attack surface］保護することが必要で、そのために暗号、認証、あるいは電子署名といったITセキュリティ技術が実装された暗号境界が必要となる。
【０００５】
ただし、暗号境界に対してもアルゴリズム実装に起因した攻撃であるサイドチャネル攻撃、CPUアーキテクチャ自体の脆弱性を利用した攻撃であるSpectre、及びハードウェア的な脆弱性を利用した攻撃であるCLKSCREW等の攻撃が報告されており、これらセキュリティ脅威に対抗するためには、物理的な安全性が高いSEの採用が必須となる。
【０００６】
本発明は、セキュリティ性が要求されるIoT/MFP［multi-function printer］等のコンシューマ市場への展開が可能で、簡易にカスタマイズが可能なSEを提供することを目的とする。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
IoT等のコンシューマ分野では、物理的安全性の高いSEとしてTPM[Trusted Platform Module] または基板実装型のSEであるeSIM[embedded-SIM]等を適用して暗号境界を形成することが多いが、次の潜在的な課題が存在していた。
【０００８】
先ず、TPMだが、汎用性を重視した設計である上、オブジェクトコード及び鍵等の秘密情報が露呈しないよう、カスタマイズは許容されていない。
【０００９】
なお、市場規模が大きい場合はプラットフォーム依存標準が制定され、製品がリリースされる可能性は残されているが、年間使用数量が数10万個レベルのコンシューマ向け製品ではプラットフォーム依存標準もリリースされないため、製品設計時には暗号鍵等の秘密情報のみをTPMで厳重に保護し、本来実現すべきセキュリティ機能の一部をアプリケーションプロセッサで実装するケースもあり、アプリケーションプロセッサが攻撃の対象となる危険性が存在している。
【００１０】
例えば、データをアップロードする際にリプレイ攻撃を考慮し、カウンタ値を付加した後に暗号化するアプリケーションを以下に例示する。
【００１１】
TPMにはアクセス制御された安全性の高いカウンタがNV Indexとして用意され、更に物理的な安全性の高い暗号化手段も提供されているため、一般的にはアプリケーションプロセッサ［CPU］とTPMを用いて次のように処理系を構築することが多い。
プロセス_1［CPU］：TPMに対しカウンタ値［CNT］読出すよう指示
プロセス_2［TPM］：カウンタ値を応答する
プロセス_3［CPU］：取引データ［TRAN］とカウンタ値を結合し、平文［P］とする
P = CNT || TRAN［ただし、||はデリミタ無しでの結合を示す］
プロセス_4［CPU］：TPMに対し、平文を暗号鍵［Ke］で暗号化するよう指示
プロセス_5［TPM］：暗号化を行い、暗号文［C］を応答する
C = ENC( P, Ke )［ただし、ENC( P, Ke )はPをKeで暗号化する関数］
【００１２】
上記プロセスでは、プロセス1、3、及び4は物理的安全性が担保されていないアプリケーションプロセッサ上で実行されるため、プロセッサのコードが変更された場合にはカウンタ値が改ざんされる危険性が存在する。
【００１３】
また、仮にTPMを利用してアプリケーションプロセッサのソフトウェアが改ざん防止されているとした場合、攻撃対象はアプリケーションプロセッサ〜 TPM間の通信路となり、中間者攻撃［man-in-the-middle attack］によってカウンタ値が改ざんされる危険性が存在する。
【００１４】
eSIMではJava(登録商標)CardあるいはTrustZone等のマルチアプリケーション実装技術が導入されているが、これら技術は大規模なメモリ資源を必要とし、また十分なパフォーマンスを実現するにはCPU能力も必要とされるため、コスト制約の大きいコンシューマ製品には不向きであった。
【課題を解決するための手段】
【００１５】
（１）本発明の一態様は、IoT/MFP等に備わるカスタマイズ可能な暗号処理用プラットフォームで、プラットフォームはCPU、CPUの動作を制御するオブジェクトコード及びコードが利用する暗号鍵等の秘密情報を含む不揮発性メモリ、作業領域である揮発性メモリ、並びに少なくとも外部通信インタフェースを含む周辺装置制御用のレジスタを含み、オブジェクトコードは、電源ONを伴うコールドリセット時にデフォルト起動されるデフォルトコード、及びデフォルトコード動作時に特定イベントで起動されるカスタムコードを含み、デフォルトコードには少なくとも次の手段が実装され、
・外部通信インタフェースから入力されたデータの暗号化手段
・カスタムコード格納手段 
・カスタムコード起動手段 
更に、カスタムコードの起動手段に次の機能を付勢することによって、デフォルトコード及びデフォルトコードが使用する秘密情報をカスタムコードから保護することを特徴とする暗号処理用プラットフォームである。
・不揮発性メモリ、揮発性メモリ、及び/またはレジスタ格納値を利用して
コールドリセットと電源操作を伴わないウォームリセットを識別し、
起動トリガを判定する起動トリガ判定機能 
・カスタムコードの起動に先行して、カスタムコードの起動に関連する部分を
除くデフォルトコード及びデフォルトコードが使用する秘密情報をアクセス
禁止領域として規定するアクセス可能領域設定機能
・カスタムコードの起動に先行して、デフォルトコード起動時に初期化されない
揮発性メモリを初期化する揮発性領域初期化機能 
・カスタムコードへの分岐機能
【００１６】
（２）本発明の一態様は、上記（１）のIoT/MFP等に備わる、カスタマイズ可能な暗号処理用プラットフォームにおいて、デフォルトコードは外部通信インタフェースを介して入力された命令の解析及び実装手段を備え、特定命令受信時にソフトウェア割り込み等の割込みを利用してデフォルトコードを再起動することで、最終的にカスタムコードを起動することを特徴とする上記（１）の暗号処理用プラットフォームである。
【００１７】
（３）本発明の一態様は、上記（１）のIoT/MFP等に備わる、カスタマイズ可能な暗号処理用プラットフォームにおいて、カスタムコードに起動トリガ判定に利用される情報の変更手段を設け、同情報をコールドリセットと同条件、もしくはコールドリセットとウォームリセットとは異なる第3の条件に設定した後に、ソフトウェア割り込み等の割り込みを利用してデフォルトコードを再起動することで、デフォルトコードに再遷移可能としたことを特徴とする上記（１）または上記（２）の暗号処理用プラットフォームである。
【００１８】
（４）本発明の一態様は、上記（１）のIoT/MFP等に備わる、カスタマイズ可能な暗号処理用プラットフォームにおいて、少なくともデフォルトコード内の秘密情報を除くコードの一部をカスタムコードからアクセス可能領域として規定することを特徴とする上記（１）〜上記（３）の暗号処理用プラットフォームである。
【発明の効果】
【００１９】
本発明によれば、制約が大きいRAMが共用可能であり、認定コストを最小化し、さらにはセキュリティ強度の向上を図ることができるという効果が得られる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施例の暗号処理プラットフォーム の一例を示す図である。
【図２】本発明の実施時の暗号処理プラットフォームのメモリレイアウト の一例を示す図である。
【図３】信頼境界、暗号境界、及び攻撃可能面の関係の一例を示す図である。
【発明を実施するための形態】
【００２１】
外部システムに連動した本発明の実施の形態を図面に基づいて説明する。
【００２２】
カスタマイズ可能な暗号処理用プラットフォーム１００のハードウェアは、少なくともCPU、CPUの動作を制御するオブジェクトコード及びコードが利用する暗号鍵等の秘密情報を含むFLASH等の不揮発性メモリ１２１、作業領域であるRAM等の揮発性メモリ１１９、並びに少なくとも外部通信インタフェース１１８を含む周辺装置制御用のレジスタ１２０から構成され、これら構成要素は単一デバイス上に全て実装されても良いし、一部を外部デバイスとしても良い。
【００２３】
オブジェクトコードは、コールドリセット時にデフォルト起動されるデフォルトコード１０１、及びデフォルトコード１０１動作時に特定イベントで起動されるユーザ毎にカスタマイズ可能なカスタムコード１１５を含み、デフォルトコード１０１には少なくとも次の手段が実装される。
・外部通信インタフェース１１８から入力されたデータの暗号化手段１１１
・カスタムコード格納手段１１２
・カスタムコード起動手段１０２
【００２４】
外部通信インタフェース１１８及び暗号化手段１１１は公知であるために、ここでは詳述しない。
【００２５】
カスタムコード格納手段１１２は、外部通信インタフェース１１８を利用したカスタムコード１１５のダウンロードに相当する。
【００２６】
なお、外部通信インタフェース１１８の信号線に対する中間者［man-in-th-middle］攻撃が想定される際には暗号技術を応用したダウンロードデータの機密性 / 完全性確保手段を適用するが、その際にはIoT機器ベンダ毎に異なる鍵を設定する等の方策をとり、機器ベンダ毎にセキュリティ的な独立性を担保することは言うまでもない。
【００２７】
カスタムコード起動手段１０２は少なくとも次の機能を備えることによって、デフォルトコード１０１及びデフォルトコード１０１が使用するデフォルトコード秘密情報１１３をカスタムコード１１５から保護する。
・不揮発性メモリ１２１、揮発性メモリ１１９、及び/またはレジスタ１２０格納値
を利用してコールドリセットとウォームリセットを識別し、起動トリガを判定する
起動トリガ判定機能１０３
・カスタムコード１１５の起動に先行して、カスタムコード１１５の起動に関連する
部分を除くデフォルトコード１０１及びデフォルトコード１０１が使用する
デフォルトコード秘密情報１１３をアクセス禁止領域として規定する
アクセス可能領域設定機能１０５
・カスタムコード１１５の起動に先行して、デフォルトコード１０１起動時に初期化
されない揮発性メモリ１１９を初期化する揮発性領域初期化機能１０６
・カスタムコードへの分岐機能１０７
【００２８】
起動トリガ判定機能１０３は、物理的安全性の高い可搬媒体であるICカードに関する標準であるISO/IEC 7816-3で規定されたマルチプルリセットの実現手段として必要であることから、同媒体と同一デバイスが利用されることが多いTPM及びeSIMでは容易に実装が可能である。
【００２９】
また、それ以外のデバイスでは、ハードウェアとしての揮発性メモリ１１９初期値がコールドリセット後に不定となる性質を利用し、ウォームリセットに先行して固定データ列 を格納することで、統計的に十分に安全な識別手段が構築可能となる。
【００３０】
アクセス可能領域設定機能１０５は、例えばARMアーキテクチャであればMPU［memory protection unit］あるいはMMU［memory management］を利用して実現可能であり、本発明ではベンダが提供するデフォルトコード１０１及びデフォルトコード１０１が利用するデフォルトコード秘密情報１１３を保護対象とし、カスタムコード１１５が格納された領域からこれらへのアクセスを禁止する。
【００３１】
なお、デフォルトコード秘密情報１１３はハードコード［ROM内のデータ］としても良いし、デフォルトコード１０１内 に実装されたメモリハンドラを介してアクセスする形式で実装しても良い。
【００３２】
揮発性領域初期化機能１０６は、デフォルトコード１０１で使用したローカル変数、グローバル変数、及びキャッシュ情報を初期化することによって、デフォルトコード１０１に関するデフォルトコード秘密情報１１３が露呈することを防止する。
【００３３】
カスタムコードへの分岐機能１０７は、実装言語に応じた分岐命令あるいは関数コールによって簡易に実装可能である。
【００３４】
カスタムコード１１５はユーザが独自に規定可能で、その位置及びサイズは通常の開発同様にリロケータブルにソフトウェア記述しておけば、リンカにスキャッタロード記述ファイル等で位置属性を通知しカスタムコード１１５のメモリ上のイメージを生成しても良いし、デフォルトコード１０１内のカスタムコード格納手段１１２に格納位置を決定する手段を設けても良い。
【００３５】
また、暗号アルゴリズム等、通常開発者への実装負荷が大きい関数をライブラリ提供し、これらライブラリについてはカスタムコード１１５からアクセス可能とすることも可能だが、その際にはデフォルトコード秘密情報１１３を保護するために前記したMPUあるいはMMU等のハードウェアファイアウォールによっては別段のメカニズムが必要となるが、ここでは詳述しない。
【００３６】
本発明実施時の暗号処理プラットフォームメモリのレイアウトを図２に示す。
【００３７】
IoTに適したシングルチップ実装では、微細化が進んだ今日ではメモリセル実現時の面積が少ないFLASHは数100KB、大きいRAMは最大でも数10KBとソフトウェア開発時にはRAMの制約を受けることが多い。
【００３８】
本発明では、デフォルトコード１０１とカスタムコード１１５を切り替えて使用することによって、制約が大きいRAM２０４（図１：１１９）が共用可能である点が第一の利点として挙げられる。
【００３９】
また、ICカードで適用されるプロテクションプロファイルであるBSI-CC-PP-0084で要求される機能、またはFIPS PUB 140認定が必要となる機能をデフォルトコード１０１として実装し、更にデフォルトコード１０１及びデフォルトコード１０１が使用するデフォルトコード秘密情報１１３にカスタムコード１１５が影響を与えないことまでを含めてセキュリティ認定を一度取得することによって、これら認定が必要とされるIoTネットワーク機器に対する認定コストを最小化することができ、コスト制約の大きいIoTエコシステムの健全な発展を促すことが可能となる。
【００４０】
また、カスタムコード１１５についても、RAM２０４（図１：１１９）、レジスタ２０５（図１：１２０）及びレジスタ２０５（図１：１２０）によって制御される暗号処理ハードウェア１１４は共用可能ではあるものの、アクセス可能領域設定機能１０５がデフォルトコード１０１及びデフォルトコード１０１が使用するデフォルトコード秘密情報１１３をアクセス禁止領域として規定するため、不正なカスタムコード１１５によってこれら情報を参照しようとする中間者攻撃による危険性もなく、更にカスタムコード１１５に上記標準に適合したコーディングを実施することで通常運用に値する十分なセキュリティ強度を実現することは可能であり、必要に応じてセキュリティ認定も取得可能であることは言うまでもない。
【符号の説明】
【００４１】
１００   暗号処理用プラット―フォーム
１０１   デフォルトコード
１０２   カスタムコード起動手段
１０３   起動トリガ判定機能
１０４   判定(起動トリガ判定機能結果)
１０５   アクセス可能領域設定機能
１０６   揮発性領域初期化機能
１０７   カスタム機能への分岐機能
S１０８  コールドリセットステップ
S１０９  ウォームリセットステップ
１１０    デフォルト機能
１１１    暗号化手段
１１２    カスタムコード格納手段
１１３    デフォルトコード機密情報
１１４    暗号処理ハードウェア
１１５    カスタムコード
１１６    カスタム機能
１１７    カスタムコード機密情報
１１８    外部インタフェース
１１９    揮発性メモリ
１２０    レジスタ
１２１    不揮発性メモリ
２００    暗号処理プラットフォームメモリレイアウト
２０１    ベクタテーブル
２０２    不揮発性メモリ[デフォルトコード]
２０３    不揮発性メモリ[カスタムコード]
２０４    RAM[共用]
２０５    レジスタ[共用]
３００    システム
３０１    信頼境界
３０２    暗号境界
３０３    暗号鍵等の機密情報
３０４    アセット
３０５    I/OまたはAPI
３０６    セキュリティ脅威の主対象
３０７    attack surface
３０８    信頼境界線
【図１】
2020201526.tif 000003
【図２】
2020201526.tif 000004
【図３】
2020201526.tif 000005