SSL มีค่าใช้จ่ายเท่าใด


168

ฉันรู้ว่าไม่มีคำตอบที่ยากและรวดเร็วเพียงอย่างเดียว แต่มีการประมาณลำดับทั่วไปสำหรับการเข้ารหัสค่าใช้จ่ายของ SSL กับการสื่อสารซ็อกเก็ตที่ไม่ได้เข้ารหัสหรือไม่ ฉันกำลังพูดถึงการประมวลผล comm และเวลาโอนสายเท่านั้นไม่นับการประมวลผลระดับแอปพลิเคชัน

ปรับปรุง

มีคำถามเกี่ยวกับ HTTPS กับ HTTPแต่ฉันสนใจที่จะดูในสแต็กที่ต่ำกว่า

(ฉันแทนที่วลี "ลำดับความสำคัญ" ไปสู่ความสับสนหลีกเลี่ยง; ผมก็ใช้มันเป็นศัพท์แสงทางการมากกว่าในความรู้สึก compsci อย่างเป็นทางการแน่นอนถ้าฉัน. ได้หมายความว่ามันอย่างเป็นทางการเป็น geek จริงฉันจะได้รับความคิดไบนารีมากกว่า ทศนิยม! ;-)

ปรับปรุง

ตามคำขอในความคิดเห็นสมมติว่าเรากำลังพูดถึงข้อความขนาดดี (ช่วง 1k-10k) ผ่านการเชื่อมต่อแบบต่อเนื่อง ดังนั้นการตั้งค่าการเชื่อมต่อและโอเวอร์เฮดแพ็คเก็ตจึงไม่มีปัญหาที่สำคัญ


คุณอาจดูคำถามที่คล้ายกันนี้
Darin Dimitrov

1
คุณสามารถระบุลักษณะการสมัครของคุณอีกเล็กน้อยได้หรือไม่? ตัวอย่างเช่นมันสร้างการเชื่อมต่อระยะสั้นจำนวนมากหรือไม่? ในขณะที่เชื่อมต่อข้อความส่วนตัวจะมีขนาดใหญ่แค่ไหน? (เช่นบางทีคุณอาจกำลังล้างทุกกดปุ่มด้วย Telnet ผ่านอุโมงค์ SSL หรือบางทีคุณคัดลอกไฟล์บันทึก 1 Tb.)
เอริก

คำตอบ:


178

ลำดับความสำคัญ: ศูนย์

กล่าวอีกนัยหนึ่งคุณจะไม่เห็นปริมาณงานของคุณลดลงครึ่งหนึ่งหรืออะไรทำนองนั้นเมื่อคุณเพิ่ม TLS คำตอบของคำถาม "ซ้ำกัน" จะเน้นไปที่ประสิทธิภาพของแอปพลิเคชันเป็นอย่างมากและวิธีเปรียบเทียบกับค่าใช้จ่าย SSL คำถามนี้ไม่รวมการประมวลผลแอปพลิเคชันโดยเฉพาะและพยายามเปรียบเทียบไม่ใช่ SSL กับ SSL เท่านั้น ในขณะที่เหมาะสมที่จะใช้มุมมองระดับโลกของประสิทธิภาพเมื่อปรับให้เหมาะสมนั่นไม่ใช่คำถามที่ถาม

ค่าใช้จ่ายหลักของ SSL คือการจับมือกัน นั่นคือสิ่งที่การเข้ารหัสแบบอสมมาตรมีราคาแพงเกิดขึ้น หลังจากการเจรจาจะมีการใช้ ciphers สมมาตรที่ค่อนข้างมีประสิทธิภาพ นั่นเป็นสาเหตุที่เป็นประโยชน์อย่างมากในการเปิดใช้งานเซสชัน SSL สำหรับบริการ HTTPS ของคุณซึ่งมีการเชื่อมต่อมากมาย สำหรับการเชื่อมต่อที่ยาวนาน "end-effect" นี้ไม่สำคัญและเซสชันไม่มีประโยชน์


นี่เป็นเรื่องเล็ก ๆ น้อยที่น่าสนใจ เมื่อ Google เปลี่ยน Gmail ให้ใช้ HTTPS ไม่จำเป็นต้องมีทรัพยากรเพิ่มเติม ไม่มีฮาร์ดแวร์เครือข่ายไม่มีโฮสต์ใหม่ มันเพิ่มโหลด CPU เพียงประมาณ 1%


6
คุณ "เปิดใช้งานเซสชัน SSL สำหรับบริการ HTTPS ของคุณ" ได้อย่างไร ทรัพยากรที่ดีในการเรียนรู้เกี่ยวกับเรื่องนี้คืออะไร?
Justin Vincent

1
การเปิดใช้งานเซสชัน SSL เป็นแบบเฉพาะเซิร์ฟเวอร์ อ่านคู่มือสำหรับเซิร์ฟเวอร์ของคุณ
erickson

7
@Bart van Heukelom - Keep-alive จะช่วยให้ซ็อกเก็ต (และการเชื่อมต่อ SSL) เปิดได้นานขึ้นซึ่งจะช่วยให้ แต่เซสชัน SSL ทำให้พารามิเตอร์การเข้ารหัสลับที่เจรจาถูก "จดจำ" จากซ็อกเก็ตไปยังซ็อกเก็ต ดังนั้น HTTP แบบคงที่จะมีประโยชน์สำหรับการโหลดหน้าเว็บเดียวที่มีเนื้อหาอ้างอิง แต่หลังจากนั้นไม่กี่วินาทีการเชื่อมต่อนั้นจะปิดลง พูดอีกสามนาทีต่อมาเมื่อเพจอื่นถูกดึงข้อมูลเซสชัน SSL อนุญาตให้เชื่อมต่อ SSL อีกครั้งโดยไม่ต้องจับมือเต็มซ้ำ โดยเฉพาะอย่างยิ่งการแลกเปลี่ยนคีย์ที่ช้าด้วยคีย์สาธารณะ crypto สามารถข้ามได้
erickson

2
@ Tony มีตัวอย่างของโลกแห่งความจริงที่ TLS เพิ่มค่าใช้จ่ายเกินกว่าสองสามเปอร์เซ็นต์หรือไม่? คำตอบของฉันทั่วไปเหมือนคำถาม หากคุณมีเวลาอื่นโปรดแบ่งปัน
erickson

3
@ โทนี่ฉันเห็นซ็อกเก็ตธรรมดามีประสิทธิภาพดีกว่าซ็อกเก็ต SSL โดยมีขนาดเท่ากับ 42 ในแง่ของพื้นที่เมื่อเขียนหนึ่งไบต์ในแต่ละครั้งซึ่งเป็นกรณีที่แย่ที่สุด ไม่เคยเห็น 250x ฉันทำการทดลองอย่างกว้างขวางผ่านอินเทอร์เน็ตด้วย 1,700 จุดข้อมูลซึ่งผลลัพธ์โดยทั่วไปคือซ็อกเก็ตธรรมดาที่ไม่เร็วกว่า SSL ถึงสามเท่าโดยใช้การเขียนโปรแกรมไม่ซับซ้อนกว่าการบัฟเฟอร์และการลบทิ้ง JSSE อาจ Java 5 กำหนดวันที่ของการทดสอบ
มาร์ควิสแห่ง Lorne

39

ฉันที่สอง @erickson: การลงโทษการถ่ายโอนข้อมูลความเร็วสูงนั้นเล็กน้อยมาก ซีพียูสมัยใหม่เข้าถึงปริมาณการเข้ารหัส / AES หลายร้อย MBit / s ดังนั้นหากคุณไม่ได้อยู่ในระบบที่ จำกัด ทรัพยากร (โทรศัพท์มือถือ) TLS / SSL นั้นเร็วพอสำหรับการสะพายข้อมูล

แต่โปรดจำไว้ว่าการเข้ารหัสทำให้การแคชและการโหลดบาลานซ์ยากขึ้นมาก ซึ่งอาจส่งผลให้เกิดการลงโทษอย่างมาก

แต่การตั้งค่าการเชื่อมต่อเป็นตัวหยุดการแสดงสำหรับแอพพลิเคชั่นมากมาย สำหรับแบนด์วิดท์ต่ำการสูญเสียแพ็กเก็ตสูงการเชื่อมต่อเวลาแฝงที่สูง (อุปกรณ์มือถือในชนบท) TLT ที่ต้องการโดย TLS อาจทำให้บางสิ่งช้าลงเป็นสิ่งที่ใช้ไม่ได้

ตัวอย่างเช่นเราต้องวางข้อกำหนดการเข้ารหัสสำหรับการเข้าถึงบางส่วนของเว็บแอพภายในของเรา - ซึ่งเป็นสิ่งที่ไม่สามารถใช้งานได้หากใช้จากจีน


20
เมื่อย้อนหลังไป 4 ปี: จีนอาจจะสับสนกับปริมาณการใช้ SSL / TLS ทั้งหมด
สูงสุด

3
การเซ็นเซอร์อินเทอร์เน็ตของจีนและการพยายามสูดดมการจราจรของทุกคนนั้นไม่ได้เป็นข่าวอย่างแน่นอน แม้ว่าจะเข้าใจถึงปัญหา 4 ปีแล้วคุณคิดว่า NSA MITMing เป็นเว็บไซต์ของคุณ
Eugene Beresovsky

กุญแจสำคัญที่มีการเชื่อมต่อที่ไม่สม่ำเสมอคือการตั้งค่าการเข้ารหัสหนึ่งครั้งจากนั้นหลีกเลี่ยงการกล่าวอ้างซ้ำหากไม่จำเป็นจริงๆและอนุญาตให้ทั้งสองฝ่ายเปลี่ยนที่อยู่ IP ได้ตลอดเวลาโดยไม่ต้องกะพริบตา (OpenVPN รองรับสิ่งนี้) IT ช่วยให้สามารถแยกส่วนได้เนื่องจาก MTU นั้นไม่น่าเชื่อถือและไม่น่าไว้วางใจอย่างสิ้นเชิง
Evi1M4chine

12

สมมติว่าคุณไม่นับการตั้งค่าการเชื่อมต่อ (ตามที่คุณระบุในการอัปเดต) มันขึ้นอยู่กับรหัสที่เลือก เครือข่ายค่าใช้จ่าย (ในแง่ของแบนด์วิดธ์) จะเล็กน้อย โอเวอร์เฮดของ CPU จะถูกควบคุมด้วยการเข้ารหัส บนมือถือ Core i5 ของฉันฉันสามารถเข้ารหัสได้ประมาณ 250 MB ต่อวินาทีด้วย RC4 ในแกนเดียว (RC4 เป็นสิ่งที่คุณควรเลือกเพื่อให้ได้ประสิทธิภาพสูงสุด) AES ช้าลงโดยให้ "เฉพาะ" ประมาณ 50 MB / s ดังนั้นหากคุณเลือกเลขศูนย์ที่ถูกต้องคุณจะไม่สามารถจัดการแกนหลักปัจจุบันเดียวที่ยุ่งกับค่าใช้จ่ายการเข้ารหัสแม้ว่าคุณจะมีสาย 1 Gbit ที่ใช้งานอย่างเต็มที่ [ แก้ไข : ไม่ควรใช้ RC4 เนื่องจากไม่ปลอดภัยอีกต่อไป อย่างไรก็ตามการสนับสนุนฮาร์ดแวร์ AES นั้นมีอยู่ในซีพียูจำนวนมากซึ่งทำให้การเข้ารหัส AES เป็นไปอย่างรวดเร็วบนแพลตฟอร์มดังกล่าว]

อย่างไรก็ตามการสร้างการเชื่อมต่อนั้นแตกต่างกัน ขึ้นอยู่กับการนำไปใช้ (เช่นการสนับสนุน TLS false start) จะเพิ่มการเดินทางไปกลับซึ่งอาจทำให้เกิดความล่าช้าที่สังเกตเห็นได้ นอกจากนี้การเข้ารหัสลับที่มีราคาแพงเกิดขึ้นในการเชื่อมต่อครั้งแรก (CPU ที่กล่าวถึงข้างต้นสามารถรับได้ 14 การเชื่อมต่อต่อคอร์ต่อวินาทีหากคุณใช้คีย์ 4096 บิตและ 100 ถ้าคุณใช้คีย์ 2048 บิต) ในการเชื่อมต่อที่ตามมามักจะมีการใช้เซสชันก่อนหน้านี้อีกครั้งเพื่อหลีกเลี่ยง crypto ราคาแพง

ดังนั้นเพื่อสรุป:

ถ่ายโอนในการเชื่อมต่อที่จัดตั้งขึ้น:

  • ล่าช้า: ไม่มีเลย
  • CPU: ไม่สำคัญ
  • แบนด์วิดธ์: เล็กน้อย

สถานประกอบการเชื่อมต่อครั้งแรก:

  • ความล่าช้า: การเดินทางไปกลับเพิ่มเติม
  • แบนด์วิดท์: หลายกิโลไบต์ (ใบรับรอง)
  • CPU บนไคลเอ็นต์: ปานกลาง
  • CPU บนเซิร์ฟเวอร์: สูง

สถานประกอบการเชื่อมต่อที่ตามมา:

  • ล่าช้า: ไปกลับเพิ่มเติม (ไม่แน่ใจว่าหนึ่งหรือมากกว่านั้นอาจขึ้นอยู่กับการใช้งาน)
  • แบนด์วิดธ์: เล็กน้อย
  • CPU: ไม่มีเลย

หมายเหตุสำคัญ: ไม่มีใครควรใช้ RC4 อีกเลย โพรโทคอล mus ถูกพิจารณาว่าใช้งานไม่ได้และการส่ง RC4 ด้วยจะต้องถูกมองว่าเทียบเท่ากับการส่งแบบไม่เข้ารหัสอย่างน้อยที่สุดเพื่อความปลอดภัยจากองค์กรสอดแนม ทุกวันนี้บางอย่างเช่น chacha20-poly1305 แนะนำอย่างยิ่งสำหรับการเข้ารหัสจำนวนมากเนื่องจากความเป็นอิสระจากองค์กรดังกล่าว
Evi1M4chine
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.