Hatena::Groupprogram

lnzntのプログラミング日記 このページをアンテナに追加 RSSフィード

2010年11月04日(木)

公開鍵暗号まとめ

| 20:56 |  公開鍵暗号まとめ - lnzntのプログラミング日記 を含むブックマーク はてなブックマーク -  公開鍵暗号まとめ - lnzntのプログラミング日記  公開鍵暗号まとめ - lnzntのプログラミング日記 のブックマークコメント

公開鍵暗号*1による暗号システム。

以下のオペレーションが行える。

PGP でのメール送信のケース、および PKI でのHTTP/SSLサーバ認証のケースを以下に図示する。

署名と検証

  1. 送信者は自分の私有鍵でメールに署名する。
  2. 受信者は送信者の公開鍵でメールの署名を検証する。
  3. メールが送信者本人から送られたものであり改竄されていないことが確認できる。

f:id:lnznt:20101010104200p:image


暗号化と復号

  1. 送信者は受信者の公開鍵でメールを暗号化する。
  2. 受信者は自分の私有鍵でメールを復号する。
  3. メールが盗聴されても盗聴者にメールの内容は分からない。

f:id:lnznt:20101010104159p:image


HTTP/SSLサーバ認証

サーバ事前準備

  1. サーバCACSR(証明書署名要求) を送り証明書の発行を要求する
  2. CACSR署名して証明書として発行する
  3. サーバは発行された証明書をサイトに配置する

ブラウザ(クライアント)事前準備

  1. CA 証明書(CA公開鍵を含む)をインストールする(通常、著名な CA の証明書はプリインストールされている)

HTTP/SSLアクセス時

  1. ブラウザサーバからサーバ証明書の提示を受ける
  2. ブラウザCA 証明書によりサーバ証明書を検証する
  3. ブラウザはアクセスしようとしているサーバが、信頼する CA署名のある本物か否か確認できる

f:id:lnznt:20101011093543p:image

「暗号技術入門」(旧版)を読んだメモ

| 20:34 |  「暗号技術入門」(旧版)を読んだメモ - lnzntのプログラミング日記 を含むブックマーク はてなブックマーク -  「暗号技術入門」(旧版)を読んだメモ - lnzntのプログラミング日記  「暗号技術入門」(旧版)を読んだメモ - lnzntのプログラミング日記 のブックマークコメント

暗号技術入門」(旧版)を読んだメモ

第 I 部: 暗号

暗号
cryptography。暗号
暗号
encrypt。平文を暗号文に変換すること。
復号(化)
decrypt。暗号文を平文に変換すること。
平文
plaintext。暗号化されていないメッセージ。
暗号
ciphertext。暗号化されているメッセージ。
メッセージ
message。暗号化される(ビット列の)情報の総称。
送信者
sender。メッセージの送り手。
受信者
receiver。メッセージの受け手。
(暗号)解読 or (暗号)解析
cryptanalysis。受信者以外が暗号文を平文に復元しようとすること。
(暗号)解読者 or (暗号)解析者
cryptanalyst。暗号解読(暗号解析)する人。
アルゴリズム
algorithm。暗号化、または復号の手順。
key暗号化、または復号に必要なマジックナンバー
対称鍵暗号
symmetric cryptography。暗号化と復号に同じ鍵を使う暗号。共有鍵暗号(shared-key cryptography)、共通鍵暗号(common-key cryptography)、秘密鍵暗号(secret-key cryptography)、慣用暗号(conventional cryptography)。
非対称鍵暗号
asymmetric cryptography。暗号化と復号に異なる鍵を使う暗号公開鍵暗号(public-key cryptography)。
一方向ハッシュ関数
one-way hash function。ハッシュ値を計算する関数
ハッシュ値
hash value。メッセージから不可逆に計算される一意性のある値。メッセージ・ダイジェスト(message digest)、指紋(fingerprint)、暗号チェックサム(cryptographic checksum)。
メッセージ認証コード (MAC)
message authentication code。MAC値を計算するアルゴリズム
MAC
MAC value。メッセージ認証コード(MAC)による計算される一意性のある値。
(デジタル)署名
digital signature。電子的な押印・署名の技術。
(デジタル署名)検証
verify。デジタル署名が正しいか確認すること。
疑似乱数生成器 (PRNG)
pseudo random number generator。乱数列を擬似的に生成するアルゴリズム
盗聴
eavesdropping。セキュリティの脅威の一つ。情報を盗み見られること。
改竄
falsification。セキュリティの脅威の一つ。情報が書き換えられること。
なりすまし
spoofing。セキュリティの脅威の一つ。偽物が本物になりすますこと。
否認
repudiation。セキュリティの脅威の一つ。既成事実を否定すること。
機密性
confidentiality。セキュリティの特性の一つ。秘密が守られること。
正真性 or 完全性
integrity。セキュリティの特性の一つ。本物であること。
認証
authetication。セキュリティの特性の一つ。本人であることが確認できること。
ステガノグラフィ
steganography。メッセージの存在を隠す技術。電子透かしなどに応用される。
隠すことによるセキュリティ
security by obscurity (security through obscurity)。(アルゴリズムなどを)秘密にすることに依存したセキュリティ
シーザー暗号
Caesar cipher。アルファベットを一定の文字数だけずらすことで行なう暗号
換字暗号
subsititution cipher。一文字(数文字)単位で別の文字に変換することで行なう暗号。換字式暗号
使い捨てパッド
one-time pad。平文とランダムなビット列の XOR を取ることで行なう暗号。ブルート・フォース・アタックで解読不可能。鍵の運用が高コストのため非実用的。
エニグマ
enigma。20 世紀初めにドイツで発明された暗号機械。
ブルート・フォース・アタック
brute force attack。(鍵などの)可能性・候補を総当りする暗号解読。全数検索(exhaustive search)。総当り法。しらみ潰し法。
頻度分析
frequency analysis。文字や文字列の使用・出現頻度を手掛りにした暗号解読
ブロック暗号
block cipher。データをブロック(ある特定のビット数のまとまり)単位で処理する暗号
ストリーム暗号
stream cipher。データを順次処理していく暗号
ファイステルネットワーク
Feistel network。DES などの多くのブロック暗号に使われている基本構造。サブキー(subkey)を用いたラウンド関数による暗号化のステップ(=ラウンド(round))を何度も繰り返す。ファイステル構造(Feistel structure)。ファイステル暗号(Feistel cipher)。
DES
Data Encrypt Standard。[FIPS 46-3]。対称鍵暗号の一つ。64-bit 長ブロックを 64-bit に暗号化するブロック暗号。鍵長 56 bit。ブルート・フォース・アタックで解読可能。弱い。
トリプル DES (3DES)
triple-DES。DES を 3 段重ねした暗号
  • DES-EDE2 は、暗号化 => 復号 => 暗号化 の 3DES。鍵は 2 つ (鍵 1、鍵3 共用)。
  • DES-EDE3 は、暗号化 => 復号 => 暗号化 の 3DES。鍵は 3 つ。
NIST
National Institute of Standards and Technology。米国国立標準技術研究所。
FIPS
Federal Information Processing Standards。米国連邦情報処理標準。NIST が発行している。
AES
Advanced Encryption Standard。新暗号標準 [FIPS-197]。自由に無料に使用できる。暗号アルゴリズムとして Rijndael が選定された。他の AES 最終候補は、MARS、RC6、Serpent、Twofish。
Rijndael
AES。ブロック長 128-bit。鍵長 128/192/256-bit (AES 規格上)。SPN 構造を持つ。
ブロック暗号のモード
ブロック単位の暗号化の繰り返しの方法。主なモードは、ECBCBC、CFB、OFB、CTR。
ECB モード
Electric CodeBook mode。電子符号表モード。平文ブロックを暗号化したものが、そのまま暗号ブロックになる。使うべきでない。
CBC モード
Cipher Block Chaining mode。暗号ブロック連鎖モード。1 つ前の暗号文ブロックと平文ブロックの XOR を取ってから暗号化を行う。推奨。
初期化ベクトル (IV)
initialization vector。最初の平文の 1 つ前の暗号文ブロックの代わりのビット列。
CFB モード
Cipher FeedBack mode。暗号フィードバックモード。1 つ前の暗号文ブロックと平文の XOR を取る。代わりに CTR モードを用いたほうがよい。
ストリーム
key stream。CFB モードで暗号アルゴリズムが生成して平文と XOR を取るビット列。
OFB モード
Output FeedBack mode。出力フィードバックモード。1 つ前の暗号アルゴリズムの出力の暗号文を鍵ストリームにする。代わりに CTR モードを用いたほうがよい。
CTR モード
CounTeR mode。カウンタモード。1 ずつ増加していくカウンタを暗号化して鍵ストリームにする。推奨。
鍵配送問題
key distribution problem。対称暗号で受信者に共有鍵を送る必要があること。解決法として、鍵の事前共有、鍵配送センタ(KDC)、DH 鍵交換法、公開鍵暗号、がある。
鍵配送センタ (KDC)
key distribution center。通信が必要な都度、セッション鍵を生成するホスト。通信を行う各人はKDC と鍵を事前共有してセッション鍵を安全に受け取る。
DH 鍵交換 (or DH 鍵合意)
Diffie-Hellman key agreement (Diffie-Hellman key exchange)。送信者と受信者が盗聴されても構わない情報を交換することで安全に鍵を共有する方法。
鍵ペア
key pair。非対称鍵暗号の 2 本一対の鍵。
公開鍵
public key公開鍵暗号の鍵ペアで公開される鍵。
私有鍵 (or プライベート鍵)
private key公開鍵暗号の鍵ペアで秘匿される鍵。
秘密鍵
secret key。共有鍵暗号の鍵。
RSA
公開鍵暗号アルゴリズムの一つ。現在のデファクト・スタンダード
  • 暗号化: 暗号文 = 平文E mod N
  • 複合化: 平文 = 暗号文D mod N
  • 公開鍵: 数 E と数 N
  • 私有鍵: 数 D と数 N
中間介入攻撃
man-in-the-middle attack。受信者には送信者に、送信者には受信者になりすし機密性を脅かす攻撃
ElGamal 方式
公開鍵暗号アルゴリズムの一つ。GnuPG に実装されている。
Rabin 方式
公開鍵暗号アルゴリズムの一つ。
楕円曲線暗号 (ECC)
elliptic curve cryptosystems。公開鍵暗号アルゴリズムの一つ。
ハイブリッド暗号システム
hybrid cryptosystem。共有鍵暗号公開鍵暗号のメリットを合わせたシステム。 SSL/TLSPGP でも使用されている。仕組みは以下。
  1. メッセージは対称暗号暗号化する。
  2. 対称暗号暗号化で使うセッション鍵は、PRNG で生成する。
  3. セッション鍵は公開鍵暗号暗号化する。
  4. 公開鍵暗号の鍵はハイブリッド暗号システムの外部から与える。

第 II 部 認証

ハッシュ関数
改竄を検出できる。
衝突 (collision)
異なるメッセージが同じハッシュ値を持つこと。
衝突耐性 (collision resistance)
衝突を見つけるのが困難な性質のこと。
弱衝突耐性
そのハッシュ値を持つ別のメッセージを見つけ出すことが非常に困難な性質のこと。
強衝突耐性
ハッシュ値が一致するような、異なるメッセージを見つけ出すことが非常に困難な性質のこと。
一方向性
ハッシュ値からメッセージを逆算できない性質のこと。
MD4
128-bit ハッシュ値を持つ。
MD5
128-bit ハッシュ値を持つ。
SHA-1
160-bit ハッシュ値を持つ。[FIPS-180-1]
SHA-256/SHA-384/SHA-512
256/384/512-bit のハッシュ値を持つ。SHA-2 とも呼ばれる。[FIPS-180-2]
RIPEMD-160
160-bit のハッシュ値を持つ。
誕生日攻撃
birthday attack。「誕生日のパラドックス」に則った、強衝突耐性を破ろうとする攻撃。あらかじめハッシュ値の同じ(内容の異なる)メッセージを用意して、一方を正当として受信者に渡し、後で密かにもう一方とすりかえる攻撃。
誕生日のパラドックス
「N 人集まればその中に(どの日でもよいので)同じ誕生日の人がいる確率が50%を超えるか?」から生じるパラドックス。N=23。直感的な答えより意外に少ない。
鳩の巣原理
pigeon-hole principle。「N+1 羽の鳩を N 個の巣箱に分けると、鳩が 2 羽以上いる巣箱が少なくとも 1 個は存在する」。この原理から、ハッシュ関数は必ず衝突する。
メッセージ認証コード (MAC)
メッセージと共有鍵から固定ビット長の出力を行なう。改竄となりすましを検出できる。共有鍵に依存するので、鍵の配送問題がある。利用例は、SWIFT(国際銀行間通信協会)、IPsecSSL/TLS など。実現方法は、一方向ハッシュ関数を使う、ブロック暗号を使う、など。再生攻撃を防ぐために、シーケンス番号(のメッセージへの付与)、タイムスタンプ(の付与)、ノンス(nonce。受信者から送信者へ渡される使い捨てのランダムな値)の付与、などの手段がある。第三者に対する証明や否認防止ができない。
HMAC
一方向ハッシュ関数を使って MAC を検証する方法の一つ[RFC2104]。HMAC-SHA1(SHA-1 を使用)、HMAC-MD5(MD5 を使用)、HMAC-RIPEMD (RIPEMD-160 を使用)など。
(デジタル)署名 or 電子署名
公開鍵暗号の「私有鍵による暗号文」を認証子(authenticator) として利用する。送信者が私有鍵を署名作成に使い、受信者が(送信者の)公開鍵を署名検証に使う。メッセージ自体でなく、メッセージの「ハッシュ値」に署名するのが実用的。改竄の検出、第三者に対する証明、否認防止、なりすましの防止ができる。メッセージが暗号化されない署名のことをクリア署名(clearsign)と呼ぶ。

公開鍵証明書、SSL/TLS などで利用される。アルゴリズムとして RSA、ElGamal 方式、DSA、Rabin 方式などがある。man-in-the-middle 攻撃に対して、fingerprint の提示/確認などの対策がある。デジタル署名を使って公開鍵暗号を復号させるよう欺く攻撃もある。

PKCS
public-key cryptography standard。RSA 社が公開している規格。PKCS #1 はデジタル署名アルゴリズムの詳細がある。
DSA
digital signature algorithm。DSS 用に作られたアルゴリズム。デジタル署名だけに用いることができる。
DSS
digital signature standard。デジタル署名規格。NIST で規定された。
公開鍵証明書 (or 証明書 or PKC)
public-key certificate。公開鍵(の主体者の)情報と署名がついたもの。

認証局 (CA)
certification authority (or certifying authority)。証明書の証明機関。証明書の発行を行なう。ベリサイン(Verisign)が有名。主な仕事は以下。
  • 公開鍵の登録 (本人の認証)
  • 証明書の発行
  • 証明書の破棄
(CA の)運用規定 (CPS)
certificate practice statement。CA がどのように「本人」と確認するか、など規定。
登録局 (RA)
registrarion authority。CA の業務のうち、公開鍵の登録(と本人の認証)を行う機関。

検証局 (VA)
validation authority。CA の業務のうち、CRL の運用を行う(証明書の検証に対応する)機関。
X.509
証明書の標準規格。ITUISORFC で規定。内容は以下。
  1. X.509 のバージョン (現行 3)
  2. シリアル番号
  3. 署名アルゴリズム
  4. 発行者
  5. 有効日限。開始と終了
  6. 主体者
  7. 公開鍵アルゴリズム
  8. 公開鍵
  9. 拡張領域(項目はいろいろ)
  10. 署名アルゴリズム
  11. 署名
公開鍵基盤 (PKI)
public-key infrastructure。公開鍵を運用する基盤の総称。
証明書失効リスト (CRL)
certificate revocation list。失効した証明書の一覧。CRL 発行の時間差をついた攻撃(なりすましや否認)もある。

第 III 部 鍵・乱数・応用技術

セッション
session key。通信ごとに作られる鍵
マスタ鍵
master key。通信ごとに作られる鍵
CEK
contents encrypting key。情報(内容)を暗号化するのに使う鍵。
KEK
key encrypting key。鍵を暗号化するのに使う鍵。
鍵更新
key updating。機密性を高めるため通信の最中に定期的に鍵を更新すること。
パスワードを元にした暗号 (PBE)
password based encryption。パスワードを元にして作った鍵で行なう暗号。鍵作成には、辞書攻撃(dictionary attack)を防ぐため、PRNG で生成したソルト(salt)も使う。パスワードとソルトをハッシュ関数に通して鍵を作成する。PKCS #5 などで規格化されている。
乱数
random number。以下の性質に分類できる。
  • 無作為性 ... 統計的な偏りがない性質。弱。
  • 予測不可能性 ... 次の数が予測できない性質。中。
  • 再現不可能性 ... 同じ数列が再現できない性質。強。

同じ数列を生成するまでの長さを周期という。

ソフトウェアでの乱数生成は必ず周期を持ち、再現不可能性がない PRNG である。

線形合同法
PRNG を実現する方法の一つ。
ランダムプール
必要になった時に乱数を作りだすのでなく、予めランダム値を蓄えておく方法。
PGP
Pretty Good Privacy。暗号ソフトウェア。信頼モデルは「信頼の輪 (web trusted link)」。仕様として OpenPG [RFC2440] などがある。実装として GnuPG などがある。以下の機能がある。
SSL/TLS
Secure Socket Layer/Tranport Layer Security。暗号技術を組み合わせて使用するためのプロトコルフレームワークSSLNetscape Communications 社の仕様。SSLv3 が最新。TLS は RFC2246 の仕様。TLSv1 は SSLv3 相当の仕様。
マスタ・シークレット
master secret。TLS クライアントサーバが合意した秘密の値。プレ・マスター・シークレット、クライアントランダム、サーバランダムから計算される。以下の情報を作るために使われる。
暗号技術入門-秘密の国のアリス

暗号技術入門-秘密の国のアリス

新版暗号技術入門 秘密の国のアリス

新版暗号技術入門 秘密の国のアリス