xref: /isa-l_crypto/SECURITY.md (revision 4815f9aeced393de2b516e25b3ff6bf25cbf9011)
12c5887edSGreg Tucker# ISA-L Security Policy
22c5887edSGreg Tucker
32c5887edSGreg Tucker## Report a Vulnerability
42c5887edSGreg Tucker
52c5887edSGreg TuckerPlease report security issues or vulnerabilities to the [Intel Security Center].
62c5887edSGreg Tucker
72c5887edSGreg TuckerFor more information on how Intel works to resolve security issues, see
82c5887edSGreg Tucker[Vulnerability Handling Guidelines].
92c5887edSGreg Tucker
102c5887edSGreg Tucker[Intel Security Center]:https://www.intel.com/security
112c5887edSGreg Tucker[Vulnerability Handling Guidelines]:https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html
12*4815f9aeSPablo de Lara
13*4815f9aeSPablo de Lara## Security Considerations & Options for Increased Security
14*4815f9aeSPablo de Lara
15*4815f9aeSPablo de Lara### Security Considerations
16*4815f9aeSPablo de LaraThe security of a system that uses cryptography depends on the strength of
17*4815f9aeSPablo de Larathe cryptographic algorithms as well as the strength of the keys.
18*4815f9aeSPablo de LaraCryptographic key strength is dependent on several factors, with some of the
19*4815f9aeSPablo de Laramost important factors including the length of the key, the entropy of the key
20*4815f9aeSPablo de Larabits, and maintaining the secrecy of the key.
21*4815f9aeSPablo de Lara
22*4815f9aeSPablo de LaraThe selection of an appropriate algorithm and mode of operation critically
23*4815f9aeSPablo de Laraaffects the security of a system. Appropriate selection criteria is beyond the
24*4815f9aeSPablo de Larascope of this document and should be determined based upon usage, appropriate
25*4815f9aeSPablo de Larastandards and consultation with a cryptographic expert. This library includes some
26*4815f9aeSPablo de Laraalgorithms, which are considered cryptographically weak and are included only
27*4815f9aeSPablo de Larafor legacy and interoperability reasons. See the "Recommendations" section for
28*4815f9aeSPablo de Laramore details.
29*4815f9aeSPablo de Lara
30*4815f9aeSPablo de LaraSecure creation of key material is not a part of this library. This library
31*4815f9aeSPablo de Laraassumes that cryptographic keys have been created using approved methods with
32*4815f9aeSPablo de Laraan appropriate and secure entropy source. Users of this library are
33*4815f9aeSPablo de Larareferred to NIST SP800-133 Revision 1, Recommendation for Cryptographic Key
34*4815f9aeSPablo de LaraGeneration, found at https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-133r1.pdf
35*4815f9aeSPablo de Lara
36*4815f9aeSPablo de LaraEven with the use of strong cryptographic algorithms and robustly generated
37*4815f9aeSPablo de Larakeys, software implementations of cryptographic algorithms may be attacked
38*4815f9aeSPablo de Laraat the implementation through cache-timing attacks, buffer-over-reads, and
39*4815f9aeSPablo de Laraother software vulnerabilities. Counter-measures against these types of
40*4815f9aeSPablo de Laraattacks are possible but require additional processing cycles. Whether a
41*4815f9aeSPablo de Laraparticular system should provide such counter-measures depends on the threats
42*4815f9aeSPablo de Larato that system, and cannot be determined by a general library such as this
43*4815f9aeSPablo de Laraone. In order to provide the most flexible implementation, this library allows
44*4815f9aeSPablo de Laracertain counter-measures to be enabled or disabled at compile time. These
45*4815f9aeSPablo de Laraoptions are listed below as the "Options for Increased Security" and are
46*4815f9aeSPablo de Laraenabled through various build flags.
47*4815f9aeSPablo de Lara
48*4815f9aeSPablo de Lara### Options for Increased Security
49*4815f9aeSPablo de Lara
50*4815f9aeSPablo de LaraThere are two build options that are used to increase safety in
51*4815f9aeSPablo de Larathe code and help protect external functions from incorrect input data.
52*4815f9aeSPablo de LaraThe SAFE_DATA and SAFE_PARAM options are enabled by default.
53*4815f9aeSPablo de LaraDue to the potential performance impact associated to the extra code, these
54*4815f9aeSPablo de Laracan be disabled by setting the parameter equal to "n" (e.g. make -f Makefile.unx SAFE_PARAM=n).
55*4815f9aeSPablo de Lara
56*4815f9aeSPablo de LaraNo specific code has been added, and no specific validation or security
57*4815f9aeSPablo de Laratests have been performed to help protect against or check for side-channel
58*4815f9aeSPablo de Laraattacks.
59*4815f9aeSPablo de Lara
60*4815f9aeSPablo de Lara### SAFE_DATA
61*4815f9aeSPablo de Lara
62*4815f9aeSPablo de LaraStack and registers containing sensitive information, such as keys, are
63*4815f9aeSPablo de Laracleared upon completion of a function call.
64*4815f9aeSPablo de Lara
65*4815f9aeSPablo de Lara### SAFE_PARAM
66*4815f9aeSPablo de Lara
67*4815f9aeSPablo de LaraInput parameters are checked, looking generally for NULL pointers or an incorrect input length.
68*4815f9aeSPablo de Lara
69*4815f9aeSPablo de Lara### Galois Counter Mode (GCM) TAG Size
70*4815f9aeSPablo de Lara
71*4815f9aeSPablo de LaraThe library GCM implementation provides flexibility as to tag size selection.
72*4815f9aeSPablo de LaraAs explained in [NIST Special Publication 800-38D](https://csrc.nist.gov/publications/detail/sp/800-38d/final) section 5.2.1.2 and Appendix C, using tag sizes shorter than 96 bits can be insecure.
73*4815f9aeSPablo de LaraPlease refer to the aforementioned sections to understand the details, trade offs and mitigations of using shorter tag sizes.
74