ส่วนหัว HTTPS เข้ารหัสหรือไม่


599

เมื่อส่งข้อมูลผ่าน HTTPS ฉันรู้ว่าเนื้อหานั้นได้รับการเข้ารหัส แต่ฉันได้ยินคำตอบที่หลากหลายเกี่ยวกับว่าส่วนหัวได้รับการเข้ารหัสหรือมีการเข้ารหัสส่วนหัวเท่าใด

เท่าใดของ HTTPS ส่วนหัวมีการเข้ารหัส?

รวมถึง URL คำขอ GET / POST, คุกกี้, ฯลฯ


9
ส่วนหัว HTTP ผ่าน HTTPS นั้นได้รับการเข้ารหัสและไม่ถูกบีบอัดด้วย HTTP (แม้ว่าจะเป็นเนื้อความ) สิ่งนี้ทำให้พวกเขามีความเสี่ยงน้อยลงต่อการโจมตีที่เกี่ยวข้องกับการบีบอัดเช่น BEAST
Neil McGuigan

คำตอบ:


551

ล็อตทั้งหมดถูกเข้ารหัส - ส่วนหัวทั้งหมด นั่นเป็นสาเหตุที่ SSL บน vhosts ทำงานได้ไม่ดีนัก - คุณต้องใช้ที่อยู่ IP เฉพาะเนื่องจากส่วนหัวของโฮสต์ถูกเข้ารหัส

การระบุชื่อ Server (SNI) หมายถึงมาตรฐานที่ชื่อโฮสต์อาจไม่ได้รับการเข้ารหัสหากคุณกำลังใช้ TLS นอกจากนี้ไม่ว่าคุณจะใช้ SNI หรือไม่ส่วนหัว TCP และ IP จะไม่ถูกเข้ารหัส (ถ้าเป็นเช่นนั้นแพ็คเก็ตของคุณจะไม่สามารถกำหนดเส้นทางได้)


3
@Greg เนื่องจากเกตเวย์ vhost ได้รับอนุญาตเกตเวย์ไม่สามารถถอดรหัสได้ให้สังเกตที่ส่วนหัวของโฮสต์จากนั้นกำหนดว่าจะส่งโฮสต์ไปยังโฮสต์ใด
Pacerier

2
Afaik URL นั้นไม่ได้เข้ารหัส
ตุ๊กตา

4
@Teddu คุณหมายความว่าอย่างไร "URL ไม่ได้เข้ารหัส" มันถูกเข้ารหัสเนื่องจากเป็นส่วนหนึ่งของส่วนหัว
Dmitry Polushkin

1
หากใช้พู้ทำเล่นเพื่อจับภาพการสื่อสาร https มันยังคงแสดงส่วนหัวบางส่วนทำไม? โดยเฉพาะอย่างยิ่งเมื่อการเชื่อมต่ออินเทอร์เน็ตผ่านพร็อกซีซึ่งต้องการการรับรองความถูกต้องจะแสดงส่วนหัวการอนุญาตเมื่อการร้องขอซ้ำอีกครั้งหลังจากได้รับ 407 ในการส่งครั้งแรก
Bochen Lin

1
@Bochen เช่นเดียวกับ Pegasus หากคุณอยู่ที่ปลายอุโมงค์ HTTPS คุณจะเห็นทุกอย่าง เช่นเดียวกับที่ฉันเห็นทุกอย่างในเบราว์เซอร์ devtools
Nux

97

ส่วนหัวได้รับการเข้ารหัสทั้งหมด ข้อมูลที่ผ่านเครือข่าย 'ชัดเจน' เท่านั้นที่เกี่ยวข้องกับการตั้งค่า SSL และการแลกเปลี่ยนคีย์ D / H การแลกเปลี่ยนนี้ได้รับการออกแบบมาอย่างระมัดระวังไม่ให้ข้อมูลที่เป็นประโยชน์ใด ๆ กับผู้ดักฟังและเมื่อเกิดขึ้นแล้วข้อมูลทั้งหมดจะถูกเข้ารหัส


4
ไม่ใช่การตั้งค่า SSL ทั้งหมดที่เกี่ยวข้องกับ DH
Dori

30
หากต้องการความคล่องแคล่วเล็กน้อย: ที่อยู่ IP ของไคลเอ็นต์และเซิร์ฟเวอร์ชื่อโฮสต์ของเซิร์ฟเวอร์และสัญญาณเกี่ยวกับการใช้งาน SSL ของพวกเขานั้นมีประโยชน์ต่อผู้ดักฟังและสามารถมองเห็นได้
poolie

66

คำตอบใหม่สำหรับคำถามเก่าขอโทษ ฉันคิดว่าฉันจะเพิ่ม $ .02 ของฉัน

OP ถามว่ามีการเข้ารหัสส่วนหัวหรือไม่

อยู่ระหว่างการขนส่ง

พวกเขาไม่: เมื่อไม่ได้อยู่ในระหว่างการขนส่ง

ดังนั้น URL ของเบราว์เซอร์ของคุณ (และชื่อในบางกรณี) สามารถแสดงการสืบค้น (ซึ่งมักจะมีรายละเอียดที่ละเอียดอ่อนที่สุด) และรายละเอียดบางอย่างในส่วนหัว เบราว์เซอร์รู้ข้อมูลส่วนหัว (ประเภทเนื้อหา, unicode, ฯลฯ ); และประวัติเบราว์เซอร์การจัดการรหัสผ่านรายการโปรด / ที่คั่นหน้าและหน้าแคชทั้งหมดจะมีการสอบถาม บันทึกเซิร์ฟเวอร์บนปลายทางระยะไกลยังสามารถมีการสอบถามและรายละเอียดเนื้อหาบางส่วน

นอกจากนี้ URL ยังไม่ปลอดภัยเสมอไป: โดเมนโปรโตคอลและพอร์ตจะปรากฏขึ้นมิฉะนั้นเราเตอร์จะไม่ทราบว่าจะส่งคำขอของคุณไปที่ใด

นอกจากนี้หากคุณมีพร็อกซี HTTP เซิร์ฟเวอร์พร็อกซีจะทราบที่อยู่โดยปกติแล้วพวกเขาจะไม่รู้การสืบค้นแบบเต็ม

ดังนั้นหากข้อมูลมีการเคลื่อนไหวข้อมูลจะถูกป้องกันโดยทั่วไป ถ้ามันไม่ได้อยู่ในระหว่างการขนส่งมันจะไม่ถูกเข้ารหัส

ไม่ใช่เพื่อเลือกจาก nit แต่ข้อมูลในตอนท้ายจะถูกถอดรหัสเช่นกันและสามารถแยกวิเคราะห์อ่านบันทึกส่งต่อหรือทิ้งตามความประสงค์ และมัลแวร์ในตอนท้ายสามารถถ่ายภาพข้อมูลที่ป้อน (หรือออก) โปรโตคอล SSL เช่น (ไม่ดี) Javascript ในหน้าภายใน HTTPS ซึ่งสามารถโทรผ่าน http (หรือ https) เพื่อเข้าสู่เว็บไซต์ (ตั้งแต่เข้าถึง harddrive ในเครื่อง) มักถูก จำกัด และไม่มีประโยชน์)

นอกจากนี้คุกกี้จะไม่ถูกเข้ารหัสภายใต้โปรโตคอล HTTPS นักพัฒนาที่ต้องการจัดเก็บข้อมูลที่สำคัญในคุกกี้ (หรือที่อื่น ๆ สำหรับเรื่องนั้น) จำเป็นต้องใช้กลไกการเข้ารหัสของตนเอง

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

ดังนั้นหากคุณกังวลเกี่ยวกับการดมแพ็คเก็ตคุณอาจไม่เป็นไร แต่ถ้าคุณกังวลเกี่ยวกับมัลแวร์หรือบางคนที่แอบดูประวัติบุ๊กมาร์กคุกกี้หรือแคชคุณยังไม่ได้อยู่ในน้ำ


20
ฉันรู้ว่าคำตอบที่ดีอยู่ด้านบน แต่นี่เป็นการแทรกข้อมูลที่ผิดพลาดอีกครั้ง ไม่สามารถมองเห็นโดเมนได้ยกเว้นว่ามีการใช้ SNI ไม่สามารถมองเห็นโพรโทคอลอื่นนอกเหนือจาก IP และ TCP คุณไม่สามารถบอกได้ว่าฉันใช้ HTTP 1.1, SPDY หรือ HTTP2 หรือไม่ สิ่งที่มองเห็นได้ในสองจุดสิ้นสุดนั้นไม่เกี่ยวข้องเนื่องจากเป้าหมายของการเข้ารหัสไม่ได้ทำให้สิ่งที่มองไม่เห็นแต่ทำให้สิ่งต่าง ๆมองเห็นได้โดยฝ่ายที่เชื่อถือได้เท่านั้น ดังนั้นจุดสิ้นสุดจะบอกเป็นนัยในคำถามและคุณสามารถลบคำตอบได้ประมาณ 2/3 ข้อ ข้อมูลพร็อกซีควรจะ: ถ้าคุณใช้พร็อกซี่ HTTPS แล้วมันไม่ได้มีการเข้าถึงทุกอย่าง
Melvyn

6
ลิงก์ของคุณระบุว่ามีการเข้ารหัสคุกกี้โดยเฉพาะ: "การเชื่อมต่อของผู้เข้าชมนั้นได้รับการเข้ารหัสบดบัง URL คุกกี้และข้อมูลเมตาอื่น ๆ ที่มีความละเอียดอ่อน"
DylanYoung

1
ใช่ถูกต้องแล้ว คุกกี้ถูกเข้ารหัสในระหว่างการขนส่ง แต่เมื่อพวกเขามาถึงเบราว์เซอร์พวกเขาจะไม่ถูกเข้ารหัสโดยโปรโตคอล SSL เป็นไปได้สำหรับนักพัฒนาในการเข้ารหัสข้อมูลคุกกี้ แต่อยู่นอกขอบเขตสำหรับ SSL
Andrew Jennings

4
@DylanYoung SSL = secure socket layer; TLS = ความปลอดภัยของเลเยอร์การขนส่ง การเข้ารหัสอยู่ที่ระดับซ็อกเก็ต (การเชื่อมต่อ) หรือจะใช้วิธีอื่นในระดับการขนส่งที่ไม่ได้เก็บไว้ในเบราว์เซอร์ต่อฐานข้อมูลโดเมน
curiousguy

@Wigwam คุกกี้ HTTP ที่มีความปลอดภัยมักจะอ้างอิงทึบแสง (โดยทั่วไปจะเป็นตัวเลขสุ่มที่มีการเข้ารหัสที่แข็งแกร่ง) ไปยังระเบียนในฐานข้อมูลเซิร์ฟเวอร์ของเซสชันที่มีการรับรองความถูกต้อง เช่นการเข้ารหัสตัวระบุไร้ความหมายส่วนใหญ่จะนำมาซึ่งความซับซ้อนเพิ่มเติม
curiousguy

53

HTTP เวอร์ชัน 1.1 เพิ่มวิธี HTTP พิเศษ CONNECT - ตั้งใจสร้างอุโมงค์ SSL รวมถึงการจับมือโปรโตคอลที่จำเป็นและการตั้งค่าการเข้ารหัสลับ
คำขอปกติหลังจากนั้นทั้งหมดได้รับการห่อในอุโมงค์ SSL รวมส่วนหัวและร่างกาย


เมื่อใดจะใช้ CONNECT เพื่อสร้างช่องสัญญาณ SSL
curiousguy


47

ด้วย SSL การเข้ารหัสอยู่ในระดับการขนส่งดังนั้นจึงเกิดขึ้นก่อนที่จะส่งคำขอ

ดังนั้นทุกอย่างในคำขอจะถูกเข้ารหัส


เนื่องจาก SSL เกิดขึ้นในเลเยอร์การขนส่งและการกำหนดที่อยู่ปลายทางในแพ็คเก็ต (ในส่วนหัว) เกิดขึ้นในเลเยอร์เครือข่าย (ซึ่งอยู่ด้านล่างการขนส่ง) ดังนั้นวิธีการเข้ารหัสส่วนหัว?
Prateek Joshi

@PrateekJoshi เนื่องจากส่วนหัว HTTP อยู่ในเลเยอร์ของแอปพลิเคชันและตามค่าเริ่มต้นจะเข้ารหัสเนื่องจากเลเยอร์ที่ต่ำกว่า / บรรพบุรุษถูกเข้ารหัส
Aquarelle

40

HTTPS (HTTP ผ่าน SSL) ส่งเนื้อหา HTTP ทั้งหมดผ่านทางช่องสัญญาณ SSL ดังนั้นเนื้อหาและส่วนหัว HTTP จะถูกเข้ารหัสเช่นกัน


21

ใช่ส่วนหัวได้รับการเข้ารหัส มันเขียนที่นี่

ทุกอย่างในข้อความ HTTPS ถูกเข้ารหัสรวมถึงส่วนหัวและโหลดคำขอ / ตอบกลับ


37
Wikipedia ไม่ใช่ข้อมูลจำเพาะซึ่งเป็นสิ่งที่คุณควรอ้างอิง
Aran Mulholland

8

URL นั้นยังถูกเข้ารหัสคุณมี IP, พอร์ตและถ้า SNI ชื่อโฮสต์ที่ไม่ได้เข้ารหัสเท่านั้น


แม้ว่า SNI จะไม่ได้รับการสนับสนุนตัวกลางที่มีความสามารถในการสกัดกั้นการเชื่อมต่อ HTTP มักจะสามารถตรวจสอบคำถาม DNS ได้เช่นกัน (การสกัดกั้นส่วนใหญ่ใกล้กับไคลเอ็นต์เช่นบนเราเตอร์ผู้ใช้ที่ละเมิดลิขสิทธิ์) ดังนั้นพวกเขาจะสามารถเห็นชื่อ DNS
curiousguy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.