lib/crypto: Update REQUIREMENTS for recent Samba changes
[samba.git] / lib / crypto / REQUIREMENTS
1 A list of the crypto operations that we require, and what uses them.
2
3 This list is to allow research into using external crypto libraries.
4 Those possibly supported in the git version of GnuTLS are indicated as '# GNUTLS'
5 Those possibly supported in the git version of nettle are indicated as '# NETTLE'
6
7 For Samba AD with Heimdal gnutls >= 3.0.0 is required
8 For Samba AD with MIT kerberos gnutls >= 3.4.7 is required
9 Samba FS with MS Catalog support will require gnutls >= 3.5.6
10
11 GnuTLS Milestone for Samba support:
12  - https://gitlab.com/gnutls/gnutls/milestones/14
13
14 ARCFOUR (RC4)
15  - the old SamOEMHash
16  - Password encryption on SAMR for password set/get
17  - NETLOGON SamLogon session keys
18  - Schannel
19
20  # GNUTLS >= 3.0.0
21  # NETTLE
22
23 DES
24  - NTLM challenge-response
25  - LSA QuerySecret et al
26  - NETLOGON SamLogon session keys
27  - ServerGetTrustInfo returned passwords
28  - RID encryption of passwords
29
30  # No support in gnutls, it cannot be a certified use of crypto
31  # NETTLE (any version)
32
33 3DES
34  - NETLOGON Credentials (can't find any use in Samba)
35
36 3DES-CBC
37  - backupkey (uses heimdal lib or gnutls with mit krb5)
38
39  # gnutls >= 3.4.7 (3des cbc with 192 bit key is supported); can no longer be a certified use of crypto
40  # NETTLE
41
42 CRC32
43  - DRSUAPI replication replicated secrets
44
45 This is no crypto
46
47 AES 128 in 8-bit CFB mode
48  - SCHANNEL
49  - NETLOGON SamLogon session keys
50
51  # Missing in GNUTLS -> Bug opened
52  # NETTLE 3.4 contains CFB - possibly 128-bit mode (AES-NI available)
53
54 AES128 CCM
55  - SMB2 2.24 SMB encryption
56
57  # GNUTLS >= 3.4.0
58  # NETTLE (AES-NI available)
59
60 AES128 GCM
61  - SMB2 3.10 SMB encryption
62  - encrypted_secrets ldb module (encrypt secrets within sam.ldb)
63
64  # GNUTLS >= 3.0.0
65  # NETTLE (AES-NI available)
66
67 AES128 CMAC
68  - SMB2 0x224 SMB Signing
69
70  # Missing in GNUTLS - > Bug opened
71  # Missing in NETTLE -> Bug opened
72
73 MD4
74  - NTLM password hash
75
76  # Cannot be certified; considered non-crypto
77  # NETTLE
78
79 MD5
80  - NTLM2 (can be considered non-crypto use of MD5)
81  - SCHANNEL (it's ok to fail in FIPS140 mode, as there are alternatives)
82  - NTLMSSP (it's ok to fail in FIPS140 mode, replaced by kerberos)
83  - NETLOGON computer credentials (it's ok to fail in FIPS140 mode, as there are alternatives)
84  - DRSUAPI blob encryption (can be considered non-crypto use as it is over DC-RPC which is encrypted)
85  - SAMR/wkssvc password change/set encryption
86  - vfs_fruit
87  - vfs_streams_xattr
88  - passdb old password history format
89  - dsdb password_hash module
90  - SMB1 SMB signing
91  - NTP ntp_signd
92
93 maybe use gnutls_fips140_mode_enabled() and enable only SMB2/3 when in fips mode?
94
95  # 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 )
96  # NETTLE
97
98 HMAC-MD5
99  - NTLMv2
100
101  # GNUTLS >= 3.0.0 (non-crypto)
102  # NETTLE
103
104 HMAC-SHA256
105  - SMB2 < 2.24 SMB signing
106  - SMB2 Key derivation
107
108  # GNUTLS (>= 3.0.0)
109  # NETTLE
110
111 HMAC-SHA1
112  - BackupKey ServerWrap
113
114  # GNUTLS (>= 3.0.0)
115  # NETTLE
116
117 SHA256
118  - Security Descriptor hash for vfs_acl_xattr
119  - oLschema2ldif
120
121  # GNUTLS (>= 3.0.0)
122  # NETTLE
123
124 SHA512
125  - SMB2 Pre-auth integrity verification
126  - BackupKey ClientWrap
127
128  # GNUTLS (>= 3.0.0)
129  # NETTLE
130
131 RSA
132  - BackupKey ClientWrap
133
134  # GNUTLS (>= 3.0.0)
135  # NETTLE
136
137
138 GNUTLS
139 Use gnutls_rnd() in generate_random_buffer() to increase speed