Signal >> Blog >> Advanced cryptographic ratcheting https://signal.org/blog/advanced-ratcheting/ 1 of 7 20/03/2019, 08:18 Signal >> Blog >> Advanced cryptographic ratcheting https://signal.org/blog/advanced-ratcheting/ 2 of 7 20/03/2019, 08:18 5 6 5 6 5 Signal >> Blog >> Advanced cryptographic ratcheting https://signal.org/blog/advanced-ratcheting/ 3 of 7 20/03/2019, 08:18 struct { opaque sender_key_id[4]; opaque receiver_key_id[4]; opaque next_key_id[4]; opaque next_key[32]; opaque ciphertext[...]; opaque mac[10]; } OTR_Message; Signal >> Blog >> Advanced cryptographic ratcheting https://signal.org/blog/advanced-ratcheting/ 4 of 7 20/03/2019, 08:18 RootKey RootKey A1 B1 A1 A2 struct { opaque sender_ephemeral[32]; opaque body[...] opaque mac[10] } Signal >> Blog >> Advanced cryptographic ratcheting https://signal.org/blog/advanced-ratcheting/ 5 of 7 20/03/2019, 08:18 Alice Sending | Receiving MK CK RK CK MK -- -- -- -- -- ECDH(A0,B0) | | ECDH(A1,B0) + /| / | / + ECDH(A1,B1) CK-A1-B0 |\ | | \ MK-0 ----+ | \ | | CK-A1-B1 MK-1 ----+ | | | | +---- MK-0 MK-2 ----+ | | | +---- MK-1 ECDH(A2,B1) + /| / | / | CK-A2-B1 | | + ECDH(A2,B2) MK-0 ----+ \ \ \ CK-A2-B2 | +---- MK-0 | +---- MK-1 RK RK struct { opaque sender_ephemeral_key[32]; opaque counter[3]; opaque mac[10]; } Signal >> Blog >> Advanced cryptographic ratcheting https://signal.org/blog/advanced-ratcheting/ 6 of 7 20/03/2019, 08:18 Signal >> Blog >> Advanced cryptographic ratcheting https://signal.org/blog/advanced-ratcheting/ 7 of 7 20/03/2019, 08:18