広告です。クリックいただけると励みになります。

人気記事(昨日)

    2025年05月14日

    Google Authenticatorはどういった技術で動いていますか?

    dibakar-roy-MYbnbtZiLKc-unsplash.jpg

    質問

    Google Authenticatorはどういった技術で動いていますか?
    裏側の仕組みを教えてください。


    解答

    Google Authenticator(やそれと同様のアプリ)は、主に「TOTP(Time-based One-Time Password)」という技術に基づいて動作しています。

    以下に、その裏側の技術的な仕組みを詳しく解説します。

    ■ 基本概要:何をしているのか?

    Google Authenticator は、ログイン時に使い捨てパスワード(OTP)を時刻に基づいて自動生成します。
    これにより、ユーザー名・パスワードに加え、**「その時しか使えないコード」**を使う二段階認証(2FA)を実現します。


    ■ 使用されている技術スタック

    1. TOTP(Time-based One-Time Password)

    * RFC 6238 によって定義されたアルゴリズム。
    * 一定時間(通常は30秒)ごとに変化する一時的なパスワードを生成。
    * 元になっているのは次の「HOTP」。


    2. HOTP(HMAC-based One-Time Password)

    * RFC 4226 によって定義。
    * HMAC(Hash-based Message Authentication Code)を使って一時パスワードを生成。
    * HOTP は「カウンター」に基づいて生成されますが、TOTP は「時刻」に基づきます。


    ■ 裏側の仕組み(TOTPの流れ)

    1. 共有されたシークレット(秘密鍵)
    * 認証サービス側(例:Google)とユーザーのデバイス側(Authenticator アプリ)で、同じ「シークレットキー」を持ちます。
    * 初回セットアップ時(QRコードを読み取るとき)にこのシークレットが共有されます。

    2. 現在時刻の取得
    * アプリは現在の Unix 時刻(エポック秒)を取得。
    * これを 30秒などの一定間隔で割って、「時間ステップ」を求めます。

    3. HMAC-SHA1 を計算
    * `HMAC-SHA1(シークレットキー, 時間ステップ)` を計算。
    * 出力はバイナリのハッシュ値。

    4. ダイナミックトランケーション(Dynamic Truncation)
    * ハッシュ値の一部を切り出し、整数に変換。

    5. 6桁(または8桁)のOTPを生成
    * トランケーションで得られた値に `mod 10^6` をかけて、6桁の数字に変換。

    この一連の流れにより、同じ時刻で同じシークレットを使えば、同じコードが生成されるので、サーバー側でも認証できます。


    ■ 例:簡略化した擬似コード(TOTP)

    ```python

    import time, hmac, hashlib, struct, base64

    def generate_totp(secret):
     key = base64.b32decode(secret) # 秘密鍵(BASE32形式で保存されている)
     timestep = int(time.time()) // 30
     msg = struct.pack(">Q", timestep) # 64ビットのバイナリに変換
     h = hmac.new(key, msg, hashlib.sha1).digest()
     offset = h[-1] & 0x0F
     truncated_hash = h[offset:offset + 4]
     code = struct.unpack(">I", truncated_hash)[0] & 0x7FFFFFFF
     return str(code % 1000000).zfill(6) # 6桁に整形

    ```


    ■ セキュリティ上の重要な点

    一度でも漏れると危険。スマホ紛失などにも注意が必要。
    アプリとサーバーの時刻がズレていると、正しいOTPが生成されない。
    シークレットと時刻があれば、ネット接続なしでも動作可能。


    ■ Google Authenticator の特徴

    * オープンスタンダード(TOTP)を採用しているため、他のサービスとも互換性がある。
    * オフラインで動作。
    * セットアップに使うQRコードは、シークレットキーとサービス名、アカウント名などを含んでいる。


    ■ まとめ

    Google Authenticator は、シンプルな仕組みながら非常に効果的な認証手段です。
    TOTPの標準技術を理解することで、セキュリティ意識も高めることができます。
    開発者であれば、認証システムにTOTPを組み込むことも可能です。








    Google Cloud Platform GAEソフトウェア開発入門ーーGoogle Cloud Authorized Trainerによる実践解説【電子書籍】[ 小林明大【著】 ]

    価格:3608円
    (2025/5/14 10:45時点)
    感想(0件)


    スマホを落としただけなのに 戦慄するメガロポリス (宝島社文庫) [ 志駕 晃 ]

    価格:715円
    (2025/4/16 00:24時点)
    感想(4件)


     



    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 10:51| Comment(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする
    この記事へのコメント
    コメントを書く
    コチラをクリックしてください