누가 그것을하고 있는지 알면서 REST 요청을 보호해야합니다. HMAC 방법을 알고 있지만 클라이언트 개인 키를 내 서버에 저장하지 않는 것이 좋습니다. 이것은 나의 접근 방식 : 클라이언트는 개인 키를 저장 공개 키 공유 만 안전합니까?
- 서버가 클라이언트 서버가 클라이언트에 개인 키와 클라이언트 ID를 전송
- 을위한 개인 및 공개 키를 생성
- SERVER는 공용 클라이언트 키만 저장합니다.
- 클라이언트는 클라이언트 ID를 개인 키 (ecryptedData)로 암호화하여 RESTful 요청을 만들고 클라이언트 ID : encryptedData 쌍을 SERVER에 보냅니다.
- SERVER는 다음과 같습니다. f 또는 지정된 클라이언트 ID의 공개 키를 암호화하고 encryptedData를 암호 해독합니다.
- SERVER는 해독 된 데이터에 동일한 클라이언트 ID가 포함되어 있는지 확인합니다. 클라이언트 ID가 같으면 SERVER는 송신자를 신뢰하고 그렇지 않으면 요청을 거부합니다.
아마도이 방법은 이미 있지만 잘 모르겠습니다.
이 방법은 안전합니까? (-> 서버 클라이언트) 내가 사용할 수 있습니다, 난 단지 그가 단방향 통신에 보내는 일에 대해 보낸 사람과 아닌 사람을 걱정하는 경우
:
편집
나는 질문을 재구성 RSA는 이런 식으로?
ONE TIME
- 서버는
- 서버는 클라이언트의 공개 키 (키가 stolen..it의 공개 내가 만약이 문제가되지 않습니다!)
- 를 클라이언트에 대한 RSA 쌍의 키를 생성 서버는 클라이언트 동안 클라이언트
에 대한 클라이언트 개인 키 전송 -> 서버 통신을
- 클라이언트는 자신의 개인 키로 알려진 단어 + 타임 스탬프 (재생 공격을 방지하기 위해)를 암호화합니다. SIGNATURE = 암호화 (RSA, 'FOO : 1234234')
- CLIENT는 API KEY와 singular ex를 사용하여 메시지를 전송합니다. 54545345 : 서명
- 서버에 대한 주요 주어진 API의 공개 키를 조회
- 서버는
- 서버가 알려진 단어 FOO의 정확성 및
- 서버가 거부 타임 스탬프를 확인하여 발견 된 공개 키를 사용하여 메시지를 해독 이전 단계가 실패한 경우의 메시지
이 방법이 안전합니까?
고맙습니다.
aGO!
잘못된 스키마입니다. 서버가 자신의 Private/Public Keys (RSA 어쩌면)를 생성하고 공개 키를 공유하게하십시오. 당신의 REST 서비스를 누가 호출하고 있는지 알고 싶다면 서명 알고리즘 (El Gamal-RSA Signature)을 시도해보십시오. –
왜 나쁜 스키마입니까? HMAC 방법도 클라이언트에 개인 키를 보냅니다. – aGO
200 클라이언트, 생성하는 200 가지 HMAC 키를 가정하고 서버가 보낸 사람을 신뢰하기 전에 모든 메시지를 암호 해독해야합니다. 엘 가말 (El Gamal)을 사용하면 서버가 키 커플 만 생성하고 모든 클라이언트는 자체 페어를 생성 할 수 있습니다 (필요한 경우). 따라서 수신자는 발신자 신원이 메시지의 서명 (전체 메시지가 아닌)을 확인해야합니다. POST/GET/PUT verb를 사용하는 경우이 스키마가 필요합니다. 단방향 통신의 경우 RSA로 충분합니다. –