暗号化とは?鍵・ハッシュ・チェックサムの違い
暗号化とは、読める情報を暗号文に変換し、正しい鍵を使えば元に戻せるようにする処理です。目的は、転送中や保存中のデータの機密性を守ることにあります。ハッシュやチェックサムは別の課題を解決するもので、その出力を復号して元のメッセージを取り出すことはできません。これらを混同すると、実際には守られていないのに安全だと思い込んでしまうおそれがあります。
鍵と暗号化のプロセス
暗号化アルゴリズムは、平文と鍵を組み合わせて暗号文を作ります。共通鍵暗号では、通信する双方が同じ秘密鍵を共有します。公開鍵暗号では、公開鍵とそれに対応する秘密鍵がそれぞれ別の役割を担います。安全性を左右するのは、アルゴリズム、暗号利用モード、鍵の品質、そして鍵の保管方法です。パスワードが推測しやすかったり、鍵を保護もせずに同じメッセージで送ったりしていれば、ファイルが「暗号化されている」と言っても安全性の裏付けにはほとんどなりません。最新のアプリケーションでは、場当たり的なテキスト変換を重ねるのではなく、実績のあるプロトコルと認証付き暗号を使うべきです。
ハッシュとチェックサムの違い
暗号学的ハッシュは、データから固定長のダイジェストを生成するもので、入力を暗号化したコピーではありません。SHA-256のダイジェストは、ダウンロードしたファイルが、信頼できる配布元の公表している値と一致するかを確かめるのに役立ちます。この比較でわかるのは一致するかどうかだけで、ファイルの中身が隠れるわけではありません。パスワードを保存するには、ソルトを使い計算コストを調整できる、パスワード専用のハッシュ方式が必要です。CRC32は転送中の偶発的なエラーを検出するには便利ですが、意図的な改ざんを防ぐ認証の仕組みにはなりません。MD5とSHA-1は、衝突耐性が求められる新しい用途には向いていません。NISTはSHA-1からの移行について発表しています。2IPのハッシュ生成ツールでは、テキストのハッシュやチェックサムを計算できます。
よくある2つの例
機密文書を共有したいときは、ファイルの暗号化と認証を行える信頼性の高いアプリケーションを選び、パスフレーズは保護された別の経路で伝えます。受け取った側は、正しい鍵を使って内容を復元できます。一方、ダウンロードしたアーカイブを確認したいときは、ハッシュを計算し、配布元の正規のページで入手した値と比べます。この2つはまったく別の作業で、ハッシュを計算してもアーカイブを読まれなくなるわけではありません。WebサイトにBase64のテキストが表示されていれば、秘密鍵がなくても誰でもデコードできます。エンコードは暗号化ではないのです。
暗号化だけでは守れないもの
TLSは通信の両端の間でやり取りされるデータを守りますが、通信相手そのものが信頼できることまでは保証しません。端末に潜むマルウェア、漏れた鍵、脆弱なアカウント復旧手順があれば、どれほどしっかりした暗号でも破られてしまいます。オンラインのテキストツールを使う際は、選んだ処理が暗号化なのか、ハッシュ化なのか、単なるエンコードなのかを見極めてください。ボタンに「安全」と書いてあるからといって、よく知らないサービスに機密文書や認証情報を貼り付けるのはやめましょう。使う前に、データがどう処理され、どのくらい保持されるのかを確認してください。
TLS 1.3と通信の安全性
HTTPSでは、暗号化はプロトコル全体を構成する要素のひとつです。TLSはパラメーターを取り決め、鍵を確立し、サーバー証明書を検証します。最新のTLS 1.3では、古い選択肢がいくつも廃止され、通常のハンドシェイクも簡素化されました。手順の詳細はTLS 1.3ハンドシェイクの解説をご覧ください。TLSが守るのは、指定した相手との間で転送されるデータです。それだけでWebサイトが信頼できると証明されるわけではありません。