ดังนั้น หากคุณมีเว็บไซต์และผู้ใช้ลงทะเบียน คุณจะเก็บรหัสผ่านของเขาเป็นแฮช เมื่อพวกเขาเข้าสู่ระบบ เว็บไซต์ของคุณจะใช้รหัสผ่านที่ส่งมา แฮช และเปรียบเทียบการส่งที่แฮชกับแฮชที่เก็บไว้ใช่ไหม
ได้ โดยมีรายละเอียดเพิ่มเติมสามประการในวิธีการมาตรฐานสมัยใหม่ในการทำเช่นนี้:
- รหัสผ่านเข้าถึงเว็บไซต์ที่เข้ารหัส TLS; มันถูกถอดรหัสก่อนการแฮช
- เกลือ (สุ่มจากการลงทะเบียนรหัสผ่าน หรือ/และชื่อผู้ใช้/อีเมล) จะถูกแฮชพร้อมกับรหัสผ่าน และจัดเก็บไว้ตามแฮชของรหัสผ่านโดยเซิร์ฟเวอร์
- มีการใช้แฮชแบบวนซ้ำแบบช้าๆ โดยหวังว่าจะใช้หน่วยความจำแบบฮาร์ดหน่วยความจำซึ่งออกแบบมาสำหรับรหัสผ่าน เช่น อาร์กอน2. สิ่งนี้ออกแบบมาเพื่อการป้องกันในกรณีที่เซิร์ฟเวอร์ปล่อยให้รายการแฮชและเกลือรั่วไหล (การรั่วไหลดังกล่าวเกิดขึ้นเป็นประจำ) ข้อควรระวังนี้ทำให้ค้นหารหัสผ่านได้ยากขึ้น (หรือมากกว่านั้นคือรหัสผ่านที่ยอมรับได้ซึ่งน่าจะเป็นรหัสผ่านดั้งเดิม) ในพจนานุกรมของรหัสผ่านปกติ โดยแฮชรหัสผ่านของผู้สมัครและเกลือ และเปรียบเทียบกับแฮชรหัสผ่าน เช่นเดียวกับที่เซิร์ฟเวอร์ทำเพื่อตรวจสอบ รหัสผ่านเมื่อเข้าสู่ระบบ
สมมติว่าคุณกำลังแฮชประโยคโดยใช้ SHA-256 คุณเคยถอดรหัสแฮชดังกล่าว หรือแม้กระทั่งมีความสามารถหรือไม่
ไม่ อย่างแรก "ถอดรหัส" ไม่ใช่คำที่ถูกต้องสำหรับการค้นหาอินพุตของฟังก์ชันแฮชเนื่องจากเป็นเอาต์พุต คำที่ถูกต้องคือ "ย้อนกลับ" และแฮชได้รับการออกแบบให้ไม่สามารถย้อนกลับได้ในการทำงานปกติ หากไม่ทราบอินพุตของแฮชและเลือกแบบสุ่มในชุดใหญ่ และการออกแบบแฮชดี เป็นไปไม่ได้ที่จะย้อนกลับแฮช
Whatsapp บอกว่าข้อความของฉันถูกเข้ารหัส ดังนั้น หากฉันเข้ารหัสขณะที่ฉันส่งไป อุปกรณ์ของบุคคลอื่นจะถอดรหัสอย่างไร
การแฮชไม่ใช่สิ่งเดียวกับการเข้ารหัส การแฮชจะแปลงข้อความในลักษณะที่ออกแบบมาให้เปลี่ยนกลับไม่ได้ และไม่ใช้คีย์ การเข้ารหัสจะแปลงข้อความตามคีย์เข้ารหัส ในลักษณะที่ย้อนกลับได้ด้วยคีย์ถอดรหัส
คีย์ถอดรหัสต้องเป็นความลับ มิฉะนั้นจะไม่บรรลุเป้าหมายของการเข้ารหัส (ซ่อนสิ่งที่เข้ารหัสไว้ไม่ให้ศัตรูรู้คีย์ถอดรหัส) ในการเข้ารหัสแบบสมมาตร (เช่น AES-GCM) คีย์การเข้ารหัสและถอดรหัสจะเหมือนกัน ในการเข้ารหัสแบบอสมมาตร (เช่น RSA, ECIES) มีความแตกต่างกัน: คีย์การเข้ารหัสสามารถเปิดเผยต่อสาธารณะได้ และเรียกว่าคีย์สาธารณะ คีย์ถอดรหัสคือคีย์ส่วนตัว
เมื่อคุณส่งข้อความด้วยแอปพลิเคชันสมัยใหม่ที่ใช้การเข้ารหัสแบบอสมมาตร (เช่น Whatsapp) นี่คือภาพรวม:
- แอปของคุณดึงคีย์เฉพาะของข้อความสมมาตรแบบสุ่ม
- แอปของคุณเข้ารหัสข้อความโดยใช้การเข้ารหัสแบบสมมาตรด้วยคีย์เฉพาะของข้อความนี้ และผลลัพธ์จะถูกส่งไป
- แอปของคุณเข้ารหัสคีย์เฉพาะของข้อความซ้ำๆ ซ้ำๆ ไปยังผู้รับที่ต้องการแต่ละราย โดยใช้การเข้ารหัสแบบอสมมาตร (เช่น ECIES) และคีย์สาธารณะแต่ละคีย์ของผู้รับที่ต้องการ และผลลัพธ์จะถูกส่ง
- เมื่อผู้รับต้องการถอดรหัสข้อความ แอปของผู้รับจะได้รับคีย์เฉพาะของข้อความที่เข้ารหัสซึ่งเข้ารหัสภายใต้คีย์สาธารณะก่อน และถอดรหัส (ต่อการถอดรหัสแบบไม่สมมาตร) โดยใช้คีย์ส่วนตัว เพื่อให้ได้คีย์เฉพาะของข้อความ
- แอปของผู้รับจะได้รับข้อความที่เข้ารหัส ถอดรหัสต่อการถอดรหัสแบบสมมาตรโดยใช้คีย์เฉพาะของข้อความ จากนั้นจึงแสดงข้อความที่ถอดรหัส
กลไกหลักในการปกป้องความลับของข้อความคือการเข้ารหัสแบบสมมาตร การเข้ารหัสแบบอสมมาตรจะปกป้องความลับของคีย์เฉพาะของข้อความ ดังนั้นจึงเป็นการปกป้องความลับของข้อความโดยทางอ้อม โดยทั่วไปแล้วการแฮชจะใช้ภายในเป็นแบบเอกสารสำเร็จรูปในบางขั้นตอน แต่ไม่ใช่กลไกที่เข้ารหัสข้อความหรือคีย์เฉพาะของข้อความ