Help us understand the problem. What is going on with this article?

AWSのMFA有効化を例にTOTPをざっくり説明

AWSのルートアカウントのMFA(多要素認証)を有効化しました。
MFAにはTOTPという仕組みが使われているようですが、この仕組みがよくわからず初めてサインインする時に戸惑ってしまったので調べてみました。
※認証素人が調べた結果ですので誤りがあるかもしれません。ご指摘頂けると嬉しいです。

MFA有効化の流れ

仕組みの前にまずはAWSの有効化の手順を記します。
キャプチャ.PNG

①AWSコンソールからMFAを有効化するためにブラウザ上にQRコードを表示
②スマホでGoogle Authenticatorアプリをインストールして①のQRコードを読み取る
③アプリ上に6桁の数字が表示されるのでこの数字を[MFAコード1]に入力。30秒経過すると数字が切り替わるので切り替わった後の数字を[MFAコード2]に入力
④今後AWSにサインインする時はMFAコードの入力を求められるのでスマホでGoogle Authenticatorを起動し表示されている数字を入力してサインインする

※アプリの名称ですがiOSではGoogle Authenticator、AndroidではGoogle 認証システムとになっています

ざっくり仕組み

1.PNG

AWSでMFA設定をするときにQRコードを表示しますが、この時に秘密鍵が生成されています。これをGoogle Authenticatorで読み取るとサーバーとクライアントに秘密鍵が保存されます。

QRコードを読み取るとアプリ上では6桁の数字が表示されます。この数字はワンタイムパスワードとなっており30秒ごとに違う数字に切り替わります。
2.PNG

この数字を生成しているアルゴリズムがTOTP(Time-Based One-Time Password Algorithm)です。

TOTPとは

ある時刻においてカウンターがサーバーとクライアントで等しければ、サーバーとクライアントで秘密鍵を共有しているため同じ確認コードが計算されるはずであるから、サーバーとクライアントで確認コードの計算結果が一致するかどうかで認証ができるとするのが TOTP アルゴリズムである。
※『Google 認証システムの仕組み』より引用

30秒毎に数字が切り替わっているのにこの数字を入力するとAWSにサインインできるのが不思議でした。しかしTOTPの仕組みがわかってみると納得することができました。
セキュリティ強化のため多要素認証や二段階認証が注目されているのでざっくりでも仕組みを理解できるといつか役に立ちそうです。

参考にさせて頂いた記事

https://sekika.github.io/2016/03/26/GoogleAuthenticator/
https://dev.classmethod.jp/etc/totp-implementation-pure-python/

soonlabo
JavaとPHPとC#を使います。プログラマー生活や読んだ技術書の感想をブログで書いています。
https://www.soonlabo.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした