Top / 暗号化とは?
HTML convert time: 0.008 sec.

暗号化とは?

Last-modified: 2015-03-26 (木) 21:48:47

ちょっと前提に戻ってお話します。

前記事の素数って実社会でどう使われているの?の説明を急にいわれてもピンとこない方向けの記事です。
先ほどの記事は素数にイメージを持ってもらうために執筆した記事です。そのため、暗号化の基本をすっとばしました。

この記事はもう一度暗号とは何かについてお話します。

暗号化とは

文字通り、もとの文章(平文という)を暗号化することです。
その暗号化する方法をアルゴリズムと言います。
簡単なアルゴリズムの例を出すとシーザー暗号というものがあり、これは文字を一定の規則に従って移動するというものです。
angouという文字を暗号化するとします。
使われる文字をabcdefghijklmnopqrstuvwxyz(space)のどれかです。
これを3文字右にずらすとした場合どうなるでしょうか?

angou→dqjrx

になります。このようにすることを「暗号化」といいます。
このように一定の規則に従って何かしらの方法(アルゴリズム)を加えると、意味のわからないものになり暗号化できます。
この規則のことを暗号化アルゴリズムと言います。

そして、3文字左にずらせばもとに戻ります。
dqjrx→angou
元に戻りました。このことを「復号化」といいます。

ここでは「一定の規則にしたがって暗号化する」という理解で大丈夫です。

共通鍵方式と公開鍵方式

シーザー暗号はとても古い暗号化アルゴリズムですが、今、主流となっている暗号化アルゴリズムのを大まかに分類すると共通鍵方式と公開鍵方式があります。

共通鍵方式

文字通り、共通の鍵で暗号、復号するというものです。
Wi-Fiの暗号化はこちらが採用されています。
無線を飛ばす装置(アクセスポイントやルータ)にパスワードを設定し、同じく自分のパソコンにも同じパスワードを設定して、
そのパスワードを使って暗号化、復号化します。もちろん一定の規則に従ってそのパスワードが暗号化されています。
簡単なモデルを例に話すと、南京錠があり、その南京錠を開けられる鍵を送信側と受信側がそれぞれもっているという状況です。

共通鍵方式の問題点

しかし、共通鍵方式の問題点はどのように鍵を受け渡すか?という点です。(たくさん鍵を増やすこともできますが、管理が大変です。)
Wi-Fiのパスワードを初期設定の場合、各家庭のネットワーク内で済むことなので、盗聴される危険性は少ないです。(盗聴される危険性0ではないですが。。。)
しかし、インターネットを経由するような場合、あらゆるところで盗聴される危険性があります。
そんな中で、平然とパスワード(鍵)などの情報を送ったらどうでしょうか?
当然盗聴されてしまいます。以前は電子メール等も盗聴されている状況でしたが、ここ最近では送受信ともに暗号化できるようになってきています。(現在進行形)
そんな中で、鍵を公開してしまえ!という考え方ができ、公開鍵方式というものができました。

公開鍵方式

鍵を公開してなんで暗号化できるの?という疑問をもつ人が多いと思います。今度は前とは別の南京錠だと解釈し、理解を進めてください。
今度は、南京錠がたくさんあり、その南京錠は全部同じ一つの鍵で開けられる状況だとします。
そしてその南京錠を錠を開いた状態で公開し、暗号化したい人は誰でももっていっていいよ~という状況にします。
暗号化したい人は「わかった。暗号化するからもっていくねー」とし、南京錠を開いた状態でもっていきます。
そして、自分の暗号化したい情報を南京錠を使ってガチャっとしめて暗号化し、送信します。
そして、その情報が受信側に送られ、受信側がもってる唯一の鍵で復号します。
httpsで始まるURLやブラウザの端に鍵マークがついている場合、この方式を利用します。
webサイトのサーバが南京錠(今後公開鍵という)をばらまき、そのwebサイトと暗号通信したい人はその公開鍵を使って暗号化するというものです。

余談で、httpsでどのような情報を暗号化して最初は送信しているかということですが、ベリサイン(公開鍵の認証局)の電話対応のお姉さん曰く「今後サーバと通信するための共通鍵を送信している」そうです。
私が、「ユーザが暗号化してサーバに送信できることはわかるのですが、このモデルだとサーバが暗号化した情報をユーザに送れないのではないでしょうか?」とお姉さんに問い合わせたところ、お姉さんもわからず上長に問い合わせ上記の回答を言ってきました。
お姉さんも私も勉強になりました^^

さて、また本線に戻っていくとしましょう。
RSA暗号化アルゴリズムは公開鍵方式を利用しており、150桁の素数(秘密鍵という。)と150桁の素数を掛け合わせた約300桁の積を公開鍵としています。
(この場合の解読は莫大な時間を要するということは前に話した通りです。)

次の章ではどのように暗号化するかについて説明していくことにします。

次ページ:どのように暗号化するか?