SSL ne kadar ek yük getiriyor?


168

Tek bir zor ve hızlı yanıt olmadığını biliyorum, ancak şifrelenmemiş soket iletişimine karşı SSL'nin şifreleme yükü için genel bir büyüklük sırası tahmini yaklaşımı var mı? Ben sadece iletişim işleme ve kablo zamanı hakkında konuşuyorum, uygulama düzeyinde işlem sayma değil.

Güncelleme

Orada HTTPS, HTTP karşı yaklaşık bir soru ama yığınında alt bakarak ilgilenen ediyorum.

(Ben önlemek karışıklığa ifade "büyüklük sırasını" yerini; doğrusu biçimsel CompSci anlamda daha gayri jargon olarak sorduydum Tabii ki eğer. Etmişti resmen bunu kastettin gerçek inek gibi düşünme ikili olmuş ziyade olurdu ondalık! ;-)

Güncelleme

Yorumdaki istek başına, kalıcı bağlantılar üzerinden iyi boyutlu iletilerden (1k-10k aralığında) bahsettiğimizi varsayalım. Bu nedenle bağlantı kurulumu ve paket ek yükü önemli konular değildir.


Bu benzer soruya bir göz atabilirsiniz .
Darin Dimitrov

1
Başvurunuzu biraz daha karakterize edebilir misiniz? Örneğin, çok kısa süreli bağlantılar kuruyor mu? Bağlıyken, bireysel bir mesaj ne kadar büyük olma eğilimindedir? (Örn., Telnet ile her tuşa basmayı bir SSL tüneli üzerinden yıkıyorsunuz veya belki 1 Tb günlük dosyasını kopyalıyorsunuz.)
erickson

Yanıtlar:


178

Büyüklük sırası: sıfır.

Başka bir deyişle, TLS eklediğinizde veriminizin yarı yarıya azaldığını veya buna benzer bir şey görmeyeceksiniz. Cevaplar "yinelenen" sorusu uygulama performansına ağır odak ve nasıl SSL yükü kıyaslanamaz. Bu soru özellikle uygulama işlemeyi hariç tutar ve SSL olmayanları yalnızca SSL ile karşılaştırmayı amaçlar. Optimize ederken küresel bir performans görüşü almak mantıklı olsa da, bu sorunun sorması bu değildir.

SSL'nin ana yükü el sıkışmasıdır. Pahalı asimetrik şifreleme burada gerçekleşir. Müzakere sonrasında nispeten etkili simetrik şifreler kullanılır. Bu nedenle, birçok bağlantının yapıldığı HTTPS hizmetiniz için SSL oturumlarını etkinleştirmek çok yararlı olabilir. Uzun ömürlü bir bağlantı için bu "son etki" o kadar önemli değildir ve oturumlar da o kadar yararlı değildir.


İşte ilginç bir fıkra. Google, Gmail'i HTTPS kullanacak şekilde değiştirdiğinde ek kaynak gerekmez; ağ donanımı yok, yeni ana bilgisayarlar yok. CPU yükünü yalnızca% 1 oranında artırdı.


6
"HTTPS hizmetiniz için SSL oturumlarını nasıl etkinleştirirsiniz?" Bu konuda öğrenilecek iyi bir kaynak nedir?
Justin Vincent

1
SSL oturumlarını etkinleştirmek sunucuya özgüdür. Sunucunuzun kılavuzunu okuyun.
erickson

7
@Bart van Heukelom - Canlı tut bir soketin (ve SSL bağlantısının) daha uzun süre açık kalmasına yardımcı olur, bu da yardımcı olur. Ancak SSL oturumları, anlaşılan şifreleme parametrelerinin soketten sokete "hatırlanmasına" neden olur. HTTP canlı tutma, referans verilen içeriğe sahip tek bir web sayfasını yüklemek için yararlı olacaktır, ancak birkaç saniye sonra bu bağlantı kapanacaktır. Üç dakika sonra, başka bir sayfa getirildiğinde, SSL oturumu SSL bağlantısının tam el sıkışma tekrarlanmadan yeniden kurulmasına izin verir. Özellikle, açık anahtar kripto ile yavaş anahtar değişimi atlanabilir.
erickson

2
@Tony, TLS'nin yüzde birkaç yükten fazlasını eklediği gerçek dünya örnekleriniz var mı? Cevabım soru kadar genel. Farklı bir alımınız varsa, lütfen paylaşın.
erickson

3
@Tony Her zaman tek bir bayt yazarken düz soketlerin SSL soketlerinden alan açısından 42 kat daha iyi performans gösterdiğini gördüm, bu en kötü durumdur. Hiç 250x görmedim. 1700 veri noktası ile internet üzerinde kapsamlı bir deney yaptım, burada genel sonuç, düz metin soketlerinin SSL'den üç kat daha hızlı olmadığı ve arabelleğe alma ve yıkamadan daha sofistike olmayan bir program kullanarak yapıldı. JSSE, muhtemelen Java 5 deney tarihi verildi.
Lorne Marquis

39

I @ @erickson: Saf veri aktarım hızı cezası ihmal edilebilir. Modern CPU'lar birkaç yüz MBit / sn'lik bir kripto / AES işlem hacmine ulaşır. Dolayısıyla, kaynak kısıtlı sistemde (cep telefonu) değilseniz, TLS / SSL, etraftaki verileri saptıracak kadar hızlıdır.

Ancak, şifrelemenin önbelleğe almayı ve yük dengelemeyi çok daha zor hale getirdiğini unutmayın. Bu büyük bir performans cezasına neden olabilir.

Ancak bağlantı kurulumu gerçekten birçok uygulama için bir gösteri durdurucudur. Düşük bant genişliği, yüksek paket kaybı, yüksek gecikme süreli bağlantılarda (kırsal alanda mobil cihaz) TLS'nin gerektirdiği ek gidiş dönüşler, bir şeyi yavaşça kullanılamaz hale getirebilir.

Örneğin, dahili web uygulamalarımızdan bazılarına erişim için şifreleme gereksinimini düşürmek zorunda kaldık - Çin'den kullanıldıklarında kullanılamaz.


20
4 yıllık bir bakış açısıyla: Çin tüm SSL / TLS trafiğini kasten bozmuş olabilir.
max

3
Çin interneti sansürlemek ve herkesin trafiğini koklamaya çalışmak tam olarak haber değil. Yine de 4 yıllık bir bakış açısıyla, sitenize giderken NSA MITMing olduğunu düşünürdünüz.
Eugene Beresovsky

Kesintili bağlantılara sahip anahtar, şifrelemeyi bir kez kurmak ve daha sonra gerçekten gerekli olmadıkça yeniden tanımlamalardan kaçınmak ve her iki tarafın IP adreslerini herhangi bir anda gözünü kırpmadan değiştirmelerine izin vermektir. (OpenVPN bunu destekler.) MTU çok güvenilmez ve düpedüz dürüst olmayabileceğinden BT parçalanmayı mümkün kılar.
Evi1M4chine

12

Bağlantı kurulumunu saymadığınızı varsayarsanız (güncellemenizde belirtildiği gibi), seçilen şifreye bağlıdır. Ağ ek yükü (bant genişliği açısından) önemsiz olacaktır. CPU yüküne kriptografi hakim olacak. Mobil Core i5 cihazımda, RC4 ile saniyede yaklaşık 250 MB şifreleyebiliyorum. (RC4, maksimum performans için seçmeniz gereken şeydir.) AES daha yavaştır ve yaklaşık 50 MB / sn. "Yalnızca" sağlar. Dolayısıyla, doğru şifreleri seçerseniz, tam olarak kullanılan bir 1 Gbit hattınız olsa bile, tek bir akım çekirdeğini kripto yükü ile meşgul etmeyi başaramazsınız. [ Düzenle : RC4 artık güvenli olmadığından kullanılmamalıdır. Ancak, AES donanım desteği artık birçok CPU'da mevcut, bu da AES şifrelemeyi bu tür platformlarda gerçekten hızlı hale getiriyor.]

Ancak bağlantı kurulması farklıdır. Uygulamaya bağlı olarak (örn. TLS yanlış başlatma desteği), belirgin gecikmelere neden olabilecek gidiş-dönüşler ekleyecektir. Ek olarak, ilk bağlantı kuruluşunda pahalı kripto gerçekleşir (yukarıda belirtilen CPU, aptalca 4096 bit anahtarlar kullanırsanız saniyede 14 bağlantı ve 2048 bit anahtarlar kullanırsanız 100 bağlantı kabul edebilir). Sonraki bağlantılarda, önceki oturumlar genellikle yeniden kullanılır ve pahalı kriptodan kaçınır.

Özetlemek gerekirse:

Kurulu bağlantıda aktarım:

  • Gecikme: neredeyse hiç
  • CPU: önemsiz
  • Bant genişliği: önemsiz

İlk bağlantı kuruluşu:

  • Gecikme: ek gidiş-dönüşler
  • Bant genişliği: birkaç kilobayt (sertifikalar)
  • İstemci üzerindeki CPU: orta
  • Sunucudaki CPU: yüksek

Sonraki bağlantı kuruluşları:

  • Gecikme: ek gidiş-dönüş (bir veya birden fazla, uygulamaya bağlı olabilir emin değilim)
  • Bant genişliği: önemsiz
  • CPU: neredeyse hiç

Önemli not: Kimse RC4'ü bir daha kullanmamalıdır. Protokol kırılmış olarak kabul edilir ve onunla RC4 iletimi, casusluk örgütlerinin güvenliği için en azından şifrelenmemiş iletime eşdeğer olarak görülmelidir. Günümüzde, bu tür organizasyonlardan bağımsız olması nedeniyle toplu şifreleme için chacha20-poly1305 gibi bir şey şiddetle tavsiye edilir.
Evi1M4chine
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.