Hi,
I could not find the reason why m4 would be the first secure message, since Bob uses the old ck_b_s for sending his message m4.
In the exercise was explained that the new round trip has started in m1 and m2, so m4 can't be the start of the new round trip from Bob's perspective.
I have assumed that by "all the local secrets" it was meant that the attacker knows:
b (sampled before m1), rk1, g^ab, ck_B_s_1
When sending m3, a symmetric ratchet is performed - predictable by the attacker.
(Ck_B_s_2, mk) = KDF(ck_B_S_1, "tag")
then a message from Alice is received - with a yet unknown sample of a' - and an asymmetric ratchet is performed (but only for the receiving key from Bob: ck_B_r_1):
(rk_3, ck_B_r_1) = KDF(rk, g^a'b)
Even these values would be predictable, because the attacker can see the message from Alice containing the new g^a', right?
Then m4 is sent and since no new roundtrip can be started by Bob, he has to perform another symmetric ratchet.
(ck_B_s_3, mk) = KDF(ck_B_s_2, "tag")
That would be fully predictable again, since the attacker knows the ck_B_s_2 and knows the "tag".
I would say, that only in m7, when a new roundtrip from Bob is started and Bob samples a new exponent b', the messages are secure again, since the attacker needs at least one fresh private exponent to decrypt the messages.
I have an additional question for the asymmetric ratchet step: in the slides, it seems like the old initial root key is used in every step, but I think that must be wrong, and it should be the newly generated root key instead of the old one. However, this would not change anything in this exercise, since the root key would not be used in the symmetric step that is performed in m4, right?
Thank you very much for taking the time to read my very long question. I would appreciate it if you could answer it and point out any mistakes or issues in my reasoning.