生体認証セキュリティモジュール
銀行アプリで公認認証書を呼び出したりパスワードを入力したりせず、指紋認証一回でログインから口座振込までを済ませられる生体認証セキュリティライブラリを作りました。スマートフォンに指紋センサーが載り始めた頃で、国際標準と研究陣の参照コードを読み解いてアプリ用に移し、銀行サービスの検収要件に合わせる作業がほとんどでした。認証を扱う部品なので、一つの段階がずれると本人ではない人が認証を通る恐れがあります。画面を持たずロジックだけのライブラリとして設計して複数のバンキングサービスに組み込めるようにし、別プラットフォーム版と同じ標準フローで動くよう合わせました。
パスワードの代わりに指紋で開くログインと振込
銀行アプリの生体認証は、公認認証書を呼び出したりパスワードを入力したりせず、指紋認証一回でログインから口座振込の承認までを済ませる方式です。スマートフォンに指紋センサーが初めて載り始めた時期で、端末やプラットフォームごとに対応範囲と例外の状況が異なりました。対応範囲と例外を一つずつ確かめながら、認証の流れが安定して続くことに集中しました。

指紋を保存せず、鍵で確かめる認証フロー
生体認証セキュリティライブラリは、指紋のような生体情報を直接保存しません。指紋の照合はスマートフォンの中で完結し、銀行側には指紋ではなく認証結果だけが渡ります。その認証結果は公開鍵と秘密鍵を使う非対称暗号で検証し、そこに一方向ハッシュを加えてセキュリティフローを組みました。本人確認の根拠が指紋そのものではなく鍵であることが、この構造の中心です。

標準文書と参照コードを銀行アプリに合わせた実装
生体認証の流れは、国際標準が定めた順序に従います。研究陣が提供した参照コードを分析してアプリ用ライブラリに移し、別プラットフォーム版と同じ標準フローで動くよう実装の違いを合わせました。博士研究陣や銀行の担当者と標準の解釈を一緒に確かめ、実際の銀行サービスに載せるための制約と検収要件を反映しました。

画面を持たず、どのバンキングサービスにも組み込めるセキュリティ部品
生体認証ライブラリは画面を持たずロジックだけで構成され、コードの99%以上が認証処理です。複数のバンキングサービスに移して組み込めるよう、外から呼び出す窓口と内側の処理の流れを分けて設計しました。各サービスは自分の画面をそのまま残し、認証の部分だけをこのライブラリに任せます。

この仕事のポイント
指紋を保存せず、鍵で確かめる生体認証
公開鍵・秘密鍵の暗号化と一方向ハッシュを使った検証フロー
画面を持たず複数のバンキングサービスに組み込めるセキュリティライブラリ
インサイト
GA4 client_storage: 'none'은 정말 쿠키를 막을까?
두 달 전 이 블로그에 「GA4 쿠키 없이 쓰기」라는 글을 썼습니다. clientstorage: 'none' 으로 쿠키 저장을 끄고, 자체 분석이 쓰던 익명 ID 를 clientid 로 넘기면 쿠키 0개로 GA4 를 쓸 수 있다는 내…
GA4 Measurement Protocol: gtag.js 없이 서버에서 이벤트 보내기
랜딩 페이지의 전송량을 파일 단위로 쪼개 보다가, 가장 큰 파일이 우리 코드가 아니라는 것을 알았습니다. Google Analytics 의 gtag.js 였고, 방문 한 번에 176KB 를 받고 있었습니다. 페이지 전체가 1,094K…
중소 제조업 AI 도입 순서: DX를 먼저 끝내야 할까?
공장을 가진 중소·중견 제조기업 16만여 곳 가운데 스마트공장을 도입한 곳은 19.5%입니다. 회사가 작을수록 이 비율은 더 떨어집니다. 중소벤처기업부가 2025년 4월에 낸 제1차 스마트제조혁신 실태조사 결과입니다. 그림: 기업 규…
Next.js loading.tsx와 404: 버튼이 화면보다 먼저 살아나게 하기
관리 화면 왼쪽 위에 사이드바를 접고 펴는 ☰ 버튼이 있습니다. 폭 하나 바꾸는 버튼인데, 대시보드에서 누르면 2초 넘게 아무 반응이 없었습니다. 레이아웃만 바꾸는 일이 왜 이렇게 오래 걸리는지부터 들여다봤습니다. Next.js 16…



