GUID는 일반적으로 모든 종류의 엔터티 (외부 시스템, 파일 등의 요청)를 고유하게 식별하는 데 사용됩니다. 마술과 같이 작동합니다. Windows에서는 "GiveMeGuid()"(UuidCreate()) 함수를 호출하고 새로운 GUID가 서비스에 제공됩니다.GUID를 악용하는 모르는 방법이 있습니까?
내 코드가 실제로 "GiveMeGuid()"함수를 호출 할 때마다 새 GUID가 필요할 때마다이를 잘못 사용하는 방법이 없습니까?
GUID는 일반적으로 모든 종류의 엔터티 (외부 시스템, 파일 등의 요청)를 고유하게 식별하는 데 사용됩니다. 마술과 같이 작동합니다. Windows에서는 "GiveMeGuid()"(UuidCreate()) 함수를 호출하고 새로운 GUID가 서비스에 제공됩니다.GUID를 악용하는 모르는 방법이 있습니까?
내 코드가 실제로 "GiveMeGuid()"함수를 호출 할 때마다 새 GUID가 필요할 때마다이를 잘못 사용하는 방법이 없습니까?
이전 질문에 대한 답변 : How deterministic Are .Net GUIDs?을 찾았습니다. 그것을 요구 :
그것은 13 진수가 GUID (id est, v4)를 생성하는 데 사용 된 알고리즘의 버전을 나타내므로 13 번째 16 진수는 항상 4입니다. 또한, 나는 위키 백과 인용 :
WinAPI를 GUID 발생기의해독 보여줍니다
, 그 V4의 GUID의 순서는 의사 랜덤, 하나는에 의해 반환 된 다음 250 개 000의 GUID까지 예측할 수있는 초기 상태를 제공하기 때문에 함수 UuidCreate. 이것이 GUID를 암호 해독 (예 : 무작위 키)으로 사용해서는 안되는 이유입니다. 이 같은 씨앗을 운이 가지고 얻을 경우
그래서, 당신은 순서대로 250K 거울을 깰 수 있습니다. 다른 Wikipedia piece 인용하면 각 GUID가 고유하게 보장되지 생성 동안
를 고유 키 (2 128 3.4 × 10 38)의 총 수는 매우 크다고 동일한 확률 두 번 생성되는 숫자는 극히 적습니다.
결론 : 잘못된 사용 양식 일 수 있습니다. GUID 은 항상입니다.
Wikipedia 주장은 거짓으로 판명되었습니다. GUID 목록이 아닌 발전기의 전체 내부 상태에 액세스하여 이러한 예측을 수행 할 수 있습니다. –
Guid를 잘못 사용하는 것을 볼 수있는 유일한 방법은 논리적 인 방식으로 값을 해석하려고하는 것입니다. 그것이 정말로 당신을 그렇게 초대하는 것은 아닙니다. 그것은 제가 좋아하는 Guid의 특징 중 하나입니다.
GUID 생성의 일부 구현은 시간에 따라 다르기 때문에 CreateGuid를 빠르게 연속해서 호출하면 충돌하는 GUID가 생성 될 수 있습니다.
편집 : 이제 문제를 기억합니다. 나는 GUID 생성 함수가 각 호출에 시스템 시간으로 RNG를 다시 시드하는 PHP 코드를 작업하고있었습니다. 이러지 마.
어쩌면 엔트로피는 처음에 GUID를 생성하는 데 사용 된 일부 매개 변수 (예 : 인터페이스 식별자)로 재생함으로써 조작 될 수 있습니다.
일부 GUID에는 생성 된 시스템의 식별자가 포함되어 있으므로 클라이언트/서버 환경에서 사용할 수 있지만 일부는 사용할 수 없습니다. 데이터베이스가 여러 클라이언트 액세스와 같이 사용하지 않는지 확인하십시오.
모든 것이 작동합니다. 아니면 해결하고 싶은 문제가 있습니까? – Tobu
당신은 곧 GUID를 다 쓰지 않을 것입니다. =) –
"오용"은 무엇을 의미합니까? Guid는 가치이며 다른 값과 마찬가지로 원하는 방식으로 사용할 수 있습니다. 당신이 호출하는 함수는 (거의) 값이 고유하다는 것을 보장하는 특정 계산을 수행합니다. 나는 그것이 남용 될 수 있다고 생각하지 않습니다. – Rory