2011-08-27 5 views
0

Java 응용 프로그램과 상호 작용할 PHP 스크립트를 만들려고합니다. 그들은 몇 가지 정보를 공유 할 것이므로 SSL 인증서가있는 것 외에도 가능한 한 안전한 것으로 만들기 위해 전달되는 데이터를 암호화하고 싶습니다. 그러나 내 웹 사이트가 JustHost의 공유 서버에만 있기 때문에 'mcrypt'PHP 모듈을 사용할 수 없다는 것을 알고 있으므로 어떻게해야하는지 잘 모르겠습니다. 따라서 Java 응용 프로그램과 PHP 스크립트는 전송되는 데이터를 암호화하고 수신되는 데이터를 해독 할 수 있습니다!PHP와 Java 간의 암호화 및 해독

+3

표준 암호화 시스템 (예 : RSA)을 사용하고 PHP 및 Java에서 해당 구현을 사용하는 이유는 무엇입니까? 예 : http://pear.php.net/package/Crypt_RSA 및 http://www.javamex.com/tutorials/cryptography/rsa_encryption.shtml? –

+0

@Rafael : mcrypt가 옵션이 아닌 경우 Crypt_RSA가되지 않을 가능성이 있습니다 (외부 모듈에 대한 종속성도 있음). BTW, RSA는 데이터 암호화에 사용되어서는 안되며, 대신 공통의 비밀 키를 핸드 셰이크하고 협상해야합니다. –

+0

@Andy : 이미 SSL을 사용하여 응용 프로그램간에 통신하고 있습니까? 그렇다면 왜 추가 암호화 레이어를 추가하겠습니까? SSL 만 있으면 충분합니다. –

답변

1

Java와 PHP 간의 SSL 대화는 전송 중 데이터를 보호합니다. 개인 키를 강력한 암호 (10 개 이상의 기호)로 적절히 보호하고 알고리즘을 강하게 만들어서 아무도 대화를 기웃 거리며 스톱핑 할 수 없도록해야합니다.

SSL 대화를 통해 데이터를 보내기 전에 데이터를 암호화하여 추가 보호를받을 수 없습니다. 실제로 데이터를 암호화하기 위해서는 대칭 암호화를 선택해야하는 경우 일부 키를 공유해야하기 때문에 실제로 보안이 약화 될 수 있습니다. 또한 비밀 키를 거래함으로써 SSL이 제공하는 많은 보호를 취소 할 수 있습니다. SSL의 큰 이점은 비밀 키에 동의하지 않고도 데이터를 암호화 할 수 있기 때문입니다. 암호화 된 텍스트를 얻으려고하면 SSL을 깨는 것보다 대칭 암호화 키를 찾는 것이 더 쉽기 때문에 클라이언트를 공격합니다. 비대칭 암호화를 사용할 수는 있지만 기본적으로 SSL을 다시 발명하게됩니다.

저는 SSL 대화가 확실한지 확인하는 데 중점을 둡니다. 가장 강력한 대칭 암호화 만 사용하십시오 : 서버가 지원할 경우 TripleDES, IDEA, AES. 약한 알고리즘을 사용하여 대화에서 약한 암호화를 사용할 수 없습니다. 1024 + 공개 키/개인 키 쌍을 생성하십시오. 공유 서버에서는 항상 쉬운 것은 아니지만 Java 응용 프로그램은 TripleDES, IDEA 및 AES 만 사용할 수 있습니다.

잘못된 서비스와 통신하지 않도록 클라이언트 측에서 서버 인증서의 유효성을 검사해야합니다. 기본적으로 서버 인증서를 가져 와서 클라이언트에 사용 된 키 저장소에 추가하는 것을 의미합니다. Java의 경우, keytool를 사용해 증명서를 임포트 해, 그 키스트 아를 SSL 대화의 TrustManager/KeyManager로서 사용할 수 있습니다.

SSL 대화를 통해 데이터를 암호화 한 다음 암호화하려는 경우 서버에서만 암호화/해독 할 수 있습니다. 그러나 여전히 핵심 관리 문제가 있습니다. 암호화/해독하는 경우 서버의 보안 키를 어떻게 보호 할 계획입니까? 그것은 항상 간단한 대답이없는 추악한 문제입니다.

+0

왜 AES에 대한 사랑이 없습니까? – NullUserException

+0

네가 맞다 AES가 가장 좋겠지 만 아파치가 상자를 지원한다고 생각하지 않는다. 그것을 언급 주셔서 감사합니다. 나는 그것을 위해 답변에 추가했습니다. – chubbsondubs

+0

@chubbard : 지연된 답장을 보내 주셔서 감사 드리며 답변 해 주셔서 대단히 감사합니다. 이제 SSL 인증서의 보안을 위해 해결하게 될 것입니다. 다른 암호화 계층을 추가하여 SSL을 실제로 손상시킬 수 있다고 경고 해 주셔서 대단히 기쁩니다. 특히 내가 최선의 시점에 PHP에서 전문가가 아닌 것처럼 보입니다! 또한 Java 응용 프로그램에 인증서를 가져 오는 것에 대해 나에게 알려주었습니다.이 기술은 내가해야 할 일을 잘 모르고 있었고, 확실히 살펴볼 것입니다. 그래서 그 점에 대해서도 감사드립니다! (저는 방금 간단하다고 생각했습니다. https가 http가 아닌 https를 사용하는 경우) – Andy