X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/a305982ded78dab4d75bea965e771c182c7ed067..26936c8341691d67655a055956656f2506d53a63:/server/tripe.8.in diff --git a/server/tripe.8.in b/server/tripe.8.in index 930fcfe6..9b3be609 100644 --- a/server/tripe.8.in +++ b/server/tripe.8.in @@ -279,48 +279,31 @@ below for the list of options. The .B tripe server uses Diffie\(en\&Hellman key exchange to agree the symmetric keys -used for bulk data transfer. Currently -.B tripe -can do Diffie\(en\&Hellman in two different kinds of cyclic groups: -.I "Schnorr groups" -(denoted -.BR dh ) -and -.I "elliptic curve groups" -(denoted -.BR ec ). -.PP -A Schnorr group is a prime-order subgroup of the multiplicative group of -a finite field; this is the usual -.I g\*(ssx\*(se -mod -.I p -kind of Diffie\(en\&Hellman. An elliptic curve group is a prime-order -subgroup of the abelian group of -.BR K -rational -points on an elliptic curve defined over a finite field -.BR K . -.PP -Given current public knowledge, elliptic curves can provide similar or -better security to systems based on integer discrete log problems, -faster, and with less transmitted data. It's a matter of controversy -whether this will continue to be the case. The author uses elliptic -curves. +used for bulk data transfer. .PP The server works out which it should be doing based on the key's .B kx-group -attribute, which should be either -.B dh -or -.BR ec . +attribute. If this attribute isn't present, then the key's type is examined: if it's of the form -.BR tripe\- group +.BI tripe\- group then the .I group is used. If no group is specified, .B dh is used as a fallback. +The following groups are defined. +.TP +.B dh +.RS +Use traditional Diffie\(enHellman in a +.IR "Schnorr group" : +a prime-order subgroup of the multiplicative group of +a finite field; this is the usual +.I g\*(ssx\*(se +mod +.I p +kind of Diffie\(en\&Hellman. .PP To create usual Schnorr-group keys, say something like .VS @@ -332,6 +315,24 @@ to construct a parameters key; and create the private keys by key add \-adh \-pparam \-talice \e \-e"now + 1 year" tripe .VE +.RE +.sv -1 +.TP +.B ec +.RS +Use elliptic curve Diffie\(enHellman. +An elliptic curve group is a prime-order +subgroup of the abelian group of +.BR K -rational +points on an elliptic curve defined over a finite field +.BR K . +.PP +Given current public knowledge, elliptic curves can provide similar or +better security to systems based on integer discrete log problems, +faster, and with less transmitted data. It's a matter of controversy +whether this will continue to be the case. The author uses elliptic +curves. +.PP To create elliptic curve keys, say something like .VS key add \-aec\-param \-Cnist-p256 \-eforever \e @@ -347,6 +348,70 @@ for details); and create the private keys by key add \-aec \-pparam \-talice \e \-e"now + 1 year" tripe .VE +.RE +.sv -1 +.TP +.B x25519 +.RS +Use Bernstein's X25519 Diffie\(enHellman function. +This is technically a variant on +the general elliptic curve Diffie\(enHellman +available through the +.B ec +setting, +but carefully designed and heavily optimized. +.PP +To create +.B x25519 +keys, +say something like +.VS +key add \-aempty \-eforever \e + \-tparam tripe\-param kx-group=x25519 +.VE +to construct a parameters key +(see +.BR key (1) +for details); +and create the private keys by +.VS +key add \-ax25519 \-pparam \-talice \e + \-e"now + 1 year" tripe +.VE +.RE +.sv -1 +.TP +.B x448 +.RS +Use Hamburg's X448 Diffie\(enHellman function. +Like +.B x25519 +above, +this is technically a variant on +the general elliptic curve Diffie\(enHellman +available through the +.B ec +setting, +but carefully designed and heavily optimized. +.PP +To create +.B x448 +keys, +say something like +.VS +key add \-aempty \-eforever \e + \-tparam tripe\-param kx-group=x448 +.VE +to construct a parameters key +(see +.BR key (1) +for details); +and create the private keys by +.VS +key add \-ax448 \-pparam \-talice \e + \-e"now + 1 year" tripe +.VE +.RE Note that the .BR tripe-keys (8) program provides a rather more convenient means for generating and @@ -410,6 +475,48 @@ more significantly, the transform is entirely deterministic, so (a) it doesn't need the (possibly slow) random number generator, and (b) it closes a kleptographic channel, over which a compromised implementation could leak secret information to a third party. +.TP +.B naclbox +A transform based on the NaCl +.B crypto_secretbox +transformation. +The main difference is that NaCl uses XSalsa20, +while TrIPE uses plain Salsa20 or ChaCha, +because it doesn't need the larger nonce space. +You can set the +.B cipher +key attribute to one of +.BR salsa20 , +.BR salsa20/12 , +.BR salsa20/8 , +.BR chacha20 , +.BR chacha12 , +or +.B chacha8 +to select the main cipher. +You can set the +.B mac +key attribute to +.B poly1305 +or +.B poly1305/128 +but these are the default and no other choice is permitted. +(This is for forward compatibility, +in case other MACs and/or tag sizes are allowed later.) +.SS "Other key attributes" +The following attributes can also be set on keys. +.TP +.B serialization +Selects group-element serialization formats. +The recommended setting is +.BR constlen , +which selects a constant-length encoding when hashing group elements. +The default, +for backwards compatibility, is +.BR v0 ; +but this is deprecated. +(The old format uses a variable length format for hashing, +which can leak information through timing.) .SS "Using SLIP interfaces" Though not for the faint of heart, it is possible to get .B tripe