Warum funktionieren nicht alle Fingerabdrucksensoren unter Linux?

Fingerabdruck

Im Rahmen der Reihe mit Interviews mit deutschsprachigen Entwicklern habe ich Werner Sembach, Entwickler bei Tuxedo Computers ein paar Fragen gestellt. Anlass war meine News zur demnächst verfügbaren Unterstützung für Fingerprint Reader in KDE Plasma 5.24. Ich fragte mich, warum der Sensor an meinem Tuxedo Aura 15 unter Linux noch immer nicht funktioniert. Kollegen berichten ähnliches von anderen Notebooks verschiedener Hersteller. Da ich weiß, dass Werner sich mit dem Thema beschäftigt hat, hier meine Fragen an ihn:

LN: Als ich vor rund einem Jahr ein TUXEDO Aura 15 Notebook kaufte, war der Treiber für den Fingerabdrucksensor noch in Arbeit. Wie ist denn da der aktuelle Stand?

WS: Das Aura 15 Gen 1 hat einen ElanTech Match-On-Host Fingerprint Reader. Das Protokoll dazu wurde bereits vor einigen Jahren von Igor Filatov implementiert, aber benutzbar sind nur die breiten Swipe-Style Fingerprint Reader. Das war auch der Grund, warum bis vor kurzem der Reader das Aura 15 Gen 1 bewusst als nicht kompatibel in der libfprint geführt wurde. Inzwischen haben sich die Maintainer aber umentschieden. Problem ist, auch wenn der Reader von der aktuellen Version der libfprint jetzt erkannt wird, benutzbar ist er immer noch nicht.

LN: Kannst Du bitte ein wenig auf die technischen Hintergründe eingehen, warum es unter Linux bei manchen Geräten so schwierig ist, den Fingerabdrucksensor zur Mitarbeit zu bewegen?

WS: Ok, ich muss ein wenig ausholen, dann wird meine erste Antwort wahrscheinlich verständlicher. Bei Fingerprint Readern gibt es sogenannte Match-On-Host und Match-On-Device/Match-In-System Modelle. Der Unterschied ist, ob die Bilder, die der Reader macht, vom Betriebssystem (Match-On-Host) oder von der Firmware der Reader selbst (Match-On-Device/Match-In-System) ausgewertet werden. Bei Zweiterem ist der Algorithmus, der eine Aussage trifft, ob 2 Fingerabdrücke gleich sind oder nicht Teil des Firmware-BLOBs der mit dem Reader mitgeliefert wird. Nicht Open Source, aber funktioniert auf allen Betriebssystemen gleich, vorausgesetzt das Protokoll, um mit dem Reader zu sprechen, ist bekannt.

Bei den Match-On-Host Readern bekommt das Betriebssystem nur Bilder geliefert und muss die Auswertung vollständig selbst übernehmen. Im Falle des Aura 15 Gen 1, das, wie zuvor erwähnt, ein Match-On-Host Typ Reader hat, wird ein rund 4 x 4 mm großer Ausschnitt des Fingers in einer 80 x 80 Pixel großen Auflösung aufgenommen und das bringt uns zum Kern des Problems: Es gibt einfach keinen guten Open Source Fingerprint-Matching Algorithmus.

Für Linux-Systeme gibt es die Open-Source-Bibliothek libfprint die es Login Screens und Desktop Environments ermöglicht, Fingerprint-Reader anzusteuern. For Match-On-Host Reader benutzt sie im Backend Teile der NIST Biometric Image Software (NBIS), die ursprünglich für amerikanische Polizeibehörden entwickelt wurde, um physische Fingerabdruck-Karteikarten zu digitalisieren und die im Zuge eines Public Money – Public Code Gesetzes als Public Domain als Source Code downloadbar ist. Das letzte Release ist von 2015, war wahrscheinlich da schon leicht veraltet, geht von weitgehend vollständigen Abdrücken aus, die bei Bedarf händisch aufbereitet wurden.

Kurz, 4 x 4 mm in 80 x 80 Pixel Auflösung sind zu wenig und der Algorithmus versagt mit einer nahezu 100% false negative Rate. Die libfprint Implementierung versucht das noch zu verbessern, indem auch bei diesem „One Touch“ Reader ein Swipe des Fingers verlangt wird: Dann ist der Ausschnitt zwar weiterhin nur 4 mm breit aber hat immerhin die volle Höhe. Aber auch das reicht nicht aus, um ein zuverlässiges Ergebnis zu bekommen. Und dann gibt es noch Fingerprint Reader bei denen einfach das Protokoll nicht in der libfprint implementiert ist. In der Regel, weil es einfach noch nicht bekannt ist und sich noch niemand daran gesetzt hat es herauszufinden.

LN: Was muss geschehen, damit es im Fall des Aura 15 und weiterer Geräte mit Fingerabdrucksensor vorwärtsgeht?

WS: Für das Aura 15 Gen1 bräuchte es jemanden, der sich mit Biometrischer Mustererkennung und/oder mit Machine Learning auskennt, um die NBIS Algorithmen zu verbessern oder durch etwas Besseres zu ersetzen. Bisherige Ansätze waren eher auf semi-erfolgreicher Ausprobier-Ebene:

Die zwei großen Blocker sind diese Issues:

  • https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/271
  • https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/272

Ruhm und Ehre demjenigen der als erster eine gute Lösung findet 😉. Aber Spaß beiseite, das fprint Project hat gute Arbeit geleistet und aus persönlicher Erfahrung kann ich sagen, das es nette Maintainer hat, die für alle Vorschläge offen sind und vielleicht findet sich ja unter den Lesern hier jemand, der helfen kann. Tuxedo Computers will, um die Nutzbarkeit von verbauten Fingerprint Readern zu gewährleisten, künftig nach Personal und Mitstreitern aus der Community suchen. Vom dort erstellten Open-Source-Code können unter Umständen auch andere Projekte profitieren.

Danke an Werner Sembach für die ausführliche Darlegung des komplexen Sachverhalts.

Kommentare

9 Antworten zu „Warum funktionieren nicht alle Fingerabdrucksensoren unter Linux?“

  1. Avatar von Alex
    Alex

    Ich könnte mir tatsächlich vorstellen, mir das mal näher anzuschauen. Danke für dieses nette Interview!

    1. Avatar von Tealk

      Spendier dir nen Eis wenn du das schaffst 😉 Mich ärgert das nämlich schon ein wenig das das nicht klappt, wäre schon ein nice 2 have.

    2. Avatar von /lib/modules
      /lib/modules

      Eine brauchbare Implementation für Match-on-Host Fingerprint Readern würde diese für mich zum ersten mal interessant machen. Ich habs bisher abgeleht einem kruden binaryblob zu vertrauen…

    3. Avatar von tuxnix
      tuxnix

      Ich bin daran ein Sytem zu schaffen, bei dem dann solche Projekte finanzielle Unterstützung bekommen. Aber es wird wohl noch zwei Jahre dauern bis das Wirklichkeit wird.

      Und ja, das Interview ist wirklich klasse. Vielen Dank.

  2. Avatar von Nick
    Nick

    Angesichts der fragwürdigen Sicherheit biometrischer Systeme, sollte man dankbar sein dass das bislang nicht funktioniert hat. Ich kann ohnehin nicht verstehen warum das irgendjemanden stören kann, und warum für Linux evaluierte Hardware derartige Bestandteile in sich mitführt. Ein GNU/Linux zu nutzen bedeutet, von einer höheren Sicherheit und Vertraulichkeit profitieren zu wollen. Und dieser biometrische Nonsens reduziert die Sicherheit nunmal deutlich herab. Wieso macht man überhaupt Werbung dafür, anstatt potentielle Kunden aufzuklären, dass der bewusste Verzicht auf diesen unsicheren Mist nur Vorteile mit sich bringt? Stattdessen sollten besser kryptografische Token, wie Nitrokeys und dergleichen hervorgehoben werden, die sich ebenso komfortabel jedoch sicher nutzen lassen.

    1. Avatar von Simon
      Simon

      Völlig egal wie gut Nutzer über Tokens o.ä. aufgeklärt sind – Fingerabdruckssensoren bleiben komfortabler. Bei Smartphones gab es schon immer einen recht komfortablen Pin, aber erst die die breite Einführung von Fingerabdruckssensoren sorgte dafür, dass die meisten Smartphonebenutzer überhaupt ihre Geräte abgesichert haben.

      Zwar bleibt die Sicherheit der Fingerabdruckssensoren selbst gegenüber Pin/Passwort unterlegen – aber besser als „nichts“ ist es auf jeden Fall.

  3. Avatar von christopher
    christopher

    Schöner, kurzer Beitrag der erklärt wie FP funktioniert und welche Probleme bei der Implementierung zu lösen sind.
    Hat mir sehr gefallen.
    Danke dafür!

  4. Avatar von DerEremit
    DerEremit

    Hatte schon die Hoffnung das ich den Fingerprint Reader an meinen Laptop kurz und Schmerzlos aktivieren kann. lsusb erkannt zwar irgendein von Elantech, Debian will aber noch nicht. Die dunklen Stunden wollte ich mal nutzen und schauen ob das nicht doch geht, aber wird wohl eher ein Projekt als nur ein Sonntag Abend.

    1. Avatar von Ferdinand

      Ich habs unter Debian Sid für ne stunde versucht, aber nicht hinbekommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert