2015-02-17 01:51:34 +03:00
A list of the crypto operations that we require, and what uses them.
This list is to allow research into using external crypto libraries.
Those possibly supported in the git version of GnuTLS are indicated as '# GNUTLS'
2015-02-24 04:46:31 +03:00
Those possibly supported in the git version of nettle are indicated as '# NETTLE'
2015-02-17 01:51:34 +03:00
2019-08-16 04:52:36 +03:00
Samba in general gnutls >= 3.4.7 is required
2018-01-03 13:23:51 +03:00
Samba FS with MS Catalog support will require gnutls >= 3.5.6
GnuTLS Milestone for Samba support:
- https://gitlab.com/gnutls/gnutls/milestones/14
2015-02-17 01:51:34 +03:00
ARCFOUR (RC4)
- the old SamOEMHash
- Password encryption on SAMR for password set/get
- NETLOGON SamLogon session keys
- Schannel
2018-02-09 06:51:22 +03:00
- DRSUAPI replication replicated secrets
2015-02-17 01:51:34 +03:00
2018-01-03 13:23:51 +03:00
# GNUTLS >= 3.0.0
2015-02-24 04:46:31 +03:00
# NETTLE
2015-02-17 01:51:34 +03:00
DES
- NTLM challenge-response
- LSA QuerySecret et al
- NETLOGON SamLogon session keys
- ServerGetTrustInfo returned passwords
- RID encryption of passwords
2018-01-03 13:23:51 +03:00
# No support in gnutls, it cannot be a certified use of crypto
# NETTLE (any version)
2015-02-24 04:46:31 +03:00
2015-02-17 01:51:34 +03:00
3DES
2018-01-03 13:23:51 +03:00
- NETLOGON Credentials (can't find any use in Samba)
2015-02-17 01:51:34 +03:00
2018-01-03 13:23:51 +03:00
3DES-CBC
- backupkey (uses heimdal lib or gnutls with mit krb5)
# gnutls >= 3.4.7 (3des cbc with 192 bit key is supported); can no longer be a certified use of crypto
2015-02-24 04:46:31 +03:00
# NETTLE
2015-02-17 01:51:34 +03:00
CRC32
- DRSUAPI replication replicated secrets
2018-01-03 13:23:51 +03:00
This is no crypto
AES 128 in 8-bit CFB mode
2015-02-17 01:51:34 +03:00
- SCHANNEL
- NETLOGON SamLogon session keys
2018-01-03 13:23:51 +03:00
# Missing in GNUTLS -> Bug opened
# NETTLE 3.4 contains CFB - possibly 128-bit mode (AES-NI available)
2015-02-24 04:46:31 +03:00
2015-02-17 01:51:34 +03:00
AES128 CCM
- SMB2 2.24 SMB encryption
2015-02-24 04:46:31 +03:00
2018-01-03 13:23:51 +03:00
# GNUTLS >= 3.4.0
2015-02-24 04:46:31 +03:00
# NETTLE (AES-NI available)
2015-02-17 01:51:34 +03:00
AES128 GCM
- SMB2 3.10 SMB encryption
2018-02-08 00:49:33 +03:00
- encrypted_secrets ldb module (encrypt secrets within sam.ldb)
2015-02-24 04:46:31 +03:00
2018-01-03 13:23:51 +03:00
# GNUTLS >= 3.0.0
2015-02-24 04:46:31 +03:00
# NETTLE (AES-NI available)
2015-02-17 01:51:34 +03:00
AES128 CMAC
- SMB2 0x224 SMB Signing
2018-01-03 13:23:51 +03:00
# Missing in GNUTLS - > Bug opened
# Missing in NETTLE -> Bug opened
2015-02-17 01:51:34 +03:00
MD4
- NTLM password hash
2018-01-03 13:23:51 +03:00
# Cannot be certified; considered non-crypto
2015-02-24 04:46:31 +03:00
# NETTLE
2015-02-17 01:51:34 +03:00
MD5
2018-01-03 13:23:51 +03:00
- NTLM2 (can be considered non-crypto use of MD5)
- SCHANNEL (it's ok to fail in FIPS140 mode, as there are alternatives)
- NTLMSSP (it's ok to fail in FIPS140 mode, replaced by kerberos)
- NETLOGON computer credentials (it's ok to fail in FIPS140 mode, as there are alternatives)
- DRSUAPI blob encryption (can be considered non-crypto use as it is over DC-RPC which is encrypted)
2015-02-17 01:51:34 +03:00
- SAMR/wkssvc password change/set encryption
- vfs_fruit
- vfs_streams_xattr
- passdb old password history format
- dsdb password_hash module
- SMB1 SMB signing
- NTP ntp_signd
2018-01-03 13:23:51 +03:00
maybe use gnutls_fips140_mode_enabled() and enable only SMB2/3 when in fips mode?
# GNUTLS >= 3.0.0 (Will fail in FIPS mode, for non-crypto -> https://gitlab.com/gnutls/gnutls/merge_requests/572 , open bug for RC4, MD5 being available for non-crypto use )
2015-02-24 04:46:31 +03:00
# NETTLE
2015-02-17 01:51:34 +03:00
HMAC-MD5
- NTLMv2
2018-01-03 13:23:51 +03:00
# GNUTLS >= 3.0.0 (non-crypto)
2015-02-24 04:46:31 +03:00
# NETTLE
2015-02-17 01:51:34 +03:00
2018-01-03 13:23:51 +03:00
HMAC-SHA256
2015-02-17 01:51:34 +03:00
- SMB2 < 2.24 SMB signing
- SMB2 Key derivation
2018-01-03 13:23:51 +03:00
# GNUTLS (>= 3.0.0)
2015-02-24 04:46:31 +03:00
# NETTLE
2015-02-17 01:51:34 +03:00
2018-01-03 13:23:51 +03:00
HMAC-SHA1
2015-02-17 01:51:34 +03:00
- BackupKey ServerWrap
2018-01-03 13:23:51 +03:00
# GNUTLS (>= 3.0.0)
2015-02-24 04:46:31 +03:00
# NETTLE
2015-02-17 01:51:34 +03:00
SHA256
- Security Descriptor hash for vfs_acl_xattr
- oLschema2ldif
2018-01-03 13:23:51 +03:00
# GNUTLS (>= 3.0.0)
2015-02-24 04:46:31 +03:00
# NETTLE
2015-02-17 01:51:34 +03:00
SHA512
- SMB2 Pre-auth integrity verification
- BackupKey ClientWrap
2018-01-03 13:23:51 +03:00
# GNUTLS (>= 3.0.0)
2015-02-24 04:46:31 +03:00
# NETTLE
2015-02-17 01:51:34 +03:00
RSA
- BackupKey ClientWrap
2018-01-03 13:23:51 +03:00
# GNUTLS (>= 3.0.0)
2015-02-24 04:46:31 +03:00
# NETTLE
2018-01-03 13:23:51 +03:00
GNUTLS
Use gnutls_rnd() in generate_random_buffer() to increase speed