Category: Security


ในช่วงปีที่ผ่านมามีคำถามเกี่ยวกับ กรณีที่เครื่องคิดไวรัสเรียกค่าไถ่หรือที่เรียกว่า ransomware ทางออกที่คุณทำได้มีไม่มากนักครับ โดยได้แก่
1) นำ backup ที่มีอยู่มา restore ซะ วิธีนี้เป็นวิธีที่ดีที่สุดครับ เพราะมีข้อมูลกลับมาให้ใช้แน่ๆ เม้ว่าอาจเก่าไปบ้าง แต่หลายๆ ครั้งสิ่งที่เกิดขึ้นคือมีแต่ server backup ไม่มี client backup งั้นไปดูข้อค่อไป
2) ถ้าไม่มี client backup แต่ยังเปิดฟีเจอร์ volume shadow copies หรือ previous version ก็ยังสามารถ restore ได้นะครับ
3) จ่ายเงินค่าไถ่ครับ วิธีนี้จะได้ผลก็ต่อเมื่อคุณจ่ายเงินภายในเวลาที่เค้ากำหนดก่อนที่จะลบ encryption key ไป รวมทั้งคุณติด ransomware เพียงแค่ตัวเดียวเท่านั้น เพราะถ้าติด 2 ตัว แล้วตัวไหนเข้ารหัสก่อน เข้าหลังจะรู้ได้อย่างไร
4) ทำใจครับ
หลังจากเลือกแนวทางแก้ไขได้แล้ว สิ่งที่ควรต้องทำในอนาคตเพื่อป้องกัน ransomware คืออัพเดต virus signature ให้ใหม่อยู่เสมอ และทำ client backup หรือ file server backup อย่างสม่ำเสมอเช่นกันครับ

ปล. สร้าง backup job กันแล้วอย่าลือทดสอบ restore อย่างน้อยปีละ 1 ครั้งด้วยนะครับ เพื่อจะได้มั่นใจว่าที่ backup ไป สามารถ restore กลับมาใช้งานได้จริง

Advertisement

โดยปกติแล้ว 1 public IP address (1 TCP port: TCP\443) จะติดตั้ง SSL certificate ได้แค่ใบเดียว เนื่องจากกระบวนการคุยของ HTTPS
1) TCP 3-way handcheck
2) SSL/TLS request
3) HTTP request
ซึ่งจะทำให้ web server ไม่ทราบว่า client ต้องการเช้าเวปไหน จึงจะส่ง certificate ได้แค่ 1 ใบเท่านั้น

แต่จากปัญหาดังกล่าวเมื่อใช้งานกับ web server ที่มีเวปไซต์ในเครื่องจำนวนมาก หรือที่ Apache เรียกว่า virtual host ก็จะมีเพียงเวปไซต์เดียวที่สามารถใช้งาน SSL ได้ ดังนั้นจึงมีการปรับปรุงขึ้นโดยเรียกว่า Server Name Indication (SNI) ซึ่งในขั้นตอนที่ 2 SSL/TLS request จะมีการส่ง host address เช่นเดียวกับ http/1.1 ในขั้นตอนก่อนที่ web server จะส่ง SSL certificate ซึ่งทำให้ web server ทราบได้ว่า client จะใช้เวปไซต์ไหน แล้วจึงเลือกส่ง SSL certificate ให้เหมาะกับ client นั้นๆ ได้

โดยในปัจจุบันทั้ง web server และ browser ก็สนับสนุนการทำงาน SNI กันหมดแล้วครับ

SSL certificate ที่เราใช้งานจะมี attribute ที่บอกว่า cetificate ยังใช้ได้หรือไม่ ก็คือ Certificate Revocation List (หรือ CRL)
CRL_1

โดยทั่วไป CRL จะไม่ถูกใช้งานยกเง้นกรณีที่ต้องการยกเลิก certificate เดิม ทางเจ้าของเวปไซต์หรือคนที่ออก certificate ก็จะสั่งยกเลิก (revoke) certificate โดยการใส่ serial number ของ certificate ที่ยกเลิกไปตาม URL ที่ระบุไว้

รูปข้างล่างผมเปิดไปตาม URL ที่ระบุไว้ใน certifiace คือ http://crl.godaddy.com/gdig2s1-119.crl ก็จะพบ serial number ของ certificate อื่นที่ถูกยกเลิกมารวมอยู่ใน list
CRL_2

แม้ว่า bcrypt จะทำงานช้ากว่า MD5 และ SHA256 แต่นั่นก็ไม่ใช่เหตุผลที่ควรใช้ bcrypt เพื่อ hash password แต่เป็นเพราะการคำนวณ hash โดยใช้ GPU (NVidia หรือ ATI) มาช่วยทำให้เร็วขึ้นได้ ถ้าอยากให้เร็วขึ้นอีกก็เพิ่ม GPU เป็น 2, 4, หรือ 8 ตัว ซึ่งอัลกอริทึมอย่าง MD5 และ SHA256 สามารถเร่งให้คำนวณได้เร็วขึ้นด้วย GPU ได้ แต่อัลกอริทึม bcrypt การนำ GPU มาช่วยไม่ได้เพิ่มประสิทธิภาพมากนัก ดังนั้นเหตุผลที่แนะนำให้ใช้ bcrypt กับพาสเวิร์ดคือเวลาที่ใช้ในการ brute force จะนานกว่าอัลกอริทึมอื่นเนื่องจากไม่สามารถนำ GPU มาช่วยได้

แต่อย่างไรก็ตามหากมีเวลามากพอ bcrypt ก็จะ brute force ได้อยู่ดีเหมือนกับ hash function หรือ encryption อื่นๆ ครับ

ถ้าใครสนใจสามารถอื่นข้อมูลเพิ่มเติมได้จาก
http://blog.codinghorror.com/speed-hashing/

จาก post ก่อนโน้น SSL Certificate มีกี่แบบ แตกต่างกันอย่างไร ล่าสุดผมพบว่ามีเวปไซต์ที่ใช้ทั้ง SAN และ Wildcard ได้ในใบเดียวกัน ไม่ใช่คนอื่นไกลเลย แต่เป็นอากู๋ Google เอง

โดยมีรายละเอียดตามด้านล่างครับ
2015-06-13_SAN_&_Wildcard_SSL_1


นอกจากนี้ Google ยังมี Intermediate certificate authorities เป็นของตัวเองอีกด้วย ถ้าออก cert ไม่เยอะจริงไม่คุ้มค่าตั้งเองนะเนี่ย
2015-06-13_SAN_&_Wildcard_SSL_2

ต้องขออ้างถึง SSL หรือ Secure Sockets Layer ซึ่งเป็นโพรโตคอลที่ใช้ในการส่งข้อมูลที่เป็นความลับ โดยใช้เทคนิค asymmetric cryptography และได้นำมาประยุกต์ใช้กับโพรโตคอล HTTP เป็น HTTPS

ซึ่งการทำงานของ HTTPS ตัวเวปเซิร์ฟเวอร์จะบอกว่าถ้าอยากส่งข้อมูลมาหาเวปเซิร์ฟเวอร์ให้เข้ารหัสด้วย public key แบบนี้ ปัญหาคือแล้วเราจะรู้ได้อย่างไรว่า public key ที่บอกมาเป็นของจริง ไม่โดน man-in-the-middle attack ดังนั้นจึงต้องพึ่งใบรับรองหรือ certificate โดยมันจะรับรองว่า public key ที่ใช้เข้ารหัสลับที่เวปต่างๆ กล่าวอ้างนั้นเป็นตัวจริง ส่วนคนที่ออกใบรับรองก็มักเป็นบริษัทใหญ่ๆ โตๆ ซึ่งเค้าจะมี deal กะ Microsoft, Mozilla, และ Google อยู่เพื่อบอกว่าเค้าเป็นคนออกใบรับรองได้นะ

สำหรับชนิดของใบรับรองที่ใช้อยู่ในปัจจุบันมี 4 แบบ

    1) แบบธรรมดา

      ราคาถูกสุด ตั้งแต่หลักร้อยไปหลักพันบาท ใช้ได้แค่เวปเดียว โดเมนเดียว
      SSL_Certificate_01
    2) Wild Card SSL Certificate

      เหมือนคำสั่งใน command line แบบ dir *.* นั่นแหละครับ คือเป็น *.domain.com คือใช้กับ sub domain อะไรก็ได้ของให้ลงท้ายด้วย .domain.com ดูตัวอย่างได้ที่ https://securityalliance.mcafee.com/
      SSL_Certificate_02
    3) Extended Validation SSL Certificate

      หรือ EV SSL นอกเหนือจะใช้เพื่อเข้ารหัสลับแล้วก่อนจะออก certificate ผู้รับรองจะต้องมาตรวจสอบเจ้าของโดเมนด้วยว่า อยู่ที่ไหน ทำธุรกิจจริงหรือเปล่า ซึ่งจะสร้างความน่าเชื่อถือให้กับผู้ใช้งานมากขึ้น เพราะไม่ใช่แค่จ่ายเงินผ่านบัตรเครดิตแล้วจบแบบอื่นๆ ซึ่ง Web browser ที่สนับสนุนจะแสดงสีเขียวในช่อง address bar ครับ ตัวอย่างดูตาม URL ของอินเทอร์เน็ตแบ้งค์กิ้งของธนาคารในบ้านเราได้เลยครับ
      SSL_Certificate_03
    4) SAN SSL Certificate

      ไม่ได้เกี่ยวอะไรกับ Storage Area Network นะครับ แต่มันย่อมาจาก Subject Alternative Name มันจะอยู่กึงกลางระหว่างแบบแรกและแบบที่สองคือสามารถใส่หลายๆ ชื่อได้ แต่ไม่ถึงขั้น unlimited แบบ wild card โดยเราต้องระบุชื่อลงไปว่าจะใช้กับ domain ชื่ออะไรบ้าง ตัวอย่างไปดูได้ที่ https://email.vmware.com ครับ
      SSL_Certificate_04b

บางท่านอาจเข้าใจผิดว่า EV SSL จะมีความแข็งแกร่งกว่า ถอดรหัสยากกว่า แต่ความจริงไม่ใช่ครับ ทั้ง 4 แบบหากความยาวของคีย์เท่ากันก็มีความแข็งแกร่งเท่ากัน ความยาวมากสุดปัจจุบันที่ใช้กันทั่วไปน่าจะ 2,048 บิทนะครับ สามารถใช้เข้ารหัสลับได้เหมือนกัน ป้องกัน man-in-the-middle-attack ได้เหมือนกัน ถ้ามองแค่แง่ความต้องการด้านความปลอดภัยใช้แบบธรรมดาก็ได้ครับ ประหยัดดี (ถ้าอยากประหยัดสุดไม่ต้องซื้อ cert ก็ได้ ใช้เป็น self-signed) แต่หากมองด้านความน่าเชื่อถือ EV SSL ก็จะดีกว่า แต่ถ้าต้องใช้กับหลายเซิร์ฟเวอร์หรือหลายชื่อก็คงต้องดูเรื่องของ SAN กับ Wild Card ครับ

นอกจากนี้ EV SSL สามารถใช้งานร่วมกับ SAN ก็ได้เช่นกันครับ แต่ผมยังหาตัวอย่างเวปที่ใจป้ำไม่เจอเหมือนกัน 😀