ICカード利用の初期段階では、ICカード化によるセキュリティ性の 向上が強調された。しかし、電子マネーやプリペイドに代表される電子 商取引の用途では、高度な暗号・認証機能や複数のアプリケーションへ の適応性が求められると共に、一層の耐タンパ性(技術)の向上が要求さ れるようになってきた。
耐タンパ技術とは、外部からの不正な手続き等により、秘密の情報を
盗聴・改ざんすることや、本来の設計意図とは異なる不正な動作を行わせ
ること等を困難にするための物理的・論理的技術であり、ハードウェアに
よって実現されるものとソフトウェアによって実現されるものがある。
このような耐タンパ技術を使って実現されたものとしては、
CPU(Central Processing Unit)を内蔵したICカード(スマートカード)が代
表的である。ICカードは、内部の情報にアクセスするためには正規の手順
を踏むことが必要であり、外部から直接メモリにアクセスして情報を読み
出すことが困難な仕組みになっている。ICカードには、外部端子付きの接
触型ICカードと、外部端子のない非接触型ICカードがある。
ここでは、
ICカードの構造やハードウェアとソフトウェアによる耐タンパ技術を説明
する。
ICカードで一番セキュリティ性を要求されるのは、不揮発性メモリ
に保存される暗号鍵データである。
この暗号鍵データを取り出す
方法は、以下のような方法が挙げられる。
<解読方法>
<解読防止策>
図2-1 にICチップの構造を示す。
以下に、標的となるICカード/チップの主な構成要素を挙げ、それらの 耐タンパ性について述べる。
耐タンパ技術の階層図を図2-2に示す。
上記のことから、ICカードのハード的耐タンパ性は絶対的に安
全とはいえない。
実際のICは、カードのコスト制限の下に、ハード
的耐タンパ性にシステム面での対策を加え、以下のような技術の組み合
わせにより、耐タンパ性を確保することになる。
この時、耐タンパ性の評価指標(FTR; Figure of Tamper R
esistance) は、各々の耐タンパ策を打ち破るためのタンパ工程(i) に
おける所要時間(Ti) の総和と所要コスト(Ci) の
総和で与えられる。
これらの指標は、ICカードが適用されるアプリケー
ションやカードの運用方法に依存しないために、絶対指標 と呼ぶ。
これに対して、カードに有効期限(Tl) を設けた運用やタン
パに伴う不正利得や社会が被る損害(Ci) を考慮する場合は
相対指標 といい、
以下の式で表すことができ、
この値が 1 を大きく上回れば、耐タンパ性に優れていることになる。
FTR = 0.5 × {ΣTi/Tl + ΣCi/Cl}
また、表2-1 に耐タンパ性向上に指針を、表2-2 に公表されて いる耐タンパ技術を示す。
1 | シリアルなタンパ工程の増大/長時間化/高コスト化 |
2 | タンパ工程の分業困難化 |
3 | カード/チップ個別化:(例) 暗号鍵の個別付与 |
4 | チップ構造微細化・複雑化:(例) 多層配線化、回路規模増大化 |
5 | チップ/暗号等の更改期間短縮 |
6 | 回路/機能ブロック/CPU等の専用化 |
1. 電源電圧印加 | 規格外の電源電圧印加による動作不安定 を防止するため、電源電圧モニタ回路を内蔵。規格外の電源電圧では動 作停止 |
2. クロック周波数検知 | CPUへクロックを1 命令ごとに入 れながら解析するのを防止するため、低周波数検知回路を内臓 |
3. 温度検知 | LSI(Large Scale Integration)は規格外の 温度では正常に動作しないため、温度検知回路を内蔵し、規格外の温 度では動作停止 |
4. テストパッド切断、テスト回路無効化 | ICカードやIC チップの出荷検査に必要なテスト回路やテストパッド(端子)は、出荷 前に切断、無効化 |
5. 上層配線による下層構造の遮蔽 | 顕微鏡やプローバに よる物理的な解読を困難化するため、上層のダミー配線で下層配線や 回路を隠蔽 |
6. ROM/EEPROMのアドレススクランブル | メモリ内の情報 解読を困難化するため、メモリの論理アドレスを複雑/不規則化する |
ICカードのアーキテクチャは以下の2 つの要素が影響を与えている。
ICカードは端末から送信するコマンドに従って、演算を行い、結果をレ
スポンスで返却するという単純なモデルで作られている(図2-3 参照)。
コマンド、レスポンスの形式はAPDU という形式で規定され
ており、この形式はカード、カードOS の種別を問わず広く用いられている。
ここで、ICカードに対する脅威を以下のように分類する。
これらの脅威にシステム的に対抗するためには、ICカード内における認
証と内部データの保護機構の実現が基本となる。
以下から、これらの
脅威に対するシステム的な対抗手段を述べていく。
また、コスト面、認証精度の面などでPIN と置き換えるまでに至ってな いが、現在では本人の持つ身体的特徴(バイオメトリクス: 指紋、筆跡な ど)を用いた認証技術が開発中である。
ICカード内部に署名演算済みのデータを格納しておき、端末側から の要求に応じて送信し、端末側で検証することによりカーその正当性を証 明する。
(b) 動的認証(DDA: Dynamic Data Authentication)
上記の欠点に対処する方法が動的認証である。
これは、端末か
ら乱数を送信し、カード内で自分の秘密鍵により署名演算を施して端末に
返信する。この署名データを端末側でICカードの公開鍵により検証し、カ
ードの正当性を証明する。
⇒ DDAを実装するためには、カードのCPU
だけでは計算リソースが不足するため電子署名を高速で実行する専用コプ
ロセッサを内蔵することが必要。
外部認証: これは端末あるいはサービス ごとに持つ鍵ペアを用いて、ICカードからみた正当性を内部認証と逆方向 の認証を行って確認する。
※ 内部認証と外部認証の双方向を行うことを相互認証 と いい、本人認証と併せて認証の基本要素である。
※ 適切な運用とは、特に無効カードの鍵の失効を迅速に行 うことなどをいう。
図2-4 の例では、DF1の下に1、2、3 の3 つの鍵が存在し、それらの認 証状態(セキュリティステータス)は点線の枠内のようになっている。この 時、EF については、読出しは許可され、書込みは禁止となる。
電子マネーによる決済においては、誰が誰にいくら払うかといったよう なデータが回線上を流れることになる。決済を安全に行うためには、その データを第三者が盗聴・改ざんしたり、別の者がなりすましたりすること を防がなくてはならない。このような電子情報の取引ゆえの難しさや危険 性等を克服するためには、暗号技術の進歩が必要になる。
まず、暗号を理解する上で最低限知っておくべき用語について簡単に
触れておく。
普通に呼んでも意味の通じるオリジナルの文章や数列の
ことを「平文(ひらぶん)」と呼ぶ。平文を何らかの手段によって、第三者
にとって意味の通じないものにする行為を「暗号化」と呼ぶ。そして暗号
化された文章を「暗号文」といい、暗号文を平文に戻すことを「復号化」
と呼ぶ。この際用いられる暗号の方法論を「アルゴリズム」といい、この
際使うパラメータを「鍵」という。
大きく分けて暗号には二種類あり、
「共通鍵暗号(対称暗号)方式」と「公開鍵暗号(非対称暗号)方式」である。
共通鍵暗号(対称暗号)とは、暗号化と復号に同一の鍵を用いる暗号で ある。そのため、この鍵を秘密にしておかなければ、通信や保管データの 安全性が保てない。公開鍵(非対称)暗号方式が開発されるまで、可逆変換 可能な暗号方式は、この共通鍵暗号方式しかなかったため、慣用暗号とも 呼ばれる。また、暗号化/復号アルゴリズムの内部処理、および鍵の作用 から、対称暗号方式と呼ばれることもある。
暗号の分類として、平文データに対する操作の仕方により、以下の2 種 類が存在する。
公開鍵暗号(非対称暗号)とは、暗号化と復号に異なる鍵を用いる暗号 である。いずれか一方の鍵から他方の鍵が容易に計算できないため、一方 の鍵を公開することができるという特徴を有する。他方は秘密に保持する。
公開鍵暗号では、利用者Aが利用者Bに暗号通信する場合以下の手順 で行う。
[鍵生成] 各利用者は、あらかじめ一対の鍵を生成し、一方(公開 鍵(Public Key))を公開し、他方(秘密鍵(Private Key))を秘密に保持する。
[暗号化] 利用者Aは、利用者Bの公開鍵を用いて平文を暗号化して 利用者Bに送信する。
[復号] 利用者Bは、自分の秘密鍵を用いて受信した暗号文を復号 する。
この時公開鍵暗号は、以下の2つの条件を満たすように構成される。
これらの公開鍵暗号の特徴を共通鍵暗号の特徴と共に次の比較表に示す。
特徴 | 公開鍵暗号 | 共通鍵暗号 |
---|---|---|
a. 鍵の秘密配送 | ○不要 | ×必要 |
b. 秘密に保持する鍵 | ○自分の秘密鍵のみ | ×通信相手毎に必要 |
c. 電子署名 | ○可能 | ×困難 |
d. 処理速度 | ×低速 | ○高速 |
1976年にDiffie-Hellmanが公開鍵暗号の概念を発表して以来、これま で様々な公開鍵暗号方式が発表されてきた。公開鍵暗号は次の2つの観点 から分類できる。
公開鍵暗号は、暗号通信のみ可能な方式、電子署名のみ可能な方式、 暗号通信と電子署名の双方が可能な方式に分類できる。
実現機能 | 方式 |
---|---|
暗号通信及び署名通信 | RSA暗号、Rabin暗号など |
暗号通信のみ | ElGamal暗号、楕円曲線暗号(楕円ElGamal暗号)など |
署名通信のみ | ElGamal署名、Schnorr署名、DSA署名、楕円DSA署名など |
公開鍵暗号は、公開鍵から秘密鍵を計算すること(暗号解読)の難しさ が、古くから研究されている素因数分解問題や離散対数問題といった数 学問題を解くことの難しさに対応している。主な公開鍵暗号をそれらが 基づく数論によって分類したものを次に示す。
数論 | 方式 | |
---|---|---|
素因数分解問題 | n(=p*q)から素因数 p、q を求める問題 | RSA暗号、Rabin暗号、Williams暗号、逆数暗号、楕円RSA暗号など |
有限体上の離散対数問題 | Y(=gx mod p)、g、p(ここで p は素数または素数のべき、 g は有限体 Fp の原始元)から x を求める問題 | ElGamal暗号、ElGamal署名、DSA署名、Schnorr署名など |
楕円曲線上の離散対数問題 | Y(=x*G)、G(ここでY、Gは、有限体 Fp 上の楕円曲線E (Fp)上の点)から、x を求める問題 | 楕円暗号(楕円ElGamal暗号)、楕円DSA署名など |
RSA暗号は1977年に当時MITにいた3人の研究者 Rivest、Shamir、 Adlemanによって発明された世界初の公開鍵暗号で、素因数分解の困難さに 基づく公開鍵暗号である。
二つの大きな素数p、q から、その積 N = pq を求めることは簡単である。 しかし、N を素因数分解してp、q を求めることは困難である。因数分解を する効率的なアルゴリズムは見つからないだろうとする仮定を 素因数分解仮定という。
p が素数の時、フェルマーの小定理により、 a(p-1)≡ 1 (mod p) が成り立つ。ここで、両辺に a をかける と以下の式となる。
一般に、次の定理が成り立ち、これがRSA暗号の基本定理となる。
RSA暗号は、上記の素因分解仮定とフェルマーの小定理の拡張を組み合わ せることによって得られる。
利用者B(受信者)は、以下のアルゴリズムを実行する。
(1) 二つの大きな素数pB、qB を生成し、 NB = pBqB を計算する。
(2) gcd((pB-1)(qB-1), eB) = 1 となる eB をランダムに選ぶ。
(3) 拡張ユークリッドの互除法を ((pB-1)(qB-1), eB)に適用し、 eBdB ≡ 1 (mod (pB-1)(qB-1)) となる dB を求める。
(4) PK = (NB, eB) を公開鍵 として公開し、dB を秘密鍵として秘密に保持する。
※ (pB-1)(qB-1)の 代わりにλ(NB) = lcm (pB-1)(qB-1) を用いても良い。またlcm(a, b)は a と b の最小公倍数を表す。
利用者A(送信者)は、公開鍵(NB, eB)、及び平
文 m ∈ ZNBを入力とし、暗号文 C を以下の式に
より求める。
※ ZNB とは{ 0,…,N
B-1 } の整数の集合を表す。
C = meB mod NB
利用者Bは、秘密鍵 dB、及び暗号文 C を入力とし、平文 m を以下の式により復号する。
m = CdB mod NB
ElGamal暗号は、1982年にElGamalによって示された離散対数問題の困難 さに基づく初めての公開鍵暗号である。
この暗号の鍵生成アルゴリズム、暗号化アルゴリズム、及び復号アルゴ リズムは以下のように与えられる。
利用者B(受信者)は、まず、大きな素数 p、及び
乗法群Zp* の原始元 g を選ぶ。
次に、xB ∈ Zp-1をランダムに選び、
次の式を計算する。
※ 乗法群Zp* とは、
{ 1,…,p-1 }のうちp との最大公約数が1 (つまりp と互いに素)である整数の集合を表す。また、
p が素数の時、a ∈ Zp* に対し、ax ≡ 1 ( mod p )
となる最小の正整数x をa の位数といい、ordp(a)で表す。
原始元とは、p が素数の時、位数がordp(a) = p-1 となる数を表す。
YB = gxB mod p
最後に、利用者Bは、PK = (p, g, YB)を公開鍵とし て公開し、SK = xB を秘密鍵として秘密に保持する。
利用者A(送信者)は、利用者Bの公開鍵(p, g, YB)、及び 平文 m ∈ Zpを入力とし、r ∈ Zp-1をランダムに 選び、暗号文C(c1, c2)を以下の式より求める。
c1 = gr mod p
c2 = mYBr mod p
すなわち、暗号文(c1, c2) = (gr, mYBr) で与えられ、利用者Aはこ の暗号文を利用者Bに送る。
利用者B(受信者)は、秘密鍵 xB、及び 暗号文C = (c1, c2)を入力とし、復号文 m (平文) を以下の式により求める。
m = c2 / c1xB mod p
楕円曲線暗号は1985年にKoblitz氏とMiller氏がほぼ同じ時期に独立で 考案した。楕円曲線状の点に対して、有限群が定義できるが、この楕円曲線上 の離散対数問題は、現在のところ、指数的な時間をかけないと求まらない。 従って、楕円曲線上のElGamal暗号を構成できる。
素因数分解やZp*上の離散対数問題は準指数時 間で求まる。これに対し、楕円曲線上の離散対数問題は、現在のところ log p の指数時間かけないと求まらない。従って、RSA暗号の N や Zp*上のElGamal暗号の p の大きさが1024bit程度 必要なのに対し、楕円曲線上のElGamal暗号の場合、160bit程度で良い。 従って、鍵のbit長を短くできるということが楕円ElGamal暗号の長所である。
利用者B(受信者)は、まず、大きな素数 p、有限体Fp上の 楕円曲線E(Fp)、及びE(Fp)上 の有理点 G を選ぶ(G は生成元と呼ばれる)。 G の位数を q とする。次に、xB ∈ Zqをランダム に選び、次の式を計算する。
YB = GxB
最後に、利用者Bは、PK = (E(Fp), G, YB)を公開鍵として公開し、SK = xB を秘密鍵として秘密に保持する。
利用者A(送信者)は公開鍵(E(Fp), G, YB)、 及び平文 m ∈ Zpを入力とし、k ∈ Zp-1をラン ダムに選び、暗号文C(c1, c2)を以下の式により 求める。
c1 = Gk
c2 = m{YB}x mod p
※ {A}x : 楕円曲線上の点Aのx座標
利用者Bは、秘密鍵xB、及び 暗号文C = (c1, c2)を入力とし、 復号文 m (平文)を以下の式により求める。
m = c2 / {xBc1}x mod p
三次の多項式 f(x) = a3x3 + a2x2 + a1x + a0 が重解を持たない時
で表される曲線を楕円曲線と呼ぶ。
ここでは、簡単なため、p は5以上の素数であるとする。この時、有限体 F(p)上の楕円曲線の式E は、以下のような標準形で表すことができる。
E; y2 = x3 + ax + b (mod p)、 但し、4a3 + 27b2 ≠ 0 (mod p)
暗号を解読するための計算量は、一般に、攻撃者が利用できる攻撃の 種類や、解読のレベルによって変化する。以下に、公開鍵暗号の攻撃の種 類と解読のレベルについて示す。
攻撃の種類 | 内容 |
---|---|
(1)直接攻撃 | 公開鍵から直接秘密鍵を求める攻撃 |
(2)選択平文攻撃 | 攻撃者の選んだ平文に対する暗号文を用いる攻撃 |
(3)選択暗号文攻撃 | 攻撃者の選んだ暗号文に対する平文を用いる攻撃 |
(4)適応的選択暗号文攻撃 | 選択暗号文攻撃において、この攻撃で前に用いた平文から、 この攻撃 で次に用いる暗号文を選択できる場合 |
(ア)全面的解読 | ある公開鍵に対する秘密鍵を求めることができる場合 |
(イ)一般的解読 | 任意の暗号文に対する平文を求めることができる場合 |
(ウ)部分的解読 | 平文の一部を求めることができる場合 |
このうち、(1)及び(2)は、誰でも行える攻撃であるので、これらに対し て十分な安全性を有していなければならない。すなわちこれらの攻撃に対 して上記解読(ア)、(イ)、(ウ)が成立しないようにしなければならない。 (3)、(4)は一般的には成立し難いため、仮にこれらの攻撃に対して安全で ないとしても、実用上問題ないケースがある。このように、公開鍵暗号を 使用する場合は、想定する攻撃の種類と解読レベルに応じて適切な公開鍵 暗号を利用する必要がある。
RSA暗号、ElGamal暗号および楕円曲線暗号における鍵サイズと解読計 算量の関係を表2-8 に示す。
ここでは、RSA暗号、ElGamal暗号、および楕円曲線暗号に対して、 現在知られている最良の解法を適用(表2-6 (2) 参照)した場合を仮定し ている。
RSA暗号(bit) | ElGamal暗号(bit) | 楕円曲線暗号(bit) | 解読計算量(MIPS*YEAR) |
512 | 512 | 100 | 3*104 |
768 | 768 | 128 | 2*108 |
1024 | 1024 | 160 | 3*1011 |
2048 | 2048 | 224 | 1021 |
ここでMIPS*YEARは、1 MIPSマシン(1 秒に106回演算を 行う能力を有するマシン)を1 年間動かし続けて得られる計算量であり 3.15*1013回の演算に相当する。