IBM TechXchange Japan Identity and Access Management (IAM) User Group

IBM TechXchange Japan Identity and Access Management (IAM) User Group

 View Only

IDに使うカードに保存されている情報を読みだしてみる (その1)

By TAKESHI SHIROIWA posted 6 days ago

  

■ はじめに

みなさん、こんにちは。日本アイ・ビー・エムの白岩です。

このコミュニティーは ID 管理関連のコミュニティーですが最近は、巷のシステムもパスワード以外のログイン方法が増えてきました。

また、本人確認の方法として、運転免許証、マイナンバーカード、パスポートなどが使われることも増えています。

もう一つの最近のIT業界の状況として、AI を使ったコーディングエージェントが普及し始め、プログラムの作成に使われるようになってきています。

当社も Anthoropic 社と提携し、米国の Orlando で開催された TechXchange というカンファレンスで Project Bob という コーディングエージェントを発表しました。

https://www.ibm.com/jp-ja/new/announcements/ibm-project-bob

そこで、今回は、上述の2つのテーマに乗っかり、コーディングエージェントを使って、本人確認カードから、情報を読み出すプログラムを作ってみようという試みです。

果たしてどうなるのでしょうか!

■ カードリーダー

まず、カードリーダーが必要なのですが、これは、自分が持っている、SONY RC-S380 を使うことにします。オークションで中古を手に入れました。

SONY Card Reader RC-S380
SONY Card Reader RC-S380 裏側
■ OS、プログラム言語

OS は、Linux を用意するのも大変なので Windows で試すことにしました。

使用するプログラム言語は、Python を使うことにしました。いろいろとライブラリーがそろっているので、なるべく手を抜きたいという意向に合っているためです。

■ コーディング開始、ドライバの導入

コーディングエージェントは、せっかく、Anthoropic 社と提携したということなので、Claude にしましたが、有料ライセンスを持っているわけではないので、無料枠でできる範囲での作業となりました。

Claude さんには、「SONYのRC-S380を使って、Windows環境の Python で、日本のパスポートに記録されている情報を読み出すプログラムを教えてください。」

とお願いをして、最初のプログラムを作ってもらうことになりました。

Windows と Python でSONYのカードリーダーを使う場合に使うドライバーなども、Claude さんが紹介してくれます。

SONY もカードリーダのWindows用デバイスドライバを用意していますが、Python では、それは使えないようです。

Claude さんの指示で、Python で使うためには、Zadig というドライバーを入れろということでしたので、入れることにしました。

また、追加で https://libusb.info/ というサイトにある、dll をコピーする必要もありました。

この2つを入れると、Python でカードリーダーを読めるようになりました。

本当は、最初、運転免許証の情報にアクセスしようとして四苦八苦していたのですが、そもそもに物理的に読み出せず、かと言って、運転免許証にこだわりもないので、パスポートで試してみることにしました。

パスポートは、物理的な読み出しはすぐにクリア出来ました。

続いて苦労したのが、認証です。パスポート番号、生年月日、有効期限から、認証に必要な MRZ情報という値を求めるのですが、それは簡単な計算なので問題なく進めることができました。

基本的には、コーディングエージェントに最新のコードをアップロードして、実行結果を貼り付けて、デバッグのアドバイスをもらうという手順で進めました。

■ 認証を突破

最初に、パスポートとやり取りをして、認証を突破する必要があるのですが、ここがなかなか苦労しました。

Claude の無料枠は使い切ってしまったので、Copilot を使ったり、Gemini を使ってみたりして、なんとか認証をクリアしました。

ある、生成 AI が、同じ回答をループし始めたら、別の生成 AI を使うなどして、進めるようにしました。

■ データの読み出し

さて、次に、実際の中身を読み出す必要がありますが、これが、認証以上に苦労しているところです。

コードアシスタントエージェントのアドバイス内容がループし始め、おなじアドバイスを延々と繰り返すモードに入ってしまいました。

そろそろ、人間が介入して、バグを探さないといけない状態かもしれないと思いつつも、記事もアップロードしないといけませんので、一旦ここまでで区切らせていただこうかと思います。

実際の中身を読み出すのは、続編として書かせていただこうかと思います。

最後に現バージョンを貼り付けておきます。

https://community.ibm.com/community/user/viewdocument/python-code?CommunityKey=15ba5b5b-71f0-4874-b249-019595e5780f

0 comments
4 views

Permalink