暗号 の用語
50 terms
暗号学
敵対者が存在する環境で機密性・完全性・真正性・否認防止を保証するため、数学的手法によって情報を保護する科学。
暗号化
アルゴリズムと鍵を用いて平文を暗号文に変換し、認可された当事者のみが元のデータを復元できるようにする処理。
復号
適切なアルゴリズムと鍵を用いて暗号文を元の平文に戻す、暗号化の逆操作。
対称鍵暗号
暗号化と復号に同じ秘密鍵を使う暗号方式で、鍵を安全に共有できれば高速で強力な機密性を提供する。
非対称鍵暗号
数学的に対応した鍵ペア(暗号化用の公開鍵と復号用の秘密鍵)を用い、事前の秘密共有なしに安全な通信を可能にする暗号方式。
公開鍵暗号方式
公開鍵と秘密鍵のペアを用い、事前共有の秘密なしに暗号化・鍵交換・電子署名・認証を実現する暗号学の分野。
秘密鍵
非対称鍵ペアのうち秘密にすべき側で、所有者宛ての暗号文を復号したり、所有者を証明する電子署名を生成するために用いられる鍵。
公開鍵
非対称鍵ペアのうち自由に配布できる側で、所有者宛ての暗号化や対応する秘密鍵による署名の検証に用いられる鍵。
AES(Advanced Encryption Standard)
NIST が標準化した 128 ビットブロック暗号で、鍵長は 128・192・256 ビット。Daemen と Rijmen が設計し、世界で最も広く使われている対称暗号。
DES(Data Encryption Standard)
1977 年に NBS が標準化した 64 ビットブロック暗号(実効鍵長 56 ビット)。鍵空間を数時間で総当たりできるため、現在は破られているとされる旧式アルゴリズム。
トリプル DES(3DES)
DES アルゴリズムを 2 つまたは 3 つの鍵で 3 回連結適用して実効鍵長を延ばすレガシーブロック暗号。NIST により廃止され、現在は時代遅れと見なされている。
RSA アルゴリズム
Rivest・Shamir・Adleman が 1977 年に発表した公開鍵アルゴリズム。2 つの大きな素数の積を素因数分解する難しさを安全性の根拠とする。
楕円曲線暗号(ECC)
有限体上の楕円曲線の代数構造に基づく公開鍵暗号の総称で、RSA と同等の安全性をはるかに小さな鍵長で実現する。
ECDSA
DSA の楕円曲線版で、FIPS 186 で標準化された電子署名アルゴリズム。短い署名長と、楕円曲線離散対数問題に基づく安全性が特徴。
ディフィー・ヘルマン鍵交換
離散対数問題の困難性に基づき、二者が安全でない通信路上で共有秘密を実際に送らずに導出する公開鍵プロトコル。
ECDH
ディフィー・ヘルマン鍵交換の楕円曲線版で、より短い鍵長と高速な演算で同等の共有秘密を導出するプロトコル。
Blowfish
Bruce Schneier が 1993 年に設計した 64 ビットブロック・可変鍵長の Feistel 暗号。暗号解析的には現役だがブロック長が短く、現在は AES に置き換わっている。
Twofish
Schneier らが設計した 128 ビットブロック・128/192/256 ビット鍵の対称暗号で、AES コンテストの最終候補。安全だが標準採用された AES に押され、利用は限定的。
ChaCha20
Daniel J. Bernstein が設計した現代的ストリーム暗号で、256 ビット鍵と 96 ビットナンスを用いる。Poly1305 と組み合わせた AEAD「ChaCha20-Poly1305」として広く使われる。
Salsa20
Daniel J. Bernstein が 2005 年に設計した 256 ビット鍵のストリーム暗号。eSTREAM ポートフォリオに選定され、ChaCha20 の直接の先祖となるアルゴリズム。
ブロック暗号
固定長の平文ブロックを秘密鍵で暗号化する対称暗号で、任意長のデータを扱うために通常は暗号利用モードと組み合わせて使う。
ストリーム暗号
鍵とナンスから導出した擬似乱数の鍵ストリームを平文とビットまたはバイト単位で XOR して暗号化する対称暗号。
暗号スイート
鍵交換、認証、データ暗号化、完全性のアルゴリズム群を 1 つの名前にまとめた組み合わせで、TLS などの協議によりセッションごとに選ばれる。
暗号学的ハッシュ関数
任意長の入力を固定長のダイジェストへ写す決定的な一方向関数で、衝突耐性・原像耐性・第二原像耐性を備える。
MD5
Ron Rivest が 1992 年に設計した 128 ビットの暗号学的ハッシュ関数。実用的な衝突が容易に作れる「破られた」アルゴリズムであり、セキュリティ用途では使用してはならない。
SHA-1
1995 年に NSA が設計した暗号学的ハッシュ関数で、160 ビットのダイジェストを出力するが、現在では衝突耐性が破られている。
SHA-256
SHA-2 ファミリーに属する 256 ビットの暗号学的ハッシュ関数で、デジタル署名、TLS、ブロックチェーン、完全性検証で広く利用される。
SHA-3
Keccak のスポンジ構造に基づくハッシュ関数ファミリーで、SHA-2 とは構造的に異なる代替として NIST が標準化した。
BLAKE2
RFC 7693 で規定された高速かつ現代的な暗号学的ハッシュ関数で、SHA-3 に匹敵する安全性とソフトウェア上での圧倒的な高速性を提供する。
Argon2
2015 年の Password Hashing Competition で優勝し、RFC 9106 に標準化された、メモリ消費型の最新パスワードハッシュ関数兼 KDF。
bcrypt
Blowfish 暗号の鍵スケジューリングを基にした適応的パスワードハッシュ関数で、1999 年に Provos と Mazières が設計した。
scrypt
2009 年に Colin Percival が設計し RFC 7914 で標準化された、メモリ消費型のパスワードベース KDF。パスワードハッシュや一部の暗号通貨の Proof-of-Work に利用される。
PBKDF2
PKCS #5 / RFC 8018 で定義されたパスワードベースの鍵導出関数で、設定可能な反復回数とソルトを用いて擬似乱数関数を繰り返し適用する。
HMAC
RFC 2104 と FIPS 198-1 で定義された、暗号学的ハッシュ関数を土台とする鍵付きメッセージ認証コード(MAC)構造。
デジタル署名
メッセージや文書の真正性・完全性・否認防止を証明する公開鍵暗号方式のメカニズム。
メッセージ認証コード(MAC)
共有秘密鍵で計算・検証される短い対称鍵タグで、メッセージの認証と改ざん検知を行う仕組み。
ソルト
ハッシュ計算前にパスワードへ付加する一意のランダム値で、レインボーテーブルを無効化し各ユーザーのハッシュを別物にする仕組み。
ペッパー
ハッシュ計算前に各パスワードへ加算するサーバー側秘密で、データベースとは別の場所に保管し、ハッシュ流出後のオフライン解析を抑制する。
ノンス
暗号アルゴリズムに与える一度しか使ってはならない値で、新鮮性を保証し、リプレイや鍵・IV の再利用を防ぐ。
初期化ベクトル(IV)
ブロック暗号モードに与えるランダムな初期値で、同じ鍵で同じ平文を暗号化しても異なる暗号文になるようにする。
完全前方秘匿性(PFS)
長期鍵が将来漏洩しても過去のセッション通信が復号されないことを保証するプロトコル特性。
鍵導出関数(KDF)
パスワードや共有秘密、マスター鍵などの秘密入力から、1 つまたは複数の強力な暗号鍵を導出する暗号関数。
キーエスクロー
暗号鍵のコピーを信頼できる第三者に預け、所定の条件下で権限ある主体が回復できるようにする仕組み。
鍵ローテーション
1 つの鍵で保護されるデータ量と漏洩時の影響範囲を抑えるため、暗号鍵を定期的に新しいものへ置き換える運用慣行。
暗号鍵
暗号アルゴリズムをパラメータ化し、データの暗号化・復号・署名・認証に用いる高エントロピーな秘密または公開値。
セッション鍵
1 回の通信セッションを保護するために使われ、終了後に破棄される短命の対称鍵。
マスター鍵
他の鍵を導出したり、他の鍵を直接暗号化したりするために用いる、長期に保有する高価値の暗号鍵。
量子暗号
光子などの量子力学的性質を利用して、古典通信だけでは到達できない安全性保証を実現する暗号技術。
耐量子暗号
古典計算機と大規模量子計算機の両方からの攻撃に耐えるよう設計された古典的な暗号アルゴリズム群。
準同型暗号
暗号文に対して計算を直接行え、その結果を復号すると平文に同じ演算をしたのと同じ値が得られる暗号方式。