暗号化の仕組み



ソフトウェア

公開日:2021/7/4          

前提知識
 ・ハッシュ関数とは


■暗号化とは
暗号化とは、データを閲覧されたり改ざんされるのを防ぐため、データに加工を施す処置のことです。データに加工を施す処置を暗号化アルゴリズムといいます。また暗号化されたデータを復元することを復号といいます。



暗号化アルゴリズムの考え方は、入力に対して一見規則性のない値を出力する関数があると考えてください。ただそれだけだと、ハッシュ関数などと変わらないのですが、 暗号鍵と呼ばれる関数のパラメータを持つことで、その秘匿性を高めることができます。

分かりやすい例で説明します。例えば入力をx、暗号化アルゴリズムをy=ax+bとした場合、暗号鍵はaとbの部分になります。


■暗号方式
暗号鍵が何かが分からないと、暗号値だけ見ても入力は分かりませんが、逆に暗号鍵が分かってしまうと入力値を解読されてしまうので、その扱い方に工夫が必要です。 暗号化の方式には以下の種類があります。

<共通鍵暗号方式>
共通鍵暗号方式とは、暗号化するときと復号するときの暗号鍵が同じの共通鍵を用いる方式です。以下例の場合、データ送信者は予め共通鍵を誰にも知られない様に受信者に渡しておく必要があります。



共通鍵暗号方式の特徴は以下のとおり。

・同じ鍵を用いるために計算量が少ない。
・共通鍵を相手に渡す過程などで第3者に共通鍵が漏れてしまうリスクがある。
・鍵は複数の人と共有して使えない為、鍵の管理が大変になる。(例えば3人で同じ鍵を使ったら、誰が送ったのか分からない)


共通鍵暗号方式の手法の一つに、AES(Advanced Encryption Standard)があり鍵の長さを128bit、192bit、256bitと選択できます。例えば256bitを用いる場合は、AES256などと呼びます。

<公開鍵暗号方式>
公開鍵暗号方式とは、暗号化するときと復号するときの暗号鍵が異なる鍵を用いる方式です。データ受信者がもつ秘密鍵から公開鍵を作成し、データ送信者に予め公開鍵を渡しておきます。 公開鍵は名前のとおり誰でも利用できるような状態となっております。重要なのは秘密鍵の方で、公開鍵をどのように作成したのかを知るのは秘密鍵のみぞ知る、ということです。



公開鍵暗号方式の特徴は以下のとおり。

・異なる鍵を用いるために計算量が遅い。
・秘密鍵をやり取りする必要がないため、第3者に秘密鍵が漏れるリスクが少ない。
・複数の人と公開鍵を共通にでき鍵管理が容易。また秘密鍵の所有者の情報だと分かるる。


■公開鍵、秘密鍵作成方法:RSA暗号
共通鍵で暗号文を平文に復号する場合は、暗号化アルゴリズムの逆算をすれば元の平文に戻りそうだと感覚的に分かると思いますが、公開鍵と秘密鍵の様に鍵が異なる場合、 いくら逆算しても元の平文に戻るイメージがつかないと思います。ここでRSAという方式を用いた、公開鍵と秘密鍵の作成方法を説明します。RSAとは考案者の名前の頭文字からとっております(Rivest , Shamir , Adleman)。

<考え方>
以下関係式が成り立つE,D,Nを設定し、E,Nを公開鍵、D,Nを秘密鍵とします。



<E,D,Nの設定方法>
① 異なる2つの素数p,qを任意に決定する。
② N = p*qとする。このとき平文はNより小さい必要がある。
③ (p-1)*(q-1)に対し最大公約数が1となる自然数Eを設定する。
④ E*Dを(p-1)*(q-1)で割った余りが1となる、EとDの組み合わせを求める。

<具体例>
① p=3 , q =11とする。
② N = p*q=33
③ (3-1)*(11-1) = 20 のため、20との最大公約数が1となる自然数として3を選定する。(E=3とする)
④ E*Dを20で割った余りが1となるEとDの組み合わせは、E=3 , D =7となる。(21/20=余り1)

上記より、E=3とN=33を公開鍵、D=7とN=33を秘密鍵とする。



<例題>
⑤ 平文を9とすると、暗号文は(9^3)mod33 = 3となる。相手には3を送る。
⑥ 3という暗号文から平文を求める。平文は (3^7)mod33 = 9となり、確かに平文に戻すことができた。

<RSA方式は解読が難しい理由>
この暗号を解読するためには、秘密鍵が何かを知る必要があります。上記の場合D=7であることが分かればよいのですが、 秘密鍵を入手することなく、公開鍵の情報(N=33とE=3)からD=7であることを導き出さなければなりません。 そのためにはまずはNを素因数分解する必要がありますが、これは総当たり的な計算が必要で、PCを使ってもものすごい時間がかかるので、事実上解読困難とされています。

なお余談ですが、細田守監督のアニメ映画「サマーウォーズ」で主人公が暗号を解読するシーンがありますが、これはRSA方式の暗号だといわれています。 コンピュータを使っても解読困難なRSAを自力で解いてしまったのですから、主人公はものすごい計算能力(というか不可能な)の持ち主といえます。

■暗号の活用事例
以下があります。

 ・メッセージ認証
 ・SSL/TLS











サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



ソフトウェア