Hacking&Security Workshop

ตอนนี้ MaYaSeVeN ได้ย้าย Blog ไปที่ http://blog.mayaseven.com


Wednesday, April 27, 2011

วิทยาการอำพรางข้อมูล (Steganography)

" วิทยาการอำพรางข้อมูล (Steganography)ได้ถูกนำมาใช้เป็นเครื่องมือรับส่งข้อความลับของกลุ่มผู้ก่อการร้าย โดยหนังสือพิมพ์ New York Times ได้ตีพิมพ์บทความหนึ่งที่กล่าวถึงกลุ่มผู้ก่อการร้ายอัลกออิดะห์ (al-Qaeda) ได้ใช้วิทยาการอำพรางข้อมูล (Steganography)เพื่อทำการเข้ารหัส (Encode) ข้อความลงในแฟ้มข้อมูลภาพและส่งอีเมล์ผ่านเครือข่าย USENET เพื่อเตรียมการและปฏิบัติการก่อการร้ายโจมตีเมื่อวันที่ 11 เดือนกันยายน "

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



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

สำหรับในข้อมูล Digital นั้นผมจะนำเสนอเฉพาะการซ่อนข้อมูลลับไปกับรูปภาพโดยแบ่งออกเป็นสองประเภท
1.)LSB(Least Significant Bits) วิธีนี้จะใช้วิธีการเปลี่ยน Bit สุดท้าย(ค่าสีที่มีนัยน้อยสุด)ของสีเพื่อใช้เก็บข้อมูลลับ โดยทั่วไปในไฟล์ภาพประเภทที่ไม่ถูกการบีบอัดเช่น BMP,PNG จะใช้ 3 Byte ในการระบุสี 1 Pixel โดย 3 Byte นั้นคือ R,G,B อย่างละ Byte
จะเห็นว่าถ้าเราจะซ้อนข้อความที่เป็น ASCII นั้นต้องใช้เกือบ 3 Pixel ในการเก็บอักษรหนึ่งตัว(1 ASCII = 8 Bit)

รูปประกอบจาก http://blog.pupasoft.com/2009/11/09/aeronzsteganography/

ซึ่งวิธีนี้จะทำให้สีของภาพเปลี่ยนแปลงแต่ไม่สามารถสังเกตุได้ด้วยตาปล่าวและยังไม่ทำให้ขนาดไฟล์เปลี่ยนแปลงแต่อย่างใด

2.)ซ่อนข้อมูลไว้นอก Pixel ของรูป สำหรับวิธีนี้มักจะถูกใช้กับกรณีรูปภาพที่ผ่านการบีบอัด(Compression) มาแล้วเช่น jpeg, gif เพราะว่าภาพที่ถูกบีบอัด(Compression) นี้จะไม่สามารถใช้เทคนิค LSB(Least Significant Bits) เนื่องจากการ Compression คา pixels ของภาพที่แสดงจะมีคาไมตรงกับภาพตนฉบับเสียทีเดียวนั้นข้อแตกต่างก็คือเทคนิคนี้จะได้ภาพเหมือนต้นฉบับทุกประการแต่ขนาดไฟล์จะต่างไปจากเดิม

ทั้งนี้การที่เราจะตรวจสอบว่ารูปหรือสิ่งใดๆเป็นของจริงที่ยังไม่ถูกแก้ไขนั้น(ข้อมูล Digital)เราสามารถใช้ Hash เช่น MD5sum,Sha1sum เข้ามาช่วยในการตรวจสอบดังเช่น ในเทคนิค LSB(Least Significant Bits) จะเห็นว่าสีเปลี่ยนแปลงน้อยจนมองไม่ออกด้วยตาปล่าวและขนาดไฟล์ก็ไม่เปลี่ยนแปลงแต่ Hash ไม่เหมือนเดิมแน่นอน :D (ทั้งนี้ยังมีเทคนิคขั้นสูงในการสร้าง hash ให้เหมือนต้นฉบับได้เราอาจจะใช้ Hash สองชั้นในการยืนยันเช่น Sha1 + MD5)



เฉลย
สำหรับโจทย์ที่ผมได้ให้ไปหารหัสลับจากรูป Monalisa นี้


error@ERROR:~/key$ wget http://std.kku.ac.th/5230405096/avinci.jpg
--2011-04-27 11:27:44--  http://std.kku.ac.th/5230405096/avinci.jpg
Resolving std.kku.ac.th... 202.12.97.31
Connecting to std.kku.ac.th|202.12.97.31|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37234 (36K) [image/jpeg]
Saving to: `avinci.jpg'


100%[==========================================================================================================================================>] 37,234      --.-K/s   in 0.02s   


2011-04-27 11:27:44 (2.05 MB/s) - `avinci.jpg' saved [37234/37234]

error@ERROR:~/key$ outguess -k "davinci" -r avinci.jpg davinci.txt
Reading avinci.jpg....
Extracting usable bits:   38481 bits
Steg retrieve: seed: 145, len: 41
error@ERROR:~/key$ cat davinci.txt 
password : http://mayaseven.blogspot.com
#อนุญาติให้ Copy ไปโพสต่อที่ไหนก็ได้แต่ต้องแนบเครดิตด้วยนะครับ