From c8cac0b8745f1270c3fc341eb80327aa201b51a9 Mon Sep 17 00:00:00 2001 From: Monica Moniot Date: Wed, 25 Oct 2023 18:15:22 -0400 Subject: [PATCH] fixed typos --- whitepaper/zssp.pdf | Bin 422313 -> 422337 bytes whitepaper/zssp.tex | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/whitepaper/zssp.pdf b/whitepaper/zssp.pdf index 58bcdbb22c81ebc7c67ca9e4a20ca02003573cbf..4f157114a22395172bb8a7d00cf4608bdc6610e1 100644 GIT binary patch delta 10229 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

6tVK`RCh$EKKGE`S&h)+Urm!d0hV57X#7m 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 delta 10221 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 TzNV0khtt%MOI6j?-;E0Zb@qMh diff --git a/whitepaper/zssp.tex b/whitepaper/zssp.tex index 6596e9c..5ee0092 100644 --- a/whitepaper/zssp.tex +++ b/whitepaper/zssp.tex @@ -934,15 +934,15 @@ The protocol is initialized with a random 256-bit string \texttt{salt}. As the n \end{bytefield} \end{figure} -To challenge Alice to proof address ownership, Bob will include a MAC that is a salted hash of a counter, for replay protection, and Alice's address. Alice is expected to include in their next \texttt{response} the same counter and MAC, proving they can send and receive packets from their address. Attackers who are spoofing their address would not be able to receive nor reply to Bob's challenge. Many DDOS attacks, however, are performed using botnets of computers infected with malware. Each of these computers usually has access to a static address it can stage an attack from, which would allow it to respond to the challenge. Hence Bob also requires a proof of work from Alice. +To challenge Alice to proof address ownership, Bob will send a counter value, for replay protection, and a MAC that is a salted hash of the counter and Alice's address. Alice is expected to include in their next \texttt{response} the same counter and MAC, proving they can send and receive packets from their address. Attackers who are spoofing their address would not be able to receive nor reply to Bob's challenge. Many DDOS attacks, however, are performed using botnets of computers infected with malware. Each of these computers usually has access to a static address it can stage an attack from, which would allow it to respond to the challenge. Hence Bob also requires a proof of work from Alice. To challenge Alice to prove work, Bob will require Alice to find a 64-bit string that, when appended to their counter and MAC, produces a hash with $N$ leading zeros. In order to do this we expect Alice will have to compute SHA-512 $2^N$ times, which is a proof of work. $N$ is a static protocol constant. We recommend setting $N$ to be the smallest value that makes computing the proof of work, \algorithmref{alg:challenge_response}, take more time on average than it takes the key exchange protocol to process Alice's Hello packet. For ZSSP we have found this value to be $N=13$. This method of choosing $N$ minimizes the burden on legitimate peers while still eliminating the computational asymmetry between an attacker spamming Hello packets and Bob processing them. This, in general, should make a CPU exhaustion attack more expensive than a volumetric DDOS attack. -Finally, to mitigate the possibility that the proof of work itself becomes a CPU exhaustion vector, Bob is required to ``proof receipt'' of Alice's response. Bob must include the 64-bit proof of work field sent by Alice in their challenge to Alice. If Alice sees that their proof of work is not included in Bob's challenge, Alice will ignore the challenge. This makes it difficult for an attacker to spoof a challenge to look like it came from Bob. The attacker would have to be able to read Alice's Hello packet and send their fake challenge before Bob sends the real challenge. The average botnet DDOS attacker is not capable of doing this. Using the proof of work for this has the advantage of making it trivial to serialize each of Alice's executions of \algorithmref{alg:challenge_response}, rate limiting the proof of work and preventing more than one CPU core from being consumed. The proof of receipt could be made more effective if it was also a salted hash of a counter and Bob's address, but we felt that the current design was more than enough to make CPU exhaustion attacks more expensive than volumetric DDOS attacks. It is recommended that Alice eventually timeout their key exchange with Bob if Bob has done nothing but send challenges. +Finally, to mitigate the possibility that the proof of work itself becomes a CPU exhaustion vector, Bob is required to ``prove receipt'' of Alice's response. Bob must include the 64-bit proof of work field sent by Alice in their challenge to Alice. If Alice sees that their proof of work is not included in Bob's challenge, Alice will ignore the challenge. This makes it difficult for an attacker to spoof a challenge to look like it came from Bob. The attacker would have to be able to read Alice's Hello packet and send their fake challenge before Bob sends the real challenge. The average botnet DDOS attacker is not capable of doing this. Using the proof of work for this purpose has the advantage of making it trivial to serialize each of Alice's executions of \algorithmref{alg:challenge_response}, rate limiting the proof of work and preventing more than one CPU core from being consumed. The proof of receipt could be made more effective if it was also a salted hash of a counter and Bob's address, but we felt that the current design was more than enough to make CPU exhaustion attacks more expensive than volumetric DDOS attacks. It is recommended that Alice has a mechanism to eventually timeout their key exchange with Bob if Bob has done nothing but send challenges. To prevent a legitimate Alice from unintentionally straining Bob while Bob is under load, Alice should not immediately resend their Hello packet upon receipt of a \texttt{challenge}. Instead Alice should wait until they would normal resend their Hello packet. -The application may choose to rotate the \texttt{salt} variable periodically. While the protocol as we have described it so far has strong replay protection, it does not automatically expire sent challenges after a set amount of time. This means challenges might never expire, and could be saved up to be used later. We do not consider this a practical DOS attack vector, but for applications that do, rotating \texttt{salt} on a periodic schedule is one of the best solutions. +Implementations may choose to rotate the \texttt{salt} variable periodically. While the protocol as we have described it so far has strong replay protection, it does not automatically expire sent challenges after a set amount of time. This means challenges might never expire, and could be saved up to be used later. We do not consider this a practical DOS attack vector, but for applications that do, rotating \texttt{salt} on a periodic schedule is one of the best solutions. \begin{algorithm} \caption{Alice generates a null response -- The returned value is appended to Alice's initial Hello packet to Bob.}\label{alg:challenge_empty}