หากมองย้อนกลับไปในอดีต วิธีเดียวที่จะติดตั้งซอฟต์แวร์ใหม่บนอุปกรณ์ของเราคือ การเดินไปซื้อแผ่นซอฟต์แวร์จากร้านค้าแบบมีหน้าร้าน ยุคนั้นซอฟต์แวร์มักจะวางจำหน่ายในรูปแบบ แผ่นฟลอปปีดิสก์ (Floppy Disk) หรือ แผ่นซีดี (CD) ซึ่งถูกบรรจุในกล่องที่ปิดผนึกไว้อย่างแน่นหนา เพื่อรับรองว่าเป็นของแท้ และประกันความสมบูรณ์ของตัวซอฟต์แวร์นั้น
แต่ปัจจุบันนี้ เมื่อโลกเข้าสู่ยุคอินเทอร์เน็ต การติดตั้งซอฟต์แวร์ใหม่จึงกลายเป็นเรื่องง่ายกว่าที่เคย เพียงแค่เข้าเว็บไซต์ที่น่าเชื่อถือ เช่น www.thaiware.com เลือกซอฟต์แวร์ที่ต้องการ คลิกดาวน์โหลด เท่านั้นก็เรียบร้อย
แต่เราจะรู้ได้อย่างไรว่า ? ซอฟต์แวร์ที่เราเพิ่งดาวน์โหลดมาเป็นไฟล์อันเดียวกัน ตรงกับสิ่งที่อธิบายไว้ในเว็บไซต์ หรือแย่ไปกว่านั้น หากมันเป็นไฟล์ที่ถูกดัดแปลงสอดไส้ มัลแวร์ (Malware) มาด้วยล่ะ ? เราจะมีวิธีตรวจสอบความสมบูรณ์ หรือความถูกต้องของไฟล์ได้อย่างไร ? แน่นอนว่ามันมีวิธีอยู่นั่นก็คือ การ "เช็คซัม" (Checksum)
แล้วเช็คซัมคืออะไร ? และมันทำงานอย่างไร ? ในบทความนี้ เราจะมาหาคำตอบกัน ...
เช็คซัม (Checksum) มีบทบาทสำคัญที่หลากหลาย ตั้งแต่การตรวจสอบความถูกต้องของข้อมูล ไปจนถึงความปลอดภัยทางไซเบอร์ โดย Checksum ถือเป็นเครื่องมือสำคัญในการรับรองความถูกต้อง และความปลอดภัยของ การส่งผ่านข้อมูล (Data Transmission) และการจัดเก็บข้อมูล
Checksum คือ ค่าที่ได้จากชุดข้อมูล โดยอาจจะเป็นไฟล์ หรือข้อความก็ได้ เช่น คำว่า "www.thaiware.com" เมื่อเข้ารหัสด้วยอัลกอริทึม Secure Hashing Algorithm แบบ 256 บิต ก็จะได้เป็น "aa9a50db6568ef0cf184d032bbad076bc75cca32edd4569f390f783c060092b8"
ภาพจาก: https://en.wikipedia.org/wiki/Checksum
ค่านี้ถูกใช้เพื่อตรวจจับข้อผิดพลาด หรือการเปลี่ยนแปลงที่เกิดขึ้น โดยค่านี้ถูกสร้างขึ้นผ่านการคำนวณด้วยอัลกอริทึม Checksum ซึ่งจะประมวลผลข้อมูล และสร้างสตริง (Fixed-Size String) หรือ ตัวเลขขนาดคงที่ (Fixed-Size Number) ออกมา ค่านี้ทำหน้าที่เสมือนเป็น “ลายนิ้วมือ” ของข้อมูล เพื่อให้ผู้ใช้สามารถตรวจสอบความสมบูรณ์ของข้อมูลได้
ตัวอย่างเช่น เมื่อเราดาวน์โหลดไฟล์จากอินเทอร์เน็ต ไฟล์นั้นอาจมาพร้อมกับค่า Checksum หากเราคำนวณค่าเช็คซัมของไฟล์ที่ดาวน์โหลดมา แล้วเปรียบเทียบกับค่า Checksum ที่ระบุไว้ ก็จะสามารถยืนยันได้ว่าไฟล์นั้นไม่ได้ถูกแก้ไข หรือเสียหายระหว่างการดาวน์โหลด ถ้าค่าเช็คซัมตรงกัน แสดงว่าข้อมูลน่าจะยังสมบูรณ์ แต่ถ้าไม่ตรงกัน ก็อาจเกิดความเสียหาย หรือถูกดัดแปลงขึ้น
การเข้าใจว่า Checksum คือ อะไร ? และใช้งานอย่างไร ? ถือเป็นสิ่งสำคัญสำหรับผู้ที่มีหน้าที่บริหารจัดการข้อมูลหรือดูแลความปลอดภัยทางไซเบอร์ เนื่องจาก Checksum ถูกใช้อย่างแพร่หลายในหลายบทบาท เช่น การแจกจ่ายซอฟต์แวร์, การจัดเก็บข้อมูล และการสื่อสารผ่านเครือข่าย
อย่างไรก็ตาม สิ่งสำคัญที่ควรทำความเข้าใจคือ ถึงแม้ค่า แฮช (Hash) ของไฟล์ทั้งหมด สามารถทำหน้าที่เป็น Checksum ได้ แต่ไม่ใช่ว่า Checksum ทุกชนิดจะเป็นผลลัพธ์แบบสุ่มที่มีความยาวคงที่ (Hash Digests) ได้ เปรียบเทียบให้เห็นภาพง่าย ๆ "ไอศกรีมทุกชนิดคือของหวาน แต่ของหวานทุกอย่างไม่ใช่ไอศกรีม" นั่นเอง
โดยทั่วไป Checksum จะถูกใช้เพื่อตรวจจับความผิดพลาดที่เกิดขึ้นโดยไม่ตั้งใจกับข้อมูล เช่น ข้อผิดพลาดจากการส่งผ่าน หรือจัดเก็บข้อมูล ในขณะที่ค่า Hash มักใช้เพื่อตรวจจับการเปลี่ยนแปลงอื่น ๆ ที่อาจมุ่งร้าย หรือเจตนาไม่ดี นอกจากนี้ ค่า Hash ก็มักจะมีขนาดใหญ่กว่าค่า Checksum
Checksum เป็นวิธีตรวจจับข้อผิดพลาดที่ใช้ใน โปรโตคอล (Protocol) ระดับ Upper-Layer และถือว่ามีความน่าเชื่อถือมากกว่าวิธี การตรวจสอบความซ้ำซ้อนตามยาว (Longitudinal Redundancy Check-LRC), การตรวจสอบด้วยส่วนซ้ำซ้อนแนวตั้ง (Vertical Redundancy Check-VRC) และการตรวจสอบด้วยส่วนซ้ำซ้อนแบบวน (Cyclic Redundancy Check-CRC) โดย Checksum ผ่านอุปกรณ์ทั้งสองฝั่ง ได้แก่ Checksum Generator ที่ฝั่งผู้ส่ง และ Checksum Checker ที่ฝั่งผู้รับ
Checksum เป็นตัวเลขเฉพาะที่ถูกสร้างขึ้นจากข้อมูล เพื่อใช้ในการตรวจสอบความสมบูรณ์ของข้อมูล เมื่อต้นทางสร้างข้อมูล จะมีการคำนวณค่า Checksum และส่งไปพร้อมกัน หรือบันทึกไว้ จากนั้น เมื่อมีการเรียกใช้ข้อมูลอีกครั้ง จะมีการคำนวณค่าเช็คซัมใหม่ หากค่าเช็คซัมทั้งสองตรงกัน แสดงว่าข้อมูลมีแนวโน้มที่จะไม่มีข้อผิดพลาด
ในฝั่งผู้ส่ง ข้อมูลจะถูกแบ่งออกเป็นหน่วยย่อยที่มีความยาวเท่ากัน n บิต ด้วยเครื่องมือสร้างเช็คซัม (Checksum Generator) โดยทั่วไปแล้ว หน่วยข้อมูลย่อยนี้มักมีความยาว 16 บิต จากนั้นหน่วยย่อยเหล่านี้จะถูกนำมาบวกเข้าด้วยกันโดยใช้วิธี "One’s Complement" ซึ่งเป็นการดำเนินการทางคณิตศาสตร์ที่ใช้ในการแทนจำนวนลบในระบบเลขฐานสอง โดยการสลับค่าบิตทุกบิต (เปลี่ยน 0 เป็น 1 และ 1 เป็น 0) ตัวอย่างเช่น เลขฐานสอง 1011 จะมีส่วนเติมเต็มหนึ่งเป็น 0100 ผลรวมที่ได้จะมีขนาด n บิต และค่าบิตที่ได้จากผลรวมนี้จะถูก กลับค่าทุกบิต (Complemented) อีกครั้ง
ผลลัพธ์สุดท้ายซึ่งได้จากการกลับค่าบิตนี้เรียกว่า Checksum และจะถูกแนบต่อท้ายชุดข้อมูลต้นฉบับ จากนั้นจึงส่งข้อมูลทั้งหมดไปยังฝั่งผู้รับ
เมื่อฝั่งผู้รับได้รับข้อมูลพร้อมค่า Checksum แล้ว ข้อมูลนั้นจะถูกส่งต่อไปยังตัวเครื่องมือตรวจสอบเช็คซัม (Checksum Checker) จากนั้น Checksum Checker จะทำการแบ่งชุดข้อมูลนี้ออกเป็นหน่วยย่อยหลายชุดที่มีขนาดเท่ากัน และนำหน่วยย่อยทั้งหมดมาบวกเข้าด้วยกัน ซึ่งในหน่วยย่อยเหล่านี้ จะมี Checksum รวมอยู่ด้วยเป็นหนึ่งในหน่วยข้อมูล จากนั้น ผลรวมที่ได้จะถูก กลับค่าบิต (Complemented)
หากผลลัพธ์ที่ได้จากการกลับค่านี้เป็น ศูนย์ (Zero) แสดงว่าข้อมูลไม่มีข้อผิดพลาด แต่ถ้าผลลัพธ์ ไม่เป็นศูนย์ (Non-Zero) หมายความว่าข้อมูลมีข้อผิดพลาด และฝั่งผู้รับจะปฏิเสธที่จะรับข้อมูลนั้น
ภาพจาก: https://www.geeksforgeeks.org/computer-networks/error-detection-code-checksum/
การที่ค่าของ Checksum ไม่ตรงกัน นั่นมีความเป็นไปได้ว่ามีความผิดปกติเกิดขึ้นกับข้อมูลระหว่างการส่งผ่าน โดยมีปัจจัยหลายประการที่อาจเป็นสาเหตุของความผิดปกติดังกล่าว เช่น
อย่างไรก็ตาม Checksum ไม่สามารถเชื่อถือได้เสมอไป บางครั้งแม้ข้อมูลจะเสียหาย จนค่า Checksum ไม่ตรง แต่ระบก็ตรวจสอบไม่เจอ
หากหน่วยข้อมูลที่ต้องการส่งคือ 10101001 00111001 ขั้นตอนที่ฝั่งผู้ส่งจะดำเนินการมีดังนี้:
เช็คซัม 00011101 นี้จะถูกแนบต่อท้ายข้อมูลต้นฉบับก่อนส่งไปยังผู้รับ
เมื่อนำข้อมูลทั้งหมดมารวมกันโดยใช้การบวกแบบ One's complement จะได้
ผลลัพธ์เป็นศูนย์ หมายความว่าข้อมูลได้รับมาครบถ้วน และไม่มีการเปลี่ยนแปลงระหว่างทาง
ตัวอย่างเช่น หากข้อมูลที่ส่งมาพร้อมกับค่าเช็คซัมคือ 10101001 00111001 00011101 แต่ข้อมูลที่ถูกผู้รับได้รับคือ 00101001 10111001 00011101
ในกรณีนี้ แม้จะมีความเสียหายของข้อมูล 2 หน่วย แต่เมื่อคำนวณเช็คซัมกลับให้ผลลัพธ์เท่ากับศูนย์ นี่แสดงให้เห็นว่า การ Checksum อาจตรวจไม่เจอความผิดพลาดบางประเภท เช่น ความเสียหายที่ผลลัพธ์ "หักล้างกันได้พอดี" จะเห็นได้ว่าแม้ระบบตรวจสอบ Checksum จะเรียบง่าย และรวดเร็ว แต่มันก็มีข้อผิดพลาดเกิดขึ้นได้เช่นกัน
มีอัลกอริทึม Checksum หลายประเภท ที่สามารถใช้ในการสร้างค่า Checksum ได้ ซึ่งการจะเลือกว่าควรใช้อัลกอริทึมใดนั้น ? ขึ้นอยู่กับวัตถุประสงค์ของการใช้งาน โดยอัลกอริทึมที่ได้รับความนิยม ก็อย่างเช่น
พัฒนาในปี ค.ศ. 1991 (พ.ศ. 2534) โดยรับข้อมูลเข้า และสร้างค่า Checksum ขนาด 128 บิต (หรือ 16 ไบต์) ซึ่งแสดงผลเป็นเลขฐานสิบหกจำนวน 32 หลัก อย่างไรก็ตาม Message Digest 5 (MD5) มีช่องโหว่ เช่น ปัญหาการชนกันของค่าแฮช (Collision) จึงไม่ปลอดภัยเท่ากลุ่มอัลกอริทึม Secure Hash Algorithm (SHA)
ภาพจาก: https://codesigningstore.com/what-is-checksum-how-it-works
พัฒนาขึ้นมาโดยสถาบันมาตรฐาน และเทคโนโลยีแห่งชาติของสหรัฐฯ (National Institute of Standards and Technology-NIST) เป็นอัลกอริทึมแฮชที่รับข้อมูลเข้า และสร้างค่าผลลัพธ์ขนาด 160 บิต (หรือ 20 ไบต์) เพื่อใช้เป็น Checksum โดยค่าที่ได้จะแสดงเป็นสตริงเลขฐานสิบหกจำนวน 40 หลัก อย่างไรก็ตาม ตั้งแต่ปี ค.ศ. 2005 (พ.ศ. 2548) เป็นต้นมา SHA-1 ได้ถูกพิจารณาว่าไม่ปลอดภัยอีกต่อไปแล้ว
ภาพจาก: https://codesigningstore.com/what-is-checksum-how-it-works
Secure Hash Algorithm-2 ได้รับการรับรอง และแนะนำโดย NIST อัลกอริธึมกลุ่มนี้ถูกใช้อย่างแพร่หลาย มันประกอบด้วย
ภาพจาก: https://codesigningstore.com/what-is-checksum-how-it-works
จาก SHA-2 มันได้รับการปรับปรุง จนเป็น SHA-3 มันใช้อัลกอริธึมที่แตกต่างจากเดิม โดยอิงจากแนวคิดการเข้ารหัสแบบใหม่ จึงมีความแตกต่างจากอัลกอริธึมก่อนหน้าอย่างสิ้นเชิง
ภาพจาก: https://codesigningstore.com/what-is-checksum-how-it-works
CRC มีลักษณะคล้ายกับ Checksum แบบ "ดั้งเดิม" อย่างมาก โดยมักใช้สำหรับตรวจจับข้อผิดพลาด และตรวจหาการเปลี่ยนแปลงของข้อมูลที่เกิดขึ้นโดยไม่ตั้งใจในเครือข่ายดิจิทัล และอุปกรณ์จัดเก็บข้อมูล เช่น ในแพ็กเก็ตของ Ethernet และ Wi-Fi
CRC อ้างอิงตามรหัสแบบวงกลม (Cyclic Code) โดยใช้การหารแบบพหุนาม (Polynomial Division) เพื่อคำนวณค่า Checksum
CRC ที่พบได้บ่อยที่สุด ได้แก่
ภาพจาก: https://codesigningstore.com/what-is-checksum-how-it-works
ในเดือนพฤศจิกายน ปี ค.ศ. 1958 (พ.ศ. 2501) ที่งานประชุมวิชาการนานาชาติว่าด้วยสารสนเทศทางวิทยาศาสตร์ ซึ่งจัดขึ้นเป็นเวลา 6 วัน นักประดิษฐ์ชื่อ ฮันส์ ปีเตอร์ ลูน (Hans Peter Luhn) ได้นำเสนอ เครื่องจักรไฟฟ้าเชิงกล (Electromechanical Machine) ของเขาหลายรุ่น เครื่องที่ถูกนำมาจัดแสดงดูธรรมดา มันมีลักษณะเป็นกล่องทรงเหลี่ยม เน้นใช้งานเป็นหลัก ไม่ได้เน้นความสวยงาม ซึ่งก็เป็นเรื่องธรรมดาของอุปกรณ์คอมพิวเตอร์ในยุคนั้น มันถูกออกแบบมาเพื่อจัดเรียง และคัดแยกแผ่น บัตรเจาะรู (Punch Card) จำนวนมาก ลงในช่อง และถังเก็บต่าง ๆ
อย่างไรก็ตาม เครื่องของลูนแตกต่างจากคอมพิวเตอร์ทั่วไป เนื่องจากไม่ได้ถูกออกแบบมาเพื่อประมวลผลตัวเลข หรือการคำนวณ แต่เพื่อทำงานกับคำ และประโยค หนึ่งในเครื่องที่ได้รับความสนใจเป็นพิเศษคือ เครื่องที่ลูนตั้งชื่อมันว่า KWIC ("Key Word in Context" หรือ "คำสำคัญในบริบท") โดยมันสามารถรับข้อมูลจากบทความขนาด 500 ถึง 5,000 คำ เพื่อนำมาสร้างดัชนีโดยอัตโนมัติได้อย่างรวดเร็ว
ภาพจาก: https://spectrum.ieee.org/hans-peter-luhn-and-the-birth-of-the-hashing-algorithm
ช่วงเวลานั้น การจัดทำดัชนี, การจัดหมวดหมู่ และการจัดระเบียบข้อมูลที่เป็นลายลักษณ์อักษร เป็นกระบวนการที่ยุ่งยาก และใช้เวลามาก แม้กระทั่งสำหรับผู้เชี่ยวชาญที่มีประสบการณ์สูง และปริมาณข้อมูลในหลายสาขาก็เพิ่มขึ้นอย่างรวดเร็วจนยากที่จะติดตามทัน วิธีสรุป และย่อเนื้อหา จึงเป็นงานที่ต้องการวิธีการใหม่ ๆ เข้ามาช่วยเหลือ การสาธิตระบบ KWIC ของลูน จึงกลายเป็นเหตุการณ์ที่สั่นสะเทือนวงการ สื่อหนังสือพิมพ์ทั่วสหรัฐอเมริกาต่างรายงานเกี่ยวกับสิ่งประดิษฐ์อันน่าทึ่งของลูน
ในช่วงต้นทศวรรษ ค.ศ. 1960 (พ.ศ. 2503) ระบบ KWIC ได้กลายเป็นหัวใจสำคัญในการออกแบบระบบจัดทำดัชนีด้วยคอมพิวเตอร์นับร้อยระบบ ลูน ซึ่งขณะนั้นเป็นวิศวกรอาวุโสของ IBM ยังได้นำระบบ KWIC ไปใช้เป็นส่วนหนึ่งของ "ระบบอัจฉริยะ (Intelligence System)" สำหรับธุรกิจ โดยออกแบบให้สามารถระบุ และส่งต่อข้อมูล ที่เกี่ยวข้องไปยังบุคคลที่เหมาะสมภายในองค์กรขนาดใหญ่ได้อย่างมีประสิทธิภาพ หากมองอีกนัยหนึ่ง โดยพื้นฐานแล้ว KWIC ก็เปรียบเสมือนเสิร์ชเอนจินในยุคนั้น มันช่วยให้ผู้ใช้งานสามารถค้นหาข้อมูลที่ต้องการได้อย่างรวดเร็ว
ในยุคนี้ เราอาจรู้สึกว่าเป็นเรื่องธรรมดาที่คอมพิวเตอร์สามารถเข้าใจข้อมูล และนำเสนอรีวิวร้านอาหาร, ผลการแข่งขันกีฬา หรือราคาหุ้นได้ตามต้องการ แต่ในยุคของลูน คอมพิวเตอร์มันยังไม่ได้เก่งเหมือนที่เราใช้กันอยู่ในปัจจุบันนี้ แต่แนวคิดของลูนที่ทำให้คอมพิวเตอร์สามารถจัดการข้อความได้ มันช่วยเปิดมุมมองใหม่ที่กว้างขึ้นเกี่ยวกับบทบาท และศักยภาพของคอมพิวเตอร์ จนนำไปสู่การค้นพบคำตอบของปัญหาที่ยังไม่มีใครรู้จักในตอนนั้น คำตอบที่เรียกว่า "ฟังก์ชันแฮช (Hash Function)"
ลูนเป็นนักประดิษฐ์ที่จดสิทธิบัตรมาแล้วหลายอย่าง แต่ในความสนใจหลักของลูนคือ การจัดเก็บ,สื่อสาร และสืบค้นข้อมูล โดยเฉพาะข้อมูลที่เป็นข้อความ และด้วยความมุ่งมั่นในด้านนี้ เขาจึงเข้าร่วมงานกับ บริษัท IBM ในตำแหน่ง “นักประดิษฐ์” ลูนถือเป็นบุคคลที่มีผลงานโดดเด่น เขาจดสิทธิบัตรให้กับ IBM มากถึง 70 รายการ โดยสิ่งประดิษฐ์ส่วนใหญ่ของเขาล้วนมุ่งเน้นไปที่การใช้เครื่องจักร รวมถึงคอมพิวเตอร์อิเล็กทรอนิกส์ เพื่อจัดการ และประมวลผลข้อมูล
ยกตัวอย่างเช่น ในปี ค.ศ. 1946 (พ.ศ. 2489) และ ค.ศ. 1947 (พ.ศ. 2490) ลูนได้พัฒนาแนวคิดการทำเอกสารที่พิมพ์ด้วยเครื่องพิมพ์ดีดให้สามารถอ่านได้ด้วยเครื่องจักร โดยหนึ่งในสิ่งประดิษฐ์ของเขาคือ ใช้แถบโลหะใส่เข้าไปในเครื่องพิมพ์ดีด ที่สามารถบันทึกลวดลายแม่เหล็กลงบนกระดาษเพื่อให้เครื่องอ่านข้อมูลเหล่านั้นได้ ไม่นานหลังจากนั้น เขาเริ่มทำงานร่วมกับนักเคมีจาก MIT สองคน ได้แก่ มัลคอล์ม ไดสัน และเจมส์ เพอร์รี เพื่อพัฒนาเครื่องจักรที่สามารถค้นหาข้อมูลเกี่ยวกับสารเคมีโดยอัตโนมัติผ่านบัตรเจาะรู
โดยในแต่ละบัตรจะบรรจุข้อมูลของสารประกอบเคมีเฉพาะตัวไว้ ผู้ใช้สามารถใส่ “บัตรคำถาม” ลงไปในเครื่อง โดยระบุเกณฑ์ต่าง ๆ ที่ต้องการ เพื่อให้ระบบเปรียบเทียบ และจัดเรียงบัตรของสารประกอบทั้งหมดตามเกณฑ์ดังกล่าว นักเคมีที่ได้ใช้รายหนึ่งถึงกับกล่าวว่า สิ่งนี้ยิ่งใหญ่พอ ๆ กับการคิดค้นหลอดทดลองขึ้นมาเลยทีเดียว
ช่วงหลังสงครามโลก มีจำนวนงานวิจัยทางวิทยาศาสตร์ และวิศวกรรมศาสตร์ ถูกเผยแพร่ออกมาเพิ่มขึ้นอย่างมหาศาล ผู้เชี่ยวชาญจำนวนมากแสดงความกังวลว่า "ภาวะข้อมูลล้นเกิน" อาจกลายเป็นอุปสรรคใหญ่ต่อทั้งนักวิจัย และนักธุรกิจ แวนเนวาร์ บุช (Vannevar Bush) ผู้นำหน่วยงานวิทยาศาสตร์ของสหรัฐฯ ในช่วงสงคราม และหนึ่งในผู้ก่อตั้งมูลนิธิวิทยาศาสตร์แห่งชาติ (NSF) ได้เสนอแนวคิดอุปกรณ์ไฟฟ้าเชิงกลขนาดเท่าโต๊ะทำงานที่มีชื่อว่า Memex สำหรับจัดเก็บ และเชื่อมโยงข้อมูลเข้าด้วยกัน
อย่างไรก็ตาม แนวคิดของบุชไม่เคยถูกทำให้เป็นจริง แต่แนวคิดของลูนกลับได้รับการนำไปใช้อย่างแพร่หลาย ยกตัวอย่างเช่น เมื่อวันที่ 6 มกราคม ค.ศ. 1954 (พ.ศ. 2497) เขาได้ยื่นขอจดสิทธิบัตรสำหรับ "คอมพิวเตอร์สำหรับตรวจสอบหมายเลข" ซึ่งเป็นอุปกรณ์กลไกแบบพกพา ที่ออกแบบมาเพื่อแก้ปัญหาง่าย ๆ
ในเวลานั้น หมายเลขระบุตัวตนประเภทต่าง ๆ เช่น หมายเลขบัตรเครดิต และหมายเลขประกันสังคม เริ่มมีบทบาทสำคัญทั้งในชีวิตสาธารณะ และชีวิตส่วนตัว อย่างไรก็ตาม หมายเลขเหล่านี้มักจำได้ยาก และอาจถูกจดผิด หรือแม้แต่ปลอมแปลงโดยเจตนา สิ่งที่จำเป็นคือ วิธีการที่สามารถตรวจสอบความถูกต้องของหมายเลขระบุตัวตนได้อย่างรวดเร็ว คอมพิวเตอร์แบบมือถือของลูนสามารถทำสิ่งนี้ได้ โดยอาศัยอัลกอริธึม Checksum ที่เขาเป็นผู้พัฒนาขึ้นเอง
สำหรับหมายเลขที่มี 10 หลัก เครื่องจะดำเนินการตามขั้นตอนดังนี้
ขั้นตอนเหล่านี้จะสร้าง “หมายเลขตรวจสอบ” (Check Digit) ที่เป็นเลขหลักเดียว ในสูตรดั้งเดิมของลูน หมายเลข 0 หมายถึงหมายเลขต้นฉบับนั้นถูกต้อง แต่ในเวอร์ชันถัดมา หมายเลขตรวจสอบจะถูกต่อท้ายหมายเลขต้นฉบับ กลายเป็นหลักสุดท้าย เพื่อให้สามารถตรวจสอบความถูกต้องได้อย่างง่ายดาย โดยการเปรียบเทียบกับหมายเลขที่เครื่องคำนวณของเขาสร้างขึ้น
กระบวนการคำนวณนี้ต่อมารู้จักกันในชื่อ อัลกอริธึมโมดูลัส 10 (Modulus 10 Algorithm) ยังคงถูกใช้อย่างแพร่หลายในปัจจุบัน ตัวอย่างที่เห็นได้ชัดคือ การตรวจสอบ หมายเลขประจำเครื่องโทรศัพท์มือถือ หรือ IMEI
ไอเดียนี้ของลูนได้กลายเป็นหนึ่งในรากฐานที่สุดของยุคดิจิทัล นั่นคือ การแฮช (Hash) อัลกอริธึมประเภทนี้เป็นกลุ่มเครื่องมือที่ทรงพลังสำหรับการจัดระเบียบข้อมูลให้คอมพิวเตอร์สามารถค้นหาได้อย่างมีประสิทธิภาพ
ย้อนกลับไปในช่วงต้นปี ค.ศ. 1953 (พ.ศ. 2496) ลูนได้เขียนบันทึกเสนอแนวคิดในการจัดข้อมูลลงใน “ถังข้อมูล” (Buckets) เพื่อช่วยให้ค้นหาได้เร็วขึ้น ยกตัวอย่าง สมมติว่าเราต้องการค้นหาเบอร์โทรศัพท์ในฐานข้อมูล เพื่อตรวจสอบว่าเป็นของใคร หมายเลข 10 หลัก เช่น 314-159-2652 อาจต้องใช้เวลาค้นหาแบบทีละรายการในฐานข้อมูลขนาดใหญ่ ที่มีหมายเลขเป็นล้านรายการ ซึ่งจะใช้เวลามาก
แนวคิดของลูนคือ การกำหนด “ถังข้อมูล” (Bucket) ที่มีหมายเลขให้กับแต่ละรายการ โดยตัวเลขของเบอร์โทรศัพท์จะถูกจับคู่เป็นกลุ่มละ 2 หลัก ยกตัวอย่างจากเบอร์โทรศัพท์ด้านบนคือ 31, 41, 59, 26, 52 จากนั้นจะนำตัวเลขแต่ละคู่มาบวกกัน ได้ผลลัพธ์คือ 4, 5, 14, 8, 7 แล้วสร้างหมายเลขใหม่โดยนำเฉพาะตัวเลขหลักเดียวของแต่ละผลลัพธ์มาใช้ ในกรณีที่ได้เลขสองหลัก เช่น 14 จะใช้เฉพาะหลักท้าย นั่นคือได้ผลลัพธ์สุดท้ายเป็น 45487 > ข้อมูลหมายเลขโทรศัพท์เดิม และชื่อหรือที่อยู่ที่เกี่ยวข้อง จะถูกจัดเก็บลงในถังข้อมูลที่ติดป้ายหมายเลข "45487"
ทีนี้ เวลาค้นหารายการข้อมูลจากหมายเลขโทรศัพท์นั้น ก็จะเริ่มต้นด้วยการคำนวณหมายเลขถัง (Bucket Number) อย่างรวดเร็วโดยใช้วิธีของลูน จากนั้นจึงดึงข้อมูลจากถังที่เกี่ยวข้อง แม้ในแต่ละถังจะมีหลายรายการอยู่ภายใน การค้นหาแบบเรียงลำดับภายในถังเดียวก็ยังเร็วกว่าอย่างมาก เมื่อเทียบกับการค้นหาทั้งหมดทีละรายการ
ตลอดหลายทศวรรษที่ผ่านมา นักวิทยาศาสตร์คอมพิวเตอร์ และโปรแกรมเมอร์ต่างก็พัฒนาแนวทางของลูนให้ก้าวหน้ายิ่งขึ้น และนำไปใช้ในบริบทใหม่ ๆ แต่แนวคิดพื้นฐานยังคงเหมือนเดิม นำหลักการทางคณิตศาสตร์มาใช้ในการจัดระเบียบข้อมูลให้แยกเก็บลงในถังที่ค้นหาได้ง่าย อัลกอริธึมแฮชจึงกลายเป็นกลไกสำคัญในหลายสาขา ทุกครั้งที่เรากรอกหมายเลขบัตรเครดิตทางอินเทอร์เน็ต หรือใช้พจนานุกรมของโปรแกรมประมวลผลคำ ระบบแฮชก็กำลังทำงานอยู่เบื้องหลัง
ไอเดียของลูนไม่ได้หยุดอยู่ที่การประมวลผลตัวเลข เมื่อเทคโนโลยีมีความก้าวหน้ามากขึ้น ลูนมองว่าเครื่องจักรเหล่านี้สามารถเป็นเครื่องมือชั้นเยี่ยมในการจัดการข้อความ ทั้งการอ่าน, ทำความเข้าใจภาษาเขียน, การจัดทำดัชนี และการจัดระเบียบข้อมูล เพื่อแก้ปัญหาในเชิงวิทยาศาสตร์ และธุรกิจได้อย่างเป็นรูปธรรม
ในปี ค.ศ. 1958 (พ.ศ. 2501) เครื่องคัดแยกบัตรสารเคมีของเขาได้พัฒนาจนกลายเป็นเครื่อง Universal Card Scanner และเครื่อง 9900 Special Index Analyzer ซึ่งเขานำมันไปสาธิตที่งานประชุมในกรุงวอชิงตัน ดี.ซี. เครื่องมือเหล่านี้เป็นอุปกรณ์ไฟฟ้าเชิงกลที่สามารถค้นหา และจัดเรียงบัตรเจาะรู ตามเกณฑ์ที่ผู้ใช้งานกำหนดได้
แต่สิ่งที่สร้างความฮือฮาอย่างแท้จริงคือ KWIC เพราะมันมีคุณสมบัติในการสร้าง Concordance แบบอัตโนมัติ Concordance คือ รายการเรียงตามลำดับตัวอักษรของ "คำสำคัญ" ที่ปรากฏในหนังสือ หรือชุดงานเขียนบางชุด มันคล้ายกับสารบัญ หรือดัชนี แต่จะระบุเฉพาะคำที่ปรากฏจริงในข้อความ และจะละเว้นคำทั่วไป เช่น a หรือ the
Concordance ถูกใช้มาอย่างยาวนานในด้านเทววิทยา และภาษาศาสตร์ ตัวอย่างเช่น คอนคอร์แดนซ์ของพระคัมภีร์ไบเบิล จะรวบรวมทุกตำแหน่งที่คำว่า "Love" ปรากฏ พร้อมอ้างถึงหนังสือ, บท และข้อ ก่อนที่จะมีระบบค้นหาข้อความเต็มรูปแบบด้วยคอมพิวเตอร์ การสร้างคอนคอร์แดนซ์เป็นงานที่ซับซ้อนแ ละกินเวลามาก จึงมักทำเฉพาะกับผลงานขนาดใหญ่ เช่น พระคัมภีร์ หรือบทประพันธ์ทั้งหมดของเชกสเปียร์เท่านั้น
สิ่งที่ "ระบบถังข้อมูล" (Bucket Scheme) ของลูนทำกับตัวเลขนั้น ระบบ KWIC ก็ทำในลักษณะเดียวกันกับข้อความ ทั้งสองระบบช่วยให้ข้อมูลจำนวนมากสามารถสืบค้นได้อย่างง่ายดาย ยกตัวอย่างง่าย ๆ สมมติว่า เราต้องการสร้าง Concordance จากชื่อหนังสือ 4 เล่มต่อไปนี้ Gone With the Wind, War and Peace, The Shadow of the Wind และ Shadows of War
ระบบ KWIC จะสร้างรายการคำสำคัญในบริบทของมัน เช่น
Gone | With the Wind | |
War and | Peace | |
The | Shadow | of the Wind |
Shadows | of War | |
War | and Peace | |
Shadows of | War | |
Gone With the | Wind | |
The Shadow of the | Wind |
อัลกอริธึม KWIC จะทำการจัดเรียงคำต่าง ๆ ในชื่อหนังสือให้ครบทุกลำดับที่เป็นไปได้ แล้วจึงจัดเรียงแต่ละชุดตามลำดับตัวอักษร ผลลัพธ์ที่ได้คือ รายการคำสำคัญทั้งหมด ยกเว้นคำบุพบท, สันธาน และคำนำหน้านาม พร้อมบริบทที่คำเหล่านั้นปรากฏอยู่
ระบบ KWIC ของลูนได้รับการยอมรับอย่างรวดเร็วในวงการวิทยาศาสตร์ และเขาเองก็ตระหนักดีว่าวิธีนี้มีประโยชน์ต่อภาคธุรกิจเช่นกัน ในปี ค.ศ. 1958 (พ.ศ. 2501) เขาเขียนบทความลงในวารสาร IBM Journal of Research and Development ชื่อว่า “A Business Intelligence System” โดยเสนอแนวคิดของระบบที่สามารถสร้างบทสรุปของบทความโดยอัตโนมัติ ดึง “จุดสำคัญเชิงปฏิบัติ” ออกมา และจัดส่งข้อมูลนั้นให้กับบุคคลที่เกี่ยวข้องภายในองค์กร ลูนเข้าใจดีว่า การแก้ปัญหาภาวะข้อมูลล้นเกินต้องอาศัยแนวทางที่ช่วยให้สามารถคัดกรองข้อมูลจำนวนมหาศาลได้อย่างรวดเร็ว โดยไม่ทำให้ผู้คนต้องรับมือกับเนื้อหาที่ไม่เกี่ยวข้อง
ลูนเกษียณจาก IBM ในปี ค.ศ. 1961 (พ.ศ. 2501) และเสียชีวิตด้วยโรคมะเร็งเม็ดเลือดขาวในอีกสามปีต่อมา โดยที่เขาไม่ได้มีโอกาสเห็นความเปลี่ยนแปลงที่เกิดจากการมาของอินเทอร์เน็ต และเวิลด์ไวด์เว็บ
ในหมู่ผู้เชี่ยวชาญด้านสารสนเทศ และนักประวัติศาสตร์บางกลุ่มนั้น ชื่อของเขายังคงได้รับการจดจำ แต่สำหรับสาธารณชนทั่วไปแล้ว ชื่อของลูนแทบเลือนหายไปจากความทรงจำ อย่างไรก็ตาม แนวคิดของเขายังคงอยู่ และมีอิทธิพลต่อโลกปัจจุบันอย่างลึกซึ้ง
ทุกวันนี้แฮช (Hashing) มีบทบาทสำคัญหลากหลายด้านในการจัดการ และปกป้องข้อมูลดิจิทัลของเรา การตรวจสอบความถูกต้องของข้อมูลด้วย Checksum ก็ต้องอาศัยแฮชเป็นพื้นฐานในการทำงาน และยังมีอีกหลายเรื่องที่ต้องใช้ ตัวอย่างเช่น เมื่อเรากรอกรหัสผ่านลงในเว็บไซต์ เซิร์ฟเวอร์ก็มักจะเก็บรหัสผ่านในรูปแบบที่ถูกแฮชไว้ หรือเมื่อเราเชื่อมต่อกับเว็บไซต์ผ่านการเชื่อมต่อที่ปลอดภัย URL ที่ขึ้นต้นด้วย "https" หรือทำธุรกรรมด้วย บิทคอยน์ (Bitcoin) ระบบแฮชก็มีบทบาทอยู่เบื้องหลังเหล่านี้เช่นกัน
ในบริการคลาวด์อย่าง Dropbox และ Google Drive เทคนิคแฮชช่วยให้การจัดเก็บ และแบ่งปันไฟล์มีประสิทธิภาพมากขึ้น และในการวิจัยพันธุกรรมหรือการวิเคราะห์ข้อมูลขนาดใหญ่ การใช้แฮชสามารถลดเวลาในการคัดกรองข้อมูลอย่างมาก แฮชได้เปลี่ยนคอมพิวเตอร์ให้กลายเป็นเครื่องมือจัดการข้อความที่สามารถ “เข้าใจ” ตัวอักษร และคำได้ Google Translate, Google N-gram, Google AdWords และ Google Search ต่างก็มีเป้าหมายในการตีความความหมายของข้อความในหลากหลายรูปแบบ
ปริมาณข้อมูลบนเว็บที่มีมหาศาลได้ทำให้ความสามารถในการอ่าน และทำความเข้าใจโดยอัตโนมัติ กลายเป็นสิ่งจำเป็น การพัฒนาแฮชนั้นเชื่อมโยงกับข้อความโดยตรง ซึ่งสะท้อนอยู่ในมุมมองของลูนเกี่ยวกับคำ, ประโยค, ดัชนีคำ (Concordance), บทคัดย่อ (Abstract) และสรุปเนื้อหา (Digest) นี่คือ “มรดก” ของลูนที่เหลือทิ้งเอาไว้ เขาได้แสดงให้เห็นว่าคอมพิวเตอร์ และการประมวลผลข้อมูลไม่ใช่แค่เรื่องของคณิตศาสตร์, สถิติ หรือตรรกะเท่านั้น แต่ยังรวมถึงภาษาศาสตร์ และวรรณกรรมด้วย ในยุคของเขา นี่คือแนวคิดที่ปฏิวัติความเข้าใจเรื่องเครื่องจักรอย่างแท้จริง
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |