2009-05-01 3 views
0

Java SE에서 SSL을 비정상적인 방식으로 사용해야하는 경우가 있습니다.Java SSL 재협상 (SSL에서 채널 지우기)

  • 는 SSL 세션을 설정;
    필요한 단계는 무엇인가 같은 것
  • 일부 개인 정보를 교환하십시오.
  • 암호화 작업 사용을 중단하려면 연결 매개 변수를 다시 협상하십시오.

Java API에서이 방법을 찾을 수 없습니다. 나는 문제 해결이 어떻게 세션 재협상을 사용하지만 암호 연산이없는 암호 모음으로 해결 될 수 있다고 생각하지만 그러한 옵션은 없다. 또는 언더 링 소켓에 액세스하여 암호화 작업을 우회 할 수 있습니다.

이러한 옵션이 있습니까? 이러한 기능을 다른 언어 및 프레임 워크 (C, PHP, Ruby, .NET, Perl, Python 등)에서도 사용할 수 있다고 생각하십니까? 도움을

감사합니다,
루이스 M. 코스타

답변

3

당신은 자바 같은 것을 할 수 있지만 확실히 표준이 아니다. 나는 이것을 지원하는 다른 플랫폼을 보증 할 수 없다.

JSSE는 SSLEngine과 함께 전송 독립적 인 SSL을 지원합니다. 이것을 사용하여 SSL로 소켓을 임시로 "장식"한 다음, 완료되면 원시 소켓 IO를 직접 사용할 수 있습니다.

SSL 세션을 협상하는 비용을 지불 한 후에 SSL을 해제하려는 이유를 추측 할 수 없습니다. 성능 향상을 위해서라면 양 당사자가 허용하는 한 "NULL"기밀성 및 무결성 프로토콜을 사용하도록 암호 제품군을 재협상 할 수 있습니다. SSL 레코드 계층에는 여전히 약간의 오버 헤드가 있습니다. 그러나 세션 매개 변수가 협상 된 후에 SSL의 오버 헤드가 매우 낮습니다. 애플리케이션이이 오버 헤드에 민감한 경우 전용 SSL 하드웨어를 고려할 수 있습니다.

+0

나는 SSL의 실제 오버 헤드가 모두 협상에 있다는 것을 강조하고 동의해야한다. 링크를 통해 이동하는 실제 데이터에서 대칭 암호화/암호 해독을 수행하는 데는 거의 작업이 필요하지 않습니다. –

1

왜 연결을 끊고 다시 연결하면 안됩니까? SSL 재협상시 TCP 연결 설정시 오버 헤드가 줄어 듭니다.

2

기존 소켓에서 SSL을 해제하는 한 가지 이유는 FTP CLS (Clear Control Channel) 명령 (TLS를 통한 FTP)을 구현하기위한 것입니다. 이렇게하면 방화벽이 동적 포트 요청을 볼 수 있도록 제어 채널이 일반 텍스트로 다시 전환됩니다.

+0

나는 이것에 대해 들어 본 적이 없다. 이 예제를 지적 해 주셔서 감사합니다. – erickson

0

투명 암호를 재협상하기 위해서는 기본적으로 활성화되어 있지 않으므로 최소한 활성화해야합니다. 하지만 거기에 좋은 "null"암호가 없다고 생각하고 기본 소켓에서 SSL 소켓을 분리하는 것이 좋습니다.

SSLEngine#setEnabledCipherSuites(new String(){"SSL_RSA_WITH_NULL_SHA"}); 
SSLEngine#beginHandshake();