メインコンテンツまでスキップ

5.2 User-Password

5.2. User-Password

Description (説明)

この Attribute は認証されるユーザーのパスワード, または Access-Challenge に続くユーザーの入力を示します。これは Access-Request パケットでのみ使用されます。

送信時, パスワードは隠されます。パスワードはまず末尾に null で 16 オクテットの倍数にパディングされます。共有秘密に続いて Request Authenticator で構成されるオクテットストリームに対して一方向 MD5 ハッシュが計算されます。この値はパスワードの最初の 16 オクテットセグメントと XOR され, User-Password Attribute の String フィールドの最初の 16 オクテットに配置されます。

パスワードが 16 文字より長い場合, 共有秘密に続いて最初の xor の結果で構成されるオクテットストリームに対して 2 番目の一方向 MD5 ハッシュが計算されます。そのハッシュはパスワードの 2 番目の 16 オクテットセグメントと XOR され, User-Password Attribute の String フィールドの 2 番目の 16 オクテットに配置されます。

必要に応じて, この操作が繰り返され, 各 xor 結果が共有秘密とともに使用されて次のハッシュを生成し, パスワードの次のセグメントを xor します。これは最大 128 文字までです。

この方法は Kaufman, Perlman, Speciner [9] の "Network Security" という本の 109-110 ページから取られています。この方法のより正確な説明は次のとおりです:

共有秘密を S, 疑似ランダム 128 ビット Request Authenticator を RA と呼びます。パスワードを 16 オクテットのチャンク p1, p2 などに分割し, 最後のチャンクは末尾に null でパディングして 16 オクテット境界にします。暗号文ブロックを c(1), c(2) などと呼びます。中間値 b1, b2 などが必要です。

b1 = MD5(S + RA)       c(1) = p1 xor b1
b2 = MD5(S + c(1)) c(2) = p2 xor b2
. .
. .
. .
bi = MD5(S + c(i-1)) c(i) = pi xor bi

String には c(1)+c(2)+...+c(i) が含まれます。ここで + は連結を示します。

受信時, プロセスが逆転されて元のパスワードが得られます。

User-Password Attribute 形式の要約を以下に示します。フィールドは左から右に送信されます。

 0                   1                   2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Type | Length | String ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type

User-Password の場合は 2。

Length

少なくとも 18 で, 130 以下。

String

String フィールドは 16 から 128 オクテットの長さです (両端を含む)。