ดาวน์โหลดโปรแกรมฟรี
       
   สมัครสมาชิก   เข้าสู่ระบบ
THAIWARE.COM | ทิปส์ไอที
 

Encryption, Hashing คืออะไร ? และแตกต่างกันอย่างไร ? พร้อมรู้จักการ Salting ว่ามันคืออะไร ?

Encryption, Hashing คืออะไร ? และแตกต่างกันอย่างไร ? พร้อมรู้จักการ Salting ว่ามันคืออะไร ?
ภาพจาก : https://www.freepik.com/free-vector/personal-data-protection-concept-with-3d-computer-shielf-with-fingerprint-human-character-isometric_17465943.htm
เมื่อ :
|  ผู้เข้าชม : 19,669
เขียนโดย :
0 Encryption%2C+Hashing+%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3+%3F+%E0%B9%81%E0%B8%A5%E0%B8%B0%E0%B9%81%E0%B8%95%E0%B8%81%E0%B8%95%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B8%AD%E0%B8%A2%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B9%84%E0%B8%A3+%3F+%E0%B8%9E%E0%B8%A3%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81%E0%B8%81%E0%B8%B2%E0%B8%A3+Salting+%E0%B8%A7%E0%B9%88%E0%B8%B2%E0%B8%A1%E0%B8%B1%E0%B8%99%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3+%3F
A- A+
แชร์หน้าเว็บนี้ :

Encryption, Hashing และ Salting แตกต่างกันอย่างไร ?

รู้หรือไม่ว่า ? ในการใช้งาน อินเทอร์เน็ต (Internet) ข้อมูลที่แลกเปลี่ยนกันในโลกดิจิทัลนั้น ส่วนใหญ่จะมีการเข้ารหัส (Cryptographic) เพื่อเปลี่ยนข้อมูลให้มีรูปแบบแตกต่างจากไปเดิม ด้วยเหตุผลด้านการรักษาความปลอดภัยของข้อมูล ไม่ให้ถูกแฮกเกอร์ผู้ไม่ประสงค์ดีโจมตีนำข้อมูลของเราไปใช้ในการแสวงหาผลประโยชน์ได้ง่าย ๆ

บทความเกี่ยวกับ Encryption อื่นๆ

ซึ่งรูปแบบการเข้ารหัสข้อมูลที่นิยมใช้งานกันจะมีอยู่ 3 เทคนิค คือ Encryption, Hashing และ Salting โดย 3 เทคนิคนี้มันคืออะไร ? และ มีความแตกต่างกันอย่างไร ? ในบทความนี้จะมาอธิบายหลักการทำงานขั้นพื้นฐานของเทคนิคดังกล่าวให้เข้าใจกันมากยิ่งขึ้น ถ้าพร้อมแล้ว มาดูกันต่อเลย

เนื้อหาภายในบทความ

 

 

Encryption คืออะไร ?

Encryption ถ้าหากแปลเป็นภาษาไทยก็คือ มันเป็น "การเข้ารหัส" เพื่อให้ข้อมูลสามารถเปิดอ่านข้อมูลต่างๆ ได้เฉพาะผู้ที่มีกุญแจสำหรับถอดรหัสเท่านั้น เทคนิคนี้จะมีการทำงานอยู่ 2 ทิศทาง คือการเข้ารหัส (Encryption) และการถอดรหัส (Decryption) นั่นเอง

การเข้ารหัสแบบ Encryption จะมีการทำงานที่แตกต่างจากการทำ Hashing อยู่พอสมควร ทั้งวิธี และด้วยวัตถุประสงค์ของการใช้งาน

โดยในการเข้ารหัสแบบ Encryption นั้นเราจะต้องใช้สิ่งที่เรียกกันว่า "รหัสลับ" (Cipher) ซึ่งเป็นอัลกอริทึมที่กำหนดขั้นตอนการทำงานของวิธีเข้ารหัส และถอดรหัสเอาไว้ หรือเราจะเรียกอัลกอริทึมนี้ว่าเป็น "กุญแจเข้ารหัส (Encryption Key) " ก็ได้เช่นกัน

การ Encryption นั้น ถือว่า ไม่ใช่นวัตกรรมใหม่ที่เพิ่งถูกคิดค้นในยุคดิจิทัล มนุษย์มีการเข้ารหัสเพื่อปกป้องข้อมูลมาเป็นเวลายาวนาน โดยสามารถย้อนกลับไปได้ถึงช่วง 1,900 ปีก่อนคริสตกาล ที่มีการค้นพบว่าข้อความที่จารึกในสุสานของฟาโรห์มีอักษรฮีโรกลีฟิคถูกเข้ารหัสเอาไว้ด้วย

หรือในยุคที่โรมันทรงอำนาจ กาอิอุส ยูลิอุส ไกซาร์ หรือที่เรารู้จักกันดีในนามของ จูเลียส ซีซาร์ ได้คิดค้นวิธีการเข้ารหัส พื้นฐานแบบง่าย ๆ ขึ้นมา เรียกว่า "รหัสซีซาร์" (Caesar Cipher, Shift Cipher, Caesar Code หรือ Caesar Shift ) ด้วยการใช้วิธีขยับตัวอักษรนับถอยหลังไปหลายตำแหน่ง มาแทนที่ตัวอักษรที่ต้องการ เพื่อป้องกันไม่ให้ข้าศึกล่วงรู้ความลับในจดหมาย

Encryption ทำงานอย่างไร ?

อย่างที่เรากล่าวไปแล้วว่า Encryption นั้น จะใช้อัลกอริทึมในการกำหนดวิธีการเข้ารหัส และถอดรหัส หรือจะบอกว่ามันเป็น "กฏ" ก็ว่าได้ หากเรารู้กฏ เราก็จะสามารถเข้ารหัสข้อมูลตามกฏที่วางไว้ และถอดรหัสโดยใช้กฏดังกล่าวได้เช่นกัน

ยกตัวอย่างง่าย ๆ โดยอ้างอิงจากวิธีเข้ารหัสซีซาร์ สมมติว่าเรากำหนดให้กฏ คือ ตัวอักษรขยับไป 4 ตัวอักษร "A" ก็จะเท่ากับ "D" ลองเข้ารหัสคำว่า "THAIWARE" ดู ก็จะได้เป็นข้อความที่ถูกเข้ารหัสแล้วว่า "WKDLZDUH"

Encryption, Hashing คืออะไร ? และแตกต่างกันอย่างไร ? พร้อมรู้จักการ Salting ว่ามันคืออะไร ?

แน่นอนว่า การเข้ารหัสข้อมูล ที่เราใช้งานบนโลกอินเทอร์เน็ตไม่ได้มีความเรียบง่ายแบบนี้ ตัว Encryption Key ในปัจจุบันที่เราใช้งานกันในทุกวันนี้ มีความซับซ้อนมาก อย่างในเครือข่ายไร้สาย (Wireless Network) อย่าง Wi-Fi นั้นข้อมูลก็จะมีการเข้ารหัสข้อมูล ด้วยเทคโนโลยี ที่เป็นมาตรฐานความปลอดภัยอย่าง WEP, WPA2 หรือ WPA 3

ซึ่งข้อมูลเหล่านี้จะเป็นข้อมูลแบบ 128 บิต (Bits) ในขณะที่หากเป็นข้อมูลสำคัญที่รัฐบาล หรือทางทหารใช้ก็จะเป็นแบบ 256 บิต (Bits) ที่มีความซับซ้อนมากยิ่งขึ้นไปอีก แต่โดยหลักการทำงานของมันแล้ว ก็ยังจัดอยู่ในรูปแบบเดียวกันอยู่ดี

Encryption, Hashing คืออะไร ? และแตกต่างกันอย่างไร ? พร้อมรู้จักการ Salting ว่ามันคืออะไร ?
ภาพจาก : https://www.thesslstore.com/blog/difference-encryption-hashing-salting/

Encryption อัลกอริทึมในอดีต

ในความเป็นจริงแล้ว การเข้ารหัสนั้น มีความเป็นมาอย่างยาวนาน เราลองมาย้อนดูหลักอัลกอริทึมที่ใช้ในการเข้ารหัส ในอดีตกันสักหน่อย

Shift Cipher

วิธีการเข้ารหัสโดยเลื่อนตำแหน่งตัวอักษร (ที่เราได้อธิบายไปในหัวข้อที่แล้ว) ซึ่งตัวเลขที่ใช้ในการถอดรหัสจะมีตั้งแต่ 1-25 หลัก

Substitution Cipher

เป็นวิธีการเข้ารหัสแบบแทนที่ตัวอักษรคล้ายคลึงกับ Shift Cipher แต่จะใช้วิธีสร้างกุญแจถอดรหัสแบบตายตัวขึ้นมา โดยการแทนที่ตัวอักษรจะเป็นแบบสุ่ม แล้วแต่ที่จะตกลงกัน

Encryption, Hashing คืออะไร ? และแตกต่างกันอย่างไร ? พร้อมรู้จักการ Salting ว่ามันคืออะไร ?
ตัวอย่างการทำ Substitution Ciphers
ภาพจาก : https://en.wikipedia.org/wiki/Substitution_cipher

Transposition Cipher

เป็นอัลกอริทึมที่มีกฏในการเรียงตัวอักษรเป็นเส้นทาง หรือวนภายในตำแหน่งที่กำหนด ที่นิยมใช้งานกันก็อย่างเช่น Rail Fence Cipher และ Route Cipher

Encryption, Hashing คืออะไร ? และแตกต่างกันอย่างไร ? พร้อมรู้จักการ Salting ว่ามันคืออะไร ?
ตัวอย่างการทำ Rail Fence cipher
ภาพจาก : https://www.101computing.net/the-rail-fence-cipher/rail-fence-cipher-encoding-key-3/

Polyalphabetic Cipher

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

Encryption, Hashing คืออะไร ? และแตกต่างกันอย่างไร ? พร้อมรู้จักการ Salting ว่ามันคืออะไร ?
ตัวอย่างตาราง Polyalphabetic Cipher ที่ใช้ในการถอดรหัส
ภาพจาก : https://en.wikipedia.org/wiki/Polyalphabetic_cipher

Nomenclator Cipher

เป็น Substitution Cipher อีกรูปแบบที่จะแทนที่ตัวอักษรด้วยสัญลักษณ์พิเศษ หรือแปลกประหลาดต่าง ๆ เพื่อให้มีความยากต่อการถอดข้อความนั่นเอง

Encryption, Hashing คืออะไร ? และแตกต่างกันอย่างไร ? พร้อมรู้จักการ Salting ว่ามันคืออะไร ?
ตัวอย่างตาราง Nomenclator cipher ที่ใช้ในการถอดรหัส
ภาพจาก : https://ovid.cs.depaul.edu/Classes/CS233-W06/Renaissance.pdf

การเข้ารหัสในอดีต จะมีจุดอ่อนตรงที่ไม่ว่ารูปแบบจะซับซ้อนเพียงไหนก็ตาม แต่หากคุณทุ่มเท และให้เวลากลับมัน เราก็จะสามารถหาทางทำวิศวกรย้อนกลับ (Reverse Engineer) เพื่อหา Encryption Key ได้เจอในที่สุด

Encryption ในปัจจุบัน

ก่อนที่เราจะเข้าสู่หัวข้อ อัลกอริทึมของการเข้ารหัส ในปัจจุบัน เราจำเป็นจะต้องรู้จักกับสิ่งที่เรียกว่า "กุญแจสาธารณะ" (Public Key) และ "กุญแจส่วนตัว" (Private Key) กันเสียก่อน ซึ่งทุกวันนี้เป็นหัวใจสำคัญของการเข้ารหัสในโลกดิจิทัล

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

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

โดยรูปแบบการเข้ารหัสที่ปัจจุบันนี้นิยมใช้งานกันจะมีอยู่ 2 รูปแบบ คือ

1. Asymmetric Encryption

วิธีการนี้จะเป็นวิธีพื้นฐานเหมือนกับที่เราเอ่ยไปก่อนหน้านี้ คือใช้ Public Key ที่ผู้ใช้งานมีในการเข้ารหัส และใช้ Private Key ที่อยู่บนเซิร์ฟเวอร์ในการถอดรหัส แนวคิดนี้เป็นหลักการพื้นฐานของโครงสร้าง PKI (Public key infrastructure) ที่อยู่ภายใต้ โปรโตคอล (Protocol) อย่าง Secure Socket Layer (SSL) / Transport Layer Security (TLS)

2. Symmetric Encryption

วิธีนี้ทั้งผู้ส่ง และผู้รับจะมี Private Key ของตนเองที่สามารถใช้เข้ารหัส และถอดรหัสได้ หลังจากที่ได้ทำ Asymmetric Encryption เสร็จเป็นที่เรียบร้อยแล้ว ผ่านการตรวจสอบในขั้นตอน SSL handshake (การยืนยันตัวตนก่อนที่จะเกิดการแลกเปลี่ยนข้อมูล)

Encryption อัลกอริทึมในปัจจุบัน

เราได้รู้จักกับ Asymmetric Encryption และ Symmetric Encryption กันไปแล้ว ต่อไปเรามารู้จักกับหลักอัลกอริทึมที่ใช้ในการเข้ารหัสปัจจุบัน กันสักหน่อย

AES (Advanced Encryption Standard)

หรือที่เดิมที่เรียกว่า "Rijndael" เป็นเทคนิคการเข้ารหัสที่พัฒนาขึ้นมาโดย National Institute for Standards and Technology (NIST) ในปี ค.ศ. 2001 (พ.ศ. 2544) เทคนิคนี้จะเข้ารหัสซ้ำข้อมูลเดิมเป็นจำนวนหลายครั้ง โดยขึ้นอยู่กับขนาดของ Key ที่ใช้เข้ารหัส เทคนิคนี้ถูกใช้เป็นอัลกอริทึมหลักร่วมกับ SSL/TLS แทนที่เทคนิคเดิมอย่าง DES (Data Encryption Standard) ที่สร้างขึ้นมาใช้งานตั้งแต่ ค.ศ. 1977 (พ.ศ. 2520)

RSA (Rivest-Shamir-Adlemen)

มันถูกสร้างขึ้นมาใช้เป็นอัลกอริทึมสำหรับการเข้ารหัสแบบ Public Key (Asymmetric) มาตั้งแต่ปี ค.ศ. 1978 (พ.ศ. 2521) และใช้กันมายาวนานจนถึงปัจจุบัน การทำงานของ RSA จะใช้วิธีการแยกตัวประกอบของจำนวนเฉพาะในการเข้ารหัสข้อมูล

ECC (Elliptic Curve Cryptography)

เป็นการเข้ารหัสโดยอาศัยโครงสร้างพีชคณิตเชิงเส้น ของเส้นโค้งวงรีแบบจำกัด ถึงแม้ว่า ECC จะมีมาตั้งแต่ปี ค.ศ. 1985 (พ.ศ. 2528) แต่กว่ามันจะถูกนำมาใช้ก็ต้องรอจนกระทั่งปี ค.ศ. 2004 (พ.ศ. 2547) ในแง่ของคุณสมบัติแล้ว ECC นั้นเหนือกว่า RSA และน่าจะมาบทบาทสำคัญต่ออนาคตของ SSL/TLS

PGP (Pretty Good Privacy)

ถูกพัฒนาขึ้นมาในปี ค.ศ. 1991 (พ.ศ. 2534) โดย Phil Zimmerman ความพิเศษของ PGP คือมันรวมเอาอัลกอริทึมหลายรูปแบบเอาไว้ภายในตัว เพื่อใช้ในขั้นตอนการ Hashing, Data Compression, Public Key และ Private Key โดยในแต่ละขั้นตอนจะใช้อัลกอริทึมที่แตกต่างกันในการเข้ารหัส อย่างไรก็ตาม PGP ถูกตำหนิว่ามีข้อจำกัดในการใช้งาน, ขาดความหลากหลาย และความยาวของ Key

เราควรจะใช้ Encryption เมื่อไหร่ ?

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

Hashing คืออะไร ?

Hashing (อ่านออกเสียงภาษาไทยว่า "แฮชชิง") มันเป็นการใช้หลักอัลกอริทึมมาสร้างแผนที่ข้อมูลที่มีความยาวคงที่ขึ้นมา โดยจะเรียกว่า "Hash Value" (อาจจะเรียกว่า Hash Code, Hash Sum หรือ Hash Digest ก็ได้เช่นกัน) 

Encryption, Hashing คืออะไร ? และแตกต่างกันอย่างไร ? พร้อมรู้จักการ Salting ว่ามันคืออะไร ?
การ Hashing
ภาพจาก : https://www.kaspersky.com/blog/the-wonders-of-hashing/4441/

สำหรับการเข้ารหัส (Encryption) ที่ได้กล่าวมาในหัวข้อด้านบนนั้น เป็นการทำงานแบบสองทาง (คือมีการเข้ารหัส และการถอดรหัส) แต่การ Hashing จะมีคุณสมบัติในการทำงานเพียงทางเดียว แม้ในทางทฤษฎีแล้ว จะสามารถใช้การวิศวกรย้อนกลับ (Reverse Engineer) ในการถอดรหัสกลับได้ แต่ก็เป็นเรื่องยากเพราะต้องใช้เวลาในการถอดรหัสที่ยาวนาน ถึงนานมากๆ และพลังของการประมวลผลคอมพิวเตอร์สูงมาก จนแทบจะเป็นไปไม่ได้เลย ทำให้ Hashing ถูกบอกว่าเป็นการทำงานแบบทางเดียว

ในขณะที่หน้าที่ของ การเข้ารหัส เป็นการปกป้องในขณะที่รับส่งข้อมูล การ Hashing จะใช้ในการตรวจสอบว่าไฟล์ หรือชิ้นส่วนข้อมูลนั้น ไม่ถูกแก้ไขปลอมแปลง หรือจะกล่าวว่าเป็นการ CheckSum (การตรวจสอบความถูกต้องของข้อมูล) ก็ว่าได้

Hashing ทำงานอย่างไร ?

ในการทำ Hashing ตัวอัลกอริทึมจะเข้ารหัสออกมาเป็นผลลัพธ์ที่มีความยาวตายตัว ยกตัวอย่างเช่น คุณอาจจะเคยได้ยินชื่ออัลกอริทึม SHA-2 มาก่อน อัลกอริทึมตัวนี้จะให้ผลลัพธ์ออกมาเป็นค่าแฮช (Hash Value) แบบ 256 บิต (32 ไบต์)

อย่างเช่น หากเรา Hashing คำว่า "THAIWARE" ด้วย SHA-2 ก็จะได้ผลลัพธ์ออกมาเป็น "00dfd26b1f609a391acac001280a43d9dd2a9be221e2a644dded7633bde31373"

ค่า Hash Value ของแต่ละข้อมูลจะมีผลลัพธ์ที่แตกต่างกัน ไม่มีทางซ้ำกันโดยเด็ดขาด ถ้าหากว่ามีไฟล์ข้อมูลที่แตกต่างกัน แต่บังเอิญเข้ารหัสได้ค่า Hash ที่ซ้ำกันขึ้นมา จะเรียกว่าการเกิด "Collision" แต่ในปี ค.ศ. 2017 (พ.ศ. 2560) ทาง Google ได้เคยสาธิตการสร้าง Collision ด้วยการใช้ช่องโหว่ใน SHA-1 ที่กำลังจะเลิกใช้งาน หลังจากที่ SHA-2 ได้เปิดตัวในปี ค.ศ. 2017 (พ.ศ. 2559) อย่างไรก็ตาม Google ได้อธิบายเพิ่มเติมด้วยว่ากว่าจะทำให้เกิด Collision นี้ได้ ใช้นักวิจัยในการหาทางอยู่เกือบ 2 ปีเต็ม จึงสามารถสรุปได้ว่าในความเป็นจริง การเกิด "Collision" นั้นแทบจะเป็นไปไม่ได้เลย

Hashing อัลกอริทึมในปัจจุบัน

มาดูหลักการทำ Hashing อัลกอริทึม ที่นิยมใช้งานกันในปัจจุบันสักหน่อย

MD4 (Message-Digest Algorithm 4)

MD4 เป็นอัลกอริทึมที่ถูกพัฒนาขึ้นในปี ค.ศ. 1990 (พ.ศ. 2533) แต่ไม่ได้รับความนิยมสักเท่าไหร่ แม้แต่ตัว Ronald Rivest ผู้พัฒนาเองก็ยอมรับว่า มันมีปัญหาด้านช่องโหว่ความปลอดภัย

MD5 (Message-Digest Algorithm 5)

MD5 เกิดขึ้นจาก ความล้มเหลวของ MD4 ทำให้ Ronald Rivest พัฒนาอัลกอริทึมเวอร์ชันใหม่ออกมาในชื่อ MD5 ในปี ค.ศ. 1992 (พ.ศ. 2535) อย่างไรก็ตาม มันก็ยังพบปัญหาด้านช่องโหว่ความปลอดภัยอยู่ดี จากปัญหาการทับซ้อน (Collision) ทำให้ Rivest ได้ลบมันออกจาก National Institute of Standards and Technology (NIST) และหันไปพัฒนา MD6 แทน

SHA (Security Hashing Algorithm)

เป็นมาตรฐานอัลกอริทีมที่แพร่หลายในการเข้ารหัสของโปรโตคอล SSL/TLS เป็นอย่างมาก ปัจจุบันนี้ SHA-1 เริ่มมีการใช้งานลดลงเรื่อย ๆ และเปลี่ยนมาใช้ SHA-2 หรือที่รู้จักกันอีกชื่อว่า SHA-256 ที่ปลอดภัยกว่าแทน

RIPEMD (RIPE Message Digest)

RIPEMD (RIPE Message Digest) ได้ถูกพัฒนาขึ้นมาในปี ค.ศ. 1996 (พ.ศ. 2539) ภายใต้ Framework ในโครงการ EU’s Project Ripe ของ Hans Dobbertin และกลุ่มนักวิชาการ มันมีคุณสมบัติในการเข้ารหัสครอบคลุมข้อมูลแบบ 128, 160, 256 และ 320 บิต โดยใน 256 และ 320 บิต ไม่ได้มีการเพิ่มความปลอดภัยให้เข้มงวดขึ้น มันเพียงแค่ลดโอกาสที่จะเกิดการ Collision เท่านั้น หลังจากในปี  ค.ศ. 2004 มีรายงานการ Collision เกิดขึ้นใน RIPEMD-128

WHIRLPOOL

WHIRLPOOL เป็นอัลกอริทีมที่พัฒนาโดย Victor Rijmen (หนึ่งในผู้ริเริ่มอัลกอริทึมแบบ AES) และ Paulo Barreto ในปี ค.ศ. 2000 (พ.ศ. 2543) มันผ่านการปรับปรุงถึงสองครั้ง ก่อนจะมาเป็น Hash แบบ 512 บิต ที่แสดงค่าเป็นตัวเลขฐาน 16 จำนวน 128 หลัก

TIGER

TIGER เป็นอัลกอริทึมรูปแบบใหม่ที่เริ่มได้รับความนิยมเพิ่มขึ้น ในระบบแบ่งปันไฟล์ และ เว็บทอร์เรนต์ (Torrent  Web) จนถึงตอนนี้ยังไม่มีการค้นพบว่ามันถูกโจมตีได้สำเร็จมาก่อน

เราควรจะใช้ Hashing เมื่อไหร่ ?

Hashing เป็นเรื่องของการเข้ารหัส เพื่อตรวจสอบความถูกต้องของไฟล์ ว่ามันเป็นไฟล์ที่มีความน่าเชื่อ ไม่ถูกปลอมแปลง หรือแก้ไข สอดไส้อะไรที่อันตรายเข้ามา

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

เมื่อมีคนที่ต้องการจะดาวน์โหลดซอฟต์แวร์ตัวดังกล่าว เว็บไซต์จะเริ่มถอดรหัสไฟล์ และตรวจสอบค่า Hash โดยการเข้ารหัสด้วยอัลกอริทึมเดียวกัน หากพบว่าได้ผลลัพธ์ค่า Hash ออกมาตรงกัน มันถึงจะเริ่มดาวน์โหลดไฟล์ได้ หากไม่ตรงคุณก็จะได้รับข้อความแจ้งเตือนอันตรายแทน

ย้ำอีกทีว่า ค่าที่ได้จากการแฮช (Hash Value) จะไม่มีทางเหมือนกัน หากมีการแก้ไขไฟล์แม้จะเพียงนิดเดียว ก็จะทำให้ได้ค่า Value ที่แตกต่างกันออกไปอยู่ดี

การทำ Hashing จึงขึ้นอยู่กับความต้องการของระบบ โดยพิจารณาจาก สิ่งต่างๆ ดังต่อไปนี้

  • Encryption ออกแบบมาให้ถูก Decryption ได้ในภายหลัง หากเราไม่ต้องการให้ถอดรหัสได้ก็จะใช้การ Hashing
  • จุดประสงค์หลักของ Hashing คือการใช้เพื่อยืนยันความถูกต้องของข้อมูล
  • การ Salting เป็นส่วนหนึ่งของการ Hashing โดยการเพิ่มข้อมูลเข้าไปต่อท้ายรหัสผ่าน เพื่อเปลี่ยนแปลงค่า Hash Value ที่ได้

Salting คืออะไร ?

Salting เป็นแนวคิดหนึ่งที่จะใช้ในการเพิ่มความซับซ้อนให้กับการ Hashing รหัสผ่าน โดยเทคนิค Salting จะเพิ่มข้อมูลเข้าไปต่อท้ายรหัสผ่าน เพื่อเปลี่ยนค่า Hash value ที่ได้ ซึ่งการทำแบบนี้จะช่วยให้การโจมตีด้วยเทคนิค Brute force (การสุ่มรหัสผ่านไปเรื่อย ๆ จนกว่าจะพบรหัสผ่านที่ถูกต้อง) ทำได้ยากขึ้นกว่าเดิมมาก

ในการ Salting ข้อมูลส่วนที่เพิ่มเข้ามาจะเรียกว่า "Salt" (เกลือ) เหมือนการเหยาะเกลือลงไปเพื่อให้รสชาติอาหารเปลี่ยน แต่นี่คือทำให้ค่าข้อมูลเปลี่ยนแทน

ตัวอย่างเช่น รหัสผ่านเดิม คือ 7X57CKG72JVNSSS9 เมื่อเราเติม Salt เข้าไป รหัสผ่านก็จะกลายเป็น 7X57CKG72JVNSSS9SALT แทน

อย่างไรก็ตาม วิธีการนี้ก็จะไร้ประสิทธิภาพโดยทันที หากแฮกเกอร์รู้ว่า Salt ของคุณคืออะไร เพราะเขาก็แค่เติมค่า SALT ลงไปหลังรหัสผ่านที่สุ่มโจมตีเท่านั้นเอง


ที่มา : www.thesslstore.com , www.makeuseof.com , www.movable-type.co.uk

0 Encryption%2C+Hashing+%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3+%3F+%E0%B9%81%E0%B8%A5%E0%B8%B0%E0%B9%81%E0%B8%95%E0%B8%81%E0%B8%95%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B8%AD%E0%B8%A2%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B9%84%E0%B8%A3+%3F+%E0%B8%9E%E0%B8%A3%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81%E0%B8%81%E0%B8%B2%E0%B8%A3+Salting+%E0%B8%A7%E0%B9%88%E0%B8%B2%E0%B8%A1%E0%B8%B1%E0%B8%99%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3+%3F
แชร์หน้าเว็บนี้ :
Keyword คำสำคัญ »
เขียนโดย
ระดับผู้ใช้ : Admin    Thaiware
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ
 
 
 

ทิปส์ไอทีที่เกี่ยวข้อง

 


 

แสดงความคิดเห็น