После двух месяцев разработки Линус Торвальдс представил (https://lkml.org/lkml/2018/6/3/142) релиз ядра Linux 4.17 (https://kernel.org). Несмотря на то, что в процессе цикла разработки ядра 4.17 был преодолён (https://www.opennet.ru/opennews/art.shtml?num=48447) рубеж в 6 млн объектов в Git, Линус решил сохранить интригу и не воспользовался данным поводом для увеличения номера значительной версии ядра, как это делалось для веток 3.x и 4.x. По ощущениям Линуса переходить на нумерацию 5.x ещё рано и скорее всего это произойдёт ко времени выпуска 4.20.
Среди наиболее заметных изменений в ядре 4.15: удаление 8 устаревших процессорных архитектур, добавление в XFC опции lazytime, полная реализация протокола TLS на стороне ядра, защита от уязвимостей
Spectre 3a/4, оптимизация планировщика задач для мобильных и встраиваемых систем, поддержка архитектуры Andes Technologies NDS32, поддержка GPU AMD Vega12 и Intel Cannonlake, реализация алгоритмов блочного шифрования SM4 и Speck, стабилизация протокола SMB 3.1.1, поддержка SELinux в SCTP.
В новую версию принято более 12 тысяч исправлений от 1400 разработчиков, размер патча - 70 Мб (изменения затронули 14170 файлов, добавлено 648108 строк кода, удалено 827247 строк). Около 38% всех представленных в 4.17 изменений связаны с драйверами устройств, примерно 22% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 11% связано с сетевым стеком, 4% - файловыми системами и 4% c внутренними подсистемами ядра.
Основные (http://kernelnewbies.org/Linux_4.17) новшества (https://lwn.net/Articles/751482/):
-
Виртуализация и безопасность
- Доведена до полноценного состояния реализация (https://github.com/torvalds/linux/blob/master/Documentation/... протокола TLS на уровне ядра (KTLS), использование которой позволяет (https://netdevconf.org/1.2/papers/ktls.pdf) добиться существенного повышения производительности приложений, использующих HTTPS. Реализация выполнена в виде модуля ядра, предоставляющего новый тип сокетов AF_KTLS, которые можно использовать для передачи данных по протоколам TLS 1.2 для TCP и DTLS 1.2 для UDP с применением шифра AES GCM. Добавленный ранее вариант модуля KTLS ограничивался поддержкой передающей стороны, а теперь в ядро включены и компоненты для согласования соединения на стороне получателя, т.е. в ядре теперь имеются все компоненты для полноценной поддержки TLS;
- Добавлен (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... код для защиты от уязвимостей Spectre 3a и Spectre 4 (https://www.opennet.ru/opennews/art.shtml?num=48639) в механизме спекулятивного выполнения инструкций (нераскрытыми остаются ещё 6 проблем из группы Spectre-NG (https://www.opennet.ru/opennews/art.shtml?num=48543)). Кроме включения исправлений на стороне ядра для обеспечения защиты также обязательно обновление микрокода - защита строится на применении MSR-бита SSBD (Speculative Store Bypass Disable), поддержка которого представлена в новом микрокоде. По предварительной оценке включение защиты приводит к снижению производительности на 2-8%. Так как применение защиты от Spectre 4 не всегда оправдано, для её отключения предусмотрена опция speculative_store_bypass_disable, в SECCOMP добавлен специальный флаг и код для автоматического отключения SSB для изолированных процессов, а для приложений предложен новый интерфейс prctl, при помощи которого программы могут определять наличие защиты и выборочно отключать её для отдельных процессов;- В ядро встроена поддержка блочного шифра Speck (https://github.com/iadgov/simon-speck), разработанного (https://ru.wikipedia.org/wiki/Speck) Агентством национальной безопасности США. Шифр примечателен очень высокой производительностью программной реализации, которая обгоняет AES на системах без наличия средств аппаратного ускорения AES;
- Добавлена поддержка шифрования AES в режиме CFM (Cipher Feedback Mode), наличие которого определено в спецификации TPM2 (Trusted Platform Module);- Реализована (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... поддержка алгоритма блочного шифрования SM4 (https://ru.wikipedia.org/wiki/SM4), (GB/T 32907-2016), стандартизированного для учреждений Китая и применяемый в китайском стандарте Wireless LAN WAPI;
- В протоколе SCTP обеспечена (https://github.com/torvalds/linux/blob/master/Documentation/... полноценная поддержка SELinux;
- Добавлена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... возможность управления модулями AppArmor через сокет;
-
Дисковая подсистема, ввод/вывод и файловые системы
- Для файловой системы XFS реализована поддержка опции монтирования lazytime, которая даёт возможность отследить время обращения к файлам, но не приводит к возникновению большого числа паразитных операций записи в ФС. Основное отличие от "atime" состоит в том, что время доступа сохраняется в inode, хранящихся в оперативной памяти, и сбрасываемых на диск только при возникновении явных условий или истечения достаточно длительного таймаута (раз в 24 часа). Таким образом для работающих программ возвращается всегда точный atime, но на диске сведения сохраняются с большой задержкой;
- В файловой системе ext4 повышена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... надёжность работы в условиях обработки некорректных образов ФС, специально модифицированных для вредоносных целей. При этом мэйнтейнер Ext4 по-прежнему считает плохой
идеей предоставление доступа к монтированию произвольных ext4-образов из изолированных контейнеров;
- В файловой системе Btrfs удалены операции ioctl() с реализацией функциональности управляемых транзакций, которая оказалась невостребованной и не примется на практике;
- С реализации SMB 3.1.1 снят признак экспериментальной разработки. В CIFS добавлена поддержка представленной (https://blogs.msdn.microsoft.com/openspecification/2015/08/1... в спецификации SMB 3.1.1 возможности обеспечения целостности на стадии до прохождения аутентификации. Метод основан на использовании криптографических хэшей на этапе согласования сеанса связи и позволяет защититься от MITM-атак с подменой сообщений для отката не менее защищённые схемы аутентификации;
- В файловой системе OverlayFS появилась опция монтирования "xino", обеспечивающая сохранения идентификатора ФС в составе номера inode, что позволяет зафиксировать имена inode и гарантировать, что они не будут меняться во времени. Предложенная опция предотвращает появлением в разное время разных номеров inode для одного файла, что может приводить к проблемам в приложениях, манипулирующих данными на уровне inode;
-
Память и системные сервисы
- Код оценки нагрузки в планировщике задач, прогнозирующий сколько ресурсов CPU может израсходовать каждый работающий процесс для оптимизации выбора режимов работы CPU и распределения процессов по ядрам CPU, доработан (https://lwn.net/Articles/741171/) для более оптимальной работы в условиях нагрузок, свойственных для мобильных и встраиваемых систем;
- В системный вызов bpf() добавлена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... новая команда BPF_RAW_TRACEPOINT, позволяющая привязать BPF-обработчик к точке трассировки (tracepoint - вариант динамических printf(), выставляемых разработчиками программ для анализа поведения системы, к которым затем можно обращаться из LTTng, perf, SystemTap, ftrace). Работа осуществляется без предварительной обработки аргументов tracepoint на стадии до вызова BPF-программы, что позволяет минимизировать накладные...
URL: https://lkml.org/lkml/2018/6/3/142
Новость: https://www.opennet.ru/opennews/art.shtml?num=48712