The branch, master has been updated via 9b7825d2d38 auth:ntlmssp: Use generate_random_buffer() for session keys via 6fa3e4de7c1 s3:passdb: Use generate_secret_buffer() for generating passwords via a3e36dd8f43 s4:samdb: Use generate_nonce_buffer() for AEC GCM nonce via 93196dd823e lib:util: Use generate_secret_buffer() for long term passwords via d73be972ea5 Revert "s4:rpc_server: Use generate_secret_buffer() to create a session key" via 38b0695ddac Revert "s4:rpc_server: Use generate_secret_buffer() for backupkey wap_key" via 1c68085404c Revert "s4:rpc_server: Use generate_secret_buffer() for netlogon challange" via 689760f2652 Revert "libcli:auth: Use generate_secret_buffer() for netlogon challenge" via 97c441d7c28 lib:util: Fix documentation for random number functions from 4d276a93fc6 smbtorture: extend rpc.lsa to lookup machine over forest-wide LookupNames
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 9b7825d2d387bcb2515154418a990669ab96358d Author: Andreas Schneider <a...@samba.org> Date: Mon Aug 12 19:07:15 2019 +0200 auth:ntlmssp: Use generate_random_buffer() for session keys Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> Autobuild-User(master): Alexander Bokovoy <a...@samba.org> Autobuild-Date(master): Wed Aug 14 16:26:47 UTC 2019 on sn-devel-184 commit 6fa3e4de7c168dc7c869ec9966729a36bda27f57 Author: Andreas Schneider <a...@samba.org> Date: Mon Aug 12 18:57:06 2019 +0200 s3:passdb: Use generate_secret_buffer() for generating passwords Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> commit a3e36dd8f43a5c06969ae158fa54fbc649f44d03 Author: Andreas Schneider <a...@samba.org> Date: Mon Aug 12 18:56:35 2019 +0200 s4:samdb: Use generate_nonce_buffer() for AEC GCM nonce Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> commit 93196dd823e114f260a68d28bb59eac3909c30d8 Author: Andreas Schneider <a...@samba.org> Date: Mon Aug 12 18:55:56 2019 +0200 lib:util: Use generate_secret_buffer() for long term passwords Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> commit d73be972ea58d564c770698bf6374a6074f111fe Author: Andreas Schneider <a...@samba.org> Date: Mon Aug 12 18:50:02 2019 +0200 Revert "s4:rpc_server: Use generate_secret_buffer() to create a session key" This reverts commit 4b2480518bd3887be3a6cfb713523ac084e09fd5. Reviewed-by: Alexander Bokovoy <a...@samba.org> commit 38b0695ddac244c67b2a33eb927ad3e95d2e8bd6 Author: Andreas Schneider <a...@samba.org> Date: Mon Aug 12 18:49:52 2019 +0200 Revert "s4:rpc_server: Use generate_secret_buffer() for backupkey wap_key" This reverts commit 5a62056b4530e4c509444be9164a1fca1dce193f. Reviewed-by: Alexander Bokovoy <a...@samba.org> commit 1c68085404cd467c217640e3eabfc4b7f8b1ce9f Author: Andreas Schneider <a...@samba.org> Date: Mon Aug 12 18:49:37 2019 +0200 Revert "s4:rpc_server: Use generate_secret_buffer() for netlogon challange" This reverts commit a21770cfdffd2a21045a1bc87e489af0f4c6f130. Reviewed-by: Alexander Bokovoy <a...@samba.org> commit 689760f26521fe5b4c8964a25ddd3ab1c9e9977c Author: Andreas Schneider <a...@samba.org> Date: Mon Aug 12 18:49:31 2019 +0200 Revert "libcli:auth: Use generate_secret_buffer() for netlogon challenge" This reverts commit c3ba556f52b15dd80efc26e4fb8f43ce2ee3a7f0. Reviewed-by: Alexander Bokovoy <a...@samba.org> commit 97c441d7c28feb29168e81ebbc5c55b09a845087 Author: Andreas Schneider <a...@samba.org> Date: Mon Aug 12 16:10:20 2019 +0200 lib:util: Fix documentation for random number functions Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> ----------------------------------------------------------------------- Summary of changes: auth/ntlmssp/ntlmssp_client.c | 2 +- lib/util/genrand.c | 9 +++++++-- lib/util/genrand.h | 8 ++++++-- lib/util/genrand_util.c | 6 +++--- libcli/auth/netlogon_creds_cli.c | 3 +-- source3/passdb/pdb_nds.c | 3 ++- source4/dsdb/samdb/ldb_modules/encrypted_secrets.c | 2 +- source4/rpc_server/backupkey/dcesrv_backupkey.c | 3 +-- source4/rpc_server/netlogon/dcerpc_netlogon.c | 3 +-- source4/rpc_server/samr/samr_password.c | 5 ++--- 10 files changed, 25 insertions(+), 19 deletions(-) Changeset truncated at 500 lines: diff --git a/auth/ntlmssp/ntlmssp_client.c b/auth/ntlmssp/ntlmssp_client.c index b8d1190466b..2a80feb4fed 100644 --- a/auth/ntlmssp/ntlmssp_client.c +++ b/auth/ntlmssp/ntlmssp_client.c @@ -696,7 +696,7 @@ NTSTATUS ntlmssp_client_challenge(struct gensec_security *gensec_security, .size = session_key.length, }; - generate_secret_buffer(client_session_key, sizeof(client_session_key)); + generate_random_buffer(client_session_key, sizeof(client_session_key)); /* Encrypt the new session key with the old one */ encrypted_session_key = data_blob_talloc(ntlmssp_state, diff --git a/lib/util/genrand.c b/lib/util/genrand.c index a5809aa2bc9..18ffa0d95e6 100644 --- a/lib/util/genrand.c +++ b/lib/util/genrand.c @@ -33,13 +33,16 @@ _PUBLIC_ void generate_random_buffer(uint8_t *out, int len) { - /* Thread and fork safe random number generator for temporary keys. */ + /* Random number generator for temporary keys. */ gnutls_rnd(GNUTLS_RND_RANDOM, out, len); } _PUBLIC_ void generate_secret_buffer(uint8_t *out, int len) { - /* The key generator, will re-seed after a fixed amount of bytes is + /* + * Random number generator for long term keys. + * + * The key generator, will re-seed after a fixed amount of bytes is * generated (typically less than the nonce), and will also re-seed * based on time, i.e., after few hours of operation without reaching * the limit for a re-seed. For its re-seed it mixes mixes data obtained @@ -51,6 +54,8 @@ _PUBLIC_ void generate_secret_buffer(uint8_t *out, int len) _PUBLIC_ void generate_nonce_buffer(uint8_t *out, int len) { /* + * Random number generator for nonce and initialization vectors. + * * The nonce generator will reseed after outputting a fixed amount of * bytes (typically few megabytes), or after few hours of operation * without reaching the limit has passed. diff --git a/lib/util/genrand.h b/lib/util/genrand.h index abb8ce2c10a..70f36312e58 100644 --- a/lib/util/genrand.h +++ b/lib/util/genrand.h @@ -20,12 +20,16 @@ */ /** - * Thread and fork safe random number generator for temporary keys. + * @brief Generate random values for session and temporary keys. + * + * @param[in] out A pointer to the buffer to fill with random data. + * + * @param[in] len The size of the buffer to fill. */ void generate_random_buffer(uint8_t *out, int len); /** - * @brief Generate random values for key buffers (e.g. session keys) + * @brief Generate random values for long term keys and passwords. * * @param[in] out A pointer to the buffer to fill with random data. * diff --git a/lib/util/genrand_util.c b/lib/util/genrand_util.c index d7b74c6cf1a..05d1f3ef6e5 100644 --- a/lib/util/genrand_util.c +++ b/lib/util/genrand_util.c @@ -185,7 +185,7 @@ _PUBLIC_ char *generate_random_str_list(TALLOC_CTX *mem_ctx, size_t len, const c char *retstr = talloc_array(mem_ctx, char, len + 1); if (!retstr) return NULL; - generate_random_buffer((uint8_t *)retstr, len); + generate_secret_buffer((uint8_t *)retstr, len); for (i = 0; i < len; i++) { retstr[i] = list[retstr[i] % list_len]; } @@ -247,7 +247,7 @@ _PUBLIC_ char *generate_random_password(TALLOC_CTX *mem_ctx, size_t min, size_t if (diff > 0 ) { size_t tmp; - generate_random_buffer((uint8_t *)&tmp, sizeof(tmp)); + generate_secret_buffer((uint8_t *)&tmp, sizeof(tmp)); tmp %= diff; @@ -317,7 +317,7 @@ _PUBLIC_ char *generate_random_machine_password(TALLOC_CTX *mem_ctx, size_t min, if (diff > 0) { size_t tmp; - generate_random_buffer((uint8_t *)&tmp, sizeof(tmp)); + generate_secret_buffer((uint8_t *)&tmp, sizeof(tmp)); tmp %= diff; diff --git a/libcli/auth/netlogon_creds_cli.c b/libcli/auth/netlogon_creds_cli.c index 18143ca36d0..50a5f50a57d 100644 --- a/libcli/auth/netlogon_creds_cli.c +++ b/libcli/auth/netlogon_creds_cli.c @@ -1177,8 +1177,7 @@ static void netlogon_creds_cli_auth_challenge_start(struct tevent_req *req) TALLOC_FREE(state->creds); - /* We need to use a CSPRNG which reseeds for generating session keys. */ - generate_secret_buffer(state->client_challenge.data, + generate_random_buffer(state->client_challenge.data, sizeof(state->client_challenge.data)); subreq = dcerpc_netr_ServerReqChallenge_send(state, state->ev, diff --git a/source3/passdb/pdb_nds.c b/source3/passdb/pdb_nds.c index 349ea0b6c38..216c9e6b50b 100644 --- a/source3/passdb/pdb_nds.c +++ b/source3/passdb/pdb_nds.c @@ -814,7 +814,8 @@ static NTSTATUS pdb_nds_update_login_attempts(struct pdb_methods *methods, got_clear_text_pw = True; } } else { - generate_random_buffer((unsigned char *)clear_text_pw, 24); + /* This is a long term key */ + generate_secret_buffer((unsigned char *)clear_text_pw, 24); clear_text_pw[24] = '\0'; DEBUG(5,("pdb_nds_update_login_attempts: using random password %s\n", clear_text_pw)); } diff --git a/source4/dsdb/samdb/ldb_modules/encrypted_secrets.c b/source4/dsdb/samdb/ldb_modules/encrypted_secrets.c index b2df15c08f4..deaa03cbb35 100644 --- a/source4/dsdb/samdb/ldb_modules/encrypted_secrets.c +++ b/source4/dsdb/samdb/ldb_modules/encrypted_secrets.c @@ -447,7 +447,7 @@ static struct ldb_val samba_encrypt_aead(int *err, goto error_exit; } - generate_random_buffer(iv, AES_GCM_128_IV_SIZE); + generate_nonce_buffer(iv, AES_GCM_128_IV_SIZE); es->iv.length = AES_GCM_128_IV_SIZE; es->iv.data = iv; diff --git a/source4/rpc_server/backupkey/dcesrv_backupkey.c b/source4/rpc_server/backupkey/dcesrv_backupkey.c index d192858e468..a826ae083f4 100644 --- a/source4/rpc_server/backupkey/dcesrv_backupkey.c +++ b/source4/rpc_server/backupkey/dcesrv_backupkey.c @@ -1263,8 +1263,7 @@ static WERROR generate_bkrp_server_wrap_key(TALLOC_CTX *ctx, struct ldb_context char *secret_name; TALLOC_CTX *frame = talloc_stackframe(); - /* We need to use a CSPRNG which reseeds for generating session keys. */ - generate_secret_buffer(wrap_key.key, sizeof(wrap_key.key)); + generate_random_buffer(wrap_key.key, sizeof(wrap_key.key)); ndr_err = ndr_push_struct_blob(&blob_wrap_key, ctx, &wrap_key, (ndr_push_flags_fn_t)ndr_push_bkrp_dc_serverwrap_key); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { diff --git a/source4/rpc_server/netlogon/dcerpc_netlogon.c b/source4/rpc_server/netlogon/dcerpc_netlogon.c index f4e24b7fd7f..ac745e32b02 100644 --- a/source4/rpc_server/netlogon/dcerpc_netlogon.c +++ b/source4/rpc_server/netlogon/dcerpc_netlogon.c @@ -90,8 +90,7 @@ static NTSTATUS dcesrv_netr_ServerReqChallenge(struct dcesrv_call_state *dce_cal pipe_state->client_challenge = *r->in.credentials; - /* We need to use a CSPRNG which reseeds for generating session keys. */ - generate_secret_buffer(pipe_state->server_challenge.data, + generate_random_buffer(pipe_state->server_challenge.data, sizeof(pipe_state->server_challenge.data)); *r->out.return_credentials = pipe_state->server_challenge; diff --git a/source4/rpc_server/samr/samr_password.c b/source4/rpc_server/samr/samr_password.c index 6bf907181c8..b04e37f06f3 100644 --- a/source4/rpc_server/samr/samr_password.c +++ b/source4/rpc_server/samr/samr_password.c @@ -733,10 +733,9 @@ NTSTATUS samr_set_password_buffers(struct dcesrv_call_state *dce_call, nt_errstr(nt_status))); /* - * Windows just uses a random key. We need to use a CSPRNG - * which reseeds for generating session keys. + * Windows just uses a random key */ - generate_secret_buffer(random_session_key, + generate_random_buffer(random_session_key, sizeof(random_session_key)); session_key = data_blob_const(random_session_key, sizeof(random_session_key)); -- Samba Shared Repository