Score:1

การเชื่อมต่อ SSL ให้ความสมบูรณ์หรือไม่

ธง us

ฉันยังใหม่กับการเข้ารหัสและฉันกำลังพยายามใช้แอปพลิเคชันแชทที่ปลอดภัยโดยใช้ OpenSSL

ฉันต้องการให้แน่ใจว่าข้อความสาธารณะ (ซึ่งจะแสดงต่อผู้ใช้ทั้งหมด) ไม่สามารถแก้ไขได้ระหว่างการส่ง

การใช้การเชื่อมต่อ SSL รับประกันได้หรือไม่?

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

dave_thompson_085 avatar
cn flag
คุณหมายถึง SSL ทั้งสองเวอร์ชันที่ใช้งานไม่ได้จริง ๆ หรือ TLS ซึ่งเป็นโปรโตคอลที่ใช้และดำเนินการโดยหลายสิ่งหลายอย่าง (ยังคง) ตั้งชื่อตาม SSL รวมถึง OpenSSL หรือไม่ คุณอ่านแท็ก 'tls' ที่คุณใช้หรือไม่ วางเมาส์เหนือเพื่อดูคำตอบสำหรับคำถามของคุณ
Gilles 'SO- stop being evil' avatar
@dave_thompson_085 การแยกความแตกต่างระหว่าง SSL และ TLS นั้นไม่จำเป็นเลย ในทางปฏิบัติ พวกมันเป็นคำพ้องความหมาย มันเพิ่งเกิดขึ้นที่เวอร์ชันเก่ากว่า (SSL 1, SSL 2, SSL 3) มีชื่อและรูปแบบการกำหนดหมายเลขแตกต่างจากเวอร์ชันที่ใหม่กว่า (TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3) ไลบรารี SSL จำนวนมากไม่รองรับ SSL 3 อีกต่อไป และแม้แต่ TLS 1.0 และ 1.1 จะหายไป แม้ว่าชื่อของไลบรารีหรือฟังก์ชันจะมี âSSLâ ก็ตาม หากมีคนถามเกี่ยวกับ âSSLâ และไม่ได้อยู่ในบริบทของซอฟต์แวร์รุ่นเก่าหรือโปรโตคอลในอดีต คำถามก็คือเกี่ยวกับเวอร์ชันของโปรโตคอลที่เรียกว่า TLS
kelalaka avatar
in flag
[การติดตามแพ็กเก็ต SSL เป็นหลักฐานยืนยันความถูกต้องของข้อมูลหรือไม่](https://crypto.stackexchange.com/q/5455/18298)
Score:2

ใช่. การเชื่อมต่อ SSL ให้การรักษาความลับและความสมบูรณ์ของการส่งข้อมูล: ฝ่ายตรงข้าม (บุคคลที่ไม่ใช่ทั้งสองฝ่ายที่สื่อสารกัน) ไม่สามารถค้นหาหรือตรวจสอบว่าข้อมูลใดถูกส่งและไม่สามารถแก้ไขข้อมูลที่ส่งได้ ฝ่ายตรงข้ามไม่สามารถเล่นซ้ำข้อมูลได้เช่นกัน

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

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

ระวังว่า TLS เวอร์ชันสูงสุด 1.2 มีชุดการเข้ารหัสที่ผิดปกติพร้อมการรับประกันความปลอดภัยที่ลดลงแม้ว่าการกำหนดค่าเริ่มต้นของไลบรารี TLS ที่สำคัญทั้งหมดจะปิดใช้งานชุดการเข้ารหัสเหล่านั้นตามค่าเริ่มต้น แต่คุณต้องระมัดระวังไม่ให้เปิดใช้งานโดยไม่ตั้งใจ TLS 1.3 มีชุดรหัสความปลอดภัยเต็มรูปแบบเท่านั้น (สังเกตว่าการตรวจสอบสิทธิ์ไคลเอ็นต์ยังคงเป็นทางเลือก เนื่องจาก TLS ได้รับการออกแบบมาเพื่อรองรับไคลเอ็นต์ที่ไม่รู้จักซึ่งเชื่อมต่อกับเซิร์ฟเวอร์ที่รู้จัก)

สุดท้าย โปรดทราบว่า TLS สามารถรับประกันความปลอดภัยเกี่ยวกับการส่งสัญญาณเท่านั้น เป็นการยากที่เครื่องสุ่มสองเครื่องบนอินเทอร์เน็ตจะสื่อสารกันโดยตรง ดังนั้นโดยทั่วไปแล้วการแชทจะถูกส่งผ่านเซิร์ฟเวอร์ส่วนกลาง หากคุณใช้ TLS ระหว่างไคลเอนต์แต่ละเครื่องกับเซิร์ฟเวอร์เท่านั้น TLS จะรักษาความปลอดภัยของข้อความในขณะที่อยู่ระหว่างการส่งระหว่างไคลเอ็นต์ 1 กับเซิร์ฟเวอร์ และเมื่ออยู่ระหว่างการส่งระหว่างเซิร์ฟเวอร์และไคลเอ็นต์ 2 แต่ซอฟต์แวร์เซิร์ฟเวอร์จะรับประกันว่า ความปลอดภัยของข้อความในระหว่าง â ตัวอย่างเช่น ข้อความถูกส่งไปยังผู้รับที่ถูกต้อง มีโปรโตคอลที่ซับซ้อนมากขึ้นที่สามารถรับประกันความปลอดภัยของข้อความแบบ end-to-end ซึ่งเป็นที่นิยม สัญญาณ. แอปพลิเคชันที่ใช้โปรโตคอลดังกล่าวอาจยังคงใช้ TLS ระหว่างฮ็อพ วิธีนี้สามารถช่วยความเป็นส่วนตัวได้โดยการซ่อนไม่ให้ผู้แอบฟังทราบว่าใครกำลังคุยกับใคร หรือช่วยต่อต้านการใช้ทรัพยากรในการกำหนดเส้นทางข้อความปลอมที่มิฉะนั้นจะถูกทิ้งเมื่อส่งถึงผู้รับที่ต้องการเท่านั้น)

Score:2
ธง my

TLS (ชื่อเฉพาะสำหรับสิ่งที่คุณเรียกว่า SSL) ให้การรับประกันความสมบูรณ์แบบครบวงจร นั่นคือผู้รับสามารถรู้ได้ว่าสิ่งที่ได้รับนั้นตรงกับสิ่งที่ผู้ส่งส่งมา

อย่างไรก็ตาม มันเป็นโปรโตคอลแบบจุดต่อจุด ข้อความใด ๆ (เครื่องบันทึก) มาจากผู้ส่งเฉพาะและไปยังผู้รับเฉพาะ

วิธีหนึ่งที่จะมองว่ามันเป็น 'ท่อ' ที่ปลอดภัย; ด้านหนึ่งสามารถใส่บางอย่างเข้าไปในท่อ และอีกด้านสามารถถอดออกได้ - ไม่มีใครสามารถดูสิ่งที่เข้าไปในท่อได้ (นอกจากสิ่งที่เข้าไป) และไม่มีใครสามารถแก้ไขสิ่งที่อยู่ในท่อได้ (โดยไม่มี กำลังตรวจพบ) อย่างไรก็ตาม TLS ไม่รับประกันว่าจะเกิดอะไรขึ้นกับข้อมูลก่อนที่ข้อมูลจะเข้าสู่ท่อ หรือเกิดอะไรขึ้นกับข้อมูลเมื่อออกจากท่อ

คุณระบุว่าคุณมีข้อความสาธารณะ ข้อความไปถึงผู้รับหลายคนได้อย่างไร TLS ให้การเชื่อมต่อแบบจุดต่อจุด (ท่อ); คุณจะทำให้มันเป็นระบบออกอากาศได้อย่างไร? ผู้ส่งส่งข้อความไปยังผู้รับแต่ละรายโดยใช้การเชื่อมต่อ TLS อิสระหรือไม่ ผู้รับเริ่มต้นส่งต่อข้อความไปยังผู้รับอื่น ๆ หรือไม่? ผู้ส่งวางข้อความลงในพื้นที่ทั่วไปที่ผู้รับต่างๆ สามารถอ่านได้หรือไม่?

ในกรณีแรก TLS จะให้ความสมบูรณ์แบบ end-to-end (สมมติว่าผู้ส่งสามารถเชื่อถือได้ในการส่งข้อความเดียวกัน - TLS ไม่ได้ทำสิ่งใดเพื่อตรวจสอบสิ่งนั้น)

ในกรณีที่สอง (ข้อความถูกส่งต่อ) ไม่มีอะไรขัดขวางผู้รับเริ่มต้นจากการแก้ไขข้อความที่ส่งต่อ - ถ้าเขาสามารถเชื่อถือได้ว่าจะไม่ทำเช่นนั้น ก็ปลอดภัย หากไม่สามารถเชื่อถือได้ จำเป็นต้องมีการป้องกันบางอย่างนอก TLS (เช่น ลายเซ็นด้วยรหัสสาธารณะของผู้ส่ง)

ในกรณีที่สาม (ข้อความที่วางไว้ในพื้นที่ส่วนกลาง) TLS ไม่มีการป้องกัน - คุณต้องมีบางอย่างเช่นลายเซ็น

Score:1
ธง in

ใช่ TLS สามารถให้การเข้ารหัสแบบ end-to-end ความสมบูรณ์และความถูกต้องของข้อความสำหรับการขนส่ง - มันไม่ได้เรียกว่า Transport Layer Security โดยไม่มีเหตุผล

คุณต้องสร้างความไว้วางใจทั้งสองฝ่าย: หากคุณไม่สามารถระบุลูกค้าได้ ฝ่ายตรงข้ามอาจปลอมตัวเป็นลูกค้าและอาจได้รับข้อความเช่นกัน โดยทั่วไปสำหรับ PKIX คุณจะต้องเชื่อถือเซิร์ฟเวอร์อยู่แล้ว (เช่นเดียวกับเบราว์เซอร์) แต่ถ้าคุณไม่ทำเช่นนั้น ศัตรูสามารถปลอมตัวเป็นเซิร์ฟเวอร์และส่งข้อความไปยังไคลเอนต์ได้ สิ่งนี้จะไม่ทำลายความลับหรือความสมบูรณ์ของข้อความเอง หลังจากการตั้งค่าเซสชันแต่มันไม่ใช่สิ่งที่คุณต้องการ

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

นอกจากนี้ ระวังด้วยว่าหากจุดสิ้นสุดของการเชื่อมต่อไม่ได้อยู่ที่เซิร์ฟเวอร์หรือไคลเอนต์ แสดงว่าคุณมีการเข้ารหัสแบบจุดต่อจุดแทน คุณจะต้องเชื่อถือบุคคลระดับกลาง / การเชื่อมต่อที่ไม่ปลอดภัยเช่นกัน


หมายเหตุ:

  • อาจเป็นความคิดที่ดีที่จะดูเช่น โปรโตคอลสัญญาณซึ่งเป็นเป้าหมายของแอปแชทมากกว่า
  • ฉันขอแนะนำ TLS 1.3 เป็นอย่างยิ่งหากคุณเลือกใช้ TLS
  • ระวังว่ามีเพียงไม่กี่โปรโตคอลที่มีการป้องกันจากคอมพิวเตอร์ควอนตัม ดังนั้นหากคุณต้องการเก็บความลับไว้นานกว่า 10 ปี คุณต้องมองให้ลึกกว่านี้
Maarten Bodewes avatar
in flag
อืม ยังไงก็ตาม "ความซื่อสัตย์" ถูกแปลเป็น "ความลับ" ตอนที่ฉันเขียนว่า... น่าแปลกที่บางครั้งจิตใจของมนุษย์ก็ (ไม่) ทำงาน
Score:0
ธง bd

ฉันยังใหม่กับการเข้ารหัส แต่เมื่อเร็ว ๆ นี้ฉันกำลังทำงานในโครงการ SSL นี่คือรายละเอียดเพิ่มเติมใน คำแนะนำเกี่ยวกับกระบวนการจับมือ SSL (TLS 1.2 และ TLS 1.3)

สิ่งที่กระบวนการจับมือ SSL ทำคือสร้างคีย์สมมาตรโดยใช้การเข้ารหัสแบบอสมมาตร

ก่อนขั้นตอนการแลกเปลี่ยนคีย์ ไคลเอ็นต์หรือเซิร์ฟเวอร์ (หรือทั้งสองอย่าง) จะตรวจสอบข้อมูลประจำตัวของอีกฝ่าย ซึ่งกำหนดไว้ใน tls_process_cert_verify() และเซิร์ฟเวอร์จะส่งลายเซ็นของบัฟเฟอร์การจับมือให้กับลูกค้า

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

นี่คือทรัพย์สินของ CIA:
การรักษาความลับ: มาสเตอร์คีย์เข้ารหัสข้อมูลแอปพลิเคชัน
Integrityï¼ แฮชของบัฟเฟอร์การจับมือ
ความถูกต้อง: การตรวจสอบใบรับรองและลายเซ็นของบัฟเฟอร์การจับมือ

คุณสามารถติดตามฟังก์ชัน SSL_Handshake() เพื่อทราบทุกสิ่งที่เกิดขึ้นระหว่างการสร้างมาสเตอร์คีย์

เมื่อจับมือกันเสร็จแล้ว ชั้นบันทึก TLS ใช้ hmac เพื่อปกป้องความสมบูรณ์ของเซสชัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา