鍵がなければ読めない形にする暗号化

暗号化は、データを決まったルールで変換して第三者が読めない形にし、許可された相手だけが元に戻せるようにする技術です。

暗号化は、データを決まったルール(アルゴリズム)と鍵で変換して読めない形にし、正しい鍵を持つ相手だけが元に戻せるようにする技術です。インターネットでパスワードやクレジットカード番号をやり取りできるのも、盗まれたノートパソコンの中身がすぐには読まれないのも、この技術のおかげです。

南京錠のかかった箱を思い浮かべてください。差出人が荷物を入れて錠をかける(暗号化)。途中で誰かが箱を持っていっても、鍵がなければ開けられない。受取人だけが鍵で開けられる(復号)。Webサイトの通信(HTTPS)、ファイルやディスクの保護、メールの内容の保護と、使われる場面は違っても、やっていることはこの箱の受け渡しです。

鍵の渡し方で分かれる2つの方式

暗号化でいちばん厄介なのは、実は錠そのものより、鍵をどうやって相手に渡すかです。そこで2つの方式が使い分けられています。

共通鍵暗号(対称暗号)公開鍵暗号(非対称暗号)
鍵送る側と受ける側が同じ鍵を使う誰でも使える公開鍵(閉める用)と、自分だけが持つ秘密鍵(開ける用)のペア
南京錠でいうと合鍵を持ち合う開いた南京錠を誰にでも配り、鍵は自分だけが持つ
得意なこと処理が速い合鍵を事前に渡さなくてよい
苦手なこと合鍵を安全に渡す方法が課題処理が重い

TLS(SSL)では、公開鍵暗号の仕組みを使って通信を守っています。

鍵が漏れたら、錠はただの飾り

Tatoediaの案内役
案内役

どんなに頑丈な南京錠でも、鍵を箱にテープで貼り付けて送ったら?

Tatoediaの読者モブ
読者さん

……誰でも開けられちゃうね。

「暗号化してあるから安全」は過信です。鍵が漏れれば、どんなに頑丈な錠も意味がありません。鍵をどこに保管し、誰が使えるようにするかの管理まで含めて、はじめて暗号化は役に立ちます。

錠の古さも問題になります。DES のような古い方式は解読されうるので、今は AES、RSA、楕円曲線暗号といった現在の標準的な方式を使います。

もう一つ、パスワードの保存には暗号化ではなく、元に戻せないハッシュ(ソルト付き)を使うのが基本です。鍵で戻せるということは、鍵を盗まれれば全部戻されるということだからです。暗号化、ハッシュ、エンコーディングの違いは、エンコード・ハッシュ・暗号化の違いで詳しく比べています。