it-swarm-korea.com

임의의 nonce는 얼마나 오래 걸리나요?

NIST는 다양한 알고리즘의 키 및 해시 길이에 대한 좋은 지침 를 제공합니다. 그러나 난수 또는 의사 난수 nonce (한 번 사용 된 숫자)의 길이에 대해서는 구체적으로 볼 수 없습니다.

다양한 용도에 대한 좋은 대답이 하나라도 있다면 그것을보고 싶습니다. 그러나이를 구체적으로하기 위해 서버가 의사 난수 경로 구성 요소로 URL을 생성하는 일반적인 "이메일을 통한 비밀번호 재설정"상황을 사용합니다. RFC의 예 가 136 비트 (dcd98b7102dd2f0e8b11d0f600bfb0c093) 인 HTTP 다이제스트 인증과 약간 비슷합니다.

많은 사람들이 에서 논의 된 것처럼 버전 4 UUID (122 의사 난수 비트를 제공함) 또는 이것을 사용하는 것으로 보입니다. 일회성 토큰에 GUID가 안전합니까? , 사용자는 이전에 훨씬 더 예측 가능한 UUID 버전의 사용을주의해야하지만 Windows 난수 생성기에 대한 과도한 영구 로컬 공격 2008 년 패치.

그러나 UUID 버전 및 구현에서 뒤 엉키는 위험을 무시하고 URL에 몇 개의 의사 난수 비트를 포함시켜야합니까?

35
nealmcb

64 비트가 암호화 품질 임의라면 64 비트 nonce는 대부분의 실제 목적에 충분할 것입니다.

64 비트로 충분한 이유는 무엇입니까?이 질문에 대답하는 데 사용할 수있는 추론의 종류를 설명하겠습니다. 이 URL이 일회용 시간 제한 URL이라고 가정하겠습니다. 한 번 사용한 후에는 더 이상 유효하지 않으며 잠시 (3 일) 후에 만료되고 더 이상 유효하지 않습니다. nonce는 서버에만 의미가 있기 때문에 공격자가 추측을 시도 할 수있는 유일한 방법은 서버에 64 비트 추측을 보내고 서버가 어떻게 응답하는지 확인하는 것입니다. nonce가 만료되기 전에 공격자가 몇 번이나 추측 할 수 있습니까? 공격자가 초당 1000 개의 HTTP 요청을 할 수 있다고 가정 해 봅시다 (이는 매우 강력한 공격자입니다). 공격자는 약 1000 * 3600 * 24 * 3 = 2를 만들 수 있습니다28 3 일 이내에 추측합니다. 각 추측은 1/264 옳을 확률. 따라서 공격자는 최대 1/236 계획을 어길 가능성이 있습니다. 대부분의 설정에 충분할 정도로 안전해야합니다.

23
D.W.

먼저 시스템에서 사용할 최대 사용량 (임의의 nonce가 생성되는 횟수)을 추정하십시오. 다음으로 수용 가능한 보안 수준을 결정하십시오. 즉, nonce가 오래된 것과 중복이되는 것이 얼마나 불가능한지 결정하십시오. 비트 단위의 사용량을 계산하고 두 배로 늘리고 비트에 필요한 가능성을 추가하면 길이가 없습니다.

무작위 IV를 가진 AES-GCM의 예. 특정 키에 대해 임의 IV로 허용되는 호출 수는 2입니다.32. IV가 재사용 될 확률은 2보다 작아야합니다.-32. 이에 필요한 nonce 길이는 32 × 2 + 32 == 96 비트입니다.

가설 적으로 2를 생성하고 싶을 경우96 각각 임의의 논스를 가지며 중복 논스의 확률이 2보다 작은 것을 원할 것-32, 96 × 2 + 32 == 224 비트 길이의 nonce가 필요합니다.

이것을 64 비트의 위의 대답과 비교 ... 2 이상인 경우16 (65536) 시스템 사용시 해당 시간에 중복 넌 스가 발생할 확률이 2보다 큽니다.-32 (40 억분의 1 이상, 단기). 보안 요구 사항에 따라 허용 될 수도 있고 그렇지 않을 수도 있습니다.

하나의 크기가 모든 답변에 적합하므로 언급 된 임의의 UUID는 꽤 괜찮은 해결책입니다.

이 값은 근사값이며 더 정확한 계산은 훨씬 더 복잡합니다.

7
Nakedible