[๋ณด์•ˆ] ๐ŸŒŸ Random Number Generator

yujeongkwonยท2023๋…„ 10์›” 24์ผ

๋ณด์•ˆ

๋ชฉ๋ก ๋ณด๊ธฐ
8/10
  • ๋ณด์•ˆ์—์„œ ๋‚œ์ˆ˜๋Š” ์™„์ฃค์™„์ฃค ๋žœ๋คํ•ด์•ผํ•ด์„œ ์ค‘์š”ํ•จ

๐Ÿ” ๋ณด์•ˆ์—์„œ ๋‚œ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•

  • ๊ธฐ๋ฐ€์„ฑ ์ธก๋ฉด : Random key ์ƒ์„ฑ
  • ์žฌ์‚ฌ์šฉ ๊ณต๊ฒฉ ๋ฐฉ์ง€ ์ธก๋ฉด
    • Nonce ์ƒ์„ฑ : ์žฌ์‚ฌ์šฉ ๊ณต๊ฒฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์˜๋ฏธ ์—†๋Š” ๋ง๋ถ™์ด๋Š” ๊ฐ’
    • random padding : ๋ธ”๋ก ์•”ํ˜ธ์™€ ๊ฐ™์ด ํ‰๋ฌธ ๊ธธ์ด๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์•”ํ˜ธ๋ฌธ ๊ธธ์ด๋ณด๋‹ค ์งง์œผ ๊ฒฝ์šฐ ๋‚จ๋Š” ๊ณต๊ฐ„์— randomํ•œ ์ˆ˜๋ฅผ ์ฑ„์›Œ ๋„ฃ์Œ
  • ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ ๋ฐฉ์ง€ ์ธก๋ฉด : Random mask ์ƒ์„ฑ
    • ๋ถ€์ฑ„๋„์ด๋ž€ ์•”ํ˜ธ ํŒจํ„ด์œผ๋กœ ์œ ์ถ”ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ „์†ก๋Ÿ‰, ์ „๋ฅ˜ ๋ณ€ํ™” ๋“ฑ ์™ธ๋ถ€ ์š”์†Œ๋กœ ์•Œ์•„๋‚ด๋Š” ๊ณต๊ฒฉ
      ex) RSA์—์„œ๋Š” ์ œ๊ณฑ๋”ํ•˜๊ธฐ์ œ๊ณฑ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณตํ•จ
      -> ๋น„ํŠธ๊ฐ’์— ๋”ฐ๋ผ ์—ฐ์‚ฐ ์ข…๋ฅ˜๊ฐ€๋‹ฌ๋ผ์ง โ†’ ์ „๋ฅ˜ ๋ฐ”๋€œ
      โ†’ ์ „์ž๊ธฐํŒŒ ๋ฐ”๋€œ = ํŒŒํ˜• ๋ถ„์„ํ•ด์„œ ์•Œ ์ˆ˜ ์žˆ์Œ
      โ†’ ์ด๋Ÿฌํ•œ ๋ถ€์ˆ˜์ ์ธ ์ •๋ณด๋ฅผ ๋ถ€์ฑ„๋„
      ๋งค์šฐ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๊ณต๊ฒฉ

๐Ÿช” ๋‚œ์ˆ˜ ์ƒ์„ฑ๊ธฐ(RNG, Random Number Generator)์˜ ์ข…๋ฅ˜

  • TRNG (True RNG)
    • ๋ฌผ๋ฆฌ์  ํ˜„์ƒ(์žก์Œ,๋ฐฉ์‚ฌ์„  ๋ถ•๊ดด, clock drift ๋“ฑ), ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋“ฑ์— ๊ธฐ๋ฐ˜
    • ใ„นใ…‡ ๋ฌด์ž‘์œ„, ํŒจํ„ด ์ฐพ๊ธฐ ์–ด๋ ค์›€ -> ์ข‹์€ ํ†ต๊ณ„์  ํŠน์„ฑ์„ ๊ฐ€์ง
    • ex : nonce, PRNG์˜ seed ๋“ฑ
  • PRNG (Pseudo RNG)
    • seed ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ์ˆ˜ํ•™์ /์•Œ๊ณ ๋ฆฌ์ฆ˜์—์˜ํ•ด ๊ณ„์‚ฐ๋œ ๋‚œ์ˆ˜์—ด์„ ์ƒ์„ฑ
    • TRNG๋งŒํผ ๋žœ๋ค์•„๋‹˜ ํŒจํ„ด, ์ฃผ๊ธฐ์„ฑ์„ ๊ฐ€์ง
    • ๋ณดํ†ต seed๋ฅผ TRNG ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒ์žฅ (์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋„๋ก)
    • ์žฌ๊ท€์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณ„์‚ฐ๊ฐ€๋Šฅ
      • s(i+1) <- f(si,s(i-1),...,s(i-t))
      • but ์ผ๋ฐ˜์ ์œผ๋กœ ์ข‹์€ ํ†ต๊ณ„์  ํŠน์„ฑ์„ ๊ฐ€์ง
      • ๋‹ค์Œ ๋น„ํŠธ ์˜ˆ์ธก ๋ถˆ๊ฐ€
    • ์ŠคํŠธ๋ฆผ ์•”ํ˜ธ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํ‚ค ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ๊ธฐ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, seed๊ฐ€ ํ‚ค๊ฐ€ ๋จ.
      • ์ด๋•Œ seed๋งŒ ์•Œ๋ฉด ์žฌ์ƒ์„ฑ ๊ฐ€๋Šฅ -> ์˜ˆ์ธก๋„ ๊ฐ€๋Šฅ
    • TRNG์— ๋น„ํ•ด ๋งค์šฐ ํผ
    • ํ”ผ๋“œ๋ฐฑ ๊ฒฝ๋กœ๋ฅผ ๊ฐ–๋Š” ์‹œํ”„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ
    • ๊ตฌ์„ฑ: ๋‹คํ•ญ์‹ ๐‘ƒ (๐‘ฅ )= ๐‘ฅ^๐‘š + ๐‘(๐‘šโˆ’1)๐‘ฅ^(๐‘šโˆ’1) + โ‹ฏ + ๐‘1๐‘ฅ + ๐‘0์œผ๋กœ ํ‘œํ˜„
    • ๋‹คํ•ญ์‹ P(x)๊ฐ€ ๊ธฐ์•ฝ๋‹คํ•ญ์‹์ผ ๋•Œ ์ตœ๋Œ€์ฃผ๊ธฐ : 2^m-1
    • ex) Linear Feedback Shift Register (LFSR), ANSI C์˜ rand() ํ•จ์ˆ˜

๐ŸŒ… Linear Feedback Shift Registers

  • ์„ค๊ณ„ํ•˜๊ธฐ ์‰ฌ์›€
  • ์˜์‚ฌ ๋‚œ์ˆ˜ ์ƒ์„ฑ๊ธฐ(PRNG)์ค‘ ํ•˜๋‚˜
  • ํ”ผ๋“œ๋ฐฑ ๊ฒฝ๋กœ๋ฅผ ๊ฐ–๋Š” ์‹œํ”„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ
    • degree(๐‘š): ์ €์žฅ์š”์†Œ(Flip-flop)์˜ ์ˆ˜
    • ํ”ผ๋“œ๋ฐฑ: ๐‘๐‘– (0 < ๐‘– < ๐‘š) = 1์ธ ๋ถ€๋ถ„์˜ ์Šค์œ„์น˜๋งŒ ์—ฐ๊ฒฐ
  • LFSR์˜ ๊ณผ์ •
    • ๐‘ (๐‘–+3) = ๐‘ (๐‘–+1)โจ๐‘ ๐‘–
    • ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•  ๋•Œ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์˜ค๋ฅธ์ชฝ์œผ๋กœ shift
    • ใ„ด= ๋น„ํŠธ๊ฐ€ ๊ฐ€์žฅ ์™ผ์ชฝ์˜ ์ƒํƒœ ๋น„ํŠธ๋Š” ํ”ผ๋“œ๋ฐฑ ๊ฒฝ๋กœ์—์„œ ๊ณ„์‚ฐ๋˜๋ฉฐ ์ด๊ฒƒ์€ ์ด์ „ ์‹œ๊ฐ„์—์„œ์˜ ํ”Œ๋ฆฝํ”Œ๋กญ ๊ฐ’์˜ XOR ํ•ฉ
      • XOR์€ ์„ ํ˜•์—ฐ์‚ฐ -> ์„ ํ˜•์„ฑ์„ ๋งŒ์กฑ
      • ์„ ํ˜•์„ฑ : ๐น(๐‘Ž + ๐‘) = ๐น(๐‘Ž) + ๐น(๐‘), ๐น(๐‘˜๐ด) = ๐‘˜๐น(๐ด)
    • ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์˜ ์ƒํƒœ ๋น„ํŠธ(FF0)๊ฐ€ ํ˜„์žฌ LFSR์˜ ๊ฒฐ๊ณผ
  • ๊ตฌ์„ฑ
    • ๋‹คํ•ญ์‹ ๐‘ƒ (๐‘ฅ )= ๐‘ฅ^๐‘š + ๐‘(๐‘šโˆ’1)๐‘ฅ^(๐‘šโˆ’1) + โ‹ฏ + ๐‘1๐‘ฅ + ๐‘0์œผ๋กœ ํ‘œํ˜„
    • P(x) = ํ”ผ๋“œ๋ฐฑ ํ•จ์ˆ˜ : LFSR์˜ ๊ตฌ์กฐ์™€ ๋™์ž‘์„ ์ •์˜ํ•˜๊ณ  ์ฃผ๊ธฐ์™€ ์ƒ์„ฑ๋˜๋Š” ์‹œํ€€์Šค์˜ ํŠน์„ฑ์„ ๊ฒฐ์ •.
    • ๋‹คํ•ญ์‹์˜ ๊ณ„์ˆ˜๋Š” 0 or 1 = ํ•ญ์ด ์—†๋‹ค or ์žˆ๋‹ค
  • ์ตœ๋Œ€ ์ฃผ๊ธฐ : 2^m-1
    • P(x)๊ฐ€ ๊ธฐ์•ฝ๋‹คํ•ญ์‹์ผ ๋•Œ ์ตœ๋Œ€์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง
  • 2m๊ฐœ์˜ ๊ฒฐ๊ณผ ๋น„ํŠธ๋ฅผ ์•Œ๋ฉด P(x) ๋ถ„์„ ๊ฐ€๋Šฅ
    • ํ•ด๊ฒฐ์•ˆ : LFSR ์—ฌ๋Ÿฌ๊ฐœ ์กฐํ•ฉ (ex ์•„๋ž˜์—์„œ ๋ณผ Trivium)
  • degree(๐‘š)=3์ผ๋•Œ์ธ ์•„๋ž˜ LFSR ๊ทธ๋ฆผ์—์„œ, si๋Š” ๋‚ด๋ถ€ ์ƒํƒœ ๋น„ํŠธ๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ๏ผˆs2=1๏ผŒs1=0๏ผŒs0=0๏ผ‰์ด๋ผ๊ณ  ํ•  ๋•Œ ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ LFSR์˜ ์ƒํƒœ ๊ฒฐ๊ณผ๋Š” ํ‘œ 2.2์™€ ๊ฐ™๋‹ค.
    • ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ€ 0,0,0์ด๋ฉด ๊ฐ’์ด ๋ณ€ํ™”ํ•˜์ง€ ์•Š๊ณ  ์ญ‰ 0000.. ์ด๋ฏ€๋กœ ์ด๋ฅผ ์ œ์™ธํ•˜๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •
    • ๋”ฐ๋ผ์„œ ์ฃผ๊ธฐ : 2^3-1=7 ๊ฐœ


Trivium

  • LFSR ๊ธฐ๋ฐ˜์˜ ํ˜„๋Œ€ stream ์•”ํ˜ธ
  • ๊ตฌ์กฐ : ์„ธ ๊ฐœ์˜ nonlinear feedback shift register (NFSR) ์‚ฌ์šฉ
    • ๋Œ€์ถฉ ํ”ผ๋“œ๋ฐฑ๊ตฌ์กฐ, NFSR์ด 3๊ฐœ๋กœ๋˜์–ด์žˆ๋‹ค ~ ์ •๋„๋งŒ,..
  • ๋™์ž‘
    • ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„
      • A: ์ดˆ๊ธฐ์— 80๋น„ํŠธ IV๊ฐ€ ๋ ˆ์ง€์Šคํ„ฐ A์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์œ„์น˜์— ์ž…๋ ฅ
        • ์ด๋‹ˆ์…œ ๋ฒกํ„ฐ(IV) : ๋™์ผ ๊ฒฐ๊ณผ๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ(๋น„๋ฐ€์Šค๋Ÿฝ์ง€๋Š” ์•Š์Œ)
        • ํ‚ค๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ๋งค๋ฒˆ ๋™์ผํ•œ ์ž…๋ ฅ์€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ
      • B: 80๋น„ํŠธ ํ‚ค๊ฐ€ ๋ ˆ์ง€์Šคํ„ฐ B์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์œ„์น˜์— ์ž…๋ ฅ
        • ํ‚ค์ŠคํŠธ๋ฆผ ์ƒ์„ฑ๊ธฐ์— k ๊ฐ’๋“œ์–ด๊ฐ ,k = 80๋น„ํŠธ ํ‚ค,
      • C: 109-111 bit๋งŒ 1, ๊ทธ ์™ธ bit์€ 0์œผ๋กœ ์„ค์ •
    • ์ค€๋น„ ๋‹จ๊ณ„ : 1152 clock(๋ฒˆ) ๋™์ž‘
      • ๋‚˜์˜จ๊ฐ’์„ ์กธ๋ผ ๋Œ๋ฆผ -> A,B,C์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ์ค„์ผ๊ณ , ์˜ˆ์ธก ๋ถˆ๊ฐ€ํ•˜๊ฒŒ ํ•˜๋„๋ก ์ค€๋น„ ๋™์ž‘
    • ์•”ํ˜ธํ™”: ์ดํ›„์— ๋‚˜์˜ค๋Š” stream(1153 ๋ฒˆ์งธ ๊ฐ’)๋ถ€ํ„ฐ ์‚ฌ์šฉ
profile
์ธ์ƒ ์‚ด์ž.

0๊ฐœ์˜ ๋Œ“๊ธ€