2017-10-10 11 views
0

클라이언트에서 nonce를 생성 한 다음 공유 암호로 서명하는 것이 보안 문제입니까?클라이언트에서 생성 된 nonce가 덜 안전합니까?

서버 A와 B가 통신합니다. 둘 다 공유 비밀 "$ ECRET"을 알고 있습니다.

서버 A는 UUID를 넌스로 생성하고 비밀을 사용하여 나머지 페이로드와 함께 서명합니다.

그런 다음 공유 키를 사용하여 요청의 유효성을 확인하는 요청을 서버 B로 보냅니다. B는 또한 nonce를 DB에 저장하고 기존 nonce와 비교하여 재생 공격을 방지합니다.

서버 B가 별도로 요청하여 제공하는 nonce에 비해 안전하지 않다고 들었습니다.

그러나 비밀이 강하다고 가정 할 때 이것이 훨씬 더 안전하다고 나는 생각하지 않습니다.

답변

0

클라이언트 논스 (client nonce)라는 것이 있고 서버 논스 (Server Nonce)라고하는 것이 있습니다. 사용 방법에 따라 다릅니다. 클라이언트 넌스는 클라이언트를 재생 공격 (실제로 "서버"는 공격자가되어 공격하려는 모든 클라이언트에게 동일한 챌린지를 보냅니다)로부터 클라이언트를 보호합니다.

그러나 nonce를 별도로 요청할 필요는 없지만 핸드 쉐이크의 일부가 될 수 있습니다.

nonce (클라이언트와 서버 모두)의 사용법에 대한 자세한 설명은 Security.StackExchange Answer