暗号化とハッシュについて説明する

完了

一般的なサイバーセキュリティ上の脅威を軽減する方法の 1 つは、機密データや貴重なデータを暗号化することです。 暗号化は、承認されていない閲覧者がデータの読み取りと使用を実行できなくするプロセスです。 暗号化されたデータを使用または読み取るには、暗号化を解除する必要があります。その場合、秘密鍵を使用する必要があります。

暗号化には、対称と非対称という最上位レベルの 2 つの種類があります。 対称暗号化では、データの暗号化と復号化で同じキーが使用されます。 非対称暗号化では公開鍵と秘密鍵のペアが使用されます。 どちらのキーでもデータを暗号化できますが、暗号化に使用したキーを使用してデータの暗号化を解除することはできません。 暗号化を解除するには、ペアになっているキーが必要です。 たとえば、公開キーを使用して暗号化すると、対応する秘密キーのみを使用して暗号化を解除できます。 非対称暗号化は、HTTPS プロトコルと電子データ署名ソリューションを使ったインターネット上のサイトへのアクセスといったことに使われます。 暗号化すると、保存データまたは転送中のデータを保護できます。 暗号化に関するその他の情報については、「暗号化の概念についての説明」を参照してください。

対称暗号化と非対称暗号化の概念を示す図。

保存データの暗号化

保存データは、サーバーなどの物理デバイスに格納されているデータです。 データベースやストレージ アカウントに格納されている場合もありますが、格納されている場所に関係なく、保存データを暗号化すると、暗号化を解除するために必要なキーとシークレットがなければ、データを読み取ることができなくなります。

攻撃者が暗号化されたデータが保存されているハード ドライブを入手しても、暗号化キーにアクセスできなければ、データを読み取ることができません。

転送中のデータの暗号化

転送中のデータとは、インターネット上やプライベート ネットワーク経由などで、ある場所から別の場所に移動されているデータです。 セキュリティで保護された転送は、いくつかの異なる層で処理できます。 ネットワーク上に送信する前に、データをアプリケーション層で暗号化することで実現できます。 HTTPS は、転送中の暗号化の一例です。

転送中のデータを暗号化すると、外部のオブザーバーからデータが保護され、露出のリスクを抑えながらデータを転送するためのメカニズムが提供されます。

使用中のデータの暗号化

使用中のデータの暗号化の一般的なユース ケースには、RAM や CPU キャッシュなどの非永続的ストレージ内のデータのセキュリティ保護が含まれます。 これは、データを保護し、CPU がデータを処理している間はデータを暗号化された状態に保つエンクレーブ (セキュリティで保護された鍵付きの箱のようなもの) を作成するテクノロジによって実現できます。

ハッシュ

ハッシュでは、テキストをハッシュと呼ばれる "一意の" 固定長の値に変換するアルゴリズムが使用されます。 同じアルゴリズムを使用して同じテキストがハッシュ化されるたびに、同じハッシュ値が生成されます。 その後、そのハッシュは関連付けられたデータの一意の識別子として使用できます。

ハッシュではキーが使用されないため、後でハッシュ値は元の値に戻りません。

ハッシュは、パスワードを格納するためによく使われます。 ユーザーがパスワードを入力すると、格納されたハッシュを作成したときと同じアルゴリズムで、入力されたパスワードのハッシュが作成されます。 この値と、格納されているパスワードのハッシュ化バージョンが比較されます。 一致した場合は、ユーザーがパスワードを正しく入力したことになります。 この方法はプレーン テキストのパスワードを格納するよりも安全性が高いですが、ハッシュ アルゴリズムはハッカーにも知られています。 ハッシュ関数は決定論的である (同じ入力で同じ出力が生成される) ため、ハッカーはパスワードをハッシュ化すればブルートフォース辞書攻撃を行うことができます。 一致するすべてのハッシュについて、実際のパスワードを知っています。 多くの場合、このリスクを軽減するために、パスワードが "ソルト化" されます。 これは、同じ入力に対して一意のハッシュが作成されるように、ハッシュ関数の入力に固定長のランダムな値を追加することです。

ハッシュの概念を示す図。