SHA-256 คืออะไรกันแน่ Cuadernos Lacre · แนวคิด · 19 พฤษภาคม 2026 https://solo2.net/th/notebooks/articulos/what-sha-256-actually-is.html รอยนิ้วมือทางคณิตศาสตร์ที่ยาวเพียง 64 ตัวอักษร แต่จะเปลี่ยนไปโดยสิ้นเชิงหากมีการขยับเครื่องหมายจุลภาคเพียงตัวเดียวในข้อความต้นฉบับ ทำไมเราถึงเรียกมันว่าตราประทับครั่งดิจิทัล --- แนวคิดเรียบง่ายเบื้องหลังชื่อทางเทคนิค ลองจินตนาการว่ามีเครื่องจักรที่มีช่องรับข้อมูลเพียงช่องเดียวและหน้าจอเพียงหน้าจอเดียว คุณใส่ข้อความผ่านช่องนั้นลงไป ไม่ว่าจะเป็นคำเพียงคำเดียว ประโยคเดียว หรือนิยายทั้งเล่ม ในชั่วพริบตา หน้าจอจะแสดงลำดับตัวอักษรที่มีความยาวพอดี 64 ตัวอักษร ลำดับตัวอักษรนี้เหล่านักอ่านมืออาชีพเรียกว่า Hash หรือ ค่าแฮช หรือ ผลสรุปเชิงรหัสลับ (Cryptographic Summary) ส่วนสำหรับผู้อ่านทั่วไป ในตอนนี้เราอาจเรียกมันว่าเป็นรอยนิ้วมือทางคณิตศาสตร์ของข้อความ เช่นเดียวกับที่รอยนิ้วมือเป็นตัวแทนของบุคคลหนึ่งๆ หากคุณใส่ข้อความเดิมสองครั้ง เครื่องจักรจะแสดงรอยนิ้วมือเดิมทั้งสองครั้ง หากคุณใส่ข้อความที่ต่างไปเพียงเล็กน้อย เช่น เลื่อนตำแหน่งเครื่องหมายจุลภาคเพียงตัวเดียว หรือเปลี่ยนจากตัวอักษรพิมพ์ใหญ่เป็นพิมพ์เล็ก เครื่องจักรจะแสดงรอยนิ้วมือที่ต่างไปจากเดิมอย่างสิ้นเชิง ไม่ใช่แค่คล้ายกัน แต่คือต่างกันไปเลย คุณสมบัติสองประการนี้ที่รวมกัน คือ ความแน่นอน (Determinism) และความฉับไวต่อการเปลี่ยนแปลง (Sensitivity) เป็นแนวคิดที่เรียกว่าเรียบง่าย ส่วนที่เหลือของ SHA-256 คือกลไกที่ทำให้มั่นใจว่าคุณสมบัติเหล่านี้ทำงานได้อย่างสมบูรณ์ ควรบอกไว้ตั้งแต่แรกว่าเครื่องจักรนี้ไม่ได้ทำอะไรบ้าง มันไม่ได้เข้ารหัส (Encrypt) ข้อความ มันไม่ได้ซ่อนมัน และมันไม่ได้บันทึกมัน เครื่องจักรเพียงแตมองดูข้อความ คำนวณรอยนิ้วมือ แล้วก็ลืมข้อความนั้นไป รอยนิ้วมือไม่สามารถใช้กู้คืนข้อความที่สร้างมันขึ้นมาได้ มันทำได้เพียงใช้ตรวจสอบว่าข้อความที่นำมาทดสอบนั้นตรงกับข้อความต้นฉบับหรือไม่ นั่นคือเหตุผลที่เราเรียกว่ามันเป็นการสรุปแบบ ทิศทางเดียว: ไปแล้วไม่กลับ แฮช (Hash) ไม่ใช่สิ่งเดียวกับการเข้ารหัส (Encrypt) ความสับสนมักเกิดขึ้นบ่อยครั้งและควรทำความเข้าใจให้ชัดเจน: การเข้ารหัสและการแฮชคือการทำงานที่ต่างกัน การเข้ารหัสคือการแปลงข้อความเพื่อให้ผู้ที่มีกุญแจเท่านั้นที่สามารถคืนค่าให้เป็นรูปแบบเดิมได้ ส่วนการแฮชคือการสร้างรอยนิ้วมือของข้อความซึ่งไม่สามารถกู้คืนข้อความต้นฉบับได้เลย ไม่ว่าจะใช้กุญแจหรือไม่ก็ตาม แบบแรกสามารถย้อนกลับได้โดยการออกแบบ (Reversible) ส่วนแบบหลังไม่สามารถย้อนกลับได้โดยการออกแบบ (Irreversible) ผลลัพธ์ในทางปฏิบัติมีความสำคัญ เมื่อแอปพลิเคชันบอกว่า "เราเก็บรหัสผ่านของคุณแบบเข้ารหัส" แสดงว่ามีใครบางคนที่มีกุญแจในการถอดรหัส ซึ่งก็คือตัวแอปพลิเคชันเองในทุกกรณี แต่เมื่อแอปพลิเคชันบอกว่า "เราเก็บรหัสผ่านของคุณแบบแฮช" ตัวแอปพลิเคชันเองก็ไม่สามารถอ่านรหัสผ่านต้นฉบับได้แม้ว่าจะต้องการก็ตาม มันทำได้เพียงตรวจสอบว่ารหัสผ่านที่คุณพิมพ์เข้ามานั้นสร้างรอยนิ้วมือที่ตรงกันหรือไม่ รูปแบบหลังนี้ หากทำอย่างถูกต้อง (Done well) จะเหมาะสมกว่ามากสำหรับการเก็บรหัสผ่าน ซึ่งเราจะได้เห็นกันต่อไปว่าทำไมคำว่า "ทำอย่างถูกต้อง" ถึงต้องการอะไรที่มากกว่าแค่ SHA-256 เปล่าๆ สี่คุณสมบัติที่ทำให้ค่าแฮชเชิงรหัสลับมีประโยชน์ ฟังก์ชันแฮชที่สมควรได้รับคำจำกัดความว่า เชิงรหัสลับ (Cryptographic) ต้องมีสี่คุณสมบัติดังนี้: 1. ความแน่นอน (Determinism). ข้อมูลนำเข้าเดิมจะให้รอยนิ้วมือเดิมเสมอ 2. ปรากฏการณ์หิมะถล่ม (Avalanche Effect). การเปลี่ยนแปลงเพียงเล็กน้อยในข้อมูลนำเข้าจะส่งผลให้รอยนิ้วมือเปลี่ยนไปโดยสิ้นเชิง โดยไม่มีความคล้ายคลึงกับของเดิมให้เห็น 3. ความต้านทานต่อการย้อนกลับ (Resistance to inversion). เมื่อได้รับรอยนิ้วมือมา การหาข้อความต้นฉบับที่สร้างมันขึ้นมานั้นเป็นไปไม่ได้ในทางคอมพิวเตอร์ 4. ความต้านทานต่อการซ้ำซ้อน (Resistance to collisions). การหาข้อความสองข้อความที่ต่างกันแต่ให้รอยนิ้วมือเดียวกันนั้นเป็นไปไม่ได้ในทางคอมพิวเตอร์ "เป็นไปไม่ได้ในทางคอมพิวเตอร์" ไม่ได้หมายความว่า "เป็นไปไม่ได้ในทางคณิตศาสตร์" แต่มันหมายถึงต้นทุนด้านเวลา พลังงาน และเงินทองในการทำให้สำเร็จนั้นสูงกว่าความสามารถในการคำนวณทั้งหมดที่มีอยู่หลายเท่าตัว สำหรับ SHA-256 ขีดจำกัดนั้นวัดได้เป็นหลายล้านล้านปี แม้จะเป็นการคาดการณ์ในแง่ดีที่สุดโดยใช้ฮาร์ดแวร์เฉพาะทางก็ตาม ซึ่งในทางปฏิบัติสำหรับผู้อ่านทั่วไปแล้ว มันก็มีความหมายเหมือนกับคำว่า "ทำไม่ได้" นั่นเอง เจาะลึก SHA-256 ชื่อของมันบอกทุกอย่าง SHA ย่อมาจาก Secure Hash Algorithm หรืออัลกอริทึมแฮชที่ปลอดภัย ตัวเลข 256 ระบุขนาดของรอยนิ้วมือในหน่วยบิต: 256 บิต หรือ 32 ไบต์ ซึ่งเมื่อแสดงในรูปแบบเลขฐานสิบหกจะเท่ากับ 64 ตัวอักษรที่ผู้อ่านคุ้นเคย มาตรฐานนี้ถูกเผยแพร่โดย NIST ของสหรัฐอเมริกา ซึ่งเป็นองค์กรที่กำหนดมาตรฐานสำหรับฟังก์ชันประเภทนี้ ในปี 2001 โดยเป็นส่วนหนึ่งของตระกูล SHA-2 และเวอร์ชันปัจจุบันของมาตรฐานคือ FIPS 180-4 จากปี 2015 มิติของมันควรค่าแก่การพิจารณาครู่หนึ่ง 256 บิต ช่วยให้เกิดค่าที่ต่างกันได้ถึงสองยกกำลังสองร้อยห้าสิบหกค่า ซึ่งเป็นตัวเลขที่มีหลักทศนิยมถึง 78 หลัก มากกว่าจำนวนอะตอมโดยประมาณในจักรวาลที่สังเกตได้หลายเท่าตัว ทุกข้อความในโลก ไม่ว่าจะเป็นหนังสือแต่ละเล่ม อีเมลแต่ละฉบับ หรือข้อความแต่ละข้อความ จะตกลงไปในค่าหนึ่งค่าใดจากบรรดาค่าเหล่านั้น ความน่าจะเป็นที่ข้อความที่ต่างกันสองข้อความจะให้ค่าตรงกันโดยบังเอิญนั้น ในทางปฏิบัติถือว่าเป็นศูนย์ รหัสตัวอย่าง ทำไมเราถึงเรียกว่าตราประทับครั่ง ในการส่งจดหมายของยุโรปช่วงคริสต์ศตวรรษที่ 15 ถึง 19 ครั่งจะถูกใช้เพื่อปิดผนึกจดหมาย ครั่งที่หลอมละลายเพียงหยดเดียว ตราประทับที่กดทับลงไป และจดหมายจะถูกตีตราไว้ในแบบที่ทำซ้ำไม่ได้ มันไม่ได้ช่วยปกป้องเนื้อหาจากการแอบดูที่ตั้งใจ (กระดาษยังสามารถอ่านผ่านแสงได้ ครั่งสามารถแตกหักได้) แต่มันเป็นหลักฐาน การเปลี่ยนแปลงใดๆ ของรอยผนึกจะมองเห็นได้ชัดเจนโดยผู้รับก่อนที่จะเปิดจดหมายเสียอีก ครั่งไม่ได้ป้องกันความเสียหาย แต่มันฟ้องว่าเกิดความเสียหายขึ้น SHA-256 ของเนื้อหาในทุก Cuaderno ทำหน้าที่แบบเดียวกันในเวอร์ชันดิจิทัล หากมีเพียงคำเดียวในบทความเปลี่ยนไป ระหว่างตอนที่เผยแพร่กับตอนที่คุณอ่าน ตราประทับเลขฐานสิบหกที่ส่วนท้ายของข้อความจะไม่ตรงกับ SHA-256 ของข้อความที่คุณมีอยู่ตรงหน้าอีกต่อไป ผู้อ่านคนใดที่มีโค้ดเพียง 5 บรรทัดก็สามารถตรวจสอบเรื่องนี้ได้ สำนักพิมพ์ไม่สามารถเขียนประวัติศาสตร์ซ้ำได้โดยที่ตราประทับไม่ฟ้องมัน มันไม่ได้ป้องกันความเสียหาย แต่มันทำให้ความเสียหายนั้นตรวจสอบได้ สิ่งที่ค่าแฮชไม่ใช่ การใช้งานสี่ประการที่มักจะถูกขอให้ SHA-256 ทำซึ่งไม่ใช่หน้าที่ของมัน: 1. การเข้ารหัส (Encrypt). แฮชคือการสรุป ไม่ใช่การซ่อน หากคุณต้องการไม่ให้ข้อความถูกอ่านได้ คุณต้องเข้ารหัสมัน ไม่ใช่แฮชมัน 2. การยืนยันตัวตนผู้เขียน. แฮชไม่ได้บอกว่าใครเป็นคนเขียนข้อความ มันบอกเพียงว่าข้อความใดถูกแฮช การเชื่อมโยงความเป็นเจ้าของผลงานต้องใช้ลายเซ็นดิจิทัล (Digital Signature) กำกับบนค่าแฮช ไม่ใช่ใช้ค่าแฮชเพียงอย่างเดียว 3. การเก็บรหัสผ่าน. มีกับดักที่ควรทำความเข้าใจที่นี่ SHA-256 ถูกออกแบบมาให้ทำงานเร็วมาก ซึ่งเป็นเรื่องดีสำหรับหลายสิ่ง แต่เป็นเรื่องแย่สำหรับสิ่งนี้ ผู้โจมตีที่มีฮาร์ดแวร์เฉพาะทางสามารถทดลองรหัสผ่านได้หลายพันล้านรหัสต่อวินาทีเทียบกับค่าแฮช SHA-256 จนกว่าจะพบรหัสของคุณ ในการเก็บรหัสผ่าน ต้องใช้ฟังก์ชันการแปลงกุญแจที่ถูกออกแบบมาให้ช้าอย่างจงใจ เช่น Argon2, scrypt หรือ bcrypt ร่วมกับ Salt (ข้อมูลสุ่มที่ไม่ซ้ำกันสำหรับผู้ใช้แต่ละราย เพื่อป้องกันไม่ให้คนสองคนที่มีรหัสผ่านเดียวกันมีค่าแฮชที่เหมือนกัน) 4. การอ่านค่าแฮชเป็นตัวระบุตัวตนผู้เขียน. มันไม่ใช่ แฮชใช้ระบุเนื้อหา หากคนสองคนแฮชคำว่า สวัสดี ด้วย SHA-256 ทั้งคู่จะได้ผลสรุปที่เหมือนกัน และนั่นคือคุณสมบัติหลัก ไม่ใช่ข้อบกพร่อง: หากมันให้ผลสรุปที่ต่างกัน เราก็จะไม่สามารถตรวจสอบความตรงกันระหว่างสิ่งที่เผยแพร่กับสิ่งที่ได้รับได้ SHA-256 ปรากฏอยู่ที่ใดในชีวิตประจำวันของคุณ แม้คุณจะไม่เห็นมัน แต่ SHA-256 รองรับการทำงานเกือบทุกอย่างที่คุณใช้บนอินเทอร์เน็ตในแต่ละวัน บล็อกเชนของ Bitcoin ถูกสร้างขึ้นโดยการเชื่อมโยง SHA-256 ของแต่ละบล็อกเข้ากับบล็อกถัดไป การแก้ไขบล็อกในอดีตทำให้ต้องคำนวณห่วงโซ่ที่ตามมาทั้งหมดใหม่ Git ระบบที่ใช้จัดการเวอร์ชันของโค้ดที่คนค่อนโลกใช้ ระบุการยืนยันการเปลี่ยนแปลง (Commit) แต่ละครั้งด้วย SHA-256 (ในเวอร์ชันใหม่ๆ) หรือรุ่นก่อนหน้าอย่าง SHA-1 (ในเวอร์ชันเก่า) ของเนื้อหาทั้งหมด ใบรับรอง HTTPS ที่ยืนยันตัวตนของเว็บไซต์เมื่อคุณเข้าชมก็มีรอยนิ้วมือ SHA-256 กำกับอยู่ การดาวน์โหลดซอฟต์แวร์มักจะมาพร้อมกับค่า SHA-256 ที่ผู้พัฒนาเผยแพร่เพื่อให้คุณตรวจสอบว่าไฟล์ไม่ถูกแก้ไขระหว่างทาง และตามที่เราได้บอกไป มันอยู่ที่ส่วนท้ายของทุก Cuadernos Lacre สำหรับผู้อ่านมืออาชีพ สี่ข้อเตือนใจในการปฏิบัติงานสำหรับผู้ที่ตัดสินใจหรือตรวจสอบระบบ: 1. แฮชไม่ใช่การเข้ารหัส หากผู้ให้บริการสับสนระหว่างสองคำนี้ในเอกสารทางเทคนิค ควรตั้งคำถามว่าพวกเขาหมายถึงอะไรกันแน่ 2. สำหรับการเก็บรหัสผ่าน ไม่ควรใช้ SHA-256 เพียงอย่างเดียว SHA-256 เร็วเกินไปสำหรับงานนี้ (ดูข้อ 3 ใน สิ่งที่ค่าแฮชไม่ใช่) มาตรฐานปัจจุบันคือ Argon2id: ซึ่งช้าโดยการออกแบบ สามารถปรับค่าตามความสามารถของเซิร์ฟเวอร์ และทำงานร่วมกับ Salt ที่สุ่มต่างกันในแต่ละผู้ใช้ 3. สำหรับความสมบูรณ์ของเอกสาร ไม่ว่าจะเป็นสัญญา สำนวนคดี หรือไฟล์ข้อมูล SHA-256 ยังคงเป็นมาตรฐานอ้างอิง และเป็นมาตรฐานที่ผู้ให้บริการประทับรับรองเวลา (Time-stamping) ในสหภาพยุโรปใช้ 4. สำหรับการเก็บรักษาในระยะยาว (หลายทศวรรษ) ควรคำนวณและเก็บค่า SHA-3 หรือ SHA-512 ควบคู่ไปกับ SHA-256 ด้วย ความรอบคอบเชิงรหัสลับแนะนำว่าไม่ควรยึดติดกับฟังก์ชันเพียงฟังก์ชันเดียวสำหรับการเก็บข้อมูลในระดับศตวรรษ ลองจินตนาการว่าคุณได้สร้างวงจรโดมิโนที่ซับซ้อนที่สุดในโลก: มีตัวโดมิโนนับพันตัว ทางแยกนับสิบ สะพานกลไก และทางลาดที่ทอดยาวไปทั่วทั้งห้อง ซึ่งทั้งหมดถูกวางไว้อย่างพิถีพิถันทีละชิ้น หากคุณผลักโดมิโนตัวแรก โซ่จะล้มลงตามลำดับที่แม่นยำและทำซ้ำได้ การติดตั้งเหมือนเดิม การผลักเริ่มต้นเหมือนเดิม → รูปแบบสุดท้ายของโดมิโนที่ล้มลงจะเหมือนเดิมทุกครั้ง นี่คือสิ่งที่น่าสนใจ: หากคุณขยับ โดมิโนเพียงตัวเดียว ออกไปด้านข้างเพียงครึ่งเซนติเมตรก่อนที่จะเริ่มแล้วผลักใหม่ ทางลาดที่ควรจะทำงานก็จะหยุดนิ่ง สะพานไม่ตกลงมา ทางแยกที่แตกต่างออกไปจะถูกเปิดใช้งาน รูปแบบสุดท้ายของโดมิโนบนพื้นจะแตกต่างไปจากเดิมอย่างสิ้นเชิงจนจำไม่ได้ SHA-256 คือวงจรนี้ในทางคณิตศาสตร์ ข้อความที่คุณเขียนคือตำแหน่งเริ่มต้นของโดมิโน อัลกอริทึมคือการผลักที่ปลดปล่อยการล้มแบบต่อเนื่อง และผลลัพธ์สุดท้าย — ที่เราเรียกว่า แฮช (hash) — คือภาพนิ่งของพื้นที่หยุดนิ่งแล้ว เปลี่ยนเพียงคอมมาตัวเดียวในข้อความต้นฉบับ ภาพที่ได้จะแตกต่างไปอย่างสิ้นเชิง เรียบง่ายแต่ทรงพลังเช่นนั้นเอง --- หากคุณกลับไปดูที่ส่วนท้ายของบทความนี้ คุณจะเห็นตราประทับเลขฐานสิบหกที่มีความยาว 64 ตัวอักษร มันคือ SHA-256 ของข้อความที่คุณเพิ่งอ่านในภาษานี้ หากเราแปลบทความนี้ ตราประทับก็จะเปลี่ยนไป หากมีการเปลี่ยนคำเพียงคำเดียวในเวอร์ชันภาษาไทย ตราประทับภาษาไทยก็จะเปลี่ยนไป ตราประทับไม่ได้ปกป้องเนื้อหา (นั่นคือหน้าที่ของเครื่องมืออื่น) แต่มันระบุตัวตนของเนื้อหาได้อย่างเป็นเอกลักษณ์ และนั่นก็เพียงพอแล้วที่จะทำให้ขั้นตอนใดๆ ในกระบวนการบรรณาธิการไม่สามารถแก้ไขสิ่งที่พูดไว้ได้โดยไม่ถูกสังเกตเห็น ส่วนที่เหลือ ไม่ว่าจะเป็นการเข้ารหัส การลงนาม การยืนยันตัวตน ล้วนสร้างขึ้นบนแนวคิดที่เรียบง่ายนี้ แหล่งข้อมูลและการอ่านเพิ่มเติม - NIST — FIPS PUB 180-4: Secure Hash Standard (SHS), สิงหาคม 2015. ข้อกำหนดอย่างเป็นทางการของตระกูล SHA-2 รวมถึง SHA-256 - RFC 6234 — US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), IETF, พฤษภาคม 2011. เวอร์ชันมาตรฐานสำหรับผู้พัฒนา - Ferguson, N.; Schneier, B.; Kohno, T. — Cryptography Engineering: Design Principles and Practical Applications (Wiley, 2010). บทที่ 5 และ 6 ครอบคลุมถึงฟังก์ชันแฮชและการใช้งานที่ถูกต้องและไม่ถูกต้อง - Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). ตัวอย่างการใช้งาน SHA-256 ในเชิงปฏิบัติเพื่อเชื่อมโยงบล็อกในโครงสร้างที่ไม่สามารถแก้ไขได้โดยการออกแบบ - ข้อบังคับ (สหภาพยุโรป) 910/2014 (eIDAS) — กรอบการทำงานสำหรับผู้ให้บริการประทับรับรองเวลาที่ผ่านการรับรอง SHA-256 เป็นฟังก์ชันอ้างอิงสำหรับลายเซ็นดิจิทัลและตราประทับอิเล็กทรอนิกส์ที่ออกในสหภาพยุโรป - ตัวอย่างอ้างอิงในภาษา Zig: std.crypto.hash.sha2.Sha256 ในพื้นที่เก็บข้อมูลหลักของภาษา (github.com/ziglang/zig → lib/std/crypto/sha2.zig) ซึ่งเป็นเวอร์ชันที่ Solo2 ใช้งานจริง มีประโยชน์สำหรับการเปรียบเทียบกับตัวอย่างเพื่อการศึกษาในภาคผนวก --- Cuadernos Lacre · สิ่งพิมพ์ของ Menzuri Gestión S.L. · เขียนโดย R.Eugenio · เรียบเรียงโดยทีมงาน Solo2 https://solo2.net/th/notebooks/