social.dk-libre.fr is a Fediverse instance that uses the ActivityPub protocol. In other words, users at this host can communicate with people that use software like Mastodon, Pleroma, Friendica, etc. all around the world.
This server runs the snac software and there is no automatic sign-up process.
#adminForge #Spenden Update Juli 2026
Es sind 1.250,38 € in 131 Transaktionen hinzugekommen 🎊
Vielen Dank an alle Unterstützer, macht weiter so 👍
https://adminforge.de/unterstuetzen
#Android https://adminforge.de/app
#DeltaChat https://chat.adminforge.de
#Ente https://erpel.cloud
#Pixelfed https://pixelshot.it
#PeerTube https://clip.place
#LinkStack https://linklist.me
#OpenTalk https://teamjoin.de
#DNS https://dnsforge.de
#Nextcloud https://my.adminforge.de
#Mastodon https://kanoa.de
#Matrix https://nope.chat
#Flohmarkt https://flohmarkt.adminforge.de
heise+ | Auswirkungen der neuen Secure-Boot-Zertifikate für Linux | heise online https://www.heise.de/ratgeber/Auswirkungen-der-neuen-Secure-Boot-Zertifikate-fuer-Linux-11371220.html #heiseplus #SecureBoot #Linux 
206 Gists mit #Linux/ #Bash Thema ist schon viel. Hier gibts eine frische Liste der letzten 200 .
https://gist.github.com/dewomser/65c61f4e83fa192add7dfffc3ddf96ef
Confused by Linux? I made this handy dandy chart to help clear up the confusion! #GNU #Linux #OpenSource
I switched to #Linux distros and stumbled onto something curious, the powerful features I'd completely overlooked for years were already in the Windows software I used on daily basis.
Text editor commands, graphics shortcuts, productivity workflows—all there, buried or unfamiliar. But on Windows, I never had to learn them. The OS was designed to work without that knowledge.
Linux, though, demanded engagement. No coasting. That friction forced me to explore, experiment, and actually use these capabilities. Now my workflow is transformed, and I can't imagine working without them. The real irony, switching to open-source software made me a fundamentally better user of proprietary tools.
#Wireshark 4.6.8 Improves Protocol and Capture File Support, Fixes More Bugs https://9to5linux.com/wireshark-4-6-8-improves-protocol-and-capture-file-support-fixes-more-bugs
Linux desktop use surged to 22% on one workday, Cloudflare data shows https://zdnet.com/article/linux-desktop-use-surged-on-one-workday-cloudflare-data-shows/ via @ZDNet & @sjvn
The #Linux desktop’s popularity is growing rapidly, here's why.
The Linux operating system hit a major milestone with a market share high of 10.65%, according to #Statcounter and @cloudflare
https://www.linux-magazine.com/Online/News/Linux-Surpasses-Double-Digit-Market-Share?utm_source=mlm
#Linux #OpenSource #OperatingSystem #MarketShare #FOSS
Am Wochenende noch nichts vor? Die @FrOSCon findet wieder in Sankt-Augustin statt.
Dieses Mal dürfen @Tronde und ich sowohl einen Vortrag (https://programm.froscon.org/froscon2026/talk/383a9fe1-c572-41d9-8ba6-e479a5aec0fc/) als auch einen Workshop (https://programm.froscon.org/froscon2026/talk/fffc3668-5fc8-4811-a807-068fda1375ad/) zum Thema Patch-Management unter #Linux beitragen.
Das Vortragsprogramm ist dieses Jahr wieder sehr umfangreich. 🙂
Git is great at storing dotfiles. It is less good at knowing where they belong, which permissions they need, or why a work laptop and a home server should differ.
Here is how I use chezmoi plus Git to manage fish, Neovim, SSH, GnuPG, Atuin and more. Including the “oops, I edited the live file” recovery workflow.
https://blog.hofstede.it/chezmoi-and-git-dotfiles-without-pretending-every-machine-is-the-same/
Schuljahresbeginn in #nds - es brutzeln 16 Lernsticks. in zwei 8-Port-USB-Hubs.
Während das läuft eine Runde #krafttraining im kühlen Keller, vor dem Duschen dann die nächsten 16.
Die übrigen knapp 100 Sticks kopiere ich dann am Wochenende, dann kann ich die ersten mit meiner Klasse ausprobieren und noch Dinge korrigieren, die ich evtl. vergessen habe.
#fediLZ #linux
Linux GPU Configuration And Monitoring Tool (LACT) adds more NVIDIA GPU overclocking options https://www.gamingonlinux.com/2026/08/linux-gpu-configuration-and-monitoring-tool-lact-adds-more-nvidia-gpu-overclocking-options/
Où voir l'éclipse ce soir ?
Sunset Atlas : carte gratuite qui note la qualité du coucher de soleil en Europe à 30m de résolution, avec forecast nuageux et couche spéciale éclipse du 12 août 2026. ⬇️
https://www.sunsetatlas.ch/?lang=fr&mode=eclipse
#SelfHosted #OpenSource #FOSS #Linux
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-Pdc
At this point so many fundamental software projects are allowing LLM commits that just using something else isn't practical or sometimes even possible, but I guess it can be mitigated by going with long-term support releases instead of bleeding-edge or even major updates
I guess we just accept that at some point down the road something extremely vital and important will break or get compromised and people will actually have to take a look at it and realize it's horrific spaghetti code and have to redo a lot of it. At least when it happens it will be kind of like us-east-1 going down in that everyone's equally fucked so no one's getting work done anyway.
It's like Y2K except people are deliberately coding it in. Wheee!
(See e. g. @davidgerard @zzt for context)
And then there's also the "I used to donate to thing X, but due to the project's decisions I stopped, y'all suck fuck you".
Like, nice, thanks for donating, but have you considered you can move to another thing while accepting that it's simply not for you anymore?
It's no secret I love Adwaita apps, they rock my boat in exactly the way I want them to, but you won't see me shitting and bitching about KDE just because they dared to not cater specifically to me 🤷🏻♀️ That would be stupid.
PGSimCity : une ville 3D explorable qui modélise le fonctionnement interne de PostgreSQL, buffer pool, WAL, vacuum, tout y est représenté de façon visuelle et interactive. ⬇️
https://nikolays.github.io/PGSimCity/
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-bcS
ChatGPT-App für #Linux veröffentlicht
Eine zentrale Funktionalität der Windows- und Mac-Varianten von ChatGPT ist in der offiziellen Linux-Anwendung nicht verfügbar.
Captain it's Wednesday - Folge 191 - Mecklenburg-Vorpommern wird unabhängiger
Folge 191 des CIW Podcasts.
Ein weiteres norddeutsches Bundesland entscheidet sich für die digitale Souveränität
Trying to get Debian to boot on my Radxa ROCK 5 ITX with a mirrored and encrypted ZFS root filesystem.
Current status:
EDK2 boots UEFI GRUB, with working serial console
UEFI GRUB boots ZFSBootMenu, with working serial console
ZFSBootMenu imports pool and accepts the passphrase, but then fails to find the kernel.
This feels like progress?
Windows mit den verfügbaren Programmen war mehr Klickibunti als Linux, mich stört die Unsachlichkeit, wenn ich am Windows Rechner sitzen muss, besonders seit dem privaten Linux Wechsel - lenkt mich vom Wesentlichen ab. Noch nerviger finde ich apple mit seinem m.E. überladenen Design, deren Geräte schalte ich möglichst schnell wieder aus. Es muss nicht immer shell oder greenscreen sein, aber wenn ein OS mich "anschreit" bin ich genervt.
Was ist die schlankste und am einfachsten zu handhabende Lösung um unter Fedora Linux eine VM zu betreiben?
Habe hier einen etwas schwachbrüstigen Rechner, auf dem das laufen soll. Ich will meine Windowspartition durch eine Windows VM ersetzen.
Ideen? Vorschläge?
Manjaro’s latest stable update effectively brings the 26.1 “Bian-May” release to its final state, with Linux 7.1, Plasma 6.7, and major package updates.
https://linuxiac.com/manjaro-26-1-essentially-goes-final-with-linux-kernel-7-1-and-plasma-6-7/
iX-Workshop: Software und Updates mit Ansible automatisiert bereitstellen
Trainieren Sie praxisnah, wie Sie die Systeme in Ihrem Unternehmen mit Ansible verwalten können, um Konfigurationen und Updates automatisiert zu verteilen.
#Automatisierung #IT #ITInfrastruktur #iXWorkshops #Linux #OpenSource #Systemverwaltung #news
#Linux #Bash #Mastodon
Wenn ich mitten in der Nacht eine super Idee habe, die ich unbedingt vertröten will, aber da ist gerade niemand der das liest.
Dieses Delay-Skript schickt es Stunden später ab.
https://gist.github.com/dewomser/dbd5e349be152c5b24d84462d50d3f94
⚡ Toot 1/4 — USB → NVMe → Hibernate
USB rein, Terminal auf. 💻⚡
Jetzt beginnt der Weg zum Hibernate – nicht mit Zauberei, sondern mit sauberer Linux-Mechanik. 🐧
Die NVMe ist klar aufgeteilt:
• nvme0n1p1 → EFI/FAT32 → /boot
• nvme0n1p2 → LUKS2 → cryptroot 🔐
• nvme0n1p3 → LUKS2 → cryptswap 💾
Der erste Schritt: Die Verschlüsselung öffnen und den Weg bis zum Btrfs-Root freilegen.
Mission gestartet. 🦸♂️⚡
#Linux #ArchLinux #NVMe #LUKS2 #Btrfs #Hibernate #Systemd #GNUlinux
Das Projekt #Xodus arbeitet daran, den #Xbox #GamePass nativ unter #Linux und damit auch auf dem #SteamDeck spielbar zu machen. Erste wichtige Hürden wie der Download wurden bereits gemeistert. #Open-Source https://winfuture.de/news,160554.html?utm_source=Mastodon&utm_medium=ManualStatus&utm_campaign=SocialMedia
#Linux ist einfach Klasse.
DVD oder blue-ray auf Windows abspielen oder gar rippen kostet ne Menge Geld.
Mit meinem USB Linux Mint waren das ein paar Handgriffe und Abspielen/Rippen von Blue-Rays funzt.
Und auch meine Digital Devices Max M2 Fernsehkarte funktioniert zuverlässig bei DVB T2, DVB S2 auf Astra 19.2 und 28.2.
Bottles game manager v66 brings UMU from Open Wine Components to help run games https://www.gamingonlinux.com/2026/08/bottles-game-manager-v66-brings-umu-from-open-wine-components-to-help-run-games/
Der 187. virtuelle #Linux-Treff Nord steht an:
Am Donnerstag, den 13.08. findet der virtuelle Linux-Treff Nord statt. Beginn ist wieder um 19:00 Uhr.
Themen werden u.a. diesmal sein:
- Von Mäusen mit Kabeln und sonstigen Verbindungsmöglichkeiten Teil 2
- #endof10,
- wer sonst noch was mitbringt.
Wer mit dabei sein und z.B. eine Linuxfrage loswerden möchte, einfach eine Mail an kontakt[at]lug-noris.de senden.
Hinweis: Im August findet kein realer Linux-Treff statt. Nächster Termin: 03.09.
Battle for Wesnoth: version 1.19.26 released https://playingtux.com/en/articles/2026/08/wesnoth-v11926-released/ #Linux #Gaming #LinuxGaming #Wesnoth #OpenSource #Strategy #Fantasy
Um das Konfigurationstool mit #Wine unter #Linux zum Laufen zu bringen habe ich viel suchen müssen. Ich hatte hier auch gezielt mit #KI gearbeitet, um die Vielfalt der Treffer nicht selber sortieren zu müssen. Leider führte das dazu, dass mich die KI teilweise in die falsche Richtung schickte. Die Lösungen im Internet sind teilweise recht alt und Wine hat in letzter Zeit einige grundlegende Änderungen erfahren. Dadurch passen die alten Lösungen nicht mehr zum aktuellen Wine. Das machte es natürlich noch schwieriger auch bei normaler Suche sich Stück für Stück vorwärts zu tasten.
Ich habe das alles für mich dokumentiert. So kann ich, wenn ich mein System mal neu aufsetze, was wahrscheinlich mit Fedora 45 passieren wird, das Tool wieder zum Laufen bringen. War kurz am Überlegen dass irgendwie öffentlich zu dokumentieren. Aber
1. Wo
2. Für wen
3. Wer KI einsetzt wird es eh nie finden
Fest steht: Bei zukünftigen Anschaffungen sind alle Firmen raus, die nicht nativ Linux unterstützen (5/2)
Fun related #Linux fact: Scroll Lock actually does something! Namely, on the Linux console, output will freeze when Scroll Lock is on. That is, it “locks” the “scroll”.
To be precise, Linux interprets turning Scroll Lock on as equivalent to pressing Ctrl+S, and turning Scroll Lock off as equivalent to pressing Ctrl+Q. Ctrl+S and Ctrl+Q date back to the old #Teletype terminals that #Unix systems were originally connected to. https://en.wikipedia.org/wiki/Software_flow_control
Does anyone know the last Linux kernel version that didn't include slop code?
I'm using boxes that are 6-8 years old, so I don't need a shiny new kernel.
I'm also running Debian stable which uses ancient versions of packages, so I feel like I could run with an older kernel.
Would it work?
I'm on the lookout for a great webmail interface for my self-hosted email. Currently been using my nextcloud Email app as the UI, but I don't love it.
What do you like for self-hosted webmail?
Le Mans: Permanence du mercredi, Le mercredi 19 août 2026 de 12h30 à 17h30. https://www.agendadulibre.org/events/35499 #leMans #linuxmaine #gnuLinux #demonstration #assistance #permanence #logicielsLibres #linux #adieuWindows
I occasionally need to test things on #Linux, and while it’s easy to spin up an instance somewhere, it’d be more convenient having something at home. And it’s fun to just goof around. What’s a good Linux laptop 2026? Must ship with Linux or no OS installed. Other than that no hard requirements, but I’d prefer something lightweight over something beefy. I got beefy from work already 🙂
Serie: Ralf regt sich auf über CachyOS mit KDE-Plasma
Wird Kachy-Plasma das neue Traumpaar auf meinem Rechner? Lest diesen Artikel ohne viel Aufregung. Vielleicht gibt er Anregungen für den eigenen Wechsel.
#CachyOS #KDE_Plasma #Distrohopping #Linux
https://gnulinux.ch/serie-ralf-regt-sich-auf-ueber-cachyos-mit-kde-plasma
Habe heute meine Bestellung bei Conrad.de erhalten. Mit dabei Druckerfarbe für knapp 3€/100 mL. Deutlich günstiger als vom Hersteller.
Warum geht das?
Habe damals mehr Geld ausgegeben und einen Epson EcoTank Drucker gekauft. D.h. es gibt dort Druckertanks, die ich einfach nachfüllen kann mit welcher Tinte ich auch immer will.
So will ich das. 😊
(Natürlich drauf achten, dass sie auch wirklich kompatibel ist.)
Dazu ist das Gerät voll kompatibel mit #linux: Drucken und Scannen geht übers WLAN einwandfrei bspw. über Okular und Skanpage.
🐧 SparkyLinux 8.4 Brings Back 32-Bit Support for Older PCs
「 According to the team, that decision was reconsidered after it became clear many users still have functional computers with 32-bit processors. As a result, SparkyLinux 8.4 again provides i686-pae Live/Install images alongside its existing 64-bit x86 and ARM64 editions 」
https://linuxiac.com/sparkylinux-8-4-brings-back-32-bit-support-for-older-pcs/
Nutzt jemand Syncthing unter Linux zusammen mit Sushitrain auf dem iPhone?
Wie sind eure Erfahrungen damit – insbesondere bei Zuverlässigkeit, iOS-Hintergrundbeschränkungen, und Datenschutz?
Funktioniert das bei euch im Alltag gut? Würdet ihr die Kombination empfehlen?
#Syncthing #Linux #iPhone #Sushitrain #OpenSource #Privacy
Asobi: Remote Play is a new way to play PlayStation games on SteamOS / Linux https://www.gamingonlinux.com/2026/08/asobi-remote-play-is-a-new-way-to-play-playstation-games-on-steamos-linux/
#HWE- #Kernel- #Updates für #Ubuntu 24.04 und #Linux #Mint 22.3
Wer auf Ubuntu 24.04 LTS »Noble Numbat« den HWE-Stack (Hardware Enablement für LTS-Systeme) nutzt, bekommt gerade ein verfrühtes Update spendiert: Canonical rollt den Linux-7.0-Kernel aus Ubuntu 26.04 LTS »Resolute Raccoon« vorzeitig auf Ubuntu 24.04 aus. Bislang lief der HWE-Zweig mit Kernel 6.17 aus dem inzwischen ausgelaufenen Ubuntu 25.10.
https://linuxnews.de/hwe-kernel-updates-fuer-ubuntu-24-04-und-linux-mint-22-3/
Am 11.08.26 um 19:30 Uhr im Livestream:
Von der Idee zur #Gemeinschaft: Wie gründe ich eine #Linux #User #Group?
Wie gründet man eigentlich eine Linux User Group ( #LUG ) und baut eine aktive lokale #Open_Source_Community auf? In diesem Livestream geht es um die Praxiserfahrungen rund um die Neugründung der #LUG Offenbach.
XBOX PC and Game Pass coming to Linux with the 'Xodus' project https://www.gamingonlinux.com/2026/08/xbox-pc-and-game-pass-coming-to-linux-with-the-xodus-project/
HWE-Kernel-Updates für Ubuntu 24.04 und Linux Mint 22.3
https://linuxnews.de/hwe-kernel-updates-fuer-ubuntu-24-04-und-linux-mint-22-3/ #ubuntu #linuxmint #kernel #linux #linuxnews
GE-Proton 11-4 brings lots of controller improvements https://www.gamingonlinux.com/2026/08/ge-proton-11-4-brings-lots-of-controller-improvements/
Erinnerung: Gestern war ein guter Tag, #Linux durch was Besseres zu ersetzen. Aber heute geht es auch noch.
#Mesa26.2 bringt frische #Grafiktreiber und #Optimierungen
Das #Mesa-Projekt hat Version 26.2 veröffentlicht. Das Update verbessert #Grafiktreiber, #Vulkan-Unterstützung und die #Hardwarekompatibilität unter #Linux.
Besonders #Gamer profitieren von zahlreichen Änderungen. Die #Vulkan-Treiber #RADV, #ANV, #NVK und Turnip wurden weiter ausgebaut. Sie bilden die Grundlage für Technologien wie #Steam #Play, #DXVK, #VKD3D-Proton und viele native #Vulkan-Spiele.
DietPi 10.6 unterstützt Orange Pi 4 Pro und Orange Pi Zero 3W
https://linuxnews.de/dietpi-10-6-unterstuetzt-orange-pi-4-pro-und-orange-pi-zero-3w/ #dietpi #debian #sbc #linux #linuxnews
A use-after-free bug in #Linux's #SCTP #networking #code can be turned into full #root on a host, and #Tencent researchers say they used it to escape a #container and reach the machine underneath.
The flaw has existed since 2008. The fix already shipped: stable kernels 7.1.6, 6.18.42, 6.12.101 and 6.6.148, released August 3, close it. Anyone running an older kernel with SCTP reachable should update.
https://thehackernews.com/2026/08/18-year-old-linux-sctp-flaw-could-let.html?m=1
We at @parchlinux have started building something we've wanted for a long time: a full accessibility layer baked into the distro itself, not bolted on as an afterthought. Persian voice support, offline speech recognition, and a design that treats every desktop environment the same way. 🧵👇
https://blog.parchlinux.com/a-linux-distribution-that-leaves-no-one-behind/
#Linux #Accessibility #OpenSource #FOSS #a11y #ParchLinux #Persian #ScreenReader #Whisper #Privacy
> Linus Torvalds says AI has made 'huge' #Linux kernel updates the new normal. https://www.theregister.com/os-platforms/2026/08/10/linus-torvalds-says-ai-has-made-huge-linux-kernel-updates-the-new-normal/5285268
One *major* concern I have about this, entirely aside from any concerns about generative #AI? Are these massive pushes to the git repos getting enough human eyes on them to make certain no one is sneaking in Trojans and Back Doors? (Even accidentally, given the way #LLMs work…)
Localsend
fetch it via first source.
On my SBC Pi5 I found no native binary so I used the second source to link it via web with an android to transfer files. From version 1.18 or newer you can use the native Android version instead of another browser
Sources:
#Networking #filetransfer #programming #local #send #localsend #OpenSource #Android #Linux
It's a rainy day here so instead of working on the garden folly, I've been messing around with desktops and whatnot. I'm supposed to be on vacation... ha.
Finally tried out Cosmic. I like it, it's pretty light (and also unfinished) but it is snappy and usable as far as I could tell in a few hours of usage.
In the short term I'd expect to extend functionality with other apps if I was to daily it. As an example, there is no font management that I could find and ended up adding fonts manually.
Multiplier par 4 et en 4 ans l’adoption de Linux chez le particulier ! https://linuxfr.org/news/multiplier-par-4-et-en-4-ans-l-adoption-de-linux-chez-le-particulier #souveraineté_numerique #autopromotion #association #linux_mint #Linux #linux #gafam #spam
RE: https://mastodon.online/@gardiner_bryant/117071122333123981
I have 1 iMac (Mint), 1 MacMini (LMDE), 1 MB Pro (MX Linux) and 1 MB Air (MX Linux) from 2011 and 1 MacMini (Mint) from 2014. They all work great with Linux but tbh best with Debian or Debian based distros like MX or LMDE.
#Linux #Debian #MXLinux #LMDE #linuxonmac #linuxMint
Linux for Mac Users
> Six months into ditching my Mac for Linux. Here's what's working, what's not, and what might get there soon.
#Linux #Filmmaking #Opinion #OpEd #BryantReview @zahntron
https://gardinerbryant.com/linux-for-mac-users/?utm_campaign=widget&utm_source=mastodon
Linux for Mac Users
> Six months into ditching my Mac for Linux. Here's what's working, what's not, and what might get there soon.
#Linux #Filmmaking #Opinion #OpEd #BryantReview @zahntron
https://gardinerbryant.com/linux-for-mac-users/?utm_campaign=widget&utm_source=mastodon
Vor Kurzem saß ich in einer Arztpraxis im Wartezimmer, und weil ich so bin wie ich bin, habe ich statt der Zeitschriften die Rechner am Empfang angeschaut. An jedem hing eine Funkmaus und eine Funktastatur, dazu der kleine Adapter im USB-Port. Von einem Hersteller, den ich nicht kannte, der Eindruck war sehr günstiges No-Name-Gerät. So etwas nenne ich selbst gern etwas abfällig „Chinaprodukt“, was eigentlich unfair ist, denn die können das inzwischen richtig gut.
Im Gespräch mit dem Arzt kam heraus, dass ihm ein Punkt völlig neu war: dass die Tastatureingaben als Funk durch die Luft gehen und dass man Funk mithören kann. An seinem Platz werden Diagnosen, Namen und Medikamente getippt, und die Frage, ob das jemand aus dem Nachbarzimmer mitlesen könnte, hatte sich vorher schlicht nie gestellt. Aus genau dieser Unterhaltung ist dieser Beitrag entstanden, und er wollte ihn selbst lesen. Also, hallo an dieser Stelle, danke für den Anstoß.
Ich will die Praxis dabei nicht an den Pranger stellen. Über die Sicherheit genau dieses No-Name-Geräts kann ich nichts sagen, ich habe es nie in der Hand gehabt. Der Punkt ist ein anderer: fast jeder benutzt so einen Adapter, und kaum jemand hat sich die Frage je gestellt. Bei einer Mausbewegung ist das auch egal. Bei einem Passwort, einer PIN oder einem Login nicht. Also drei Fragen, die den Beitrag tragen. Kann man das wirklich abhören? Kann man sogar eigene Tasten einschleusen? Und wie sieht man, ob das eigene Gerät geschützt ist?
Ich mache das am Beispiel von Logitechs Unifying-Adapter, dem mit dem kleinen orangen Stern, weil ich davon zwei Stück im Rechner habe und weil Logitech einer der Hersteller ist, bei dem man den Unterschied zwischen „kein Krypto“ und „verschlüsselt“ schön sehen kann. Alles, was ich hier auf dem Rechner prüfe, zeige ich mit dem Befehl und der echten Ausgabe. Und wo etwas unklar bleibt, sage ich das auch.
Bevor es um Logitech geht, muss eine Sache sauber getrennt sein, denn der ganze Beitrag hängt daran. Wer an einem Funkgerät lauscht, will eines von zwei Dingen, und die sind unterschiedlich gefährlich.
Daraus ergeben sich drei Schutzstufen, und die Reihenfolge ist wichtig.
Und hier kommt die Design-Entscheidung, die uns später um die Ohren fliegt. Eine Tastatur braucht zwingend Verschlüsselung, weil sie Geheimes sendet. Eine Maus bekam bei Unifying historisch keine, weil sie ja nichts Geheimes sendet. Das klingt vernünftig, und für sich genommen ist es das auch. Zum Einfallstor wurde es trotzdem, weil ein Empfänger, der offene Maus-Pakete akzeptiert, sich dazu bringen ließ, auch gefälschte Tastatur-Pakete zu schlucken. Genau das war MouseJack. Dazu gleich mehr.
Der Funkweg. Die Tastatur funkt AES-128-verschlüsselt, die Maus im Klartext. Ein Angreifer mit Antenne hört beide Strecken, von der Tastatur bekommt er aber nur Kauderwelsch.
Damit klar wird, wovon wir reden, erst das schlechte Beispiel. 2016 zeigte die Firma Bastille unter dem Namen KeySniffer, dass Funktastaturen von acht Herstellern die Tastenanschläge komplett im Klartext funken, ohne jede Verschlüsselung. Betroffen waren Anker, EagleTec, General Electric, Hewlett-Packard, Insignia, Kensington, Radio Shack und Toshiba. Mitlesbar aus rund 75 Metern, mit Hardware für unter hundert Dollar. Man tippt sein Passwort, und einer im selben Gebäude schreibt es Zeichen für Zeichen mit.
Zwei Dinge daran sind wichtig. Erstens ist das kein „schwaches Krypto“, das ist „kein Krypto“. Diesen Unterschied wirft man gern in einen Topf, aber er ist der ganze Punkt. Zweitens kann man diese Tastaturen nicht per Update retten. Da hilft nur wegwerfen und ersetzen. Und genau das ist der Unterschied zu Logitech, wo ein Empfänger-Update wirklich etwas ändert, wie wir noch sehen werden. Bluetooth-Tastaturen und die höherwertigen Geräte von Logitech, Dell und Lenovo waren von KeySniffer übrigens nicht betroffen. Das ist die Brücke zu Logitech.
Unifying ist der kleine USB-Adapter mit dem orangen Stern, an den sich bis zu sechs Geräte koppeln lassen. Eine Maus, eine Tastatur, vielleicht ein Ziffernblock, alles über einen Stick. Technisch funkt das bei 2,4 GHz auf Nordics nRF24-Technik, nicht Bluetooth. Das ist ein wichtiger Punkt, den ich später beim Abhören noch brauche. Tastaturen werden mit AES-128 verschlüsselt, der Schlüssel wird beim Koppeln festgelegt. Mäuse funken offen.
Ebenfalls 2016, wieder Bastille, diesmal Marc Newlin. Über die offene, nicht authentifizierte Maus-Strecke ließen sich gefälschte Tastatur-Pakete in viele Empfänger einschleusen, dazu erzwungenes Koppeln. Betroffen waren Geräte vieler Hersteller, nicht nur Logitech. Der Angreifer musste nicht warten, bis jemand tippt. Er gab sich als neue Tastatur aus und schrieb selbst.
Logitech reagierte mit mehreren Firmware-Ständen für die Empfänger. Nach Logitechs eigenen Release-Notes sind die Kern-MouseJack-Punkte, also erzwungenes Koppeln, Tastatur-Injektion und gefälschte Maus, ab RQR12.05 beziehungsweise RQR24.03 geschlossen. Eine später gefundene Schwäche, die verschlüsselte Injektion (Bastille-Punkt #13, als CVE-2016-10761 geführt), folgte erst ab RQR12.08 und RQR24.06. Diese zwei Generationsnummern solltet ihr euch merken, sie kommen beim Testgerät gleich wieder.
2019 nahm sich Marcus Mengs, im Netz MaMe82, Unifying noch einmal vor. Vier CVEs, und der Unterschied zwischen ihnen ist der eigentliche Lehrwert.
CVE
Was
Fix
CVE-2019-13052
Aus dem Mitschnitt der Kopplung den AES-Schlüssel ableiten, danach mitlesen und einschleusen
kein Patch, Logitech lehnte ab
CVE-2019-13053
Einschleusen in die verschlüsselte Strecke, setzt einmaligen physischen Zugriff voraus
kein Patch für die erweiterte Form
CVE-2019-13054
Schlüssel aus R500- und Spotlight-Presentern auslesen, physischer Zugriff
Fix für August 2019 angekündigt
CVE-2019-13055
Alle gekoppelten Schlüssel aus einem Empfänger in unter einer Sekunde, physischer Zugriff
Fix für August 2019 angekündigt
Die spektakuläre Fernübernahme, MouseJack, ist an einem aktuellen Empfänger zu. Was bleibt, ist die erste Zeile: CVE-2019-13052. Wer den Moment der Kopplung mitschneidet, kann daraus den AES-Schlüssel ableiten und danach mitlesen und einschleusen. Diese Lücke wurde nie geschlossen. Logitech hat erklärt, dafür keinen Patch zu liefern, sie steckt im Design.
Das praktische Risiko ist gering, weil man dafür genau dann mithören muss wenn ihr ein Gerät neu koppelt, und weil der Schlüssel danach nicht neu ausgehandelt wird. Koppeln passiert selten und ist schnell vorbei. Aber der Satz „Firmware aktuell, also alles gut“ wäre trotzdem falsch, und genau diese Ehrlichkeit macht für mich den Reiz an der Sache aus. Diese Kopplungs-Lücke ist übrigens auch der Aufhänger für den zweiten Teil.
Die Angriffe über die Zeit. MouseJack wurde per Firmware geschlossen, aus der 2019er-Serie blieb CVE-2019-13052 offen, und Logi Bolt zieht 2021 die Konsequenz.
2021 brachte Logitech mit Logi Bolt einen neuen Empfänger heraus, der Sicherheit von Anfang an mitdenkt. Die Kernpunkte, alle belegt:
Ein Missverständnis will ich gleich einfangen. Bolt ist Bluetooth-basiert, aber es ist ein geschlossenes, gehärtetes System, kein normales Bluetooth-Pairing, wie ihr es vom Kopfhörer kennt. Verwechselt das nicht, das eine ist gehärtet, das andere ist ein bunter Haufen.
Genug Geschichte, jetzt der eigene Rechner. Auf dem Testgerät, einem Notebook mit Linux Mint 22.3, stecken zwei Unifying-Empfänger gleichzeitig. Am einen hängt die Maus, eine Logitech Marathon Mouse M705, am anderen die Tastatur, eine MX Keys. Beide Sticks tragen denselben orangen Stern, und wie sich gleich zeigt, tragen sie trotzdem zwei verschiedene Sicherheitsgeschichten mit sich herum.
Die Maus M705 und ein Unifying-Empfänger mit dem orangen Stern.
Der orange Stern ist das Erkennungszeichen von Unifying.
Die Tastatur, eine Logitech MX Keys.
Man muss nicht sofort ein Paket installieren, um zu verstehen, was da steckt. Das Betriebssystem verrät schon eine ganze Menge. Erst schaue ich, welche USB-Geräte hängen. Mit lsusb sehe ich beide Empfänger, und interessant ist, dass sich beide als exakt dieselbe Kennung melden.
$ lsusb | grep -i logitech Bus 001 Device 011: ID 046d:c52b Logitech, Inc. Unifying Receiver Bus 001 Device 012: ID 046d:c52b Logitech, Inc. Unifying Receiver
046d ist Logitech, c52b ist der Unifying-Empfänger. Zwei gleiche Kennungen, zwei physische Sticks. Als Nächstes die Kernelmodule, die diese Sticks bedienen.
$ lsmod | grep -i logi hid_logitech_hidpp 69632 0 hid_logitech_dj 36864 0 usbhid 77824 2 hid_logitech_dj,hid_logitech_hidpp hid 282624 10 usbhid,...,hid_logitech_dj,hid_logitech_hidpp
Zwei Module machen die Arbeit, und die Aufgabenteilung lohnt sich zu verstehen. hid_logitech_dj kümmert sich um das Multiplexing des Unifying-Empfängers, also darum, dass ein einziger Stick mehrere Geräte tragen kann. hid_logitech_hidpp spricht das Feature-Protokoll HID++, über das gleich auch Solaar redet. Und über die Geräteknoten /dev/hidraw* reden die Werkzeuge am Ende mit den Sticks. So versteht man die Schichten, bevor überhaupt ein Zusatzprogramm im Spiel ist.
Solaar ist die grafische Oberfläche und zugleich ein Kommandozeilen-Werkzeug für Unifying und HID++. Damit koppelt man Geräte, sieht den Akkustand, den Verschlüsselungsstatus und kann Tasten umbelegen. Auf dem Testgerät läuft Version 1.1.11. Der eine Befehl, der alles auf einmal ausgibt, ist solaar show. Für den Empfänger der Maus, gekürzt auf das Wesentliche:
Unifying Receiver
USB id : 046d:C52B
Serial : 3CE0986A
Firmware : 12.11.B0032
Has 1 paired device(s) out of a maximum of 6.
1: Marathon Mouse M705 (M-R0073)
Kind : mouse
Protocol : HID++ 4.5
Battery: 50%, discharging, next level 20%.Solaar zeigt den Empfänger der Maus. USB-ID 046d:C52B, Firmware 12.11.B0032, ein gekoppeltes Gerät.
Und für den Empfänger der Tastatur:
Unifying Receiver
USB id : 046d:C52B
Serial : C31FD0D1
Firmware : 24.11.B0036
Has 1 paired device(s) out of a maximum of 6.
1: MX Keys Keyboard
Kind : keyboard
Protocol : HID++ 4.5Der zweite Empfänger, der für die Tastatur. Dieselbe USB-Kennung, aber Firmware 24.11.B0036.
Hier fällt schon auf, was ich gleich groß mache. Zwei Unifying-Sticks, aber zwei Firmware-Linien: RQR12 für die ältere Maus-Generation, RQR24 für die neuere Tastatur. Beide tragen denselben orangen Stern, dahinter stecken aber zwei Baujahre und zwei Geschichten.
Das ist das Herzstück, und es ist ein einziger Blick in Solaar. In der Geräteansicht steht bei jedem gekoppelten Gerät eine Zeile „Drahtlose Verbindung“. Für die Maus M705 meldet Solaar dort „nicht verschlüsselt“, mit einem roten Schild. Für die Tastatur MX Keys meldet dieselbe Zeile „verschlüsselt“, mit einem geschlossenen Schloss.
Solaar meldet für die Maus M705 eine nicht verschlüsselte Funkverbindung, mit rotem Schild.
Für die Tastatur MX Keys meldet Solaar dieselbe Übersicht als verschlüsselt, mit geschlossenem Schloss.
Was das heißt, und was nicht. Die Tastatur ist mit AES-128 verschlüsselt, der Schlüssel wurde beim Koppeln festgelegt. Wer die Funkstrecke mithört, bekommt Kauderwelsch. Die Maus funkt offen, was für Bewegungen und Klicks kein Problem ist. Und dann die ehrliche Einschränkung, die uns direkt zum Angriff führt: dass die Maus offen funkt, war historisch genau der Hebel für das Einschleusen, bis die Firmware das abgestellt hat.
Ein Gedanke, der jetzt naheliegt, führt in die Irre: dann schalte ich die Verschlüsselung der Tastatur eben ab und schaue, was durchgeht. Geht nicht. Die AES-Verschlüsselung der Tastatur hat keinen Ausschalter. Sie steckt fest im Unifying-Protokoll, Solaar hat dafür keinen Schalter, das alte ltunify auch nicht. Wer die Klartext-Eingaben der Tastatur sehen will, muss das AES brechen, nicht abschalten. Und genau das ist der Stoff für den zweiten Teil.
Für die reine Frage „bin ich sicher“ braucht man erstaunlich wenig. Zwei Pakete reichen, und beide waren auf dem Testgerät sowieso schon da.
Paket
Wofür
solaar
Kopplung, Akku, Verschlüsselungsstatus, Tastenbelegung
fwupd
Firmware-Updates über LVFS
Ein paar Werkzeuge, über die man im Netz stolpert, braucht man hier ausdrücklich nicht, und ich schreibe dazu, warum.
Paket
Warum nicht
ltunify
ältere Unifying-Kommandozeile, von Solaar überholt
libratbag / piper
DPI- und Tastenkonfiguration für Gaming-Mäuse, für die M705 unnötig, Solaar deckt sie ab
jackit, nrfutil, dfu-tool
Angriffs- und Flash-Werkzeuge für nRF-Hardware, hier nicht installiert. jackit gehört zum Crazyradio-am-Laptop-Weg, in diesem Aufbau macht die Funkarbeit stattdessen der Flipper
Der erste Blick ist der Verschlüsselungsstatus, den Solaar meldet. Tastatur verschlüsselt, Maus nicht. Das ist bei Unifying normal und in Ordnung, solange man weiß, dass die Maus offen funkt und dort nichts Geheimes durchgeht.
Der zweite Blick ist die Firmware. fwupd kennt beide Empfänger über LVFS, und fwupdmgr get-updates sagt, ob etwas ansteht.
$ fwupdmgr get-updates --no-unreported-check Devices with the latest available firmware version: • Unifying Receiver • Unifying Receiver
Beide sind auf dem neuesten Stand, den LVFS anbietet, das ist RQR12.11 und RQR24.11. Und jetzt die Verbindung zur Geschichte, die den Abschnitt wertvoll macht. Die MouseJack-Fixes stecken in den Firmware-Generationen ab RQR12.05 beziehungsweise RQR24.03 für die Kern-Punkte, und ab RQR12.08 beziehungsweise RQR24.06 für die verschlüsselte Injektion. Beide Empfänger liegen mit 12.11 und 24.11 deutlich darüber. Die Fernübernahme von 2016 ist an diesem Gerät also zu. Das ehrliche Ergebnis dieses Abschnitts ist „hier ist nichts zu tun“, und das darf man auch so hinschreiben.
Trotzdem der Handgriff für den Fall, dass doch einmal ein Update ansteht, als Verfahren, nicht als Messung. Auf dem Testgerät gab es nichts zu aktualisieren, ich habe die letzte Zeile hier also nicht wirklich ausgeführt.
fwupdmgr refresh fwupdmgr get-updates fwupdmgr update
Jetzt die andere Seite. Unifying funkt bei 2,4 GHz auf nRF24-Technik mit einer eigenen Paketstruktur, Enhanced ShockBurst nennt Nordic das. Normale SDR-Empfänger und die üblichen Sub-Gigahertz-Geräte sehen das schlicht nicht. Man braucht ein nRF24-Radio, das in einen Mithör-Modus versetzt wird. Und genau hier wird es interessant, was ein Flipper Zero kann und was nicht.
Das eingebaute Funkteil des Flipper ist ein CC1101. Das arbeitet unter einem Gigahertz, grob 300 bis 928 MHz. Es kommt physikalisch nicht an die 2,4 GHz von Unifying heran. Aus der Schachtel heraus kann der Flipper diesen Angriff also gar nicht, egal welche Firmware drauf ist.
Welches Radio an 2,4 GHz herankommt. Der eingebaute CC1101 des Flippers arbeitet unter einem Gigahertz und sieht die Strecke nicht. Erst ein nRF24-Radio kommt heran.
Auf meinem Aufbau steckt der Flipper mit der Momentum-Firmware und einem Zusatzmodul, einem AIO Board. Auf dem Board steht die Bestückung selbst drauf: RED NRF24, GREEN ESP32, BLUE CC1101, dazu ein EBYTE-Modul und externe Antennen. Das entscheidende Teil für uns ist das nRF24-Radio. Genau das, was dem Flipper von Haus aus fehlt. Damit werden die Apps NRF24: Sniffer und NRF24: Mouse Jacker nutzbar, beide aus dem Projekt von mothball187 und in Momentum enthalten.
Flipper Zero mit aufgestecktem AIO Board V1.4. Das Board liefert das nRF24-Radio für 2,4 GHz, neben ESP32 und CC1101, das dem Flipper allein fehlt.
Der Ablauf ist in zwei Schritten schnell erzählt. Erst sucht der Sniffer die Kanäle ab und findet die Funkadresse des Empfängers. Dann bekommt der Mouse Jacker diese Adresse und ein Tastatur-Skript und versucht, Tasten einzuschleusen. Klingt einfach. Der erste Schritt ist es aber schon nicht.
Der NRF24-Sniffer meldet eine gefundene Adresse auf einem 2,4-GHz-Kanal.
Der nRF24-Treiber der Flipper-App gilt selbst als funktionierend, aber unfertig, und das Sniffen im 2,4-GHz-Band rastet gern auf zufälliges Rauschen ein und meldet Adressen, die es gar nicht gibt. Drei Läufe brachten bei mir drei verschiedene Adressen, einmal sogar mit „Unique 0“, also ohne einen einzigen wiederholten Treffer. Eine echte Logitech-Adresse taucht über mehrere Läufe immer wieder auf, das ist das Erkennungszeichen. Mit etwas Geduld, Maus dabei bewegen und jeden Durchlauf sauber mit OK beenden, damit die App überhaupt speichert, hat sich am Ende die Adresse 086A98E03C als die stabile, echte herauskristallisiert. Das Erkennen klappt also, aber es ist selbst schon eine Hürde und nicht der Sofort-Erfolg, den man sich vorstellt.
Die offene Maus lässt sich mit demselben Radio mitschnüffeln, man sieht rohe Pakete. Passwörter sind da natürlich keine drin, nur Bewegung und Klicks. Genau das ist der greifbare Beleg für „die Maus funkt im Klartext“.
Und jetzt der eigentliche Versuch. Ich habe einen einfachen Texteditor auf dem Notebook geöffnet und ihm den Fokus gegeben. Der Mouse Jacker bekam die ersniffte Adresse 086A98E03C und ein harmloses Skript, das nur den Text MOUSEJACK-TEST-0810 tippen sollte, sonst nichts. Der Flipper zeigte „Running duckyscript“.
Mouse Jacker feuert das Skript gegen die Adresse. Auf dem gepatchten Empfänger landet keine einzige Taste.
Im Editor erschien nichts. Keine einzige Taste kam durch. Das ist kein Misserfolg des Versuchs, sondern das erwartete Verhalten an einem Empfänger, der über dem MouseJack-Fix liegt.
Hier bleibe ich bei der Ursache ehrlich, das ist mir wichtig. „Nichts passiert“ allein trennt nicht sauber, ob die Firmware das Paket abgewiesen hat oder ob die ersniffte Adresse nicht exakt der Empfänger war. Um das isoliert zu beweisen, müsste ein bewusst verwundbarer Vergleichs-Empfänger danebenstehen, an dem derselbe Angriff gelingt, und der stand hier nicht daneben. Sicher ist: die klassische MouseJack-Übernahme aus der Ferne, ohne Anfassen, gelang an diesem aktuellen Setup mit RQR12.11 nicht, und das passt dazu, dass fwupd die Firmware als aktuell und über dem Fix meldet. Mehr behaupte ich an dieser Stelle nicht. Das ist gemessen, die Deutung der Ursache ist plausibel, aber nicht bewiesen.
Der Flipper ist nur ein Weg, und ehrlich gesagt der bequeme für unterwegs. Damit klar ist, was sonst noch geht:
jackit. Das klassische MouseJack-Werkzeug, läuft am Laptop und kann mitschreiben.Die Grenze des Flippers ist dabei klar. Er ist gut zum Erkennen und für den MouseJack-Versuch, aber er leitet keine Schlüssel ab und entschlüsselt keine Tastatur. Dafür braucht es Logitacker auf dem nRF52840, und das ist der zweite Teil.
Kein Wischiwaschi, eine klare Rangfolge.
Dazu zwei Handgriffe, die jeder machen kann. Die Firmware der Empfänger aktuell halten, mit fwupdmgr, das ist eine Minute Arbeit. Und Geräte nur in vertrauenswürdiger Umgebung koppeln, nicht im Café und nicht im vollen Großraumbüro, wegen genau dieser Kopplungs-Lücke CVE-2019-13052.
Eine kurze Entscheidungshilfe für das eigene Funk-Setup.
086A98E03C und die Injektion landet nichts, aber ob die Firmware abwies oder die ersniffte Adresse nicht exakt saß, ist ohne einen verwundbaren Vergleichs-Empfänger nicht isoliert nachgewiesen.fwupd ein Firmware-Update bekommen könnte, habe ich nicht geprüft, nur die beiden Empfänger.Im nächsten Teil wird nicht nur erklärt, sondern gemacht. Mit einem nRF52840-Dongle und Logitacker schneide ich den Kopplungsvorgang einer Unifying-Tastatur mit, leite daraus den Schlüssel ab und lese die Eingaben mit. Das ist die Design-Lücke CVE-2019-13052, und sie betrifft auch die aktuelle Firmware, an der der Flipper heute noch abgeprallt ist. Aus „die Tastatur ist verschlüsselt“ wird dann „und trotzdem lesbar, wenn ich im richtigen Moment dabei war“. Das ist der interessante Teil, und er kommt.
Die folgenden Links sind Affiliate-Links (Werbung). Kaufst du darüber, bekomme ich eine kleine Provision, für dich ändert sich am Preis nichts.
Wenn ich irgendwo danebenliege, korrigiert mich gerne, dann lerne ich selbst etwas. Und die Frage an euch zum Schluss: Nutzt ihr Funk oder Kabel, und habt ihr je nachgesehen, ob eure Tastatur überhaupt verschlüsselt funkt? Wie das geht, wisst ihr jetzt. Wenn ihr mögt, dürft ihr mich dazu sehr gerne fragen.
#Alza, the largest online retail store in Czechia (often nicknamed the 'Czech Amazon'), has started selling gaming PCs with #Bazzite pre-installed. Congratulations to the @bazzite and @UniversalBlue communities - this is a big thing!
polkit rules, which is a tool common used for different DEs on various nix systems.I think no one is asking to be able to run the latest Linux 7.** kernel on a 486.
People who are running that hardware are very likely on older versions on Linux (or other retro operating systems) and not looking to run the latest Linux anyway.
However, on the other side of the argument, why remove it? I do not believe there are any pressing security issues with keeping the code that supports those CPUs. If there are problems, they could just be left with notices of what doesn't work for the three people in the world that may affect.
I don't really think it matters either way.
If someone wants to run a current OS on a 486, there's NetBSD.
... but I do not think we should expect to run a current OS on a CPU that old. That's what the 'retro computing' genre is about. Just run an old OS on that hardware.
⋅ « Je ne suis plus programmeur » : Linus Torvalds nous parle des deux seuls outils qu'il utilise désormais
Lors de l'Open Source Summit de Mumbai, Torvalds a abordé les difficultés et les atouts de l'IA dans le noyau, et a expliqué pourquoi Linux ne prend plus en charge les technologies « d'époque ».
Est-ce que ce clavier virtuel n'est pas magnifique ?
Bien sûr que si. Il ne lui manque que deux choses : un thème solarized, et la liaison avec les touches physiques. https://archisman-panigrahi.github.io/vboard/#problem #clavier #virtuel #linux #ubuntu #opensource #software
Latest 𝗩𝗮𝗹𝘂𝗮𝗯𝗹𝗲 𝗡𝗲𝘄𝘀 - 𝟮𝟬𝟮𝟲/𝟬𝟴/𝟭𝟬 (Valuable News - 2026/08/10) available.
https://vermaden.wordpress.com/2026/08/10/valuable-news-2026-08-10/
Past releases: https://vermaden.wordpress.com/news/
#verblog #vernews #news #bsd #freebsd #openbsd #netbsd #linux #unix #zfs #opnsense #ghostbsd #solaris #vermadenday
Drei Tage #Linux und #Open_Source in #Kiel
Vom 17. bis 19. September 2026 dreht sich in Kiel alles um Linux. Die Kieler Open Source und Linux Tage finden bereits zum 24. Mal statt.
Interessierte können dabei Linux kennenlernen und verschiedene Anwendungen erleben. Am 18. und 19. September folgen die beiden Haupttage. Geplant sind Vorträge, Workshops und eine Ausstellung mit verschiedenen Projekten.
Unser geschätztes Community-Mitglied Rainer ist am 28.06.2026 an Hitzetod verstorben. Er hinterlässt seinen 21-jährigen Sohn. Ein Nachruf: https://gnulinux.ch/rainer-ein-nachruf
Chaotic physics auto battler 'Auto Ball Arena' looks like a funny time https://www.gamingonlinux.com/2026/08/chaotic-physics-auto-battler-auto-ball-arena-looks-like-a-funny-time/
Rainer, ein Nachruf
Unser sehr geschätztes Community-Mitglied Rainer ist am 28.06.2026 verstorben. Ein Nachruf.
CachyOS gets improved handheld detection in the August release https://www.gamingonlinux.com/2026/08/cachyos-gets-improved-handheld-detection-in-the-august-release/
Es gibt Dinge, die unter Linux in der breiten Masse vernachlässigt werden. Secure Boot ist so ein Beispiel, TPM ist ein anderes. Vielleicht ist es an der anfangs bescheidenen Unterstützung gescheitert, vieleicht sind die Themen technisch einfach unangenehm, am ehesten aber liegt es daran, dass der Mehrwert für die meisten überschaubar bleibt. Heute nehme ich mir den TPM vor.
Aufgefallen ist mir der Chip zweimal. Das erste Mal, als er durch die Medien ging, weil die Angst groß wurde, Microsoft mache damit unsere IT kaputt, und weil jemand anfing, sehr viele Patente einzureichen. Das zweite Mal viele Jahre später, als TPM 2.0 zur harten Voraussetzung für Windows 11 wurde. Dazwischen lagen zwanzig Jahre, in denen der Chip in fast jedes Endgerät gewandert ist, ohne dass sich jemand dafür interessiert hat.
In Notebooks und Fertig-PCs ist er heute meist fest verlötet. Bei Server-Mainboards kauft man ihn dagegen als Option dazu, ein kleines Steckmodul auf einem eigenen Header. Der Chip in meinem Testgerät ist ein Infineon OPTIGA SLB 9670, und genau dieselbe Chip-Familie sitzt auf den steckbaren TPM-Modulen für Supermicro-Boards. Damit schließt der Beitrag an die BIOS-Serie an, in der ich mich gerade Menü für Menü durch ein Serverboard arbeite.
Erst die Geschichte, dann die Hände in den Chip. Alle Ausgaben hier sind echt und stammen vom 10. August 2026, gemessen auf einem Fujitsu Celsius H780 mit Linux Mint 22.3, Kernel 7.0.0-28-generic und tpm2-tools 5.6. Wo ich etwas nur aus Dokumentation kenne oder wo ich vermute, steht das dabei.
Mitte der neunziger Jahre wollte Intel eine Identifizierungsfunktion direkt in den Prozessor bringen. Der erste Schritt war 1999 die Prozessor-Seriennummer im Pentium III, eine eindeutige Kennung, die jede Software auslesen konnte. Der öffentliche Widerstand war so heftig, dass Intel zurückzog. Das Vorhaben verschwand aber nicht, es suchte Deckung in einem Konsortium. Dieses Detail ist wichtig, weil es das Muster für alles setzt, was danach kam.
1999 gründeten Compaq, HP, IBM, Intel und Microsoft die Trusted Computing Platform Alliance, kurz TCPA. Im April 2003 wurde daraus die Trusted Computing Group, TCG, getragen von AMD, HP, IBM, Intel und Microsoft. Aus einer Firmenidee war ein Industriestandard geworden.
In der Debatte bekam der TPM den Spottnamen „Fritz-Chip“. Der Name ging auf den US-Senator Fritz Hollings aus South Carolina zurück, der den CBDTPA vorantrieb, ein Gesetzesvorhaben, das Kopierschutz in aller Consumer-Elektronik verpflichtend machen sollte. Der Spottname war also ein politischer Vorwurf und keine technische Bezeichnung. Er hat trotzdem länger gehalten als das Gesetz, aus dem er kam.
Ross Anderson von der Universität Cambridge schrieb 2002 und 2003 die Trusted Computing FAQ. Dieses Dokument hat die Debatte stärker geprägt als jede Herstellerankündigung, und es liegt bis heute unverändert online. Sein Kernargument in einem Satz: bei „Trust“ geht es nicht darum, dass der Nutzer dem Rechner vertraut, sondern darum, dass der Rechner dem Nutzer nicht vertraut.
Richard Stallman legte 2002 mit „Can you trust your computer?“ nach und prägte den Gegenbegriff treacherous computing, verräterisches Rechnen. Die FSF benutzt ihn heute noch. IBM antwortete mit einer Gegendarstellung von David Safford, „Clarifying Misinformation on TCPA“.
Die EFF ging einen dritten Weg, und der ist der interessanteste. Seth Schoen veröffentlichte im Oktober 2003 Trusted Computing: Promise and Risk und schlug ein konkretes Feature vor, den Owner Override. Der Eigentümer des Rechners sollte die Attestierung überstimmen können, seinem Bank-Server also erzählen dürfen, sein Opera sei ein Internet Explorer. Die Kritik hatte damit einen Reparaturvorschlag und war nicht bloß dagegen. Die TCG hat den Owner Override nie übernommen.
Microsoft nannte sein eigenes Vorhaben Palladium und benannte es am 24. Januar 2003 in Next-Generation Secure Computing Base um, NGSCB. Der Name wurde harmloser, die Architektur blieb dieselbe.
Im Dezember 2001 wurden Microsoft zwei Patente erteilt. Das eine ist US 6,330,670, „Digital rights management operating system“, angemeldet im Januar 1999, erteilt am 11. Dezember 2001, als Erfinder Paul England, John DeTreville und Butler Lampson. Das andere ist US 6,327,652, „Loading and identifying a digital rights management operating system“. Zusammen decken sie viele Grundelemente eines vertrauenswürdigen Betriebssystems ab.
Die Sorge dahinter war handfest und nicht abwegig. Wenn Palladium unter dieses Patent fällt, dann verletzt jeder unabhängige Nachbau das Patent. Also jeder einzelne Entwickler, jedes Open-Source-Projekt, jeder Wettbewerber. Ohne Lizenz von Microsoft kein freies Trusted Computing. Kritiker beschrieben das damals als Kombination aus Patentschutz und faktischem Zwang zur Nutzung, mit deutlich wettbewerbsrechtlichem Geschmack.
Der Gegenzug kam im August 2002 von einem Cypherpunk, der unter dem Namen Lucky Green auftrat. Er meldete selbst ein Patent an, und zwar auf Verfahren, mit denen Software auf einer Palladium- oder TCPA-Plattform gegen Kopieren geschützt werden kann. Der Zweck war offen defensiv: wer die Ansprüche hält, kann verhindern, dass genau diese Anwendungen ausgerollt werden. Auf einem Panel der USENIX Security wurde er gefragt, ob Microsoft nicht einfach Prior Art geltend machen könne. Sein Argument: Prior Art müsste unter Eid erklärt werden, und nach Jahren Arbeit am Projekt und einem ausführlichen eigenen DRM-Patent sei kaum vorstellbar, dem Palladium-Team wäre relevante Prior Art entgangen. Im September 2002 hielt er zusätzlich einen Vortrag mit dem Titel „TCPA: the mother(board) of all Big Brothers“.
Die Auflösung ist unbequemer, als es beide Lager damals gedacht haben. NGSCB ist gescheitert, aber nicht an den Patenten. Im Mai 2004 stellte Microsoft die vollständige Architektur zurück, und die Begründung war wirtschaftlich: die Hardware-Landschaft war nicht reif, und vor allem waren die unabhängigen Softwarehersteller nicht bereit, ihre Anwendungen auf die nötigen neuen APIs umzuschreiben. Curtained Memory und der Nexus-Kernel fielen weg, die TPM-Unterstützung blieb übrig.
Der Chip selbst wurde offen. Nach TPM 1.2 kam TPM 2.0, veröffentlicht 2014 und als ISO/IEC 11889 internationaler Standard. Die TCG stellt die Referenz-Implementierung unter eine royalty-free Copyright-Lizenz, das Patentregime zwischen den Mitgliedern ist RAND. Damit war der Nachbau möglich und dem Patenthebel die Grundlage entzogen.
Linux hat es dann einfach implementiert. Der Treiber tpm_tis sitzt im Kernel, IBM brachte TrouSerS für TPM 1.2, für TPM 2.0 entstand mit Beteiligung von Intel und TCG der tpm2-tss-Stack samt tpm2-tools. Seit Linux 4.12 gibt es den Resource Manager im Kernel unter /dev/tpmrm0, wodurch der frühere Userspace-Daemon tpm2-abrmd für die meisten Fälle überflüssig wurde. Nichts davon brauchte eine Lizenz von Microsoft.
Die befürchtete Abriegelung kam trotzdem, nur von woanders. Kein einziger der Horror-Fälle aus der TCPA-FAQ wurde durch den TPM Realität. Wo Nutzer heute tatsächlich ausgesperrt werden, steckt eine andere Technik dahinter: Widevine beim Streaming, Play Integrity und früher SafetyNet bei Android, verriegelte Bootloader bei Telefonen, die Secure Enclave bei Apple, Attestierung bei Spielkonsolen. Der TPM wurde stattdessen ein langweiliger Schlüsselspeicher.
Ein Teil der Angst hat sich dann doch erfüllt, nur in anderer Form. Windows 11 macht TPM 2.0 zur harten Voraussetzung, und damit gilt funktionierende Hardware plötzlich als nicht unterstützt. Das ist keine DRM-Geschichte, sondern eine Elektroschrott- und Lebensdauer-Geschichte. Der Mechanismus ist aber derselbe: eine Hardware-Eigenschaft entscheidet, was auf dem Gerät laufen darf.
Und dann kam der Kreis zurück. 2023 schlugen Chrome-Entwickler bei Google die Web Environment Integrity API vor. Der Browser sollte sich von einer Vertrauensinstanz einen Nachweis über seine Umgebung ausstellen lassen, den Webseiten dann prüfen können. Das ist praktisch Wort für Wort das Szenario, vor dem Anderson zwanzig Jahre früher gewarnt hatte, nur ohne TPM. Nach massivem Widerstand zog Google den Vorschlag im November 2023 für Chromium auf dem Desktop zurück.
Das ist die Frage, mit der ich in die Recherche gegangen bin, und die Antwort ist zweiteilig. Die defensive Patentanmeldung hat, soweit öffentlich nachvollziehbar, nichts bewirkt. Es gibt kein erteiltes Patent, das man heute als den Grund benennen könnte, warum TCPA-DRM nicht kam. Der Gegenzug war eine wirksame Geste, aber kein wirksames Rechtsmittel. Gewirkt hat etwas anderes: erstens die Wirtschaftlichkeit, weil die Softwarehersteller nicht umschreiben wollten und es damit kein Produkt gab, zweitens die Öffnung der Spezifikation und die ISO-Standardisierung, die den Nachbau erlaubten.
Der zweite Teil verdient Anerkennung. Die Kampagne selbst hat gewirkt, nur nicht juristisch, sondern politisch. Der Lärm um TCPA hat plausibel dazu beigetragen, dass die TCG die Spezifikation öffnete, die aggressivsten Ideen fallen ließ und dass Fernattestierung zwanzig Jahre lang aus dem Consumer-Web draußen blieb. Als der Versuch 2023 mit Web Environment Integrity wiederkam, war das Muster des Widerstands eingeübt und der Vorschlag nach Monaten weg. Wichtig dabei: das ist meine Deutung. Die Kausalkette von der Kampagne 2002 zur offenen Spezifikation 2014 ist nirgends dokumentiert, das ist ein Plausibilitätsargument und keine Messung.
Bleibt der Eindruck: die Angst war berechtigt und falsch adressiert. Berechtigt, weil die Mechanik der Fernattestierung tatsächlich genau das kann, was befürchtet wurde. Falsch adressiert, weil der TPM davon der harmloseste Teil war und am Ende zu dem wurde, was jetzt kommt. Ein langsamer, sturer kleiner Chip, der Schlüssel nicht herausgibt.
Bevor ihr irgendetwas installiert: der Kernel weiß längst, ob da ein Chip sitzt. Er sagt es beim Start.
# dmesg | grep -i tpm [ 0.000000] efi: ACPI=0x7990e000 ACPI 2.0=0x7990e014 TPMFinalLog=0x713bb000 SMBIOS=0x7035e000 SMBIOS 3.0=0x7035b000 ESRT=0x70358c98 MEMATTR=0x5f5c2018 MOKvar=0x70323000 INITRD=0x592eda98 RNG=0x798ce018 TPMEventLog=0x798c0018 [ 0.010528] ACPI: SSDT 0x0000000079905000 000554 (v01 INTEL Tpm2Tabl 00001000 INTL 20160422) [ 0.010531] ACPI: TPM2 0x0000000079904000 000034 (v04 FUJ PC 01170000 FUJ 00000001) [ 0.010607] ACPI: Reserving TPM2 table memory at [mem 0x79904000-0x79904033] [ 0.569145] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1B, rev-id 16)
Drei Dinge stehen da drin. In der ersten Zeile übergibt UEFI die Adresse des Event-Logs, TPMEventLog=0x798c0018, also der Liste aller Messungen aus dem Startvorgang. Dann die ACPI-Tabelle TPM2, über die die Firmware mitteilt, wo und wie der Chip ansprechbar ist. Und in der letzten Zeile das Ergebnis: der Treiber tpm_tis hat unter der ACPI-Kennung MSFT0101 ein TPM der Version 2.0 gefunden.
Danach existieren zwei Gerätedateien, und der Unterschied zwischen ihnen ist wichtig.
# ls -la /dev/tpm* crw-rw---- 1 tss root 10, 224 Aug 10 09:31 /dev/tpm0 crw-rw---- 1 tss tss 252, 65536 Aug 10 09:31 /dev/tpmrm0
/dev/tpm0 ist der rohe Zugang zum Chip. Daran kann genau ein Prozess gleichzeitig arbeiten, und wer die Ressourcen im Chip verwaltet, ist selbst dafür verantwortlich. /dev/tpmrm0 geht über den Resource Manager im Kernel, der das Ein- und Auslagern der Schlüssel-Kontexte übernimmt und mehrere Nutzer nebeneinander erlaubt. In der Praxis nimmt man immer /dev/tpmrm0, und die tpm2-tools tun das von sich aus.
Die Version steht ebenfalls im sysfs, und die solltet ihr prüfen, bevor ihr weiterlest.
# ls /sys/class/tpm/tpm0/ dev device pcr-sha1 pcr-sha256 power ppi subsystem tpm_version_major uevent # cat /sys/class/tpm/tpm0/tpm_version_major 2
Eine 2 heißt TPM 2.0 und alles in diesem Beitrag gilt. Eine 1 heißt TPM 1.2, und dann gilt fast nichts davon, weil es ein anderer Standard mit einem anderen Software-Stack ist. Nebenbei verrät das Verzeichnis noch etwas: es gibt eine pcr-sha1– und eine pcr-sha256-Bank, der Chip führt die Messregister also in zwei Hash-Verfahren parallel.
Und weil der Kernel das ohnehin bereitstellt, kommt hier der erste kleine Aha-Moment, noch ganz ohne installiertes Paket. Die Messwerte des Startvorgangs liegen als Dateien herum.
# cat /sys/class/tpm/tpm0/pcr-sha256/0 7DE4ABE4ED8D8291D9B58D71F3B2988F5DA81EBE58D4AE518012E877FA1E04F1 # cat /sys/class/tpm/tpm0/pcr-sha256/1 41CBF90AFF5CEEFAA9E9C52E7A3D5B4C8518EA65861C753AF8DB005C5330F53F # cat /sys/class/tpm/tpm0/pcr-sha256/7 F5841722D3DCC8886F14E92CA2D7304932CF17E2247A85D3B7BB41FE2C02CB4E
Das sind drei der Platform Configuration Register, kurz PCR. Merkt euch den Wert von PCR 7, der taucht später mehrfach auf.
Das ist eine häufige Fehldiagnose, deshalb steht sie hier als eigener Punkt. Auf meinem Testsystem liefert lsmod | grep tpm nämlich schlicht nichts. Kein Modul, keine Ausgabe. Der Chip arbeitet trotzdem einwandfrei, weil tpm_tis in diesen Kernel fest eingebaut ist und deshalb in der Modulliste gar nicht erscheinen kann. Wer nach lsmod urteilt, hält ein funktionierendes TPM für abwesend. Fragt stattdessen nach der Treiberbindung.
# ls -l /sys/class/tpm/tpm0/device/driver lrwxrwxrwx 1 root root 0 Aug 10 09:31 /sys/class/tpm/tpm0/device/driver -> ../../../bus/platform/drivers/tpm_tis # cat /sys/class/tpm/tpm0/device/modalias acpi:MSFT0101:MSFT0101:
Der Symlink zeigt, welcher Treiber das Gerät tatsächlich bedient. Das ist die Antwort auf die Frage, die lsmod nicht beantworten kann.
Bleibt dmesg stumm und existiert kein /dev/tpm0, dann gibt es drei realistische Ursachen, in dieser Reihenfolge.
Zwei Details aus dem Firmware-Setup, die hier gut passen. Erstens sind SHA-1-Bank und SHA-256-Bank oft getrennt schaltbar. Dass mein Testgerät beide Banks führt, ist also keine Selbstverständlichkeit, sondern eine Einstellung. Zweitens steht in demselben Menü meist ein TPM Clear. Finger weg, solange ihr nicht genau wisst, was daran hängt. Ein Clear wirft die Hierarchien im Chip weg, und damit ist alles, was gegen diesen Chip versiegelt war, unwiederbringlich verloren. Auch der BitLocker-Schlüssel eines parallel installierten Windows.
Es hilft, den Stack einmal von unten nach oben gesehen zu haben. Sonst installiert man ein Paket und wundert sich später, welche der vielen Bibliotheken wofür zuständig ist.
Der Weg eines Kommandos vom Werkzeug bis in den Chip. Über /dev/tpm0 arbeitet genau ein Prozess, über /dev/tpmrm0 mehrere.
Ganz unten der Chip, darüber der Kerneltreiber, darüber die beiden Gerätedateien. Erst dann kommt Userspace: die TCTI-Schicht kümmert sich um den Transport zur Gerätedatei, die ESAPI-Schicht um Kommandos, Sessions und HMAC-Absicherung. Ganz oben die drei Werkzeuge, die man tatsächlich in die Hand nimmt. Für die Pflichtausstattung reichen zwei Pakete.
Paket
Wofür
tpm2-tools
die tpm2_*-Kommandozeile, alles in diesem Beitrag läuft darüber
libtss2-*
der TSS2-Stack darunter, meist schon über systemd installiert
Dazu zwei optionale, die ich beide benutze, weil sie den Chip an Software anschließen, die von TPM nichts wissen muss.
Paket
Wofür
tpm2-openssl
Provider für OpenSSL 3, Schlüssel im Chip über die gewohnten openssl-Aufrufe
libtpm2-pkcs11-1 und libtpm2-pkcs11-tools
PKCS#11-Schnittstelle, damit SSH und Browser den Chip nutzen können
Und zwei, die ich ausdrücklich nicht installiere.
Paket
Warum nicht
tpm2-abrmd
Resource Manager im Userspace mit D-Bus-Schnittstelle. Seit Linux 4.12 macht der Kernel das über /dev/tpmrm0 selbst. Das Projekt ist nicht tot, es wird weiter gepflegt und ist für Simulatoren, Tests und manche Integrationen nach wie vor sinnvoll. Beides parallel zu betreiben führt aber zu Konflikten, deshalb hier bewusst nur der Kernel-Weg.
clevis, clevis-tpm2
binden ausschließlich LUKS2-Header. Ohne LUKS nutzlos, und auf diesem Gerät gibt es kein LUKS.
# apt-get install -y tpm2-tools tpm2-openssl libtpm2-pkcs11-1 libtpm2-pkcs11-tools
Auf meinem Mint 22.3 sind damit tpm2-tools 5.6, tpm2-openssl 1.2.0 und tpm2-pkcs11 1.9.0 gelandet. Der TSS2-Stack war schon da, den bringt systemd mit. Auf Fedora und RHEL heißt das Hauptpaket ebenfalls tpm2-tools, dazu tpm2-tss, unter Arch genauso tpm2-tools mit tpm2-tss als Abhängigkeit.
Eine Kleinigkeit, über die jeder beim ersten Mal stolpert: /dev/tpmrm0 gehört tss:tss. Entweder arbeitet ihr mit sudo, oder ihr nehmt euren Benutzer in die Gruppe tss auf. Die Rechte in der Ausgabe von ls -la /dev/tpm* weiter oben sagen genau das, crw-rw---- und keine Rechte für alle anderen.
Es gibt drei Stufen, aufsteigend im Aussagewert. Die erste ist der Lebenstest.
# tpm2_getrandom --hex 16
Kommen 16 Bytes zurück, dann funktioniert die ganze Kette von der Bibliothek über die Gerätedatei bis in die Hardware. Der Zufall kommt dabei wirklich aus dem Chip, und er ist gemächlich, dazu unten die Zahlen. Stufe zwei ist tpm2_getcap properties-fixed, da sagt der Chip, wer er ist. Stufe drei ist tpm2_getcap properties-variable, da sagt er, in welchem Zustand er ist. Beide sind gleich interessant, nur aus unterschiedlichen Gründen.
# tpm2_getcap properties-fixed TPM2_PT_FAMILY_INDICATOR: raw: 0x322E3000 value: "2.0" TPM2_PT_LEVEL: raw: 0 TPM2_PT_REVISION: raw: 0x74 value: 1.16 TPM2_PT_DAY_OF_YEAR: raw: 0x109 TPM2_PT_YEAR: raw: 0x7E0 TPM2_PT_MANUFACTURER: raw: 0x49465800 value: "IFX" TPM2_PT_VENDOR_STRING_1: raw: 0x534C4239 value: "SLB9" TPM2_PT_VENDOR_STRING_2: raw: 0x36373000 value: "670" TPM2_PT_VENDOR_TPM_TYPE: raw: 0x0 TPM2_PT_FIRMWARE_VERSION_1: raw: 0x7003F TPM2_PT_FIRMWARE_VERSION_2: raw: 0xD1900 TPM2_PT_INPUT_BUFFER: raw: 0x400 TPM2_PT_HR_TRANSIENT_MIN: raw: 0x3 TPM2_PT_HR_PERSISTENT_MIN: raw: 0x7 TPM2_PT_ACTIVE_SESSIONS_MAX: raw: 0x40 TPM2_PT_PCR_COUNT: raw: 0x18 TPM2_PT_NV_COUNTERS_MAX: raw: 0x8 TPM2_PT_NV_INDEX_MAX: raw: 0x680
Rohe Hex-Werte, die plötzlich Sinn ergeben, wenn man sie einmal übersetzt. Das ist einer meiner Lieblingsmomente an dem ganzen Thema.
TPM2_PT_MANUFACTURER: 0x49465800 ist ASCII IFX, also Infineon.VENDOR_STRING_1 und _2 ergeben zusammengesetzt SLB9 und 670, also ein Infineon OPTIGA SLB 9670.TPM2_PT_REVISION: 0x74 ist Spezifikations-Revision 1.16, datiert auf Tag 265 des Jahres 2016.FIRMWARE_VERSION_1: 0x7003F ist Firmware 7.63.TPM2_PT_PCR_COUNT: 0x18 sind 24 PCRs.TPM2_PT_HR_PERSISTENT_MIN: 0x7 heißt, dass nur sieben persistente Schlüsselplätze garantiert sind. Diese Zahl wird später richtig wichtig.TPM2_PT_NV_COUNTERS_MAX: 0x8 sind genau acht monotone Zähler.Und dann TPM2_PT_NV_INDEX_MAX: 0x680, also 1664. Hier lauert eine Fehldeutung, die in vielen Texten steht: das ist nicht der gesamte NV-Speicher des Chips, sondern die maximale Größe eines einzelnen NV-Index-Datenbereichs. Wie viel NV insgesamt frei ist, sagt diese Eigenschaft überhaupt nicht. Das steht im Datenblatt des Herstellers und liegt bei diesem Chip im Bereich einiger Kilobyte. Ich habe es nicht ermittelt, also behaupte ich hier auch keine Gesamtgröße.
Diese Unterscheidung ist keine Nebensächlichkeit, und man liest sie direkt am Hersteller-String ab.
Hersteller-String
Was es ist
IFX, NTC, STM, IBM
diskreter Chip auf dem Board oder auf einem Steckmodul
INTC
Intel Platform Trust Technology, läuft in der Management Engine
AMD
AMD fTPM, läuft im Platform Security Processor
Ein diskreter Chip hängt an einem physischen Bus, den man anzapfen kann. Ein fTPM hat diesen Bus nicht, dafür hat er andere Probleme. Beides kommt im Angriffs-Abschnitt zurück.
Für mein Testsystem ist die Sache klar: IFX, also ein diskreter Infineon SLB 9670. Aus Linux-Sicht hängt er als memory-mapped TIS an der ACPI-Kennung MSFT0101 und wird von tpm_tis bedient. Ob die physische Leitung dahinter LPC oder SPI ist, lässt sich aus dem Betriebssystem allein nicht entscheiden, weil der PCH einen SPI-TPM auch als MMIO-TIS durchreichen kann. Das ist also plausibel, aber nicht gemessen. Die einzige echte Antwort wäre ein Foto vom offenen Gerät, und dafür müsste das Notebook auseinander.
Jetzt der Zustand, und das ist der wichtigste einzelne Abschnitt des ganzen Beitrags, weil er später alles trägt.
# tpm2_getcap properties-variable TPM2_PT_PERMANENT: ownerAuthSet: 0 endorsementAuthSet: 0 TPM2_PT_STARTUP_CLEAR: phEnable: 1 shEnable: 1 TPM2_PT_LOCKOUT_COUNTER: 0x0 TPM2_PT_MAX_AUTH_FAIL: 0x20 TPM2_PT_LOCKOUT_INTERVAL: 0x1C20 TPM2_PT_LOCKOUT_RECOVERY: 0x15180
Diese drei Werte werden fast immer verwechselt, also einmal sauber.
MAX_AUTH_FAIL: 0x20 sind 32 fehlgeschlagene Authentifizierungsversuche, danach sperrt der Chip.LOCKOUT_INTERVAL: 0x1C20 sind 7200 Sekunden, also 2 Stunden. Nach dieser Zeit wird der Fehlerzähler um genau eins verringert.LOCKOUT_RECOVERY: 0x15180 sind 86400 Sekunden, also 24 Stunden. Das ist aber nicht die Erholung des normalen Zählers, sondern die Wartezeit, bevor nach einem fehlgeschlagenen Versuch mit lockoutAuth erneut mit lockoutAuth gearbeitet werden darf.Einmal vorgerechnet, weil die Zahlen so viel deutlicher sind: ein einzelner Fehlversuch altert nach 2 Stunden aus. Von 32 verbrauchten Versuchen zurück auf null dauert also 64 Stunden und nicht 24.
Und das ist der eigentliche Mehrwert des ganzen Bauteils. Der Chip zählt Fehlversuche und sperrt. Deshalb reicht bei einem TPM eine sechsstellige PIN, wo ein Passwort-Hash auf der Platte eine Passphrase mit hoher Entropie bräuchte. Wer die Platte hat, probiert Millionen Passphrasen pro Sekunde durch. Wer vor dem TPM sitzt, bekommt 32 Versuche und darf dann zwei Stunden warten, um einen einzigen zurückzubekommen. Die Stärke kommt nicht aus dem Geheimnis, sie kommt aus der Hardware, die das Raten unterbindet. Fast jeder Text über TPM lässt diesen Punkt weg, und dann klingt die kurze PIN nach Leichtsinn.
Jetzt kommt der Teil, den ich in keinem der üblichen TPM-Howtos gesehen habe. In dem Chip liegt ab Werk ein Zertifikat, ausgestellt vom Hersteller auf den Endorsement Key. Erst die Liste der belegten NV-Indizes, dann das Zertifikat selbst.
# tpm2_getcap handles-nv-index
- 0x1410001
- 0x1410002
- 0x1410003
- 0x1800100
- 0x1810008
- 0x1820002
- 0x1880001
- 0x1880011
- 0x1C00002
- 0x1C0000A
- 0x1C10102
- 0x1C10103
- 0x1C10104
- 0x1C10105
# tpm2_nvreadpublic 0x1C00002
0x1c00002:
name: 000bcfecbb34d24d7356b39b8a0fb0c82c7b052a0335fc8ca2fa602cf1395e5ff804
hash algorithm:
friendly: sha256
value: 0xB
attributes:
friendly: ppwrite|writedefine|ppread|ownerread|authread|no_da|written|platformcreate
value: 0x62072001
size: 11840x1C00002 ist der TCG-Standardindex für das RSA-EK-Zertifikat, 0x1C0000A derselbe für ECC. 1184 Bytes, das passt zu einem X.509-Zertifikat. Also raus damit und mit gewohnten Werkzeugen anschauen.
# tpm2_nvread 0x1C00002 -o ek_rsa.der WARN: Reading full size of the NV index # openssl x509 -inform der -in ek_rsa.der -noout -subject -issuer -dates subject= issuer=C = DE, O = Infineon Technologies AG, OU = OPTIGA(TM) TPM2.0, CN = Infineon OPTIGA(TM) RSA Manufacturing CA 035 notBefore=Aug 21 14:09:40 2019 GMT notAfter=Aug 21 14:09:40 2034 GMT
Zwei Dinge fallen sofort auf. Der Aussteller ist eine echte Hersteller-CA, „Infineon OPTIGA(TM) RSA Manufacturing CA 035“, und Infineon hat diesen Chip am 21. August 2019 signiert. Und der Subject ist leer. Ein TPM hat keinen Namen. Die Identität steckt woanders, nämlich in den Erweiterungen.
# openssl x509 -inform der -in ek_rsa.der -noout -text
X509v3 Key Usage: critical
Key Encipherment
X509v3 Subject Alternative Name: critical
DirName:/2.23.133.2.1=id:49465800/2.23.133.2.2=SLB 9670 TPM2.0/2.23.133.2.3=id:073f
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 CRL Distribution Points:
Full Name:
URI:http://pki.infineon.com/OptigaRsaMfrCA035/OptigaRsaMfrCA035.crl
X509v3 Certificate Policies:
Policy: 1.2.276.0.68.1.20.1
X509v3 Extended Key Usage:
2.23.133.8.1Der Subject Alternative Name trägt drei TCG-OIDs, und die decken sich exakt mit dem, was der Chip vorher selbst über sich gesagt hat. 2.23.133.2.1 ist der Hersteller, id:49465800, also wieder IFX. 2.23.133.2.2 ist das Modell, SLB 9670 TPM2.0. 2.23.133.2.3 ist die Firmware, id:073f, was genau die 7.63 von oben bestätigt. Die Extended Key Usage 2.23.133.8.1 ist tcg-kp-EKCertificate, dieses Zertifikat darf also nichts anderes sein als der Nachweis eines Endorsement Keys. Und Infineon veröffentlicht dazu eine Sperrliste.
Was ich hier bewusst weglasse, sind die Zertifikats-Seriennummer und der öffentliche EK-Schlüssel. Beide kennzeichnen dauerhaft und eindeutig genau dieses eine Notebook, und die TCG behandelt den EK aus genau diesem Grund als datenschutzrelevant. Damit erklärt sich beiläufig, warum es überhaupt Attestierungsschlüssel gibt: damit man für eine Attestierung nicht jedes Mal die dauerhafte Chip-Identität vorzeigen muss.
Das hier ist die Wurzel, auf der Fernattestierung aufsetzt. Ein Prüfer kann feststellen, dass in dieser Maschine ein echter, von Infineon signierter TPM sitzt, ohne dem Betriebssystem eine einzige Zeile zu glauben. Genau formuliert beweist das Zertifikat aber nur die Echtheit des Chips. Dass ein bestimmter Attestierungsschlüssel wirklich in diesem Chip liegt, ist ein zusätzlicher Schritt, und den nehme ich mir im Server-Teil vor.
Bevor irgendein Anwendungsfall kommt: ein TPM bietet im Kern nur drei Dinge an. Alles, was danach als Feature verkauft wird, ist eine Kombination daraus.
fixedTPM wird im Chip erzeugt und verlässt ihn nie. Man kann ihn benutzen, man kann ihn nicht kopieren.neu = hash(alt || messwert). Bei den Registern, auf die es ankommt, nämlich PCR 0 bis 15 auf einer PC-Client-Plattform, geht es nur über einen Neustart zurück. Deshalb kann man die Boot-Historie nicht nachträglich fälschen. Zwei Ausnahmen gehören dazu, sonst wird es ungenau: PCR 16 und PCR 23 sind zur Laufzeit zurücksetzbar. PCR 16 ist ausdrücklich als Debug-Register vorgesehen, und genau deshalb benutze ich es weiter unten für die Demonstration. Gegen ein zurücksetzbares PCR versiegelt niemand etwas Echtes.Dazu kommen als Nebenfunktionen die schon erwähnten monotonen Zähler, ein winziger NV-Speicher, ein Zufallszahlengenerator und die Lockout-Logik von oben.
Und weil es das häufigste Missverständnis überhaupt ist, gleich früh und deutlich: ein TPM ist kein Krypto-Beschleuniger, keine Secure Enclave mit eigener Rechenumgebung und kein Schutz gegen einen kompromittierten laufenden Kernel. Er schützt Schlüssel im Ruhezustand und er misst den Startvorgang. Wenn der laufende Kernel übernommen ist, benutzt der Angreifer den TPM einfach mit, ganz höflich über dieselbe Schnittstelle.
Genug Theorie, jetzt der Beweis. Ich baue eine Policy aus dem aktuellen Zustand von PCR 7, erzeuge einen Primary Key im Chip und versiegle damit ein Geheimnis.
# tpm2_startauthsession -S session.ctx # tpm2_policypcr -S session.ctx -l sha256:7 -L pcr7.policy 76a916a90c7c0906a930cd5cd3e501cb43007331a8b7444222d8aa4c5475f53f # tpm2_flushcontext session.ctx
Der Hash ist die Policy, und er hängt am Inhalt von PCR 7. Dann der Schlüssel, und ich messe gleich mit, weil die Zahl später noch gebraucht wird.
# time tpm2_createprimary -C o -g sha256 -G ecc256 -c primary.ctx value: aes raw: 0x6 sym-mode: value: cfb raw: 0x43 sym-keybits: 128 x: 2be770ed8755bf6f454cb1fea18ba722526d1ee3e9080ab94edda0480b73529d y: af840b9c69dcac45c9aa3a04085ced5c750bfef5e70c470e4481592ff3026dc7 real 0m0.537s
# echo -n "geheim-nur-bei-diesem-boot" > secret.txt # tpm2_create -C primary.ctx -g sha256 -u seal.pub -r seal.priv -L pcr7.policy -i secret.txt keyedhash: ef1dc0bffd0d7529a6d0b44f79bdd14fb8829995c998ffb14d88936f82d3e9f3 authorization policy: 76a916a90c7c0906a930cd5cd3e501cb43007331a8b7444222d8aa4c5475f53f # tpm2_load -C primary.ctx -u seal.pub -r seal.priv -c seal.ctx name: 000b50ac9b197a947de6d2ff47d9d80748d4fa1453754bee5f3a8627e307cf8c84fd # tpm2_startauthsession --policy-session -S s.ctx # tpm2_policypcr -S s.ctx -l sha256:7 # tpm2_unseal -p session:s.ctx -c seal.ctx geheim-nur-bei-diesem-boot
Das Geheimnis kommt zurück, weil PCR 7 noch genau den Wert hat, gegen den versiegelt wurde. Schön, beweist aber noch nichts. Interessant wird es erst, wenn sich die Messung ändert.
Dafür wechsle ich auf PCR 16, das Debug-Register. Der Grund ist praktisch: PCR 16 lässt sich ohne Neustart und ohne Firmware-Änderung erweitern, damit ist die Demonstration in einer einzigen Terminal-Sitzung reproduzierbar. Der Mechanismus ist derselbe wie bei PCR 7.
# tpm2_pcrread sha256:16
sha256:
16: 0x0000000000000000000000000000000000000000000000000000000000000000
# tpm2_startauthsession -S t.ctx
# tpm2_policypcr -S t.ctx -l sha256:16 -L pcr16.policy
# tpm2_flushcontext t.ctx
# echo -n "unlock-key-material" > s16.txt
# tpm2_create -C primary.ctx -g sha256 -u s16.pub -r s16.priv -L pcr16.policy -i s16.txt
# tpm2_load -C primary.ctx -u s16.pub -r s16.priv -c s16.ctx# tpm2_startauthsession --policy-session -S p.ctx # tpm2_policypcr -S p.ctx -l sha256:16 # tpm2_unseal -p session:p.ctx -c s16.ctx unlock-key-material # tpm2_flushcontext p.ctx
Und jetzt ändere ich die Messung. Das folgende Kommando ist genau das, was ein ausgetauschter Bootloader auch täte, nur mit einem selbstgewählten Messwert.
# tpm2_pcrextend 16:sha256=$(echo -n "boese-veraenderung" | sha256sum | cut -d" " -f1)
# tpm2_pcrread sha256:16
sha256:
16: 0xC6FE6738E4DDC92E1C8E18E290469CCB6B6D305BC1295C4F72B85D0922C25930Derselbe Unseal-Aufruf wie zwei Blöcke vorher, Zeichen für Zeichen identisch:
# tpm2_startauthsession --policy-session -S p2.ctx # tpm2_policypcr -S p2.ctx -l sha256:16 # tpm2_unseal -p session:p2.ctx -c s16.ctx WARNING:esys:src/tss2-esys/api/Esys_Unseal.c:295:Esys_Unseal_Finish() Received TPM Error ERROR:esys:src/tss2-esys/api/Esys_Unseal.c:98:Esys_Unseal() Esys Finish ErrorCode (0x0000099d) ERROR: Esys_Unseal(0x99D) - tpm:session(1):a policy check failed ERROR: Unable to run tpm2_unseal exit=1
0x99D ist TPM_RC_POLICY_FAIL. Das Geheimnis liegt noch im Blob, es ist nicht gelöscht, es ist nur unerreichbar, solange PCR 16 diesen Wert trägt. Und jetzt der Punkt, auf den es mir ankommt: das ist keine Zugriffskontrolle im Betriebssystem. Da hat kein Dateisystem eine Berechtigung geprüft und kein Dienst eine Regel angewendet. Das ist eine Weigerung der Hardware. Sudo hilft hier nicht, weil root für diese Entscheidung überhaupt nicht zuständig ist.
Wer was misst, und was am Ende über das Entsiegeln entscheidet.
Das ist die Frage, die jeder aufmerksame Leser an dieser Stelle stellt, und sie ist völlig berechtigt. Bei PCR 16 geht das tatsächlich, ohne Neustart.
# tpm2_pcrread sha256:16
sha256:
16: 0xC6FE6738E4DDC92E1C8E18E290469CCB6B6D305BC1295C4F72B85D0922C25930
# tpm2_pcrreset 16
# echo $?
0
# tpm2_pcrread sha256:16
sha256:
16: 0x0000000000000000000000000000000000000000000000000000000000000000Dasselbe Kommando gegen PCR 7 lehnt die Hardware ab.
# tpm2_pcrreset 7 ERROR: Esys_PCR_Reset(0x907) - tpm:warn(2.0): bad locality ERROR: Could not reset PCR index: 7 ERROR: Unable to run tpm2_pcrreset
0x907 ist TPM_RC_LOCALITY. Der Chip unterscheidet, aus welcher Vertrauensstufe ein Kommando kommt, und root auf dem laufenden System hat die Locality, die zum Zurücksetzen eines Boot-Mess-Registers nötig wäre, gar nicht. Das ist der ganze Unterschied zwischen einem Debug-Register und einem Boot-Mess-Register, ausgedrückt in einer Fehlermeldung.
PCR 16 lässt sich zurücksetzen, PCR 7 nicht. Root ändert daran nichts.
Der Klassiker am Arbeitsplatz ist LUKS2 zusammen mit systemd-cryptenroll. Der Nutzen ist echt: das Notebook startet ohne Eingabe, und ein ausgebautes Laufwerk bleibt trotzdem verschlüsselt.
# systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7 --tpm2-with-pin=yes /dev/nvme0n1pX
Ehrlichkeit an dieser Stelle: dieses Kommando habe ich nicht ausgeführt, und ich konnte es auch nicht. Die Maschine hat gar kein LUKS, die Wurzel liegt auf ZFS mit der ZFS-eigenen Verschlüsselung, aes-256-gcm. Der Befehl steht hier also als dokumentiertes Verfahren nach Manpage und nicht als Messung.
Das Wichtigste daran ist das --tpm2-with-pin=yes. Ohne PIN entsperrt sich das Gerät für jeden, der es einschaltet, und die Festplattenverschlüsselung schützt dann nur noch gegen den Ausbau der SSD, nicht gegen den Diebstahl des Rechners. Mit PIN greift die Lockout-Logik von weiter oben, und genau dadurch wird eine kurze PIN sicher.
Bei der Auswahl der PCRs gibt es dann einen echten Zielkonflikt, der meist verschwiegen wird.
systemd-stub misst dort das UKI hinein, danach schreibt systemd-pcrphase im Verlauf des Startvorgangs weitere Phasen-Messungen in dasselbe Register. Der Wert von PCR 11 hängt also davon ab, in welcher Boot-Phase man ihn liest, und genau darauf beruht der Trick, dass ein Geheimnis nur im initrd aufgeht und im laufenden System nicht mehr.Wer welches Register wofür benutzt, hat die UAPI Group in einer PCR-Registry für Linux zusammengetragen. Das ist die Tabelle, die man beim Basteln offen haben will.
Eine Lücke betrifft ziemlich viele Linux-Nutzer, deshalb sage ich sie deutlich: systemd-cryptenroll und clevis luks bind schreiben beide in einen LUKS2-Header. Wer seine Wurzel auf ZFS-Native-Encryption hat, hat keinen. Upstream-ZFS bringt keine TPM-Integration mit. Ein TPM-gestütztes Entsperren bräuchte dort ein eigenes tpm2_unseal, das zfs load-key füttert, gebaut ins initramfs. Das ist eine echte offene Baustelle und kein Rezept, das ich hier nebenbei hinschreibe.
Das ist mein Lieblings-Anwendungsfall am Arbeitsplatz, weil der Nutzen in einem Satz erklärt ist. Ein Angreifer mit Lesezugriff auf ~/.ssh bekommt nichts Verwendbares. Der Schlüssel kann die Maschine nicht verlassen. Er ist nicht gestohlen, er ist an das Blech gebunden.
# export TPM2_PKCS11_STORE=/root/tpm-demo/pkcs11store # mkdir -p $TPM2_PKCS11_STORE # tpm2_ptool init --path=$TPM2_PKCS11_STORE action: Created id: 1 # tpm2_ptool addtoken --pid=1 --label=ssh --sopin=sopin123 --userpin=userpin123 --path=$TPM2_PKCS11_STORE # tpm2_ptool addkey --algorithm=ecc256 --label=ssh --userpin=userpin123 --path=$TPM2_PKCS11_STORE public: CKA_ID: '63316131396137363763316531666439'
Die CKA_ID wird pro Schlüssel erzeugt, bei euch steht dort etwas anderes. Den öffentlichen Teil holt man sich in einem Format, das sshd versteht, direkt über den PKCS#11-Provider.
# ssh-keygen -D /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBO+enW3ZwHsSq8vHLKliloTMR/fpDgWPfti+UQuad0YA8rIXGE8Q9adJqjO6PmZO1DCavBiJgttOE24qrO6BX/0=
Diese Zeile wandert wie gewohnt in authorized_keys. Und damit der Nachweis auch etwas wert ist, zeige ich ihn als Vorher und Nachher. Auf dieser Maschine liegt in /root/.ssh nämlich kein einziger privater Schlüssel, es gibt also keine zweite Erklärung für einen erfolgreichen Public-Key-Login.
# ls /root/.ssh/id_* ls: cannot access '/root/.ssh/id_*': No such file or directory # ssh -o BatchMode=yes root@localhost true root@localhost: Permission denied (publickey,password).
Derselbe Login, nur mit dem Provider dazu:
# ssh -o PKCS11Provider=/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so root@localhost 'echo LOGIN-OK-VIA-TPM; hostname; id -un' LOGIN-OK-VIA-TPM ErrorLap root
Die PIN habe ich für diesen Test über SSH_ASKPASS nicht interaktiv geliefert, im Alltag fragt ssh einfach danach. Richtig sehenswert wird es aber mit -v, denn da erzählt OpenSSH selbst, mit welchem Bauteil es gerade arbeitet.
debug1: provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so: manufacturerID <tpm2-software.github.io> cryptokiVersion 2.40 libraryDescription <TPM2.0 Cryptoki> libraryVersion 1.9 debug1: provider /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so slot 0: label <ssh> manufacturerID <Infineon> model <SLB9670> serial <0000000000000000> flags 0x40d debug1: Will attempt key: ECDSA SHA256:otJuTNX5LzFzJKqbTu9UoYROpZSXMMWIWMZUe02v1D4 token debug1: Will attempt key: /root/.ssh/id_rsa debug1: Will attempt key: /root/.ssh/id_ecdsa debug1: Will attempt key: /root/.ssh/id_ed25519 debug1: Will attempt key: /root/.ssh/id_dsa debug1: Offering public key: ECDSA SHA256:otJuTNX5LzFzJKqbTu9UoYROpZSXMMWIWMZUe02v1D4 token debug1: Server accepts key: ECDSA SHA256:otJuTNX5LzFzJKqbTu9UoYROpZSXMMWIWMZUe02v1D4 token
Drei Sachen daran finde ich stark. Erstens nennt OpenSSH den Chip beim Namen, manufacturerID <Infineon> model <SLB9670>. Der SSH-Client sagt dir, welches Bauteil da gerade unterschreibt. Zweitens steht der TPM-Schlüssel in der Kandidatenliste mit dem Wort token, wo bei allen anderen ein Dateipfad steht, und diese Dateien existieren nicht einmal. Dieser Kontrast in einem Bildschirm ist das ganze Argument: dieser Schlüssel hat keine Datei. Drittens wird der Token-Schlüssel zuerst probiert, noch vor den nicht existierenden Dateien.
OpenSSH nennt Hersteller und Modell des Chips. Der Schlüssel steht als token in der Liste, alle anderen Kandidaten sind Dateien, die es nicht gibt.
Lasst mal kurz etwas heraus zoomen 😀 Meine Frau weist mich grade auf mein RBF hin. Wenn ich so konzentriert am Computer sitze und wie in diesem Fall etwas schreibe, dann schaue ich wohl meinen Monitor an, als wenn ich ihn gleich töten möchte. Tjo, und nun? Nun zoomen wir wieder ins Thema!
Meine Annahme vor der Messung war schlicht: eine ECDSA-Signatur kostet im Chip rund 97 Millisekunden, also merkt man beim Login nichts. Gemessen kommt etwas anderes heraus.
Weg
5 Logins
pro Login
Aufschlag
Schlüssel auf der Platte, Referenzwert
1,552 s
etwa 310 ms
Referenz
PKCS11Provider bei jedem Aufruf
8,013 s
etwa 1603 ms
etwa 1293 ms
Token einmal im ssh-agent
2,806 s
etwa 561 ms
etwa 251 ms
Die Ursache ist lehrreich. Bei PKCS11Provider baut ssh bei jedem einzelnen Login die komplette Kette neu auf: Store öffnen, Primary Key im TPM erzeugen, Kindschlüssel laden, signieren. Allein die Erzeugung des Primary Keys habe ich weiter oben mit 0,537 Sekunden gemessen. Die eigentliche Signatur ist damit der kleinste Posten in der Rechnung.
# ssh-add -s /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so Card added: /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so # ssh-add -l 256 SHA256:otJuTNX5LzFzJKqbTu9UoYROpZSXMMWIWMZUe02v1D4 /usr/lib/x86_64-linux-gnu/libtpm2_pkcs11.so.1.9.0 (ECDSA) # time (for i in 1 2 3 4 5; do ssh root@localhost true; done) real 0m2.806s
Mit ssh-add -s passiert diese Initialisierung einmal pro Sitzung statt einmal pro Verbindung, und die PIN wird auch nur einmal abgefragt. Zwei Gründe, dieselbe Empfehlung, also ganz klar: nehmt ssh-add -s und nicht PKCS11Provider bei jedem Aufruf.
Zur Messhygiene, wie immer: fünf Logins pro Zeile über Loopback, jeweils mit vollem Verbindungsaufbau und Prozessstart, kleine Stichprobe, keine Streuung berechnet. Das sind Größenordnungen und keine Benchmarks.
Diesen Punkt habe ich selbst erst beim Aufräumen gemerkt, und jeder, der dem SSH-Abschnitt folgt, läuft hinein. tpm2_ptool init legt stillschweigend einen Primary Key an und macht ihn persistent im Chip. Vor der Demo waren drei persistente Handles belegt, danach vier.
# tpm2_getcap handles-persistent - 0x81000000 - 0x81000001 - 0x81000002 - 0x81010001
Und jetzt zurück zu einer Zahl von weiter oben: TPM2_PT_HR_PERSISTENT_MIN ist auf diesem Chip 0x7. Garantiert sind also nur sieben persistente Plätze, und drei davon waren schon vorher weg. Wer bei jedem Basteln ein Handle liegen lässt, macht den Chip irgendwann voll. Den eigenen Müll findet und räumt man so weg:
# tpm2_evictcontrol -C o -c 0x81000000 persistent-handle: 0x81000000 action: evicted # tpm2_getcap handles-persistent - 0x81000001 - 0x81000002 - 0x81010001
Dazu eine Warnung, die ich nicht deutlich genug schreiben kann: räumt niemals Handles weg, die ihr nicht selbst angelegt habt. Die drei anderen lagen auf meinem Gerät schon vorher dort, vermutlich aus der Hersteller-Provisionierung oder aus einem früheren Windows-Leben. Wer einen fremden Primary Key entfernt, vernichtet alles, was darunter versiegelt war. Der sichere Weg führt über den Token-Store, denn dort steht das Handle drin, das zum eigenen Werkzeug gehört. Bei mir war es genau das 0x81000000 aus der Ausgabe oben, und ich habe vor dem Entfernen im Store nachgesehen, statt der Reihenfolge zu vertrauen.
Für alles, was kein PKCS#11 spricht, gibt es den OpenSSL-3-Provider. Der schönste Moment daran ist ein PEM-Header.
# openssl list -providers -provider tpm2
Providers:
tpm2
name: TPM 2.0 Provider
version: 1.2.0
status: active
# openssl genpkey -provider tpm2 -algorithm EC -pkeyopt group:P-256 -out tpmkey.pem
# head -2 tpmkey.pem
-----BEGIN TSS2 PRIVATE KEY-----
MIHPBgZngQUKAQOgAwEBAQIEQAAAAQRYAFYAIwALAAYAcgAAABAAEAADABAAINLLDiese Datei enthält keinen privaten Schlüssel. Sie enthält einen Blob, den ausschließlich dieser eine Chip auspacken kann. Kopiert die Datei auf eine andere Maschine und sie ist wertlos. Signieren geht im Chip, prüfen geht überall.
# printf "attestiere-mich" > d.bin # openssl pkeyutl -provider tpm2 -provider default -sign -inkey tpmkey.pem -rawin -digest sha256 -in d.bin -out d.sig # stat -c%s d.sig 70 # openssl pkey -provider tpm2 -provider default -in tpmkey.pem -pubout -out tpmkey.pub.pem # openssl pkeyutl -verify -pubin -inkey tpmkey.pub.pem -rawin -digest sha256 -in d.bin -sigfile d.sig Signature Verified Successfully
Zum Prüfen habe ich nur den Standard-Provider gebraucht. Es ist eine ganz normale ECDSA-Signatur, die Gegenseite muss von einem TPM überhaupt nichts wissen. Deshalb lässt sich das in bestehende PKI einbauen, ohne irgendetwas umzustellen, und damit gehen Client-Zertifikate für VPN, 802.1X, mTLS und auch AWS IAM Roles Anywhere.
Auf diesem System ist der TPM tatsächlich der Hardware-Zufallsgenerator, den der Kernel benutzt.
# cat /sys/class/misc/hw_random/rng_available tpm-rng-0 none # cat /sys/class/misc/hw_random/rng_current tpm-rng-0
Der Nutzen davon ist vorhanden, aber klein. Moderne CPUs haben RDRAND, der Kernel hat einen guten Entropiepool, und rund 67 Millisekunden pro tpm2_getrandom-Aufruf sind für nichts geeignet, was Durchsatz braucht. Als zusätzliche, unabhängige Quelle im Pool ist es geschenkt und in Ordnung. Mehr würde ich daraus nicht machen.
Auf Servern liegt der größere Nutzen, nicht am Arbeitsplatz. Das Problem zuerst: bei einer Kiste im Rechenzentrum oder in der Colo weiß man normalerweise nicht, ob sie noch die Software fährt, die man dort installiert hat. Alles, was man fragen kann, ist der Server selbst. Und wenn er kompromittiert ist, lügt er.
Der TPM löst das, weil er eine Aussage über den Startvorgang signiert, die das Betriebssystem nicht fälschen kann. Zwei Schlüssel braucht es dafür: den Endorsement Key als Chip-Identität und einen Attestierungsschlüssel, mit dem tatsächlich signiert wird.
# tpm2_createek -c ek.ctx -G rsa -u ek.pub # tpm2_createak -C ek.ctx -c ak.ctx -G rsa -g sha256 -s rsassa -u ak.pub -n ak.name loaded-key: name: 000b76c23ef9e6c736e89085381db5c9303c6aca84dd4b18785cbcd5820666146650 qualified name: 000bfce15794118492a81739a638c4745d23eeffda268ef1d016f22bc07c7a0b5e65
Der qualified name ist didaktisch schön, weil er die Abstammung des Schlüssels von seinem Elternschlüssel mit einbezieht. Jetzt das Quote, mit einer Nonce, die sich der Prüfer ausdenkt. Ich nehme deadbeef in Hex.
# tpm2_quote -c ak.ctx -l sha256:0,1,4,7 -q 6465616462656566 -m quote.msg -s quote.sig -o pcr.bin -g sha256
quoted: ff54434780180022000bfce15794118492a81739a638c4745d23eeffda268ef1d016f22bc07c7a0b5e650008646561646265656600000002acc0c6460000020500000000010007003f000d190000000001000b0393000000201a782856983a34bde88eb32ea706d6863119ee0309e3e8296f0021d34ec896d5
pcrs:
sha256:
0 : 0x7DE4ABE4ED8D8291D9B58D71F3B2988F5DA81EBE58D4AE518012E877FA1E04F1
1 : 0x41CBF90AFF5CEEFAA9E9C52E7A3D5B4C8518EA65861C753AF8DB005C5330F53F
4 : 0xCDB9366A1664E6B6AE408E3DF98F2E5FF47BCD6F0EA19ACBABE643DE586853DD
7 : 0xF5841722D3DCC8886F14E92CA2D7304932CF17E2247A85D3B7BB41FE2C02CB4E
calcDigest: 1a782856983a34bde88eb32ea706d6863119ee0309e3e8296f0021d34ec896d5Der quoted-Blob sieht wie Rauschen aus, ist aber lesbar, wenn man weiß wo man hinschaut.
ff544347 ist die Konstante TPM_GENERATED_VALUE und markiert die Struktur als im TPM entstanden. Wichtig für das Verständnis: sie allein verhindert keine Fälschung. Der Schutz entsteht daraus, dass ein Attestierungsschlüssel ein restricted Signaturschlüssel ist, der nur Daten unterschreibt, die der Chip selbst erzeugt hat. Diese Konstante ist das Erkennungsmerkmal dafür und nicht der Mechanismus.8018 ist TPM2_ST_ATTEST_QUOTE, der Strukturtyp.6465616462656566 ist meine Nonce, unverändert zurück. Genau das schlägt einen Replay.07003f000d1900 ist die Firmware-Version, die in jedem Quote mitläuft. Das ist wieder die 7.63 von oben.Geprüft wird offline, und zwar mit nichts als dem öffentlichen Attestierungsschlüssel.
# tpm2_readpublic -c ak.ctx -o ak.pem -f pem
# tpm2_checkquote -u ak.pem -m quote.msg -s quote.sig -f pcr.bin -g sha256 -q 6465616462656566
pcrs:
sha256:
0 : 0x7DE4ABE4ED8D8291D9B58D71F3B2988F5DA81EBE58D4AE518012E877FA1E04F1
1 : 0x41CBF90AFF5CEEFAA9E9C52E7A3D5B4C8518EA65861C753AF8DB005C5330F53F
4 : 0xCDB9366A1664E6B6AE408E3DF98F2E5FF47BCD6F0EA19ACBABE643DE586853DD
7 : 0xF5841722D3DCC8886F14E92CA2D7304932CF17E2247A85D3B7BB41FE2C02CB4E
exit=0Der Ablauf einer Attestierung. Der Prüfer glaubt dem Knoten nichts, er rechnet nach.
Und hier muss ich mich selbst bremsen, denn die Versuchung ist groß, die beiden vorherigen Abschnitte einfach nebeneinanderzulegen und „echte Hardware bestätigt echten Bootzustand“ daraus zu machen. Das wäre eine Beweiskette mit einem Loch in der Mitte.
tpm2_checkquote mit dem öffentlichen Attestierungsschlüssel beweist genau eine Sache: irgendjemand, der diesen Schlüssel besitzt, hat dieses Quote signiert. Es beweist nicht, dass dieser Schlüssel in demselben Chip steckt, dessen Infineon-Zertifikat ich weiter oben gezeigt habe.
Die fehlende Verbindung heißt Credential Activation. Der Prüfer verschlüsselt dabei ein Geheimnis so, dass es nur ausgepackt werden kann, wenn Endorsement Key und Attestierungsschlüssel im selben TPM liegen, klassisch über TPM2_MakeCredential auf der Prüferseite und TPM2_ActivateCredential auf der Knotenseite. Erst wenn der Knoten das Geheimnis zurückmelden kann, ist bewiesen, dass der Schlüssel zu diesem zertifizierten Chip gehört. Alternativ stellt eine Attestierungs-CA ein echtes AK-Zertifikat aus, nachdem sie diese Prüfung einmal gemacht hat. Wie das im Detail aussieht, steht in RFC 9683. Diesen Schritt habe ich hier nicht durchgeführt. Gemessen sind Quote und Signaturprüfung, die Bindung ist dokumentiertes Verfahren.
Genau diesen Schritt macht Keylime, und genau deshalb ist Keylime mehr als ein Skript um tpm2_quote herum. Die Architektur hat vier Rollen: einen Agent auf dem Knoten, einen Registrar, einen Verifier und einen Tenant. Der Agent schickt Event-Log, IMA-Hashes und Measured-Boot-Daten, der lokale TPM bürgt für die Echtheit, und über das EK-Zertifikat lässt sich beweisen, dass es überhaupt ein echter TPM ist. Der Verifier prüft dann fortlaufend und nicht nur einmal beim Start.
Damit das nicht nach Bastelei klingt: Keylime läuft in der IBM Cloud als Teil der Compliance-Anforderungen für FedRAMP und HITRUST, und SUSE dokumentiert es offiziell für SUSE Linux Micro. Das ist kein Laborspielzeug.
Beide gehören zur Laufzeit-Integrität, machen aber Verschiedenes.
Der TPM-Bezug liegt bei IMA und bei PCR 10. Eine veränderte Binärdatei erzeugt eine Messung, die im TPM landet und rückwirkend nicht mehr zu entfernen ist, weil PCRs nur wachsen. Zusammen mit Secure Boot und Measured Boot entsteht so eine Kette von der Firmware bis zur einzelnen ausgeführten Datei. Ohne TPM wäre dieses Logbuch fälschbar, mit TPM nicht.
Operativ ist das der handfesteste Nutzen im Rechenzentrum. Ein verschlüsselter Server, der nach einem Reboot auf eine Passphrase wartet, ist ein Betriebsproblem, spätestens um drei Uhr nachts. Mit TPM-Bindung startet er durch. Der Zielkonflikt dahinter ist eine echte Architekturentscheidung.
Meine Empfehlung, und die ist unspektakulär: im eigenen Rack mit eigenem Netz nehmt Tang plus TPM über Clevis, weil dann beide Bedingungen gleichzeitig gelten müssen. Bei einer einzelnen Kiste in fremder Colo nehmt TPM mit PIN und tippt die eben ein, wenn es tatsächlich einen Kaltstart gibt. Ein Server, der sich ohne jede Bedingung selbst entsperrt, ist Verschlüsselung fürs Protokoll und nicht gegen einen Angreifer.
Ein Schlüssel der die Maschine nicht verlassen kann ist eine Identität, die man nicht mitkopieren kann. Für Zero-Trust-Architekturen ist das der interessante Teil: SPIRE hat dafür einen TPM-Node-Attestor, und für Kubernetes-Knoten, die sich beim Beitritt beweisen sollen, ist das der saubere Weg. Verglichen mit einem Token in einer Cloud-Init-Datei, das jeder mitlesen und in eine beliebige VM kopieren kann, ist das ein anderes Sicherheitsniveau.
Ein physischer TPM hat genau eine Instanz und lässt sich nicht sinnvoll auf viele Gäste aufteilen. Die Lösung ist ein virtueller TPM pro VM. swtpm stellt dafür eine TPM-2.0-Implementierung im Userspace bereit, QEMU und libvirt binden sie als Gerät in die VM ein. Der Gast sieht ein ganz normales /dev/tpm0 und braucht keine Anpassung. Der Kernel bringt dazu den vTPM-Proxy-Treiber mit, /dev/vtpmx, über den Container und VMs eigene TPM-Instanzen bekommen. Genau so machen es die Cloud-Anbieter, und genau so kommt Windows 11 in einer VM überhaupt an seine TPM-2.0-Voraussetzung.
Die ehrliche Einordnung gehört dazu, weil das in Cloud-Architekturen regelmäßig falsch verstanden wird. Ein vTPM ist Software. Sein Zustand liegt als Datei auf dem Hypervisor. Wer den Hypervisor kontrolliert, kontrolliert den vTPM, und ein Angreifer mit root auf dem Host kann den Schlüsselzustand kopieren. Ein vTPM löst also das Problem „der Gast braucht ein TPM-Interface“, er liefert aber keine Hardware-Vertrauenswurzel für den Gast. Wer echte Attestierung einer VM will, braucht eine Kette, die beim TPM des Hosts beginnt, oder Confidential-Computing-Technik wie AMD SEV-SNP oder Intel TDX.
Zum Schluss noch ein kleiner Anwendungsfall, der technisch nichts Neues ist und praktisch viel bringt: die Datenbank-Zugangsdaten eines Dienstes so versiegeln, dass sie nur auf dieser Maschine und nur in diesem Bootzustand aufgehen. Derselbe Seal-Mechanismus wie oben, nur mit einem anderen Geheimnis. Ein kopiertes Image oder eine in eine VM gehobene Platte bringt die Zugangsdaten dann nicht mit.
Dieser Abschnitt ist mir genauso wichtig wie der Nutzen-Teil, also kürze ich ihn nicht ab. Zuerst das Missverständnis, das sich am leichtesten messen lässt.
1. Der TPM als Krypto-Beschleuniger. Gemessen und erledigt.
Operation
Wo
Zeit
RSA-2048-Schlüssel erzeugen
TPM
19,703 s
RSA-2048-Schlüssel erzeugen
CPU, openssl
0,220 s
ECC-P-256-Primary erzeugen
TPM
0,537 s
ECDSA P-256 signieren, 50 mal
TPM
4,862 s
ECDSA P-256 signieren, 50 mal
CPU, openssl
0,286 s
# time tpm2_createprimary -C o -g sha256 -G rsa2048 -c rsa_primary.ctx real 0m19.703s user 0m0.039s sys 0m0.016s # time openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out /dev/null real 0m0.220s user 0m0.210s sys 0m0.010s
Rund 90 mal langsamer bei der RSA-Schlüsselerzeugung. Ein Detail zur Messhygiene ist mir dabei wichtig: während der 19,7 Sekunden liegen user und sys bei 0,039 und 0,016 Sekunden. Die CPU langweilt sich also, die Zeit vergeht wirklich im Chip. Das ist eine Messung des TPM und nicht des Prozess-Overheads.
Die richtige Schlussfolgerung ist nicht, dass der TPM schlecht wäre, sondern dass er kein Beschleuniger ist und nie einer war. Das ist die interessante Kehrseite zu der Krypto-Beschleunigerkarte, die ich neulich gegen dieselbe Klasse moderner CPU gemessen habe. Dort verlor Spezial-Hardware, die schnell sein wollte. Hier verliert sie noch deutlicher, nur ist das kein Befund, sondern die Bauart. Der TPM wollte nie schnell sein, er wollte stur sein.
2. Massendaten im TPM verschlüsseln. Es gibt keinen Datenpfad dafür, und bei den Zahlen von oben erübrigt sich die Diskussion.
3. LUKS nur am TPM, ohne PIN. Technisch drei Minuten Arbeit. Ergebnis ist ein Notebook, das sich für jeden entsperrt, der den Deckel aufmacht. In Kombination mit dem Bus-Sniffing weiter unten ist das nahe an Sicherheitstheater. Wer die Passphrase-Eingabe loswerden will, nimmt die PIN.
4. Der TPM als Passwortspeicher oder Secret Store. Ein einzelner NV-Index kann auf diesem Chip höchstens 1664 Bytes halten, und es gibt genau 8 NV-Zähler. NV im TPM ist Flash mit begrenzten Schreibzyklen und als Ablage für Inhalte nicht gedacht. Der richtige Weg ist immer derselbe: die Geheimnisse liegen verschlüsselt auf der Platte, und nur der Schlüssel dafür wird im TPM versiegelt. Genau das tun systemd-cryptenroll und Clevis auch.
5. Sealing gegen PCR 0 bis 7 auf einem Gerät, das Firmware-Updates bekommt. Jedes BIOS-Update ändert die Messungen und sperrt euch aus. Ein Fall, in dem die Technik funktioniert und die Betriebspraxis daran zerbricht. Der Ausweg heißt signierte Policies und systemd-pcrlock, und im selben Atemzug gehört dazu, dass sich systemd-pcrlock selbst noch als experimentell bezeichnet.
6. Attestierung ohne unabhängigen Prüfer. Ein Quote, das auf derselben Maschine geprüft wird, beweist nichts. Wenn die Maschine übernommen ist, ist die Prüfung übernommen. Attestierung ergibt nur mit einem separaten Verifier und mit bekannten Referenzwerten Sinn. Sehr viele Aussagen der Art „wir nutzen TPM“ sind bei genauem Hinsehen genau das, eine Selbstprüfung.
7. TPM 1.2 im Jahr 2026. SHA-1 und RSA-2048, kein ECC, keine Algorithmen-Agilität, ein völlig anderer Software-Stack, nämlich TrouSerS statt tpm2-tss. Wer noch einen findet, sollte darauf nichts Neues bauen.
8. Die Erwartung, ein TPM schütze ein laufendes System. Das ist das größte Missverständnis, deshalb steht es hier noch einmal als eigener Punkt. Ein TPM schützt Schlüssel im Ruhezustand und misst den Start. Er tut nichts gegen einen Angreifer, der schon im Kernel sitzt, denn der fragt den Chip einfach ganz normal.
Fünf häufige Vorhaben und die kurze Antwort dazu.
Ohne diesen Abschnitt wäre der Beitrag Werbung. Der Kern des Problems bei diskreten Chips ist unangenehm einfach: nach dem Entsiegeln gibt der TPM das Geheimnis über den Bus heraus, und klassisch liegt es dort im Klartext. Wer LPC oder SPI anzapft, liest den Schlüssel mit. Für BitLocker ist das seit Jahren praktisch demonstriert, und es ist ausdrücklich nicht auf Windows beschränkt. Securitum hat im September 2024 in einem echten Penetrationstest genau das gegen ein Linux-System mit LUKS und Clevis gezeigt.
Das betrifft mein Testsystem direkt, und ich schreibe das lieber offen hin, als es zu verstecken: der SLB 9670 ist ein diskreter Chip auf dem Board. Der Angriff braucht physischen Zugriff und Löterfahrung, aber er ist kein Papier-Szenario.
Die Gegenmaßnahme kann TPM 2.0 von sich aus: Sessions mit HMAC-Absicherung und Parameter-Verschlüsselung, und systemd benutzt das inzwischen. Die Grenze davon wird oft zu großzügig beschrieben, deshalb genau: das ist keine Vollverschlüsselung des Bus-Protokolls. Parameter Encryption schützt gezielt einzelne sensible Parameter in Kommandos und Antworten, also genau die Stelle, an der ein entsiegelter Schlüssel herauskäme. Kommandocodes, Handles und die übrigen Parameter bleiben sichtbar. Gegen das passive Mitlesen des Schlüssels ist es wirksam, gegen Verkehrsanalyse nicht, und gegen einen aktiven Interposer hilft es nur insofern, als die HMAC-Absicherung Manipulationen auffallen lässt. Der Kernel hat zu dieser Interposer-Frage eine eigene Dokumentationsseite. Und noch eine Einschränkung, die systemd selbst dokumentiert: die Art der Einbindung entwickelt sich weiter, alte Enrollments profitieren nicht rückwirkend. Wer vor Jahren enrolliert hat, sollte das neu machen.
Und dann eine Ironie, die zeigt wie dünn das Eis ist: CVE-2023-1017 saß genau in CryptParameterDecryption, also in dem Code, der diese verschlüsselten Parameter auspackt. Die Schutzfunktion war selbst der Angriffsweg.
Wer jetzt denkt, ein fTPM in der CPU sei automatisch besser, hat nur andere Probleme. faulTPM hat gezeigt, dass sich AMDs fTPM über Spannungs-Glitching am Platform Security Processor angreifen lässt. Und TPM-Fail demonstrierte 2019 Timing-Seitenkanäle, mit denen sich private ECDSA-Schlüssel rekonstruieren ließen, und zwar aus Intel PTT (CVE-2019-11090) und aus dem ST33 von STMicroelectronics (CVE-2019-16863). Zwei Details daran tragen den Punkt: der lokale Angriff auf Intels fTPM brauchte je nach Zugriffsrechten 4 bis 20 Minuten, und der ST33 trug eine Common-Criteria-Zertifizierung nach EAL 4+, die Schutz gegen Seitenkanäle ausdrücklich einschließt. Ein Zertifikat ist also kein Beweis.
Auch die Referenz-Implementierung selbst hatte Löcher. CVE-2023-1017 war ein Out-of-bounds-Write, CVE-2023-1018 ein Out-of-bounds-Read, beide in der TPM-2.0-Module-Library, also im Referenzcode der TCG. Betroffen waren dadurch gleichzeitig Software-TPMs wie libtpms und eine Reihe von Hardware-TPMs, deren Firmware auf diesem Code aufbaut. Gefunden hat sie Quarkslab und meldete sie im November 2022. Zwei Bytes über den Puffer hinaus, im ungünstigen Fall Codeausführung im TPM-Kontext, also genau in dem Bauteil, dessen einzige Aufgabe es ist, eine Vertrauensgrenze zu ziehen.
Was bleibt also unterm Strich: ein TPM hebt die Messlatte von „Platte ausbauen und kopieren“ auf „an das Board löten oder den SoC glitchen“. Das ist ein echter Fortschritt und kein magischer Schild. Mit PIN wird es deutlich stärker, weil dann die Lockout-Logik greift und Bus-Sniffing allein nicht mehr reicht.
Und jetzt der Teil, der mir selbst am meisten zu denken gibt. Der Chip in diesem Notebook arbeitet einwandfrei, wie alles hier oben zeigt. Benutzt wird er von diesem System für praktisch nichts.
Baustein
Zustand
Secure Boot
aus, und als 00 in PCR 7 gemessen
Wurzel-Dateisystem
ZFS-Native-Encryption, aes-256-gcm, nirgends LUKS
systemd-cryptenroll
vorhanden, systemd 255.4, ohne LUKS2 aber nutzlos
clevis
nicht installiert, würde hier auch nicht helfen
Unified Kernel Image
nicht im Einsatz
systemd-pcrextend.socket
übersprungen, ConditionSecurity=measured-uki nicht erfüllt
systemd-pcrmachine.service
übersprungen, dieselbe Bedingung
systemd-tpm2-setup-early.service
übersprungen, dieselbe Bedingung
die elf systemd-pcrlock-*-Units
alle disabled
TPM als /dev/hwrng
aktiv, tpm-rng-0
Die drei übersprungenen Units sind der interessanteste Eintrag in dieser Tabelle. Die Bedingung ConditionSecurity=measured-uki prüft nicht das Dateiformat, sondern den Bootweg. Weil dieses System nicht als gemessenes Unified Kernel Image über systemd-stub gestartet ist, überspringt systemd die halbe TPM-Infrastruktur einfach lautlos, ohne Fehler und ohne Warnung. Das ist genau die These aus der Einleitung, jetzt belegt: der Chip ist da, er funktioniert, und die Distribution benutzt ihn nicht.
Zum Abschluss noch eine Kleinigkeit, über die ich zuerst gestolpert bin. Der Event-Log, dessen Adresse die Firmware ganz oben in der ersten dmesg-Zeile übergeben hat, liegt im securityfs. Und ls behauptet, die Datei sei leer.
# ls -la /sys/kernel/security/tpm0/ total 0 -r--r----- 1 root tss 0 Aug 10 09:30 binary_bios_measurements # tpm2_eventlog /sys/kernel/security/tpm0/binary_bios_measurements | grep -c EventNum 120
Null Bytes laut ls, und trotzdem 120 Events darin. securityfs gibt für diese Datei einfach keine Größe an. Was in den 120 Einträgen steckt, sortiert sich so:
# tpm2_eventlog /sys/kernel/security/tpm0/binary_bios_measurements | grep EventType | sort | uniq -c | sort -rn
81 EventType: EV_IPL
12 EventType: EV_EFI_VARIABLE_BOOT
8 EventType: EV_SEPARATOR
5 EventType: EV_EFI_VARIABLE_DRIVER_CONFIG
3 EventType: EV_EFI_ACTION
2 EventType: EV_POST_CODE
2 EventType: EV_EVENT_TAG
2 EventType: EV_EFI_BOOT_SERVICES_APPLICATION
1 EventType: EV_S_CRTM_VERSION
1 EventType: EV_NO_ACTION
1 EventType: EV_EFI_VARIABLE_AUTHORITY
1 EventType: EV_EFI_HANDOFF_TABLES
1 EventType: EV_EFI_GPT_EVENTDer lehrreichste Eintrag im ganzen Log ist aber die Nummer 2, weil er ein abstraktes Konzept in vier Zeilen greifbar macht.
- EventNum: 2
PCRIndex: 7
EventType: EV_EFI_VARIABLE_DRIVER_CONFIG
DigestCount: 2
Digests:
- AlgorithmId: sha1
Digest: "57cd4dc19442475aa82743484f3b1caa88e142b8"
- AlgorithmId: sha256
Digest: "115aa827dbccfb44d216ad9ecfda56bdea620b860a94bed5b7a27bba1c4d02d8"
UnicodeName: SecureBoot
VariableData: "00"Da steht der Secure-Boot-Zustand meiner Maschine als 00 im Log, und gehasht wandert genau dieser Wert in PCR 7. Das ist die Brücke zwischen dem Firmware-Setup und dem Chip: was ihr im BIOS umschaltet, wird gemessen und landet im TPM. Schaltet Secure Boot ein, und PCR 7 ändert sich. Alles, was gegen PCR 7 versiegelt war, geht danach nicht mehr auf. Wer den Zusammenhang einmal so gesehen hat, versteht auch, warum die Wahl der PCRs weiter oben ein Zielkonflikt ist und keine Geschmacksfrage.
Eine Nebenbemerkung, weil sie so schön zeigt, wie Secure-Boot-PKI in der Praxis funktioniert: im Log steckt auch der Platform Key des Boards, ein „Fujitsu ODM Quanta BIOS PK Certificate“, gültig von August 2012 bis August 2022. Es ist also seit Jahren abgelaufen. Die Firmware interessiert sich nicht dafür.
PKCS11Provider rund 1,3 Sekunden Aufschlag kostet, ist plausibel erklärt, aber nicht einzeln nachgemessen. Ein strace oder ein Trace über tpm2_ptool würde es belegen.systemd-cryptenroll mit LUKS2 konnte ich nicht testen, weil hier kein LUKS existiert.TPM2_MakeCredential und TPM2_ActivateCredential, habe ich nicht durchgeführt. Gemessen sind nur Quote und Signaturprüfung.NV_INDEX_MAX beantwortet diese Frage nicht.Wenn ich hier etwas falsch dargestellt habe, oder wenn ihr einen der offenen Punkte schon gelöst habt, dann korrigiert mich gerne. Dann lerne ich selbst etwas. Ihr dürft mich dazu jederzeit fragen.
Und weil mich das wirklich interessiert: setzt ihr den TPM-Chip selbst ein, ignoriert ihr ihn bisher, oder nutzt ihr ihn eher zufällig?
Dembrandt : extrait le design system d'un site en une commande, couleurs, typo, ombres, logo. Export en tokens W3C, intégration MCP pour Claude Code ou Cursor, suivi du drift via CI. ⬇️
https://github.com/dembrandt/dembrandt
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-Duf
⋅ Multiplier par 4 et en 4 ans l’adoption de Linux chez le particulier !
− https://linuxfr.org/news/multiplier-par-4-et-en-4-ans-l-adoption-de-linux-chez-le-particulier
26 more games join GeForce NOW during August 2026 https://www.gamingonlinux.com/2026/08/26-more-games-join-geforce-now-during-august-2026/
heise+ | Softwarelieferkette: "Bill of Behavior" als Packungsbeilage für Container
Die Software Bill of Behavior (SBOB) beschreibt das Laufzeitverhalten von Software präskriptiv – als signierte Absichtserklärung des Herstellers.
KDE zieht Bilanz: Quartalsbericht zur Spende der Sovereign Tech Agency
https://linuxnews.de/kde-zieht-bilanz-quartalsbericht-zur-spende-der-sovereign-tech-agency/ #kde #plasma #linux #linuxnews
Debian 13 »Trixie« schließt zwei brisante Kernel-Lücken
https://linuxnews.de/debian-13-trixie-schliesst-zwei-brisante-kernel-luecken/ #debian #kernel #security #linux #linuxnews
ProtonPlus v0.6.0 adds support for Faugus Launcher, improved controller navigation and more https://www.gamingonlinux.com/2026/08/protonplus-v0-6-0-adds-support-for-faugus-launcher-improved-controller-navigation-and-more/
Posta : plateforme d'envoi et de réception d'e-mails self-hosted, alternative à SendGrid ou Mailgun. API HTTP, templates versionnés, gestion des bounces, tracking, campagnes, webhooks inbound, sans dépendre d'un tiers pour votre infrastructure mail. ⬇️
https://github.com/goposta/posta
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-3Fx
Heroic Games Launcher 2.22.1 brings Proton-CachyOS, controller improvements and more to come https://www.gamingonlinux.com/2026/08/heroic-games-launcher-2-22-1-brings-proton-cachyos-controller-improvements-and-more-to-come/
Tails a réparé une faille de sécurité critique du noyau Linux. Cette faille permettait à un site internet de désanonymiser un·e utilisateur·ice utilisant Tails. Il est donc urgent de mettre à jour sa version de Tails à 7.10.1
https://stuut.info/Tech-Une-grave-faille-de-securite-dans-Tails-13182
#Tails #Linux #securité #cybersecurity
Fix, Find, And Generate Contact Avatars On Linux Without (You) Using AI
Both introducing a useful script and talking about harm reduction with AI use.
Archive: ia: https://s.faithcollapsing.com/y26ho
#bash #technology #ai-ml #coding #contacts #linux #longread
https://ideatrash.net/2026/08/fix-find-and-generate-contact-avatars-on-linux-without-you-using-ai.html
"Almost There Games" has released the #Amiga #Game Ruff (Ruff´N Tumble) for #Windows and #Linux
This looks amazing!
It requires legally obtained original game disks!
New 𝗙𝗿𝗲𝗲𝗕𝗦𝗗 𝗦𝘁𝗼𝗿𝗮𝗴𝗲 𝗳𝗼𝗿 𝗢𝗽𝗲𝗻𝗦𝗵𝗶𝗳𝘁 𝘄𝗶𝘁𝗵 𝗗𝗲𝗺𝗼𝗰𝗿𝗮𝘁𝗶𝗰 𝗖𝗦𝗜 [FreeBSD Storage for OpenShift with Democratic CSI] article on vermaden.wordpress.com blog.
https://vermaden.wordpress.com/2026/08/09/freebsd-openshift-democratic-csi/
#verblog #freebsd #linux #openshift #kubernetes #k8s #k3s #csi #miami #storage
Wusstet ihr das Nordkorea eine eigene Linux-Distro entwickelt hat, namens Red Star OS?
Ist als iso-Datei zum Download verfügbar ... wenn wer sich traut :-)
@tanavit @sebsauvage @jenesuispersonne @marnic
Mouais... je vais éviter de faire des trucs hasardeux.
Je suis sous #Linux depuis plus de 15 ans, je n'ai jamais eu de gros plantage ni vu de BSOD Linux depuis qu'il existe, et je vis très bien avec.
😂
#Networking champion's. I need some inspiration.
#VX-LAN on #Linux or #BSD to connect two sites?
Except the man pages I also like to hear how you have done it
Il semble que ce logiciel fasse sous Linux ce que fait l'excellent Spacedesk ... Ca n'est évidement pas si simple, mais je pense que ça mérite d'être testé. https://github.com/adiimanav/moreland #android #linux #dualscreen #software #freeware #opensource
#Linux für alte Nischenprudukte und Interfaces? Nö, nun nicht mehr. Alle #Kernel Treiber für ältere Hardware, welche keine #Maintainer mehr haben werden entfernt, wenn KI-Bugreports für eben diese eintreffen. Wobei in fast allen Fällen die Treiber keine Updates benötigen. Gleichschaltung durch KI. Leck mich am Arsch... 🤬
https://www.phoronix.com/news/Linux-7.1-PR-Remove-Old-Net
https://www.youtube.com/watch?v=8vDSSxaQ7ZU
Il y a des expert.e.s débuggage #linux ?
Depuis quelques temps j'ai mon système qui rame avec un coeur en permanence au taquet et des IO stratosphériques. Même après une mise à jour du système sur une session qui ne lance rien (voir captures d'images).
Le process coupable est kworker mais je ne sais pas ce qui lui fait avoir ce comportement.
es müsste übrigens mal ne verbindliche konvention für benutzer konfigurationsdateien in #linux geben - jedes programm, desktop und distro macht einfach wie's gerade lustig ist
ich hab da irgend 2 duzend .directory in meinem home verzeichnis 🙄
#KDEConnect ist schon ein feines, kleines tool
man kann vom #smartphone aus den pc steuern und vom pc aus anrufe machen und sms lesen und schreiben
#linux #kde #opensuse
Im letzten Beitrag ging es darum, die BIOS-Einstellungen meines Supermicro X12SPi-TF überhaupt erst als Datei in die Hand zu bekommen. Das Ergebnis war eine XML mit 372 Einstellungen, und der Weg dorthin führte über eine Lizenz für 28,17 Euro.

Damit war die halbe Arbeit getan. Eine Konfiguration auslesen zu können ist schön, aber der eigentliche Gewinn liegt darin, sie auch zurückschreiben zu können. Genau das habe ich jetzt gemacht, und zwar zum ersten Mal überhaupt an dieser Maschine: sieben Einstellungen geändert, ohne den Rechner ins Setup zu booten, ohne Tastatur, ohne die Fernkonsole des Management-Controllers.
Vorweg die gute Nachricht für alle, die schon rechnen: die kleine Lizenz deckt das Schreiben mit ab. Ich hatte damit gerechnet, dass Supermicro genau an dieser Stelle noch einmal die Hand aufhält, und das tut es auch, aber nur an einer sehr kleinen Ecke. Von den 372 Einstellungen tragen 21 den Vermerk, dass sie die große Lizenz verlangen. Es sind ausschliesslich Zertifikatseinträge für KMIP-Server und HTTPS-Boot. Nichts davon betrifft normale Setup-Optionen.
Der langweiligste Teil eines solchen Artikels ist die Liste der geänderten Werte. Der interessante Teil ist die Begründung, deshalb fange ich damit an.
Mein Rechner bootet von einer NVMe-SSD. Er hat das noch nie anders gemacht und wird es auch nicht. Trotzdem lädt das BIOS bei jedem Start die Pre-Boot-Netzwerktreiber für vier Netzwerkanschlüsse, jeweils für IPv4 und IPv6, und baut daraus Boot-Einträge, die niemand benutzt. Dazu kommen die Option-ROMs von drei leeren Steckplätzen.
Ein Option-ROM ist ein kleines Stück Firmware auf einer Steckkarte, das beim Start ins BIOS geladen wird, damit die Karte schon vor dem Betriebssystem funktioniert. Für eine Netzwerkkarte heisst das Netzwerk-Boot, für einen Speichercontroller das Booten von daran angeschlossenen Platten. Wer von keinem dieser Geräte bootet, braucht den Code nicht.
Also:
– Network Stack von *Enabled* auf *Disabled*. Damit fällt die komplette UEFI-Netzwerkinitialisierung weg. – Onboard LAN1 Option ROM aus. Der Pre-Boot-Treiber der onboard X550 wird nicht gebraucht. – CPU SLOT6 OPROM aus. Dort steckt meine X710. Dazu gleich mehr, das ist der eigentliche Grund für die Aktion. – CPU SLOT1, SLOT2 und SLOT7 OPROM aus. Alle drei Steckplätze sind leer.
Bei den drei leeren Steckplätzen bin ich ehrlich: der Zeitgewinn ist exakt null. Wo keine Karte steckt, gibt es auch kein Option-ROM zu laden. Ich habe sie trotzdem mitgenommen, weil ich einen dokumentierten Sollzustand haben will und nicht eine Mischung aus bewusst gesetzt und zufällig übrig.
Die siebte Änderung ist die, um die es mir wirklich ging.
Beim Schreiben meiner BIOS-Serie ist mir etwas aufgefallen, das ich mir lange nicht erklären konnte. Mein Prozessor ist ein Xeon Gold 5315Y, Ice Lake-SP. Diese Generation beherrscht Hardware P-States, kurz HWP. Die CPU regelt ihren Takt dabei selbst, in feineren Stufen und deutlich schneller, als das Betriebssystem es könnte.
Nur meldete mein Kernel davon nichts. In /proc/cpuinfo fehlte das hwp-Flag, der Treiber intel_pstate lief im passiven Modus, und die Taktregelung machte der Governor schedutil. Also genau der Zustand, den man auf einer CPU erwartet, die HWP gar nicht kann.
Ich habe eine Weile in Richtung Kernel gesucht. Das war die falsche Richtung. Der Schalter sass im BIOS, ziemlich tief vergraben:
Advanced > CPU Configuration > Advanced Power Management Configuration
> Hardware PM State Control > Hardware P-States [Disable]Der Auslieferungszustand dieser Option ist tatsächlich *Disable*. Es gibt vier Werte, und der Hilfetext im BIOS beschreibt sie so:
Disable hardware will choose a P-state setting for
the system based on an OS request
Native Mode hardware will choose a P-state setting
based on OS guidance
Native Mode with No Legacy Support hardware will choose a P-state setting
independently without OS guidance
Out of Band Mode hardware autonomously choose a P-state
without OS guidanceIch habe Native Mode genommen, also die zahmste der drei aktiven Varianten. Der Unterschied zu den beiden anderen ist wichtig: bei *Native Mode* behält das Betriebssystem seinen Einfluss, es wandert nur die Feinsteuerung in die CPU. Bei den beiden anderen wird der Kernel bei der Taktwahl übergangen, und dann kann er dir auch nicht mehr sinnvoll sagen, was die CPU gerade tut.
Diese Liste finde ich wichtiger als die Liste der Änderungen, denn hier hätte ich mir den Rechner unbedienbar machen können.
Das Option-ROM von SLOT4 bleibt an. Dort sitzt die Grafikkarte. Ihr GOP-Modul ist das, was beim Start überhaupt ein Bild auf den Monitor bringt. Wer es abschaltet, sitzt bis zum Laden des Grafiktreibers im Dunkeln, und wenn dabei etwas schiefgeht, sitzt er dauerhaft im Dunkeln.
Onboard Video Option ROM bleibt an. Das ist die Grafik des Management-Controllers, und daran hängt die Fernkonsole. Schaltet man sie ab, bleibt beim Start das Fenster schwarz, über das man aus der Ferne ins Setup kommt. Das ist genau der Rettungsweg, den man sich nicht abschneiden will, wenn man gerade anfängt, das BIOS aus dem laufenden Betrieb heraus umzukonfigurieren.
Beide NVMe-Option-ROMs bleiben an. Das erste trägt das Betriebssystem. Auf das zweite soll irgendwann Windows, und auch wenn der Bootloader auf der ersten Platte das Kommando behält, muss die zweite dem Firmware-Bootmanager sichtbar bleiben.
Legacy USB Support bleibt an. Hier hätte ich vermutlich etwas Startzeit gewinnen können. Ich habe es gelassen, weil ich den Gewinn nicht gemessen habe und das Risiko eine tote Tastatur im Setup wäre. Eine Einstellung, deren Nutzen man nicht beziffern kann, deren Schaden aber konkret ist, ändert man nicht.
Naheliegend wäre, die ausgelesene XML zu bearbeiten und komplett zurückzuschreiben. Bei 372 Einstellungen und 260 Kilobyte ist das unnötig riskant, und es ist auch nicht der vorgesehene Weg.
Das Werkzeug kennt einen Filter, der genau die Einstellungen ausgibt, die vom Auslieferungszustand abweichen:
./saa -c GetCurrentBiosCfg --file nondefault.xml --overwrite --filter nondefault
Heraus kommt eine kleine Datei mit derselben Struktur wie die grosse, nur eben mit den Menüzweigen, die auch wirklich etwas enthalten. Und genau diese Struktur nimmt das Schreibkommando entgegen. Teildateien sind also kein Trick, sondern der normale Betriebsfall.
Hier der erste Fallstrick, und der hat mich ehrlich geärgert: die eingebaute Hilfe des Werkzeugs beschreibt den Filter als Ziffer.
--filter Sets filter type to: 1 = nondefault
Die Ziffer 1 wird abgewiesen. Das Kommando bricht ab und wirft den Hilfetext aus, der einem gerade die Ziffer empfohlen hat. Akzeptiert wird ausschliesslich das ausgeschriebene Wort nondefault. Wenn du also an dieser Stelle hängst, liegt es nicht an dir.
Meine Änderungsdatei habe ich nicht getippt, sondern mit einem kleinen Python-Skript aus dem Auslesestand erzeugt. Das klingt nach Übertreibung für sieben Werte, hat aber einen handfesten Grund: die Einstellungen müssen im richtigen Menüzweig stehen, und die Menünamen sind lang und fehleranfällig. CPU SLOT2 PCI-E 4.0 X8(IN X16) OPROM vertippt sich schneller, als man denkt, und ein Tippfehler im Namen führt nicht zu einer Fehlermeldung, sondern dazu, dass die Einstellung stillschweigend nicht gesetzt wird.
Das Schreiben selbst ist unspektakulär:
./saa -c ChangeBiosCfg --file change-boot-oprom-hwp.xml Status: The BIOS configuration is updated for the managed system Note: You have to reboot or power up the system for the changes to take effect.
Es gibt eine Option --reboot, die den Neustart gleich mit erledigt. Die habe ich weggelassen. Wann ein Rechner neu startet, entscheide ich lieber selbst.
Nach dem Schreiben will man natürlich nachsehen, ob es geklappt hat. Also dasselbe Auslesekommando noch einmal, und dann steht da:
Hardware P-States = Disable (geschrieben: Native Mode) Network Stack = Enabled (geschrieben: Disabled) CPU SLOT6 PCI-E 4.0 X16 OPROM = EFI (geschrieben: Disabled)
Nichts. Alle alten Werte, unverändert.
Der erste Reflex ist, das Schreibkommando noch einmal laufen zu lassen. Tu das nicht. Das Auslesen liefert die aktive Konfiguration, und die ändert sich erst beim nächsten Start. Deine Änderung liegt so lange in einem Bereich, den das Werkzeug nicht anzeigt. Zwischen dem Schreiben und dem Neustart gibt es damit keine Möglichkeit, die Änderung zu überprüfen, ausser dem Rückgabewert des Kommandos.
Das ist unschön, aber es ist logisch. Die Einstellungen werden erst beim Start aus dem Speicher gelesen, und vorher gibt es schlicht nichts Aktives, das anders wäre.
Und dann stimmt alles. Die Zahl der Abweichungen vom Auslieferungszustand ist von sechs auf dreizehn gestiegen, also genau um meine sieben:
Quiet Boot Unchecked Restore on AC Power Loss Stay Off Power Button Function 4 Seconds Override Hardware P-States Native Mode Network Stack Disabled Re-Size BAR Support Enabled VGA Priority Offboard CPU SLOT1 PCI-E 4.0 X8 OPROM Disabled CPU SLOT2 PCI-E 4.0 X8(IN X16) OPROM Disabled CPU SLOT6 PCI-E 4.0 X16 OPROM Disabled CPU SLOT7 PCI-E 4.0 X8 OPROM Disabled Onboard LAN1 Option ROM Disabled WHEA Support Disabled
Die Netzwerk-Booteinträge sind verschwunden, übrig bleibt der Bootloader und die eingebaute Shell:
BootCurrent: 000F BootOrder: 000F,0001 Boot0001* UEFI: Built-in EFI Shell Boot000F* ubuntu
Und der Punkt, um den es mir ging, ist eingetreten. Der Prozessor meldet jetzt Fähigkeiten, die er die ganze Zeit hatte:
$ grep -o ' hwp[_a-z]*' /proc/cpuinfo | sort -u hwp hwp_act_window hwp_epp hwp_pkg_req $ cat /sys/devices/system/cpu/intel_pstate/status active
Der Treiber ist damit vom passiven in den aktiven Modus gewechselt. Was dabei kurz irritiert: der Governor heisst jetzt powersave statt schedutil, und das sieht nach einem Rückschritt aus. Ist es nicht. Bei intel_pstate im aktiven Modus ist powersave der Name für den Betrieb, bei dem die Hardware regelt. Wie sie das tut, steuert ein separater Wert:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference balance_performance
Die CPU geht im Leerlauf auf 800 MHz und hat den vollen Turbo bis 3600 MHz zur Verfügung. Genau so soll es sein.
Wichtig war mir noch die Gegenprobe, dass ich mir das Netzwerk nicht zerschossen habe. Die Karte, deren Option-ROM ich abgeschaltet habe, ist schliesslich die, über die diese Maschine am Netz hängt:
$ ethtool ens6f1np1 | grep -E 'Speed|Link detected' Speed: 10000Mb/s Link detected: yes
Unverändert. Das ist auch zu erwarten, denn der Treiber im laufenden Betrieb kommt aus dem Kernel und hat mit dem Option-ROM nichts zu tun. Das Option-ROM ist reiner Startcode. Trotzdem ist das der Punkt, an dem die meisten zögern, deshalb steht die Messung hier.
Ein Punkt ist noch offen, und den will ich nicht verschweigen: der ursprüngliche Anlass für das Abschalten von SLOT6 war eine Meldung auf der Treiberstatus-Seite im Setup, wo meine Netzwerkkarte seit einem Firmware-Update als *Failed* geführt wird. Ob die Meldung jetzt weg ist, kann ich von aussen nicht sehen. Das prüfe ich beim nächsten Setup-Besuch nach.
Diese Frage lag für mich die ganze Zeit im Raum, und die Antwort ist unbefriedigend.
Es gäbe einen herstellerneutralen Weg unter Linux. Der Kernel kennt eine Geräteklasse namens firmware-attributes, über die sich BIOS-Einstellungen als ganz normale Dateien lesen und schreiben lassen. Der Firmware-Updater fwupd kann das seit Version 1.8.4 direkt bedienen. Das wäre die Lösung: ein Kommando, egal welcher Hersteller.
Auf meiner Maschine sieht das so aus:
$ ls /sys/class/firmware-attributes/ ls: cannot access '/sys/class/firmware-attributes/': No such file or directory $ fwupdmgr get-bios-setting This system doesn't support firmware settings
Das Hilfsmodul dafür liegt im Kernel, es ist also nicht so, dass die Infrastruktur fehlen würde:
/lib/modules/7.0.0-28-generic/kernel/drivers/platform/x86/firmware_attributes_class.ko.zst
Was fehlt, ist der Treiber des Herstellers. Der Kernel bringt genau drei mit:
drivers/platform/x86/dell/dell-wmi-sysman Dell drivers/platform/x86/lenovo/think-lmi Lenovo drivers/platform/x86/hp/hp-bioscfg HP
Supermicro ist nicht dabei. Statt eines Treibers, der diese Kernel-Schnittstelle bedient, gibt es ein eigenes Werkzeug und eine Lizenz. Auf einem Dell oder Lenovo wäre der Inhalt dieses Beitrags ein Einzeiler ohne Zusatzkosten.
Ganz ohne Oberfläche ist man aber nicht. Das Werkzeug bringt einen textbasierten Editor mit, der das Setup im Terminal nachbaut:
./saa -c GetCurrentBiosCfg --tui
Dazu gibt es --compact, das anschliessend nur die geänderten Zeilen herausschreibt. Über eine SSH-Pipe blieb das Fenster bei mir schwarz, es braucht ein echtes Terminal. Ausprobiert habe ich es deshalb noch nicht richtig. Und es gibt das Werkzeug ausserdem als Windows-Version und als Variante für die UEFI-Shell, also für den Fall, dass überhaupt kein Betriebssystem installiert ist.
Eine echte grafische Oberfläche gibt es auch, sie heisst SSM. Die will dann allerdings wieder die grosse Lizenz.
Das Wichtigste zum Schluss, und man legt es sich besser vorher zurecht als hinterher. Vor dem Schreiben habe ich den vollständigen Stand weggesichert. Der Rückweg ist dann dasselbe Kommando mit dieser Datei:
./saa -c ChangeBiosCfg --file bios-current-2026-08-09.xml
Als Notnagel gibt es darunter noch LoadDefaultBiosCfg, das alles auf den Auslieferungszustand zurücksetzt. Das ist aber ein grober Hebel: es wirft auch die sechs Abweichungen weg, die ich absichtlich eingestellt habe, und die stehen dann eben nicht mehr so, wie ich sie haben will. Die Teildatei ist der bessere Weg, der Vollreset die letzte Reserve.
Und weil es hier um Firmware geht, der offensichtliche Hinweis: bei einem Rechner, an den du nicht rankommst, änderst du keine Boot-Einstellungen, ohne dass jemand vor Ort ist oder die Fernkonsole zuverlässig läuft. Ich habe das Option-ROM der Grafik und das des Management-Controllers genau deshalb nicht angefasst.
Sieben Einstellungen, ein Neustart, kein Setup-Besuch. Das klingt nach wenig, ändert aber die Arbeitsweise. BIOS-Einstellungen waren für mich bisher etwas, das man beim Aufbau einmal einstellt und danach ungern anfasst, weil jede Änderung einen Neustart mit Tastatur und Monitor bedeutet. Jetzt sind sie eine Datei, die ich versionieren, vergleichen und zurückspielen kann.
Der schönste Nebeneffekt war die Sache mit den Hardware P-States. Ich hatte das Verhalten meiner CPU wochenlang für eine Eigenheit des Kernels gehalten und in die falsche Richtung gesucht. Es war eine einzige Zeile in einem Menü, das vier Ebenen tief liegt und das ich beim Durchklicken nie geöffnet hatte. Eine durchsuchbare Datei aller 372 Einstellungen hätte mir das in dreissig Sekunden gezeigt.
Falls du auf demselben Board sitzt: das Auslesen ist der Beitrag davor, das Schreiben braucht keine weitere Lizenz, und die drei Stolperstellen sind der Filter, der nur als Wort funktioniert, die Gegenprobe, die vor dem Neustart nichts zeigt, und die Versuchung, mehr auf einmal zu ändern, als man beim nächsten Start noch reparieren kann.
Siehe auch: Achtundzwanzig Euro für eine Textdatei: die BIOS-Konfiguration meines Supermicro-Boards auslesen und die Serie BIOS erklärt.
Wenn dazu etwas unklar ist oder du es auf deinem Board anders erlebt hast, dürft ihr mich sehr gerne fragen.
Da hat er mir gegeben!!
Mir geht's das Herz auf. Wenn man mit seinen Videos zu #Linux und #digitalersouveranitat solche Bauern fängt, hat man genau die Zielgruppe getriggert, die man wollte ;-)
heise+ | Linux fürs Firmennetz: Von Protokollstack bis Switch-Hardware
Nicht alle Distributionen eignen sich gleichermaßen: Routing-Stacks erweitern die Protokollunterstützung, Switching-Betriebssysteme steuern die Netzwerkhardware
«Neue Malware-Welle — Arch Linux blockiert AUR-Updates:
Erneut verbreitet sich Malware über Arch User Repositorys. Daher gibt es vorerst überhaupt keine Updates für AUR.»
Das Linux einfach per-se sicherer ist glauben keine vernüpftige Admins und doch viele Nutzer*innen aber sicherlich nicht alle.
🐧 https://www.heise.de/news/Neue-Malware-Welle-Arch-Linux-blockiert-AUR-Updates-11395880.html
#linux #aur #maleware #itsicherheit #arch #archlinux #update #updates #itsec #opensource
#Linux #LUG #Worms
Heute am am Dienstag 04.08.26 gibts wieder einen Linux User Stammtisch in Worms. #Wolust
3 Rentner und 1 Server sind nicht genug.
Wir sind Studenten, Bachelor, Berufsanfänger und ich
Komm vorbei, und bring dich ein !
https://wolust.de
Arch Linux sperrt AUR-Uploads nach Malware-Welle
Grund ist ein erneuter Angriff auf die Software-Lieferkette: Unbekannte hatten mehr als 100 Pakete manipuliert und darüber gezielt Schadsoftware verteilt, die Passwörter, Browserdaten und Krypto-Wallets ausliest.
https://www.all-about-security.de/arch-linux-sperrt-aur-uploads-nach-malware-welle/
OpenLogi: open-source alternative to Logitech Options+ released in version v0.6.23 https://playingtux.com/en/articles/2026/08/openlogi-v0623-released/ #Linux #Gaming #LinuxGaming #OpenLogi #Logitech #OpenSource
Pandoc feiert 20-jähriges Jubiläum
https://linuxnews.de/pandoc-feiert-20-jaehriges-jubilaeum/ #pandoc #haskell #linux #linuxnews
«Lazyjournal vereinfacht den Zugriff auf Log-Dateien:
Nur ein fauler Admin ist ein guter Admin. In diesem Sinne vereinfacht Lazyjournal die Arbeit mit Log-Dateien, indem es sie in einer TUI bündelt. Damit lassen sich Protokolle von lokalen und entfernten Rechnern unter einer Oberfläche gezielt anschauen, filtern und auswerten.»
Ich muss zugeben, ich als TUI-Fanboy, dass ich #Lazyjournal noch nicht kenne obwohl dies was für mich ist.
🦦 https://linuxnews.de/lazyjournal-vereinfacht-den-zugriff-auf-log-dateien/
Lazyjournal vereinfacht den Zugriff auf Log-Dateien
https://linuxnews.de/lazyjournal-vereinfacht-den-zugriff-auf-log-dateien/ #lazyjournal #opensource #linux #linuxnews
pdf-inspector permet aux agents de traiter des PDFs sans attendre l'OCR : classification en ~20ms, extraction Markdown locale, 200 PDFs en 2,8s. Tables et graphiques bien gérés. Open source, écrit en Rust. ⬇️
https://github.com/firecrawl/pdf-inspector
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-G49
After a grueling 2,000-hour nationwide internet shutdown in Iran, international connectivity has finally returned to the Parch Linux servers.
This prolonged outage completely destroyed our SEO. Searching for our project yielded zero results for months, which took a massive toll on our visibility and progress. Now that we are back online, I am trying to figure out how to rebuild the lost trust of our international users and effectively promote the project again. Unfortunately, open-source news outlets have rarely covered us unless we directly request a feature.
Despite these hurdles, I am incredibly relieved that the connection is restored and people outside of Iran can finally see our work once more.
Hoping for freedom.
#FreeBSD #virtio #vsock a couple of months ago I worked on hooking https://github.com/apple/container up so it could run FreeBSD which is obviously far more useful to my community.
This was a relatively trivial exercise involving adding an additional tty and abusing it with a JSON line protocol to exchange messages with a crappy little daemon.
That worked enough, and was enough to nerd snipe much smarter people than me to look at doing it properly, using the VSOCK API.
Here’s a nice article on doing that for #linux with go - https://mdlayher.com/blog/linux-vm-sockets-in-go/
Keep an eye out on CURRENT as other parts of this land for FreeBSD:
⁃ Danilo‘s original work https://www.freebsd.org/status/report-2024-07-2024-09/vsock/
⁃ Mina‘s work which I only just discovered https://codeberg.org/meena/vsock-tests & https://codeberg.org/meena/freebsd-src/src/branch/vsock
⁃ Faraz‘s recent additions https://github.com/freebsd/freebsd-src/pull/2319 & https://github.com/freebsd/freebsd-src/pull/2322
Proton Experimental gets fixes for Far Cry 5, Nightingale, Lords of The Fallen, various Command & Conquer games https://www.gamingonlinux.com/2026/08/proton-experimental-gets-fixes-for-far-cry-5-nightingale-lords-of-the-fallen-various-command-conquer-games/
In meiner Serie BIOS erklärt arbeite ich mich durch das Setup eines Supermicro X12SPi-TF. Die Grundlage dafür war bisher eine Bildschirmaufnahme: ich bin durch alle Menüs gelaufen, habe das Video in Einzelbilder zerlegt und die Werte abgetippt. Das funktioniert, ist aber Handarbeit, und Handarbeit übersieht Dinge.
Was ich eigentlich wollte, ist eine Datei. Eine Liste aller Optionen mit ihrem aktuellen Wert, maschinenlesbar, damit ich sie durchsuchen und mit einem späteren Stand vergleichen kann. Das Board kann das. Es rückt es nur nicht heraus.
Der erste Weg führt über Redfish, die HTTP-Schnittstelle des Management-Controllers. Der passende Endpunkt existiert, antwortet aber nicht mit Daten:
GET /redfish/v1/Systems/1/Bios HTTP 403 "MessageId": "SMC.1.0.OemLicenseNotPassed", "Message": "Not licensed to perform this request. The following licenses DCMS were needed"
Der zweite Weg ist Supermicros eigenes Kommandozeilenwerkzeug. Es heißt inzwischen SAA, SuperServer Automation Assistant, und liegt dem BIOS-Paket bei. Es kann genau das, was ich suche, und arbeitet dabei nicht über das Netz, sondern direkt über die Firmware:
./saa -c GetCurrentBiosCfg --file bios-current.xml ExitCode 80 Node product key is not activated. One of the node product key (SFT-OOB-LIC or SFT-DCMS-SINGLE) should be activated
Der dritte Weg wäre, die UEFI-Variablen selbst zu lesen. Die liegen unter /sys/firmware/efi/efivars/, und tatsächlich gibt es dort Einträge, die nach BIOS-Einstellungen aussehen. Nur sind das undurchsichtige Datenblöcke ohne die Zuordnungstabelle des Boards. Man sieht Bytes, aber man weiß nicht, welches Byte welcher Menüpunkt ist.
Drei unabhängige Wege, dieselbe Sperre. An dieser Stelle habe ich in meinen Notizen etwas geschrieben, das sich später als falsch herausstellte. Dazu komme ich am Ende.
Lies die beiden Fehlermeldungen oben noch einmal nebeneinander. Sie verlangen nicht das Gleiche. Redfish nennt namentlich DCMS. SAA nennt SFT-OOB-LIC oder SFT-DCMS-SINGLE, also eine von zweien.
Das ist der Punkt, an dem man leicht zu viel Geld ausgibt. Supermicro verkauft für diese Board-Generation zwei Lizenzen. Die kleine heißt Out of Band, kurz OOB. Die große heißt DCMS und kostet etwa das Fünffache. Wer nur die Fehlermeldung von Redfish liest, kauft DCMS. Wer die Fehlermeldung von SAA liest, merkt, dass es für seinen Zweck auch die kleine tut.
Nebenbei taucht dieselbe Lizenz an einer Stelle auf, die ich nicht erwartet hätte. Im Handbuch zum Board stehen bei zwei Sicherheitseinstellungen, nämlich beim Abschalten der vorderen und der hinteren USB-Anschlüsse, die Worte *available for configuration if the SFT-DCMS-SINGLE license is installed*. Es fehlen also nicht nur Management-Schnittstellen. Es fehlen zwei Menüpunkte im Setup selbst.
Bei dieser Recherche stößt man unweigerlich auf ein Werkzeug auf GitHub, das Supermicro- Produktschlüssel behandelt. Für die Generationen 9 bis 11 kann es welche erzeugen, denn dort war der Schlüssel ein berechneter Wert über die MAC-Adresse des Management-Controllers.
Für die zwölfte Generation, also mein Board, kann es das nicht, und das Projekt schreibt es selbst deutlich hin: dieses Format lässt sich mit dem Werkzeug prüfen, aber nicht erzeugen. Der Grund ist, dass Supermicro umgestellt hat. Der Schlüssel ist heute eine von Supermicro signierte Datei, und der Management-Controller prüft die Signatur gegen einen öffentlichen Schlüssel in seiner eigenen Firmware. Ohne den privaten Schlüssel des Herstellers entsteht da nichts Gültiges.
Mein Board bestätigt das Format auf Nachfrage:
Node Product Key Format..........JSON
Damit ist die naheliegende Abkürzung nicht moralisch, sondern rechnerisch verschlossen. Man muss die Frage also wirklich beantworten.
Gekauft habe ich im Supermicro eStore. 23,67 Euro netto, 28,17 Euro brutto. Bei der Bestellung wählt man das Mainboard-Modell aus einer Liste, und mein X12SPi-TF steht darin. Das ist erwähnenswert, weil mehrere Händlerbeschreibungen dieser Lizenz nur X10 und X11 nennen. Diese Texte sind veraltet.
Jetzt kommt der Teil, den ich falsch erwartet hatte. Ich dachte, ich kaufe und bekomme einen Schlüssel. So läuft es nicht. Man bekommt zunächst nur eine Zertifikatsnummer und die Aufforderung, den Schlüssel selbst zu erzeugen. Dafür meldet man sich im Store an, wählt die Bestellung aus und gibt an, für welches Gerät der Schlüssel gelten soll: entweder die MAC-Adresse des Management-Controllers oder die Seriennummer des Boards.
Die Bindung an die Hardware entsteht also nicht beim Verkauf, sondern beim Käufer, im Moment des Erzeugens. Das ist konsequent, denn Supermicro weiß beim Verkauf ja gar nicht, in welchem Gerät die Lizenz landen soll. Es heißt aber auch, dass man sich vertippen kann, und dann hat man einen Schlüssel für ein Gerät, das es nicht gibt.
Der Ablauf war zügig. Bestellbestätigung um 14:17, die Freigabe zum Erzeugen um 14:42, der fertige Schlüssel um 14:44, aktiv im Board um 14:46. Unter einer halben Stunde vom Klick bis zur Funktion, und die zugesagte Stunde war damit nicht zu optimistisch.
Der Schlüssel selbst ist eine kleine Textdatei, benannt nach der MAC-Adresse, mit einem JSON-Objekt darin: Lizenzname, Ausstellungsdatum und eine lange Signatur. Mehr ist es nicht.
Eine Kuriosität am Rande: die Mail mit dieser Textdatei trägt einen Ausfuhrhinweis der US-Regierung. Die Ware sei nur für das Bestimmungsland freigegeben und dürfe nicht weiterveräußert oder an Dritte weitergegeben werden. Das gilt hier für eine Datei von wenigen hundert Byte, deren einzige Wirkung darin besteht, in einem Verwaltungscontroller einen Menüpunkt sichtbar zu machen.
Supermicro nennt vier Wege, den Schlüssel einzuspielen: die Weboberfläche des Management-Controllers, das Werkzeug SUM, die Verwaltungssoftware SSM und Redfish. Die Weboberfläche ist der ruhigste Weg, weil sie eine Bestätigungsseite hat, und bei einem Schlüssel, der genau einmal auf genau ein Gerät passt, will man die haben.
Wer es lieber skriptet, findet die passenden Endpunkte im Management-Controller, und die sind auch ohne Lizenz erreichbar:
POST /redfish/v1/Managers/1/LicenseManager/Actions/LicenseManager.ActivateLicense POST /redfish/v1/Managers/1/LicenseManager/Actions/LicenseManager.ClearLicense GET /redfish/v1/Managers/1/LicenseManager/QueryLicense
Die Abfrage danach gibt genau den Inhalt der Datei zurück, die man hochgeladen hat. Der Controller speichert den Schlüssel also unverändert und prüft ihn bei Bedarf.
Nach der Aktivierung meldet SAA einen anderen Zustand:
Node Product Key Activated.......SFT-OOB-LIC Feature Toggled On...............Yes BMC Supports OOB BIOS Config.....Yes BIOS Supports OOB BIOS Config....Yes
Und dasselbe Kommando, das vorher mit ExitCode 80 abgebrochen ist, läuft durch:
./saa -c GetCurrentBiosCfg --file bios-current.xml File "bios-current.xml" is created.
Heraus kommt eine Datei von 260 Kilobyte mit 60 Menüs und 372 Einstellungen. Zum Vergleich: das offizielle Handbuch beschreibt 180 Optionen. Und die Datei enthält pro Eintrag mehr, als man im Setup sieht, nämlich zusätzlich den Auslieferungszustand und den Hilfetext:
<Setting name="Quiet Boot" checkedStatus="Unchecked" type="CheckBox">
<Information>
<DefaultStatus>Checked</DefaultStatus>
<Help>Enables or disables Quiet Boot option</Help>
</Information>
</Setting>Der Auslieferungszustand ist der eigentliche Gewinn. Damit sehe ich auf einen Blick, welche Einstellungen an dieser Maschine vom Werkszustand abweichen, und das ist genau die Liste, die man nach einem BIOS-Update wiederherstellen will.
Zwei komplette Hauptmenüs standen darin, die ich beim Durchklicken schlicht nie geöffnet hatte. Und ein Untermenü, das ich in meinen Notizen als offene Lücke geführt habe, war vollständig enthalten. So viel zum Thema Handarbeit übersieht Dinge.
Jetzt der ehrliche Teil, und der ist mir wichtiger als der Erfolg. Ich hatte vor dem Kauf drei Messungen aufgeschrieben, damit ich hinterher vergleichen kann. Drei von vier Erwartungen sind eingetroffen, und die vierte war die interessante.
Der Redfish-Endpunkt, mit dem alles anfing, antwortet weiterhin mit 403 und verlangt weiterhin DCMS. Die kleine Lizenz öffnet den Weg über SAA und eben nicht den über Redfish. Wer also ausdrücklich die Netzwerkschnittstelle braucht, etwa weil er hunderte Server ohne Betriebssystem konfigurieren will, kommt um die große Lizenz nicht herum.
Das hat eine Nebenwirkung, die ich nicht auf dem Zettel hatte. Der Firmware-Updater fwupd kann inzwischen mit Supermicros Redfish-Schnittstelle sprechen. Er sieht bei mir aber nur zwei von zwölf Firmware-Komponenten, und die beiden BIOS-Einträge fehlen. Der Grund ist, dass er zur Identifikation eines Geräts das Objekt lesen muss, das hinter genau diesem gesperrten Endpunkt liegt. Die Lizenz sperrt hier also nicht das Aktualisieren, sondern das Erkennen, und das Aktualisieren scheitert dann als Folge. Nach der Aktivierung sind es unverändert zwei von zwölf.
Und der dritte Weg, den ich vorher gar nicht gesehen hatte: fwupd sieht den BIOS-Speicher auch ganz direkt am Chipsatz, liest die Version korrekt aus und verweigert trotzdem den Dienst:
Internal SPI Controller (BIOS):
Aktuelle Version: 2.5
Probleme: Device firmware has been lockedDas ist keine Lizenzsache, und daran hat sich erwartungsgemäß nichts geändert. Der Speicher ist auf Chipsatzebene schreibgeschützt, weil das Board mit aktivem Root of Trust läuft. Ein BIOS, das sich aus einem laufenden Betriebssystem heraus überschreiben lässt, wäre genau die Lücke, die dieser Schutz verhindern soll. Der Reflex sagt hier Hersteller blockiert Linux. Tatsächlich blockiert eine Sicherheitsfunktion, die ich selbst haben will.
Bleibt der Satz, den ich weiter oben angekündigt habe. In meinen Notizen stand nach der dritten Absage sinngemäß: drei unabhängige Wege, dieselbe Sperre, nicht erneut versuchen.
Gemessen hatte ich: ohne Lizenz gibt es keinen Weg. Aufgeschrieben hatte ich: es gibt keinen Weg. Und die dritte Möglichkeit, nämlich die Lizenz einfach zu kaufen, kam in meiner Aufzählung der drei gesperrten Wege überhaupt nicht vor, obwohl das Werkzeug sie mir wörtlich genannt hatte.
Dass drei Wege an derselben Sperre scheitern, beweist, dass es eine Sperre gibt. Es beweist nicht, dass sie unüberwindbar ist. Wenn eine Fehlermeldung den Namen der fehlenden Berechtigung nennt, ist das ein Hinweis und kein Schlusspunkt.
Für einen einzelnen Rechner zu Hause: nur, wenn man Freude daran hat. Ich hätte die Werte auch weiter abschreiben können, und der Screencast hat mir immerhin eine fünfzehnteilige Serie eingebracht, die aus einer XML-Datei nie entstanden wäre. Man liest eine Datei nicht so aufmerksam wie ein Menü, durch das man sich selbst klicken muss.
Für alles, was mehr als eine Handvoll Maschinen betrifft, sieht es anders aus. Konfiguration auslesen, versionieren, nach einem Update wieder einspielen und im Zweifel gegen einen bekannten Stand vergleichen, das ist bei 28 Euro pro Board keine Diskussion. Ärgerlich finde ich nur, dass man diese Rechnung überhaupt aufmachen muss. Es geht um das Auslesen der eigenen Einstellungen auf der eigenen Hardware.
Wenn du auf demselben Board sitzt und dieselbe Fehlermeldung vor dir hast, ist die Kurzfassung: für die Konfiguration reicht die kleine Lizenz, für Redfish brauchst du die große, und für Firmware-Updates brauchst du bei einem X12 mit Root of Trust vermutlich gar keine.
Siehe auch: BIOS erklärt, Teil 1: ein Serverboard als Workstation und der Weg ins Setup und die übrigen Folgen unter BIOS & Firmware.
Wenn dazu etwas unklar ist oder du es auf deinem Board anders erlebt hast, dürft ihr mich sehr gerne fragen.
Wine 11.15 brings improvements for Wayland, more format conversions in WindowsCodecs https://www.gamingonlinux.com/2026/08/wine-11-15-brings-improvements-for-wayland-more-format-conversions-in-windowscodecs/
Alexandrie : wiki self-hosted open source à déployer en une commande Docker, avec un éditeur Markdown étendu (LaTeX, diagrammes, blocs personnalisés), gestion multi-équipes, SSO OIDC et backups S3. PWA offline-first, fonctionne sans dépendance cloud. ⬇️
https://github.com/Smaug6739/Alexandrie
#SelfHosted #OpenSource #FOSS #Linux
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-Qi6
Kaneo : un outil de gestion de projet open source (MIT) pensé pour rester hors du chemin. Interface minimaliste, self-hosted, déploiement via Docker Compose ou en une commande avec le CLI drim. 4 000 étoiles sur GitHub. ⬇️
https://github.com/usekaneo/kaneo
#SelfHosted #OpenSource #FOSS #Linux
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-Vey
Mein Computerzirkus mit #linux
3.) Medion Akoya E2228T mit Touch von 2017.
360° umklappbar. Akku ausreichend, CPU schwach, RAM schwach, für mobilen Einsatz z.B. Wolust
Das Team von Anoxinon hat ganze Arbeit geleistet und den Mastodon Server wieder in einen funktionsfähigen Zustand gebracht. Lange hat es gedauert bis der ganze Queue abgearbeitet wurde, doch nun ist es so weit. Ich freue mich euch wieder von hier aus mit frischen News zu #Linux #Selfhosting #Android und mehr zu versorgen. Folgt mir auch auf PeerTube wenn ihr direkt über neue Videos von mir informiert werden möchtet: https://tube.sp-codes.de/c/tuxwiz/videos
superfile : un gestionnaire de fichiers pour le terminal, construit avec Go et Bubble Tea. Panneaux multiples, recherche fuzzy, prévisualisation d'images, thèmes (Catppuccin, Nord, Dracula…), plugins. Open source, MIT. ⬇️
https://superfile.dev/
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-iB7
usbtree : visualiser l'arbre de périphériques USB dans le terminal, sans root, sans libusb. Binaire statique en Rust, moins de 2 Mo. Sur Linux, on obtient en plus des métriques d'activité en temps réel par device (URBs/s, et bytes/s via usbmon en root). ⬇️
https://github.com/gnomeria/usbtree
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-3Ha
Signal updates like this are nice.
I installed it again on my desktop
Linux Desktop Market Share Surpasses 10% in North America
https://linuxiac.com/linux-desktop-market-share-surpasses-10-in-north-america/
Comments: https://news.ycombinator.com/item?id=49146122
#HackerNews #Linux #Desktop #Market #Share #Surpasses #10% #in #North #America
linux #desktop #market #share #north #america #open #source #technology #growth
Less than an hour later, MX Linux — a lightweight distro — is running smoothly on my 11-inch MacBook Air from 2010, I'm impressed! 🤩
Zum Wochenende: Die Shortstory
Was haltet ihr von der Idee, bei uns gelegentlich Kurzgeschichten zu lesen? Könnt ihr euch selbst vorstellen, bei diesem Format mitzuwirken?
CCapture.js v2.0 capture des animations canvas à framerate fixe sans que le rendu temps réel ne fausse le résultat. Rewrite finalisé avec ES modules, WebCodecs et motion blur GPU. ⬇️
https://github.com/spite/ccapture.js
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-HWE
Über 600'000 gebannte IPs auf einem Forgejo-System. Was zunächst nur als dauerhaft hohe CPU-Last in Checkmk auffiel, entpuppte sich als massiver Crawler-Traffic.
Mit Log-Analyse und gezielten Fail2Ban-Jails konnten wir die Zugriffe automatisiert blockieren. Die CPU-Last fiel danach drastisch.
Den technischen Ablauf habe ich im Blog festgehalten:
https://www.onesystems.ch/blog/wie-monitoring-und-fail2ban-ueber-600000-ips-blockiert-haben/
Here are our #meetups for #August
**#Coffee #Meetup (virtual)**
2026-08-08 15:00
Online event
https://www.meetup.com/dublin-linux-community/events/315641272/
**#Summer #Social @ The #Circular, #Rialto**
2026-08-15 18:00
https://www.meetup.com/dublin-linux-community/events/315850246/
**#Monthly Meetup in the #pub**
2026-08-22 15:00
#MossLane
https://www.meetup.com/dublin-linux-community/events/315262198/
#Linux #KDE
Gerade wieder neu #entdeckt der #Klipper (Zwischenablage) hat Aktion. Mit etwas grep und Bash-Geschick kann man sich eine Videodownloader basteln. zB. Eine URL direkt an yt-dlp schicken. 😃 👍
https://userbase.kde.org/Klipper/de
MorphoHDL : un langage minimaliste pour faire "pousser" des circuits booléens par division cellulaire plutôt que par câblage manuel. ⬇️
https://paradigms-of-intelligence.github.io/morpho/
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-jns
Installation de #mobian sur le OnePlus6t mais cette fois avec #plasmamobile comme DE.
A tester ce week-end 😄
heise+ | FAQ: Desinfec’t 2026
Wir haben Desinfec’t 2026 vollständig überarbeitet. Hier bündeln wir die Antworten auf häufig gestellte Fragen.
#ct #Desinfect #Hardware #IT #Linux #SecureBoot #UEFI #USBStick #news
Suche ein #Linux UI, das mit merkwürdigen Auflösungen zurecht kommt.
480 x 1920
Mint und #Cinnamon ist leider raus.
Ist da vielleicht #Gnome das UI der Wahl?
Eins zufällig damit Erfahrung?
Will nur einen Bowser haben, der mir #HomeAssistant anzeigt, so wie im Bild.
#Linux- #Dateisystem & #Root einfach erklärt (inkl. USB-Stick einbinden!)
Du steigst gerade bei #Linux ein und verstehst die #Ordnerstruktur nicht? Welcher Ordner macht was? Wo liegt mein #USB-Stick? Und was bedeutet dieses ominöse / (Root) eigentlich? 🐧
In diesem Video bringen wir endlich Licht ins Dunkel! Wir schauen uns die #Linux- #Ordnerstruktur verständlich an und demonstrieren das Ganze direkt am praktischen Beispiel: Einem USB-Stick.
scriptc : un compilateur TypeScript-to-native par Vercel Labs, pas de Node, pas de V8 dans le binaire. Le même TypeScript que vous écrivez pour Node, compilé en exécutable natif de 170 Ko, démarrage en 2 ms, 1 à 4 Mo de RAM. ⬇️
https://github.com/vercel-labs/scriptc
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-wVT
MiniDebConf Winterthur - Debian macht Schule!
Am 29. und 30. August 2026 findet die MiniDebConf Winterthur statt. Veranstaltungsort ist der „CAMPO“ in Winterthur.
#Debian #Schule #Konferenz #Linux
https://gnulinux.ch/minidebconf-winterthur-debian-macht-schule
Imagine not supporting Linux gaming in 2026. Every game no matter how new and advanced gets Steam Deck Verified status these days and yet League of Legends or Fortnite or EA Sports FC or Call of Duty have this arbitrary thing blocking out an increasingly significant percentage of players. It's getting more ridiculous with each month.
#linuxgaming #linux #gaming #videogames #anticheat #cheating
Boosts willkommen: Ein Kleinunternehmen sucht IT Betreuung.
Setup: 1 Server, 6 PCs/Laptops, Windows und Linux gemischt, Fernzugriff, Benutzer und Berechtigungen, ERP, Backup.
Gesucht ist kein Großanbieter, sondern ein kleines Team mit persönlicher Betreuung. Vor Ort im Raum Nürnberg wäre ideal.
Kennt jemand jemanden? Gerne per DM.
#Linux #Bash
Wenn man beim #Download merkt, dass es ein wenig hakt, kann man die Quelle auch mehrfach kontaktieren. #Aria2 kann das.
Ein Kommando mit mehreren Parametern um einen Server zu starten und eine Firefoxerweiterung dazu.
https://gist.github.com/dewomser/65162938108601d8dfe5a8b872803ed3
⋅ Your favorite Linux distro probably descends from one of these three operating systems
− https://www.makeuseof.com/favorite-linux-distro-descends-from-one-these-three-operating-systems/
Tastenkombinationen in der Desktop-Umgebung
Der Artikel beschreibt, wie ich mit Tastenkombinationen z. B. Anwendungen in den Vordergrund hole bzw. starte. Grundlage sind ein sehr einfaches Bash-Skript und die Einstellungsmöglichkeiten der Desktop-Umgebung.
#Tastatur #Konfiguration #Desktop_Umgebung #Linux
https://gnulinux.ch/tastenkombinationen-in-der-desktop-umgebung
RE: https://social.vivaldi.net/@Vivaldi/117047776154100894
Another unique @Vivaldi service. Enjoy!
#Vivaldi #Browser #Internet #Radio #Windows #Macos #Linux
We've been working on a fun little project for a while and we'd love to welcome you to take the first look at it:
Everyone, this is our newest community service: Vivaldi Radio.
Vivaldi Radio, this is the fediverse!!![]()
Vivaldi Radio is a free radio streaming service where you can discover radio stations from all over the world without being tracked, just like how radio used to be. No popups, no suggestions. Just you and the music.
This is a work in progress, we're still adding stations and polishing things, but we’re excited to hear about your first impressions and improvement suggestions. ❤️
Visit radio.vivaldi.net to start exploring! 🎧
qemu-system-x86_64 \my host system is #Debian #Linux running on #X11. The error message after login with
-machine q35 -enable-kvm \
-m 2g -cpu host \
-vga std \
-drive "media=disk,if=virtio,file=$HOME/Downloads/9front-11952.amd64.qcow2" \
-netdev user,id=vioif0,hostfwd=tcp::5699-:22 \
-device virtio-net-pci,netdev=vioif0 \
-no-reboot \
-daemonize
glenda was not very informative though:hjfs: fs is /dev/sd00/fs#Unix #FOSS #AskFedi #SDFinit: starting /bin/rc
bind: #i: no frame buffer
rio: cannot open display: initdisplay: /dev/draw/new: file does not exist: '/dev/draw'
init: rc exit status: rc 217: rio 326: display open
init: starting /bin/rc
"This Quarter in KDE #DigitalSovereignty" brings the news that...
Automated testing for #Plasma, #KDELinux and KDE's suite of PIM apps (email, calendars, contacts, etc.) has been boosted; the work that will automatically configure accounts is under way; users will be able to restore data from Btrfs snapshots from apps like Dolphin; and much more.
https://blogs.kde.org/2026/08/06/this-quarter-in-kde-digital-sovereignty-q2-2026/
Neues von Minetosh online (https://www.minetoshsoft.com):
Update von "AmphiCalc-1" zur Berechnung und Klassifizierung von Amphibolen!
Die Probleme mit Chromium-basierten Browsern (z.B. Vivaldi) sind behoben. Erfolgreich getestet mit #chromium und #vivaldi unter #linux, sowie #chrome unter #android.
Nochmals: Sorry!
#Minetosh #geologie #geology #géologie #amphibol #amphibole #LeakeDiagramm, #AcfDiagramm, #AfmDiagramm #LeakeDiagram, #AcfDiagram, #AfmDiagram #LeakeDiagramme, #AcfDiagramme, #AfmDiagramme #leakediagram, #acfdiagram, #afmdiagram #geochemie #geochemistry #géochimie #mineralogie #mineralogy #metamorphose #metamorphism #métamorphose #gesteine #rocks #roches #linux #android #firefox #chrome #chromium #vivaldi #librewolf #waterfox
🚨LIVE NOW!🚨 DevOps/SRE Instructor Livestream
On this lovely Thursday, let's chat about #Linux #SystemAdministration, #SelfHosting, or any other topic in the #DevOps and #SRE space you're interested in!
Owncast: https://live.monospacementor.com/
#Linux #Bash
Schmierblatt, ein Einzeiler. Kann man wunderbar mit einem Alias ins .bashrc einbauen.
cat << eof > notiz_$(date '+%Y_%m_%d_%H_%M_%S').txt
https://gist.github.com/dewomser/c5e7ab7f774bc3871404a636d8f32a21
ps options and piping the result through grep.With px, it can be as simple as:
./px -t cwmThePID USER %CPU VSZ RSS START ELAPSED CPUTIME COMMAND
15077 r1w1s1 0.0 64M 9.1M 10:16 5h33m 0:00 /usr/bin/cwm
-t option displays threads as well, making it easy to see which one is using CPU and how long the process has been running.px does not try to replace ps, top, or htop. It focuses on one common daily task: finding a process quickly and getting useful information without memorizing complex options or using grep.
px firefoxSmall, direct, and very useful for everyday terminal work.
px -f "python app"
px 11690
px -t firefox
Die Shortstory: Klebezettel 007
Eine Shortstory und ein Experiment erwarten euch. Wir möchten gerne sehen, ob - jenseits von Technik-Artikeln - auch hin und wieder Kurzgeschichten für euch interessant sind.
Himalaya v2 : un CLI en Rust pour gérer ses emails depuis le terminal. IMAP, SMTP, JMAP, Gmail, Outlook, config auto au premier lancement, sortie JSON, support multi-comptes en TOML. ⬇️
https://github.com/pimalaya/himalaya
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-Mrn
Manche Bauteile überleben ihren eigenen Sinn. Diese Karte liegt seit Jahren bei mir herum, hat einmal einen echten Job gemacht, und heute ist sie ein Stück Technikgeschichte mit Kühlkörper. Also habe ich sie in meine Workstation gesteckt, einfach um zu sehen, was sie noch kann und wie sie sich gegen eine aktuelle CPU schlägt. Das Ergebnis ist interessanter geworden als erwartet, aber nicht auf die Art, die ich erwartet hatte.
Die Vorgeschichte: irgendwann lief bei mir ein FreeBSD-Server mit einer Intel-Atom-CPU, und diese CPU hatte kein AES-NI. Auf so einer Maschine verschlüsselte Platten zu betreiben ist zäh. Also kam eine Intel QuickAssist Adapter 8950-SCCP rein, eine PCIe-Steckkarte, die genau das in Hardware macht. Und sie hat ihren Job gut gemacht: weniger CPU-Last, mehr Durchsatz am Storage. Später wanderte sie in einen älteren Xeon, immer noch FreeBSD, immer noch GELI. FreeBSD 14 hat sie produktiv nie gesehen.
So hing sie im Server: Low Profile, PCIe x8, ein gerippter Aluklotz über fast der ganzen Platine. Lüfter gibt es keinen, den soll das Rack liefern.
Das ist der Teil, den heute fast keiner mehr auf dem Schirm hat: AES in der CPU war jahrelang keine Selbstverständlichkeit. AES-NI kam 2010 mit Westmere, aber Intel hat den Befehlssatz danach als Segmentierungsmerkmal benutzt. Bei vielen Atom-, Celeron- und Pentium-Modellen fehlte er, und zwar genau in den stromsparenden Storage- und Firewall-Plattformen, in denen man ihn am dringendsten gebraucht hätte. Ohne AES-NI rechnet eine CPU AES über Tabellen-Lookups, also grob eine Größenordnung langsamer, und obendrein mit Cache-Timing-Seitenkanälen, die man erst mit Aufwand wieder zubekommt.
Bei ARM war es lange genauso, und da ist es sogar noch besser zu greifen. ARMv7 hatte überhaupt keine AES-Befehle. Die Cryptography Extensions von ARMv8-A sind bis heute optional, ein Chiphersteller kann sie einfach weglassen. Der Raspberry Pi ist das schönste Beispiel: alle 64-Bit-fähigen Pis bis einschließlich Modell 4 haben keine AES-Beschleunigung, erst der BCM2712 im Pi 5 bringt sie mit. Wer sich mal gefragt hat, warum verschlüsselte Backups auf einem Pi 4 so quälend langsam sind: das ist der Grund, und es ist kein Softwareproblem.
Dazu kommt der zweite Teil der Geschichte. Verschlüsselung war lange die Ausnahme, nicht die Regel. Wer 2010 eine Webseite betrieben hat, hat HTTPS für den Loginbereich angeschaltet und sonst nirgends, weil es teuer war, weil Zertifikate Geld kosteten und weil TLS auf schwacher Hardware wirklich weh tat. Erst mit Snowden und vor allem mit dem Druck, den die Browserhersteller danach aufgebaut haben, kippte das ins Gegenteil. Plötzlich sollte alles verschlüsselt sein, und zwar sofort. In dieser Phase steckten in Loadbalancern und Reverse Proxies routinemäßig Offload-Karten, für Krypto oder für Kompression, weil die Allzweck-CPU dahinter das schlicht nicht mitgemacht hat. Diese Karte kommt aus genau dieser Zeit.
Auf dem Aufkleber steht INTEL(R) QUICK ASSIST ADAPTER 8950-SCCP, Bestellnummer IQA89501G1P5, Intel MM 929848, Herstelldatum 09/2017, Made in Malaysia. Der Chip darauf ist allerdings älter als die Karte: die Generation stammt aus Q4 2013.
Die Rückseite mit dem Typenschild. Der blaue Aufkleber ist ein Echtheitsmerkmal von yottamark, dazu KCC-Zulassung, UL-Nummer und das PCI-Express-Logo.
SCCP steht für Single Coleto Creek PCIe. Coleto Creek ist der interne Codename, der Beschleunigerchip heißt DH895xCC, und Intel hat ihn als Intel Communications Chipset 8955 verkauft. Die PCI-ID ist 8086:0435. Bei Intel ist die Karte längst End of Life, abgekündigt zusammen mit ihrem Nachfolger 8960.
Die Datenblattwerte, also Herstellerangaben und nichts von mir Gemessenes:
Angabe
Wert
Bulk-Krypto
bis 50 Gbit/s
Kompression
bis 24 Gbit/s
Host-Interface
PCIe Gen3 x8
SR-IOV
1 Physical Function, 32 Virtual Functions
Leistungsaufnahme
maximal etwa 40 W
Umgebungstemperatur
0 bis 55 Grad Celsius
Gebaut wurde das Ding nicht für Workstations, sondern für Telco und Netzwerk: VPN-Konzentratoren, IPsec-Gateways, TLS-Terminierung, Deduplizierungs-Appliances. 50 Gbit/s Bulk-Krypto in einer Low-Profile-Karte war 2013 eine Ansage. Mein Lieblingsdetail aus dem Featureset ist aber ein anderes: die Karte kann Kasumi und Snow 3G in Hardware, also die Mobilfunkchiffren aus 3G und LTE. Das ist so wunderbar spezifisch, dass man sofort weiß, in welchem Blech sie eigentlich stecken sollte, und das ist bestimmt kein Tower unter einem Schreibtisch.
Jetzt wird es hübsch. Unter dem Kühlkörper sitzen nämlich nicht ein großer Chip, sondern zwei, und dazu eine Leerstelle.
Links U5, der Coleto Creek als Flip-Chip ohne Heatspreader. Mittig U1, der PLX PEX 8724. Rechts neben dem Slotblech die leere Fläche, um die es weiter unten geht.
Links auf Position U5 liegt der Coleto Creek als Flip-Chip-BGA ohne Heatspreader. Das nackte Silizium liegt frei, man schaut direkt auf den Die. Das sieht man heute selten und es ist genau der Grund, warum ich den Kühlkörper überhaupt abgeschraubt habe.
Mittig auf U1 sitzt aber ein Chip, den ich dort nicht erwartet hätte: ein PLX Technology PEX8724-CA80BC G, Fertigungscode 1703, also Kalenderwoche 3 in 2017, gefertigt in Taiwan. Das ist ein PCIe-Gen3-Switch mit 24 Lanes und 6 Ports. Auf einer Karte, die nur einen einzigen Beschleunigerchip trägt, ist ein Switch zunächst mal erklärungsbedürftig.
Rechts, direkt neben dem Slotblech, liegt dann noch eine komplett unbestückte BGA-Fläche. Ein vollständiges, leeres Lötpad-Raster in Chipgröße. Da war offensichtlich mal etwas geplant.
Der leere Platz aus der Nähe. Ein Platz in Chipgröße, alles drumherum bestückt, nur hier fehlt der Chip.
Wenn man Switch und Leerstelle zusammennimmt, geht eine Rechnung verdächtig glatt auf:
PEX 8724 = 24 Lanes x8 Upstream zum Slot + x8 zum bestückten Coleto Creek (U5) + x8 zu einem weiteren, unbestückten Platz = 24
Und der Kernel liefert dazu tatsächlich einen passenden Befund: der Downstream-Port c4:08.0 des Switches existiert, hat LnkCap Width x8 und ist untrainiert, also LnkSta Width x0. Da hängt nichts dran.
Und hier muss ich mich selbst bremsen, denn die Versuchung ist groß. Belegt ist nur: in der Switch-Konfiguration sind diesem Port acht Lanes zugewiesen, und es hängt nichts daran. Nicht belegt ist, dass diese acht Lanes zu dem leeren Platz führen. Das könnte genauso ein nie herausgeführter Port sein oder für etwas völlig anderes gedacht gewesen sein. Die Lötfläche macht die Deutung attraktiv, und mehr ist es nicht. Wer es wirklich wissen will, müsste die Lanes am Board durchmessen oder das EEPROM des PEX8724 auslesen und dort in die Port Configuration schauen. Beides habe ich nicht gemacht.
Genauso vorsichtig muss man mit der naheliegenden Erzählung sein, Intel habe hier dieselbe Platine für eine Dual-Chip-Variante vorgesehen. Das passt zur Namenslogik, das S in SCCP steht ja für Single, und es passt zum leeren Platz. Eine offizielle Bestätigung für ein 8950-DCCP oder Ähnliches habe ich trotzdem nicht gefunden. Also: plausible Deutung, kein Faktum.
Am Rand der Platine sitzt außerdem noch ein schwarzer, geschirmter Steckverbinder mit der Bezeichnung J8. Der macht das, was bei einer Grafikkarte der Zusatzstecker macht: Stromversorgung direkt vom Netzteil. Das passt zu den bis zu 40 Watt aus dem Datenblatt, denn ein PCIe-Steckplatz dieser Bauform liefert nach Spezifikation nur 25 Watt. Dazu mehrere Spannungsregler mit Speicherdrosseln, ein 100-MHz-Quarz und Siebdruck-Markierungen für x1, x4 und x8 am Kartenrand.
Die Karte steckt jetzt in einem Slot mit PCIe 4.0 x8 an einem Xeon Gold 5315Y, unter Linux Mint mit Kernel 7.0. Und dann passiert genau das, was man sich von einem In-Kernel-Treiber wünscht: nichts Besonderes.
[ 36.915329] dh895xcc 0000:c5:00.0: enabling device (0140 -> 0142) [ 37.744772] dh895xcc 0000:c5:00.0: qat_dev0 started 12 acceleration engines
Kein Paket installiert, keine Firmware nachgeladen, keine Konfigurationsdatei, kein adf_ctl. Die Module qat_dh895xcc und intel_qat laden von allein, die Firmware qat_895xcc.bin.zst lag über linux-firmware längst auf der Platte. Zwölf Acceleration Engines starten, alle Selftests bestehen, der Heartbeat meldet sich gesund. Ein Chip von 2013 auf einer Karte von 2017 in einem Board von 2021 unter einem Kernel von 2026, und es ist ein Nichtereignis. Das ist ein starkes Argument für In-Tree-Treiber, und es wird weiter unten noch bitter kontrastiert.
Was man zum Prüfen braucht:
lspci -nn | grep -i qat dmesg | grep -i dh895 grep -c qat /proc/crypto ls /sys/kernel/debug/qat_dh895xcc_0000:c5:00.0/
Das debugfs-Verzeichnis ist die interessanteste Fundstelle der ganzen Karte. Dort liegt in dev_cfg die komplette, vom Treiber selbst generierte Instanzkonfiguration: 16 Krypto-Instanzen, 16 Kompressions-Instanzen, je Instanz 512 gleichzeitige symmetrische oder 128 asymmetrische Requests, dazu Interrupt-Coalescing und ein Heartbeat-Timer. In fw_counters stehen Requests und Responses pro Acceleration Engine, und das ist später mein Beweis, dass die Karte wirklich rechnet und nicht die CPU heimlich einspringt. Dazu heartbeat/status, cnv_errors und 32 Ring-Banks unter transport/.
Jetzt löst sich auch auf, warum der PLX-Switch da ist. So sieht der Baum aus:
c2:02.0 Root Port #17 LnkCap Gen4 x8 -> LnkSta Gen3 x8
c3:00.0 PLX PEX 8724 Upstream -> LnkSta Gen3 x8
c4:00.0 Downstream Port #0 -> LnkSta Gen2 x8
c5:00.0 Intel DH895XCC Series QAT [8086:0435]
c4:08.0 Downstream Port #8 -> LnkSta x0 (leer)Host-seitig läuft die Karte mit Gen3 x8, also 8 GT/s. Chip-seitig kommen aber nur Gen2 x8 an, also 5 GT/s. Der Coleto Creek ist ein Gen2-Baustein, und damit die Karte am Steckplatz trotzdem als moderne Gen3-x8-Karte auftritt, sitzt der PEX 8724 als Übersetzer dazwischen. Der QAT-Endpunkt behauptet in seiner LnkCap sogar x16, verdrahtet sind aber acht Lanes.
Das ist der erste wirklich belastbare Befund des Tages: das Nadelöhr sitzt auf der Karte, nicht im Steckplatz und nicht in der CPU. Dafür braucht man die Dual-Chip-Spekulation von oben überhaupt nicht.
Zwei weitere Kleinigkeiten aus dem laufenden System, die ich hübsch finde. Die Karte sitzt allein in ihrer IOMMU-Gruppe und unterstützt Function Level Reset, sie lässt sich also ohne ACS-Override-Gebastel per VFIO an eine VM durchreichen. Und sie meldet 32 Virtual Functions, aktiv sind davon null.
Der praktisch wichtigste Nebeneffekt des Einbaus hat aber gar nichts mit Krypto zu tun. Der PLX-Switch belegt vier Busnummern, und dadurch ist meine NVMe von c3:00.0 auf c7:00.0 gewandert. Auf der alten Adresse sitzt jetzt der Upstream-Port des Switches. Ich hatte mir ein setpci-Kommando mit der alten Adresse notiert, und das hätte nach dem Einbau munter in die Register des Switches geschrieben statt in die der SSD. Merke: PCI-Adressen sind nichts, was man sich aufschreibt. Die holt man sich jedes Mal frisch aus lspci. Ist ja jetzt nicht so, als wenn mir das schon mal untergekommen ist bzw. ich so was gefettfingert habe 😛
Der Treiber registriert zehn Algorithmen in der Crypto-API des Kernels, alle mit selftest: passed:
xts(aes) qat_aes_xts skcipher prio=100 ctr(aes) qat_aes_ctr skcipher prio=100 cbc(aes) qat_aes_cbc skcipher prio=100 authenc(hmac(sha1),cbc(aes)) qat_aes_cbc_hmac_sha1 aead prio=100 authenc(hmac(sha256),cbc(aes)) qat_aes_cbc_hmac_sha256 aead prio=100 authenc(hmac(sha512),cbc(aes)) qat_aes_cbc_hmac_sha512 aead prio=100 rsa qat-rsa akcipher prio=1000 dh qat-dh kpp prio=1000 pkcs1(rsa,sha512) pkcs1(qat-rsa,sha512) sig prio=1000 deflate qat_deflate acomp prio=4001
Diese Prioritäten sind die halbe Geschichte des Beitrags. Die Linux Crypto API wählt bei gleichem Algorithmusnamen immer die Implementierung mit der höchsten Priorität. Wenn man das mit den CPU-Implementierungen auf derselben Maschine vergleicht, wird es sehr deutlich:
Algorithmus
QAT
bester CPU-Wert
wer gewinnt
xts(aes)
100
xts-aes-vaes-avx2 = 600
CPU
cbc(aes)
100
cbc-aes-aesni höher
CPU
authenc(...)
100
CPU-Kombis höher
CPU
rsa
1000
rsa-generic = 100
Karte
dh
1000
dh-generic = 100
Karte
deflate
4001
deflate-generic = 0
Karte
Übersetzt heißt das: für symmetrische Massenverschlüsselung wird diese Karte nie von allein benutzt. Für rsa, dh und deflate dagegen immer. Das ist kein Zufall und kein Konfigurationsfehler, sondern eine Aussage der Kernel-Entwickler darüber, wo Offload bei einer aktuellen CPU überhaupt noch etwas bringt. Man kann diese Tabelle lesen wie ein Urteil über die Karte, und genau so ist sie auch gemeint.
Ein Detail nur mit Vorsicht: pkcs1(qat-rsa,sha512) steht mit Priorität 1000 registriert und hat den Selftest bestanden. Daraus folgt noch nicht, dass Kernel-Modul-Signaturprüfung tatsächlich über die Karte läuft. Die Registrierung macht es möglich, die Priorität spricht dafür, aber um es zu belegen müsste man den Verifikationspfad tracen und dabei die Zähler in fw_counters beobachten. Habe ich nicht gemacht, also behaupte ich es auch nicht.
Diesen Absatz gibt es, weil die Tabellen danach sonst präziser wirken als sie sind. Wer mir eine Zahl vorhält, soll wissen, wie sie entstanden ist.
cryptsetup benchmark ist selbst nur ein Indikator. Es misst im Speicher über die Crypto-API und ist laut eigener Manpage nicht direkt auf reale Storage-Verschlüsselung übertragbar.fw_counters. Die kommen aus der Hardware und belegen, dass und wie oft die Karte gerechnet hat. Und die Form der Ergebnisse ist robust: Latenz pro Request hoch, Skalierung über Worker fast linear, CPU bei kleinen Blöcken weit vorn. Nur die absoluten Werte sind weich.Als Gegner steht bewusst der ungünstigste Fall für die Karte: ein Xeon Gold 5315Y mit acht Kernen und vollem VAES-Befehlssatz. Wenn eine 13 Jahre alte Karte gegen die Rechenwerke einer aktuellen CPU antritt, dann bitte richtig.
Zuerst die CPU-Basislinie mit cryptsetup benchmark, damit die Größenordnung steht:
aes-cbc 128b 1168,2 MiB/s enc 3936,0 MiB/s dec aes-cbc 256b 1004,5 MiB/s enc 3729,8 MiB/s dec aes-xts 256b 5494,4 MiB/s enc 5510,1 MiB/s dec aes-xts 512b 5045,2 MiB/s enc 5053,6 MiB/s dec
Und dann der direkte Vergleich über AF_ALG, ein einzelner synchroner Strom:
Implementierung
Block
Durchsatz
Latenz pro Operation
xts-aes-vaes-avx2
4 KiB
1157,2 MiB/s
3,4 µs
xts-aes-vaes-avx2
16 KiB
2681,2 MiB/s
5,8 µs
xts-aes-vaes-avx2
64 KiB
4327,2 MiB/s
14,4 µs
qat_aes_xts
4 KiB
100,3 MiB/s
38,9 µs
qat_aes_xts
16 KiB
244,9 MiB/s
63,6 µs
qat_aes_xts
64 KiB
308,8 MiB/s
201,6 µs
cbc-aes-aesni
4 KiB
583,5 MiB/s
6,7 µs
qat_aes_cbc
4 KiB
79,8 MiB/s
48,9 µs
Pro Einzelrequest ist die Karte also grob elfmal langsamer als die CPU, ungefähr 39 gegen 3,4 Mikrosekunden bei 4 KiB. Für ein Bauteil, das mal genau dafür gekauft wurde, ist das eine ernüchternde Zahl.
Nur: das ist nicht die Hardwarelatenz der Karte. Gemessen ist die Latenz dieses Pfades, und der ist lang: Python, sendmsg über AF_ALG, Socket-Puffer, Kernel-Copy, Treiber, PCIe, Karte, und alles wieder zurück, plus Scheduling und Aufwecken des wartenden Prozesses. Ein erheblicher Teil davon kann im Socket-Pfad stecken. Die CPU-Variante läuft durch denselben Overhead, profitiert aber davon, dass sie synchron im selben Kontext rechnet und überhaupt nicht schlafen muss. Belastbar ist deshalb nur die relative Aussage für diesen Zugangsweg und die Form der Kurve. Wer die reine Hardwarelatenz will, braucht ein Frontend ohne Socket-Umweg, also praktisch den Userspace-Stack, und der existiert für diesen Chip nicht mehr. Dazu unten mehr. Das ist eine Messlücke, die ich mit den vorhandenen Mitteln nicht schließen kann, und ich schreibe sie lieber hin als sie zu verstecken.
Und dann wird es doch noch spannend. Dieselbe Messung mit parallelen Workern, Blockgröße 16 KiB:
Worker
qat_aes_xts
xts-aes-vaes-avx2
1
210,7 MiB/s
2632,6 MiB/s
2
454,1 MiB/s
5311,9 MiB/s
4
799,3 MiB/s
10777,5 MiB/s
8
1714,5 MiB/s
22056,0 MiB/s
16
2926,7 MiB/s
25229,7 MiB/s
Die Karte skaliert von einem auf 16 Worker um fast Faktor 14, also nahezu linear, und bei 16 Workern war sie noch nicht am Ende. Das ist exakt das Verhalten, für das so ein Baustein entworfen wurde: viele gleichzeitige, unabhängige Operationen, keine einzelne schnelle. Eine Karte in einem Loadbalancer sieht nie einen Strom, sie sieht tausende.
Nur skaliert die CPU eben auch. Und sie landet am Ende 8,6 mal höher. Das ist der ganze Punkt dieses Beitrags in einer Zahl. So fertig, feierabend, einpacken!
Dass wirklich die Karte gerechnet hat und nicht heimlich doch die CPU, zeigen die Firmware-Zähler nach dem Lauf:
QAT firmware requests in diesem Lauf: 1.340.416 AE Requests Responses 0: 154181 154181 1: 94420 94420 2: 90590 90590 3: 154177 154177 ... 11: 90662 90662
Alle zwölf Acceleration Engines haben gearbeitet, Requests und Responses stimmen überall überein, kein verlorener Request. Die Verteilung ist nicht gleichmäßig, sondern fällt in Dreiergruppen von etwa 154k, 94k und 90k. Das kommt von der Zuordnung Ring-Bank zu Engine und ist so ein Detail, an dem man beim Lesen kleben bleibt.
Die 2926,7 MiB/s liegen auffällig nah an der Kapazität des internen Links:
2926,7 MiB/s Nutzdaten = 3069 MB/s Jedes Byte muss zweimal über den Bus: rein zum Verschlüsseln, raus als Chiffrat. Gen2 x8 = 5 GT/s x 8 Lanes x 8/10 = 4000 MB/s pro Richtung 3069 / 4000 = 77 % der theoretischen Richtungskapazität
77 Prozent Nutzlast auf einem PCIe-Link sind praktisch der Anschlag, mit dem TLP-Overhead bei 256 Byte MaxPayload liegt das erreichbare Maximum bei etwa 85 bis 90 Prozent. Das sieht also sehr nach einem Bus-Limit aus.
Aber: meine Messung kann das nicht trennen. Sie zeigt, dass dieser Zugangsweg in der Nähe eines Ceilings landet, und sie kann nicht sagen, ob das der PCIe-Link, der Treiber oder AF_ALG ist. Die Rechnung oben ist ein Plausibilitätsargument, keine Messung des Busses. Sauber wäre es, PCIe-Bandwidth-Events über die Uncore-Zähler mitzuschreiben. Das ist der wichtigste offene Messpunkt in diesem Beitrag, weil eine der Hauptaussagen daran hängt.
Noch eine Rechnung, die verlockend glatt aufgeht und bei der man aufpassen muss. Die gemessenen 2926,7 MiB/s sind 24,6 Gbit/s, das Datenblatt sagt 50 Gbit/s, das sind fast genau 49 Prozent. Und verdrahtet sind acht von 16 Lanes, also genau die Hälfte. Der Kurzschluss liegt auf der Zunge, und er ist falsch: „mit x16 wäre man auf dem Datenblattwert“ und „die Platine war für zwei Chips gedacht“ sind zwei verschiedene Hypothesen, nicht eine. In einer Dual-Chip-Bestückung bekäme jeder Chip x8, keiner käme je auf x16, und das Nadelöhr wäre dann der gemeinsame Gen3-x8-Upstream. Rechnerisch landet man auf beiden Wegen bei ungefähr 49 Gbit/s, aber über völlig verschiedene Mechanismen. Wer das zusammenrührt, argumentiert falsch, auch wenn das Ergebnis stimmt. Die Karte selbst hat ja auch nur einen PCIe 8x Anschluss.
Und es gibt eine zweite Lesart, an der der ganze Vergleich mit dem Marketing hängt. Wenn Intels 50 Gbit/s als Summe beider Richtungen gemeint sind, also 25 rein und 25 raus, dann reicht Gen2 x8 dafür aus, und meine gemessenen 24,6 Gbit/s pro Richtung sind aggregiert 49,2 Gbit/s. Dann lautet der richtige Satz nicht „die Karte erreicht die Hälfte“, sondern „die Karte erreicht ihre Spezifikation“. Intel dokumentiert nirgends, wie gezählt wird, also ist das aus den vorliegenden Unterlagen nicht entscheidbar. Die 24,6 Gbit/s stehen fest, nur ihre Deutung hängt an einer undokumentierten Konvention. Natürlich kann ich auch einfach dran vorbei gelesen haben oder ich messe falsch. Korrigiert mich gerne, dann lerne ich selbst etwas \o/
Der naheliegendste Anwendungsfall, und ausgerechnet genau der, für den die Karte in meinem FreeBSD-Server gearbeitet hat, funktioniert unter aktuellem Linux nicht:
# cryptsetup plainOpen /dev/ram0 probe --cipher capi:qat_aes_xts-plain64 --key-size 512 --key-file /dev/zero device-mapper: reload ioctl on probe (252:3) failed: Datei oder Verzeichnis nicht gefunden
Der erste Reflex ist natürlich, dass ich den Namen falsch geschrieben habe. Also Gegenprobe mit derselben capi:-Syntax über sieben Varianten:
Angabe bei --cipher
Ergebnis
aes-xts-plain64
funktioniert
capi:xts(aes)-plain64
funktioniert
capi:xts-aes-aesni-plain64
funktioniert
capi:xts-aes-vaes-avx2-plain64
funktioniert
capi:xts-aes-vaes-avx512-plain64
funktioniert
capi:qat_aes_xts-plain64
Fehler, ENOENT
capi:qat_aes_cbc-plain64
Fehler, ENOENT
dm-crypt kann also sehr wohl einen konkreten Treiber adressieren, sogar xts-aes-vaes-avx512, das mit seiner niedrigen Priorität sonst nie zum Zug käme. Nur die beiden QAT-Treiber fliegen raus. Das ist kein Tippfehler und keine Namensauflösung.
Der Beweis kommt aus dem laufenden Kernel selbst, ausgelesen über die NETLINK_CRYPTO-Schnittstelle. Das ist die belastbare Quelle, denn sie sagt, was dieser Kernel registriert hat, und nicht, was irgendeine Quelldatei im Netz behauptet:
qat_aes_xts flags=0x00010585 ASYNC | NEED_FALLBACK | TESTED | ALLOCATES_MEMORY qat_aes_cbc flags=0x00010485 ASYNC | TESTED | ALLOCATES_MEMORY qat_aes_ctr flags=0x00010485 ASYNC | TESTED | ALLOCATES_MEMORY qat_aes_cbc_hmac_sha256 flags=0x00010483 ASYNC | TESTED | ALLOCATES_MEMORY qat_deflate flags=0x0001048a ASYNC | TESTED | ALLOCATES_MEMORY qat-rsa flags=0x00000406 TESTED xts-aes-aesni flags=0x00000405 TESTED xts-aes-vaes-avx2 flags=0x00000405 TESTED cbc-aes-aesni flags=0x00000405 TESTED deflate-generic flags=0x0004040a TESTED
Der Unterschied ist genau ein Bit: 0x00010000, also CRYPTO_ALG_ALLOCATES_MEMORY. Alle symmetrischen QAT-Implementierungen haben es, keine einzige CPU-Implementierung hat es. Die niedrigen Bits sind übrigens kein Flag, sondern der Algorithmustyp.
Und dm-crypt fordert seine Transforms genau mit diesem Bit als Maske an, an drei Stellen im Code:
cc->cipher_tfm.tfms[i] = crypto_alloc_skcipher(ciphermode, 0, CRYPTO_ALG_ALLOCATES_MEMORY); cc->cipher_tfm.tfms_aead[0] = crypto_alloc_aead(ciphermode, 0, CRYPTO_ALG_ALLOCATES_MEMORY); mac = crypto_alloc_ahash(mac_alg, 0, CRYPTO_ALG_ALLOCATES_MEMORY);
Die Suche findet damit nichts und liefert ENOENT, und das kommt oben als „Datei oder Verzeichnis nicht gefunden“ an. Kette geschlossen, keine Hypothese mehr. Dass qat-rsa das Flag nicht hat, passt genau ins Bild: RSA läuft über die Karte, weil es kein Block-I/O-Pfad ist.
An dieser Stelle wollte ich anfangen zu schimpfen. Die Karte kann AES-XTS in Hardware, der Kernel registriert es, und der eine Konsument, für den es gedacht war, weigert sich. Klingt nach Linux, das sich selbst im Weg steht. Ist es aber nicht.
Die Maske stammt von Mikulas Patocka, und die Begründung im Commit ist knapp:
Don’t use crypto drivers that have the flag CRYPTO_ALG_ALLOCATES_MEMORY set. These drivers allocate memory and thus they are unsuitable for block I/O processing.
Der Grund dahinter ist ein Low-Memory-Deadlock. Stell dir vor, es wird auf ein dm-crypt-Gerät geswappt. Der Kernel will Speicher freimachen, schickt die Swap-Out-BIO durch dm-crypt, dm-crypt fragt die Crypto-API, und die fordert daraufhin Speicher an, den es gerade nicht gibt. Ende der Vorstellung.
Und mit QAT ist genau das schon einmal schiefgegangen. Im März 2022 gibt es einen Bericht auf der Kernel-Mailingliste über massive Datenkorruption mit QAT plus dm-crypt plus XFS. Die Diagnose kam von Giovanni Cabiddu, Intel:
The implementations of aead and skcipher in the QAT driver are not properly supporting requests with the CRYPTO_TFM_REQ_MAY_BACKLOG flag set. If the HW queue is full, the driver returns -EBUSY but does not enqueue the request.
Die Folge: dm-crypt wartet endlos auf die Completion eines Requests, der nie an die Hardware gegangen ist. Und das Dateisystem war hinüber. Das ist kein theoretisches Risiko, das ist ein Schadensfall mit Datum.
Die Zeitleiste danach ist lehrreich, weil sie nicht so endet, wie man denkt:
Datum
Was passiert
Juli 2020
Das Flag CRYPTO_ALG_ALLOCATES_MEMORY wird auf QAT gesetzt
Juli 2020
dm-crypt schließt Treiber mit diesem Flag aus (Patocka)
März 2022
Der Schadensfall: Datenkorruption mit QAT, dm-crypt und XFS
Mai 2022
Intel liefert den eigentlichen Fix, ein Backlog-Mechanismus
Juli 2023
Intel will das Flag entfernen, um QAT für dm-crypt zurückzuholen. Nie gemerged.
Juni 2025
Stattdessen: Priorität von Skcipher und AEAD wird von 4001 auf 100 gesenkt
August 2026
Auf meinem Kernel gemessen: Flag gesetzt, Priorität 100, dm-crypt verweigert
Die Auflösung war also nicht „dm-crypt darf QAT wieder benutzen“, sondern „QAT wird per Priorität aus dem Weg geräumt“. Und die Begründung in diesem Commit ist der stärkste Absatz, den ich zu dieser Karte gelesen habe:
Most kernel applications utilizing the crypto API operate synchronously and on small buffer sizes, therefore do not benefit from QAT acceleration. Reduce the priority of QAT implementations for both skcipher and aead algorithms, allowing more suitable alternatives to be selected by default.
„Synchron und kleine Puffer“ ist exakt das, was ich oben unabhängig gemessen habe, 39 gegen 3,4 Mikrosekunden bei 4 KiB. Der Kernel hat 2025 formal festgestellt, was meine Messung 2026 auf dieser Maschine bestätigt. Und der Patch, der Intels eigene Hardware degradiert, kommt von Intel, mit Acked-by von Eric Biggers. Wenn man es wohlwollend liest, ist das ein Hersteller, der ehrlich ist. Zur Version muss man genau sein: der Commit ging in Mainline 6.17, wurde aber wegen Cc: stable auch in ältere Stable-Zweige zurückportiert, war dort also schon vor dem 6.17-Release wirksam.
Und damit ist die Pointe eine viel bessere als „Linux ist im Weg“: was wie eine willkürliche Blockade aussieht, ist eine Leitplanke aus einem echten Schadensfall. Das erklärt übrigens auch, warum FreeBSD hier lockerer war. Dort gibt es diese Leitplanke nicht, es gibt keine Priority-Hierarchie, die den Beschleuniger aussortiert, und keine Maske, die ihn vom Blockgerät fernhält. Das heißt allerdings nicht, dass das Problem dort nicht existiert. Es heißt nur, dass niemand ein Geländer davor gebaut hat.
Ein Blick auf die FreeBSD-Seite lohnt an dieser Stelle sowieso, denn dort ist der Weg ein struktureller anderer. qat(4) ist ein Treiber für das OpenCrypto-Framework, also für crypto(9). Wer GELI benutzt, muss überhaupt nichts umkonfigurieren: GELI fragt das Framework, und das Framework nimmt den Beschleuniger. Deshalb war die Sache damals auch so unspektakulär, ich habe die Karte gesteckt und die Platten waren schneller.
Ganz so glatt war die Historie allerdings nicht. Im Basissystem gibt es qat(4) erst seit FreeBSD 13.0, und in 14.0 wurde dieser Treiber durch Intels Upstream-Variante ersetzt. Auf dem ersten Server, der noch älter war, kann es diesen Weg also nicht gegeben haben. Die aktuelle Manpage führt die Serie 8925 bis 8955 weiterhin als unterstützte Hardware, dieser Chip ist dort also nicht rausgefallen. Und noch etwas gegen zu viel Nostalgie: im FreeBSD-Forum gibt es einen Thread zur GELI-Performance, in dem QAT zunächst schlechter war als AES-NI. Erst nach dem Umstellen der QAT-Services berichtete der Autor rund 30 bis 34 Prozent Vorsprung bei AES-XTS mit SHA256, und bei anderen Lasten blieben Verluste. Die Karte war also auch damals kein bedingungsloser Gewinn, sondern eine, die zur Konfiguration passen musste.
Bleibt der andere große Anwendungsfall: TLS-Terminierung mit nginx oder HAProxy, OpenSSL-Offload. Dafür braucht man qatlib und dazu die QAT-Engine oder den Provider für OpenSSL. Auf meinem System ist davon nichts installierbar, kein Kandidat in den Repos, und OpenSSL 3.0.13 kennt nur den Default-Provider.
Schlimmer als „nicht gepackt“ ist aber der Grund: Intel hat dh895xcc aus qatlib entfernt. Die aktuellen Versionen unterstützen nur noch QAT Gen4, also die 4xxx- und 420xx-Serien. Die frühen Generationen sind nicht mehr dabei. Der Weg wäre der alte Out-of-Tree-Stack, und der baut gegen einen Kernel 7.0 nicht mehr.
Ich formuliere das bewusst nicht als „tot“. Behauptet ist: für diesen Chip ist der heutige Mainstream-Linux-Userspace praktisch abgehängt. Nicht behauptet ist, dass es global unmöglich wäre. Mit altem Kernel, altem Out-of-Tree-Treiber und passender Distribution ließe sich der Stack sicher noch aufbauen, und ältere DPDK-Versionen führten dh895xcc als unterstütztes Gerät. Es ist eine Frage von Aufwand und Kernel-Alter, nicht von Unmöglichkeit.
Die Ironie daran ist schön bitter. Intels eigener Userspace hat die Karte längst aufgegeben, während der Linux-Kernel sie weiter pflegt und beim Booten ohne ein einziges Paket zum Laufen bringt. Wer wissen will, warum In-Tree-Treiber so wertvoll sind: das hier ist der Beweis in einer Karte.
Ein dritter Befund noch, damit ihn niemand für einen Kartenfehler hält: ein einzelnes sendmsg über AF_ALG mit 256 KiB oder mehr blockiert dauerhaft. Aufgefallen ist mir das erst mit der Karte bei 1 MiB, reproduzieren lässt es sich aber mit dem CPU-Cipher genauso. Es ist also nicht die Hardware. Wo genau im AF_ALG-Pfad es hängt, habe ich nicht nachgewiesen, der Socket-Sendepuffer wäre die naheliegende Vermutung, aber eben eine ungeprüfte. Alle Messungen oben sind deshalb auf maximal 64 KiB begrenzt.
Erinnerst du dich an qat_deflate mit Priorität 4001 gegen deflate-generic mit 0? Jeder Kernel-Konsument, der nach deflate fragt, bekommt die Karte. Realistisch ist das zswap, die komprimierte Auslagerung im RAM.
Also nachgestellt: eine cgroup mit hartem Speicherlimit, 700 MiB gut komprimierbare anonyme Seiten, zswap auf deflate. Und tatsächlich, die Karte komprimiert die Auslagerung, 130.108 Firmware-Requests belegen das. Nur ist der direkte Vergleich bei gleicher Last ziemlich brutal:
zswap-Compressor
wall
user
sys
QAT-Requests
lzo (CPU)
0,85 s
0,11 s
0,72 s
0
deflate (QAT)
9,47 s
0,26 s
5,13 s
130.027
Elfmal langsamer. Und die System-CPU-Zeit steigt sogar von 0,72 auf 5,13 Sekunden, das Offload spart also nicht einmal CPU, es kostet zusätzlich welche. Der Grund ist derselbe wie überall in diesem Beitrag: zswap komprimiert eine 4-KiB-Seite pro Request, und das ist genau der Latenz-Worstcase.
Fair bleiben muss ich hier trotzdem: der Vergleich mischt zwei Effekte, denn Deflate ist algorithmisch auch schlicht teurer als LZO. Sauber wäre deflate auf CPU gegen deflate auf der Karte, und das habe ich nicht gemessen, weil sich deflate-generic bei Priorität 0 nicht ohne Weiteres erzwingen lässt. Die Aussage „QAT-zswap ist keine gute Idee“ trägt der Test, die Aufteilung zwischen Algorithmus und Latenz nicht.
Bleibt eine Frage, die ich hübsch finde: warum steht deflate überhaupt noch auf 4001? In der Datenkorruptions-Diskussion von 2022 schlug Intel vor, die Priorität der betroffenen Algorithmen auf 1 zu senken. Heute stehen Skcipher und AEAD bei 100, die Kompression aber weiter bei 4001. Die naheliegende Deutung: 4001 war ursprünglich die Politik „nimm immer den Beschleuniger“, sie wurde für Krypto nach dem Vorfall zurückgenommen und für Kompression nie. Damit wäre qat_deflate der letzte Überrest dieser alten Haltung, und ausgerechnet der Pfad, der heute noch stillschweigend gewinnt und dabei elfmal langsamer ist. Das ist allerdings meine Deutung, kein Beleg. Die Commit-Historie der Prioritätswerte für die Kompression habe ich nicht nachverfolgt.
Wer das nachbauen will: den Zustand danach wieder zurücksetzen, also enabled=N und compressor=lzo. Ein Dauerbetrieb mit dieser Einstellung wäre eine echte Verschlechterung der Maschine.
Nein. Und zwar aus zwei völlig verschiedenen Gründen, und dieser Unterschied ist der eigentlich interessante Teil.
Monero geht prinzipiell nicht, nicht bloß langsam. Monero nutzt seit 2019 RandomX, und der Algorithmus wurde absichtlich so entworfen, dass Spezialhardware keinen Vorteil hat. Er generiert zur Laufzeit zufällige Programme aus Integer-, Fließkomma- und Branch-Instruktionen und führt sie in einer VM aus, teils JIT-compiliert. Er braucht 2 MiB Scratchpad pro Thread, permanent random-access beschrieben und gelesen. Und im Fast-Mode zusätzlich einen Datensatz von rund 2,08 GiB im RAM, aus dem die VM ständig liest. Das macht RandomX speichergebunden statt rechengebunden, und deshalb sind ASICs dort wirtschaftlich uninteressant.
Die QAT-Karte ist das exakte Gegenteil davon: eine Festfunktions-Pipeline. Sie kann AES, SHA, RSA, DH und Deflate, und nichts sonst. Sie hat keinen Befehlssatz, kein Scratchpad-Konzept und keinen Zugriff auf einen 2-GiB-Arbeitsdatensatz. AES kommt in RandomX zwar vor, aber als eingebetteter Schritt in der VM-Schleife, nicht als abtrennbare Massenoperation, die man an einen Coprozessor auslagern könnte. Die CPU dieser Maschine kann RandomX übrigens sehr wohl. Der Algorithmus ist ja genau für CPUs gemacht.
Bitcoin geht theoretisch, praktisch ist es absurd. Bitcoin ist doppeltes SHA-256 über einen 80 Byte großen Blockheader, und SHA-256 kann die Karte. Nur scheitert es an zwei harten Punkten.
Erstens ist es über diesen Stack nicht einmal ansprechbar. Der In-Kernel-Treiber registriert kein reines SHA-256, sondern nur authenc(hmac(sha256),cbc(aes)), also HMAC-authentifizierte Verschlüsselung. Nackte Hashes bekäme man nur über den Userspace-Stack, und der existiert für diesen Chip nicht mehr. Es gibt also gar keinen Weg, der Karte einen Blockheader zum Hashen zu geben.
Zweitens ist die Größenordnung hoffnungslos, und dafür genügt eine geschenkte Obergrenze. Selbst wenn die Karte ihre volle Datenblattleistung als reines Hashing liefern könnte, landet man bei realistischen 64 bis 128 Byte pro Hash-Operation in der Größenordnung von 10⁷ bis 10⁸ Hashes pro Sekunde, also höchstens einige zehn MH/s. Erreichen wird sie das nie, die gemessenen Latenzen zeigen ja, dass sie bei kleinen Nutzlasten zwei Größenordnungen unter ihrem Sweet Spot arbeitet.
Hashrate
Charakter der Zahl
QAT 8950
höchstens 10⁸ H/s
unerreichbare Obergrenze
ein aktueller ASIC-Miner
etwa 2 mal 10¹⁴ H/s
Produktangabe
Bitcoin-Gesamtnetz, 03.08.2026
9,3 mal 10²⁰ H/s
gemessen, 932 EH/s
Selbst mit der geschenkten Obergrenze liegt ein einzelner ASIC noch um mindestens sechs Größenordnungen über der Karte, und das Gesamtnetz um dreizehn. Der Anteil am Netz wäre günstigstenfalls in der Größenordnung 10⁻¹³, bei zehn Minuten Blockzeit also eine erwartete Wartezeit jenseits jeder sinnvollen Zeitskala, bei 40 Watt Dauerlast. Ich verzichte hier absichtlich auf eine konkrete Jahreszahl. Die klingt zwar gut, wäre aber Scheinpräzision auf einer geschätzten Grundlage. Größenordnungen sind hier die ehrlichere Währung, und sie sind genauso eindrucksvoll.
Die eigentliche Pointe ist aber eine sprachliche. Krypto-Beschleuniger heißt Kryptographie, nicht Kryptowährung. Die Karte ist für das gebaut, was Verbindungen und Platten schützt: TLS-Handshakes, IPsec-Tunnel, AES-XTS auf Blockgeräten. Dass beide Bedeutungen dasselbe Wort benutzen, ist ein Sprachunfall, und ich bin ziemlich sicher, dass er der Kryptographie mehr geschadet hat als der Kryptowährung.
Eine praktische Warnung, falls jemand auf die Idee kommt, so ein Ding in einen Desktop zu stecken: die Karte hat keinen Temperatursensor. sensors zeigt nichts, der BMC kennt sie nicht, in der SDR steht kein Eintrag. Man sieht also nicht, wie warm sie wird.
Und die Randbedingungen sind ungünstig: der Kühlkörper ist rein passiv und für den Querstrom eines Rackgehäuses ausgelegt, spezifiziert sind 0 bis 55 Grad Umgebungstemperatur, es dürfen bis zu 40 Watt Verlustleistung sein, und mein Gehäuse ist auf Ruhe optimiert, mit bewusst langsam drehenden Lüftern. Die Netzwerkkarte im Nachbarslot liegt schon im Leerlauf bei 61 Grad, und die beiden teilen sich denselben schlechten Luftstrom. Wie warm die Karte unter der Last aus diesem Beitrag wirklich geworden ist, weiß ich nicht. Ohne Sensor bräuchte es ein IR-Thermometer oder ein Thermoelement. Steht auf der Liste.
Diese Karte ist für mich so etwas wie eine Soundkarte. Es gab eine Zeit, da war eine dedizierte Soundkarte selbstverständlich, weil der Rest der Maschine das einfach nicht konnte. Ich hänge immer noch an den alten Creative-Karten, nicht nur an den ISA-Dingern, auch an den späteren. Die hatten eine Wertigkeit, ein Gewicht, eine Bestückung, die man ansehen konnte. Man hat ein Bauteil gekauft, das eine Aufgabe hatte, und das hat man auch gesehen.
Heute steckt in meiner Workstation nicht einmal mehr eine Onboard-Lösung im Einsatz, sondern ein Behringer 302USB, also ein kleines Mischpult mit USB-Audiointerface. Für meinen Fall reicht das absolut. Die Aufgabe ist nicht verschwunden, sie hat nur ihren Platz gewechselt, und die CPU rechnet das nebenbei mit, ohne dass es jemandem auffällt. Genau das ist mit Krypto passiert. AES-NI und VAES haben die Beschleunigerkarte nicht besiegt, sie haben sie aufgesogen.
Immer kleiner, komplexer und leistungsfähiger ist total geil. Ohne diese Entwicklung gäbe es die Hälfte von dem nicht, was wir heute technisch machen. Aber sie macht das Verstehen sehr viel schwieriger. Mein alter C64 und der VC20 davor, die Dinger hat man noch verstanden. Eine CPU mit rund einem Megahertz in einem 40-Pin-Gehäuse, groß genug und langsam genug, dass man mit dem Oszilloskop an einzelne Pins konnte und dabei etwas gesehen hat. Man konnte am Speicher nachmessen. Das war begreifbar im wörtlichen Sinn. An dem Xeon in dieser Maschine messe ich nichts nach. Der Die ist unter einem Heatspreader, die Signale sind differentiell und liegen im Gigahertzbereich, und selbst wenn ich rankäme, wäre mein Oszilloskop zu langsam. Dass bei dieser Karte das nackte Silizium offen liegt, ist ein Zufall der Bauform, und trotzdem freut es mich jedes Mal.
Dafür haben wir heute AI, um uns Dinge erklären zu lassen, und das ist ein echter Gewinn. Ich komme damit an Ecken, an die ich vor zehn Jahren nur mit sehr viel mehr Zeit gekommen wäre. Wir müssen nur alle aufpassen, dass wir dabei nicht aufhören zu verstehen. Der Unterschied zwischen „ich habe es erklärt bekommen“ und „ich habe es verstanden“ ist genau der Unterschied zwischen diesem Beitrag und einer Feature-Liste. Und ein Teil davon passiert ja bereits in der AI-Entwicklung selbst: wir verstehen nicht mehr im Detail, was in diesen Systemen passiert. Stand jetzt halte ich das für ein Problem. Vielleicht ist es aber auch bald einfach das Normale, und ich bin der Typ, der dem Oszilloskop nachtrauert.
Als Produktivkomponente ist die Karte in dieser Maschine sinnlos. Eine einzige moderne CPU der Einstiegsklasse schlägt sie bei symmetrischer Krypto um Faktor 8,6, der Anwendungsfall, für den sie gekauft wurde, ist unter Linux versperrt, Intels Userspace hat sie aufgegeben, sie zieht laut Datenblatt bis zu 40 Watt für etwas, das die CPU besser kann, und gekühlt wird sie für einen Luftstrom, den mein Gehäuse nicht liefert.
Als Lehr- und Erzählobjekt ist sie ausgezeichnet. An diesem einen Stück Platine lassen sich Krypto-Offload als Architektur, Latenz gegen Durchsatz, warum Queue-Tiefe alles ist, PCIe-Generationen und Lane-Budgets, PCIe-Switches, SR-IOV, IOMMU-Gruppen und die Prioritätslogik der Linux Crypto API erklären. Ich kenne wenige Bauteile, die auf so kleiner Fläche so viele Anknüpfungspunkte haben. Und sie funktioniert einfach, nach 13 Jahren, ohne ein einziges installiertes Paket.
Genau diese Spannung war der Grund, sie überhaupt noch einmal einzustecken.
qat-rsa gewinnt per Priorität, aber es gibt keinen AF_ALG-Zugang zu akcipher.Hast du so eine Karte noch im Einsatz, vielleicht sogar noch produktiv? Dann würde mich das wirklich interessieren, und ihr dürft mich sehr gerne fragen.
ArcaneChat / DeltaChat channel for you:
Debugging Memes - developer&linux memes, open source and other nerdy and tech related stuff, to join click here:
even more channels at:
https://arcanechat.me/channels
#memes #fun #meme #channel #decentralization #encryption #e2ee #ArcaneChat #DeltaChat #linux #opensource #gnulinux #developers #development #dev
#AbletonPush-Hack: Videos, MIDI-Takeover und Custom-UI auf der Push 3, ganz ohne Abletons Segen
Federico Pepe öffnet Display, MIDI, Dateisystem und LEDs für eigene Modifikationen
Der Eingriff in die Hardware zeigt deren volles Potenzial, das #Ableton bislang bewusst nicht offengelegt hat. Dieser Ansatz zeigt, was mit offiziellem API-Support möglich wäre.
Bei Ableton Move haben ähnliche Community-Projekte in der Vergangenheit gezeigt, wie viel kreatives Potenzial in offenerer Hardware steckt, von Custom-Devices bis zu Barrierefreiheits-Features.
https://www.gearnews.de/ableton-push-hack-tech
Checkmate : un outil self-hosted open source pour surveiller l'uptime, les temps de réponse et la santé de votre infrastructure en temps réel. Un agent Capture collecte les métriques hardware (CPU, RAM, température) depuis vos endpoints distants. ⬇️
https://github.com/bluewave-labs/Checkmate
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-49y
Mesa 26.2.0 released with lots of improvements for Linux / SteamOS graphics drivers https://www.gamingonlinux.com/2026/08/mesa-26-2-0-released-with-lots-of-improvements-for-linux-steamos-graphics-drivers/
Linux-Bridge: STP-Timer-Lücke geschlossen
Im Netzwerk-Code des Linux-Kernels wurde eine Speicherfehler-Schwachstelle entdeckt, die sich in der Spanning-Tree-Protocol-Verwaltung der Software-Bridge versteckte.
https://www.all-about-security.de/linux-bridge-stp-timer-luecke-geschlossen/
#Linux
Einen NFS-Share mounten. gerade wiederentdeckt
Erst nfs-common installieren
dann sowas in die Konsole:
sudo mount -t nfs 192.168.0.2:/ /media
Bei mir hats damit schon gemountet.
Jetzt noch was in /etc/fstab reinschreiben damit es beim booten mountet -> fertig
Das war sehr kurz. Im Internet gibts tausende Erklärbärseiten dafür.
heise+ | Okularkameras im Test: Das ganz Kleine auf dem Bildschirm
Spezialkameras ersetzen Lichtmikroskop-Okulare und übertragen Bilder per USB auf den PC. Ein Modell passt auch an Ferngläser und funkt das Bild aufs Smartphone.
#Fotografie #Hardware #IT #Kamera #Linux #AppleSwift #Wissenschaft #news
Guten Morgen zusammen!
In meinem heutigen Video spiele ich die Demo des 2D-Plattformers „Maxwell's Odyssey“ von @cosmicvoid
Viel Vergnügen: https://tube.tchncs.de/w/eeYUxAxaJahpCAhW6BDwTr
oder hier: https://hatnix.net/vod/2026-08-06.html
#hatclan #Linux #Gaming #Video #LetsPlay #DemoHype
Einsatzbericht für Nitrokey 3A (No NFC)
Ich habe diesen Nitrokey 3A (No NFC) als Geschenk von GNU/Linux.ch erhalten für den 5K Artikel. Am Wochenende hatte ich genug Zeit, um diesen Stick zu testen und hier nun meine Meinung.
Codeberg dit non au code majoritairement généré par IA : 71 % de la communauté a voté pour l'interdiction, entre flou juridique sur le droit d'auteur en Europe et coût de stockage multiplié par cinq. ⬇️
https://www.clubic.com/actualite-622627-l-anti-github-europeen-dit-non-au-code-ecrit-par-claude-et-codex.html
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-tgY
RE: https://social.heise.de/@heiseonline/117046813938759954
Ein NoGo, dass #Microsoft damit das sichere Booten für #Linux Systeme in der Hand hat. Wenn Microsoft sich entschließt morgen keine Linux Bootloader mehr zu zertifizieren, können die nicht mehr mit #UEFI gebootet werden. Man kann das abschalten, kein Problem. Aber hier geht es um das Prinzip. Mit Schuld sind die PC Hersteller, die nur MS Zertifikate im BIOS installieren. Auf neueren PCs teilweise sogar nur die neueren von 2023 und nicht mehr die Alten von 2011, was dann zur Folge hat, das alte Kernels nicht mehr booten.
Ich würde mal sagen das System ist „broken by design“
Linux muss einen Weg finden sich hier aus der Geiselhaft von Microsoft zu befreien. Und die PC Hersteller sind ein Schlüssel dazu. Aber die haben wahrscheinlich alle die Hosen voll, weil sie, wenn sie das unterstützen, Repressalien von Microsoft befürchten müssen.
Das ist auch der Grund, warum so gut wie jeder neue Rechner mit MS Lizenz ausgeliefert wird und der Käufer kämpfen muss das zurück erstattet zu bekommen.
Proxmox Virtual Environment für ARM64 vorgestellt
https://linuxnews.de/proxmox-virtual-environment-fuer-arm64-vorgestellt/ #proxmox #arm64 #debian #linux #linuxnews
#Faille #Linux « OvsWrap » : une élévation de #privilèges root menace des milliers de #serveurs Linux. Le composant noyau d'Open vSwitch, un logiciel réseau très répandu sur les serveurs Linux, contient la faille #OVSwrap. Un compte utilisateur ordinaire, sans droit particulier, obtient par cette faille les privilèges root. Un correctif est disponible depuis le 24 juillet, mais toutes les distributions ne l'ont pas encore intégré.
https://www.clubic.com/actualite-624253-faille-linux-ovswrap-une-elevation-de-privileges-root-menace-des-milliers-de-serveurs-linux.html
4501 version where they announce to add #AI feature, I started to get TONS of crashes, multiples times almost daily! I am annoyed, and sad...🚨LIVE NOW!🚨 DevOps/SRE Instructor Livestream
On this lovely Wednesday, let's chat about #Linux #SystemAdministration, #SelfHosting, or any other topic in the #DevOps and #SRE space you're interested in!
Owncast: https://live.monospacementor.com/
🔹 Plus de choix matériel : Idéal pour diversifier vos serveurs ou tester de nouvelles architectures.
Une excellente nouvelle pour réduire la consommation d'énergie sans sacrifier les fonctionnalités !
📖 Pour lire le communiqué officiel complet : https://www.proxmox.com/en/about/company-details/press-releases/proxmox-virtual-environment-launches-official-arm64-support
#Proxmox #ARM64 #OpenSource #Virtualisation #Linux #SysAdmin
Am Donnerstag, den 06.08. findet KEIN Linux-Treff Nord beim Theo statt. Theo hat im August Urlaub und wir treffen uns wieder bei ihm am 03.09. zur gewohnten Zeit ab 18:00 Uhr.
Das nächste virtuelle Treffen findet am 13.08. statt. Wer teilnehmen möchte, einfach eine Mail an kontakt[at]lug-noris.de senden.
Dioxus : un framework Rust pour construire des apps web, desktop et mobile depuis un seul codebase, avec hot-reloading subseconde et une gestion d'état qui pioche dans React, Solid et Svelte. 37 000 étoiles sur GitHub, open source. ⬇️
https://github.com/DioxusLabs/dioxus
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-Q31
Anyone with a amazon #kindle paperwhite 3 (2015, 7th Gen) who would be interested in installing #Linux 6.15 and getting rid of nearly all the Amazon bits?
I'm now looking for brave alpha testers to dig out their old kindle and test installation scripts (there is a chance of bricking which could be rescued by tapping the serial lines)
Let me know if you are interested.
DashBeam : transfert de fichiers en peer-to-peer, chiffré de bout en bout, sans compte, sans limite de taille, sans stockage cloud. Windows, macOS, Linux, Android et navigateur. Open source et gratuit. ⬇️
https://github.com/tonyantony300/dashbeam
#SelfHosted #OpenSource #FOSS #Linux
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-tCe
I’ve been working on a native KDE client based on #Carburetor, and I’m happy to announce its release under the name #Karburetor.
The goal of this project is to provide a better Tor experience for KDE Plasma users with a client that fits naturally into the KDE ecosystem, without GNOME dependencies and with a focus on a more native, simple, and integrated experience.
In this release, several parts of Carburetor have been redesigned so Karburetor can run independently from GNOME. The settings, proxy management, and user interface have been adapted to better match KDE standards.
Karburetor now uses native KDE settings and integrates more smoothly with Plasma services. Proxy handling has also been improved, allowing Plasma and KDE applications to directly use the Tor connection.
New features include active Bridge detection, improved support for different Tor transports, and a more extensible architecture for future improvements.
GitHub:
https://github.com/kdefarsi/karburetor
P.S. Due to network limitations in Iran, Codeberg being censored, and GitLab being sanctioned, unfortunately the sources are temporarily hosted on Microsoft GitHub for now.
I may move the project to KDE Invent in the future if possible, after it becomes more stable.
#KDE #KDEPlasma #Linux #OpenSource #FOSS #Tor #Privacy #GNUlinux #Qt #KDEApps
🐧 Perpetua – cross-platform software KVM
Perpetua is a cross-platform software KVM that lets you control multiple computers with a single keyboard and mouse. The post Perpetua – cross-platform software KVM appeared first on LinuxLinks.
📰 Source: LinuxLinks
🔗 Link: https://www.linuxlinks.com/perpetua-cross-platform-software-kvm/
Aujourd'hui, programme top 🤩
(Repouets acceptés avec plaisir, ça me donne un coup de pouce 😉)
Prépa de PC #linux dont 1 PC personnalisé, j'aime bien ça !
Ceux-ci ont déjà trouvés leurs nouveaux propriétaires 😉
(À vous : ils vont bientôt être expédiés)
Bonne journée à tous / toutes
Other than #LibreWriter, I'm fascinated to know about #LaTex editors on #Linux. As a social science person, I didn't know about it. It seems many in the field of math and biology, for example, have been using it as the standard. Even though I had biologist colleagues, they never mentioned it. I'm practising on #LaTex currently, but unfortunately in my field it will be the PDFs that are useful, I also could be asked to submit a Word document.
Captain it's Wednesday - Folge 190 - Frei in den Ferien
Folge 190 des CIW Podcasts.
Wir sprechen über nützliche Urlaubs-Apps
dwproton-11.0-10 released with a fix for Honkai: Star Rail https://www.gamingonlinux.com/2026/08/dwproton-11-0-10-released-with-a-fix-for-honkai-star-rail/
Feed rubber ducks to a bottomless corporate void in Project P.I.T.T. on August 19 https://www.gamingonlinux.com/2026/08/feed-rubber-ducks-to-a-bottomless-corporate-void-in-project-p-i-t-t-on-august-19/
After 10+ years, LinuxonAndroid is BACK!
Powered by a native PRoot engine, Complete Linux Installer lets you run full Ubuntu environments, Python, Node.js, Neovim, and SSH servers directly on Android.
Built with Jetpack Compose & POSIX PTY C++ bridge
1-Click software stack installers
Multi-arch: ARM64, x86_64, ARMv7
Open Testing is now LIVE on Google Play!
Website & Docs: https://linuxonandroid.com/
#Linux #Android #OpenSource #Ubuntu #PRoot #SelfHosted #LinuxOnAndroid #AndroidDev
Keine Ahnung ob das schon ins Fediverse gelangt ist aber bei Manjaro ist man derzeit wohl bei der Vereinsgründung angelegt: https://forum.manjaro.org/t/manjaro-2-0-manifesto/186171/316 #manjaro #linux #opensource
DI.DAY - Essen fassen: Es gibt 4 neue Gerichte
Was landet demnächst auf euren Tellern? E-Bücher, Videos, Shopping oder Gespräche? Geht den Umstieg auf eine gesunde Ernährung langsam an. Vier neue Rezepte warten auf eure Kochkünste.
#DI.DAY #diday #Rezepte #Linux
https://gnulinux.ch/di-day-essen-fassen-es-gibt-4-neue-gerichte
#Linux #Bash 🎵
Noch ein Musikplayer diesmal für die Shell .
Ist mit dem Paketmanager installierbar.
Bin voll begeistert, Wahnsinn #kew 👍 👍 👍
https://kewplayer.com/
Mission Center 1.2.0 zeigt jetzt auch Akku-Werte
https://linuxnews.de/mission-center-1-2-0-zeigt-jetzt-auch-akku-werte/ #missioncenter #monitoring #linux #linuxnews
#Arch #Linux zieht die Notbremse nach Angriffen auf das #AUR
#Arch_Linux reagiert auf #Sicherheitsvorfälle im AUR. Die Übernahme verwaister #Pakete bleibt vorerst deaktiviert.
Die Entwickler griffen nach einer Serie verdächtiger #Paketübernahmen ein. Hintergrund sind manipulierte Änderungen an bislang verwaisten AUR-Paketen. Bis auf Weiteres können deshalb keine neuen Pakete übernommen werden.
Device Database : savoir avant achat si un objet connecté fonctionne sans cloud, grâce à la télémétrie anonymisée de millions d'installations Home Assistant. 19 237 appareils référencés, données réelles d'usage, en preview publique. ⬇️
https://korben.info/home-assistant-device-database.html
#SelfHosted #OpenSource #FOSS #Linux
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-kA7
xyOps : job scheduling, monitoring, alerting et gestion d'incidents dans un seul outil self-hosted. Quand un job échoue, il ouvre un ticket avec logs, historique et métriques liées. BSD-3, tier gratuit sans restriction de fonctionnalités. ⬇️
https://github.com/pixlcore/xyops
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-qsZ
I love the old school #Unix desktop environments. It goes hand in hand with the server grade hardware I could never afford, and just oozes industrial quality. Think heavy and intimidating #beige workstations by #HP, #DEC and #Sun with the power consumption of a regular house hold and metal cooling fans that could slice fingers.
Back in the day, #FVWM2 had some of the same vibe. Also, the original Common Desktop Environment (#CDE), created by some of the major vendors of Unix-like systems created back in the day is still available (https://sourceforge.net/projects/cdesktopenv/). If you're used to a modern desktop, it could be a rough experience for daily use though.
Honestly, I'm quite happy with #KDE #Plasma, and would be thrilled by just the visuals. I'm sure you know where I'm going with this, so without further jibberjabber, I give you: The CDE Plasma Theme! It's delicious! :D
EU Age Verification Project Mandates Hardware-Bound Attestation
The EU’s age verification project confirms hardware-bound attestation is mandatory, raising concerns over Linux, custom ROMs, and open-source access.
Archive: ia: https://s.faithco...
#age-verification #linux-&-open-source-news #privacy
https://linuxiac.com/eu-age-verification-project-mandates-hardware-bound-attestation/
Linux Desktop Market Share Surpasses 10% in North America
Statcounter reports Linux at 10.65% of desktop usage in North America, with Cloudflare data lending further support to the milestone.
#linux-&-open-source-news
https://linuxiac.com/linux-desktop-market-share-surpasses-10-in-north-america/
On this thread on Lemmy you can find a bunch of crazy nerds talking about self hosting things and so on:
https://realbitcoin.cash/post/347401
Like one of them:
I converted my gaming machine into a server a while back. I like to live dangerously though, no proxmox. Baremetal. If my blog is slow, sorry y’all, I’m gaming. Deal with it.
It's good to know you are not the only one xD
NVIDIA now supporting the Linux Vendor Firmware Service (LVFS) as a premier sponsor https://www.gamingonlinux.com/2026/08/nvidia-now-supporting-the-linux-vendor-firmware-service-lvfs-as-a-premier-sponsor/
Settlement building co-op action-adventure Necesse 'Rust & Romance' update is a big one https://www.gamingonlinux.com/2026/08/settlement-building-co-op-action-adventure-necesse-rust-romance-update-is-a-big-one/
Unfortunately, for of my university mail account, I have to use Microsoft Outlook (I know, I know! Luckily, I’ve set up a redirect, so I hardly ever have to use it).
Tonight I tried using Firefox on NetBSD, but “Something went wrong.”
When I changed the user agent and set it to "Firefox on Linux", everything works fine, no problems, nothing "was wrong"!
In short, I think “Microsoft loves open source" but not NetBSD 😆.
One more reason to keep using it 😈
(Forgive the corny joke, I know MS doesn’t actually love open source at all 😆)
#bsd #netbsd #bsdunix #unix #unixITA #unixitalia #guuf #guufxmpp #guufITA #linux #linuxITA #linuxitalia
Dites, quelle distribution Linux vous me conseillerez pour :
- du jeu sur Steam / GOG etc.
- de la bureautique (beaucoup d'éditeurs continuent de bosser sur Word et utilisent Zoom...)
- de la radio / podcast
- du stream sur Twitch, et du montage vidéo light ?
J'ai été très longtemps sur Ubuntu, mais je suis ouvert à d'autres distributions.
Ich bespiele im kommenden Schuljahr alle Rechner in der Schule und (!) die BYOD Geräte (bei denen, die das wollen) mit dem gleichen #linux Image. Dafür waren ein paar Tricks nötig. #LINBO von #linuxmuster sorgt dafür, dass das gleiche Image auf BIOS und UEFI laufen kann, mit SATA und nvme. Ein Skript von mir erkennt, ob es sich um ein BYOD Gerät handelt, das dann einen permanenten User bekommt (ohne Netzwerk).
#FediLZ
#Linux vient-il réellement de franchir la barre historique des 10 % sur les ordinateurs de bureau en Amérique du Nord ? Le chiffre fait du bruit et il est largement partagé depuis ces derniers jours. https://www.ginjfo.com/actualites/windows-11-est-il-abandonne-au-profit-de-linux-un-chiffre-viral-fait-du-bruit-20260804
Am 16.06.2026 hab ich GLFOS auf meinem Hauptrechner installiert. Ich bin so zufrieden und eine Erkenntnis, die ich bereits gewonnen habe, ist das es kein Zurück mehr auf Arch, Cachy oder gar Manjaro geben wird.
Noch nie war ich mit einer Distro so zufrieden.
JA es ist etwas Umstellung wobei es bei GLF etwas einfacher ist als bei Nix.
#glfos #nixos #linux
Self-héberger son serveur mail en 2026 : SPF, DKIM, DMARC, et un LLM local (Gemma 4B) branché sur rspamd pour filtrer le spam sans envoyer vos emails à une API externe. ⬇️
https://blog.haschek.at/2026/you-should-selfhost-your-mail.html
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-nkP
Hallo zusammen, ich bin #neuhier auf kolektia social, weil es leider social anoxinon zerschossen hat (#socialanoxinon). Das Profil war @finnsend.
Sollten die Daten wieder hergestellt werden, dann ziehe ich trotzdem hier um. Leider weiß ich nicht mehr, wer mir alles gefolgt ist. Aber ich will nicht 15 Tage warten, ihr geht mir im #fediverse zu sehr ab. Besonders in Zeiten, in denen "Landnahme", "Angriff" und "Kontrollverlust" mehr Headlines machen als das humanitäre Desaster von mehr als 43 toten Menschen! In dieser Zeit alleine sein, ist nicht gut. Deswegen bin ich froh, wieder mit euch in Kontakt zu kommen (#notjustsad).
Ich bin ein (mittel) alter Anarcho (he/him, bi) aus München, Interessen sind nach wie vor #literatur #geschichte #soziologie Antifa (#dankeantifa) #Anarchismus (Wer verrät uns nie? Die Anarchie!) #lgbtq #linux und #debian und alles, was den fürchterlichen #Rechtsruck und #fckafd verhindert.
Ich hoffe, ich finde wieder die Leute, die ich verloren habe.
Schön, #wiederhier zu sein. Und danke an das Team von @moderation für die Aufnahme!
Solidarische Grüße!
#Windows verändert sich zunehmend von einem klassischen #Betriebssystem zu einer Plattform für #Werbung, #Cloud-Dienste, #Überwachung und #Kontrolle.
Viele Nutzer sind davon wenig begeistert - doch #Microsoft ist nur der Anfang: Auch Autos, E-Book-Reader und andere Alltagsgeräte enthalten zunehmend unfreie #Software.
Die Hersteller nutzen das Machtungleichgewicht zunehmend extremer aus - und zeigen damit deutlich, wohin sich die Technikbranche entwickelt.
In diesem Video analysiere ich anhand konkreter Beispiele, warum immer mehr Nutzer die Kontrolle über ihre eigenen Geräte verlieren – und weshalb freie Software für viele eine langfristige Alternative sein kann.
Alle Infos mit mehr Hintergründen/Quellen im kompletten U-Labs Artikel:
https://u-labs.de/portal/win11-kein-os/
https://www.youtube.com/watch?v=S5bXrQCXRzE
🎉 Neues Design für ipwho.de
Die IP-Lookup-Seite aus der adminForge-Familie hat ein frisches, modernes Design bekommen mit eigenem violetten 🟣 Look.
✅ IPv4 & IPv6 auf einen Blick
🖥️ Weiterhin 100% curl-freundlich, kein API-Key nötig
🚫 Kein Tracking, keine Werbung, keine Cookies
Gerade habe ich vier Stunden damit zugebracht, herauszufinden, warum die letzten beiden Kanäle meines Behringer UMC1820 (plus Audiophile ADAT) unter Linux/Pipewire nicht funktionierten.
Es stellte sich (natürlich) heraus, dass ich mit dem Befehl
"cat /proc/asound/cards"
die ID des Interfaces herauskriegen kann. Diese kann ich dann selbstverständlich in
"amixer -c 2 contents"
verwenden, um herauszubekommen, wie der Mixer für das Interface eingestellt ist.
(…)
Databasement : interface self-hosted pour centraliser vos backups de bases de données. MySQL, PostgreSQL, MongoDB, SQLite, planification, rétention configurable, stockage S3/SFTP, restauration cross-serveur. Un seul container Docker à lancer. ⬇️
https://david-crty.github.io/databasement/
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-GfM
🍒
"C'est un cap que Linux n'a jamais franchi jusque-là. En juillet 2026, #Linux a atteint 10,65 % de parts de marché sur PC de bureau en Amérique du Nord selon Statcounter".
Initial Steam Machine reviews are broadly positive, Jellyfin is losing some key project leaders, Sony deletes more movies that people “bought”, why you probably shouldn’t wipe your phone when the US authorities ask for access, Graham repurposes some discarded crypto hardware to play arcade games, Félim gets that old game working, a great terminal music player, and more.
Linux Desktop breaks 10% in North America https://gs.statcounter.com/os-market-share/desktop/north-america
Quick Demonstration:
Translating text without using a web browser, no logins, using free tools:
#Linux
#LinuxMint
#AI
#llama
#ollama
(This translation revealed something that the philosopher, Plato, said, which surprised me.... and his warning is a good one.)
Jetzt muß nur noch jemand Linus was von zram erzählen.
❯ zramctl
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd 15,7G 2,6G 625M 640,9M 10 [SWAP]
❯Well y'all, Linux stuff is happening fast. Cthulhu is a fork of Orca with like lots of stuff. Wine runs Windows programs on Linux.
If Cthulhu is running, the Wine Accessibility plugin is enabled, and the helper package is installed, you should only need to launch the Wine or Proton program normally.
Cthulhu will automatically:
- Detect the active Wine/Proton prefix.
- Start the helper inside that prefix.
- Read supported standard Windows controls.
- Accept speech requests from programs using NVDA Controller or Tolk.
It won’t automatically make custom-drawn or DirectX game interfaces accessible. Those need built-in self-voicing through NVDA Controller/Tolk or future game-specific support. There might also be a short delay of up to roughly two
seconds while Cthulhu discovers a newly started Wine process.
Cthulhu’s Git repository: https://git.stormux.org/storm/cthulhu
So will #TUXEDO #OS mit #Debian Testing #Firmenkunden überzeugen
TUXEDO OS stellt seine technische Basis auf #Debian um. Nicht nur Privat- sondern vor allem #Unternehmenskunden sollen von einer langfristig planbaren und modernen #Linux-Plattform profitieren. Der Fokus liegt auf Stabilität, Sicherheit und einfacher Verwaltung.
Der Wechsel bedeutet keine Neuausrichtung des Betriebssystems. TUXEDO OS bleibt eng auf die eigene Hardware abgestimmt.
https://fosstopia.de/so-will-tuxedo-os-firmenkunden-uberzeugen/
Vollmondtreffen der ALIGN:
Am Dienstag, den 04.08.2026 findet in Nürnberg wieder um 17:00 Uhr das Treffen der #ALIGN im Delphi, Innere Laufer Gasse 22 statt.
#Linux, freie Software und andere Themen stehen auf der Agenda.
Diese Info findet sich auch auf unserer Webseite unter Termine.
Einfach vorbeischauen, auch "Neue" sind gerne gesehen. Wir freuen uns auf eine rege Teilnahme.
Wegen der Tischreservierung bitte vorab eine Info an rqxzbader[at]gmx.de senden.
Vielen Dank.
Massive #Debian 13 “Trixie” #Linux Kernel #Security Update Addresses 68 Vulnerabilities, Patch Now https://9to5linux.com/new-debian-13-trixie-kernel-security-update-fixes-68-vulnerabilities
Ansible is easy to install. A sane, reproducible development environment takes more thought.
My downstream-first setup uses RHEL 10.2, Podman, VS Code Dev Containers, and Red Hat-packaged Ansible Development Tools, while keeping the boundaries between upstream projects, downstream products, development containers, and production Execution Environments explicit.
https://blog.hofstede.it/sane-development-environments-for-ansible-automation-code/
How to Build Your Offline Knowledge Library with #Kiwix on #Linux
https://ostechnix.com/kiwix-build-offline-knowledge-library/
Mistfall Hunter is a new extraction ARPG that works on SteamOS / Linux https://www.gamingonlinux.com/2026/08/mistfall-hunter-is-a-new-extraction-arpg-that-works-on-steamos-linux/
🎵 ASMR de geek : le chant du WD Velociraptor 10 000 tr/min ! 🦖💽
Ce petit bijou de 2012 combinait la vitesse d'un SCSI et l'interface SATA... et surtout, ce bruit si particulier qu'on n'oublie jamais une fois entendu. Les anciens savent 😌
🔊 À écouter (et à réentendre) ici : https://peertube.blablalinux.be/w/cXsSkun6AcA4zt4C3KMfXA
#Retrocomputing #HDD #WesternDigital #Linux
Neko Master : un dashboard self-hosted pour visualiser et auditer le trafic réseau en temps réel, avec analyse par domaine, par IP (ASN + géolocalisation) et par nœud proxy. Support multi-backend OpenClash, PWA, dark mode. ⬇️
https://github.com/foru17/neko-master
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-ate
2026 is the year of #Linux and #OpenSource
"Linux Desktop Market Share Surpasses 10% in North America"
https://linuxiac.com/linux-desktop-market-share-surpasses-10-in-north-america/
“The #Steam Hardware & Software Survey for July 2026 is out now and going by the current data, #Linux has managed to jump back just over 4%.
Here's the current overall #operatingsystem share:
Windows - 93.67%
Linux - 4.01%
macOS - 2.32%”
https://www.gamingonlinux.com/2026/08/linux-back-over-4-percent-in-the-july-2026-steam-survey/
Ma chérie trouvait le son des PC portables pas terrible avec le passage sur #Linux donc j'ai gratté un peu sur ce qu'on a à disposition pour améliorer ça.
Alors je suis direct tombée sur EasyEffects, qui est un peu LE logiciel DSP pour Pipewire, hyper complet, le problème c'est que pour le coup un peu trop dense : y a certes les presets communautaires, mais ça sent le logiciel où vaudrait mieux prendre le temps de bien mettre le nez dedans pour avoir vraiment le résultat recherché.
Donc j'ai testé ensuite une autre recommandation, JamesDSP (à bien faire attention d'aller sur la version Linux, parce que ça partage la base avec une version Android). Celui-ci est nettement plus accessible, j'ai suivi le conseil activation de l'égaliseur avec le preset "Clear", et effectivement de suite juste avec ça, on a un résultat nettement plus quali à l'oreille.
Le seul truc avec JamesDSP, c'est qu'il est potentiellement le choix le plus simple et direct des deux si vous n'utilisez globalement que les haut-parleurs intégrés du PC portable. Si jamais vous switchez fréquemment entre haut-parleurs, casque, enceintes, etc. EasyEffects sera potentiellement un meilleur choix du fait de par défaut définir les presets et leur activation par périphérique.
EDIT : donc ouais, après test sur ThinkPad L440, L460 et L380, le preset "Clear" fait vraiment bien le taf. C'est sans doute pas le pas le plus accurate, mais je voulais vraiment un truc passe-partout et pas prise de tête, et franchement là pour une mise en place en 3 clics c'est impeccable.
Laut StatCounter hat #Linux einen Marktanteil von 10 Prozent erreicht. Doch die Zahlen sind durch #Bots massiv verfälscht. Bereinigt bleibt der Anteil deutlich geringer. https://winfuture.de/news,160376.html?utm_source=Mastodon&utm_medium=ManualStatus&utm_campaign=SocialMedia
🍒
"C'est un cap que Linux n'a jamais franchi jusque-là. En juillet 2026, #Linux a atteint 10,65 % de parts de marché sur PC de bureau en Amérique du Nord selon Statcounter".
NVIDIA stable driver 595.91.07 and new feature driver 610.57.04 released for Linux https://www.gamingonlinux.com/2026/08/nvidia-stable-driver-595-91-07-and-new-feature-driver-610-57-04-released-for-linux/
termcn : des composants de terminal UI pour React, dans le style shadcn/ui. Tables, graphiques, spinners, alertes, installables via `pnpm dlx shadcn add`, prêts à l'emploi et personnalisables. ⬇️
https://www.termcn.dev/
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-gSe
For your next group session - failure is truly deadly in the mini-game game filled Machine Party https://www.gamingonlinux.com/2026/08/for-your-next-group-session-failure-is-truly-deadly-in-the-mini-game-game-filled-machine-party/
Yes, I did it: Am Wochenende den neuen Laptop (Lenovo ThinkPad 14') mit Debian stable und Gnome-Desktop ausgestattet. Und ich muss sagen, ich bin echt begeistert, wie sich Linux seit meinen ersten Versuchen damit entwickelt hat.
Am großartigsten imho: Zugangsdaten von Nextcloud einmal in den Einstellungen gespeichert und das Ding wird nahtlos als Laufwerk in jedem Dateimanager angezeigt - ohne, dass man fürchten muss, die Daten würden über irgendwelche Firmenserver geschleust.
@gamingonlinux This is what happens when #Microslop sabotages their own operating system with bloatware, unnecessarily overinflated "system requirements", forced online logins, forced subtier cloud shit, and unwanted #AI slop.
#Conglaturation #Microsoft , you single-handedly accelerated the #Linux deployment phenomena that is "The Day of the Penguin" upon yourselves. #FAFO
CrawlSEO : monitoring SEO self-hosted qui regroupe Google Search Console, un crawler jusqu'à 2 000 pages, les Core Web Vitals et un serveur MCP pour agents IA. Open source, MIT, gratuit. ⬇️
https://github.com/crawlseo/crawlseo
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-rfv
According to Statcounter, Linux on the desktop crossed over 7% globally https://www.gamingonlinux.com/2026/08/according-to-statcounter-linux-on-the-desktop-crossed-over-7-percent-globally/
Übersetzen - Welche Apps empfehlen sich?
Welche Apps gibt es, um Wörter auf dem Smartphone zu übersetzen? Wörterbücher, Übersetzungs-Apps oder KI?
Linux Stammtisch am 19. August und 14. September um 19:00 Uhr im Restaurant Vinocchio Pinocchio Puchheimer Str. 10a
Anmeldung:
info@bundnaturschutz-groebenzell.de
Latest 𝗩𝗮𝗹𝘂𝗮𝗯𝗹𝗲 𝗡𝗲𝘄𝘀 - 𝟮𝟬𝟮𝟲/𝟬𝟴/𝟬𝟯 (Valuable News - 2026/08/03) available.
https://vermaden.wordpress.com/2026/08/03/valuable-news-2026-08-03/
Past releases: https://vermaden.wordpress.com/news/
#verblog #vernews #news #bsd #freebsd #openbsd #netbsd #linux #unix #zfs #opnsense #ghostbsd #solaris #vermadenday
Guten Morgen und einen schönen Start in die neue Woche!
Im ersten Video diesen Monats spiele ich die Demo des Point & Click Adventures „The Mermaid Mask“ von SFB Games.
Viel Vergnügen: https://tube.tchncs.de/w/6wZnDz2TJ62yMn9tMNAEZm
oder hier: https://hatnix.net/vod/2026-08-03.html
#hatclan #Linux #Gaming #Video #LetsPlay #DemoHype
Arch Linux AUR hit with another wave of malware https://www.gamingonlinux.com/2026/08/arch-linux-aur-hit-with-another-wave-of-malware/
#Linux #Bash
Zeigt Animationen an, die Benutzer korrigieren, die versehentlich „sl“ anstelle von „ls“ eingeben. „SL“ steht für „Steam Locomotive“
Achtung ! Passagiere rufen um Hilfe.
BASH-Kommando : sl -ale
https://linuxcommandlibrary.com/man/sl
Alright. I am using spare bandwidth on me VPS to seed #FOSS torrents!
I have ordered 30GB of HDD space to move the files completely to it. Then I will be able to seed more.
I am interested in seeding various underrated #opensource softwares and games. This includes #BSD derivatives, other independent operating systems like #HaikuOS. As well as many open source games like SuperTuxKart, Wesnoth and Xonotic.
I also seed offline versions of Persian Wikipedia.
If you also have got some spare bandwidth and disk space, you can help other people.
https://fosstorrents.com/ They create Unofficial torrents for many open source projects. I am seeding some of their torrents. They also include many BSD derivatives and independent operating systems.
From #Kiwix library you can download offline versions of many popular websites such as #Wikipedia, #Stackoverflow and so on. You can seed Wikipedia on your own language.
Also many #Linux distros and BSD derivatives have official torrents.
Foto- und Video-Verwaltungstool Immich liegt in v3.1.0 vor
https://linuxnews.de/foto-und-video-verwaltungstool-immich-liegt-in-v3-1-0-vor/ #immich #selfhosting #linux #linuxnews
Arch Linux User Repository (AUR) ist erneuten Angriffen ausgesetzt
https://linuxnews.de/arch-linux-user-repository-aur-ist-erneuten-angriffen-ausgesetzt/ #archlibux #aur #security #linux #linuxnews
Syncthing : synchronisation de fichiers en continu entre vos machines, sans serveur central, sans compte, chiffrement de bout en bout. Dispo sur tous les OS courants et via Docker. Open source, 86k ★ sur GitHub. ⬇️
https://github.com/syncthing/syncthing
#SelfHosted #OpenSource #FOSS #Linux
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-icz
Amérique du Nord : Le rejet de Windows 11 pousse Linux au-dessus des 10 % d'adoption pour la première fois de son histoire
Die App hat jetzt ein Menü, mit dem später die Level ausgesucht werden. Es wird halb transparent über dem Spielfeld angezeigt. Leider ist dadurch mancher Text nicht so gut lesbar. Aber wenn ich weniger Transparenz einstelle, sieht es nicht so schön aus. Muss noch ein bisschen rumprobieren.. 🤔
alles unter #Linux gebaut 😀
😻#Linux sur PC Pulvérise tous les record en Juillet 2026 avec 7.5% mais MacOS aussi avec 20%
👉 Effet Vacances : Moins de PCs entreprises
👉 Percée de #linux chez les youtubers
👉 C'est surtout grace aux US et l'Asie , pas à l'Europe
On continue avec @ekimia a diffuser des Pcs Linux partout !
https://ekimia.fr/boutique/
#Arch #Linux verliert langjährigen #Entwickler und #Sicherheitsexperten
Unter dem Namen #Foxboron gehörte Morten Linderud jahrelang zu den bekanntesten Gesichtern des Projekts. Er arbeitete als Entwickler, #Paketbetreuer, #AUR-Maintainer und Mitglied des Sicherheitsteams. Nun zieht er einen Schlussstrich und verabschiedet sich von Arch Linux.
Während seiner Zeit übernahm Linderud zahlreiche wichtige Aufgaben. Er verantwortete unter anderem die #Debug #Pakete.
https://fosstopia.de/arch-linux-verliert-langjaehrigen-entwickler-und-sicherheitsexperten/
⋅ Le rejet de Windows 11 pousse Linux au-dessus des 10 % d'adoption pour la première fois de son histoire
⋅ COSMIC is doing what GNOME still can't, and it's only been out for a year
− https://www.xda-developers.com/cosmic-doing-gnome-still-cant/
Moin. Im letzten Beitrag ging es darum, wie ich meinen OpenPGP-Schlüssel an Domain, GitHub und Matrix gebunden habe, also um die Frage, woher eigentlich irgendwer wissen soll, dass dieser Schlüssel mir gehört. Ganz am Ende stand dort die Ankündigung eines zweiten Teils: wie das Ding überhaupt gebaut ist und wie sicher es wirklich ist. Der Teil ist jetzt hier.
Der Beitrag hat zwei Hälften, und die kannst du unabhängig voneinander lesen. Teil A ist ein Rezept. Wenn du einen Schlüssel nach demselben Muster bauen willst, arbeitest du dich von oben nach unten durch, inklusive der kompletten GnuPG-Konfiguration, alles kopierbar und in der richtigen Reihenfolge. Teil B erklärt, was die einzelnen Bauteile bedeuten, und endet mit einer ehrlichen Einschätzung, wie sicher das alles am Ende ist.
Der eigentliche Grund, warum ich das aufschreibe, ist aber ein anderer. Zwischen „mein Schlüssel ist modern“ und „mein Schlüssel ist richtig konfiguriert“ liegt eine Lücke, und in die bin ich mit Anlauf hineingesprungen. Der Schlüssel ist Lehrbuch: Ed25519, ein Hauptschlüssel, der ausschließlich zertifiziert, drei getrennte Unterschlüssel, fünf Jahre Laufzeit, über sieben Kanäle veröffentlicht, dazu eine eID-Zertifizierung. Und trotzdem wurde er vom ersten Tag an schwächer angesprochen als der Schlüssel, den er ablöst.
Aufgefallen wäre das niemandem, und genau das ist der interessante Teil. Das einzige Symptom war eine Warnzeile auf dem Terminal von jemandem, der mir eine verschlüsselte Mail schreibt. Also auf einem Rechner, den ich nie zu Gesicht bekomme. Und die Ursache war ausgerechnet eine Härtungsmaßnahme, die ich in bester Absicht eingebaut hatte, um einen musealen Algorithmus loszuwerden. Härtung, die etwas leise verschlechtert, finde ich als Geschichte deutlich spannender als noch eine Schlüsselerzeugungsanleitung. Nachbauen kannst du das übrigens in zwei Minuten, das Labor dazu steht weiter unten.
Bestandteil
Wert
Hauptschlüssel
ed25519 0x893DE0CDDE986DEB, Verwendung [C], also nur zertifizieren
Fingerabdruck
45FC D081 ADB5 4872 EA5B 06B9 893D E0CD DE98 6DEB
Signatur-Unterschlüssel
ed25519 0xD788641D8588A674
Verschlüsselungs-Unterschlüssel
cv25519 0x429D03637892821A
Authentisierungs-Unterschlüssel
ed25519 0x22F2E3234664DDBE
UIDs
Sebastian van de Meer, dazu eine Foto-UID mit 10851 Byte
Gültigkeit
erzeugt am 24.07.2026, läuft am 23.07.2031 ab
Vorgänger
ed25519 0x5F279C362EEAB216, gültig bis 31.12.2026, zeichnet den neuen gegen
Fremdzertifizierung
Governikus/eID 0x5E5CCCB4A4BF43D7, Level 3
Umgebung
GnuPG 2.4.4, libgcrypt 1.10.3
Die Aufgabenteilung steht nicht nur in der Doku, die steht maschinenlesbar im Schlüssel selbst. Jede Bindungssignatur trägt ein Feld mit Schlüssel-Flags, und das sieht bei mir so aus:
primary key flags: 01 certify [S] key flags: 02 sign [E] key flags: 0C encrypt communications + encrypt storage [A] key flags: 20 authenticate
Teil A ist der Ablauf, den ich für richtig halte, und bis auf die markierten Stellen genau der, den ich gegangen bin. Dort, wo der Befehl unten besser ist als das, was ich damals getippt habe, steht ein Hinweis dazu.
gpg --version # gpg (GnuPG) 2.4.4 # libgcrypt 1.10.3
GnuPG 2.4.x ist die Annahme für den ganzen Beitrag. Zwei Dinge gleich vorweg, weil sie sonst später wehtun:
--quick-generate-key verweigert den Dienst, wenn die UID bereits auf einem anderen Schlüssel im Schlüsselbund existiert. Genau deshalb ist dieser Schlüssel über eine Parameterdatei mit --batch --gen-key entstanden. Das trifft dich zuverlässig genau dann, wenn du einen Schlüssel rotierst, also in dem Moment, in dem der alte noch da ist.Wenn du bei GPG ganz am Anfang stehst, sind die Grundlagen zum Signieren und Verschlüsseln hier im Blog der bessere Einstieg. Dieser Beitrag setzt voraus, dass du weißt, was ein öffentlicher Schlüssel und ein Unterschlüssel sind.
Und zwar wirklich vorher, nicht hinterher. Mein ~/.gnupg war in einem Zustand, den ich hier nur ungern zugebe.
chmod 700 ~/.gnupg
find ~/.gnupg -type f -exec chmod 600 {} +
# Erst alle GnuPG-Frontends schließen und die Daemons beenden, sonst löschst du
# unter Umständen echte, aktive Locks:
gpgconf --kill all
# Übriggebliebene Lock-Dateien abgestürzter Läufe. Bei mir waren es 93 Stück.
find ~/.gnupg -name '.#lk*' -delete
# Altlasten, die keine 2.4er Installation mehr braucht
mkdir -p ~/gnupg-attic-$(date +%F)
mv ~/.gnupg/{cert8.db,key3.db,secmod.db} ~/gnupg-attic-$(date +%F)/ 2>/dev/nullEin ~/.gnupg mit 775 und Dateien mit 664 ist erschreckend verbreitet, und ich will das gar nicht größer machen als es ist: Auf einem Einzelplatzrechner ist das keine Katastrophe. Es wird aber genau in dem Moment eine, in dem das Home-Verzeichnis in ein Backup, in einen Container-Mount oder in einen synchronisierten Ordner wandert. Und das passiert schneller, als man denkt.
Das ist die tatsächlich laufende Konfiguration, so wie sie bei mir liegt, mit ihren Originalkommentaren. Der Block mit dem Warnhinweis ist die wichtigste Stelle im gesamten Beitrag, warum, steht in Teil B.
# ---- UX / output ---- keyid-format 0xlong with-fingerprint with-subkey-fingerprint utf8-strings # ---- Key discovery (local first, then WKD/DANE; email-validated keyserver last) ---- auto-key-retrieve auto-key-locate local,wkd,dane,keyserver keyserver hkps://keys.openpgp.org # ---- Strong defaults ---- # cipher-algo / digest-algo are intentionally NOT forced: forcing them would override # the recipient's stated capabilities. personal-*-preferences below select strong # algorithms interoperably instead. cert-digest-algo SHA512 # ---- KDF hardening for passphrase-derived symmetric keys (gpg -c / key export) ---- s2k-mode 3 s2k-digest-algo SHA512 s2k-cipher-algo AES256 s2k-count 65011712 # ---- WARNING. Legacy ciphers: do NOT disable 3DES here ---- # An earlier version of this file carried: # disable-cipher-algo 3DES # disable-cipher-algo IDEA # disable-cipher-algo CAST5 # disable-cipher-algo BLOWFISH # disable-cipher-algo TWOFISH # The 3DES line alone silently strips ALL algorithm preferences from every key you # generate while it is active, and it also blocks DECRYPTION of old archives. # New encryption never selects a legacy cipher anyway, because # personal-cipher-preferences lists AES only. # ---- Privacy / minimal metadata ---- no-comments no-emit-version export-options export-minimal # ---- Listing/verification quality-of-life ---- verify-options show-uid-validity list-options show-uid-validity # ---- Trust model ---- trust-model tofu+pgp # ---- Your key ---- default-key 0x45FCD081ADB54872EA5B06B9893DE0CDDE986DEB # hidden-encrypt-to 0x45FCD081ADB54872EA5B06B9893DE0CDDE986DEB # optional, off # ---- Local policy: what *you* prefer when sending ---- personal-cipher-preferences AES256 AES192 AES personal-digest-preferences SHA512 SHA384 SHA256 weak-digest SHA1 force-ocb # ---- Preferences baked into keys you create from here on ---- default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
Zwei Zeilen darin sind Entscheidungen und keine Selbstverständlichkeiten, deshalb je ein Satz dazu.
force-ocb ist keine Präferenz, sondern eine Erzwingung. Es sorgt dafür, dass ausgehende Nachrichten die OCB-Variante aus der LibrePGP-Linie benutzen, und setzt sich dabei über das hinweg, was der Empfängerschlüssel ankündigt. Sehr alte oder anders implementierte Empfänger können solche Nachrichten nicht lesen. Das steht in einer gewissen Spannung zu dem Prinzip ein paar Zeilen weiter oben, wo ich cipher-algo bewusst nicht erzwinge. Für mich ist das in Ordnung, in einer Konfiguration zum Abschreiben würde ich die Zeile weglassen.auto-key-retrieve holt unbekannte Schlüssel beim Prüfen automatisch nach. Sehr bequem, und es verrät dem Keyserver, welche signierten Nachrichten du wann liest. Für mich ein akzeptabler Tausch, bei einem anderen Bedrohungsmodell schaltest du das besser ab.Dazu die beiden kleinen Geschwisterdateien. gpg-agent.conf:
enable-ssh-support default-cache-ttl 180 max-cache-ttl 600 pinentry-program /usr/bin/pinentry-gnome3
Und dirmngr.conf:
honor-http-proxy disable-ldap
Ein Hauptschlüssel, der nur zertifiziert, über eine Parameterdatei. Die Zeile Preferences: war in meinem echten Lauf nicht drin, nimm sie mit. Sie kostet nichts und fängt genau den Fehler ab, um den es in Teil B geht. Das ist keine Vermutung, ich habe es nachgemessen: Mit dieser Zeile bleiben die Präferenzen selbst dann im Schlüssel, wenn die defekte Konfiguration aktiv ist. Die eigentliche Kontrolle bleibt trotzdem der Paket-Dump gleich darunter, denn eine Parameterdatei ersetzt nie die Prüfung des fertigen Artefakts.
cat > keyparams.txt <<'EOF' Key-Type: eddsa Key-Curve: Ed25519 Key-Usage: cert Name-Real: Sebastian van de Meer Name-Email: kernel-error@kernel-error.com Expire-Date: 5y Preferences: AES256 AES192 AES SHA512 SHA384 SHA256 ZLIB BZIP2 ZIP Uncompressed %ask-passphrase %commit EOF gpg --batch --gen-key keyparams.txt shred -u keyparams.txt
Und jetzt sofort nachsehen, ob die Präferenzen auch wirklich im Schlüssel gelandet sind. Genau diese Prüfung fehlte bei mir im Juli, und deshalb steht sie hier direkt hinter der Erzeugung und nicht irgendwo weiter unten.
gpg --export kernel-error@kernel-error.com | gpg --list-packets | grep -E 'pref-|features'
Du willst dort pref-sym-algos, pref-hash-algos, pref-zip-algos und ein features mit gesetztem Bit 0x01 sehen. Wenn dort nur eine features-Zeile steht und sonst nichts, dann hör hier auf und lies erst den Abschnitt über den Defekt in Teil B. Dann stimmt etwas mit deiner Konfiguration nicht, und der Schlüssel trägt den Fehler ab sofort dauerhaft mit sich herum.
Zum shred oben noch ein Wort, weil es sonst falsche Sicherheit erzeugt: Es entfernt die sichtbare Arbeitsdatei, mehr nicht. Auf SSDs, auf ZFS, bei Snapshots und auf journalenden Dateisystemen ist damit überhaupt nicht garantiert, dass keine alten Blöcke mehr herumliegen. Solche Zwischendateien sollten deshalb von vornherein nur auf einem verschlüsselten Dateisystem entstehen.
Interaktives --quick-add-key ist mir in einer nicht-interaktiven Shell mit einem /dev/tty-Fehler um die Ohren geflogen. Mit --batch läuft es durch.
FPR=45FCD081ADB54872EA5B06B9893DE0CDDE986DEB gpg --batch --quick-add-key $FPR ed25519 sign 5y gpg --batch --quick-add-key $FPR cv25519 encr 5y gpg --batch --quick-add-key $FPR ed25519 auth 5y
240×288 Pixel, Graustufen-JPEG, 10851 Byte. Halt das Bild klein, es reist in jedem vollständigen Export mit und ist der mit Abstand größte Posten in der Schlüsselgröße.
gpg --edit-key $FPR > addphoto > /pfad/zu/sebastian-photo-uid.jpg > save
Eine Sache dazu, die man vorher wissen sollte: Keiner der drei Keyserver, die ich benutze, hat die Foto-UID nach dem Upload je wieder herausgerückt. Für jeden Keyserver da draußen lege ich die Hand nicht ins Feuer, für die drei, auf die es ankommt, schon. Das Bild überlebt damit nur auf den Kanälen, die ich selbst hoste. Damit ist die Foto-UID Dekoration und keine Funktion. Das ist ein völlig legitimer Grund, sie trotzdem mitzunehmen, man sollte sich nur nichts vormachen.
Zwei Dinge müssen existieren, bevor der Schlüssel irgendwo landet: ein Backup des geheimen Schlüssels und ein Widerrufszertifikat. Beides später nachzuholen ist der Klassiker, den man genau einmal bereut.
gpg --export-secret-keys --armor $FPR > secret-key-backup.asc gpg --output revoke.asc --gen-revoke $FPR
Ein Widerrufszertifikat legt GnuPG bei der Erzeugung ohnehin schon selbst unter ~/.gnupg/openpgp-revocs.d/<FPR>.rev ab. Das Backup dagegen ist erst dann eines, wenn du es einmal zurückgespielt hast. Also rein damit in ein Wegwerf-GNUPGHOME und nachsehen, ob der geheime Hauptschlüssel dort auch wirklich auftaucht und nicht bloß die Datei lesbar war. Danach wandern beide auf Offline-Medien.
RESTORE=$(mktemp -d); chmod 700 "$RESTORE" gpg --homedir "$RESTORE" --import secret-key-backup.asc gpg --homedir "$RESTORE" --with-subkey-fingerprint --list-secret-keys $FPR rm -rf "$RESTORE"
Wichtig, weil es ein sehr verbreitetes Missverständnis ist: Der s2k-*-Block aus der gpg.conf betrifft den passphrasenbasierten Schutz, also etwa gpg -c und den Export. Er sagt nichts darüber aus, wie der geheime Schlüssel in ~/.gnupg auf der Platte geschützt ist. Darum kümmert sich der gpg-agent mit eigenen Parametern, und bereits vorhandenes Schlüsselmaterial wird durch eine geänderte gpg.conf nicht rückwirkend neu verpackt. Wer die beiden verwechselt, glaubt an eine Härtung, die an dieser Stelle gar nicht wirkt. Was tatsächlich in deinem Backup steht, siehst du wie immer am Artefakt selbst, per gpg --list-packets secret-key-backup.asc.
Jetzt kommt der Schritt, der die ganze Aufteilung von oben überhaupt erst einlöst. Der Hauptschlüssel hat im Alltag nichts verloren. Gebraucht wird er nur, wenn ein Unterschlüssel verlängert, ersetzt oder widerrufen wird, wenn eine UID dazukommt oder wenn du einen fremden Schlüssel zertifizierst. Also fliegt sein geheimer Teil vom Arbeitsrechner herunter, und zwar genau jetzt, nachdem Backup und Widerrufszertifikat existieren und nicht vorher.
# nur die Unterschlüssel exportieren, ohne den geheimen Hauptschlüssel gpg --export-secret-subkeys --armor $FPR > subkeys.asc # das gesamte geheime Material aus dem Alltags-Keyring werfen gpg --delete-secret-keys $FPR # und danach ausschließlich die Unterschlüssel zurückholen gpg --import subkeys.asc shred -u subkeys.asc
Kontrolliert wird das an einem einzigen Zeichen:
gpg -K # sec# ed25519/0x893DE0CDDE986DEB # ssb ed25519/0xD788641D8588A674 # ssb cv25519/0x429D03637892821A # ssb ed25519/0x22F2E3234664DDBE
Das Doppelkreuz hinter sec ist der ganze Punkt. Es bedeutet: GnuPG kennt den Hauptschlüssel, hat sein geheimes Gegenstück aber nicht mehr. Signieren, Entschlüsseln und Authentisieren laufen unverändert weiter, dafür sind die Unterschlüssel zuständig. Was nicht mehr geht, ist alles, was die Identität selbst betrifft, also neue Unterschlüssel anlegen, Laufzeiten verlängern, UIDs ergänzen und fremde Schlüssel zertifizieren.
Der geheime Hauptschlüssel liegt ab hier zusammen mit dem Widerrufszertifikat auf verschlüsseltem Wechselmedium. Wenn ich ihn brauche, kommt er ausdrücklich nicht zurück nach ~/.gnupg, sondern in ein temporäres GNUPGHOME, das hinterher wieder verschwindet.
Ein Detail dabei ist wichtig genug für einen eigenen Absatz, weil es sonst still danebengeht: Das Offline-Backup ist ein Schnappschuss. Es entstand oben, bevor der alte Schlüssel gegengezeichnet hat und bevor die Governikus-Zertifizierung da war. Diese Fremdsignaturen hängen am öffentlichen Teil, der im Alltags-Keyring liegt, nicht im Backup. Wer nur das Backup einspielt und dort arbeitet, exportiert hinterher einen Schlüssel, dem genau diese Signaturen fehlen. Also immer beides einspielen:
# aktuellen öffentlichen Stand samt Fremdsignaturen aus dem Alltags-Keyring mitnehmen gpg --armor --export-options no-export-minimal --export $FPR > /tmp/pub-aktuell.asc export GNUPGHOME=$(mktemp -d); chmod 700 "$GNUPGHOME" trap 'rm -rf "$GNUPGHOME"' EXIT HUP INT TERM # auch bei Abbruch aufräumen gpg --import /media/offline/secret-key-backup.asc gpg --import /tmp/pub-aktuell.asc # hier die Arbeit am Schlüssel, etwa eine Laufzeit verlängern gpg --armor --export-options no-export-minimal --export $FPR > /tmp/pub-neu.asc rm -rf "$GNUPGHOME"; unset GNUPGHOME
Danach importierst du die aktualisierte öffentliche Hälfte in den Alltags-Keyring und rollst sie über alle Veröffentlichungskanäle aus. Das ist unbequem. Es soll unbequem sein, denn genau diese Unbequemlichkeit ist der Grund, warum der Hauptschlüssel selten angefasst wird und deshalb schwer zu verlieren ist.
Ein weicher Übergang statt einer harten Kante: Der alte Schlüssel bleibt bis zu seinem Ablauf gültig und zertifiziert den neuen. Wer dem alten Schlüssel schon vertraut, bekommt damit einen kryptografischen Pfad zum neuen, ohne mich irgendwo anrufen zu müssen.
gpg --default-key 0x5F279C362EEAB216 --sign-key $FPR
Das ist ein eigenes Thema, deshalb hier nur zusammengefasst: Governikus ist nach meinem Stand vom August 2026 der einzige mir bekannte noch aktive Dienst in Deutschland, der OpenPGP-Schlüssel über die Online-Ausweisfunktion zertifiziert. Du schickst deinen öffentlichen Schlüssel hin, weist dich mit dem Personalausweis aus und bekommst eine Zertifizierung mit Level 3 zurück. Die Volksverschlüsselung fällt als Alternative aus, die macht ausschließlich S/MIME nach X.509, erzeugt die Schlüssel selbst und wird ohnehin eingestellt.
Strukturell wichtig für den Rest des Beitrags ist nur ein Punkt: Diese Zertifizierung ist eine Fremdsignatur. Und die Hälfte meiner Veröffentlichungskanäle wirft Fremdsignaturen weg. Warum, steht gleich.
Das ist der Teil, den fast alle Anleitungen überspringen, und ausgerechnet hier fallen die echten Entscheidungen. Vier verschiedene Exporte desselben Schlüssels für vier verschiedene Jobs, mit den gemessenen Größen der Artefakte, die tatsächlich ausgeliefert werden:
Artefakt
Befehl
Größe
Inhalt
minimal, ASCII
gpg --armor --export $FPR
16772 B
1 UID plus Foto, 3 Unterschlüssel, 5 Signaturen
vollständig, ASCII
gpg --armor --export-options no-export-minimal --export $FPR
17833 B
zusätzlich 3 Fremdsignaturen, also 8 Signaturen
WKD, binär
gpg --no-armor --export-options no-export-minimal --export $FPR
13108 B
wie vollständig, nur binär
DANE, binär minimal
siehe unten
1298 B
1 UID, kein Foto, 4 Signaturen
Alle vier Befehle habe ich gegen die live ausgelieferten Dateien geprüft, sie reproduzieren die Artefakte byteidentisch, sha256 stimmt jeweils überein. Du kannst sie also so übernehmen.
Und jetzt die fiese Falle. In meiner gpg.conf steht global export-options export-minimal. Export-Optionen summieren sich, sie ersetzen einander nicht. --export-options export-clean hebt export-minimal also nicht auf. Du bekommst weiterhin einen minimalen Export, still und ohne Warnung, mit weggeworfenen Fremdsignaturen. Nur die ausdrückliche Verneinung funktioniert:
gpg --export-options export-clean --export $FPR | gpg --list-packets | grep -c '^:signature packet:' # 5, immer noch minimal gpg --export-options no-export-minimal --export $FPR | gpg --list-packets | grep -c '^:signature packet:' # 8, korrekt
Das ist genau die Sorte Fehler, bei der du fest davon überzeugt bist, einen Schlüssel mit allen Signaturen veröffentlicht zu haben, während in Wahrheit die eID-Zertifizierung nie das Haus verlassen hat.
Die zweite Stolperfalle beim Export: export-minimal wirft zwar Fremdsignaturen weg, behält aber die Foto-UID. Für den DANE-Record muss auch das Bild raus, sonst wächst der Record von rund einem Kilobyte auf gute zwölf. Dieser Befehl hat den ausgelieferten Record mit 1298 Byte erzeugt:
gpg --no-armor --export-options export-minimal --export-filter keep-uid='mbox = kernel-error@kernel-error.com' --export $FPR > openpgpkey.bin
Zwei Anmerkungen noch zu den Formaten, weil sich in der 2.4er Reihe etwas geändert hat:
--print-dane-records gibt es nicht mehr. Der Nachfolger heißt --export-options export-dane.export-dane liefert einen fertigen DNS-Präsentationsblock, also $ORIGIN, Kommentarzeilen und generische TYPE61-Rdata, bei mir 25642 Byte. Das ist kein binäres Schlüsselmaterial. Zum Lesen ist es praktisch, der ausgelieferte Record entstand aber aus dem binären Export oben plus base64 -w0 openpgpkey.bin. Beide Wege sind gültige Zonefile-Syntax, RFC 7929 definiert die base64-Präsentationsform und RFC 3597 die generische TYPE61-Form, BIND frisst beides. Der Einzeiler passte einfach besser in meine bestehende Zone.Sieben Kanäle, und jeder existiert aus einem anderen Grund. Das „warum“ ist dabei die interessantere Hälfte:
Kanal
Format
Warum dieser Kanal
keys.openpgp.org
voll hochgeladen, Server wirft Signaturen und Foto weg
der einzige Keyserver, der die Mailadresse validiert, und der, den moderne Clients abfragen
keyserver.ubuntu.com
voll
klassischer SKS-Nachfolger, behält Fremdsignaturen
pgpkeys.eu
voll
zweiter Klassiker, Redundanz
DANE / OPENPGPKEY
minimal binär, 1298 B
Vertrauen hängt an DNSSEC statt an einem Signaturgraphen, muss klein bleiben, es ist ein DNS-Record
WKD advanced
kein eigener Export, CNAME auf wkd.keys.openpgp.org
spiegelt keys.openpgp.org automatisch, lässt sich hier nicht selbst hosten
WKD direct (Apex)
voll binär, 13108 B
selbst gehostet, deshalb die einzige Stelle mit Foto und Fremdsignaturen
security.txt und Direktdownload
voll ASCII, 17833 B
auffindbar für Menschen und für Scanner
Zwei abgeleitete Namen tauchen dabei auf, und die werden regelmäßig falsch gebildet. Beide habe ich unabhängig nachgerechnet, sie stimmen mit dem überein, was ausgeliefert wird:
# WKD: z-base32 des SHA-1 vom lokalen Teil, ASCII-Großbuchstaben vorher klein gemacht
# sha1("kernel-error") -> z-base32 -> 3gyjbxx9xfdggpkmx5qdd793xy431w5u
gpg --with-wkd-hash -k kernel-error@kernel-error.com
# DANE (RFC 7929): SHA-256 des kanonisierten UTF-8-Lokalteils, auf 28 Oktette gekürzt,
# hex-kodiert, dann ._openpgpkey.<domain>
# 70e1c7d87e825b3aba45e2a478025ea0d91d298038436abde5a4c2d0._openpgpkey.kernel-error.comZwei Präzisierungen, damit hier keine Regel steht, die breiter ist als die Spezifikationen: WKD bildet ASCII-Großbuchstaben auf Kleinbuchstaben ab, das ist kein allgemeines Unicode-Lowercasing. Und DANE übernimmt diese Abbildung nicht einfach, RFC 7929 hat seine eigene Kanonisierung des lokalen Teils. Bei mir fallen beide zusammen, weil kernel-error schon reines Kleinbuchstaben-ASCII ist. Genau deshalb ist mir der Unterschied nie begegnet. Wer einen Lokalteil mit Großbuchstaben oder Nicht-ASCII hat, darf die beiden auf keinen Fall gleichsetzen.
Und weil ich schon dabei bin, mich zu blamieren: Bei einem früheren Review habe ich DANE als „fehlt“ markiert, weil ich den z-base32-Namen aus WKD gegen das DNS geprüft habe. Also den falschen Namen. DANE lief die ganze Zeit. Wenn du deinen eigenen Aufbau prüfst, prüfe bitte den Namen, den die jeweilige Spezifikation vorschreibt, und nicht den, den du gerade im Kopf hast. Wie man einen OPENPGPKEY-Record überhaupt in die Zone bekommt und wie man die Zone dafür mit BIND signiert, steht hier im Blog.
Eine Konsequenz aus der Tabelle überrascht die Leute regelmäßig, deshalb schreibe ich sie deutlich hin:
Die Governikus-Zertifizierung ist nur auf den klassischen Keyservern und auf den selbst gehosteten Kopien sichtbar. keys.openpgp.org wirft sie weg, und gpg bevorzugt die WKD-advanced-Methode, die wiederum auf keys.openpgp.org zeigt. Der Kanal, den die meisten Clients benutzen, ist also ausgerechnet der mit den wenigsten Signaturen.
Der letzte Schritt in Teil A, und der wichtigste: Hol dir deinen eigenen Schlüssel so, wie es jemand tut, der dich nicht kennt. Einmal pro Suchpfad, jedes Mal in einem frischen Schlüsselbund.
# den Schlüssel holen wie ein Fremder, einmal pro Lookup-Pfad for m in dane wkd keyserver; do GNUPGHOME=$(mktemp -d) gpg --auto-key-locate clear,$m --locate-external-keys kernel-error@kernel-error.com done # welche Präferenzen bewirbt der Schlüssel tatsächlich? gpg --export $FPR | gpg --list-packets | grep -E 'pref-|features' # welchen Cipher wählt ein Absender wirklich? gpg --status-fd 1 -d message.gpg | grep DECRYPTION_INFO
Damit endet das Rezept. Ab hier geht es darum, was die Teile bedeuten, und um die Frage, wie sicher der Aufbau am Ende wirklich ist.
Wenn du bis hierher gekommen bist, hast du ein funktionierendes Rezept. Was du noch nicht hast, ist ein Gefühl dafür, warum die Teile so und nicht anders geschnitten sind, und wo der Aufbau trotz allem nachgibt. Genau darum geht es jetzt, und zwar in dieser Reihenfolge: erst die Struktur, dann die Zahlen, dann der Fehler und am Ende die Rechnung ohne Schönfärberei.
Der Hauptschlüssel hat genau eine Aufgabe: zu sagen, wer zu diesem Schlüssel gehört. Er signiert die UIDs und er signiert die Unterschlüssel. Er signiert nie eine Mail und entschlüsselt nie irgendetwas. Alles Operative ist delegiert:
[C] certify Identitätsanker. Wird selten benutzt. Eine Kompromittierung ist
nicht reparierbar, ein Verlust nur über das Offline-Backup.
[S] sign Signieren im Alltag
[E] encrypt Entschlüsseln im Alltag
[A] auth Authentisierung, etwa als SSH-SchlüsselDer Gewinn: Ein kompromittierter oder ausgedienter Unterschlüssel lässt sich widerrufen und ersetzen, ohne die Identität anzufassen, ohne die gesammelten Fremdsignaturen zu verlieren und ohne den Fingerabdruck zu ändern, der an sieben Stellen veröffentlicht ist. Dass [S] und [E] getrennt sind, hat noch einen zweiten Grund: Sie haben unterschiedliche Lebenszyklen. Einen alten Signaturschlüssel zu vernichten ist harmlos. Einen alten Verschlüsselungsschlüssel zu vernichten heißt, dass du an dein Archiv nicht mehr herankommst.
Das Ganze zahlt sich allerdings nur aus, wenn du auch die Konsequenz ziehst: Der volle Nutzen dieser Aufteilung stellt sich erst ein, wenn der Hauptschlüssel offline liegt. Genau deshalb liegt er hier offline, auf verschlüsseltem Wechselmedium und zusammen mit dem Widerrufszertifikat. Er kommt nur heraus, wenn ein Unterschlüssel verlängert, ersetzt oder widerrufen werden muss, und dann in ein temporäres GNUPGHOME und nicht zurück in den Alltags-Keyring. Auf der Arbeitsmaschine liegen ausschließlich die drei Unterschlüssel. Ein Hauptschlüssel, der nur zertifiziert, aber trotzdem neben dem Mailclient herumliegt, ist am Ende nur Kosmetik.
Der [A]-Unterschlüssel existiert übrigens, ist aber bewusst nicht im gpg-agent für SSH verdrahtet, sshcontrol ist leer. Ich habe ihn erzeugt, um mir die Option offenzuhalten. Mehr ist es im Moment nicht.
Ein Punkt dazu, den du im Kopf behalten solltest, weil er gleich noch wichtig wird: 128 Bit klassische Sicherheit sind die Obergrenze dieses Schlüssels. Merk dir die Zahl. Sie ist der Grund, warum die AES-Geschichte weiter unten weniger dramatisch ist, als sie zunächst klingt.
Dieses Konzept muss sitzen, sonst funktioniert die Geschichte danach nicht. Vorweg ein Satz, den viele nie gehört haben: Eine OpenPGP-Nachricht ist immer hybrid. Der asymmetrische Teil, also dein Ed25519- und X25519-Material, verpackt ausschließlich einen zufällig erzeugten symmetrischen Sitzungsschlüssel. Die eigentlichen Nutzdaten verschlüsselt ein symmetrisches Verfahren, in der Regel AES. Der Fehler, um den es gleich geht, saß in dieser symmetrischen Hälfte.
Ein OpenPGP-Schlüssel trägt nämlich nicht nur öffentliche Schlüssel spazieren. Die Selbstsignatur jeder UID enthält Subpakete, die ankündigen, was der Besitzer verarbeiten kann:
hashed subpkt 11 (pref-sym-algos: 9 8 7) AES256, AES192, AES128 hashed subpkt 21 (pref-hash-algos: 10 9 8) SHA512, SHA384, SHA256 hashed subpkt 22 (pref-zip-algos: 2 3 1 0) ZLIB, BZIP2, ZIP, unkomprimiert hashed subpkt 34 (pref-aead-algos: 2) OCB, fehlt auf diesem Schlüssel hashed subpkt 30 (features: 05) Feature-Bits, siehe unten hashed subpkt 23 (keyserver preferences: 80) "no-modify"
Das features-Oktett ist die Stelle, an der ich mich in meinen eigenen Notizen vertan hatte, deshalb hier die Dekodierung. In der Linie, die GnuPG 2.4 implementiert, bedeuten die Bits des ersten Oktetts:
0x01 SEIPD-v1 mit Modification Detection Code (MDC) 0x02 AEAD 0x04 Unterstützung für das v5-Schlüssel- und Fingerabdruckformat
features 05 ist also 0x01 + 0x04, das heißt MDC und kein AEAD. features 07 wäre 0x01 + 0x02 + 0x04, und genau das bekommt ein Schlüssel, den GnuPG 2.4 mit Standardeinstellungen erzeugt. Der kaputte Zustand war features 04, also 0x04 ganz allein: weder MDC noch AEAD angekündigt.
Eine Versionsfußnote gehört dazu: Diese Bitbelegung und das Subpaket 34 stammen aus der LibrePGP-Linie, die GnuPG 2.4 umsetzt. RFC 9580 hat beides geändert, dort sind die AEAD-Präferenzen in Subpaket 39 umgezogen und das Feature-Modell wurde umgebaut. Diese Spaltung kommt weiter unten noch einmal zurück.
Wenn dir jemand etwas verschlüsselt, liest dessen GnuPG deine Präferenzliste und wählt daraus das stärkste Verfahren, das beide können. Das ist der ganze Mechanismus. Daraus folgen zwei Dinge, die den meisten Leuten gegen den Strich gehen:
personal-cipher-preferences schützen dich nicht. Die bestimmen, was du verschickst. Was Leute dir schicken, bestimmt allein das, was dein veröffentlichter Schlüssel ankündigt.Und wenn ein Schlüssel gar nichts ankündigt? Dann greift der Rückfall. RFC 4880 schreibt dafür 3DES vor, den verpflichtend zu implementierenden Algorithmus. Moderne GnuPG-Versionen landen dort allerdings nicht mehr: Seit der 2.3er Reihe verschlüsselt gpg grundsätzlich nicht mehr mit 64-Bit-Blockchiffren, dafür müsstest du ausdrücklich --allow-old-cipher-algos setzen. Der Rückfall endet deshalb bei AES-128. Nicht kaputt, aber eben auch nicht das, was der Schlüssel bekommen sollte.
Ein x-beliebiger Absender, der meinem brandneuen Schlüssel etwas verschlüsselt, sah das hier:
gpg: WARNING: cipher algorithm AES not found in recipient preferences gpg: AES.CFB encrypted data [GNUPG:] DECRYPTION_INFO 2 7 0 # 7 = AES128
Derselbe Absender, wenn er dem Schlüssel von 2023 schreibt, den der neue gerade ablöst:
[GNUPG:] DECRYPTION_INFO 2 9 0 # 9 = AES256
Der neue Schlüssel hatte überhaupt keine pref-sym-algos, keine pref-hash-algos und keine pref-zip-algos, dazu features 04 statt 05. Er wurde also schwächer angesprochen als sein Vorgänger, lautlos, und der einzige Hinweis darauf erschien auf einem Terminal, das jemand anderem gehört.
In meinen Arbeitsnotizen stand als Ursache: „mit einer --batch --gen-key-Parameterdatei ohne Preferences:-Zeile gebaut“. Das ist falsch. Eine Parameterdatei ohne diese Zeile erzeugt völlig ordentliche Präferenzen aus den eingebauten Defaults von GnuPG. Nachgeprüft, es kommt das hier heraus:
pref-sym-algos: 9 8 7 2 · pref-aead-algos: 2 · pref-hash-algos: 10 9 8 11 2 · features: 07
Die echte Ursache saß in der gpg.conf. Ich habe die Juli-Konfiguration in einem Wegwerf-Schlüsselbund nachgestellt, der Defekt war sofort wieder da. Danach habe ich die Datei halbiert, bis eine einzige Zeile übrig blieb:
Konfiguration im Test
Ergebnis
Juli-gpg.conf, unverändert
features: 04, gar keine pref-*
ohne disable-cipher-algo 3DES
pref-sym-algos: 9 8 7 2, features: 07
ohne alle disable-cipher-algo-Zeilen
pref-sym-algos: 9 8 7 2, features: 07
ohne cipher-algo AES256
weiterhin kaputt, features: 04
nur disable-cipher-algo 3DES vorhanden
kaputt, features: 04
disable-cipher-algo 3DES plus explizite Preferences:-Zeile
sauber, pref-sym-algos: 9 8 7, features: 05
disable-cipher-algo 3DES ist also notwendig und hinreichend, um den Defekt auszulösen. Eine Zeile, mehr nicht.
Der Mechanismus dahinter ist die eigentliche Pointe des ganzen Beitrags. 3DES ist in OpenPGP der verpflichtend zu implementierende Algorithmus, und in der Standardliste steht er auch sichtbar drin: pref-sym-algos: 9 8 7 2 endet auf der 2, und die 2 ist 3DES. Nimmst du GnuPG diesen einen Algorithmus lokal weg, verschwindet nicht nur er aus der Liste, sondern die Liste als Ganzes.
Beim Warum bleibe ich vorsichtig. Dass GnuPG intern keine gültige Liste mehr konstruieren kann und deshalb gar keine schreibt, ist die naheliegende Erklärung, beweisen lässt sie sich von der Kommandozeile aus nicht. Belegt ist der Auslöser, nicht der Code-Pfad dahinter. Der Effekt selbst ist dagegen eindeutig: Die Härtungszeile hat nicht einen schwachen Algorithmus aus der Liste entfernt, sie hat die komplette Liste entfernt. Und damit dafür gesorgt, dass Absender zurückfallen, und zwar auf etwas Schwächeres als das, was ich gerade weghärten wollte.
Zwei Minuten, kein echter Schlüssel wird angefasst, alles passiert in Wegwerf-Verzeichnissen unter /tmp. Wenn du mir nicht glaubst, ist das hier der schnellste Weg, es selbst zu sehen:
SP=$(mktemp -d)
mk() { # $1 = Name, $2 = bad|good
export GNUPGHOME="$SP/$1"; mkdir -p "$GNUPGHOME"; chmod 700 "$GNUPGHOME"
[ "$2" = bad ] && echo "disable-cipher-algo 3DES" > "$GNUPGHOME/gpg.conf"
cat > "$SP/p.txt" <<EOF
Key-Type: eddsa
Key-Curve: Ed25519
Key-Usage: sign
Subkey-Type: ecdh
Subkey-Curve: cv25519
Subkey-Usage: encrypt
Name-Real: Demo $1
Name-Email: $1@example.invalid
Expire-Date: 1y
%no-protection
%commit
EOF
gpg --batch --gen-key "$SP/p.txt" 2>/dev/null
gpg --export -a "$1@example.invalid" > "$SP/$1.asc"
}
mk nopref bad
mk withpref good
export GNUPGHOME="$SP/sender"; mkdir -p "$GNUPGHOME"; chmod 700 "$GNUPGHOME"
echo "auto-key-locate local" > "$GNUPGHOME/gpg.conf"
gpg -q --import "$SP"/*.asc
echo hi > "$SP/m.txt"
for r in nopref withpref; do
gpg --trust-model always --yes -e -r "$r@example.invalid" -o "$SP/$r.gpg" "$SP/m.txt"
printf '%-9s ' "$r:"
GNUPGHOME="$SP/$r" gpg -q -d "$SP/$r.gpg" 2>&1 | grep -i 'encrypted data'
doneBei mir kommt das hier heraus, und die eine Zeile Unterschied ist der ganze Defekt:
nopref: gpg: WARNING: cipher algorithm AES not found in recipient preferences
gpg: AES.CFB encrypted data
withpref: gpg: AES256.OCB encrypted dataDer Fix selbst ist unspektakulär, ein einziger Befehl im Editiermodus. Weil setpref die Selbstsignatur neu ausstellt, braucht er den Hauptschlüssel. Das Ganze läuft also einmal im temporären GNUPGHOME von weiter oben, mit dem Offline-Schlüssel und dem aktuellen öffentlichen Stand:
gpg --edit-key $FPR > setpref AES256 AES192 AES SHA512 SHA384 SHA256 ZLIB BZIP2 ZIP Uncompressed > y > save
Danach steht da pref-sym 9 8 7, pref-hash 10 9 8, pref-zip 2 3 1 0 und features 05. Der Fingerabdruck bleibt unverändert, und die Governikus-Zertifizierung, die Gegensignatur des alten Schlüssels, die Foto-UID und sämtliche Ablaufdaten überleben. Das schreibe ich so ausdrücklich hin, weil viele Leute Angst vor setpref haben und glauben, es beschädige den Schlüssel. Tut es nicht. Was es tut: Es stellt die Selbstsignatur neu aus. Und damit müssen anschließend alle sieben Veröffentlichungskanäle aufgefrischt werden.
Zur Sicherheit gleich hinterher: default-preference-list in der gpg.conf festgenagelt, und die disable-cipher-algo-Zeilen sind endgültig raus.
Hier will ich ehrlich sein statt dramatisch, sonst wird das hier auch nur wieder eine von diesen „ich habe einen Bug gefunden“-Geschichten.
AES-128 statt AES-256 ist real, aber überschaubar. AES-128 ist nicht gebrochen, es gibt keinen praktischen Angriff darauf. Und erinnere dich an die Zahl von weiter oben: Der asymmetrische Teil dieses Schlüssels liefert ohnehin rund 128 Bit klassische Sicherheit. Gemessen an der reinen Schlüsselsuche war AES-128 also nicht das schwächste Glied in der Kette, es hat lediglich mit dem Rest gleichgezogen. Über Implementierungsfehler, Seitenkanäle oder Protokollschwächen sagt dieser Vergleich nichts. Die faire Einordnung lautet: Das war ein Hygiene- und Signalisierungsfehler, keine ausnutzbare Schwachstelle. Bemerkenswert ist er, weil er lautlos war, automatisch passierte und von einer Härtungsmaßnahme verursacht wurde.
Das fehlende MDC-Bit sah schlimmer aus, als es war. features 04 heißt, dass das Bit 0x01 fehlte, mit dem ein Schlüssel Modification Detection ankündigt. Auf dem Papier lädt das einen Absender dazu ein, auf ein Paket ohne Integritätsschutz zurückzufallen, und das ist die Ecke, aus der EFAIL kam. Gemessen kam aber das hier heraus:
[GNUPG:] DECRYPTION_INFO 2 7 0 [GNUPG:] GOODMDC
Ein Absender mit GnuPG 2.4.x in Standardkonfiguration hat trotz des fehlenden Bits ein integritätsgeschütztes SEIPD-v1-Paket erzeugt und GOODMDC gemeldet. MDC ist dort schlicht immer an. Herauskommen aus dem Integritätsschutz muss man in dieser Version aktiv wollen, etwa über --rfc2440, das ausdrücklich den alten Modus ohne MDC erzeugt. Die tatsächliche Integritätslücke gegenüber einem 2.4.x-Absender mit Standardeinstellungen war damit null.
Diese Aussage gilt exakt so weit wie die Messung und keinen Meter weiter. Über andere Implementierungen oder ältere GnuPG-Versionen sagt sie nichts, und genau dort könnte ein fehlendes MDC-Signal im Prinzip sehr wohl noch eine Rolle spielen. „Kein aktueller Absender ist betroffen“ wäre schlicht gelogen, und irgendwer würde es nachprüfen.
Was wirklich Alarm verdient, ist keines von beiden für sich, sondern die Art des Versagens. Ein Schlüssel kann strukturell perfekt sein und trotzdem still auf den nackten Rückfallwert heruntergehandelt werden, ohne dass irgendwer etwas davon mitbekommt. Die einzige Diagnose erscheint auf einer Maschine, die dir nicht gehört. Weder gpg --list-keys noch --check-sigs noch irgendeine Keyserver-Seite zeigt dir das. Du musst dir Signatur-Subpakete ansehen, und das macht praktisch niemand.
Der reparierte Schlüssel steht bei features 05 und hat keine pref-aead-algos. Gemessen bedeutet das:
AES256.CFB encrypted data # reparierter Schlüssel, features 05 AES256.OCB encrypted data # frisch erzeugter Schlüssel, features 07 plus pref-aead-algos: 2
setpref hat das MDC-Bit zurückgeholt, aber nie eine AEAD-Ankündigung ergänzt, weil der Schlüssel aus dem kaputten Zustand heraus repariert und nicht neu erzeugt wurde. Nachrüsten ginge, setpref … OCB liefert pref-aead-algos: 2 und features 07, auch das habe ich geprüft.
Ich lasse es trotzdem so. AES256-CFB mit MDC ist solide. Vor allem aber ist AEAD genau die Stelle, an der OpenPGP derzeit auseinanderläuft: Das AEAD von GnuPG 2.4 folgt der LibrePGP-Linie, RFC 9580 spezifiziert eine andere Konstruktion namens SEIPD v2. AEAD auf einem breit veröffentlichten Schlüssel anzukündigen bringt heute eine marginale Verbesserung und ein echtes Interoperabilitätsrisiko. Wer sich für die andere Baustelle im selben Themenfeld interessiert: Was in einem modernen Handshake steckt, habe ich am Beispiel X25519MLKEM768 auseinandergenommen. Dasselbe Argument gilt übrigens für force-ocb in meiner lokalen Konfiguration, das betrifft nur, was ich selbst verschicke, und ist eine bewusst etwas vorwärtsgewandte Entscheidung.
Vier Punkte, und die gelten weit über OpenPGP hinaus:
gpg --batch --gen-key ist mit Rückgabewert 0 durchgelaufen und hat einen wunderschön aussehenden Schlüssel erzeugt. Sichtbar war der Defekt ausschließlich in --list-packets.mktemp -d und --locate-external-keys weiter oben da.Und die Kurzfassung für alle, die nur bis hierher gescrollt haben: Ein moderner Schlüssel ist nicht automatisch ein korrekt konfigurierter Schlüssel. Der Unterschied steckt in Signatur-Subpaketen, die dir kein einziges Standardwerkzeug von sich aus zeigt.
Wenn du deinen eigenen Schlüssel gerade nachgeprüft hast und dort etwas anderes steht als erwartet, oder wenn ich mich irgendwo irre, dann dürft ihr mich sehr gerne fragen.
Clawk : donner à un agent de code sa propre VM Linux jetable, pas votre machine. L'agent tourne en root dans un environnement isolé, le réseau est filtré par liste blanche, vos clés SSH restent sur l'hôte. Une VM grillée se réinitialise en une commande. ⬇️
https://github.com/clawkwork/clawk
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-Fbo
Hier wird das Internet repariert!
Heute ist digitaler Unabhängigkeitstag. Viele Freiwillige helfen euch beim Umstieg auf Open-Source Software.
Die Themen sind vielfältig: Messenger, Suchmaschine, Browser, Smartphone, Betriebssystem, Cloud, Passwortverwaltung, Shopping, ....
Heute und die nächsten Tage in #Nürnberg #Landau #Bonn #Karlsruhe #Ilmenau #Darmstadt #Köln #Osnabrück #Augsburg #Erfurt #Bielefeld #Erlangen #Rostock #Flensburg #Chemnitz #Siegen #Gießen #Berlin #Essen #Aachen ... und vielen weiteren Städten!
Schaut gerne mal vorbei!
Zu den Events:
https://events.diday.org/
Zu den Anleitungen:
https://di.day/de
Linux back over 4% in the July 2026 Steam Survey https://www.gamingonlinux.com/2026/08/linux-back-over-4-percent-in-the-july-2026-steam-survey/
#Linux #Bash
So folgt man einem Yt-Kanal Yt-Playliste automatisch ohne Anmeldung und ohne Glocke aber inklusive Desktop-Nachricht und Download.
Nach der Installation einfach #Firefox Lesezeichen in den geforderten Ordner legen -- > fertig
(Script gibts auch für Chromium)
https://github.com/dewomser/FF-auto-youtube-download-/tree/improvements/shell-scripts-refactor
Copilot-KI hat meinen Code verbessert.
Die Daten von Cloudflare vermelden übrigens einen Linux-Anteil auf dem Desktop von 5,9% für Deutschland und 6% für Nordamerika
Statcounter meldet 7,2% Linux in DE.
deja améliore l'autocomplétion zsh : suggestions inline prédictives avec fuzzy matching, scoring fréquence/récence et contexte du répertoire courant. ⬇️
https://github.com/Giammarco-Ferranti/deja
#Programming #WebDev #Linux #FOSS
📬 Ma veille dev de la semaine → https://l.camilleroux.com/veille-thz