2013-02-25 15 views
1

보안 관련 응용 프로그램을 개발했습니다. 나는 TEA 기반 알고리즘을 사용하여 서버와 통신하고 서버 프로토콜을 따르기 위해 데이터를 암호화/해독해야했습니다. 나는 CFNetwork API를 사용하는 trasport 레벨 통신에 AsyncSocket을 사용했습니다. 나는 TEA 알고리즘이 매우 안전하지 않으며 쉽게 해킹 될 수 있다는 것을 알아 챘다. 또한 AsyncSocket 라이브러리는 어디서나 Apple의 Security Framework을 사용하지 않습니다. 전송 계층을 다시 작성하고 클라이언트 - 서버 보안 프로토콜을 다시 정의 할 계획입니다. 필자는 성능에 영향을 미치지 않거나 최소한의 영향을 미치고 중단하기 어려운 데이터 보호를 위해 어떤 종류의 보안 알고리즘을 사용해야하는지 연구했습니다. 또한 보안 프레임 워크를 살펴 보지만이 프레임 워크를 사용하여 전송 계층을 구현하는 예제를 찾을 수 없습니다. 누군가 이걸 도와 주시겠습니까? 보안 전송 계층을 코딩하기 위해 따라야 할 사항은 무엇입니까? 내 앱에 대해 확인할 수있는 보안 조치는 무엇입니까?보안 프레임 워크를 사용하여 보안 전송 수준 작성

+0

안전 ** ** 무엇 **? – SLaks

+2

그냥 SSL/TLS를 사용하는 것이 어떻습니까? 확실히 당신이 생각 나게하는 것보다 훨씬 낫습니다. – CodesInChaos

+0

@SLaks 이것을 지적 해 주셔서 감사합니다. 나는 완전히 기간 데이터 보호를 놓쳤다! 내 앱과 서버 간의 통신을 A 등급 보안으로 설정하고 싶습니다. 앱 간 데이터 교환. 나는 키를 사용하여 응용 프로그램에서 암호화 된 데이터를 암호화하고 매우 중요한 솔루션으로 보이지 않는 서버 측에서 동일한 키를 사용하는 차를 사용하고 있습니다. – applefreak

답변

1

@CodesInChaos 메모 에서처럼이 경우 TLS를 사용해야합니다. 새로운 전송 프로토콜을 설계하거나 구현해서는 안됩니다.

CFNetwork가 TLS를 지원한다고해서 실제로 사용하고 있다는 의미는 아닙니다. 당신은 그것을 적극적으로 사용해야합니다. 서버는 클라이언트가 신뢰하는 인증서가 필요하며 TLS 세션을 협상해야합니다. 일반적으로 HTTPS와 표준 NSURLConnection 루틴을 사용한다면 무료로 필요한 것 대부분을 얻을 수 있습니다. 그러나 CFNetwork에 수동으로 빌드를 시작하는 경우 올바르게 구성해야합니다. 가능할 때마다 HTTPS를 사용하는 것이 좋습니다. 간단하고 다양한 문제를 해결할 수 있습니다.

즉, 전송이 안전하다고해서 앱이 "충분히 안전하다"는 의미는 아닙니다. 특히, 서버는 보안 전송을 통해 대화하는 악의적 인 클라이언트를 처리 할 수 ​​있어야합니다. 사용자를 적절하게 인증해야하며 악성 데이터를 정상적으로 처리해야합니다. 데이터가 서버에 도달하면 안전하게 저장해야합니다. 클라이언트에서 데이터를 암호화해야 할 수도 있습니다. 전송을 넘어서 시스템을 보호하는 데에는 많은 측면이 있습니다.

+0

감사합니다. @Rob. +1 "적극적으로 사용해야합니다." - 코드는 이미 오래 전에 작성되었으며 우리는 HTTPS 또는 TLS 인증서를 사용하지 않습니다. 응용 프로그램은 내가 걱정하지 않는 중요하지 않은 데이터에 대해 HTTP URL 연결을 사용합니다. AsyncSocket 라이브러리를 사용하여 CFNetwork TCP 소켓 (지정된 IP 및 포트)을 사용하여 서버와 통신합니다. TLS를 사용하는 곳은 없습니다. CFStream을 사용하여 소켓에 민감한 데이터를 쓰기 바로 전에 우리는 TEA를 사용하여 앞서 언급 한대로 암호화합니다. 구현이 확실하다는 것을 제안 해 주시겠습니까? TLS를 사용해야합니까? 확인해야 할 다른 보안 조치가 있습니까? – applefreak

+0

거의 확실하게 TLS를 사용해야합니다. 수백 가지가 아니라해도 수십 가지의 보안 조치를 구현할 수 있습니다. 특정 제품에 대한 자세한 정보가 없어도 설계 및 구현에 대한 액세스가 없으므로이 질문에 답할 방법이 없습니다. 그러나 시작으로, 예, 인증서 확인과 함께 TLS를 거의 사용해야합니다. "중요하지 않은"데이터에 HTTP를 사용하면 여전히 중요한 보안 허점이 생길 수 있습니다. 예를 들어, 잘못된 서버의 지시를 받아들이도록 속일 수 있습니다. 특정 프로토콜과 프로젝트에 따라 다릅니다. –

+0

감사합니다. Rob. 나는 우리의 보안 조치 요구 사항을 더 자세히 살펴볼 필요가있다. 데이터 보호 및 데이터 소스 식별은 각각 좋은 암호화 알고리즘과 TLS를 사용하여 해결됩니다. – applefreak