(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-12
(45)【発行日】2022-12-20
(54)【発明の名称】セキュアエレメント
(51)【国際特許分類】
H04L 9/10 20060101AFI20221213BHJP
G06F 21/72 20130101ALI20221213BHJP
【FI】
H04L9/10
G06F21/72
(21)【出願番号】P 2019097664
(22)【出願日】2019-05-24
【審査請求日】2022-03-25
(73)【特許権者】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】100122529
【氏名又は名称】藤枡 裕実
(74)【代理人】
【識別番号】100135954
【氏名又は名称】深町 圭子
(74)【代理人】
【識別番号】100119057
【氏名又は名称】伊藤 英生
(74)【代理人】
【識別番号】100131369
【氏名又は名称】後藤 直樹
(74)【代理人】
【識別番号】100171859
【氏名又は名称】立石 英之
(72)【発明者】
【氏名】高木 桂子
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2017-072897(JP,A)
【文献】特開2008-252299(JP,A)
【文献】特開2007-334660(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
G06F 21/72
(57)【特許請求の範囲】
【請求項1】
数式を定義する暗号パラメータを必要とする暗号演算に係る処理を行う暗号演算コプロセッサと,前記暗号演算コプロセッサを利用して前記暗号演算を行う暗号演算部を備え,前記暗号演算部は,前記暗号演算コプロセッサに前記暗号パラメータを入力すると,この前記暗号パラメータのチェックコードを同一性確認用のチェックコードとしてメモリに保存し,前記同一性確認用のチェックコードとしてメモリに保存した状態で,前記暗号パラメータを前記暗号演算コプロセッサに入力する場合,前記暗号パラメータを前記暗号演算コプロセッサに入力する前に,前記暗号演算コプロセッサに入力する前記暗号パラメータのチェックコードと,この時点でメモリに保存されている前記同一性確認用のチェックコードを比較し,これらのチェックコードが一致すると,前記暗号パラメータを前記暗号演算コプロセッサに入力しない動作を行うことを特徴とするセキュアエレメント。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は,耐タンパー性を有するワンチップマイコンであるセキュアエレメントに関する。
【背景技術】
【0002】
セキュアエレメントは,耐タンパー性を有するワンチップマイコンである。セキュアエレメントには,特定のシステム(例えば,決済システム)で利用され,複数回の暗号演算(暗号化または復号)を必要とする一連のシーケンスを実行するアプリケーションが実装される。
【0003】
セキュアエレメントは,暗号演算の高速化を図るため,CPU(Central Processing Unit)に代わって暗号演算を行う暗号演算コプロセッサを備える。例えば,特許文献1で開示されている半導体処理装置(ICカード)は,RSAや楕円曲線暗号に係る剰余演算をCPUに代わって行う暗号演算コプロセッサを備えている。
【0004】
数式を定義する暗号パラメータを必要とする暗号演算の場合,暗号演算コプロセッサを用いた暗号演算を行う前に,暗号演算で必要な暗号パラメータを暗号演算コプロセッサに入力することが必要になる。例えば,特許文献2で開示されている楕円積和演算計算装置は,楕円積和演算を行う際,楕円積和演算に必要な暗号パラメータP,Q,R,a,b,cなどを演算回路に設定し,T=aP+bQ+cRを演算回路に計算させる。
【0005】
暗号演算に必要な暗号パラメータのデータ長が短い場合,暗号演算を行う毎に,暗号演算に必要な暗号パラメータ全てを暗号演算コプロセッサに入力しても,アプリケーションが実行するシーケンスに必要な時間はさほど変わらない。しかし,暗号演算に必要な暗号パラメータのデータ長が長い場合,暗号演算を行う毎に,暗号演算に必要な暗号パラメータ全てを暗号演算コプロセッサに入力すると,暗号演算に必要な暗号パラメータ全てを暗号演算コプロセッサに入力するための時間が,アプリケーションが実行するシーケンスに必要な時間が長くなる一つの要因になる。
【0006】
RFC5639で規定されている楕円曲線暗号で上記の問題を説明する。
図4は,RFC5639で規定されている楕円曲線暗号において,楕円曲線の定義に必要な暗号パラメータを説明する図である。RFC5639で規定されている楕円曲線暗号に必要な暗号パラメータのビット数には160ビットもあるが,
図6では,512ビットの暗号パラメータを図示している。
【0007】
RFC5639で規定されている楕円曲線暗号に必要な暗号パラメータは,p(標数),A(数式1の係数),B(数式1の係数),x(ベースポイントのx座標の値),y(ベースポイントのy座標の値),q(素数位数),h(補因子)を暗号パラメータとして含む。
【数1】
【0008】
図4で図示したように,RFC5639で規定されている512ビットの楕円曲線暗号では,h以外の6個の暗号パラメータはすべて512ビットになる。暗号パラメータを変更せずに複数回の楕円曲線暗号演算を実行する場合,6個の512ビットの暗号パラメータを暗号演算コプロセッサに入力する処理が一回で済めば,アプリケーションが実行するシーケンスに必要な時間を短縮できる。
【先行技術文献】
【特許文献】
【0009】
【文献】特開2008-310950号公報
【文献】特開2004-233530号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
このことを鑑みて,本発明は,数式を定義する暗号パラメータを必要とする暗号演算に係る処理を行う暗号演算コプロセッサを備えたセキュアエレメントにおいて,暗号パラメータを変更せずに複数回の暗号演算を実行する場合,暗号パラメータを暗号演算コプロセッサに入力する処理が一回で済むようにすることを目的とする。
【課題を解決するための手段】
【0011】
上述した課題を解決する第1発明は,数式を定義する暗号パラメータを必要とする暗号演算に係る処理を行う暗号演算コプロセッサと,前記暗号演算コプロセッサを利用して前記暗号演算を行う暗号演算部を備え,前記暗号演算部は,前記暗号演算コプロセッサに前記暗号パラメータを入力すると,この前記暗号パラメータのチェックコードを同一性確認用のチェックコードとしてメモリに保存し,前記同一性確認用のチェックコードとしてメモリに保存した状態で,前記暗号パラメータを前記暗号演算コプロセッサに入力する場合,前記暗号パラメータを前記暗号演算コプロセッサに入力する前に,前記暗号演算コプロセッサに入力する前記暗号パラメータのチェックコードと,この時点でメモリに保存されている前記同一性確認用のチェックコードを比較し,これらのチェックコードが一致すると,前記暗号パラメータを前記暗号演算コプロセッサに入力しない動作を行うことを特徴とするセキュアエレメントである。
【発明の効果】
【0012】
本発明に係るセキュアエレメントによれば,暗号演算コプロセッサに入力する暗号パラメータと,暗号演算コプロセッサに入力されている暗号パラメータが同一の場合,暗号パラメータを暗号演算コプロセッサに入力しないようにできる。
【図面の簡単な説明】
【0013】
【
図2】セキュアエレメントのアーキテクチャを説明する図。
【
図3】セキュアエレメントが備える暗号演算部の動作を説明する図。
【
図4】楕円曲線暗号に必要な暗号パラメータを説明する図。
【発明を実施するための形態】
【0014】
ここから,本発明に係る実施形態について記載する。本実施形態は,本発明の理解を容易にするためのものであり,本発明は,本実施形態に限定されるものではない。また,特に断りのない限り,図面は,本発明の理解を容易にするために描かれた模式的な図である。
【0015】
図1は,本実施形態に係るセキュアエレメント1を説明する図である。セキュアエレメント1は耐タンパー性を有するワンチップマイコンである。
図1で図示したように,セキュアエレメント1は,モバイル端末1a,SIM1b,ICカード1cなど,セキュアな取引(例えば,決済取引)を行うための媒体や装置に実装される。
【0016】
図2は,セキュアエレメント1のアーキテクチャを説明する図である。
図2で図示したセキュアエレメント1のアーキテクチャには,ハードウェア10,オペレーティングシステム11およびアプリケーション12を含んでいる。
【0017】
セキュアエレメント1のハードウェア10はワンチップマイコンになる。セキュアエレメント1のハードウェア10では,中央演算処理装置であるCPU101(Central Processing Unit),メインメモリとなるRAM102(Random Access Memory),電気的に書き換え可能な不揮発性メモリであるNVM103(Non-volatile memory),時間を計測するTimer104および上位装置と接続するためのI/O105に加え,CPU101に代わって所定の暗号演算を行う暗号演算コプロセッサ106がインターフェイス107に接続している。暗号演算コプロセッサ106に行わせる暗号演算は,数式を定義する暗号パラメータを必要とする暗号演算で,このような暗号演算としては楕円曲線暗号が有名である。
【0018】
セキュアエレメント1のオペレーティングシステム11は,ハードウェア10を利用した機能を提供するソフトウェアである。アプリケーション12は,複数回の暗号演算を必要とする一連のシーケンスを実行するソフトウェアで,オペレーティングシステム11上で動作するソフトウェアである。
【0019】
セキュアエレメント1のオペレーティングシステム11は,ハードウェア10を利用する様々な機能をアプリケーション12に提供する。セキュアエレメント1は,この機能の一つとして,暗号演算コプロセッサ106に暗号演算を行わせる暗号演算部110と,暗号演算部110を利用するための複数種のAPI111(Application Programming Interface)を有している。暗号演算部110は,CPU101を動作させるコンピュータプログラムで実現される機能で,オペレーティングシステム11がアプリケーション12に提供するライブラリに暗号演算部110を含ませることができる。
【0020】
暗号演算部110を利用するためのAPI111の詳細仕様は任意である。ここでは,暗号パラメータを設定するAPI111,暗号鍵を設定するAPI111,演算対象データを設定するAPI111および暗号演算を実行させるAPI111が,暗号演算部110を利用するためのAPI111に含まれる。暗号パラメータを設定するAPI111は,暗号パラメータの種類ごとに用意されるのが一般的である。例えば,RFC5639で規定されている楕円曲線暗号の場合,p,A,B,x,y,qおよびhごとに,暗号パラメータを設定するAPI111が用意される。
【0021】
オペレーティングシステム11の暗号演算部110は,アプリケーションが実行するシーケンスに必要な時間の短縮を目的として,暗号パラメータを変更せずに複数回の暗号演算を実行する場合,暗号パラメータを暗号演算コプロセッサ106に入力する処理が一回で済むように構成されている。
【0022】
暗号演算部110は,暗号パラメータの同一性確認に,暗号パラメータの特徴を示すデータであるチェックコードを利用する。本実施形態において,暗号パラメータの同一性確認とは,アプリケーション12から引き渡され,暗号演算コプロセッサ106に入力する暗号パラメータと,暗号演算部110に設定されている暗号パラメータが同一であるか確認することを意味する。暗号パラメータの特徴を示すチェックコードとしては,例えば,多項式により演算されるCRC(Cyclic Redundancy Check)などの誤り検出符号や,SHA2(Secure Hash Algorithm)などのハッシュ関数から演算されるハッシュ値を用いることができる。
【0023】
暗号パラメータの同一性確認を実行できるように,暗号演算部110は,暗号演算コプロセッサ106に暗号パラメータを入力すると,この暗号パラメータのチェックコードを同一性確認用のチェックコードとしてメモリに保存する。同一性確認用のチェックコードはRAM102に格納するのが一般的であるが,同一性確認用のチェックコードはNVM103に格納することもできる。
【0024】
暗号演算部110は,同一性確認用のチェックコードとしてメモリに保存した状態で,アプリケーション12から引き渡された暗号パラメータを暗号演算コプロセッサ106に入力する場合,暗号パラメータを暗号演算部110に入力する前に,アプリケーション12から引き渡された暗号パラメータのチェックコードと,この時点でメモリに保存されている同一性確認用のチェックコードと比較する。これらのチェックコードが一致すると,暗号演算部110は,アプリケーション12から引き渡された暗号パラメータは暗号演算コプロセッサ106に入力されていると判断し,暗号パラメータを暗号演算コプロセッサ106に入力しない。
【0025】
図3は,セキュアエレメント1が備える暗号演算部110の動作を説明する図である。暗号演算部110は,アプリケーション12がAPI111の一つを呼び出すと起動し,アプリケーション12が呼び出したAPI111の種類により処理を多岐分岐する(S1)。
【0026】
アプリケーション12が呼び出したAPI111が,暗号パラメータを設定するAPI111の場合,暗号演算部110は,暗号パラメータの設定に係る処理(S2)を実行する。暗号パラメータを設定するAPI111の引数には,暗号パラメータの種類と暗号パラメータそのものが含まれる。
【0027】
暗号パラメータの設定に係る処理(S2)において,暗号演算部110は,まず,API111を利用してアプリケーション12から引き渡された暗号パラメータのチェックコードを演算する(S20)。例えば,チェックコードにハッシュ値を用いる場合,暗号演算部110は,暗号パラメータをSHA2などのハッシュ関数に代入することで,暗号パラメータのチェックコードを演算する。
【0028】
次に,暗号演算部110は,アプリケーション12から引き渡された暗号パラメータの種類に対応する同一性確認用のチェックコードをメモリから取得し(S21),同一性確認用のチェックコードの有無により処理を分岐する(S22)。
【0029】
同一性確認用のチェックコードがメモリに無い場合,暗号演算部110は,暗号パラメータは暗号演算コプロセッサ106に入力されていないため,暗号パラメータを暗号演算コプロセッサ106に入力するステップ(S24)に進む。
【0030】
同一性確認用のチェックコードがメモリに有る場合,暗号演算部110は,アプリケーション12から引き渡された暗号パラメータから演算したチェックコードと同一性確認用のチェックコードを比較する(S23)。
【0031】
アプリケーション12から引き渡された暗号パラメータから演算したチェックコードと同一性確認用のチェックコードが一致することは,この時点で,アプリケーション12から引き渡された暗号パラメータがすでに暗号演算部110に入力されていることを意味する。よって,暗号演算部110は,暗号パラメータの入力に係る時間を省くため,アプリケーション12から引き渡された暗号パラメータを暗号演算コプロセッサ106に入力することなく,暗号パラメータの設定に係る処理(S2)を終了する。
【0032】
アプリケーション12から引き渡された暗号パラメータから演算したチェックコードと同一性確認用のチェックコードが一致しないことは,この時点で,アプリケーション12から引き渡された暗号パラメータとこの時点で暗号演算部110に入力している暗号パラメータが異なることを意味する。よって,暗号演算部110は,暗号演算コプロセッサ106に入力した暗号パラメータを更新するため,アプリケーション12から引き渡された暗号パラメータを暗号演算コプロセッサ106に入力する(S24)。次に,暗号演算部110は,同一性確認用のチェックコードを更新するため,アプリケーション12から引き渡された暗号パラメータの種類に関連付けてメモリに保存されている同一性確認用のチェックコードを,アプリケーション12から引き渡された暗号パラメータから演算したチェックコードに書き換える処理を実行し(S25),暗号パラメータの設定に係る処理(S2)を終了する。
【0033】
例えば,暗号演算部110が対応している暗号演算が,RFC5639で規定されている楕円曲線暗号の場合,少なくともp,A,B,x,y,qに,暗号パラメータの設定に係る処理(S2)が繰り返し実行されることになる。なお,hは1バイトの値になるため,暗号パラメータの同一性確認を省いてもよい。
【0034】
アプリケーション12が呼び出したAPI111が,暗号パラメータを設定するAPI111以外の場合について説明しておく。
【0035】
アプリケーション12が呼び出したAPI111が,暗号鍵を設定するAPI111の場合,暗号演算部110は,暗号鍵の設定に係る処理(S3)を実行する。暗号鍵を設定するAPI111の引数には暗号鍵が含まれ,暗号演算部110は,この暗号鍵を暗号演算コプロセッサ106に入力して,暗号鍵の設定に係る処理(S3)を終了する。
【0036】
アプリケーション12が呼び出したAPI111が,演算対象データを設定するAPI111の場合,暗号演算部110は,演算対象データの設定に係る処理(S4)を実行する。演算対象データを設定するAPI111の引数には演算対象データが含まれ,暗号演算部110は,この演算対象データを暗号演算コプロセッサ106に入力して,演算対象データの設定に係る処理(S4)を終了する。
【0037】
アプリケーション12が呼び出したAPI111が,暗号演算を実行するAPI111の場合,暗号演算部110は,暗号演算の実行に係る処理(S5)を実行する。暗号演算を実行するAPI111の引数には暗号演算の種類(暗号化または復号)が含まれ,暗号演算部110は,この暗号演算の種類を暗号演算コプロセッサ106に入力して,暗号演算コプロセッサ106に暗号演算を実行させて,暗号演算の実行に係る処理(S5)は終了する。
【符号の説明】
【0038】
1 セキュアエレメント
10 ハードウェア
106 暗号演算コプロセッサ
11 オペレーティングシステム
110 暗号演算部
111 API
12 アプリケーション