オープン認証イニシアチブ
ナビゲーションに移動
検索に移動
オープン認証イニシアチブ (OATH)は、強力な認証の採用を促進するために、オープンスタンダードを使用したオープンなリファレンスアーキテクチャを開発するための業界全体の協力体制です。Google Authenticator やその他の一般的な二要素認証アプリケーションが使用する標準を公開しています。
目次
インストール
以下のパッケージは、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
- TYPE
totp
またはhotp
- LABEL
- キーが関連付けられているアカウントを識別し、オプションで発行者の文字列をプレフィックスとして追加します。例:
Arch%20Wiki@archlinux.org
- PARAMETERS
- 標準の URI パラメータ形式を取ります -
?name=value&name=value...
secret
- 必須; これは Base32 でエンコードされた共有シークレットです。issuer
- アカウントが関連付けられているプロバイダまたはサービスを示します。これがない場合、ラベルの発行者プレフィックスが使用されます。両方が存在する場合、それらは一致している必要があります。algorithm
- デフォルトではSHA1
。SHA256
または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-toolkit の oathtool(1) を使用します:
$ oathtool --base32 --totp KEY
pass や KeePass など、多くのパスワードマネージャーもこれらのコードを生成するサポートを提供しています。
PAM を使用した Linux ユーザー認証
pam_oath または Google Authenticator を参照してください。
参照
- 標準仕様
- URI フォーマットリファレンス
- QR およびバーコードデコーダー - 実際の資格情報はここに入力しないでください。
- QR コードテスター (archive.org) - 実際の資格情報はここに入力しないでください。