Manual/BerEditor

[BerEditor] OTP ( One Time Password ) κΈ°λŠ₯에 κ΄€ν•΄

JayKimπŸ™‚ 2023. 5. 31. 09:15

[이 κΈ°λŠ₯은 λΌμ΄μ„ μŠ€ 버전 κΈ°λŠ₯μž…λ‹ˆλ‹€]

일반적으둜 인터넷 λ±…ν‚Ήμ΄λ‚˜ μΆ”κ°€ 인증 κΈ°λŠ₯으둜 μ‚¬μš©ν•˜λŠ” OTP λŒ€ν•΄μ„œ μ•Œμ•„ 보자
OTP λŠ” One Time Password 의 μ•½μžλ‘œ 일회용 λΉ„λ°€ λ²ˆν˜Έμ΄λ‹€.

BerEditor μ—μ„œ 제곡 ν•˜λŠ” κΈ°λŠ₯은 Time-Based One Time Password 이닀.
RFC 6238 에 μ •μ˜ 된 ν‘œμ€€ κΈ°μˆ μ΄λ‹€.

사싀 Time Based OTP μ—μ„œ μ€‘μš”ν•œ 것 쀑에 ν•˜λ‚˜κ°€ μ‹œκ°„μ΄λ‹€.
μ‹€μ œλ‘œ OTP μž₯치의 μ‹œκ°„μ€ 정확도가 떨어진닀.
OTP 의 μ‹œκ°„μ˜ μ˜€μ°¨κ°€ 떨어지더라도 OTP 값을 검증 ν•˜λŠ” μ„œλ²„ μͺ½μ—μ„œλŠ” ν•΄λ‹Ή μ‹œκ°„μ˜ μ•ž/λ’€ 였차λ₯Ό
κ³ λ €ν•˜μ—¬ 값을 검증 ν•œλ‹€.

그리고 μ˜€μ°¨μ— λŒ€ν•œ 보정을 기둝을 톡해 계속 μ‚¬μš©κ°€λŠ₯ ν•˜λ„λ‘ ν•œλ‹€.
ν•˜μ§€λ§Œ μ˜€μ°¨κ°€ 일정 μ‹œκ°„ 이상 차이가 λ‚˜λ©΄ λ‹€μ‹œ OTP μ‹œκ°„μ„ λ§ŸμΆ”μ–΄ μ£Όμ–΄μ•Ό ν•œλ‹€.

BerEditor μ—μ„œ μ„€μ •ν•˜λŠ” μ‹œκ°„μ€ localTime 이닀.
즉 UTC μ‹œκ°„ 보닀 +9 μ‹œκ°„μœΌλ‘œ 보면 λœλ‹€.
즉 UTC μ‹œκ°„ 1970.01.01 00:00:01 μ΄λ ‡κ²Œ μ„€μ ˆ ν•˜λ €λ©΄ 둜컬 μ‹œκ°„μ€ 1970.01.01 09:00:01 이닀.

그럼 RFC 6238 에 λ‚˜μ˜€λŠ” OTP 값을 BerEditorλ₯Ό μ΄μš©ν•΄ ꡬ해 보자
BerEditor μ—μ„œ μ•”ν˜Έ-> OTP 생성 메뉴λ₯Ό μ‹€ν–‰ ν•˜μž

μž…λ ₯ μ‹œκ°„ : 59 (sec) UTC Time 1970-01-01 00:00:59
ν‚€ : 12345678901234567890 (λ¬Έμžμ—΄)
Hash Mode : SHA1
Time Interval : 30 (sec)
OTP 길이 : 8

κ²°κ³Ό ν™”λ©΄

ν™”λ©΄μ—μ„œ λ³΄λŠ” 것 처럼 생성 된 TOPT 값은 94287082 이닀.
그리고 T 값은 0000000000000001 으둜 μ‚¬μš© 된 것을 λ³Ό 수 μžˆλ‹€.

Time Based OTPλŠ” μ‹€μ œ ν‚€κ°’κ³Ό T 값을 가지고 HMAC을 ν•œλ‹€μŒ
νŠΉμ • μœ„μΉ˜μ˜ 값을 TOTP κ°’μœΌλ‘œ κ΅¬ν•˜λŠ” 것이닀.

μ—¬κΈ°μ„œ λ‚ μ§œ 및 μ‹œκ°„ 값을 1970-01-01 09:00:59 둜 선택 ν•œ 것을 λ³Ό 수 μžˆλ‹€.
사싀 UTC Time 59 μ΄ˆλŠ” λŒ€ν•œλ―Όκ΅­ 둜컬 νƒ€μž„μ€ +9 μ‹œκ°„μ΄ μΆ”κ°€ 되기 λ•Œλ¬Έμ΄λ‹€.

μ‹€μ œλ‘œ μš°λ¦¬κ°€ 많이 μ‚¬μš©ν•˜λŠ” OTP λŠ” κΈΈμ΄λŠ” 6개이ꡬ Time Interval 은 60초 ν™˜κ²½μœΌλ‘œ 많이 μ‚¬μš© λœλ‹€.