2章. 準備

2.1. ICカードはなぜ安全といえるのか

ICカード利用の初期段階では、ICカード化によるセキュリティ性の 向上が強調された。しかし、電子マネーやプリペイドに代表される電子 商取引の用途では、高度な暗号・認証機能や複数のアプリケーションへ の適応性が求められると共に、一層の耐タンパ性(技術)の向上が要求さ れるようになってきた。

耐タンパ技術とは、外部からの不正な手続き等により、秘密の情報を 盗聴・改ざんすることや、本来の設計意図とは異なる不正な動作を行わせ ること等を困難にするための物理的・論理的技術であり、ハードウェアに よって実現されるものとソフトウェアによって実現されるものがある。 このような耐タンパ技術を使って実現されたものとしては、 CPU(Central Processing Unit)を内蔵したICカード(スマートカード)が代 表的である。ICカードは、内部の情報にアクセスするためには正規の手順 を踏むことが必要であり、外部から直接メモリにアクセスして情報を読み 出すことが困難な仕組みになっている。ICカードには、外部端子付きの接 触型ICカードと、外部端子のない非接触型ICカードがある。
ここでは、 ICカードの構造やハードウェアとソフトウェアによる耐タンパ技術を説明 する。

2.1.1. ハード的耐タンパ技術

ICカードで一番セキュリティ性を要求されるのは、不揮発性メモリ に保存される暗号鍵データである。
この暗号鍵データを取り出す 方法は、以下のような方法が挙げられる。

<解読方法>

  1. チップ解析(物理的攻撃):
    ICチップをカードから取り出し、端子をあてる信号検出などの電気 的解析あるいは顕微鏡による観察など物理的解析を行ないカード内情報 を不正に読み出す。
  2. ICチップ動作時の信号統計解析(論理的攻撃):
    ICチップの行なう処理によって変化する電力消費量や処理時間等を 測定し、統計的に解析することでカード内の情報を推測する。

<解読防止策>

  1. ICチップの取り出し困難なカード構造(こじ開け時は破損する等)の 採用。チップ内の多層化、ダミー回路形成などによる物理的解析の困難 化。異常検出センサなどによる電気的解析の困難化。
  2. 回路の冗長な駆動による消費電力、処理時間を攪拌(均一化または 不均一化)などによる信号統計解析の困難化。

図2-1 にICチップの構造を示す。

図2-1 ICチップの構造
図2-1

以下に、標的となるICカード/チップの主な構成要素を挙げ、それらの 耐タンパ性について述べる。

1. カード/チップ実装
暗号鍵データを取り出すにはチップの取出し・剥離と表面/裏面の 露出が必要
⇒ カードは薄型構造で、実装に用いることが できる材料は容易に加工・除去が可能なため、実装のみによる耐タン パ性の確保は困難。

2. ROM
マスクROMには、OS、アプリケーション、ICの試験用プログラムや データが格納されている。
メモリセル(ビット)を構成するMOSFET は、イオン注入によるチャネルドープの有無でデータ書込みが行われ るため、顕微鏡やSEM(Scanning Electron Microscope:走査型電 子顕微鏡)による表面観察だけでは解読不可能。
しかし、 各ビットの電位をマニュアルプローバ(探針)を用いて測 定する方法や、SCM(Scanning Capacitance Microscopy:走査型 容量顕微鏡)を用いたビットパターン観察などにより、容易に 解読可能。

3. 不揮発性メモリ
不揮発性メモリとして広く用いられるEEPROM も探針を 用いてビットデータを容易に読み取ることができる。
ROM や不揮 発性メモリの耐タンパ性の向上のためには、探針などによる解読を困 難化する配線構造やレイアウトの工夫が必要である。

4. データバス
不揮発性メモリとCPU/暗号・認証コプロセッサを結ぶデータバス 上を暗号鍵が往来する。
データバス上の信号は、探針や電子ビー ムテスタを用いれば容易に観測できる。また、データバスを下層配線 で形成し、その上を他の信号線で完全に覆うことは困難である。
ダミー配線で覆うことは可能だが、ダミー配線は除去されてもIC動作 に影響を与えないため、FIB(Focused Ion Beam)などの薄 膜除去技術を用いて容易に除去できる。

5. 試験回路
製造時の試験を目的として、試験用回路やテストパッドがICに組 み込まれている。
通常、この回路が解読されると、不揮発性メモ リの内容がテストパッドから容易に読み出せる。一方、試験回路を組 み込まないと、製造/出荷時の試験が困難になったり、長時間/高コス トを要することになる。
⇒これまで、タンパ対策として、試験後 に試験回路やテストパッドを切り離す試みがなされたきたが、リ ペア技術 を使って容易に再接続することが可能で、有効とは言 えない。少なくとも、不揮発性メモリの内容を直接読み出さない試験 方法が必要である。

耐タンパ技術の階層図を図2-2に示す。

図2-2 耐タンパ技術の階層
図2-2

上記のことから、ICカードのハード的耐タンパ性は絶対的に安 全とはいえない。
実際のICは、カードのコスト制限の下に、ハード 的耐タンパ性にシステム面での対策を加え、以下のような技術の組み合 わせにより、耐タンパ性を確保することになる。

  1. 物理レベルは、ICチップの取出し、剥離、回路やメモリの物理 的解読や破壊などに対する防止技術。
  2. 論理レベルは、不適正な電気信号や電源電圧印加によるIC動作 の制御、探針による電気信号読取り等に対する防止技術。
  3. 機能レベルは、CPU、コプロセッサ、メモリアクセスなどの機 能、及びその構成の解読に対する防止技術。
  4. OS/APレベルは、アプリケーション間の干渉やウイルス汚染な どに対する防止技術。
  5. 運用レベルは、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 に公表されて いる耐タンパ技術を示す。

表2-1 耐タンパ性向上の指針
1 シリアルなタンパ工程の増大/長時間化/高コスト化
2 タンパ工程の分業困難化
3 カード/チップ個別化:(例) 暗号鍵の個別付与
4 チップ構造微細化・複雑化:(例) 多層配線化、回路規模増大化
5 チップ/暗号等の更改期間短縮
6 回路/機能ブロック/CPU等の専用化
表2-2 公表されている耐タンパ技術
1. 電源電圧印加規格外の電源電圧印加による動作不安定 を防止するため、電源電圧モニタ回路を内蔵。規格外の電源電圧では動 作停止
2. クロック周波数検知CPUへクロックを1 命令ごとに入 れながら解析するのを防止するため、低周波数検知回路を内臓
3. 温度検知LSI(Large Scale Integration)は規格外の 温度では正常に動作しないため、温度検知回路を内蔵し、規格外の温 度では動作停止
4. テストパッド切断、テスト回路無効化ICカードやIC チップの出荷検査に必要なテスト回路やテストパッド(端子)は、出荷 前に切断、無効化
5. 上層配線による下層構造の遮蔽顕微鏡やプローバに よる物理的な解読を困難化するため、上層のダミー配線で下層配線や 回路を隠蔽
6. ROM/EEPROMのアドレススクランブルメモリ内の情報 解読を困難化するため、メモリの論理アドレスを複雑/不規則化する

2.1.2. ICカードの認証技術

(1) ICカードのデータ管理の考え方

ICカードのアーキテクチャは以下の2 つの要素が影響を与えている。

  1. メモリ、CPUパワーなどが現状のパソコンの水準より2 〜 3 桁少ない。
  2. 機密データを入れておくための入れ物。内部データにはフリーアクセ ス可能なものから、絶対に読み出された困る秘密鍵まで、セキュリティレ ベル、あるいはサービスからの要求に従ったきめ細かな管理をすることが 要求される。

(2) ICカードの動作モデル

ICカードは端末から送信するコマンドに従って、演算を行い、結果をレ スポンスで返却するという単純なモデルで作られている(図2-3 参照)。
コマンド、レスポンスの形式はAPDU という形式で規定され ており、この形式はカード、カードOS の種別を問わず広く用いられている。

図2-3 ICカードの動作とコマンド形式
図2-3

(3) ICカードの認証・データ保護技術

ここで、ICカードに対する脅威を以下のように分類する。

これらの脅威にシステム的に対抗するためには、ICカード内における認 証と内部データの保護機構の実現が基本となる。
以下から、これらの 脅威に対するシステム的な対抗手段を述べていく。

1. 本人認証
カードを用いてサービスを受けようとする時、まずカード所有者がそ のカードを使用していることの認証を行うことが求められる。(本人認証 技術)
他人カードの使用を禁止する方法として、ICカード内に記憶される暗 証番号(PIN : Personal Identification Number )を用いるのが 一般的である。PIN 認証にも以下の 2 つがある。
1. オンライン(サーバ側で持っているPINを使用)
2. オフライン(ICカード内のPINを使用)

また、コスト面、認証精度の面などでPIN と置き換えるまでに至ってな いが、現在では本人の持つ身体的特徴(バイオメトリクス: 指紋、筆跡な ど)を用いた認証技術が開発中である。

2. 内部認証と外部認証
・ 内部認証
ICカードが偽造・変造されたものでないと確認するために内部認 証 が用いられ、認証の手段として静的認証動的認 証 の2 つのいずれかが用いられる。
(a) 静的認証(SDA: Static Data Authentication)

ICカード内部に署名演算済みのデータを格納しておき、端末側から の要求に応じて送信し、端末側で検証することによりカーその正当性を証 明する。

<特徴>: カード内における演算量が少なくてす むため、計算リソ−スが少ないカードでも高速に演算できる。
<欠点>: 毎度、同一のデータをカードから送信 するため、偽造されるリスクが高くなる。

(b) 動的認証(DDA: Dynamic Data Authentication)

上記の欠点に対処する方法が動的認証である。
これは、端末か ら乱数を送信し、カード内で自分の秘密鍵により署名演算を施して端末に 返信する。この署名データを端末側でICカードの公開鍵により検証し、カ ードの正当性を証明する。
⇒ DDAを実装するためには、カードのCPU だけでは計算リソースが不足するため電子署名を高速で実行する専用コプ ロセッサを内蔵することが必要。

・ 外部認証
ICカードの偽造・変造対策には、単にICカードの正当性を確認するだ けでなく、不正な端末あるいはアプリケーションによるICカードの解析を 阻止する必要がある。そのために外部認証 が用いられる。

外部認証: これは端末あるいはサービス ごとに持つ鍵ペアを用いて、ICカードからみた正当性を内部認証と逆方向 の認証を行って確認する。

※ 内部認証と外部認証の双方向を行うことを相互認証 と いい、本人認証と併せて認証の基本要素である。

3. ICカードの鍵管理
ICカードの認証を行う時、正しいICカードの鍵ペア(公開鍵、秘密鍵) を使用することが重要であるが、もしICカードの鍵を生成する技術を持っ た者がいたら、偽の公開鍵をサーバにつかませることにより、偽造カード を用いた「なりすまし」のリスクが生まれる。
⇒ こ のようなことを防ぐために、以下のような運用を行うことが重要である。
・ 鍵ペアは安全な場所(理想的にはICカード内)で生成し、秘密鍵は ICカードに書き込んだ後消去し、公開鍵は認証機関に登録する。
・ ICカードの認証を行う時は、認証機関より公開鍵を認証機関の証 明書の形で取得する。認証機関は、登録された公開鍵の適切な運用 を行う。

※ 適切な運用とは、特に無効カードの鍵の失効を迅速に行 うことなどをいう。

4. ICカードのオーソリゼーション
ICカードのサービスを受ける資格があるか否かをチェックする。
チェック内容はサービス依存であり、例えば、会員資格を保有してい るかやクレジットの月ごとの支払い限度額を超えていないかなどが考えら れる。
チェックは、サービスごとのサーバとの交信により行われるが、 常にオンラインでの照合を必要条件とすると、通信・サーバアクセスによ るコストの増大をまねく。
⇒ これを回避すため以下のような
1. 失効カードのリストの配布
2. ある条件によりオンラインとオフラインとを使い分ける
などが規定されている。

5. ICカード内部データへのアクセス権限の管理
ICカード内の鍵を除くデータで、前に述べたような認証処理が終わっ ても全て自由に読み書きできるものではない。
特定の権限を保有する 者のみが変更できるデータなど、様々なカテゴリーが存在する。
⇒ このようなアクセス権限の管理はセキュリティ属性(個 別ファイルの読み書き交信等の権限設定)とセキュリティステータス (各種演算を行った状態)の2 つの組合せで行われる(図2-4 参照)。
※ ICカードはファイル単位での細かいアクセスが可能である。

図2-4 の例では、DF1の下に1、2、3 の3 つの鍵が存在し、それらの認 証状態(セキュリティステータス)は点線の枠内のようになっている。この 時、EF については、読出しは許可され、書込みは禁止となる。

図2-4 カード内部データアクセス制御例
図2-4

6. セキュアメッセージング
端末装置により、リーダ/ライタを経由してICカードに送られるデータ を途中で盗聴することは比較的容易である。
そのため、盗聴を無効化する(盗聴されても分からないようにする)ために以下のような手段の一方 もしくは両方が用いられる。
1. 通信路上のデータを暗号化
2. 電子署名もしくはメッセージ認証子を付加する

2.2. 暗号とは

電子マネーによる決済においては、誰が誰にいくら払うかといったよう なデータが回線上を流れることになる。決済を安全に行うためには、その データを第三者が盗聴・改ざんしたり、別の者がなりすましたりすること を防がなくてはならない。このような電子情報の取引ゆえの難しさや危険 性等を克服するためには、暗号技術の進歩が必要になる。

まず、暗号を理解する上で最低限知っておくべき用語について簡単に 触れておく。
普通に呼んでも意味の通じるオリジナルの文章や数列の ことを「平文(ひらぶん)」と呼ぶ。平文を何らかの手段によって、第三者 にとって意味の通じないものにする行為を「暗号化」と呼ぶ。そして暗号 化された文章を「暗号文」といい、暗号文を平文に戻すことを「復号化」 と呼ぶ。この際用いられる暗号の方法論を「アルゴリズム」といい、この 際使うパラメータを「鍵」という。
大きく分けて暗号には二種類あり、 「共通鍵暗号(対称暗号)方式」と「公開鍵暗号(非対称暗号)方式」である。

2.2.1. 共通鍵暗号(対称暗号)

(1) 共通鍵暗号(対称暗号)とは

共通鍵暗号(対称暗号)とは、暗号化と復号に同一の鍵を用いる暗号で ある。そのため、この鍵を秘密にしておかなければ、通信や保管データの 安全性が保てない。公開鍵(非対称)暗号方式が開発されるまで、可逆変換 可能な暗号方式は、この共通鍵暗号方式しかなかったため、慣用暗号とも 呼ばれる。また、暗号化/復号アルゴリズムの内部処理、および鍵の作用 から、対称暗号方式と呼ばれることもある。

(2) 共通鍵暗号の種類

暗号の分類として、平文データに対する操作の仕方により、以下の2 種 類が存在する。

  1. ブロック暗号
  2. ストリーム暗号(逐次暗号)

(3) 共通鍵暗号の長所・短所

  1. 鍵はランダムに生成でき、その長さは比較的短くてよい。
  2. 同一アルゴリズムであれば、解読の困難さは鍵の長さに比例する。
  3. アルゴリズムにより、線形解読法、差分解読法などの手法を工夫 すればすべての鍵を試行しなくとも解読が可能になる。
  4. 鍵が共有されるので、暗号を生成したのが誰かは特定できない。
  5. 一度鍵が解読されると鍵を共有する多くの利用者が脅威にさらさ れるため、鍵の生成、配送、保管に十分注意する必要がある。
  6. 鍵長を比較的短く設定でき、計算量が少なくてすむため、処理速度が速い。
  7. 同様に専用ハードウェアの開発が比較的簡単であり低コストであ る。
  8. すべての鍵を試すことにより正しい暗号鍵/復号鍵が決定でき る(総当り法)。
  9. 鍵は1つの利用主体もしくは通信経路毎に必要であるため、複 数(n)の相手と暗号通信を行う場合はnC2種類とい う膨大な数の鍵とその管理が必要になる。

2.2.2. 公開鍵暗号(非対称暗号)

(1) 公開鍵暗号(非対称暗号)とは

公開鍵暗号(非対称暗号)とは、暗号化と復号に異なる鍵を用いる暗号 である。いずれか一方の鍵から他方の鍵が容易に計算できないため、一方 の鍵を公開することができるという特徴を有する。他方は秘密に保持する。

(2) 公開鍵暗号の原理

公開鍵暗号では、利用者Aが利用者Bに暗号通信する場合以下の手順 で行う。

[鍵生成] 各利用者は、あらかじめ一対の鍵を生成し、一方(公開 鍵(Public Key))を公開し、他方(秘密鍵(Private Key))を秘密に保持する。

[暗号化] 利用者Aは、利用者Bの公開鍵を用いて平文を暗号化して 利用者Bに送信する。

[復号] 利用者Bは、自分の秘密鍵を用いて受信した暗号文を復号 する。

この時公開鍵暗号は、以下の2つの条件を満たすように構成される。

  1. 暗号化と復号化の計算は比較的容易である。
  2. 暗号解読(Bの秘密鍵を知らない者が、Bの公開鍵、暗号文、および暗 号アルゴリズムから元の平文を計算すること)は困難である。

(3) 公開鍵暗号の特徴

1.鍵の秘密配送が不要
共通鍵暗号では、暗号通信に先だって秘密に共通鍵を配送(共有)する 必要があるが、公開鍵暗号では、公開されている相手の公開鍵を入手する だけで良い。

2.秘密に保持する鍵が少ない
n人の利用者と暗号通信する場合、共通鍵暗号では、n個の異なる共通 鍵を秘密に保持する必要があるが、公開鍵暗号では、自分の秘密鍵だけを 秘密に保持するだけで良い。

3.電子署名(デジタル署名)が実現できる
鍵に交換則(つまり、平文を復号鍵で暗号化でき、それを暗号鍵で復号 化できるという性質)がある時、公開鍵暗号では、ある秘密鍵で暗号化された 文書はその秘密鍵を保持する当人しか暗号化できないため誰が作成したか が特定できる。

4.共通鍵暗号に比べて処理が低速
公開鍵暗号では、鍵の非対称性を確保するために、数論を用いている。 そのため、暗号化などで加算・乗算等の処理が出てくるが、これは並列回路 を設計しづらいので、暗号処理が低速である。このため、多量のデータの 暗号通信には共通鍵暗号を利用し、共通鍵暗号に用いられる共通鍵の秘密 配送と電子署名に公開鍵暗号を利用するのが一般的である。

5.公開鍵の正当性確保が必要
公開鍵暗号では、公開鍵の盗聴は問題ないが、それが偽の公開鍵にすり 変えられると大きな問題となる。これを防ぐため、公開鍵が誰の公開鍵で あるかを証明する機関(認証局(Certification Authority))を利用するの が一般的である。

6.暗号通信による相手認証が不可能(匿名暗号通信)
共通鍵暗号では、当事者しか知らない共通鍵を用いて暗号通信するた め、暗号文が正しく復号できるかどうかによって通信相手を認証できる。 しかし公開鍵暗号では公開鍵を用いて誰でも暗号通信できるため、受け手 は誰から暗号文が送られてきたかが分からない。言い換えれば匿名の暗号 通信が可能(なお公開鍵暗号の電子署名機能を用いれば、相手認証が可能 である)。

これらの公開鍵暗号の特徴を共通鍵暗号の特徴と共に次の比較表に示す。

表2-3 公開鍵・共通鍵暗号の比較表
特徴 公開鍵暗号 共通鍵暗号
a. 鍵の秘密配送 ○不要 ×必要
b. 秘密に保持する鍵 ○自分の秘密鍵のみ ×通信相手毎に必要
c. 電子署名 ○可能 ×困難
d. 処理速度 ×低速 ○高速

(4) 公開鍵暗号の種類

1976年にDiffie-Hellmanが公開鍵暗号の概念を発表して以来、これま で様々な公開鍵暗号方式が発表されてきた。公開鍵暗号は次の2つの観点 から分類できる。

(a) 実現機能による分類

公開鍵暗号は、暗号通信のみ可能な方式、電子署名のみ可能な方式、 暗号通信と電子署名の双方が可能な方式に分類できる。

表2-4 実現機能による方式分類表
実現機能 方式
暗号通信及び署名通信 RSA暗号、Rabin暗号など
暗号通信のみ ElGamal暗号、楕円曲線暗号(楕円ElGamal暗号)など
署名通信のみ ElGamal署名、Schnorr署名、DSA署名、楕円DSA署名など
(b) 安全性の根拠となる数論による分類

公開鍵暗号は、公開鍵から秘密鍵を計算すること(暗号解読)の難しさ が、古くから研究されている素因数分解問題や離散対数問題といった数 学問題を解くことの難しさに対応している。主な公開鍵暗号をそれらが 基づく数論によって分類したものを次に示す。

表2-5 安全性の根拠となる数論による方式分類表
数論 方式
素因数分解問題 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署名など

2.2.3. 主な公開鍵暗号

(1) RSA暗号

RSA暗号は1977年に当時MITにいた3人の研究者 Rivest、Shamir、 Adlemanによって発明された世界初の公開鍵暗号で、素因数分解の困難さに 基づく公開鍵暗号である。

(a) 素因数分解

二つの大きな素数p、q から、その積 N = pq を求めることは簡単である。 しかし、N を素因数分解してp、q を求めることは困難である。因数分解を する効率的なアルゴリズムは見つからないだろうとする仮定を 素因数分解仮定という。

(b) フェルマーの小定理の拡張

p が素数の時、フェルマーの小定理により、 a(p-1)≡ 1 (mod p) が成り立つ。ここで、両辺に a をかける と以下の式となる。

ap≡ a (mod p)

一般に、次の定理が成り立ち、これがRSA暗号の基本定理となる。

[RSA暗号基本定理]
p が素数で x が x ≡ 1 (mod (p-1))を満たす時、任意の整 数 a に対し、以下の式が成り立つ。
ax≡ a (mod p)
(c) 方式

RSA暗号は、上記の素因分解仮定とフェルマーの小定理の拡張を組み合わ せることによって得られる。

〔1〕鍵生成

利用者B(受信者)は、以下のアルゴリズムを実行する。

(1) 二つの大きな素数pB、qB を生成し、 NB = pBqB を計算する。

(2) gcd((pB-1)(qB-1), eB) = 1 となる eB をランダムに選ぶ。

※ gcd(a, b) : a と b の最大公約数を表す。

(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 の最小公倍数を表す。

〔2〕暗号化

利用者A(送信者)は、公開鍵(NB, eB)、及び平 文 m ∈ ZNBを入力とし、暗号文 C を以下の式に より求める。
※ ZNB とは{ 0,…,N B-1 } の整数の集合を表す。

C = meB mod NB

〔3〕復号化

利用者Bは、秘密鍵 dB、及び暗号文 C を入力とし、平文 m を以下の式により復号する。

m = CdB mod NB

(2) ElGamal暗号

ElGamal暗号は、1982年にElGamalによって示された離散対数問題の困難 さに基づく初めての公開鍵暗号である。

この暗号の鍵生成アルゴリズム、暗号化アルゴリズム、及び復号アルゴ リズムは以下のように与えられる。

〔1〕鍵生成

利用者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 を秘密鍵として秘密に保持する。

〔2〕暗号化

利用者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に送る。

〔3〕復号化

利用者B(受信者)は、秘密鍵 xB、及び 暗号文C = (c1, c2)を入力とし、復号文 m (平文) を以下の式により求める。

m = c2 / c1xB mod p

(3) 楕円曲線暗号(楕円ElGamal暗号)

楕円曲線暗号は1985年にKoblitz氏とMiller氏がほぼ同じ時期に独立で 考案した。楕円曲線状の点に対して、有限群が定義できるが、この楕円曲線上 の離散対数問題は、現在のところ、指数的な時間をかけないと求まらない。 従って、楕円曲線上のElGamal暗号を構成できる。

(a) 長所

素因数分解やZp*上の離散対数問題は準指数時 間で求まる。これに対し、楕円曲線上の離散対数問題は、現在のところ log p の指数時間かけないと求まらない。従って、RSA暗号の N や Zp*上のElGamal暗号の p の大きさが1024bit程度 必要なのに対し、楕円曲線上のElGamal暗号の場合、160bit程度で良い。 従って、鍵のbit長を短くできるということが楕円ElGamal暗号の長所である。

(b) 方式
〔1〕鍵生成

利用者B(受信者)は、まず、大きな素数 p、有限体Fp上の 楕円曲線E(Fp)、及びE(Fp)上 の有理点 G を選ぶ(G は生成元と呼ばれる)。 G の位数を q とする。次に、xB ∈ Zqをランダム に選び、次の式を計算する。

YB = GxB

最後に、利用者Bは、PK = (E(Fp), G, YB)を公開鍵として公開し、SK = xB を秘密鍵として秘密に保持する。

〔2〕暗号化

利用者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座標

〔3〕復号化

利用者Bは、秘密鍵xB、及び 暗号文C = (c1, c2)を入力とし、 復号文 m (平文)を以下の式により求める。

m = c2 / {xBc1}x mod p

※補足 楕円曲線とは

三次の多項式 f(x) = a3x3 + a2x2 + a1x + a0 が重解を持たない時

E; y2 = f(x)

で表される曲線を楕円曲線と呼ぶ。

有限な楕円曲線

ここでは、簡単なため、p は5以上の素数であるとする。この時、有限体 F(p)上の楕円曲線の式E は、以下のような標準形で表すことができる。

E; y2 = x3 + ax + b (mod p)、 但し、4a3 + 27b2 ≠ 0 (mod p)

2.2.4. 公開鍵暗号の攻撃方法

(1) 公開鍵暗号の攻撃の種類と解読のレベル

暗号を解読するための計算量は、一般に、攻撃者が利用できる攻撃の 種類や、解読のレベルによって変化する。以下に、公開鍵暗号の攻撃の種 類と解読のレベルについて示す。

表2-6 攻撃の種類
攻撃の種類 内容
(1)直接攻撃 公開鍵から直接秘密鍵を求める攻撃
(2)選択平文攻撃 攻撃者の選んだ平文に対する暗号文を用いる攻撃
(3)選択暗号文攻撃 攻撃者の選んだ暗号文に対する平文を用いる攻撃
(4)適応的選択暗号文攻撃 選択暗号文攻撃において、この攻撃で前に用いた平文から、
この攻撃 で次に用いる暗号文を選択できる場合
表2-7 解読のレベル
(ア)全面的解読 ある公開鍵に対する秘密鍵を求めることができる場合
(イ)一般的解読 任意の暗号文に対する平文を求めることができる場合
(ウ)部分的解読 平文の一部を求めることができる場合

このうち、(1)及び(2)は、誰でも行える攻撃であるので、これらに対し て十分な安全性を有していなければならない。すなわちこれらの攻撃に対 して上記解読(ア)、(イ)、(ウ)が成立しないようにしなければならない。 (3)、(4)は一般的には成立し難いため、仮にこれらの攻撃に対して安全で ないとしても、実用上問題ないケースがある。このように、公開鍵暗号を 使用する場合は、想定する攻撃の種類と解読レベルに応じて適切な公開鍵 暗号を利用する必要がある。

(2) 公開鍵暗号の鍵サイズと解読計算量の関係

RSA暗号、ElGamal暗号および楕円曲線暗号における鍵サイズと解読計 算量の関係を表2-8 に示す。

ここでは、RSA暗号、ElGamal暗号、および楕円曲線暗号に対して、 現在知られている最良の解法を適用(表2-6 (2) 参照)した場合を仮定し ている。

表2-8 鍵サイズと解読計算量の関係
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回の演算に相当する。

TOPへ

前へ 目次へ 次へ