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