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.8 by root, Sun Mar 6 19:40:27 2011 UTC vs.
Revision 1.10 by root, Fri Jul 12 04:16:18 2013 UTC

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. VPE 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,
152equivalently, the IV is RAND+SEQNO, encrypted with the block cipher,
153unless RAND size is decreased or increased over the default value).
154
151=head2 The authentication protocol 155=head2 The authentication protocol
152 156
153Before nodes can exchange packets, they need to establish authenticity of 157Before nodes can exchange packets, they need to establish authenticity of
154the other side and a key. Every node has a private RSA key and the public 158the other side and a key. Every node has a private RSA key and the public
155RSA keys of all other nodes. 159RSA keys of all other nodes.
156 160
157A host establishes a simplex connection by sending the other node an 161A host establishes a simplex connection by sending the other node an RSA
158RSA encrypted challenge containing a random challenge (consisting of 162encrypted challenge containing a random challenge (consisting of the
159the encryption key to use when sending packets, more random data and 163encryption and authentication keys to use when sending packets, more
160PKCS1_OAEP padding) and a random 16 byte "challenge-id" (used to detect 164random data and PKCS1_OAEP padding) and a random 16 byte "challenge-id"
161duplicate auth packets). The destination node will respond by replying 165(used to detect duplicate auth packets). The destination node will respond
162with an (unencrypted) RIPEMD160 hash of the decrypted challenge, which 166by replying with an (unencrypted) hash of the decrypted challenge, which
163will authenticate that node. The destination node will also set the 167will authenticate that node. The destination node will also set the
164outgoing encryption parameters as given in the packet. 168outgoing encryption parameters as given in the packet.
165 169
166When the source node receives a correct auth reply (by verifying the 170When the source node receives a correct auth reply (by verifying the
167hash and the id, which will expire after 120 seconds), it will start to 171hash and the id, which will expire after 120 seconds), it will start to
203will try to connect every few seconds. 207will try to connect every few seconds.
204 208
205=head2 Routing and Protocol translation 209=head2 Routing and Protocol translation
206 210
207The GVPE routing algorithm is easy: there isn't much routing to speak 211The GVPE routing algorithm is easy: there isn't much routing to speak
208of: When routing packets to another node, GVPE trues the following 212of: When routing packets to another node, GVPE tries the following
209options, in order: 213options, in order:
210 214
211=over 4 215=over 4
212 216
213=item If the two nodes should be able to reach each other directly (common 217=item If the two nodes should be able to reach each other directly (common

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines