c't 19/2017
S. 34
Kernel-Log
Linux 4.13
Aufmacherbild

Kernel-Log

Linux 4.13: TLS-Support im Kernel & Grafiktreiber für neue AMD- und Intel-Chips

Der neue Kernel kann die Schwerarbeit bei der HTTPS-Verschlüsselung übernehmen. Support für Thunderbolt Security-Level schützt das System vor Spionage- oder Sabotage-Hardware. Statt einer „inakkuraten“ Taktfrequenzangabe findet sich in /proc/cpuinfo jetzt nur noch der Basistakt des Prozessors.

Kurz nach Erscheinen dieser c’t dürfte Linus Torvalds den Linux-Kernel 4.13 freigeben. Eine der meistdiskutierten Neuerungen: Der Linux-Kernel kann sich jetzt selbst um das Verschlüsseln einer per TLS (Transport Layer Security) geschützten Datenübertragung kümmern. Das soll die Performance von HTTPS und anderen Techniken verbessern, die TLS verwenden, denn „Kernel TLS“ (KTLS) kann den Datendurchsatz steigern, die Systemlast reduzieren und Latenzen senken.

Das aus lediglich 1500 Codezeilen bestehende KTLS beherrscht nur eine symmetrische Verschlüsselung und TLS Record Framing. Unterstützung für die asymmetrische Verschlüsselung bleibt bewusst außen vor; das Gleiche gilt für einige andere Techniken, die zum komplexen und fehleranfälligen Aufbau von TLS-Verbindungen nötig sind. Die überlassen die Kernel-Entwickler bewusst Userspace-Bibliotheken wie OpenSSL, auf die Programme ohnehin schon zur TLS-Implementierung zurückgreifen. Durch einige noch in der Begutachtungsphase steckende Erweiterungen soll die Bibliothek das Verschlüsseln des Datenstroms in Zukunft an KTLS delegieren können. Das verspricht eine effizientere Handhabung der Daten, denn mit KTLS müssen verarbeitete Daten im Arbeitsspeicher seltener hin- und herkopiert werden. Auch Crypto-Beschleuniger lassen sich mit weniger Overhead in den Prozess einbinden. Der Funktionsaufruf sendfile() eignet sich durch KTLS auch für Dateien, die das System über eine TLS-Verbindung verschicken soll.

Basistakt in /proc/cpuinfo

Bei 32- und 64-Bit-x86-Systemen liefert /proc/cpuinfo in der Zeile „cpu MHz“ jetzt nur noch den Basistakt des verwendeten Prozessors. Bislang fand sich dort ein grober Mittelwert, den Linux aus den Zeiten errechnete, die der Prozessor kurz vor der Abfrage in niedrigen oder hohen Taktfrequenzen verbracht hatte. Damit ist jetzt Schluss, denn laut den Entwicklern sei der Wert „inakkurat“. An der Angabe interessierte Anwender finden ihn aber nach wie vor im Sysfs, wo er jetzt häufiger und etwas genauer berechnet wird. Trotzdem bleibt der Wert vage und sagt nichts darüber aus, mit welchen Taktfrequenzen der Prozessor tatsächlich lief; die Entwickler raten Anwendern daher zum Einsatz des Programms turbostat, das in den Kernel-Quellen steckt und präzisere Angaben liefert.

Die Linux-Entwickler haben ferner die Unterstützung für Suspend-to-Idle (S2I) verbessert. Dieser Schlafzustand zeichnet sich durch eine schnelle Aufwachzeit aus und wird seit Linux 4.10 rudimentär unterstützt (siehe c’t 5/2017, S. 38). In der Windows-Welt heißt er „Modern Standby“ und findet sich vor allem bei kleinen und leichten Notebooks.

Viele Dateien speichern

In Verzeichnissen auf Ext4-Dateisystemen lassen sich in Zukunft mehr als 10 Millionen Einträge speichern; theoretisch sollen bis zu 2 Milliarden Einträge möglich sein, wobei das zu Performance-Problemen führen würde, wie es im Begleittext zum „Largedir Feature“ heißt. Die Funktion muss man aber explizit mit den Ext-Werkzeugen anknipsen. Das gilt auch für eine weitere Neuerung, durch die Ext4 ein erweitertes Attribut (Xattr bzw. Extended Attribute (EAs)) in einem eigenen Inode speichern kann. Darauf baut eine weitere Änderung auf, durch die das Dateisystem die Attributinformationen zusammenlegen kann; solch ein Deduplizieren spart nicht nur Speicherplatz, sondern verbessert Cache-Effekte und damit letztlich auch die Performance. Für einen Geschwindigkeitszuwachs kann auch eine weitere Änderung sorgen: Ext4 verarbeitet die zum Trimmen von SSDs wichtigen Discard-Operationen jetzt parallel.

Zum Zugriff auf Dateifreigaben von Samba- oder Windows-Servern mit Hilfe von CIFS nutzt der Kernel nun standardmäßig die Version 3 von SMB (Server Message Block). Samba unterstützt das mächtigere und auch effizientere SMB3 seit Version 4.0, Microsoft seit Windows 8 und Windows Server 2012. Einige NAS beherrschen allerdings nur die erste SMB-Generation, die dieser Tage als unsicher gilt; um deren Freigaben einzubinden, muss man CIFS über die Mount-Option vers=1.0 zur Verwendung von SMB1 zwingen.

Speziell schreiben

Mithilfe des neuen Device-Mapper-Targets „dm-zoned“ lassen sich jetzt beliebige Dateisysteme auf Festplatten einsetzen, die mit Shingled Magnetic Recording (SMR) in den Spielarten „Host Aware“ oder „Host Managed“ arbeiten. Bei Ersteren kann, bei Letzteren muss sich das Betriebssystem um das korrekte Befüllen kümmern, da größere Bereiche von vorne nach hinten gefüllt werden müssen. Solche Platten gehen derzeit aber nur an ausgewählte Unternehmen, die sie etwa in Rechenzentren als Archiv-Platten einsetzen. Die im Einzelhandel verkauften SMR-Festplatten gehören in eine dritte Klasse: Sie sind „Drive Managed“, damit Betriebssysteme sie wie klassische Festplatten ansprechen können.

Das SCSI-Subsystem unterstützt nun selbstverschlüsselnde SSDs, die die Opal Storage Specification der Trusted Computing Group (TCG) implementieren. Damit werden jetzt auch per ATA angebundene OPAL-SSDs unterstützt, weil der Treiber für moderne ATA-Adapter nach AHCI-Standard auf dem SCSI-Code aufbaut. Die Basis-Infrastruktur zum Support solcher Self-Encrypting Drives (SED) war bereits in Linux 4.11 eingeflossen. Damit Linux-Distributionen die Technik unterstützen können, müssen diese allerdings die Userspace-Software anpassen, die das Passwort abfragt und die verschlüsselten Bereiche entriegelt.

Datenträger-Interaktion

Über eine „Lifetime Hints“ genannte Infrastruktur können Programme den Kernel nun wissen lassen, ob die zu speichernden Daten eher von kurz- oder langlebiger Natur sind. Das kann Lebensdauer oder Performance von SSDs steigern: Die Storage-Treiber können so Daten ähnlicher Natur bündeln, um ein späteres Umschichten durch die Garbage Collection der SSD zu vermeiden.

Der Linux-Kernel unterstützt jetzt Modern Standby und Thunderbolt-Sicherheitsfunktionen, die etwa das mit Ubuntu ausgelieferte Dell XPS 13 (9360) bietet.

Das neue „Nowait AIO“ senkt das Risiko, dass Programme länger auf einen Rücksprung vom Kernel warten, wenn sie asynchrone I/O-Operationen (Asynchronous I/O bzw. AIO) mithilfe von Direct I/O ausführen. Bei einer ordentlichen AIO-Implementierung sollte genau das eigentlich gar nicht passieren – es gibt aber Randbedingungen, wo der Kernel eben doch blockt. Ferner gab es auch Umbauten am Code, der Schreib- oder Lese-Fehler an höhere Schichten zurückmeldet; dadurch sollen Dateisysteme und Anwendungen mehr über die Art eines aufgetretenen Fehlers erfahren, um mehr Fehlersituationen galanter abfangen zu können.

Mehr Sicherheit

Wie jüngst üblich gab es wieder einige Detailänderungen, um die Sicherheit zu verbessern. Unter ihnen ist etwa ein Schutz für die in string.h definierten Funktionen zur Handhabung von Zeichenketten innerhalb von Linux, der manche Pufferüberläufe gleich beim Kompilieren oder später im Betrieb erkennen und abfangen kann.

Neu ist auch das „Randstruct GCC-Plug-in“, mit dem der Compiler das Layout von Feldern ausgewählter Strukturen durcheinanderwürfelt. Das soll es Angreifern erschweren, einige häufiger zur Rechteausweitung verwendete Codestellen im Speicher aufzuspüren. Das Ganze ist allerdings vornehmlich für Nutzer interessant, die ihre Kernel selber kompilieren. Für Mainstream-Linux-Distributoren eignet sich das Ganze schlechter: Damit Anwender zum Distributions-Kernel passende Module kompilieren können, brauchen sie den zum Randomisieren genutzten Zufallswert – mit ihm könnten Angreifer den Schutz dann aber recht leicht aushebeln.

Wie schon Linux 4.11 bringt 4.13 einige Verbesserungen an der Sicherheitslösung AppArmor, die viele Jahre lang nur im Kernel von Ubuntu steckten. Darunter sind mehrere Funktionen, auf die das Paketmanagementwerkzeug Snapd zurückgreift. Einige weitere haben den Sprung in den offiziellen Kernel aber nach wie vor nicht geschafft; auf Distributionen jenseits der Ubuntu-Familien kann Snap daher die Rechte der in Snap-Paketen enthaltenen Anwendungen nicht oder nur bedingt beschränken.

Die neue Kernel-Version unterstützt die Security Level von Thunderbolt, um Systeme vor Spionage- oder Sabotage-Hardware zu schützen. Dazu sind aber noch Erweiterungen bei den Linux-Desktops nötig: Sie müssen in Zukunft fragen, welche Berechtigungen ein gerade angestecktes Thunderbolt-Gerät erhalten soll, um über die neuen Kernel-Techniken dann passende Parameter zu setzen. Windows bietet solch eine Funktion schon länger; Linux-Distributionen fehlt sie bislang, daher muss man bei manchen Systemen sogar eine unsichere Thunderbolt-Betriebsart im BIOS-Setup aktivieren, um manche Thunderbolt-Geräte mit Linux ansprechen zu können. In dieser Einstellung gelangen böswillige Geräte allerdings an sensitive Informationen, weil sie den gesamten Arbeitsspeicher per DMA auslesen können.

Frische Grafiktreiber

Der für moderne Intel-GPUs zuständige Treiber i915 weiß jetzt auch den Grafikkern von Coffee-Lake-CPUs anzusteuern, die Intel bei einigen Modellen der kürzlich gestarteten Prozessor-Baureihe Core i-8000 (siehe S. 41) einsetzen will. Einige Mobil-Prozessoren dieser Serie sollen hingegen ein „Cannonlake“-Innenleben erhalten, für dessen GPU der Treiber jetzt ebenfalls Code mitbringt. Der Support für die beiden Grafikkerne gilt aber vorerst noch als „unvollständig“.

Der von AMD entwickelte Amdgpu-Treiber unterstützt jetzt die Grafikkerne der „Raven Ridge“-Prozessoren. Bei ihnen handelt es sich um eine neue und noch dieses Jahr erwartete Generation von APUs (Accelerated Processing Units), die mit AMDs Vega verwandte Grafikkerne mit der beim Ryzen verwendeten Zen-Mikroarchitektur kombiniert. Die Unterstützung für diese GPUs hat aber den Status „Preliminary Support“ und ist somit unvollständig. Ein Grund dafür: Mit dem Grafikprozessor der Raven-Ridge-APUs gelingt vorerst keine Bildausgabe, weil dazu eine ursprünglich DAL (Display Abstraction Layer) und mittlerweile DC (Display Core) genannte Patch-Sammlung von AMD nötig ist; die Situation ähnelt somit der beim Support für Grafikkarten mit Vega-Chips. Nach wie vor ist ungewiss, wann die DC-Patches in Linux einfließen. Mit ziemlicher Sicherheit werden sie aber nicht in Linux 4.14 einfließen, das im November erscheinen dürfte. (thl@ct.de)