2014-05-19 2 views
1

내 사이트에 대해 매우 기본적인 REST API를 구축 중입니다. 내가 사용하는 유일한 동사는 GET으로 내 사이트의 게시물 목록을 출력합니다. 인증의REST API에 대한 기본 HMAC 인증 시스템을 안전하게 구현 했습니까?

, 나는이 문서 HMAC에 대해 특히 독서 한 다음 '내용을 해시'무엇 주위

http://websec.io/2013/02/14/API-Authentication-Public-Private-Hashes.html

내 질문 센터해야합니다. API에 데이터를 게시하지 않으므로 개인 키를 사용하여 공개 키를 해싱했습니다.

안전한 방법입니까, 아니면 다른 '콘텐츠 해시'를 사용해야합니까? 데이터는 어떤 방식 으로든 민감하지 않습니다 - 이것은 단지 학습 과제였습니다.

답변

0

"재생 공격자"를 고려해야합니다. 공격자가 API 클라이언트와 서버 사이의 패킷을 캡처하면 나중에 재생할 때 어떤 피해를 줄 수 있습니까?

사용자가 HMAC에서 사용자의 API 키만 사용하는 경우 공격자는 요청을 재생할 때 해당 사용자를 가장 할 수 있습니다. 그녀는 API 요청을 호출하고 캡처 한대로 HMAC를 설정하여 유효성을 검사합니다.

요청의 매개 변수가 포함되어 있지 않으면 공격자는 요청을 호출하고 자신의 매개 변수를 지정할 수 있습니다. 따라서 매개 변수가 HMAC에도 포함되는 경우 더 좋습니다. 그러나 이러한 특정 매개 변수를 사용하여 요청을 재생할 수는 없습니다.

요청 및 HMAC에 타임 스탬프 매개 변수를 포함 할 수 있습니다. 서버는 전달 된 타임 스탬프를 포함하여 HMAC를 다시 계산하고, 타임 스탬프가 충분히 최근인지 확인합니다. 공격자가 허공에서 새 HMAC를 위조 할 수 없으므로 연령에 따라 거부 할 일치하는 타임 스탬프가있는 HMAC를 사용할 수 있습니다.