0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NFCカードでPAMを使いログインする仕組みを作った話

Posted at

NFCカードでLinuxにログインしてみた

💡 なぜ作ったのか

  • パスワード入力が面倒だった
  • 以前スマホにプッシュ通知を飛ばしてログインするものを作ったが不安定だった
  • 新しいデバイスを触ってみたかった
  • Linux対応のNFCカードリーダーが市販されていた
    • RC-S300/S1

🛠 やったこと

1. UIDを読み取るプログラムの作成

  • libnfc を使ってNFCカードのUIDを取得
  • RC-S300/S1にカードをかざすだけでUIDを表示

2. ユーザーとの紐付け処理

  • username[\t]UID の形式でペアを記録したファイルを作成
  • 起動時にこのファイルを読み込み、照合するスクリプトを作成
  • コマンドライン引数でユーザー名を指定し、カードのIDがリストにあった場合はユーザー名が与えられたものと一致するかを確認するシンプルな仕様

3. PAMモジュールを実装

  • Cで簡単な認証用のPAMを作成
  • UID照合プログラムを呼び出すだけの構造
  • 成功すればログインを許可、失敗すれば拒否

4. PAMの設定と動作確認

  • /etc/pam.d/common-auth を編集
  • 実際にカードをかざしてログインできることを確認

⚠ 気づいたこと・注意点

  • スマホやマイナンバーカードは毎回違うUIDを返す
    • 認証用には使えない
  • FeliCa Lite-Sなど、UIDが固定のカードが必要
  • UIDは暗号化されていない
    • セキュリティは自己責任
    • 単体での厳重な用途には不向き
  • リーダーのLinux対応は機種によって異なる
    • 購入前に調べることを推奨

🎉 まとめ

  • カードをかざすだけでログインできるのは快適
  • 自作のログイン体験としては大満足
  • 次はチャレンジレスポンスや署名認証にも挑戦したい

📎 付録


それでは良いLinuxライフを

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?