문제

대본:

내가 완전히 제어 할 수있는 공개적으로 사용 가능한 웹 서비스. 그러나이 특정 데스크톱 응용 프로그램 (내 게시 된 응용 프로그램) 만 웹 서비스에 액세스 할 수 있기를 원합니다. 데스크탑 클라이언트에 비밀 비밀번호를 저장할 수는 있지만 쉽게 갈라지기 쉽습니다.

이것을 시행하는 알려진 구현이 있습니까? PKI, 암살 키?

도움이 되었습니까?

해결책

대중 이이 데스크탑 앱의 사본에 액세스 할 수 있다면, 좋은 리버 셔는이를 크래킹하고 서버와의 거래를 "모방"할 수 있습니다. 암호화가 얼마나 안전한지는 중요하지 않으며, 앱이 데이터를 암호화/해독하는 데 필요한 모든 것이 바이너리에 포함되어 있으므로 크래커는이를 파악하면됩니다.

암호화의 목적은 데이터를 "중간 인"해커로부터 전송하는 동안 데이터를 보호하는 것입니다. 그러나 동료들에게 액세스 할 수 있다면 쉽게 갈라질 수 있습니다.

서버는 클라이언트 측에서 오는 것을 결코 믿지 않아야합니다.

재개 편집

서버에 대한 고객이 앱 또는 Thirdies가 만든 "에뮬레이터"가 아닌 것으로 추정되는 클라이언트를 100% 보장 할 수는 없지만, 물건을 복잡하게 할 수 있습니다. 게임 방지에서의 일반적인 관행은 때때로 무작위로 클라이언트 앱을 "Main.exe의 해시는 무엇을 오프셋에서 오프셋 B에서 오프셋 하는가"와 같은 트릭 질문으로 만듭니다. 또는 "지금부터 패킷 타입 0x07 패킷 유형 0x5f와 스왑". 가짜가 감지되면 서버는 "어리석은 모드"로 들어가고 오작동을 수행하고 몇 시간 동안 IP/계정을 블랙리스트하여 프로그램이 무엇인지 확인할 수 없습니다.

누군가가 에뮬레이터를 구축하는 사람을 감지하면 다시 시작하게하십시오. 패킷 유형 테이블, 암호화 테이블을 뒤에서 뒤에서 뒤죽발을 잡고 패킷 형식을 변경하고 고객이 업데이트하도록 강요하십시오. 당신은 크래커가 잠시 동안 당신을 괴롭히는 것을 보지 못할 것입니다 ... ㅋㅋ

다른 팁

WS-Security X509 암호화를 제공합니다.

이 구현의 일부는 특정 클라이언트에게 생성 된 공개 키만 제공 할 가능성이 포함됩니다. 그렇게하면 선택한 클라이언트 만 서비스에 연결할 수 있습니다.

가장 쉬운 방법은 클라이언트 및 서버 인증서를 사용한 메시지 보안입니다. 가장 좋은 방법은 서버 시스템에서 클라이언트 CERT를 가져오고 app.config 파일의 클라이언트 인증 썸 프린트를 하드 코드하는 것입니다. 다른 방법은 내가 전에 시도하지 않은 CERT의 협상입니다.

IIS를 사용하여 서비스를 호스팅하는 경우 SSL을 사용하여 클라이언트 인증서도 다른 옵션입니다.

MSDN 링크 on WCF 보안.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top