オープン認証イニシアチブ

提供: ArchWiki
2024年8月16日 (金) 19:22時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎URI 資格情報フォーマット: ズレを修正)
ナビゲーションに移動 検索に移動

関連記事

オープン認証イニシアチブ (OATH)は、強力な認証の採用を促進するために、オープンスタンダードを使用したオープンなリファレンスアーキテクチャを開発するための業界全体の協力体制です。Google Authenticator やその他の一般的な2要素認証アプリケーションが使用する標準を公開しています。

インストール

以下のパッケージは、OATH 資格情報の生成、転送、および検証に使用できます。

  • oath-toolkit - 資格情報を受け取り、コードを生成します。ユーザー認証用の PAM モジュールが含まれています。詳細は pam_oath を参照してください。
  • libpam-google-authenticator - 新しい資格情報を生成するクライアントプログラム google-authenticator と、ユーザー認証用の PAM モジュールを提供します。詳細は Google Authenticator を参照してください。
  • pass-otp - pass に OATH サポートを追加します。
  • zbar - QR コードをデコードします。
  • qrencode - QR コードをエンコードします。

標準

OATH は、Arch ユーザーにとって重要な 2 つの標準を作成しました。どちらも任意の長さの Base32 エンコードされた共有シークレットに基づいています。

HOTP
HMAC(ハッシュベースのメッセージ認証コード)ワンタイムパスワード(HOTP)。パスワードが生成されるたびにカウンターが増加します。この値はシークレットキーと連結され、6~10 桁のコードを生成するためにハッシュされます。認証側も同様に処理しますが、コードが正常に認証されるとカウンターを増加させます。カウンターの非同期化を処理するために、認証側は現在のカウンター状態を超えて、さらに複数(30~100)の値をチェックすることができます。
TOTP
時間ベースのワンタイムパスワード(TOTP)。HOTP と非常によく似ていますが、カウンターの代わりに現在の時間を使用します。これにより、非同期化の問題が解決され、攻撃者が OTP を記録して後で使用する可能性が排除されます。

URI 資格情報フォーマット

資格情報は通常、QR エンコードされた URI フォーマットで共有されます。すべてのフィールドは URI エンコードされた文字列でなければなりません。

otpauth://TYPE/LABEL?PARAMETERS
警告: URI フォーマットされた資格情報およびそれから生成された QR コードには、有効なワンタイムパスワードを生成するために必要なすべての情報が含まれています。他のパスワードと同様に、これを保護してください。
TYPE
totp または hotp
LABEL
キーが関連付けられているアカウントを識別し、オプションで発行者の文字列をプレフィックスとして追加します。例: Arch%20Wiki@archlinux.org
PARAMETERS
標準の URI パラメータ形式を取ります - ?name=value&name=value...
  • secret - 必須; これは Base32 でエンコードされた共有シークレットです。
  • issuer - アカウントが関連付けられているプロバイダまたはサービスを示します。これがない場合、ラベルの発行者プレフィックスが使用されます。両方が存在する場合、それらは一致している必要があります。
  • algorithm - デフォルトでは SHA1SHA256 または SHA512 も使用できます。
  • digits - パスコードの長さを指定します。デフォルトは 6 ですが、8 に設定することもできます。
  • counter - HOTP を使用する場合に必要です。初期カウンター値。
  • period - TOTP を使用する場合はオプションです。コードの有効期限を設定します。デフォルトは 30 秒です。

以下は例です:

otpauth://totp/Example%20Company:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example%20Company
         |type|  issuer prefix  |    account     |         secret        |     issuer            |
              |               label              |                  parameters                   |

ヒントとコツ

QR コードをデコードする

これは zbar のツールを使用して実行できます。PNG ファイルをデコードするには以下のコマンドを使用します:

$ zbarimg my_qr_code.png --quiet --raw

カメラから画像をデコードするには以下のコマンドを使用します:

$ zbarcam /dev/video0

QR コードを作成する

この場合、qrencode パッケージが便利です。

URI をエンコードして、PNG として保存するには以下のコマンドを使用します:

$ qrencode -o my_code.png 'MY_URI'

URI をエンコードして、QR コードをターミナルに表示するには以下のコマンドを使用します:

$ qrencode -t ansiutf8 'MY_URI'

キーを生成する

適切な形式でキーを生成するには、次のようなコマンドを使用できます:

$ head -c 16 /dev/urandom | base32 --wrap 0

コマンドラインから OTP を生成する

oath-toolkitoathtool(1) を使用します:

$ oathtool --base32 --totp KEY

passKeePass など、多くのパスワードマネージャーもこれらのコードを生成するサポートを提供しています。

PAM を使用した Linux ユーザー認証

pam_oath または Google Authenticator を参照してください。

参照

翻訳ステータス: このページは en:Initiative for Open Authentication の翻訳バージョンです。最後の翻訳日は 2024-08-16 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。