ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/doc/gvpe.protocol.7.pod
(Generate patch)

Comparing gvpe/doc/gvpe.protocol.7.pod (file contents):
Revision 1.11 by root, Fri Jul 19 21:01:16 2013 UTC vs.
Revision 1.12 by root, Fri Jul 19 21:13:44 2013 UTC

142 142
143RAND is a sequence of fully random bytes, used to increase the entropy of 143RAND is a sequence of fully random bytes, used to increase the entropy of
144the data for encryption purposes. 144the data for encryption purposes.
145 145
146SEQNO is a 32-bit sequence number. It is negotiated at every connection 146SEQNO is a 32-bit sequence number. It is negotiated at every connection
147initialization and starts at some random 31 bit value. VPE currently uses 147initialization and starts at some random 31 bit value. GVPE currently uses
148a sliding window of 512 packets/sequence numbers to detect reordering, 148a sliding window of 512 packets/sequence numbers to detect reordering,
149duplication and replay attacks. 149duplication and replay attacks.
150 150
151The encryption is done on RAND+SEQNO+DATA in CBC mode with zero IV (or, 151The encryption is done on RAND+SEQNO+DATA in CBC mode with zero IV (or,
152equivalently, the IV is RAND+SEQNO, encrypted with the block cipher, 152equivalently, the IV is RAND+SEQNO, encrypted with the block cipher,
153unless RAND size is decreased or increased over the default value). 153unless RAND size is decreased or increased over the default value).
154
155The random prefix itself is generated by using AES in CTR mode with a
156random key and starting value, which should make them unpredictable even
157before encrypting them again. The sequence number additionally ensures
158that the IV is unique.
154 159
155=head2 The authentication/key exchange protocol 160=head2 The authentication/key exchange protocol
156 161
157Before nodes can exchange packets, they need to establish authenticity of 162Before nodes can exchange packets, they need to establish authenticity of
158the other side and a key. Every node has a private RSA key and the public 163the other side and a key. Every node has a private RSA key and the public
203of the original challenge. 208of the original challenge.
204 209
205The result of this process is to authenticate each node to the other 210The result of this process is to authenticate each node to the other
206node, while exchanging keys using both RSA and ECDH, the latter providing 211node, while exchanging keys using both RSA and ECDH, the latter providing
207perfect forward secrecy. 212perfect forward secrecy.
213
214The protocol has been overdesigned where this was possible without
215increasing implementation complexity, in an attempt to protect against
216implementation or protocol failures. For example, if the ECDH challenge
217was found to be flawed, perfect forward secrecy would be lost, but
218the data would still be protected. Likewise, standard algorithms and
219implementations are used where possible.
208 220
209=head2 Retrying 221=head2 Retrying
210 222
211When there is no response to an auth request, the node will send auth 223When there is no response to an auth request, the node will send auth
212requests in bursts with an exponential back-off. After some time it will 224requests in bursts with an exponential back-off. After some time it will

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines