2017-12-19 3 views
-1

PHP.net mt_rand()uniqid()은 "암호 학적으로 안전한 값을 생성하지 않습니다"라고 설명되어 있으며 대신 random_int(), random_bytes() 또는 openssl_random_pseudo_bytes()을 사용하도록 용기가 있습니다."암호로 안전한"이란 의미는 무엇입니까?

"암호로 안전한"이란 무엇입니까?

+0

친구 [구글] (https://www.google.com/search?q=cryptographically+secure&rlz=1C1VFKB_enJP607JP618&oq=cryptographically+secure&aqs=chrome..69i57j69i60&sourceid=chrome&ie=UTF-8)와 [위키 백과] (HTTPS : //en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator)이 도움이 될 것 같습니다. – Geshode

+0

는 친구가 "엔트로피"에 대해 이야기 할 것이고 ... 단지 재미를 위해서 ... https://www.random.org/analysis/dilbert.jpg – DarkSquirrel42

+0

@Geshode 나는 그 친구와 Stack에게 물어봤을 것 같아요. 이것에 대해서 너무 오버플로. 그리고 어떻게 됐을 까? 나는 명확한 설명을 찾지 못했고 나는 다른 사람들을 위해 질문을 만들면 좋을 것이라고 생각했다. –

답변

1

컴퓨터에 대한 세부 정보를 확인하실 수 있습니다. 즉, 컴퓨터가 계산하는 의사 난수가 예측 가능할 수 있습니다.

이 난수를 암호화 키의 기초로 사용하면 키와 보안 메시지가 손상 될 수 있습니다.

암호로 안전한 의사 난수 생성기 (CSPRNG)는 생성되는 숫자가 제 3 자의 예측 가능성을 극도로 낮추는 경우입니다. 즉, 이러한 난수에서 파생 된 암호화 키는 이러한 키로 보호 된 메시지를 안전하게 만드는 것을 결정하기가 매우 어렵습니다.

이상적으로

https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator

에서 CSPRNGs의 난수의 생성은 높은 품질의 소스, 일반적으로 운영 체제의 임의성 API에서 얻은 엔트로피를 사용합니다. 그러나 예기치 않은 상관 관계는 표면 상으로 독립적 인 여러 프로세스에서 발견되었습니다. 정보 이론적 인 관점에서 볼 때, 생성 될 수있는 엔트로피 인 임의성의 양은 시스템에서 제공하는 엔트로피와 같습니다. 그러나 때로는 실제 상황에서 엔트로피를 사용할 수있는 것보다 더 많은 난수가 필요합니다. 또한 실제 시스템에서는 실행중인 시스템에서 임의성을 추출하는 프로세스가 느립니다. 그러한 경우 CSPRNG가 때때로 사용될 수 있습니다. CSPRNG는 더 많은 비트를 통해 사용 가능한 엔트로피를 "늘릴"수 있습니다.

2

알려진 알고리즘으로 생성 되었기 때문에 값을 추측하고 예측할 수 있음을 의미합니다.

그래서 사용자가 다음에 무엇을 추측 할 수없는 가치가 필요하다면 릴레이하지 말아야합니다.

포커 게임을 고려해보십시오. 사용자가 다음 카드가 무엇인지 추측 할 수 있습니까?

당신은 일반적으로 진정으로 임의의 숫자를 계산하기에 아주 좋은 일을하지 않습니다이 SO answer