클라이언트 Android 앱에서 PHP를 실행하는 웹 서버로 데이터를 전송하기위한 보안 시스템을 구축하려고합니다.특정 앱/엔드 포인트에서 메시지가 전달되었는지 확인
내가하고 싶은 일은 시스템이 암호로 보호되어있어 앱의 메시지가 실제로 앱 자체에서 확인 될 수 있도록하는 것입니다. 사용자 정의 스크립트 또는 cURL을 사용하여 시스템을 게임 할 수 있습니다.
예를 들어, 검증 이런 종류의 사용 사례가 있습니다 : -
응용 프로그램은 당신이 통계를 수집하는에서 고라 포함되어있는 경우, 당신은 클릭 데이터가 있는지 확인 할 것 API를 알아 내고 더미 데이터를 보내는 악의적 인 사용자가 아닌 앱에서 전송됩니다.
앱에 객관식 설문 조사가있을 수 있으며 다시 설문 조사 결과가 앱에서 수집되고 있는지 확인하고 싶을 수 있습니다.
앱이 GPS 추적을 수집하고 있으며 앱에서 데이터가 전송되고 있는지 확인하고자합니다. 이러한 각각의 경우에
일부 아이디어는 내가 생각했습니다 -
SSL이 - (요구 사항의 일부를 충족하는) 채널을 확보하고 변조 방지를 위해 잘 작동하지만 여전히의 소스의 무결성을 보장 할 수 없습니다 자료.
공개 키 암호화 - 클라이언트 응용 프로그램은 개인 키로 데이터를 암호화 한 다음 해독 할 수있는 서버로 전송할 수 있습니다. 문제는 앱 내에서 개인 키를 하드 코딩해야한다는 것입니다. 앱을 디 컴파일하고 개인 키를 추출한 다음 가짜 데이터를 보내는 데 사용할 수 있습니다.
집에서 만든 알고리즘 - 즉하지 훌륭한 솔루션 - 이와 매우 비슷한 질문이 솔루션은 때까지 작동 here을 요청한다 "는 누군가가 당신의 알고리즘을 이해한다!"
Hash chain -이 클라이언트에서 서버로 각 데이터 페이로드를 확인 한 번 키를 사용하는 정말 흥미로운 방법처럼 보였다하지만, 암호가 여전히 필요하기 때문에 다시는 그 자체가 디 컴파일되지 않는 응용 프로그램에 의존 앱에 의해 저장됩니다. 암호화의
내 제한된 지식은 나에게 우리가 최종 클라이언트 또는 채널을 신뢰할 수없는 경우 때문에, 이러한 방식으로 완전히 검증 될 시스템을 구축하는 이론적 실제로 불가능하다고 생각하게하고있다 어떤 신뢰를 기반으로 할 것인가 ... 그러나 아마도 내가 간과해온 것이있을 것입니다!
거래를 식별하기 위해 서버에서 생성 한 [nonce] (http://en.wikipedia.org/wiki/Cryptographic_nonce)는 어떻게 사용합니까? GCM 또는 무언가를 사용하여 기기에서만 nonce를 수신 할 수 있는지 확인하십시오. –
GCM을 참여시키는 것은 좋지 않지만, Android 앱을 통한 GCM 메시지 수신 이외의 다른 방법은 없다고 가정하고 있습니다 ... 아마도 (나도 몰라). 어느 쪽이든 플랫폼 별 기술에 의존하지 않는 솔루션 (있는 경우)을 제안 할 수 있다면 좋을 것입니다. –
아마도 security.stackexchange.com을 사용해 보시기 바랍니다. 나는 암호 전문가가 아니지만 그곳에는 많은 것들이있다. –