暗号技術とは:目的によって使う仕組みが違う
暗号技術は、データの秘匿、改ざんの検出、署名の検証などを支える仕組みです。暗号化・署名・ハッシュを同じ用途として扱わないことが第一歩です。アルゴリズムの名前だけでなく、鍵、設定、実装、更新を含めて保護します。
本ページは初心者・開発者・情シス向けです。独自の暗号方式を作るのではなく、信頼できる標準とライブラリを正しく使うための確認観点を学びます。
- 暗号化
適切な鍵を持つ側だけが内容を復元できるようにする。
- 署名
対応する公開鍵で、署名されたデータの出所と改変を検証する。
- ハッシュ
データの要約値を作る。比較する基準自体の信頼性も必要。
共通鍵・公開鍵・ハッシュの違い
| 仕組み | 例 | 主な用途と注意 |
|---|---|---|
| 共通鍵暗号 | AES、ChaCha20 | データの暗号化。モード、認証、鍵・ノンスの管理が重要 |
| 公開鍵の署名 | RSA署名、ECDSA | 公開鍵で署名を検証。公開鍵と相手の結び付きも確認 |
| 鍵共有 | ECDHE、X25519など | 通信で使う鍵を合意。署名そのものとは別 |
| ハッシュ | SHA-256、SHA-3 | 要約値による比較。単独で送信者の正当性を証明しない |
| パスワード保存方式 | Argon2idなど | ソルトと計算負荷を使う。高速ハッシュ一回とは異なる |
同じ「公開鍵暗号」でも署名と鍵共有の役割は異なります。鍵長だけで違う方式の強度を単純比較しないでください。
TLSと前方秘匿性
TLSは、通信の保護と相手の認証に複数の仕組みを組み合わせます。TLS 1.3の基本仕様であるRFC 8446では、RSAによる従来の鍵輸送と、署名としてのRSAを区別しています。鍵共有を「X25519だけ」と説明するのは誤りです。他のグループや事前共有鍵を用いる形態もあります。
一時的な鍵共有を使う前方秘匿性は、長期の鍵が後から漏れた時に過去の通信を保護するための特性です。ただし、すべての接続形態に同じ保証があると考えず、公式仕様・製品設定・改訂状況を確認します。
HTTPSは相手サイトの業務上の正当性や内容の安全性まで保証しません。証明書が有効でも、リンク先と依頼の内容は別に確認します。
ハッシュとパスワード保存を混同しない
SHA-256のような高速ハッシュは、単独の一回適用だけでパスワード保存に適するわけではありません。OWASPの保存ガイドに沿い、ソルト、ワークファクター、方式、負荷、移行を確認します。
MD5やSHA-1の衝突耐性の問題は、用途に応じた移行が必要です。「どの用途でもSHA-256へ名前を置換すれば安全」とは言えません。署名、整合性、パスワード保存、既存プロトコルを分けて、サポートされる移行方法を確認します。
開発・運用のチェックリスト
保存方式の選択から見直す場合は、ハッシュと暗号化の違い・パスワード保存の判断で、復元の要否、専用方式、ソルトと鍵の管理を分けて整理できます。判断した条件を次のチェック項目へ引き継ぎます。
- 保護するデータ、保存期間、通信・保存時の要件を整理する。
- 標準ライブラリとサポート中の方式を使う。独自実装を避ける。
- 鍵の生成、保管、利用権限、失効、更新、復旧の責任者を決める。
- 暗号化したバックアップにも、鍵の復旧手段があるか確認する。
- ノンス・IVなどの要件を、利用する方式の仕様で確認する。
- アルゴリズムだけでなく設定・プロトコル・証明書の状態を確認する。
- 秘密鍵やパスワードを、ソースコードやログへ出さない。
疑わしい鍵利用があれば、利用先と影響を調べ、責任者と失効・交換を判断します。唯一の復号鍵を先に削除すると、正規のデータも復元できなくなります。
PQCへの備えと次の学習
量子計算を見据えた移行は、NISTのPQC公式情報を参照します。到来時期や自社影響を断定せず、長期保護が必要なデータ、使っている方式、更新可能性を把握してください。
パスワード保存を見直す時、適切な確認は?