暗号化超入門(前編)

2020年3月1日

はじめに

暗号化の概要を把握してみる試みです。
暗号化ナニソレ?という人が大枠を掴めて、暗号化処理の実装を書いてみることができることが本記事のゴールです。
今日は前編。

暗号化とは?

「データを加工して読めなくすること」です。
Webサービスでは主にセキュリティ目的で使います。

具体的には、データを送るときに、第三者に見られても中身が分からないように暗号化して送る、といった具合です。
特にユーザーの情報を扱うWebサービスを作る上では暗号化は必須となってきます。

暗号化と復号化

第三者から読めなくするように加工する暗号化に対して、
暗号化されたデータを本来の受け取り手が読めるように復元することを復号化といいます。

ハッシュ化、難読化

暗号化と似た言葉でハッシュ化、難読化というものがあります。

ハッシュ化は、データを不可逆な形で加工して読めなくすることで、基本的に復元できません。
パスワード管理や、データの改ざんチェックなどに使います。

難読化は、人間にとってデータを読みにくくすることです。
「人間にとって」というところが肝で、コンピュータからすると普通に読めます。
なので暗号化との違いはざっくりいうと「頑張れば読める」という点です。

暗号化の基本的な仕組み

アルゴリズムと鍵

暗号化の仕組みで重要なのがアルゴリズムと鍵です。

アルゴリズムは平文をどのように加工するかの手段・アプローチのことで、
鍵は暗号化/復号化するときに必要なデータです。

平文を暗号化する際、アルゴリズムと鍵によって暗号化されます。
そのアルゴリズムと、対応した鍵を使うことで、暗号化されたデータを復号できます。
アルゴリズムが分かっても、鍵がないと復号できないので、暗号の強度が高まることになります。

共通鍵と公開鍵

鍵は、暗号化するときと復号化するときで同じものを使うこともありますし、違う場合もあります。
前者は共通鍵暗号方式、後者は公開鍵暗号方式といいます。

共通鍵暗号方式の例は、パスワードです。
公開鍵暗号方式の例としては、SSH接続では公開鍵・秘密鍵という二種類の鍵を使って認証を行います。

次回は…

次回は具体的なアルゴリズムをいくつか紹介し、その中から実際に暗号化・復号化の処理を実装してみます。

参考