สวัสดีครับเพื่อน ๆ ชาว IT กลับมาพบกันอีกครั้งกับ Cloud HM Blog สำหรับวันนี้ผมจะอธิบายในหัวข้อคนส่วนใหญ่อาจจะสับสนกันนะครับ นั่นก็คือเรื่องของ SSL/TLS นั่นเอง หลาย ๆ คนสงสัยกันหรือไม่ครับ ว่าทำไมเค้าต้องเขียน SSL ไว้คู่กับ TLS ผมก็เคยเป็นหนึ่งในคนที่สงสัย แต่ไม่เคยได้หาคำตอบซะที วันนี้เราจะได้รู้กันแล้วว่ามันคืออะไร เรื่องแบบนี้ต้องมีสาเหตุแน่ ๆ ครับ
SSL คืออะไร?
SSL ย่อมาจาก Secure Sockets Layer ซึ่งเป็น Protocol ที่ใช้สำหรับเข้ารหัสและป้องกันข้อมูลในขณะที่มีการส่งข้อมูลกันข้าม Internet พัฒนาขึ้นในปี ค.ศ.1995 โดย Netscape แต่ปัจจุบันได้มีการแทนที่ด้วย Protocol ที่มีการพัฒนาให้ดียิ่งขึ้น เราเรียกกันว่า TLS ซึ่งย่อมาจาก Transport Layer Security ครับ ในบางครั้งเราก็นิยมเรียกกันว่า SSL อยู่นั่นเอง
วิธีสังเกตได้ว่า Website ไหนมีการใช้งาน SSL/TLS จะดูได้จาก URL ครับ
HTTP (Hypertext Transfer Protocol) เป็น Protocol ที่ใช้ในการสื่อสารกันระหว่าง Web Server กับ Web Browser จะนิยมใช้กับ Website โดยทั่วไป
HTTPS (Hypertext Transfer Protocol Secure) จากการที่มีคำว่า Secure เพิ่มเข้ามา รู้กันเลยใช่ไหมครับว่าต้องมี SSL/TLS ติดตั้งอยู่ ซึ่งการทำงานทั่วไปก็จะเหมือนกัน HTTP ครับ
SSL/TLS มีหลักการทำงานอย่างไร?
ขั้นตอนของการป้องกันจะเริ่มจากการสื่อสารที่มีชื่อว่า TLS Handshake แปลเป็นไทยก็คือ การจับมือกันนั่นแหละครับ ซึ่งจะจับเอา 2 ฝั่งมาสื่อสารกันโดยการเปิดการเชื่อมต่อที่มีความปลอดภัยเพื่อทำการแลก Public Key กันโดยในระหว่างขั้นตอน TLS Handshake ทั้ง 2 ฝั่งจะทำการสร้าง Session Key ขึ้นมา ตัว Session Key จะมีการเข้ารหัส และถอดรหัสหลังจากขั้นตอนของ TLS Handshake ดำเนินการเสร็จสิ้นแล้ว โดย Session Key ที่ต่างกันจะใช้ในการเข้ารหัสอีกครั้งกรณีที่มีการสร้าง Session ใหม่
TLS จะช่วยทำให้มั่นใจได้ว่าคนที่ใช้งานฝั่งของ Server หรือ Website เป็นคน ๆ นั้นจริง ๆ และก็ยังช่วยป้องกันการปลอมแปลงข้อมูลโดยการใช้ Message Authentication Code (MAC) ใส่รวมไปในการส่งข้อมูลโดยใช้ TLS นั่นเองด้วยการใช้ TLS ทั้งข้อมูลแบบ HTTP ที่ User ส่งไปหา Website (การคลิก, การกรอกแบบฟอร์มต่าง ๆ และอื่น ๆ) และข้อมูลแบบ HTTP ที่ Website ส่งกลับไปยัง User จะมีการเข้ารหัส ที่ถ้าหากต้องการถอดรหัสก็จำเป็นต้องใช้ Key ครับ
ขยายความจากด้านบน
รูปแบบการเข้ารหัสของ TLS Handshake
การเข้ารหัสแบบ Asymmetric
ความหมายก็คือ เราต้องใช้ 2 Key ที่แตกต่างกันในการสื่อสาร เรียกเทคนิคแบบนี้ว่า Public Key CryptographyPublic Key Cryptography จะใช้ Key อยู่ 2 อัน คือ Public Key ทำให้ Server สามารถเห็นได้จากภายนอกและอีกอันคือ Private Key ที่เก็บไว้เป็นความลับ และใช้เฉพาะที่ฝั่งของ Server เท่านั้น ข้อมูลที่ได้รับการเข้ารหัสด้วย Public Key จะสามารถถอดรหัสได้จากการใช้งาน Private Key นั่นเองครับในระหว่างขั้นตอนของการทำ TLS handshake ฝั่ง User และ Server จะใช้ Public Key และ Private Key ในการแลกเปลี่ยนข้อมูลกันแบบสุ่ม ซึ่งข้อมูลที่แลกเปลี่ยนกันแบบสุ่มนั่นจะใช้ในการสร้าง Key ที่ใช้สำหรับการเข้ารหัส เรียกว่า Session Key ครับ
การเข้ารหัสแบบ Symmetric ด้วย Session Key
วิธีนี้จะไม่เหมือนกับการเข้ารหัสแบบ Asymmetric ตรงที่จะใช้ Key เดียวกันทั้ง 2 ฝั่งในการเข้ารหัส หลังจากเริ่มขั้นตอนการทำ TLS Handshake แล้ว ทั้ง 2 ฝั่งจะใช้ Session Key เดียวกันในการเข้ารหัส หลังจากที่มีการใช้งาน Session Key ไปแล้ว ก็ไม่จำเป็นต้องใช้ Public และ Private Key โดย Session Key จะเป็น Key ที่มีการใช้งานชั่วคราวและก็จะใช้ไม่ได้เมื่อ Session ถูก Terminate แล้ว ถ้ามีการสร้าง Session ใหม่ Session Key ก็จะถูกสร้างขึ้นมาอีกครั้ง
ทำไม SSL/TLS ถึงสำคัญ?
ในสมัยก่อน ข้อมูลที่อยู่บน Web มีการส่งข้อมูลกันในรูปแบบตัวอักษรทำให้หลาย ๆ คนสามารถที่จะอ่านได้ ผู้ไม่หวังดีจึงสามารถปลอมแปลงข้อมูลได้ง่าย เช่น ถ้าลูกค้าเข้าไปดู E-Commerce Website แล้วกดสั่งซื้อสินค้า จะต้องกรอกข้อมูลของบัตรเครดิต ซึ่งข้อมูลนี้จะส่งผ่าน Internet โดยไม่ได้มีการป้องกันใด ๆSSL สร้างมาเพื่อแก้ปัญหาข้างต้น และเป็นการป้องกันความเป็นส่วนตัวของผู้ใช้งาน โดยการเข้ารหัสข้อมูลใด ๆ ก็ตามที่ส่งผ่านระหว่าง User และ Web Server จะโดนแปลงเป็นตัวอักษรมั่ว ๆ ที่ไม่สามารถอ่านได้ ทำให้ข้อมูลของบัตรเครดิตที่ลูกค้าใช้ไม่รั่วไหล โดยจะมีแค่ Website เท่านั้นที่ได้รับข้อมูลไปSSL ยังเพิ่มความอุ่นใจให้กับผู้ใช้งานอีกด้วย เนื่องจาก SSL จะมีการเรียก Authenticate ไปยัง Web Server ซึ่งสำคัญมากเพราะว่าการโจมตีโดยส่วนใหญ่จะมีการสร้าง Website ปลอม ๆ ขึ้นมาเพื่อที่จะให้ผู้ใช้การกรอกข้อมูลสำคัญลงไปเพื่อขโมยข้อมูล อีกทั้ง SSL ก็ยังช่วยให้ข้อมูลไม่ถูกดักจับระหว่างทางเวลาที่ส่งผ่านข้อมูลด้วย Internet
SSL และ TLS คือสิ่งเดียวกันใช่หรือไม่?
SSL เป็น Protocol ที่การพัฒนามานานมากแล้ว แต่ปัจจุบันได้เปลี่ยนชื่อไปใช้เป็น TLS (Transport Layer Security) ซึ่งมีการพัฒนาในปี ค.ศ. 1999 โดยองค์กรชื่อ Internet Engineering Task Force (IETF) ก็คือมีการเปลี่ยนจาก SSL มาเป็น TLS เพราะว่าทีมพัฒนาเปลี่ยนจาก Netscape เป็น IETF ซึ่งความแตกต่างของ Version สุดท้ายของ SSL (Version 3.0) กับ Version แรกของ TLS (Version 1.0) ก็ไม่ได้แตกต่างกันเลย ต่างกันแค่ชื่อเพราะว่าเปลี่ยนผู้ดูแลตั้งแต่นั้นเป็นต้นมา SSL กับ TLS ก็มีความเกี่ยวข้องกันมาตลอด ซึ่งทั้ง 2 คำนี้มักจะถูกเอามาใช้กันให้สับสนอยู่บ่อย ๆ บางคนยังเรียก SSL อยู่ ซึ่งก็หมายถึง TLS นั้นแหละ บางคนก็เรียกว่า SSL/TLS ไปเลย ที่เป็นอย่างนี้ก็เพราะว่า SSL ยังเป็นชื่อที่ทุกคนยังจำได้ดีอยู่ แต่ SSL ไม่ได้มีการ Update มานานแล้วตั้งแต่ปี ค.ศ. 1996 ที่เป็น SSL Version 3.0 และปัจจุบันเค้าเลิกใช้กันไปแล้วเพราะว่ามีปัญหาเกี่ยวกับเรื่องของช่องโหว่หลาย ๆ อย่างใน SSL Protocol ทำให้ผู้เชี่ยวชาญทางด้าน Security แนะนำให้หยุดใช้ ความจริงแล้วก็คือ Web Browser ในปัจจุบันไม่ได้มีการ Support SSL แล้วครับกลับมาดูต่อกันตัวปัจจุบันอย่าง TLS ที่เป็น Protocol ที่ใช้ในปัจจุบัน ถึงแม้ว่าบางคนจะยังเรียกว่า SSL อยู่ แต่ความจริงแล้ว Vendor ที่ให้บริการ SSL ในทุกวันนี้ ก็คือ TLS ทั้งหมดครับ ซึ่งเป็นมาตรฐานมามากกว่า 20 ปี แล้ว แต่หลาย ๆ คนชอบใช้ Keyword ว่า SSL Protection อยู่ ทำให้ Vendor ต้องหยิบ Keyword นี้มาใช้เวลาให้บริการครับ
SSL Certificate คืออะไร? มีแบบไหนให้เลือกใช้บ้าง?
SSL สามารถใช้งานได้กับ Website ที่มี SSL Certificate เท่านั้น (จริง ๆ แล้วคือ TLS Certificate) SSL certificate จะเป็นเหมือนบัตรประจำตัวที่พิสูจน์ว่าคน ๆ นั้นเป็นใคร โดย SSL Certificate จะถูกเก็บและแสดงอยู่บน Web Server หรืออยู่ใน Application Serverสิ่งที่สำคัญที่สุดของ SSL Certificate คือ Public Key ของ Website เนื่องจาก Public Key ใช้เพื่อเข้ารหัส โดยอุปกรณ์ของ User จะเห็น Public Key และใช้ในการสร้าง Key ที่มีเข้ารหัสเพื่อใช้งานกับ Web Server ในขณะที่ Web Server จะมี Private Key ที่เก็บไว้เป็นความลับ โดย Private Key จะถอดรหัสได้ก็ต่อเมื่อมี Public Key ครับ
SSL Certificate จะรับผิดชอบโดย Certificate authorities (CA) ที่จะทำหน้าที่ในการจัดการ ทั้งการออก Certificate และการแก้ไขต่าง ๆ
ในตลาดจะมี SSL Certificate ให้เลือกใช้งานอยู่หลายชนิด บางตัวสามารถใส่ได้แค่ Website เดียว บางตัวก็ใส่ได้หลาย Website ขึ้นอยู่กับชนิดของ SSL Certificate
Single-domain เป็นชนิดที่ใช้สำหรับ Domain เดียวเท่านั้น เช่น www.cloudhm.co.th
Wildcard ลักษณะเหมือนกับแบบ Single-domain Certificate แต่แบบ Wildcard SSL certificate จะใส่ไว้ที่ Domain เดียว แต่จะครอบคลุม Subdomain ทั้งหมด เช่น www.cloudhm.co.th, blog.cloudhm.co.th ถ้าเป็นแบบ Single-domain จะใส่ได้แค่อันเดียว ไม่ www.cloudhm.co.th ก็ blog.cloudhm.co.th
Multi-domain ดูจากชื่อก็รู้แล้วว่า สามารถใส่ SSL Certificate ได้กับหลาย ๆ Domain
SSL certificates ยังมีการแบ่งอีกรูปแบบนึงจากระดับของการตรวจสอบ ดังนี้
Domain Validation แบบนี้จะมีการตรวจสอบไม่เยอะ และราคาถูกที่สุด เป็น SSL Certificate ขั้นต่ำสุดที่ทุก ๆ ธุรกิจควรจะมี SSL Certificate แบบนี้มีไว้เพื่อเป็นพิสูจน์ว่า Website มีการเข้ารหัส
Organization Validation แบบนี้จะมีขั้นตอนเพิ่มขึ้นมาหน่อยตรงที่ CA จะติดต่อผู้รับผิดชอบในองค์กรนั้น ๆ โดยตรง ทำให้มั่นใจได้ว่าถ้ามี SSL Certificate แบบนี้จะมีความน่าเชื่อถือ
Extended Validation สำหรับ SSL Certificate แบบนี้จะมีการทำ Full background check ขององค์กรก่อนที่ Certificate จะสามารถออกให้ได้ แบบนี้จะมีความน่าเชื่อถือสูงที่สุด
แถมให้อีกนิดสำหรับวิธีการสังเกตชนิดของ SSL Certificate นะครับ ให้เข้าไปที่ Google Chrome ครับ (จะสังเกตได้ง่ายที่สุด)
- พิมพ์ URL ของ Website ที่ต้องการจะตรวจสอบ (ตัวอย่างของ Blog นี้คือ https://www.cloudhm.co.th
- ให้สังเกตตรงแม่กุญแจที่มีสีเขียว > ให้คลิกเข้าไปครับ
- คลิกที่ Certificate (Valid)
- ในส่วนของ Issued by จะเป็นบอกว่า CA เจ้าใดเป็นผู้อนุมัติ SSL Certificate ให้ รวมไปถึงบอกชนิดของ SSL Certificate ที่ได้ด้วย
*Tips วิธีสังเกต
บางรายสามารถอ่านจาก Issued by ก็ทราบได้ทันทีว่าเป็นแบบ
DV = Domain Validation
OV = Organization Validation
EV = Extended Validation
หรือบางราย อาจจะต้องนำข้อความใน Issued by ไปค้นหาว่าเป็น SSL Certificate แบบ Type ไหน เช่น Entrust Certification Authority – L1E = Extended Validation
หา SSL Certificate ได้จากที่ไหน
SSL Certificate สามารถหาได้จาก SSL Providers ซึ่งมีอยู่มากมายในท้องตลาด มีทั้งแบบฟรีและไม่ฟรี เช่น IdenTrust, Godaddy, DigiCert, Cloudflare และอื่น ๆ อีกมากมายครับเป็นอย่างไรกันบ้างครับ สำหรับความรู้เพิ่มเติมเกี่ยวกับ SSL/TLS ผมหวังว่าทุกท่านที่เข้ามาอ่านจะได้รับประโยชน์และนำไปปรับใช้ได้อย่างเต็มที่นะครับ หากสนใจบริการของ Cloud HM สามารถติดต่อและดูรายละเอียดเพิ่มเติมได้ที่นี่นะครับ
ขอบคุณครับ
— Cloud HM