Double Ratchet
Signalプロトコルのアルゴリズムで、メッセージごとに新しい暗号鍵を生成する。2014年にTrevor PerrinとMoxie Marlinspikeが設計した。
「ダブル」は、Diffie-Hellmanラチェットと対称KDFラチェットの組み合わせを指す。対称ラチェットでは、メッセージごとに前の鍵から新しい鍵を導出する。DHラチェットでは、相手が返信するたびに新しいDH鍵を生成する。その結果、前方秘匿性(古い鍵が漏れても過去の通信は無事)と、侵害後の回復性(侵入されても次の返信で安全が戻る)が得られる。順序が入れ替わって届いたメッセージは、スキップした鍵のキャッシュで処理する。実装はlibsignal(C/Rust/Java/Swiftバインディング)である。