生体認証 zk
そもそも認証には「メッセージの真正性に関わること」「自分が誰かを証明すること」によって意味が異なる。
もちろん、今回は後者の意味で認証という言葉を用いる。
ゼロ知識証明を活用することで、ユーザーのプライバシーやセキュリティを脅かすような情報をネットワークに知られることなく、キーレスで認証することが可能になる。
認証にはいくつかのレベルがあり、生体認証は最も強力であるが、その情報がプライバシー的に重要なので他者に公開することはよろしくない。(そのため、2段階認証などを組み合わせるのが一般的)
https://scrapbox.io/files/63bc05c7fd8bca001eb731fa.png
そんな生体認証の概要は以下のような感じ。
https://scrapbox.io/files/63bc059569e8e7001e2acbee.pnghttps://scrapbox.io/files/63bc05d04c0c2d001d79b2f7.png
zk使えば、上図におけるサーバーの部分が必要なくなると思った。
具体的には、Semaphoreというライブラリを使う。
これを一言で表すなら、「Ethereum上でZKを使ったメンバーシップ的なアプリが簡単に作れるもの」
こんな感じでデバイスからの特徴データをアイデンティティとして表現するつもり。(おそらく指紋をJSONで渡す?)
code:js
const identity = new Identity("ぼくの指紋")
https://semaphore.appliedzkp.org/docs/guides/identities