暗号化技術の仕組や規格を分かりやすく解説

セキュリティ

データの盗聴に欠かせない暗号化技術を説明します。

暗号と鍵の説明

暗号とは、秘密の情報を分からなくするする技術で、これによって第三者がその情報を読めないようにします。
暗号化する前のデータは平文(ひらぶん)と言います。
暗号化したデータを平文に戻すことを復号化といいます。

暗号化と復号化をする際には鍵を使います。
鍵もまた文字列などで表現されるデータです。

暗号方式

暗号方式は送信者が暗号化に使う鍵と受信者が復号化に使う鍵は同じ鍵を使う「共通鍵暗号方式」と、送信者が暗号化に使う鍵と受信者が復号化に使う鍵は異なる鍵を使う「公開鍵暗号方式」があります。

共通鍵暗号方式

共通鍵暗号方式は送信者と受信者で同じ鍵を使って暗号化と復号化をします。

共通鍵暗号方式は、公開鍵暗号方式に比べて計算が単純なため、処理が速いというメリットがあります。

共通鍵暗号方式に必要な鍵の数

共通鍵暗号方式に必要な鍵の数は、通信を行う相手の組み合わせの数に等しくなるので、n 人の利用者が相互に通信する場合、必要な鍵の数は n(n-1)/2 個となります。

必要な鍵数の計算式を分かりやすく説明します。

例えばAさん、Bさん、Cさん、Dさんの4人が共通鍵暗号方式を使ってやり取りするとします。
まずはAさんがやり取りに必要な鍵は3です。

Bさん、Cさん、Dさんも同じ考え方です。

全での組み合わせで必要な鍵数を出しましたが、重複が存在します。
例えばAさんとBさん、BさんとAさんの鍵は同じなのでこれを除外します。

同じようにして他の重複する鍵を除外します。

共通鍵暗号方式の規格

ブロック暗号方式
ブロック暗号方式の規格
名称説明
AESNIST(米国立標準技術研究所)が定めた規格
ブロック長は128bit
鍵長は128、192、256bitから選べる
CamelliaNTTと三菱電機が共同で開発した規格
ブロック長は128ビット
鍵長は128, 192, 256ビットから選べる
AESと同等の安全性と処理性能
DES現在は非推奨の規格
ブロック暗号方式のモード

モード①:ECB方式
ECB方式は平文をブロック長で区切り、区切ったブロックを共通鍵で暗号化するシンプルな方式ですが一般的には利用されていません。

モード②:CTR方式
CTR方式は無線LANなどで使われています。

CTR方式は、先ずカウンタ(CTR)というランダムな値を用意してこれを共通鍵で暗号化します。

平文をブロックで区切り、1つ目のブロックと先ほどの暗号化したカウンタとのXOR(排他的論理和)を求めま、これを暗号文とします。

先ほどのカウント(CTR)に1を足し、先ほどと同じように共通鍵で暗号化します。

同じ手順で今度は2つ目のブロックと暗号化したカウンタ(CTR)2のXORを暗号文とします。

ストリーム暗号方式

ストリーム暗号方式は、平文をビット単位やバイト単位で逐次暗号化する暗号です。
データが到着するたびに、1ビットまたは1バイトずつ暗号化するので、リアルタイム性が求められる通信に適しています。


公開鍵暗号

公開鍵暗号方式は、秘密鍵と公開鍵という2つの鍵のペアで暗号化と復号化をします。
秘密鍵は本人以外に知られてはならず、公開鍵は他人に公開して利用させます。
共通鍵暗号方式の場合は両者で鍵を共有(鍵交換)しなければならず、その際に鍵が盗聴される危険性がありましたが、公開鍵暗号方式は鍵交換が不要なのがメリットです。

公開鍵暗号方式でデータを送る場合、送信者は受信者の公開鍵を入手してデータを暗号化して送付します。
受信者は暗号化されたデータを受け取った後、受信者の秘密鍵で復号化します。

公開鍵暗号方式に必要な鍵の数

公開鍵暗号方式は、管理する鍵の数が少ないのもメリットの1つです。
公開鍵暗号方式は、1人あたり 2本の鍵(公開鍵と秘密鍵) を持つので、人数が N の場合、2N本の鍵 が必要です。

共通鍵暗号方式、公開鍵暗号方式で鍵数を比較すると6人以上の場合、公開鍵暗号方式の方が鍵数は少なくなります。
人数が多くなると 公開鍵暗号方式の方が圧倒的に管理しやすい というのがよく分かります。

人数(N)共通鍵暗号方式で必要な鍵数
(N(N-1)/2)
公開鍵暗号方式で必要な鍵数
(2N)
214
336
468
51010
61512

公開鍵暗号方式の規格

名前説明
RSA・もっともポピュラーな暗号化の規格
・「大きな素数の積を因数分解するのが難しい」という数学的性質を利用
DSA・ディジタル署名用
楕円曲線暗号・ECDSA(楕円曲線版DSA、署名専用)などがある。
ElGamal暗号・電子署名に使用(ElGamal署名)

鍵交換方式

共通鍵暗号方式は両者間で誰にも盗聴されずに共通鍵を共有(鍵交換)しておく必要があります。
鍵交換方式について説明をします。

DH法

最初の鍵交換 を安全に行うために代表的に使われるのが DH法(Diffie-Hellman鍵共有) です。
例を用いて説明します。(実際、数値はもっと大きい値ですが分かりやすさのため小さくしています。)

1.予めAさん、Bさんそれぞれが自分だけの秘密の値を持つ。

2.AさんとBさんは素数とそれより小さい整数を共有する。これは他人に公開してもいい。

3.秘密鍵と公開鍵で下の計算をした結果を相手に渡す

4.それぞれ、受け取った余りの数値で下の計算をすると余りが一致するのでこれを共通鍵として使用

KDC

KDCはKey Distribution Center(鍵配布センター) の略で、共通鍵暗号方式を使うときに、各ユーザ間で安全に鍵を配布する仕組みを提供するサーバです。
Kerberos認証でも使われています。
KDCの仕組みをAさんとBさんが共通鍵交換する例を使って説明をします。

1.予めKDCにAさんとKDCの共通鍵、BさんとKDCの共通鍵を登録しておきます。

2.AさんがKDCへBさんと通信したいと要求します。

3.KDCはAさんとBさん用の共通鍵を生成し、それをAさんの共通鍵で暗号化、Bさんの共通鍵で暗号化します。

4.KDCは暗号化した2つの共通鍵をAさんへ送付する。

5.Aさんは、受信したAさんとKDCの共通鍵で暗号化されてる「AさんとBさんの共通鍵」を、AさんとKDCの共通鍵でを復号化します。

6.Aさんは、受信したBさんとKDCの共通鍵で暗号化されている「AさんとBさんの共通鍵」をBさんへ送り、Bさんは受信したBさんとKDCの共通鍵で暗号化されている「AさんとBさんの共通鍵」を、BさんとKDCの共通鍵で復号化します。

量子暗号技術

量子暗号はデータを送受信する前に、使い捨ての鍵(ワンタイムパッド)を送信者と受信者で共有しておき、この鍵でデータを暗号/復号化します。
この鍵は1回使用するごとに破棄されます。

暗号化と複合化に使用する使い捨ての鍵(ワンタイムパッド)は、盗聴されると変化をするという特徴があるので盗聴されて変化た場合は使わないようにすることで安全に鍵の共有ができます。
この技術は量子通信路と呼ばれており、光子という量子力学的な性質を持つ情報キャリアで通信することで実現できます。

コメント

タイトルとURLをコピーしました