2010-11-30 2 views
2

UDP 패킷을 처리하는 네트워크 서버를 구현하고 있습니다. 공격자가 udp 패킷을 복사하여 나중에 재생할 수있는 재연 공격은 피하고 싶습니다. 나는 해시 테이블에이 값을 저장하고 패킷을 해시 할 수 있다는 생각을 가지고 놀고있다. 그런 다음 패킷이 수신 될 때마다 동일한 프로세스를 수행 한 다음 해시 테이블에서 조회합니다. 이미 존재한다면 우리는 패킷을 거부하지만, 우리가 그것을 본 적이 없다면 (엔트리는 존재하지 않는다) 우리는 나중에 사용할 수 있도록 저장한다.네트워크 패킷 추적을위한 최적의 알고리즘 (재생 공격 방지)

이제 해시 알고리즘이 적합할까요? 해시 테이블이 아닌 다른 것이 필요합니까? 받은 UDP 패킷이 많아서 O (1) !!!!!!에서 작동하고 싶습니다. ;-), 이것이 가능한가?

분명히 해시가 길어질수록 더 많은 저장소 (상태)를 할당해야하며 해시 테이블이 시간이 지남에 따라 동적으로 커질 수 있습니까?

어쩌면 여기서 벗어날 수 있습니다. 해시 테이블이 전혀 필요하지 않을 수도 있습니다! 나는 아이디어에 열중하고있어 !!

답변

3

패킷의 내용을 제어 할 수 있습니까? 그렇다면 콘텐츠에 해시를 추가하고이를 사용하여 해싱 노력을 보낸 사람에게 전달합니다. a) 유효 기간을 포함 시켜서 a) 그 시간 이후에 패킷의 기록을 삭제할 수 있다는 것을 알고 b) 공격자가 저장 한 패킷이 그 시간 이후에 쓸모 없게됩니다. 공격자가 타임 스탬프를 업데이트 할 수 없도록 어떤 방법으로 타임 스탬프를 암호화하려고합니다.

다른 기술은 O (n)이 당신의 해시 테이블을 재탕해야하기 때문에 패킷의 해시 테이블이 비쌀 수 있습니다 사용 Wikipedia

1

에서 찾을 수 있습니다.

이 경우 서버와 각 클라이언트 간의 공유 암호를 협상해야합니다. 이 비밀 키 K는 Message Authentication Code을 구성하는 데 사용됩니다. 인증중인 메시지는 UDP 패킷에서 타임 스탬프와 함께 전송하는 데이터 여야합니다. 시퀀스 ID는 UDP 패킷이 도착할 것이라는 보장이 없으며 패킷이 순서없이 도착할 수 있기 때문에 바람직하지 않습니다.

세 방향 핸드 쉐이크 및 시퀀스 ID로 인해이 공격은 TCP에서는 불가능합니다. 이 경우 TCP가 제공하는 보안은 실제로 제안 된 보안 시스템보다 가벼울 수 있습니다.

관련 문제