Steganography อีกวิธีในการเก็บความลับ

เที่ยวนี้ต้องขอเขียนสั้นสักนิดนึงนะครับเพราะมีเวลาไปค้นไม่มากนัก เอาไว้จะชดเชยให้คราวต่อไปนะครับ.. อ้อ..มีข่าวดีอีกนิดนึง ว่างๆ ถ้ามี TV ดูก็ลองเปิด iTV นะครับ วันดีคืนดีอาจจะเห็น e-magazine ไปโผล่บนจอ TV หรืออาจจะไปอยู่บนคลื่นวิทยุ.. เพราะตอนนี้ทางผู้จัดรายการแจ้งมาว่าอยากจะแนะนำ webpage เรา แต่ก็ยังไม่ confirm นะครับ ตอนนี้เพียงแต่ให้ข้อมูลคร่าวๆ ไปตามที่ผู้จัดขอมา (หวังว่าคงจะได้เห็นจริงๆ นะครับ ขอบคุณล่วงหน้า) *^^*

เอาล่ะ .. คุยเล่นกันพอหอมปากหอมคอแล้ว มาดูบทความเดือนนี้กัน

Steganography เหรอ ???

ชื่อ เหมือนไดโนเสาร์นะครับ จริงๆ มันคืออะไรล่ะ ?? ต้องเกริ่นนำถึงที่มาซักนิดหน่อยนะครับ วิธีการเก็บรักษาความลับที่เรารู้จักกันคือการใช้ Cryptography ใช่มั้ยครับ เจ้า Cryptography นี่ใช้การเข้ารหัสเพื่อปกปิดข้อมูลและยอมให้ผู้บุกรุก “มองเห็น” ข้อมูลที่เข้ารหัสนั้นได้หรือจะขโมยไปก็ได้ เพราะถ้าไม่มีกุญแจถอดรหัสที่ถูกต้องข้อมูลที่ได้ไปก็ไม่มีประโยชน์ Steganography เป็นอีกวิธีนึงที่ใช้การซ่อนข้อมูลไว้ในที่ๆ มองไม่เห็น Steganography มีมาแต่โบราณประมาณสมัยกรีกไม่ได้เป็นของใหม่เลย อันที่จริงเราเองก็อาจจะเคยใช้มันด้วย อย่างเช่นการทำ watermark ใน Photoshop ไงครับ หรือที่บางคนอาจเคยเล่นสมัยเด็กๆ อย่างหมึกน้ำมะนาวไง ใครเคยลองเล่นมั่ง เวลาเขียนจะมองไม่เห็น แต่พอเอาไปลนไฟ ข้อความที่เขียนจะเริ่มปรากฏขึ้นมา .. หมึกน้ำมะนาวนี่เรียกว่าเป็น invisible ink ในประวัติศาสตร์ก็มีการใช้ invisible ink ในการส่งข้อความลับๆ ในกลุ่มนาซีสมัยสงครามโลกครั้งที่สองโดยเขียนข้อความแทรกตรงที่ว่างระหว่าง บรรทัดในจดหมายทั่วๆ ไป ทำให้ฝ่ายตรงข้ามจับไม่ได้

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

นอกจากนี้การส่งข้อความธรรมดาๆ ก็เอามาใช้เป็นการส่งข้อความลับๆ ได้ อย่างเช่นข้อความนี้เป็นข้อความจริงที่ส่งในสมัยสงครามโลกโดยทหารเยอรมัน

Apparently neutral’s protest is thoroughly discounted and ignored. Isman hard hit. Blockade issue affects pretext for embargo on by products, ejecting suets and vegetable oils.

ดูๆ แล้วก็เป็นประโยคธรรมดา ลองเอาตัวอักษรที่สองของแต่ละคำมาต่อกันสิครับ ผลที่ได้ก็คือ”Pershing sails from NY June 1″ (John Pershing เป็นจอมพลผู้นำทัพสหรัฐสมัยสงครามโลกครั้งที่หนึ่ง) มีเทคนิคอื่นๆ อีกมากมายในการซ่อนหรือพรางตาข้อความ พวกนี้แหละที่เรียกว่า “Steganography”

บนคอมพิวเตอร์

มาถึงในคอมพิวเตอร์กันบ้าง เราสามารถจะซ่อนข้อมูลได้หลายลักษณะแต่ที่นิยมคือการซ่อนไปกับ file ภาพหรือเสียง โดยที่เราใช้โปรแกรม viewer/player กับ file เหล่านี้ได้ตามปกติไม่มีสีเพี้ยนหรือเสียงเปลี่ยนและไม่เห็นสิ่งที่ซ่อนอยู่ ที่ไม่พบว่าเพี้ยนเพราะดู/ฟังไม่ออกนะครับ ไม่ใช่ไม่ต่างกันจริงๆ อย่างภาพ 24-bit แทนด้วยข้อมูล 3 bytes สำหรับแม่สีสามสีก็เอา LSB (Least Significant Bit) ของแต่ละ byte มาใช้ encode เป็นข้อมูล (encode นะครับ ไม่ใช่ encrypt) รูปขนาด 640×480 นี่ก็ซ่อนข้อมูลได้บานเลย ตอนนี้มี software ประเภท steganography นี่หลายตัวแล้ว อย่างเช่น White Noise Storm, Stealth, StegoDos, และ Hide and Seek ใครเก่งเขียนโปรแกรมลองทำเองก็ได้ครับ ลองนึกวิธีเขียนโปรแกรมนะครับ ทีแรกก็แปลงจากข้อความตัวอักษรเป็น bit ก่อน จากนั้นค่อยเอามา encode เข้ากับภาพ สมมติว่าใช้ภาพ 256-level grayscale bitmap ที่สมมติเป็น format นี้เพราะมันง่ายหน่อย 1 pixel ของภาพจะแทนด้วย 1 byte ข้อมูลจะเก็บเป็นระดับความเข้มตั้งแต่ 0-255 เรียงกันไปทีละ pixel จากซ้ายไปขวา บนลงล่าง เราก็อ่านมาทีละ byte เก็บไว้ ทีนี้ก็เช็คดูข้อความที่แปลงเป็น bit แล้วทีละ bit ถ้าค่าเป็น “1” ก็เอาข้อมูล 1 byte ที่อ่านมาได้จาก bitmap file มา bitwise OR กับ 1 แต่ถ้ามีค่าเป็น “0” ก็ bitwise AND กับ 0xFE ทำไปเรื่อยๆ จนกว่าจะจบข้อความ เราก็จะ encode เก็บข้อความลงในภาพได้ ทีนี้ตอน decode ก็อ่าน bitmap file มาทีละ byte เอามา bitwise AND กับ 0x01 ทำแบบนี้ 8 ครั้งแล้วก็เอาผลลัพธ์มารวมกันก็จะได้เป็นตัวอักษรของข้อความที่ซ่อนมา 1 ตัว ทำไปเรื่อยๆ จนกว่าจะพบว่า 8 bit ที่รวมกันได้เป็น null terminator .. ยากไปมั้ยเนี่ย ลองดูก่อนน่า..นะ

หลายคนคงนึกจุดอ่อนของ Steganography ออกว่าข้อมูลที่เราพยายามซ่อนนั้นไม่มีการปกปิดเลย เราอาจจะ decode ออกได้ง่ายๆ ถ้าเรารู้ว่าข้อมูล encode มายังไง ดังนั้นเพื่อให้ปลอดภัยมากขึ้นอีกในทางปฏิบัติ ก็ใช้ Cryptography เข้าไปด้วย โดยเอาข้อมูลที่ต้องการซ่อนมา encrypt ก่อนแล้วค่อยซ่อนเก็บไว้โดยใช้ Steganography อีกที .. ..ทีนี้ถึงจะจับได้ว่าซ่อนข้อมูลไว้ก็ยังมี encryption กันไว้อีกชั้นนึง นี่..ปลอดภัยสุดๆ นอกจากนี้ข้อมูลหลังจาก encrypt แล้วจะกลายเป็นข้อมูลแบบสุ่มซึ่งหาความสัมพันธ์ได้ยาก ทำให้การตรวจจับทำได้ยากขึ้นด้วย (อย่างตัวอักษรธรรมดานี่มันมีความสัมพันธ์ทั้งระหว่าง bit, ระหว่าง byte , และระหว่างคำ ดังนั้นจึงวิเคราะห์ได้ง่าย)

มุมมองอื่นๆ

Steganography ใช้ประโยชน์ได้ดีในการซ่อนข้อมูลที่เราไม่ต้องการให้คนอื่นเห็น แต่ในทางกลับกันเราก็ไม่สามารถรู้ได้ว่าข้อมูลที่เราได้รับมานั้นมีอะไรซ่อน มาด้วยหรือเปล่า ? ..จะอะไรล่ะได้ล่ะครับ ก็ไวรัสน่ะสิครับ นอกจากนี้ก็ยังมีพวก Trojan อีก ..ทีนี้ละไม่ใช่แค่ executable file นะครับที่จะมีไวรัสได้ พวก data file ธรรมดาก็อาจจะมีไวรัสซ่อนอยู่ก็ได้ data file เหล่านี้ไม่สามารถ ทำงานได้บนคอมพิวเตอร์เพราะปกติเราจะไม่ถือว่ามันเป็นคำสั่งในการทำงาน ถ้ามีการซ่อน ไวรัสไว้ก็ต้องใช้โปรแกรมพิเศษในการดึงไวรัสที่ซ่อนอยู่มาทำงานบนเครื่องอีก ที ดูเหมือนจะปลอดภัยนะครับ แต่เราจะรู้ได้ยังไงว่าโปรแกรมที่เราเล่นๆ อยู่ทุกวันนี้มันไม่ใช่ “โปรแกรมพิเศษ” ที่ว่า ในเมื่อโปรแกรมพวกนี้ไม่มีอะไรแตกต่างจากโปรแกรมอื่น ลองนึกถึง freeware ประเภท image viewer นะครับ เกิดมีคนคิดแผลงๆ เขียน code เพื่อดึงไวรัสที่อาจจะฝังมากับภาพได้ทีนี้ล่ะ..เป็นเรื่อง (-_-‘) .. ชักไม่ค่อยดีล่ะสิครับ ดูรูปอยู่ดีๆ FAT หายอะไรทำนองเนี้ย..จะว่าโปรแกรมติดไวรัสก็ไม่ใช่..รูปที่เราดูต่ะหากที่ติด แถมดูรูปต่อๆ ไปก็แพร่ไปติดรูปอื่นอีก..แน๊ ..ไปกันใหญ่เลย

มาดู เรื่องการแกะรอย Steganography กันบ้าง .. การแกะรอยต่างจาก Cryptography เพราะวิธีการของ Cryptography เปิดเผยให้รู้ได้ ความลับอยู่ที่กุญแจถอดรหัส แต่ Steganography อยู่ที่วิธีการซ่อนเป็นหลักหากรู้ว่าข้อมูลถูกซ่อนเก็บไว้อย่างไรก็แกะได้ ไม่ยาก การแกะรอยสำหรับ Steganography จึงเป็น reverse engineering เป็นส่วนใหญ่ ในขณะที่ Cryptography มักจะใช้ brute-force technique เพื่อหา key ที่ถูกต้อง อย่าง Digimarc ที่มากับ PhotoShop อันนั้นก็มีคนแกะออกได้ง่ายๆ โดยใช้ SoftICE แถมอธิบายวิธีแกะไว้เรียบร้อย ใครจะลองก็ตามหาดูนะครับ

สรุปแล้วล่ะ

คงจะเห็นภาพกว้างๆ กันไปบ้างแล้วนะครับว่าอะไรคือ Steganography รวมถึงเทคนิคต่างๆ และประโยชน์ของเทคโนโลยีนี้ ทุกวันนี้ Steganography ยังพัฒนาไปไม่ไกลมากเมื่อเทียบกับ Cryptography แต่ก็มีคนเริ่มสนใจพัฒนาโปรแกรมเพื่อใช้งานรวมถึง algorithm ในการ encode ที่เหมาะสม เพื่อให้ได้ output ที่ปลอดภัย แนบเนียน การใช้งานจริงก็จะคล้ายกับ Cryptography เพราะจุดประสงค์ใกล้เคียงกัน แต่ที่ต่างกันไปบ้างก็อาจจะเป็นเรื่องของการใช้อ้างลิขสิทธิ์ อย่างรูปภาพนี่เห็นได้ชัด พอมีการขโมยใช้รูปกันบน Internet มากๆ เข้าก็เลยมี Digital Watermark ฝังอยู่ในรูปเพื่อจะได้ระบุความเป็นเจ้าของได้ อันนี้รวมไปถึงพวก audio files อย่าง MP3 หรือ RealAudio ด้วย หรือแม้แต่ homepage ในอนาคตก็อาจจะมี Watermark เพื่อปกป้องลิขสิทธิ์เหมือนกัน


Thanks

James: ผู้แนะนำบทความ+ให้ข้อมูลเพิ่มเติม