2011-12-09 4 views
1

모바일 응용 프로그램에서 트래픽을 보안하기위한 몇 가지 옵션을 연구하고 있습니다. 현재 HTTP 요청을 통해 암호화되지 않은 데이터가 서버로 전송됩니다.공용 인터넷을 통해 안전하게 데이터를 전송하는 다른 방법

가장 확실한 옵션은 HTTPS/SSL을 사용하는 것이었지만 모바일 개발자는 여분의 네트워크 트래픽 (SSL 핸드 쉐이크)과 추가 CPU로드로 인해이 작업을 수행하지 않았습니다.

내가 사용할 수있는 유일한 대안은 미리 공유 된 키를 사용하여 핸드 셰이크의 오버 헤드를 우회하는 것입니다. 따라서 표준 HTTP POST를 사용하면 일반 텍스트 API 키를 전송하여 모바일 앱 (HTTP 헤더)을 식별 한 다음 PSK로 POST 데이터를 암호화하고이를 서버로 보냅니다. server'd는 API 키에서 PSK를 검색하고 POST를 해독하며 ​​아마도 올바른 데이터로 보이는지 확인하기 위해 일부 유효성 검사를 수행 한 다음 웹 앱의 해당 컨트롤러로 전달합니다.

이것도 가능한 옵션입니까? 더 나은 (또는 SSL이 아닌) 대안이 있습니까?

모바일 앱은 Blackberry 및 iPhone 용이며 서버 측은 LAMP [php]입니다.

+8

SSL을 사용하지 않는 것은 어리석은 일입니다. – BNL

+1

SSL을 사용하는 대신 자신 만의 SSL을 구현하고 싶습니까? –

답변

4

글쎄,

대략적으로 SSL을 복제하는 것처럼 보입니까? 나는 핸드 쉐이크 루틴, 인증서 등을 의미하지는 않지만, 결국 SSL 핸드 셰이크를 사용하여 일종의 PSK를 만드는 대신 PSK를 사용하여 모든 요청을 앞뒤로 암호화 할 것입니다. 그리고 그것은 당신의 건강에 좋지 않을 수 있습니다.

정말 어떤 일을하는지에 따라 다릅니다. xx 요청에서이 작업을 한 번만 수행하면 보안면에서 좋으며 성능 측면에서 더 좋습니다. 아니면 매우 위험 할 수 있습니다. API 키를 잡거나 위조하거나 요청을 약간 수정하여 보냅니다. 그 때 무엇?

나는 오버 헤드가있는 부분을 보았습니다. (여전히 데이터를 암호화하면 정말 없습니까?)하지만 보안 문제가 있다면 여기 바퀴를 다시 만들려고하지 않을 것입니다. 널리 인정되고 입증 된 표준을 사용하십시오. SSL로 모든 것을 해결할 수는 없지만 중간자 공격 가능성이 있습니다.

결론 : SSL을 다시 구현하거나 복제하는 것은 어렵고 시간이 오래 걸리고 비용이 많이 드는 것은 물론, 처음 시도 할 때 안전하지는 않을 것입니다. 거기에 가지 마시고 SSL을 사용하십시오. 정확히 무엇이 필요합니까?

편집 :이 링크는 SSL 성능과 관련하여 유용 할 수 있습니다 : A Study of the Performance of SSL on PDAs. 그 중에서도 가장 비싼 작업 인 악수는 매번 수행되지 않는다는 것을 알게 될 것입니다.

+0

링크의 추가 정보를 제공해 주셔서 감사합니다. 다른 개발자가 비 SSL 솔루션을 사용하지 못하도록하는 데 충분한 정보가되기를 바랍니다. – hafichuk

0

공개 키/개인 키 Encrpytion을 구현하려는 것 같습니다.

가장 좋은 제안은 SSL 또는 적어도 OpenSSL libraries을 사용하는 것입니다. 매우 큰 정수 수학을 처리하기 위해 자신의 메서드를 작성해야하므로 직접 구현하는 것이 훨씬 더 어려울 것입니다.

3

a very similar question이 며칠 전에 Security.SE로 마이그레이션되었습니다.

  • SSL/TLS로 얻을 수있는 핸드 셰이크 오버 헤드가 자신의 프로토콜 오버 헤드 이상이라고 생각합니까?
  • PSK with TLS을 사용할 수 있습니다.
  • 환경이 사전 공유 키 사용에 적합한가요? (즉, 모바일 응용 프로그램의 각 인스턴스 내에서 비밀리에 키를 쉽게 공유 할 수 있습니까?)

SSL/TLS의 대안을 생각해 내기 전에 발생한 실제 오버 헤드를 측정하고 새로운 솔루션이 어쨌든 동일한 오버 헤드로 고통 받을지 고려하십시오. 균형이 맞지 않을 수도 있습니다. SSL/TLS만큼 안전한 솔루션을 생각해 내지 못할 것입니다.

관련 문제