commit e64bac6eb4a89ae63a2d5c1cb41cac903f1e8e66 Author: Nick Mathewson nickm@torproject.org Date: Tue Aug 30 11:04:44 2016 -0400
Increase TLS RSA link key length to 2048 bits
Oddly, nothing broke.
Closes ticket 13752. --- changes/feature13752 | 4 ++++ src/common/tortls.c | 8 +++++--- src/test/test_link_handshake.c | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/changes/feature13752 b/changes/feature13752 new file mode 100644 index 0000000..f318cc2 --- /dev/null +++ b/changes/feature13752 @@ -0,0 +1,4 @@ + o Minor features (fingerprinting resistence, authentication): + - Extend the length of RSA keys used for TLS link authentication to + 2048 bits. (These weren't used for forward secrecy; for forward + secrecy, we used P256.) Closes ticket 13752. diff --git a/src/common/tortls.c b/src/common/tortls.c index fd86981..33bd334 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -775,8 +775,8 @@ tor_tls_context_decref(tor_tls_context_t *ctx) /** Set *<b>link_cert_out</b> and *<b>id_cert_out</b> to the link certificate * and ID certificate that we're currently using for our V3 in-protocol * handshake's certificate chain. If <b>server</b> is true, provide the certs - * that we use in server mode; otherwise, provide the certs that we use in - * client mode. */ + * that we use in server mode (auth, ID); otherwise, provide the certs that we + * use in client mode. (link, ID) */ int tor_tls_get_my_certs(int server, const tor_x509_cert_t **link_cert_out, @@ -1026,6 +1026,8 @@ tor_tls_context_init_one(tor_tls_context_t **ppcontext, /** The group we should use for ecdhe when none was selected. */ #define NID_tor_default_ecdhe_group NID_X9_62_prime256v1
+#define RSA_LINK_KEY_BITS 2048 + /** Create a new TLS context for use with Tor TLS handshakes. * <b>identity</b> should be set to the identity key used to sign the * certificate. @@ -1051,7 +1053,7 @@ tor_tls_context_new(crypto_pk_t *identity, unsigned int key_lifetime, /* Generate short-term RSA key for use with TLS. */ if (!(rsa = crypto_pk_new())) goto error; - if (crypto_pk_generate_key(rsa)<0) + if (crypto_pk_generate_key_with_bits(rsa, RSA_LINK_KEY_BITS)<0) goto error; if (!is_client) { /* Generate short-term RSA key for use in the in-protocol ("v3") diff --git a/src/test/test_link_handshake.c b/src/test/test_link_handshake.c index 9a3b57d..05c8400 100644 --- a/src/test/test_link_handshake.c +++ b/src/test/test_link_handshake.c @@ -258,7 +258,8 @@ recv_certs_setup(const struct testcase_t *test) const tor_x509_cert_t *a,*b; const uint8_t *enca, *encb; size_t lena, lenb; - tor_tls_get_my_certs(1, &a, &b); + tor_tls_get_my_certs(0, &a, &b); /* Use '0' here to make sure we get + * auth cert */ tor_x509_cert_get_der(a, &enca, &lena); tor_x509_cert_get_der(b, &encb, &lenb); certs_cell_cert_setlen_body(ccc1, lena);
tor-commits@lists.torproject.org