🔎 Cryptographic hash function
- 속도 빠름
- message digest function: 메세지 요약 (256bit)
- one-way function: m→h(m) 단방향 암호화
- h(m) collision 많지만, h(m)이 동일한 두 메세지를 찾는 것 어려움
🔎 Message Authentication Code(MAC)
- 데이터가 변조되었는지 검증할 수 있도록 데이터에 덧붙이는 코드
- 무결성 제공
- 일부 메세지에 대한 고정된 크기의 인증자
- hash function 기반 (메세지와 키 사용) → 넓리 사용 가능. 속도 빠름
H(key|m)의 취약점을 보안하여 H(m|key) HMAC 개발
👉 역할
→ 메세지 무결성 보호
→ 발신자 ID 확인
→ 부인 봉쇄
🔎 One Time Password
hash function으로 One time password 생성 가능
✔︎ Time-synchronized
시간 동기화 이용
- 클라이언트-서버 비밀 키와 기기의 시리얼 넘버(s#) 공유
- 클라이언트와 서버 각각 H(s#||key||time)을 계산하여 일치하는지 비교하여 인증
→ 시간 느슨하게 동기화 되어야함 (동기화 시간이 너무 빠르면 인증하기 어려움)
✔︎ Hash chain (=S/Key)
다른 기술과 달리, 클라이언트만 키를 알고 있음(비대칭 개인키와 유사) → 서명 가능
- 클라이언트 비밀 키 S 생성
- 클라이언트 비밀 키 S 이용하여 f(S), f2(S), f3(S), ..., fn(S) 계산
- 클라이언트가 서버에게 fn(S) 공유. 서버는 전달 받은 fn(S) 저장
- 클라이언트 fn-1(S) 전달
- 서버 전달받은 f(fn-1(S))와 저장해놓은 fn(S) 일치하는지 비교하여 인증
✔︎ Challenge-response
난수 이용
- 클라이언트-서버 비밀 키 s 공유
- 클라이언트 인증 요청
- 서버 난수 R 생성하여 클라이언트에게 전송
- 클라이언트 전달 받은 R 이용하여 H(R||s) 계산. 서버에게 전송
- 서버 H(R||s) 계산. 클라이언트에게 전달 받은 H(R||s)와 일치하는지 비교하여 인증