This "notarization" can only convince the notary of the encrypted information exchange, but cannot convince a third party. Also it gives the notary some control over the streams. So better than this would be that instead of getMAC/sendMAC there can be two messages getSignature/SendSignature that send a digitally signed MAC using a server's pubkey, instead of only the MAC.
Another option is that in notarization mode, each MAC sent would include the nseq and the MAC of the last packets received/sent of both streams. Then an exact reproduction of the message interaction would be available for notarization, but the seq_num of the opposed stream would need to be transmitted in the header or encrypted in the payload (it cannot be part of the additional_data because it is not known to the client, because of the delay of the network)
In AEAD terminology the first idea would be done by modifying the additional_data:
additional_data = seq_num + prev_authentication_tag +
TLSPlaintext.type +
TLSPlaintext.version
while the second would be:
additional_data = seq_num + prev_authentication_tag +
opposite_stream_prev_authentication_tag +
TLSPlaintext.type +
TLSPlaintext.version
Again, this would be an optional mode, orthogonal with ciphersuite chosen, extensions, etc.
I hope you find this extension as usefull as we do. Last, we have several use cases for key renegotiation, and it's a pity it will be excluded from TLS 1.3. I will present my arguments in another e-mail.
Best regards,
--
Sergio D. Lerner
Cryptocurrency Security Auditor
Coinspect.com