1. 초기화
과 정
User
Hash funtion = h()
pass-phrase = P
Hash funtion = h()
pass-phrase = P
Seed = S
Server
h(P||S), h(h(P||S)),…
H1,H2,…,Hn
인증과정
1. 사용자가 자신의 ID를 가지고 접근
2. 서버는 사용자에게 N값과 씨드 S(임의의 값)을 전달
3. hn(K⊕Seed)=P0 을 계산하여 자신의 ID와 P0값을 서버에게 전달
4. 사용자로 부터 받은 ID값과 P0값을 저장
1. 사용자가 자신의 ID를 가지고 접근 요구
2. 사용자의 N값과 씨드(S)를 확인하여
사용자에게 N-1, 씨드(S)를 전달
3. hn-1(P||Seed)=Hn-1를 계산
5. h(Hn-1)를 계산한 후 자신이 지정한 Hn과
비교하여 일치 하면 사용자 인증
4. Hn-1 계산값을 서버에 응답
6. Hn-1, N-1 저장
사용자의 ID
N, S
사용자의 IDN, S
hn(K⊕Seed)=P0
ID, P0값 저장
hn(K⊕Seed)=P0
1. 사용자가 자신의 ID를 가지고 접근
2. 서버는 사용자에게 N값과 씨드 S(임의의 값)을 전달
3. hn(K⊕Seed)=P0 을 계산하여 자신의 ID와 P0값을 서버에게 전달
4. 사용자로 부터 받은 ID값과 P0값을 저장
초기화
과 정
인증과정
사용자의 ID
N-1, S 사용자의 ID
1. 사용자가 자신의 ID를 가지고 접근 요구
2. 사용자의 N값과 씨드(S)를 확인하여
사용자에게 N-1, 씨드(S)를 전달
N-1, S
hn-1(P||Seed)=Hn-1
hn-1(P||Seed)=Hn-1
3. hn-1(P||Seed)=Hn-1를 계산
4. Hn-1 계산값을 서버에 응답
5. h(Hn-1)를 계산한 후 자신이 지정한 Hn과
비교하여 일치 하면 사용자 인증
6. Hn-1, N-1 저장
Hn-1, N-1 저장
Editor's Notes
일회용 패스워드는 일방향 해쉬 함수를 여러 번 적용해서 연속적으로 생성된다.
즉, 첫 번째 일회용 패스워드는 사용자가 알고 있는 비밀 패스워드(p)와 서버로부터 전달된 씨드 값 S를 연접(concatenation, ||)시켜 정해진 반복회수(n) 만큼의 일방향 해쉬 함수를 수행하여 생성한다.
N=4라고 가정하면 H4 = h(h(h(h(p||s)))) 이다. -----------------초기화과정
두 번째 일회용 패스워드 부터는 사용자의 패스워드를 일방향 해쉬 함수에 n-1번 수행시켜 생성된다.
H3 = h(h(h(p||s)))-------------인증과정