情報セキュリティスペシャリスト
情報技術者試験まとめへ

暗号

暗号の基礎

暗号の概念

機密性を守るための暗号

インターネットでは、海外を含めていろいろなプロバイダを経由するので、誰かに盗聴されるという危険がある。
そこで、「暗号化」が必要となる。
(例)
オンラインバンキングを利用する → SSLという仕組みで通信を暗号化
パソコンのデータ → ファイル暗号化やディスク暗号化 → 不正な第三者にデータを読み取られるリスクが減る)

暗号に関する基本的な言葉

「平文(平文)」とは、暗号化されていない普通の文章のこと。これを「暗号鍵」を用いて「暗号化」することで、「暗号文」になる。逆に、「暗号文」を「復号鍵」を用いて元の「平文」に戻すことを「復号」と言いう。

暗号化技術

古典的な暗号化方式

転置式暗号

一定の規則に基づいて順番を入れ替えて暗号文を生成する
(例:password → drowssap)

換字式暗号

一定の規則に基づいて別の文字や記号などに変換する
(例:password → drowssap → espxttbq)

安全性の問題などから現在ではほとんど使用されていない

現在は・・・

共通鍵暗号方式

暗号化の鍵と復号の鍵が共通

公開鍵暗号方式

暗号化と復号に使用する鍵が異なる暗号方式

ハイブリッド方式

共通鍵方式と公開鍵暗号方式の長所を組み合わせて作られている仕組み

共通鍵暗号方式

送信者と受信者で同じ鍵を使用する。
代表的な方式に「DES方式」「AES方式」がある

●暗号化と復号の速度が速い
●共通鍵の転送時に共通鍵が漏えいする危険性をともなう
●通信相手ごとに別々の共通鍵を用意する必要がある

共通鍵暗号方式の種類
ストリーム暗号

ビット、バイト、文字単位で暗号化する
代表例:RC4

アルゴリズム説明
RC4ロナルド・リベスト氏が考案した1bit単位で暗号化・復号が可能なストリーム暗号
WEPやWPA、SSL/TLS、SSHで使用されている
SEALIBMで開発された方式で、米国で特許が成立している
高速処理が可能だが少量のデータ転送には不向き
MULTI-S01日立製作所が開発した方式。米国製のPANAMAという疑似乱数発生器を使用する
ブロック暗号

ある程度の塊(ブロック)で暗号処理をする。
代表例:DES、3DES、AES

代表的な共通鍵暗号方式
アルゴリズム鍵長説明
DES56bitDES(Data Encryption Standard)という言葉の通り、かつての暗号(Encryption)の標準(Standard)
3DES2-key(112bit)
3-key(168bit)
DESを3回繰り返す(三重に適用することで強度を強めた)
AES128bit,192bit
256bit
から選択
DESの脆弱性をカバーするために公募された暗号規格であり、Advanced Encryption Standardという言葉のとおり、次世代暗号標準という意味
IDEA128bitブロック長は64bit。PGPやSSHで使用されている
FEAL64bit,128bitNTTが開発した方式。ICカードや携帯電話などで使用されている ブロック長は64bit
MISTY128bit三菱電機が開発した方式。携帯電話のW-CDMA用暗号KASUMIのベース。ブロック長は64bit
RC2可変長
(最大128bit)
ロナルド・リベスト氏が開発した方式。ブロック長は64bit
RC5可変長ロナルド・リベスト氏が開発した方式。ブロック長、鍵長共に可変

段数
 ●変換をn回実施。このnが段数。
 ●鍵長によって、段数が決まるのがAESの特徴でもある。
  ちなみに、AESは鍵長128bitで18段、192と256bitで24段。

利用モード

ブロック暗号アルゴリズムを用いてブロック長よりも長いデータを暗号化する際に使われる技術のこと。ブロック暗号では、各ブロックを単純に同じキーとアルゴリズムを用いて暗号化した場合、頻度などから暗号が解かれやすくなる。そこで、単純なブロック単位の暗号(ECB:Electronic Codebook)ではなく、前のブロックの暗号情報を使って暗号化する(CBC:Cipher Block Chaining)が、DESやAESで利用されている。
AES、DESなどのブロック暗号を用いる暗号化では、入力文(平文)は固定長の短いブロックに分割されて処理される。このとき、各入力ブロックを暗号化する際に様々な形式でフィードバックデータを用いる次のような暗号利用モードが定義されている。

ECB (Electronic Code Block) モード

CBC (Cipher Block Chaining) モード

CFB (Cipher FeedBack) モード

OFB (Output FeedBack) モード

CTR (Counter) モード

ECBとCTRモード以外は最初のブロックの暗号化に初期ベクタと呼ばれるブロック長と同サイズの初期値を指定する。入力文と鍵が同じでも、この初期ベクタ値を変えることにより異なった暗号文が得られるため、暗号文解析が難しくなる。初期ベクタ値は暗号化と復号で同一の値を用いるが、鍵と異なり秘密としなくても安全性は損なわれない。
CTRモードでは、一連のカウンタ値を指定する必要がある。

公開鍵暗号方式

暗号化と復号に使用する鍵が異なる暗号方式。暗号化に使用する鍵を公開した方式。受信者の公開鍵を入手すれば、誰でも受信者に暗号文を送れるが、暗号文を復号化できるのは、公開鍵とペアになる秘密鍵を持つ受信者だけ。代表的な方式に、RSA暗号方式がある

●公開鍵を使うため、多数の送信相手と通信するのに適している
●鍵の管理が容易である
●暗号化と復号の速度が遅い

必要な鍵の数=2n


主な公開鍵暗号方式
RSA公開鍵暗号方式の標準として広く普及している。桁数の大きな整数の素因数分解の困難さを利用、安全性の根拠にしている。1024ビットの鍵が標準的に使用されていたが、危殆化が懸念され、2048ビット以上の鍵への移行が進められている
楕円曲線暗号
(ECC)
楕円曲線上の離散対数問題(EC-DLP)の困難性を安全性の根拠とする暗号。RSA暗号などと比べて、同レベルの安全性をより短い鍵で実現でき、処理速度も速いことがメリット。条件の選び方によっては逆に脆弱になってしまうという欠点がある。160ビットの鍵長で鍵長1024ビットのRSAと同程度の安全性を持つとされる。

≪公開鍵暗号方式の鍵≫

送信先の公開鍵(受信者の公開鍵)

送信者の秘密鍵で暗号化し受信者は送信者の公開鍵で復号する
→送信者のみが知る鍵で暗号化し、復号確認されなければならない。


ハイブリッド暗号方式

共通鍵方式と公開鍵暗号方式の長所を組み合わせて作られている仕組み

●処理が高速
●鍵の管理・配布が容易
●送信者が共通鍵を任意に作る
●その鍵を受信者の公開鍵で暗号化して送る


例)メールを暗号化する仕組みであるS/MIME


≪秘密鍵の適切な保管方法≫

暗号化された秘密鍵の一つ一つを分割し、複数のセキュリティ管理者が分担して保管する。


ハッシュ関数


ハッシュ関数とは、任意の長さの入力データをもとに、固定長のビット列、ハッシュ値(メッセージダイジェスト)を作成するもので、メッセージダイジェストは文書の短編版。ハッシュ関数にはMD5やSHA-1があるが、これらに危殆化の問題があり、SHA-2などが利用されるようになっている。
※hashとは、「細切れにする」という意味
【特 徴】

主なハッシュ関数
MD4一方向性ハッシュ関数。128ビットのハッシュ値を出力する。S/Keyなどで使用されていたが、アルゴリズムにいくつかの欠点が発見され、現在ではMD5が主流となっている
MD5一方向性ハッシュ関数。MD4同様、128ビットのハッシュ値を出力する。MD4のアルゴリズムを複雑化して安全性を向上させた。SHA-1とともに広く使用されている。
SHA-1一方向性ハッシュ関数。160ビットのハッシュ値を出力する。米国政府標準のハッシュ関数として採用されたこともあり、広く使用されていたが、近年危殆化が懸念され、SHA-2、SHA-3への移行が進められている。
SHA-2前規格であるSHA-1から多くの改良が加えられている。SHA-2にはSHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256の6つのバリエーションがあり、ハッシュ値は"-"(ハイフン)の後の数字、224, 256, 384, 512ビットである。
SHA-3元はKeccakとして知られた暗号学的ハッシュ関数(NISTによる次世代暗号コンペティションの結果、選出された)。SHA3-nおよびKeccak-n において、n = 224, 256, 384, 512は出力ハッシュ値である。

≪ハッシュ関数とシノニム(または衝突:collision)≫

ハッシュ関数Hash(key)は、keyを基にデータの格納位置を算出して、戻り値として戻す。格納位置は1〜Nの整数となる。関数Hash(key)が、異なるkeyから同じ格納位置を算出することを、シノニムの発生という。

違うキーの値でも、ハッシュ関数を適用した結果が同じ値になること

剰余が同じものを探す
  例)4,999を除数とする剰余を用いるハッシュ関数で、
   キー値が12,500のレコードに対するシノニムレコードのキー値はどれか。
   ア.2
   イ.1,250
   ウ.2,501
   エ.17,499
     剰余が同じものを探す。
     12500 ÷ 4999 = 2 あまり2502
     2 ÷ 4999 = 0 あまり2
     1250 ÷ 4999 = 0 あまり1250
     2501 ÷ 4999 = 0 あまり2501
     17499 ÷ 4999 = 3 あまり2502
     よってエ



≪ハッシュ関数とソルト≫
パスワードを暗号化するために利用されているハッシュ関数。ハッシュ値から元のパスワードデータを復元することができないというのが、ハッシュ関数の特徴だが、少ない文字数のパスワードであれば、現在のコンピュータ性能であれば、復元可能!
しかし、パスワードの情報だけでなく、ソルトという情報を付加してハッシュ値を計算することによって、ハッシュ値からパスワードを特定しにくくする方法がある
★パスワードの保存方法★
ユーザ認証用のパスワードは、認証サーバにて、そのままの平文で保存されているわけではない。ハッシュ値によって暗号化されている。

しかし、以下のように、パスワードとハッシュ値をデータベース化(レインボーテーブル)し、不正入手したパスワードのハッシュ値から元のパスワードを見つけることが可能。
そこで、ソルトを使用する。パスワードをハッシュするときに、ランダムな値(ソルト)を付加することにより、同じパスワードでも、ソルトが違うので、ハッシュ値も違う。攻撃者はレインボーテーブルを用意できなくなる

★★ソルトを使用するとハッジュ値からパスワードを特定しにくくなる
 ・同じパスワードでもソルトが異なるとハッシュ値が変わるから
 ・攻撃者がソルトの値ごとにテーブルを用意する必要があるから



≪暗号方式の寿命(危殆化)≫

計算能力の向上などによって、鍵の推定が可能となり,暗号の安全性が低下すること

暗号方式には寿命がある。
それは、NISTが定めた、米国政府機関のコンピュータシステムの調達基準のことで、表に示す暗号アルゴリズムを利用したシステムなどの調達は2010年までしか認められていない。

米国政府調達基準で現在調達可能で2011年以降調達できなくなる暗号アルゴリズム

分類名称
共通鍵暗号2-key Triple DES
公開鍵暗号鍵長1024ビットのRSA
鍵長160ビットのECDSA
ハッシュ関数SHA-1


≪電子透かしとステガノグラフィ≫

MAC(message authentication code)

メッセージ認証にて、メッセージが改ざんされていないかの確認に使われる。
送信者と受信者の共通鍵を元に、MACアルゴリズムを適用して生成したもの
MACアルゴリズムは、入力として共通鍵と認証すべき任意長のメッセージを受け取り、MAC(「タグ」とも呼ばれる)を出力する。
MACアルゴリズムは他の暗号プリミティブから構築でき、ハッシュ関数を使う方式(HMAC)、ブロック暗号アルゴリズムを使う方式(OMAC/CMAC、CBC-MAC、PMAC)などがある。

実現できること
弱点
メッセージ認証コードの例
仕組み


@送信者と受信者は、あらかじめ秘密の共通鍵を共有しておく。
A送信者は、元データと鍵からMACを計算する。
B送信者は、元データとMACを受信者に送る。
C受信者は、受信した元データと鍵からMACを計算する。
D受信者は、受信したMACと計算したMACを比較する。
 (両者が一致すれば、改ざんされていない)

HMAC (Hash-based Message Authentication Code)

メッセージ認証符号 (MAC; Message Authentication Code) の一つであり、秘密鍵とメッセージ(データ)とハッシュ関数をもとに計算される。メッセージ本体と秘密鍵を一定の規則に従って組み合わせハッシュ関数に与え、算出されたハッシュ値を認証符号とするもの。ハッシュ関数は様々なものを使用でき、「HMAC-MD5」「HMAC-SHA256」のように末尾にハッシュ関数の種類を付加する。

フィンガプリント(拇印、指紋)

ディジタル証明書、公開鍵、メールなどの電子データが改ざんされていないことを証明するために使用データ。ハッシュ関数を用いて対象となる電子データから生成する。
例)公開鍵 公開鍵のハッシュ。
  政府認証基盤(GPKI) ブラウザの拇印を確認する
 ことで、検証することが可能。
インターネットを経由せずに、相手から紙媒体で入手するのが望ましい。


≪フィンガプリントの例≫

メールの署名に以下のように付いている

ブラウザに証明書が入れられているのであれば、ブラウザから確認可能。
[インターネットオプション][コンテンツ][証明書]で該当の証明書を開く。[詳細]タブの[拇印]で確認できる。


DH(Diffie-Hellman)法


安全でない通信経路を利用する両者が、秘密の共通かぎを安全に共有する方式
IPsecなどで使用されている。

手順

例)

@利用者AkiとBakuは素数pと、pよりも小さいある自然数gを共有している
AAkiは、pより小さい任意の自然数aを選択する
BBakuもpより小さい任意の自然数bを選択する
CAkiは以下の式で得られるAをBakuへ送信する
   A=ga mod p (x mod yは整数xを整数yで割った余り)
DBakuは以下の式で得られるBをAkiへ送信する
   B=gb mod p
EAkiは受取ったBを使って、以下の式で秘密鍵Nを得る
   N=Ba mod p
FBakuは受取ったAを使って、以下の式で秘密鍵Nを得る
   N=Ab mod p

注意点

≪ゼロ知識証明(ZKIP)≫

暗号分野におけるゼロ知識証明とは、相手に秘密情報そのものを送ることなく、自分が該当秘密情報を知っていることを相手に伝える方法



≪FIPS140(Federal Information Processing Standardization 140)≫

米国の規格、暗号の仕組みの基準。セキュリティ製品のセキュリティ要件のガイドラインみたいなもの。
「暗号モジュールのセキュリティ要求事項」
「モジュール」はハードやソフトなどをひっくるめたもの。



≪TPM(Trusted Platform Module)≫

PCに内蔵されるセキュリティチップのこと
鍵ペアの生成する機能がある
セキュリティチップにて、パソコンハードディスクを暗号化すると、ハードディスクを持ち出されても復号することはできない。


 

ページトップへ 次へ