피드로 돌아가기
Dev.toSecurity
원문 읽기
Random Oracle 구현을 통한 메모리 효율 및 결정론적 무작위성 확보
Random Oracles in Python
AI 요약
Context
암호학적 증명 모델인 Random Oracle Model(ROM)의 이론적 이상향과 실제 구현 간의 간극 존재. 단순 해시 함수 사용 시 발생할 수 있는 보안 취약점과 무한한 무작위 시퀀스 생성 필요성 대두.
Technical Solution
- OS Entropy Pool 기반의 캐싱 구조를 통한 True Randomness 구현 및 프로세스 생명주기 내 일관성 유지
- Counter-mode PRF(Pseudo-Random Function) 구조 채택을 통한 $O(1)$ 공간 복잡도의 결정론적 무한 시퀀스 생성
- Fixed-width Index Encoding(8-byte big-endian) 적용을 통한 입력값 결합 시 발생하는 Collision 원천 차단
- Input Hash를 Seed로 활용하고 이를 다시 PRF로 확장하는 계층적 구조를 통해 ${0,1}^* \to {0,1}^\infty$ 매핑 구현
- Trade-off 분석을 통한 무작위성 수준, 메모리 사용량, 직렬화 가능 여부에 따른 세 가지 구현 전략 제시
실천 포인트
1. 무한한 무작위 시퀀스가 필요할 때 메모리 낭비를 막기 위해 Lazy Expansion 구조 검토
2. KDF(Key Derivation Function) 설계 시 `str().encode()` 대신 Fixed-width Encoding을 사용하여 Collision 방지
3. 시스템 간 동일한 무작위 결과값이 필요하다면 Seed 기반의 Deterministic PRF 도입 고려