ข้ามไปที่เนื้อหาหลัก

ยุคนี้ HTTPS คงยังไม่พอ มันต้อง #HSTS (extra security over HTTPS) มาตรฐานใหม่อินเทอร์เน็ต ที่ควรรู้

ยุคนี้ HTTPS คงยังไม่พอ มันต้อง #HSTS (extra security over HTTPS) มาตรฐานใหม่อินเทอร์เน็ต ที่ควรรู้


เมื่อก่อนเราใช้ HTTP protocol ในการสื่อสาร ข้อเสีย ที่ชัดเจนเลยคือ หากโดนดักข้อมูล จะดักแล้วอ่านออกมาได้หมดแบบชิวๆเลยแหล่ะ
คราวนี้มันเลยเกิดทางสวรรค์ขึ้นมา คือ HTTPS เพื่อให้มีการเข้ารหัสระหว่างการรับส่งข้อมูล แต่ก็นั่นแหล่ะครับ มันก็มีคนผู้คิดค้นหาวิธีได้อีก ซึ่ง SSLstrip เป็นหนึ่งในวิธีที่นิยมใช้กันในการทำ Man-in-the-middle เพื่อดักข้อมูล โดยหั่น https ออกระหว่างทางให้กลายเป็น http แล้วคราวนี้ attacker ก็แอบอ่านได้เลยทันที
อีกทั้งปัญหา Mixed content อีกบางเว็บ url เป็น https จริง แต่ดันฝังรูป js css หรือมีคนหลอกโพสต์ link ให้คลิกกลายเป็น http ธรรมดา cookie ก็หลุดอยู่ดี
เลยมีเจ้านี่ขึ้นมา แท่มมม
มาตรฐานอินเตอร์เน็ตออกใหม่มาชื่อ HTTP Strict Transport Security (HSTS)
ถ้าแปลตรงตัวเลย Strict ก็คือ เข้มงวด
Transport Security ก็คือ การส่งมูล
ดังนั้นรวมๆก็ควร การส่งข้อมูลแบบเข้มงวดขึ้นโดยฝั่ง Server จะบังคับให้ Web Browser คุยผ่าน HTTPS เท่านั้น
มาดูกันดีกว่า ว่ามันทำงานยังไงจะได้เห็นภาพมากขึ้น
ปกติการขอ Request ระหว่าง Client กับ Web Server จะเป็นลักษณะดังนี้
HTTP — —Request — -> Web Server
HTTP <— —Response — - Web Server
HTTP — — Request — -> Web Server
HTTPS < — —Response — — Web Server
HSTS จะสนใจแค่เคสนี้ :
HTTPS — — Request — -> Web Server
HTTPS < — —Response — — Web Server
“ถ้าเธอจะคุยกับเราอ่ะ เธอมาแบบธรรมดา (HTTP) เราไม่คุยน่ะ ไปทำตัวเองให้ปลอดภัยมาก่อน (HTTPS) ตั้งแต่แรก แล้วเราค่อยมาคุยกันใหม่ (Policy Enforcement)”
แล้วคราวนี้มันจะไปบอก Web server ได้ไงล่ะ ว่าไม่ให้มาคุย HTTP แล้ว
สิ่งที่ทำได้คือ ใช้ Header ของ Response เวลาส่งกลับไปบอก
มาดูตัวอย่าง HSTS header กันดีกว่า ปกติจะมี Parameter หลายตัว แต่ส่วนใหญ่ก็จะใช้กันลักษณะประมาณนี้

Strict-Transport-Securitymax-age=63072000; includeSubDomains; preload

โดยจะระบุเลยว่า
1. ต้องคุยกันแบบเป็น Strict-Transport-Security เท่านั้นนะ ต้องปลอดภัยน่ะ
2. max-age = บังคับใช้ HSTS อยู่กี่วินาที หลัง Request ไป เช่น ส่ง header กลับไปบอกว่า 1 ปี แสดงว่า Server จะไม่คุย HTTP กับ Web Browser เลย เป็นเวลา 1 ปี Browser ก็จะจำแล้ว Count Down ลงไปเรื่อยๆ จนกว่าจะหมดเวลา พอหมด ก็ส่งไปใหม่เป็น Loop เดิม
3. includeSubDomains บอกว่า หลังจากนี้ถ้าจะคุยกับ Sub Domains ของเรา ก็ต้องคุยแบบ HSTS ด้วยน่ะจ๊ะ
HSTS:
HTTP — — Request — -> Server (Nooooooooooooooooooo!)
HTTP < — — ส่งมาใหม่นะหนู๋ มาแบบ HTTPS น่ะ — — Server
HTTPS— — Request — -> Web Server (Oh Yessssssss!)
HTTPS < — — อยากได้นี่ใช้ไหม อ่ะทางปลอดภัยแล้ว เราส่งให้— — Server
อย่าลืมว่า Server ต้องใส่ SSL ถูกต้องแล้วด้วย และเปิด port 443 HTTPS
หากถามว่ามี Browser ไหนรองรับแล้วยัง ล่าสุด browser หลัก ทำงานได้หมดทุกตัว


ต่างประเทศก็ทยอยทำไปเรียบร้อย ล่าสุด .gov ของอเมริกาทำ HSTS ใส่ใน browser กันแล้ว รวมถึง Facebook, Twitter, Google ก็มาครบเรียบร้อย
.gov


google

facebook
ส่วนในไทย ก็เห็นมีมาเรื่อยๆ เยอะขึ้นแล้วครับ ดูได้จากที่ส่งมาเช็คกับ Google Preload List พอหาดูเจอ ที่คุ้นๆ เช่น https://blognone.com , https://www.wpthaiuser.com/ กับ .co.th อีกประมาณ 12 บริษัท
ส่วนตัวคิดว่าในเว็บที่มีรับส่งข้อมูลปลอดภัยสูง ก็ควรจะบังคับใช้ HSTS ได้แล้ว อนาคตต่อไปจะเป็นต่อไปก็ต้องรอดูกัน
ปล. สำหรับ nexthop.co.th เองเราก็เปิด HSTS แล้ว ส่งข้อมูลไปแล้ว และมีชื่อใน Preload List (บรรทัดที่ 50147)



ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

วิธีใช้ Google Form ส่งข้อความเข้า LINE Notify

วิธีใช้ Google Form ส่งข้อความเข้า LINE Notify           ขั้นตอนต่อไปนี้จะข้ามส่วนของรายละเอียดบางอย่างไป ซึ่งก่อนจะทำตรงนี้ควรจะรู้แล้วว่า LINE Notify ใช้ทำอะไร และ Access Token จะเอามาจากไหน แต่จะพยายามอธิบายให้ครอบคลุมที่สุดก็แล้วกัน Update: 2019/06/10 ในท้ายบทความได้เพิ่มคำอธิบายเรื่องการส่งข้อมูลหลายกล่องข้อมูล (คอลั่ม) พร้อมกับ code ที่วนลูปข้อมูลทุกกล่อง เพื่อความสะดวกในการส่งข้อมูลในรูปแบบเดิม สร้าง Google Form วิธีสร้างก็ง่ายแสนง่าย เข้าไปที่  https://docs.google.com/forms  จากนั้น คลิกตรงเครื่องหมาย + ตามภาพ จะได้ form หน้าตาแบบนี้มา แก้ไขตามสะดวกเลย ตัวอย่างเอาแบบนี้แล้วกัน จะลองส่งข้อความคลิกที่รูป “ตา” พิมพ์ข้อความอะไรก็ได้ แล้ว กด Submit โลด กลับไปหน้า Form ของเราใน tab แรก มันก็จะมี RESPONSES เข้ามา เมื่อคลิกดูก็จะพบข้อความที่เราเพิ่งพิมพ์ไปเมื่อตะกี้ ใส่ code ใน Script Editor คลิกที่ จุด 3 จุด ด้านขวาบน แล้วเลือก  <> Script Editor จะพบหน้าเปล่าๆ ที่ไม่คุ้นเคย ตรงนี้แหละที่เราจะมาใส่ code ใ...

ทำความเข้าใจ LM, NTLM, NTLMv2

ทำความเข้าใจ LM, NTLM, NTLMv2  วันนี้เราจะมาทำความเข้าใจเกี่ยวกับรูปแบบการเก็บ password ของ Windows โดยแต่ก่อนจนถึงปัจจุบันก็มีพัฒนาการมาเรื่อยๆครับ ซึ่งจะเริ่มจาก LM (Lan Manager) hash โดย LM นั้นเป็นรูปแบบดั้งเดิมในการเก็บ password ของ Windows ตั้งแต่ยุค 1980 ซึ่งในช่วงนั้นยังมีจำนวน charset ที่ยังจำกัดอยู่(16-bits characters) ซึ่งทำให้การ crack password นั้นทำได้ง่ายมากโดยดึงจาก SAM database บน Windows หรือว่า NTDS บน Domain Controller (Active Directory) ได้เลย โดยขั้นตอนการเปลี่ยน password อยู่ในรูปแบบ LM hash คือ เปลี่ยนอักษรทั้งหมดเป็นตัวใหญ่ หากตัวอักษรไม่ครบ 14 ตัวอักษรก็จะเติมตัวอักษรทั้งหมดให้เต็มด้วย NULL characters แบ่งเป็น 2 กลุ่ม กลุ่มละ 7 ตัวอักษร สร้าง DES key จาก character 7 ตัวทั้ง 2 กลุ่ม ก็จะได้ DES key 2 ชุด (ชุดละ 64 bit) นำ DES key ไปเข้ารหัส static string “KGS!@#$%” ด้วย DES (ECB) นำ encrypted strings ทั้ง 2 อันมาต่อกัน ก็จะได้เป็น LM Hash เช่น สมมติ password เป็น password password => password000000 PASSWORD000000 PASSWOR...

The Spiral Model

The  Spiral  Model                                                 Spiral  Model  คือ   Software  Development  Process  ที่ถูกพัฒนาขึ้นโดยเอาจุดแข็งของ   Development  Model  อื่นที่ดีอยู่แล้วมาประยุกต์  ( waterfall  model )  และเพิ่มเติมส่วนของการวิเคราะห์  และตีค่าความเสี่ยงที่เกิดเพื่อจะได้ทราบว่าจุดใดมีความเสี่ยงมากน้อยขนาดไหน  จะได้หาวิธีลดความเสี่ยง  ซึ่งความเสี่ยงเป็นสาเหตุ  ที่ทำให้การพัฒนาไม่ประสบความสำเร็จ  การวิเคราะห์หรือต้นเหตุของความเสี่ยง  ก็เพื่อที่จะหาวิธีการที่จะทำให้เกิดความเสี่ยงน้อยที่สุด  รวมถึงวิธีการแก้ไขเมื่อเกิดเหตุการที่ไม่คาดคิดเกิดขึ้น  ถ้าความเสี่ยงน้อยลง  ก็ทำให้   Cost  หรือ ต้นทุนที่ใช้ก็จะลดลงต...