HOTP 【HMAC-based One-Time Password】
概要
HOTP(HMAC-based One-Time Password)とは、ワンタイムパスワード(OTP)の生成手法の標準の一つで、秘密鍵とログイン試行回数からハッシュ値を求め、これを6桁程度の数字に変換してパスワードとする方式。ワンタイムパスワードはパスワード認証の一種で、毎回異なるその場限りの数字や文字列を用いて認証を行う方式である。通常は4~6桁程度の数字を用い、固定のパスワードなど他の認証方式と組み合わせて二段階認証を構成する。
HOTPはワンタイムパスワードの生成方式の一つで、利用者の操作するクライアントはが「HMAC」(Hash-based Message Authentication Code)と呼ばれる認証コードを認証サーバに送信する。HMACの生成に用いられる情報は、サーバとクライアントの間であらかじめ共有された秘密鍵と、現在までの通算認証試行回数(カウンタ)の2つである。
クライアントは秘密鍵と現在のカウンタ値を組み合わせてハッシュ関数のSHA-1にかけ、160ビット(20バイト)のハッシュ値を得る。これを一定の計算手法で6桁以上(桁数はシステム側であらかじめ決めておく)の数字に変換し、サーバに送信する。
サーバも同じ秘密鍵とカウンタ値を持つため、同様の計算を行って値が一致すれば認証成功となる。認証を実施するたびにサーバとクライアントはカウンタ値を1増やし、次回の認証は新しいカウンタ値に基づいて行う。秘密鍵は同じだがカウンタ値は毎回異なるため、生成される数字も毎回異なる。
HOTPの仕様は業界団体のOATH(Initiative For Open Authentication)によって考案され、2005年にIETFによってRFC 4226として標準化された。同様にHMACを用いるが、認証回数ではなく認証を有効にしてからの経過時間に基づいてOTPを生成する方式を「TOTP」(Time-based One-Time Password)という。
(2023.3.2更新)