<div>Avoided protocol negotiation doesn't just simplify the protocol; it prevents downgrade attacks.<br></div><div><br></div><div>If the protocol supported two ciphersuites simultaneously, and one of them was compromised, then attackers would probably try to force downgrades to the compromised ciphersuite. (You might be able to prevent this through configuration, but that adds further complexity.)<br></div><div><br></div><div>If you actually needed to deploy two incompatible versions of WireGuard, you could have one node load both kernel modules and bridge the two networks. Then, you'd upgrade by having nodes go from one side of the network to the other.<br></div><div><br></div><div>‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐<br></div><div> On June 21, 2018 3:53 PM, Vivien Malerba <vmalerba@gmail.com> wrote:<br></div><div> <br></div><blockquote class="protonmail_quote" type="cite"><div dir="ltr"><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">Hi!<br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">My understanding is that the crypto algorithms have been carefully chosen to avoid having to include ciphers negotiations; with the assumption that in case a weakness is ever found in one of them, the faulty algorithms will be "replaced" and all people will have to do is update (the white paper says "If holes are found in the underlying primitives, all endpoints will be required to update").<br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default"><br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">However, for any organization which will use WireGuard, even if admins are very effective at applying updates, updating all the endpoint systems simultaneously is not realistic. At the same time, it may be the case that the organization can't afford the downtime, in which case using WireGuard will simply not be an option, which is too bad.<br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default"><br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">Maybe it's too early to think about this at the time, but otherwise I think including a mechanism which would instruct the system as "for now, use the new algorithms but still allow for the old ones if the new ones fail while I update all the endpoints" would answer the problem.<br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default"><br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">Don't know how to implement that correctly though, but I just wanted to bring that point to attention.<br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default"><br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">Best regards,<br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">Vivien<br></div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default"><br></div></div></blockquote><div><br></div>