|
1 | 1 | ## Limitations |
2 | 2 |
|
3 | | -* When forking within an application it is not valid for a cryptographic |
| 3 | +* When **forking** within an application it is not valid for a cryptographic |
4 | 4 | operation to be started in the parent process, and completed in the child |
5 | 5 | process. |
6 | | -* Only one level of forking is permitted, if a child process forks again then |
| 6 | +* Only **one level of forking is permitted**, if a child process forks again then |
7 | 7 | the Intel® QAT OpenSSL\* Engine will not be available in that forked |
8 | 8 | process. |
9 | | -* Event driven mode of polling operation is not supported in the FreeBSD |
| 9 | +* **Event driven mode** of polling operation is not supported in the FreeBSD |
10 | 10 | Operating system or in the qatlib RPM. |
11 | | -* qat_contig_mem memory driver is not supported when running under FreeBSD |
| 11 | +* **qat_contig_mem** memory driver is not supported when running under FreeBSD |
12 | 12 | Operating system or in the qatlib RPM. The default is to use the USDM memory |
13 | 13 | driver supplied as part of the Intel® QAT Driver. |
| 14 | +* **SM2, SM3 & SM4** application testing is done using BabaSSL only since OpenSSL |
| 15 | + doesn't support SMx cipher suites. |
| 16 | +* QAT Engine doesn't support **ENCRYPT_THEN_MAC**(default) mode of operation meaning |
| 17 | + when Encrypt then MAC is negotiated for symmetric ciphers say AES-CBC, the requests will not |
| 18 | + get offloaded via QAT_HW, instead uses OpenSSL SW. Disable ENCRYPT_THEN_MAC with the flag |
| 19 | + `SSL_OP_NO_ENCRYPT_THEN_MAC` programmatically using SSL_CTX_set_options() to offload |
| 20 | + symmetric chained ciphers via QAT_HW. Please note disabling ENCRYPT_THEN_MAC has security |
| 21 | + implications. |
14 | 22 | * Support for cipher AES-128-CBC-HMAC-SHA1 and its related ciphers was broken |
15 | 23 | in release OpenSSL\* 1.1.1d. This was later fixed in OpenSSL\* 1.1.1e release. |
16 | | -* X25519/X448 support is available only from version 4.9 of the Intel® QAT |
| 24 | +* OpenSSL 1.1.1n introduced misleading error message(undefined symbol: **EVP_PKEY_get_base_id**) |
| 25 | + during engine load which can be ignored as it is not a real failure. This is later fixed in |
| 26 | + OpenSSL\* 1.1.1o release. |
| 27 | +* X25519/X448 support is available only from **version 4.9** of the Intel® QAT |
17 | 28 | driver for Linux. Use `--disable-qat_hw_ecx` in the Intel® QAT OpenSSL\* Engine |
18 | 29 | configure when building against earlier versions of the Linux driver. |
19 | | -* Support for qaeMemFreeNonZeroNUMA() USDM API is available only from version 4.10 |
| 30 | +* Support for qaeMemFreeNonZeroNUMA() USDM API is available only from **version 4.10** |
20 | 31 | of the Intel® QAT driver for Linux. Use `--with-cc-opt="-DQAT_HW_DISABLE_NONZERO_MEMFREE"` |
21 | 32 | in the Intel® QAT OpenSSL\* Engine configuration when building against earlier |
22 | 33 | versions of the Linux driver. |
23 | | -* Support for QAT HW ECX, QAT SW ECX, QAT SW SM2 ECDSA, QAT HW PRF and QAT HW HKDF is disabled |
| 34 | +* From **version 4.19** of Intel® QAT driver for Linux, legacy or insecure algorithms such as DES, |
| 35 | + 3DES, MD5, SHA1, RC4 are disabled by default so there will be failures observed in the relevant |
| 36 | + ciphers. Driver needs to be built with flag "--enable-legacy-algorithms" to enable those algorithms |
| 37 | + support. |
| 38 | +* QAT Engine built for OpenSSL3.0 is only compatible with dependant libraries also linked with OpenSSL3.0 |
| 39 | + libraries due to [OpenSSL#17112][1]. Same applies for OpenSSL 1.1.1. |
| 40 | + |
| 41 | +## Known Issues |
| 42 | + |
| 43 | +### Functional |
| 44 | +* Known issue with OpenSSL 3.0 s_server using qatengine with cipher **"DHE-RSA-CHACHA20-POLY1305"** which |
| 45 | + works fine with Nginx. The issue is due to failure at EVP_PKEY_copy_parameter() in OpenSSL. |
| 46 | +* AES-CBC-HMAC-SHA chained ciphers does not support **pipeline feature** when built with |
| 47 | + OpenSSL 3.0 as the corresponding support is not available in OpenSSL 3.0 - [OpenSSL#18298][2] |
| 48 | +* Support for **QAT HW ECX, QAT SW ECX, QAT SW SM2 ECDSA, QAT HW PRF and QAT HW HKDF** is disabled |
24 | 49 | when built against OpenSSL 3.0 engine interface since OpenSSL doesn't have default implementation |
25 | 50 | methods accessible from OpenSSL3.0 engine interface, instead it uses non-accelerated |
26 | | - implementation from OpenSSL default provider. |
27 | | -* There is known performance scaling issue (performance drop with threads >32) |
28 | | - with ECDSA Ciphers in the QAT Software acceleration using multithread mode |
29 | | - in the Haproxy application. This issue is not observed when using RSA ciphers |
30 | | - or in multi-process mode. |
31 | | -* There is an issue in sshd daemon application when using the QAT for default openssl. |
| 51 | + implementation from OpenSSL default provider - [OpenSSL#19047][3] |
| 52 | +* There is an issue in **sshd** daemon application when using the QAT for default openssl. |
32 | 53 | sshd looks to be closing the file descriptors associated with QAT engine and driver after |
33 | 54 | initialising openssl. Similar issue was present which prevents the ability to ssh out of |
34 | 55 | the system using the QAT engine in versions of the ssh application before OpenSSH 8.7. |
35 | | - The issue has been fixed with this commit [c9f7bba][1] . This update can be applied to |
| 56 | + The issue has been fixed with this commit [c9f7bba][4] . This update can be applied to |
36 | 57 | sshd to work-around the issue. |
37 | | -* SM2 ECDH and ECDSA application testing is done using BabaSSL only since OpenSSL |
38 | | - doesn't support SMx cipher suites. |
39 | | -* SM3 is disabled by default due to performance drop observed in mulithread scenario |
40 | | - for all ciphers suites due to the locks at engine_table_select in OpenSSL. |
41 | | -* OpenSSL 1.1.1n introduced misleading error message(undefined symbol: EVP_PKEY_get_base_id) |
42 | | - during engine load which can be ignored as it is not a real failure. This is later fixed in |
43 | | - OpenSSL\* 1.1.1o release. |
44 | | -* AES-CBC-HMAC-SHA chained ciphers does not support pipeline feature when built with |
45 | | - OpenSSL 3.0 as the corresponding support is not available in OpenSSL 3.0. |
46 | | -* QAT Engine doesn't support ENCRYPT_THEN_MAC(default) mode of operation meaning |
47 | | - when Encrypt then MAC is negotiated for symmetric ciphers say AES-CBC, the requests will not |
48 | | - get offloaded via QAT_HW, instead uses OpenSSL SW. Disable ENCRYPT_THEN_MAC with the flag |
49 | | - `SSL_OP_NO_ENCRYPT_THEN_MAC` programmatically using SSL_CTX_set_options() to offload |
50 | | - symmetric chained ciphers via QAT_HW. Please note disabling ENCRYPT_THEN_MAC has security |
51 | | - implications. |
52 | | -* Known issue with OpenSSL 3.0 s_server using qatengine with cipher "DHE-RSA-CHACHA20-POLY1305" which |
53 | | - works fine with Nginx. The issue is due to failure at EVP_PKEY_copy_parameter() in OpenSSL which is |
54 | | - yet to be root caused. |
55 | | -* From version 4.19 of Intel® QAT driver for Linux, legacy or insecure algorithms such as DES, |
56 | | - 3DES, MD5, SHA1, RC4 are disabled by default so there will be failures observed in the relevant |
57 | | - ciphers. Driver needs to be built with flag "--enable-legacy-algorithms" to enable those algorithms |
58 | | - support. |
| 58 | +* Failures with QAT_HW SHA3 for 0 bytes file, Big file with multiple SHA3 update and |
| 59 | + HMAC with SHA3. |
| 60 | +* Known issue with QAT_SW SM2 in ntls mode since QAT_SW SM2 doesn't have plain sign and |
| 61 | + verify operation support in engine. Disable QAT_SW SM2 to workaround the issue with ntls. |
| 62 | + No issues with TLS mode since it uses digestsign and digestverify which is supported. |
| 63 | + |
| 64 | +### Performance |
| 65 | +* There is known performance scaling issue (performance drop with threads >32) |
| 66 | + with ECDSA Ciphers in the QAT Software acceleration using multithread mode |
| 67 | + in the Haproxy application. This issue is not observed when using RSA ciphers |
| 68 | + or in multi-process mode. |
| 69 | +* SM3 is disabled by default due to performance drop observed in **mulithread scenario** |
| 70 | + for all ciphers suites due to the additional locks at engine_table_select introduced by |
| 71 | + engine digest registration in OpenSSL - [OpenSSL#18509][5] |
59 | 72 |
|
60 | | -[1]:https://github.com/openssh/openssh-portable/commit/c9f7bba2e6f70b7ac1f5ea190d890cb5162ce127 |
| 73 | +[1]:https://github.com/openssl/openssl/pull/17112 |
| 74 | +[2]:https://github.com/openssl/openssl/issues/18298 |
| 75 | +[3]:https://github.com/openssl/openssl/issues/19047 |
| 76 | +[4]:https://github.com/openssh/openssh-portable/commit/c9f7bba2e6f70b7ac1f5ea190d890cb5162ce127 |
| 77 | +[5]:https://github.com/openssl/openssl/issues/18509 |
0 commit comments