То есть наличие TCP/IP стека и ещё прицепа сетевых протоколов в ядре вас не беспокоит? Или в их реализации не было найдено уязвимостей?TLS, является одним из наиболее часто используемых протоколов для обеспечения безопасности соединений, если не самым часто используемым. И перенос его в ядерное пространство позволили снизить латентность и повысить производительность. Более того, в ядерном пространстве реализована только часть протокола, но вы конечно же это уже знаете, вы ведь прочитали отчёт инженеров Facebook и Red Hat в оригинале.
А для тех кто не прочитал, вот цитата из него, кратко описывающая схему работы ядерной реализации TLS.
"Facebook, in collaboration with RedHat, have implemented a Linux kernel TLS socket. To avoid putting unnecessary complexity in the kernel, the TLS handshake is kept in user space. A full TLS connection using the socket is done using the following scheme:
• Call connect() or accept() on a standard TCP file descriptor.
• A user space TLS library is used to complete a handshake.
We have tested with both GnuTLS and OpenSSL.
• Create a new KTLS socket file descriptor.
• Extract the TLS Initialization Vectors (IVs), session keys, and sequence IDs from the TLS library. Use setsockopt on the KTLS fd to pass them to the kernel.
• Use standard read(), write(), sendfile() and splice() system calls on the KTLS fd.
Upon receipt of a non-data TLS message (a control message), the KTLS socket returns an error, and the message is instead left on the original TCP socket. The KTLS socket is automatically unattached. Transfer of control back to the original encrypted FD is done by calling getsockopt to receive the current sequence numbers, and inserting them in to the TLS library."