Kryptonは通常のSmartPhoneをFIDO2に準拠したAuthenticatorとして利用することを可能にするSolutionです。この記事は初めてKrytonを試す方がFIDO2に準拠したより安全な認証方式を短時間でご体感頂くことを目的とした簡易チュートリアルです。
シナリオ
GitHubにアクセスするためのSSH Key PairをSmartPhoneで管理してMacBookとAmazon Linuxの環境からシームレスにRepositoryにアクセスするケースを想定しています。以下、動作概略です。
事前準備
この記事は下記の物品が調達済であることを前提としています。
- GitHubのアカウント
- MacBook、Amazon LinuxのEC2インスタンス
- iPhone
iPhoneにKrypton Authenticatorをインストール
Krypton AuthenticatorをiPhoneにインストールします。
MacBook/Amazon LinuxにKryptonをインストール
MacBookにHomeBrewをインストールします。詳細は割愛します。こちらが参考になるかと思います。
Kryptonをインストールします。
$ brew install kryptco/tap/kr
Amazon LinuxにログインしてKryptonをインストールします。
$ sudo yum-config-manager --add-repo https://krypt.co/repo/kryptco.repo
$ sudo yum install kr -y
MacBook/Amazon LinuxとSmartPhoneをペアリング
MacBookの端末でkryptonを実行してQRコードを表示させます。
$ kr pair
iPhoneでKrypton Authenticatiorを起動してQRコードをスキャンするアイコンをタップします。
スキャンに成功すると"Pairしますか"と聞いてくるのでPairをタップします。User認証を求められるので認証します。認証に成功するとKrypton上にPrivate Keyが生成されます。
ペアリングに成功するとMacBookの~/.sshにKeyPairが生成されます。
PrivateKeyはMacBookのTrusted Platform Module上に生成されてターミナルからは閲覧できないようになっています。
$ pwd
~/.ssh
$ ll
.rwx------ 254 hyamaguc 9 Apr 14:43 config
.rwx------ 731 hyamaguc 9 Apr 15:04 id_krypton.pub
同様の手順でAmazon LinuxとiPhoneをペアリングします。以下はペアリング完了後のKrypton Authenticatorです。
GitHubのSSH Public Keyを作成
MacBookのターミナルでKryptonを実行してPublicKeyをクリップボードにコピーします。
$ kr github
SSH public key copied to clipboard.
Press ENTER to open your web browser to GitHub. Then click "New SSH Key" and paste your public key.
GitHubの”SSH & GPG Keyps"の画面に誘導されるので右上の"New SSH key"をクリックしてPublicKeyを作成します。
任意のRepositoryをClone
MacBookのターミナルから任意のGitHub RepositoryをCloneします。Krypton Authenticatorに認証リクエストが届くので内容を確認して"Allow once"をタップします。認証に成功するとRepositoryがCloneされます。
$ git clone git@github.com:kryptco/kr.git
Cloning into 'kr'...
Krypton ▶ Requesting SSH authentication from phone
Krypton ▶ Phone approval required. Respond using the Krypton app
Krypton ▶ Success. Request Allowed ✔
remote: Enumerating objects: 7003, done.
remote: Total 7003 (delta 0), reused 0 (delta 0), pack-reused 7003
Receiving objects: 100% (7003/7003), 22.36 MiB | 7.22 MiB/s, done.
Resolving deltas: 100% (3763/3763), done.
Amazon Linuxで同様の操作を行いKrypton Authenticatorにリクエストが届どけば成功です。
おわりに
FIDO2はPassword不要でより安全な認証プロトコルですが、YubiKeyのような高額な専用Hardwareを配布したり管理しなければならない点がネックかと思います。Kryptonを利用することで、iPhoneのような一般市場に多く出回っている標準的なデバイスをFIDO2に準拠したAuthenticatorとして利用することで、高額な専用Hardwareの調達コストや管理コストを軽減できるかと思います。