2015-01-24 2 views
0

요청 내용을 암호화하여 WebAPI 요청을 통해 원시 데이터를 보내지 못하도록 견인 방식의 암호화를 구현해야합니다.양방향 요청 데이터 암호화를 수행하는 가장 좋은 방법

asp.net 웹 API에서 높은 비율의 요청을 암호화하는 데 좋은 암호화 알고리즘과이를 구현하는 방법은 무엇입니까?

+0

"로 CW 암호화"? "하이웨이 암호화"와 비교했을 때? 시도하고 TLS를 사용하십시오. –

답변

0

쉬운 코딩 방법 중 하나는 HTTP 대신 HTTPS를 사용하는 것입니다.

+0

MiTM 도구의 확산을 고려하면 더 이상 안전하지 않을 수 있습니다. – zaitsman

0

가장 좋은 방법은 주로 의견의 문제 일 것이지만 표준 디자인은 다음과 같습니다. 클라이언트 (호출하는 것) 측에서 개인 키로 클라이언트 인증서를 가져옵니다. 클라이언트는 서버 웹 사이트 인증서의 공개 키를 가져옵니다. 클라이언트는 서버 암호화 인증서의 공개 키를 가져옵니다.

서버 (호출을받는 것)는 클라이언트 인증서 공개 키를 가져옵니다. 서버가 웹 사이트 인증서의 개인 키와 공개 키를 가져옵니다 (IIS에서 바인딩 됨). 서버가 서버 암호화 인증서의 개인 키를 가져옵니다.

코드에서 서버의 정확한 (지문) 및 유효성 (논리 또는 X509Certificate2 확인)이 있지만 CRL/OCSP (성능에 신경 쓰는 경우)에주의하여 요청의 유효성을 검사합니다.

클라이언트에서 서버 웹 사이트 인증서의 유효성을 검사합니다 (다시 엄지 손가락 더하기 확인).

그런 다음 클라이언트에서 페이로드를 보내기 전에 마지막 단계로 서버 암호화 인증서의 공개 키를 사용하여 PKCS7 봉투에 메시지를 첨부하십시오. 서버에서 ActionFilterAttribute (클리너로 사용) 또는 리팩터 동작을 추가하여 문자열을 수신하고 (절차가 더 복잡함) 서버 암호화 인증서의 개인 키를 사용하여 메시지의 랩을 해제하십시오. 응답의 마지막 단계에서 클라이언트 인증서의 공개 키를 사용하여 PKCS7 봉투에 메시지를 전달합니다.

정말 열정적이라면 다른 인증서로 메시지에 서명 할 수도 있지만 그 메시지는 사실 모호합니다.

이렇게하면 두 시스템의 개인 키에 액세스하지 않고도 채팅을 완전히 해독 할 수 없습니다.

관련 문제