예측할 수없는/추측 할 수있는 세션 ID로 사용할 UUID를 생성해야합니다.세션 ID에 대해 기본 mt19937 RNG 보안을 사용하여 부스트 UUID가 생성됩니까?
이 쉽게 boost's UUID library를 사용하여 수행 할 수 있습니다
boost::uuids::uuid newUUID()
{
static boost::uuids::random_generator gen;
return gen();
}
반환 UUID 쉽게 문자열로 변환 할 수 있습니다.
boost::uuids::uuid newUUID()
{
static boost::uuids::basic_random_generator<boost::mt19937> gen;
return gen();
}
그래서 우리는 메르 센 트위스터 19,937 의사 난수 생성기를 사용하고 있습니다 :에
위의 코드는 동일합니다. 부스트는 seeding it properly의 작업을 심각하게 생각합니다.
그러나 중요한 것은 보안 측면에서 boost::random_device과 같은 비 결정적 RNG를 사용하고 UUID 생성 속도에 어떤 영향을 미칠지에 대해 궁금합니다.
boost::uuids::uuid newUUID()
{
static boost::uuids::basic_random_generator<boost::random_device> gen;
return gen();
}
보안 통찰력을 가진 사람들의 조언을 부탁드립니다.
안전하다는 것은 무엇을 의미합니까? AFAIK는 암호로 안전하지 않습니다. – NathanOliver
MT는 정말 빠르고 고품질이지만, 암호화 RNG가 아닙니다. 속도는 문제가되지 않지만, MT는 일반 시스템에서 초당 GB의 무작위 데이터를 생성 할 수 있습니다. –
@ NathanOliver 실제로는 질문입니다 : UUID를 생성하기 위해 암호화 RNG를 사용하는 것이 예측 가능하거나 추측 할 수 없거나이 목적을 위해 충분히 안전하지 않은 세션 ID에 사용될 경우 필요합니다. – mgd