SSL이 부과하는 오버 헤드는 얼마입니까?
나는 단단하고 빠른 대답이 없다는 것을 알고 있지만 SSL과 암호화되지 않은 소켓 통신의 암호화 오버 헤드에 대한 일반적인
크기 순서 추정치가
있습니까? 나는 응용 프로그램 수준 처리를 계산하지 않고 통신 처리 및 연결 시간에 대해서만 이야기하고 있습니다.
최신 정보
이 HTTPS HTTP 대에 대한 질문은 ,하지만 난이 스택의 낮은 찾고에 관심이 있어요.
(나는 피하기 혼란 문구 "크기의 순서를"대체 내가 오히려 형식적인 CompSci 감각보다 비공식적 인 용어로 사용되었다 물론 나는 경우. 했다 공식적으로 의미, 진정한 괴짜로 나는 생각 바이너리하고 아닌 것 십진수! ;-)
최신 정보
의견의 요청에 따라 지속적인 연결을 통해 적절한 크기의 메시지 (1k-10k 범위)에 대해 이야기한다고 가정합니다. 따라서 연결 설정 및 패킷 오버 헤드는 중요한 문제가 아닙니다.
차수 : 0
다시 말해, TLS를 추가 할 때 처리량이 절반으로 줄어드는 것을 볼 수 없습니다. 받는 답변 "중복"질문 응용 프로그램의 성능에 크게 초점, 어떻게 그 SSL 오버 헤드를 비교합니다. 이 질문은 특별히 응용 프로그램 처리를 제외하고 비 SSL과 SSL 만 비교하려고합니다. 최적화 할 때 성능에 대한 전체적인 관점을 취하는 것이 이치에 맞지만이 질문이 요구하는 것은 아닙니다.
SSL의 주요 오버 헤드는 핸드 셰이크입니다. 비싼 비대칭 암호화가 발생하는 곳입니다. 협상 후에는 비교적 효율적인 대칭 암호가 사용됩니다. 따라서 많은 연결이 이루어지는 HTTPS 서비스에 SSL 세션을 활성화하는 것이 매우 도움이 될 수 있습니다. 오래 지속되는 연결의 경우이 "종료 효과"는 그다지 중요하지 않으며 세션은 유용하지 않습니다.
여기 재미있는 일화. Google이 Gmail을 HTTPS를 사용하도록 전환했을 때 추가 리소스가 필요하지 않았습니다. 네트워크 하드웨어도없고 새로운 호스트도 없습니다. CPU로드 만 약 1 % 증가했습니다.
두 번째 @erickson : 순수한 데이터 전송 속도 페널티는 무시할 만합니다. 최신 CPU는 수백 MBit / s의 암호화 / AES 처리량에 도달합니다. 따라서 리소스가 제한된 시스템 (휴대폰)을 사용하지 않는 한 TLS / SSL은 데이터를 슬링하는 데 충분히 빠릅니다.
그러나 암호화로 인해 캐싱 및로드 밸런싱이 훨씬 더 어려워집니다. 이로 인해 성능이 크게 저하 될 수 있습니다.
그러나 연결 설정은 실제로 많은 응용 프로그램의 쇼 스토퍼입니다. 대역폭이 낮고 패킷 손실이 높으며 대기 시간이 긴 연결 (시골의 모바일 장치)에서 TLS에 필요한 추가 왕복 시간으로 인해 속도가 느려질 수 없습니다.
예를 들어, 일부 내부 웹 앱에 액세스하기 위해 암호화 요구 사항을 제거해야했습니다.
연결 설정을 계산하지 않는다고 가정하면 (업데이트에 표시된대로) 선택한 암호에 따라 크게 달라집니다. 대역폭 측면에서 네트워크 오버 헤드는 무시할 수 있습니다. CPU 오버 헤드는 암호화에 의해 좌우됩니다. 모바일 Core i5에서는 단일 코어에서 RC4를 사용하여 초당 약 250MB를 암호화 할 수 있습니다.
(RC4는 최대 성능을 위해 선택해야합니다.)
AES 속도가 느려서 "50MB / s"만 제공합니다. 따라서 올바른 암호를 선택하면 완전히 활용 된 1Gbit 회선이 있어도 단일 현재 코어를 암호화 오버 헤드로 바쁘게 유지할 수 없습니다. [ 편집 : RC4는 더 이상 안전하지 않으므로 사용해서는 안됩니다. 그러나 AES 하드웨어 지원은 현재 많은 CPU에 존재하므로 이러한 플랫폼에서 AES 암호화가 정말 빠릅니다.]
그러나 연결 설정이 다릅니다. 구현에 따라 (예 : TLS 잘못된 시작 지원) 왕복이 추가되어 눈에 띄는 지연이 발생할 수 있습니다. 또한 첫 번째 연결 설정에서 값 비싼 암호화가 발생합니다. 위에서 언급 한 CPU는 어리석게 4096 비트 키를 사용하면 초당 코어 당 14 개의 연결 만 허용하고 2048 비트 키를 사용하면 100 개만 허용 할 수 있습니다. 후속 연결에서는 값 비싼 암호화를 피하면서 이전 세션이 종종 재사용됩니다.
요약하면 다음과 같습니다.
설정된 연결로 전송 :
- 지연 : 거의 없음
- CPU : 무시할 만하다
- 대역폭 : 무시할 만함
첫 번째 연결 설정 :
- 지연 : 추가 왕복
- 대역폭 : 몇 킬로바이트 (인증서)
- 클라이언트의 CPU : 중간
- 서버의 CPU : 높음
후속 연결 설정 :
- 지연 : 추가 왕복 (하나 또는 여러 개인 지 확실하지 않은 경우 구현에 따라 다름)
- 대역폭 : 무시할 만함
- CPU : 거의 없음
참고 URL : https://stackoverflow.com/questions/548029/how-much-overhead-does-ssl-impose
'IT박스' 카테고리의 다른 글
두 날짜 사이에 몇 초가 걸립니까? (0) | 2020.05.31 |
---|---|
실과 섬유의 차이점은 무엇입니까? (0) | 2020.05.31 |
함수가 호출자가 인식 한 일부 인수를 수정할 수 있지만 다른 인수는 수정할 수없는 이유는 무엇입니까? (0) | 2020.05.30 |
C #에서 참조 유형 변수에 "ref"를 사용하는 것은 무엇입니까? (0) | 2020.05.30 |
대문자 또는 소문자 doctype? (0) | 2020.05.30 |