Go で FIDO Server 作った

690 Views

April 17, 24

スライド概要

GoDay 出張編 @ DeNA TechCon 2024
https://dena.connpass.com/event/308853/

profile-image

DeNA が社会の技術向上に貢献するため、業務で得た知見を積極的に外部に発信する、DeNA 公式のアカウントです。DeNA エンジニアの登壇資料をお届けします。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Go で FIDO Server 作った 岡田 竜岳 © DeNA Co., Ltd. 1

2.

目次 1 導入 2 FIDO Server とは 3 作りかた 4 まとめ © DeNA Co., Ltd. 2

3.

自己紹介 okapon (岡田 竜岳) DeNA ソリューション事業本部 2023年新卒入社 会員基盤のサーバーサイド担当 @okapon1210 © DeNA Co., Ltd. 3

4.

Passkey 使ってますか? © DeNA Co., Ltd. 4

5.

1 導入 Passkey とは - デバイスのロックを解除するのと同 じようにログインできる公開鍵暗号 ベースの仕組み - Web Authentication API [1]を使うこ とで実装できる サーバは何をするのか? © DeNA Co., Ltd. 5

6.

FIDO Server とは © DeNA Co., Ltd. 6

7.

FIDO Server とは 2 - Passkey の登録や認証を行うためのサーバのこと - - この発表では WebAuthn Relying Party [2] のことを指す Web Authentication: An API for accessing Public Key Credentials Level 3 の 「 7. WebAuthn Relying Party Operations 」に登録・認証手順が記載されている © DeNA Co., Ltd. 7

8.

2 © DeNA Co., Ltd. FIDO Server とは 8

9.

2 © DeNA Co., Ltd. FIDO Server とは ここをつくる 9

10.

作りかた © DeNA Co., Ltd. 10

11.

作りかた 3 - - 登録 - Credential を作るための options の配信 - Credential をパース - Credential の検証 - Credential を保存 認証 © DeNA Co., Ltd. - Credential を取得するための options の配信 - Credential をパース - Credential の検証 - 登録済みの PublicKey を使って署名検証 11

12.

作りかた 3 - - 登録 - Credential を作るための options の配信 - Credential をパース - Credential の検証 - Credential を保存 認証 © DeNA Co., Ltd. - Credential を取得するための options の配信 - Credential をパース - Credential の検証 - 登録済みの PublicKey を使って署名検証 12

13.

3 作りかた options で指定できること - 暗号化アルゴリズム - Credential 生成時の ユーザ認証 - Authenticator の検証 など © DeNA Co., Ltd. 13

14.

作りかた 3 - - 登録 - Credential を作るための options の配信 - Credential をパース - Credential の検証 - Credential を保存 認証 © DeNA Co., Ltd. - Credential を取得するための options の配信 - Credential をパース - Credential の検証 - 登録済みの PublicKey を使って署名検証 14

15.

作りかた 3 - Credential の解析 - © DeNA Co., Ltd. []byte を指定すると Unmarshal 時に勝手に Base 64 Decode してくれる 15

16.

作りかた 3 - フラグの解析 - © DeNA Co., Ltd. iota って便利 16

17.

3 作りかた CBOR (JSON 互換のバイナリ)から PublicKey を取り出す © DeNA Co., Ltd. 17

18.

作りかた 3 - - 登録 - Credential を作るための options の配信 - Credential をパース - Credential の検証 - Credential を保存 認証 © DeNA Co., Ltd. - Credential を取得するための options の配信 - Credential をパース - Credential の検証 - 登録済みの PublicKey を使って署名検証 18

19.

3 作りかた - 署名検証 - © DeNA Co., Ltd. 標準パッケージでサクッと作れる 19

20.

3 © DeNA Co., Ltd. 作りかた 20

21.

まとめ © DeNA Co., Ltd. 21

22.

まとめ 4 - CBOR 以外は標準パッケージが大体カバーしてくれる - リポジトリ - © DeNA Co., Ltd. https://github.com/okapon1210/go-fido-server 22

23.

参考文献 5 1. Web Authentication API, https://developer.mozilla.org/enUS/docs/Web/API/Web_Authentication_API, 2024/02/26 2. Web Authentication: An API for accessing Public Key Credentials Level 3, https://www.w3.org/TR/webauthn-3/, 2024/02/18 © DeNA Co., Ltd. 23

24.

© DeNA Co., Ltd. 24