2009-09-09 6 views
7

내 웹 응용 프로그램은 SSL을 통해서만 작동하며 사용자 이름과 암호로 성공적으로 로그인 한 후 각 사용자에 대해 시간 제한 쿠키를 설정합니다. 이 시스템의 가장 큰 약점은 기존 사용자의 쿠키를 손상시키는 것입니다. 그리고 두 사람은 세션 ID GUID를 추측합니다.Windows 2003에서 생성 된 GUID는 세션 ID로 안전하게 사용됩니까?

첫 번째 약점에 대한 메커니즘을 알고 있지만 공격자가 세션 ID GUID를 추측 할 확률이 이전에 그들이 설정 한 계정에 로그인하여 얻은 GUID를 기반으로하여 걱정할 필요가 있는지 궁금합니다. 쪽으로? 이 경우 웹 서버는 Windows 2003이고 GUID는 .Net 3.5로 생성됩니다.

답변

6

GUID는 암호로 보호되는 것이 아니라 고유해야합니다. 꽤 많은 형식이 예측 가능합니다 - 48 비트 MAC 주소, 타임 스탬프는 생성 방법 및 타임 스탬프 충돌을 처리하기위한 몇 가지 비트를 알고 있으면 다소 예측할 수 있습니다. 기술적으로 정교한 공격자는 GUID를 리버스 엔지니어링 할 가능성이 매우 높습니다.

보안 세션 키에는 실제로 cryptographically secure PRNG이 필요합니다.

+0

GUID 생성 알고리즘이 변경되었습니다. 더 이상 MAC 주소를 사용하지 않습니다. 그들은 단지 128Bit 의사 난수입니다. 그리고 그들은 많은 보안 문제가 있습니다. –

+0

.net 3.5 guids에 타임 스탬프가 아닌 MAC 주소가 없습니다. –

+1

.net 3.5 GUID가 공급 업체에서 암호로 안전하다고 설명 했습니까? – ConcernedOfTunbridgeWells

0

.Net 3.5 GUID를 추측하는 것은 사실상 불가능합니다. 엄청나게 많은 GUID는 엄청납니다. 우주의 모래 위에있는 곡물보다 GUID가 더 많습니다. 고유 한 것으로 보장 된 것은 아닙니다. (분명히 SQL NEWID이 유일 함을 보장하지만)

이 문제를 직접 테스트하고 수억 개를 생성 한 다음 중복 된 것을 찾으십시오 (찾을 수 없음).

+1

GUID는 의사 임의이지만 컴퓨터는 절대 실제 값을 생성 할 수 없습니다. 나는 그들이 쉽게 추측 할 수 있다고 분쟁한다. 다음의 모든 GUID를 계산할 수 있다는 설명에 대해 자세히 설명해 주시겠습니까? (예제 또는 소스) –

관련 문제