ในปัจจุบัน ผู้คนเชื่อมต่อกับเว็บมากกว่าที่เคย และจากหลายๆ ที่
เราเชื่อมต่อกับแล็ปท็อป โทรศัพท์ และแท็บเล็ต และอาจจะพอๆ กันกับอุปกรณ์ส่วนตัวและอุปกรณ์เสริมต่างๆ ด้วย เราเข้าถึงอินเทอร์เน็ตจากเครือข่ายที่ไม่น่าเชื่อถือและบางครั้งก็เป็นภัย เนื่องจากชีวิตส่วนใหญ่ของเราต้องวุ่นวายกับการใช้งานออนไลน์ เราจึงจำเป็นต้องดำเนินการเพื่อปกป้องข้อมูลและผู้ใช้ของเรา
เหนือสิ่งอื่นใด ในฐานะนักพัฒนาซอฟต์แวร์ เราจําเป็นต้องเข้าใจถึงความจําเป็นและการใช้งานได้จริงของ SSL
SSL คืออะไร ย่อมาจาก Secure Sockets Layer ซึ่งเป็นโปรโตคอลการเข้ารหัสที่ออกแบบมาเพื่อมอบความปลอดภัยในการสื่อสารผ่านอินเทอร์เน็ต โดยจะรับประกันความเป็นส่วนตัวผ่านการเข้ารหัสและความสมบูรณ์ เพื่อป้องกันการสอดแนมหรือรบกวนการเชื่อมต่ออินเทอร์เน็ต SSL มีข้อบกพร่อง แต่ก็เป็นวิธีการชั้นนำและเป็นวิธีเดียวที่จะช่วยรับประกันความปลอดภัยให้กับการสื่อสารข้อมูลทุกรูปแบบบนอินเทอร์เน็ต
จากข้อมูลของ SSL Pulse ปีที่ผ่านมาเรามีการใช้ SSL เพียง 15% โดยประมาณ แต่ปัจจุบันเรามีผู้นำไปใช้มากกว่า 50%
ตัวย่อสองคำ:
TLS: สำหรับ Intent และวัตถุประสงค์ส่วนใหญ่เหมือนกับ SSL กล่าวให้ชัดเจนคือ ได้เปลี่ยนชื่อ SSL 3.1 เป็น TLS และ TLS เป็นชื่อมาตรฐาน IETF แต่ใช้แทนกันได้
HTTPS: คือ HTTP บน SSL ซึ่งเป็นเพียงการซ้อนความสามารถในการรักษาความปลอดภัยของ SSL และ HTTP มาตรฐานซ้อนกัน วิธีแรกคือ แฮนด์เชคไคลเอ็นต์และเซิร์ฟเวอร์ โดยใช้วิทยาการเข้ารหัสคีย์สาธารณะ/คีย์ส่วนตัวในการสร้างคีย์ที่ใช้ร่วมกัน ซึ่งใช้โดยโปรโตคอล SSL ส่วนที่สองเพื่อเข้ารหัสการสื่อสาร
เครือข่ายบนอินเทอร์เน็ตอาจให้ความรู้สึกปลอดภัย ฉับไว ฉับไว ให้ความรู้สึกเหมือนเรากำลังพูดคุยกับเว็บไซต์โดยตรง แต่จริงๆ แล้ว มันไม่ได้เป็นความสัมพันธ์โดยตรง การสื่อสารของเราเกิดขึ้นผ่านเราเตอร์ Wi-Fi, ISP หรือพร็อกซีตัวกลางอื่นๆ ระหว่างอุปกรณ์ของคุณและเว็บไซต์ หากไม่มี HTTPS การสื่อสารทั้งหมดของเราจะเป็นข้อความธรรมดา
แต่ปัญหาคือผู้ใช้แทบจะไม่พิมพ์ URL แบบเต็มที่ระบุ HTTPS หรือคลิกลิงก์โดยใช้ HTTP ที่แย่กว่านั้นคือ คุณสามารถติดตั้งการโจมตีแบบ (wo)man-in-the-middle และแทนที่ HTTPS ด้วย HTTP ได้ เครื่องมือที่เรียกว่า SSLstrip ที่นำมาใช้ในปี 2009 สามารถทำเช่นนั้นได้ Firesheep จากปี 2010 ได้ฟังการเปิดเครือข่าย Wi-Fi เพื่อให้คุกกี้ที่ส่งไปในที่โล่ง ซึ่งหมายความว่าคุณสามารถฟังในแชทหรือลงชื่อเข้าสู่ระบบบัญชี Facebook ของคนอื่นได้
แต่ SSL มีราคาถูก (ค่อนข้าง) ถูก รวดเร็ว และใช้งานง่าย (ลองดูที่ ssllabs.com และหนังสือเรื่อง High Performance Browser Networking ของ Ilya Grigorik) สำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์ คุณสามารถรับใบรับรองฟรีได้จาก startssl.com! การปักหมุดคีย์สาธารณะออกแบบมาเพื่อช่วยให้ผู้ให้บริการเว็บไซต์สามารถจำกัดผู้ออกใบรับรองที่สามารถออกใบรับรองสำหรับเว็บไซต์ของตนได้จริง
"ในเดือนมกราคมของปีนี้ (2010) Gmail เปลี่ยนไปใช้ HTTPS กับทุกอย่างโดยค่าเริ่มต้น .. เพื่อที่จะทำเช่นนี้ เราไม่ต้องมีเครื่องจักรเพิ่มเติมและไม่ต้องมีฮาร์ดแวร์พิเศษ สำหรับเครื่องฟรอนท์เอนด์ที่ใช้งานจริงของเรา SSL รองรับการใช้งาน CPU น้อยกว่า 1%, หน่วยความจำน้อยกว่า 10 KB ต่อการเชื่อมต่อ และโอเวอร์เฮดเครือข่ายน้อยกว่า 2%...
ถ้าคุณหยุดอ่านตอนนี้ คุณต้องจำไว้อย่างเดียวว่า SSL ไม่ได้มีค่าใช้จ่ายในการคำนวณอีกต่อไป"
– Overclocking SSL, Adam Langley (Google)
สุดท้ายนี้ ข้อบกพร่อง 2-3 อย่างที่เราพบบ่อยที่สุด ได้แก่
- เนื้อหาผสม: เว็บไซต์ที่ใช้ HTTP และ HTTPS ผู้ใช้จะรำคาญเพราะต้องคลิกปุ่มสิทธิ์เพื่อโหลดเนื้อหา (จริงๆ แล้ว Chrome และ Firefox บล็อกเนื้อหาผสมจาก iframe) ตรวจสอบว่าทรัพยากรทั้งหมดในหน้า HTTPS โหลดโดยใช้ HTTPS โดยใช้ URL แบบสัมพัทธ์หรือแบบสัมพัทธ์ เช่น
<style src="//foo.com/style.css">
- คุกกี้ที่ไม่ปลอดภัย: ส่งในการล้างข้อมูลผ่านการเชื่อมต่อ HTTP คุณหลีกเลี่ยงปัญหานี้ได้โดยการตั้งค่าแอตทริบิวต์ที่ปลอดภัยในส่วนหัวของคุกกี้ นอกจากนี้ คุณยังใช้ส่วนหัว "Strict Transport Security" ใหม่เพื่อกำหนด SSL Transport Security (HSTS) ได้ด้วย
แย่งลูกกลับมา
- หากคุณให้ความสำคัญกับความเป็นส่วนตัวและความถูกต้องของข้อมูลผู้ใช้ คุณต้องใช้ SSL ซึ่งเร็วกว่า ง่ายกว่า และถูกกว่าที่เคย
- หลีกเลี่ยง Getcha ในการติดตั้งใช้งานที่พบได้บ่อย เช่น ข้อบกพร่องของเนื้อหาผสม หรือการไม่ตั้งค่าบิตของส่วนหัว HTTP ที่ถูกต้อง
- ใช้ URL สัมพัทธ์หรือ URL สัมพัทธ์ของรูปแบบ
- ลองดูตัวอย่างสุดเจ๋งใหม่ๆ เช่น HSTS และการปักหมุดใบรับรอง
สไลด์: หากมี SSL