[๋ณด์] ๐ Random Number Generator
- ๋ณด์์์ ๋์๋ ์์ฃค์์ฃค ๋๋คํด์ผํด์ ์ค์ํจ
๐ ๋ณด์์์ ๋์๋ฅผ ์ฌ์ฉํ๋ ๋ฒ
๊ธฐ๋ฐ์ฑ ์ธก๋ฉด : 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 ๋ฒ์งธ ๊ฐ)๋ถํฐ ์ฌ์ฉ
