Closed meLog closed 8 years ago
I'm not involved in the development of the double_ratchet
but I feel qualified to comment because I implemented it.
<none>
because Alice has the ratchet_flag
set to true
initally.ratchet_flag
is set, a new root key is required in order to start a new message chain. The KDF line means, that all those keys (RK, NHKs, CKs
) are derived from the same secret. But those keys aren't identical. This would usually be done by using a key derivation function with subkey counter and using a different subkey counter for each of the three keys.If you understand German, I can point you to my talk that explains the ratchet (very simplified but enough to grasp the concept): https://www.youtube.com/watch?v=Ys3f4-TJEYM
The explanation of the ratchet starts at 16m24s.
Dankeschön. Super Video. Hab tatsächlich alles so verstanden wie du auch.
I´ve got several questions regarding the functioning of double_ratchet.
1 Initialization
The wiki says: Alice: KDF from master_key: RK, HKs=, HKr, NHKs, NHKr, CKs=, CKr
and
Bob:
KDF from master_key: RK, HKr=, HKs, NHKr, NHKs, CKr=, CKs
Does that mean that Alice and Bob derive each others' keys from the master key or that they just derive their own and the other is transmitted to them?
And does s = sender on bobs side stand for alices or for bobs keys?
2 Sending messages
The wiki says: if ratchet_flag: ... RK, NHKs, CKs = KDF( HMAC-HASH(RK, DH(DHRs, DHRr)) )
Does that mean:
RK = KDF( HMAC-HASH(RK, DH(DHRs, DHRr)) ) NKHs = KDF( HMAC-HASH(RK, DH(DHRs, DHRr)) ) and CKs = KDF( HMAC-HASH(RK, DH(DHRs, DHRr)) )
A new NKHs and CKs for each new rachet key is clear, but why a new RK, too?
Currently I´m writing my bachelor thesis and I´m grateful for any helpful comments.