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