Manual/CryptokiMan

[CryptokiMan] Random κΈ°λŠ₯ μ‚¬μš©λ²•

JayKimπŸ™‚ 2023. 6. 20. 09:13

μ΄λ²ˆμ—λŠ” PKCS#11 μ—μ„œ 제곡 ν•˜λŠ” Random κΈ°λŠ₯을 CryptokiMan νˆ΄μ„ μ΄μš©ν•΄ ꡬ해 보자
PKCS#11 κΈ°λŠ₯을 ν…ŒμŠ€νŠΈ ν•˜κΈ° μœ„ν•΄ μ—¬κΈ°μ„œλŠ” SoftHSM2 라이브러리λ₯Ό μ΄μš©ν•˜μ˜€λ‹€.

Random ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” μ˜ˆμΈ‘ν•  수 μ—†λŠ” 값을 λ§Œλ“€κΈ° μœ„ν•΄μ„œ 보톡 λŒ€μΉ­ν‚€λ‚˜ λΉ„λŒ€μΉ­ν‚€λ₯Ό λ§Œλ“€ λ•Œ μ‚¬μš©μ΄λœλ‹€.
사싀 PKCS#11 μ—μ„œλŠ” Random κΈ°λŠ₯κ³Ό κ΄€λ ¨ν•œ ν•¨μˆ˜λŠ” 두가지 이닀.

C_SeedRandom κ³Ό C_GenerateRandom ν•¨μˆ˜μ΄λ‹€.

이 두 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” PKCS#11 μ—μ„œ C_OpenSession κΉŒμ§€ 진행이 λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€.
ν•˜μ§€λ§Œ 랜덀 κ΄€λ ¨ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” νŠΉλ³„νžˆ C_Login 은 ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

Session 정보 ν™”λ©΄

사싀 Random κ°’ 자체의 κΈ°λŠ₯은 λ³΄μ•ˆμƒ μ•ˆμ „μ„±μ΄ 없어도 λ˜μ§€λ§Œ
λ§Œλ“€μ–΄μ§„ λžœλ€κ°’μ„ μ‚¬μš©ν•  λ•ŒλŠ” μ•ˆμ „ν•˜κ²Œ μ‚¬μš©λ˜μ–΄μ•Ό ν•œλ‹€.

그림은 CryptokiMan->μ•”ν˜Έ->Random 창을 λ›°μš΄ ν•˜λ©΄μ΄λ‹€.

Random κ°’ μ‚¬μš© ν™”λ©΄

  • SetSeed : SEED 값을 μ„€μ • ν•œλ‹€.
  • Randome Length : λŠ” κ΅¬ν•˜λ €λŠ” 랜덀 κ°’μ˜ 길이λ₯Ό μ§€μ •ν•œλ‹€.

참고둜 SetSeed 섀정은 ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ”λ° 이 λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ 내뢀에 μ •μ˜ 된 SEED 값을 μ‚¬μš©ν•˜κ²Œ λœλ‹€.

그럼 C_GenerateRondom κ²½μš°λŠ” 랜덀 값을 λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.
ν•˜μ§€λ§Œ C_SeedRandom 은 μ™œ μ‚¬μš©ν•˜λŠ”κ²ƒμΌκΉŒ?

사싀 Random 값도 μ •ν•΄μ§„ κ·œμΉ™μœΌλ‘œ λ§Œλ“€μ–΄μ§„λ‹€. 즉 Pseudo-random 으둜 determnistic λžœλ€μ΄λ‹€.
μš°λ¦¬κ°€ 보톡 λ§ν•˜λŠ” CTR DRBG λ‚˜ HMAC DRBG 같은 방식이 κ·Έ κ·œμΉ™μ΄λ‹€.
즉 DRBGμ—μ„œ SEED 값을 μ‚¬μš©ν•˜λŠ”λ° SEED 값이 같은면 같은 λ‚œμˆ˜λ₯Ό λ§Œλ“€κΈ° λ•Œλ¬Έμ— μ‚¬μš©μžκ°€ SEEDλ₯Ό λ³€κ²½ ν•˜μ—¬ λ‹€λ₯Έ λ‚œμˆ˜ 값을 λ§Œλ“€κΈ° μœ„ν•¨μ΄λ‹€.

즉 같은 쑰건의 SEED와 ν™˜κ²½μ΄ 맞으면 같은 랜덀 값이 λ‚˜μ˜¨λŠ” 것이닀.

λ¬Όλ‘  SEED 값은 λ‚΄λΆ€μ—μ„œ λ§Œλ“€μ–΄μ§€κ³  λ…ΈμΆœμ€ λ˜μ§€ μ•Šμ§€λ§Œ 같은 μƒνƒœλ₯Ό μ΄μš©ν•˜λ©΄ 그만큼 λ‚œμˆ˜κ°€ 같은 값이 λ‚˜μ˜¬ 수 μžˆμ–΄μ„œ
λ‹€λ₯Έ SEEDλ₯Ό μ‚¬μš© ν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•¨μ΄λ‹€.