Fortuna(CSPRNG)에 관한 질문

cryptographically secure pseudo random number generator로 쓰이는 Fortuna를 공부하고 있습니다.일단 ferguson과 schneier가 쓴 Practical Cryptography를 읽고, 관련 글들을 검색해서 읽었습니다만, 머리가 나빠서인지 기본 개념들에 대한 이해가 부족해서인지, 이해가 잘 안됩니다.
1. generator의 초기 키 값이 알려져있고, accumulator에 있는 32개 pool이 모두 비어있다면(즉 랜덤소스들이 아직 pool들에 엔트로피를 공급하지 않은 상태라면), 이 상태에서 생성되는 random number는 당연히 예측 가능하다.
2. 그러므로 랜덤소스들이 pool에 엔트로피를 공급해서, 최소 한번은 reseed가 일어나야 한다. 즉 P0가 한번은 꽉 차서 reseed가 일어나는 일이 최소한 한번은 일어나야 한다. 랜덤소스의 이벤트들은 32개의 각 풀에 차례대로 돌아가면서 공급되므로, 최소 32 x (reseed를 위해 필요한 이벤트 갯수)의 이벤트를 수집해야 한다.
라고 이해하고 있는데, 제대로 이해한 것이 맞나요?
그런데 이렇게 이해하면, 안전한 random number 생성을 위해 생성해야 할 최소한의 이벤트의 양이 있는 것 같은데, 책의 뉘앙스는 오히려 그런 필요를 없앤 것이 Fortuna의 장점이라고 이야기 하는 것 같습니다. 실제 fortuna 구현들을 봐도, 딱히 accumulator에 쌓여있는 이벤트의 양을 신경쓰거나 하지 않는 것 같거든요.
저는 뭘 잘못 알고 있는걸까요?
혹시 이런 내용을 질문할만한 사이트나 메일링리스트가
혹시 이런 내용을 질문할만한 사이트나 메일링리스트가 있을까요? 국내든 국외든 상관없으니, 혹시 아시는 분 계시면 추천해주시면 감사하겠습니다.
댓글 달기