2015-01-25 6 views
4

외부 웹 사이트에서 POST 요청을 제출할 수있는 API 끝점이 있습니다. 요청이 본격이고 또한 변조되지 않았으므로 가장 좋은 방법은 무엇입니까? 따라서 무결성의 원칙을 존중합니까?HTTP 요청의 신뢰성 및 무결성

데이터는 신용 카드 정보와 같이 중요하지 않으므로 HTTPS 통합은 필요하지 않습니다.

HMAC와 디지털 서명을 모두 살펴 봤는데 두 번째 옵션이 더 좋을 것이라고 생각합니다. 그러나 이것이 갈 길이 확실한가요?

마찬가지로 요청을 해싱하고 내 서버에서 확인하면 충분합니까?

답변

1

HMAC 및 디지털 모두 서명은 무결성 및 인증을 제공합니다

  • 무결성 - 둘 다 해시를 기반으로하기 때문이다. HMAC는 해시 기반 메시지 인증 코드입니다. 디지털 서명은 해시 일부 메시지로 암호화됩니다.
  • 인증 - HMAC이 대칭 비밀 키를 사용하고 디지털 서명이 비대칭 개인 키를 사용하기 때문에 인증. 비밀/개인 키는 인증을 알고있는 사람 만 사용할 수 있습니다. HMAC - 수신자의 수신자 측에서 비밀/비공개 키를 확인하는 것은 우리가 이것을 대칭이라고 부르는 이유를 알고 있습니다. 디지털 서명에서 수신자 측의 비밀/개인 키 확인 - 수신자는 신뢰할 수있는 제 3 자에서 확인할 수있는 공개 인증서도 가져옵니다.

주요 차이점 - HMAC 메시지 타사, 유효성을 검사 할 수 있습니다 비밀을 알고있는 유일한 사람에 의해 검증/확인할 수 없습니다/메시지를 인증합니다. 디지털 서명 된 메시지는 공개 인증서가 있고 누구나 첨부 된 공개 키가있는 메시지를 해독하고, 해시를 계산하고, 신뢰할 수있는 특수한 쪽에서 공개 키를 확인함으로써 메시지 소유자을 확인할 수 있습니다.

결론 - 누군가 메시지가 실제로 발신인에게 속하는지 확인할 수있는 사람이 필요하지 않은 경우 HMAC를 사용하십시오.

마찬가지로 요청을 해싱하고 내 서버에서 확인하는 것으로 충분합니까?

아니요. Man-in-the-middle은 메시지를 수정하고 수정 된 메시지의 해시를 첨부 할 수 있습니다. 해싱은 메시지 수정이 해시를 변경하지만 해커가 해쉬 평등에 대해 걱정하지 않는다는 것을 의미하는 무결성을 제공합니다. 그는 단순히 메시지를 내용과 해시로 완전히 대체합니다! HMAC와 같은 일부 비밀 용도는 이러한 메시지 대체를 방지합니다. 중간자는 여전히 메시지를 변경할 수 있지만 해시를 재 계산할 수는 없습니다. 왜냐하면 그는 비밀을 모르기 때문입니다.