「オープン認証イニシアチブ」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎標準: リンクを修正)
30行目: 30行目:
 
; TOTP: 時間ベースのワンタイムパスワード([[Wikipedia:Time-based_One-time_Password_algorithm|TOTP]])。HOTP と非常によく似ていますが、カウンターの代わりに現在の時間を使用します。これにより、非同期化の問題が解決され、攻撃者が OTP を記録して後で使用する可能性が排除されます。
 
; TOTP: 時間ベースのワンタイムパスワード([[Wikipedia:Time-based_One-time_Password_algorithm|TOTP]])。HOTP と非常によく似ていますが、カウンターの代わりに現在の時間を使用します。これにより、非同期化の問題が解決され、攻撃者が OTP を記録して後で使用する可能性が排除されます。
   
== URI credential format ==
+
== URI 資格情報フォーマット ==
   
Credentials are usually shared in a QR-encoded [https://github.com/google/google-authenticator/wiki/Key-Uri-Format URI format]. All fields must be URI-encoded strings:
+
資格情報は通常、QR エンコードされた [https://github.com/google/google-authenticator/wiki/Key-Uri-Format URI フォーマット]で共有されます。すべてのフィールドは URI エンコードされた文字列でなければなりません。
   
 
otpauth://TYPE/LABEL?PARAMETERS
 
otpauth://TYPE/LABEL?PARAMETERS
   
  +
{{warning|URI フォーマットされた資格情報およびそれから生成された QR コードには、有効なワンタイムパスワードを生成するために必要なすべての情報が含まれています。他のパスワードと同様に、これを保護してください。}}
{{warning|A URI formatted credential, and any QR code generated from it, contains all information required to generate valid one-time passwords. Protect it as you would any other password.}}
 
   
; TYPE: {{ic|totp}} or {{ic|hotp}}
+
; TYPE: {{ic|totp}} または {{ic|hotp}}
; LABEL: Identifies which account a key is associated with, optionally prefixed with an issuer string. Example: {{ic|Arch%20Wiki:alice@archlinux.org}}
+
; LABEL: キーが関連付けられているアカウントを識別し、オプションで発行者の文字列をプレフィックスとして追加します。例: {{ic|Arch%20Wiki@archlinux.org}}
; PARAMETERS: Take the standard URI parameter format - {{ic|1=?name=value&name=value...}}
+
; PARAMETERS: 標準の URI パラメータ形式を取ります - {{ic|1=?name=value&name=value...}}
   
* {{ic|secret}} - required; this is the Base32 shared secret.
+
* {{ic|secret}} - 必須; これは Base32 でエンコードされた共有シークレットです。
  +
* {{ic|issuer}} - アカウントが関連付けられているプロバイダまたはサービスを示します。これがない場合、ラベルの発行者プレフィックスが使用されます。両方が存在する場合、それらは一致している必要があります。
* {{ic|issuer}} - Indicates the provider or service the account is associated with. If this is absent, the issuer prefix of the label will be used. If both are present, they should be equal.
 
* {{ic|algorithm}} - {{ic|SHA1}} by default. Can also be {{ic|SHA256}} or {{ic|SHA512}}.
+
* {{ic|algorithm}} - デフォルトでは {{ic|SHA1}}{{ic|SHA256}} または {{ic|SHA512}} も使用できます。
  +
* {{ic|digits}} - パスコードの長さを指定します。デフォルトは 6 ですが、8 に設定することもできます。
* {{ic|digits}} - How long passcodes should be. Default is 6, can be 8.
 
  +
* {{ic|counter}} - HOTP を使用する場合に必要です。初期カウンター値。
* {{ic|counter}} - Required if using HOTP. Initial counter value.
 
  +
* {{ic|period}} - TOTP を使用する場合はオプションです。コードの有効期限を設定します。デフォルトは 30 秒です。
* {{ic|period}} - Optional if using TOTP. Sets how long a code is valid, 30 seconds by default.
 
   
  +
以下は例です:
Here is an example:
 
   
 
otpauth://totp/Example%20Company:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example%20Company
 
otpauth://totp/Example%20Company:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example%20Company

2024年8月16日 (金) 19:07時点における版

関連記事

オープン認証イニシアチブ (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                   |

Tips and tricks

Decode QR codes

This can be accomplished with tools from zbar. Decode a PNG file:

$ zbarimg my_qr_code.png --quiet --raw

Decode images from a camera:

$ zbarcam /dev/video0

Create QR codes

The qrencode package is useful here.

Encode a URI, save it as a PNG:

$ qrencode -o my_code.png 'MY_URI'

Encode a URI, print a QR code to the terminal:

$ qrencode -t ansiutf8 'MY_URI'

Generate keys

To generate your own key in the proper format, you can use something like the following:

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

Generate OTPs from the command line

Use oathtool(1) from oath-toolkit:

$ oathtool --base32 --totp KEY

Many password managers, including pass and KeePass also offer support for generating these codes.

Linux User authentication with PAM

See either pam_oath or Google Authenticator.

See also