Rust libfprint?
指紋認証は便利で快適です。
iPhoneはFaceIDを使うので別次元の快適さですが、PCでは指紋認証が現役です。
Windows/Macはいざ知らずいざ知らず、Linuxで指紋認証デバイスを使おうと思ってもPlug-and-Playというわけにはいきません。
それどころか、Linuxでの指紋認証サポートは限定的です。
Linuxではfprint projectが主体となって(事実上のデファクトとして)指紋認証デバイスのサポートを行っていますが、指紋認証デバイスの仕様をメーカーが公開していない以上、指紋認証デバイスAを持つユーザーが自分でドライバAを書くほかありません。
メンテナーによる骨の折れる作業と血のにじむ努力によって多数のデバイスがLinuxでサクッと動くようになり、Linux Mintなどの一部ディストロではGUIから気楽に使えるようになったので、対応デバイスをお持ちの方にとってはとてもいい時代になりました。
しかし、まあ、内部実装が歴史的につらい事情などなど、現代的に作り直すことで歴史から解き放ちつつも、共存の道を模索するプロジェクトとしてfprintdというプロジェクトを私が立ち上げました。
小難しくいっていますが、要するにRustで実装したよ、ということです。
MINDTCT
指紋画像から特徴量を抽出するのに用いられるアルゴリズムの一つにNISTが開発したMINDTCTが用いられます。
本プロジェクトではMINDTCTをRustで実装し、公開しています。
Bozorth3
指紋照合に広く用いられるアルゴリズムのひとつにNISTが開発したBozorth3が用いられます。
本プロジェクトではBozorth3をRustで実装し、公開しています。
プロジェクトの今後
結局のところ、メーカーが仕様を公開しない限り、我々はいつまでもリバースエンジニアリングの沼のままです。
私自身このプロジェクトのためにこの世のすべての指紋認証デバイスを入手し、対応するドライバを書き上げ……といったことはできませんが、逆に皆さんが「私の指紋認証デバイスが動いたらうれしいな。」ということでしたら、各種準備は整えておりますのでお手元のAI Agentを使って私のプロジェクトの中にドライバを書けばいいかと思います。もし、ほかに世界の誰か同じデバイスを使っている人のためになるかも、と思ってくださる方はPull Requestなどで協力していただけると幸いです。