Hacking&Security Workshop

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


Monday, April 18, 2011

วิธีเข้ารหัส ถอดรหัส สามารถเอาไปประยุกต์ใช้ช่วยจำ Passwords ได้ด้วย

เคยไม๊ตั้ง Password ไว้หลายๆ Passwords จนมีเยอะขึ้นเรื่อยๆจนจำไม่ไหว และการจะจดเอาไว้หรือใช้โปรแกรมมาช่วยจำ เช่น KeePass ,Password Prime , Roboform เราจะมั่นใจในตัวโปรแกรมเก็บ Password พวกนี้ได้อย่างไรว่ามันจะไม่มีอะไรแอบแฝง(อาจจะมีการขายรหัสหรือข้อมูลของเราให้ตลาดมืดก็ได้)จะเห็นว่าบริษัทหรือองกรณ์ไฟล์เอกสารที่สำคัญมักจะไม่ใช่โปรแกรมจากภายนอกมาช่วยเก็บข้อมูลสำคัญพวกที่เกี่ยวกับ Security หรือ ความลับจะไม่มีการ Out Source(จากประสบการณ์ที่ได้เห็นไฟล์สำคัญมักจะถูกเข้ารหัสด้วยมือเจ้าของเสมอ) ทั้งนี้ปัญหาในการจำ Passwords ผมเองก็ประสบปัญหาเหมือนกัน  ในเบื้องต้นผมพยายามตั้ง Passwords ให้สัมพันธ์กับ Service ที่ผมใช้ซึ่งมันก็โอเคเลยแต่ทุกวันนี้ Service ที่ผมใช้มันเยอะมากๆ จนเวลาจะใช้อันไหนทีต้องมานั้ง Reset Password หรือ Forgot Password เป็นประจำ ก็เลยมาเขียนบทความวิธีเข้ารหัสด้วยตัวเองซึ่งก็ไม่ได้ยากอะไรมากมายแถมเอาไปใช้ได้จริงๆแบบง่ายๆและปลอดภัยแน่นอนเพราะเราเข้ารหัสเองกับมือแถมยังสามารถเอาไปประยุกต์ใช้เข้ารหัสไฟล์ประเภทต่างๆที่เราต้องการเก็บเป็นความลับได้อีกด้วย

มาเริ่มกันเลย



โดยโปรแกรมที่ผมจะเอามาใช้ในการเข้ารหัสไฟล์ของเรานั้นก็เป็นโปรแกรมมาตราฐานระดับสากลคือ OpenSSL (โดยทั่วไปโปรแกรมนี้จะถูกใช้เป็น Module  https(HTTP+SSL) ที่เราใช้งานกันอยู่ในปัจจุบันนั้นเอง(ในฝั่ง WebServer))ซึ่งก็มีทั้ง Version บน Windows ,Linux ,Mac OS X

เริ่มจากเราสร้าง Text file รหัสผ่านของเราขึ้นมาจะสร้างแบบไหนก็ได้ตัวอย่าง เช่น

Service : username : password

http://mayaseven.blogspot.com : user : passwordblog
facebook : user : passwordface
twitter : user : passwordter

ผม save file ชื่อ mypassword.txt จากนั้นผมก็เปิด Terminal ขึ้นมาแล้วพิมพ์คำสั่ง
"openssl enc -aes-256-cbc -in ~/mypassword.txt -out ~/mypassword.txt.enc"
ผมจะอธิบายคำสั่งที่ผมใช้
openssl คือโปรแกรมที่เราใช้เข้ารหัส
enc คือโหมดของโปรแกรมนี้ว่าเราจะเข้ารหัส
-aes-256-cbc คือ Algorithm ที่ใช้ในการเข้ารหัส
-in ~/mypassword.txt คือไฟล์ที่เราจะนำมาเข้ารหัส
-out ~/mypassword.txt.enc คือเมื่อเข้ารหัสเสร็จจะให้ไฟล์นั้นอยู่ที่ไหนและชื่ออะไร

เมื่อเราพิมพ์เสร็จแล้วกด Enter มันจะให้เราใส่ encryption password สองครั้งซึ่งมันก็คือ Key ที่เราจะเอาไว้ใช้ในตอนถอดรหัสนั้นเอง

ดูรูปประกอบ :

ไฟล์ที่เราจะนำมาเข้ารหัส

ให้เราใส่ Key สองครั้ง
ลองเปิดไฟล์ที่ถูกเข้ารหัสดูจะเห็นว่าไม่สามารถอ่านได้
ปล.สำคัญ* เราต้องใส่ Key ที่ซับซ้อนด้วยไม่งั้นก็จะสามารถถูก Crack ด้วยวิธี Brute Force ได้และอีกอย่าง Key อันนี้สามารถใช้ถอดรหัสเข้าดูรหัสทั้งหมดที่เราเก็บไว้ได้ดังนั้นควรตั้งให้ซับซ้อนมากวิธีการตั้ง Password ที่ถูกต้องแและไม่ยากอ่านได้ที่ : http://mayaseven.blogspot.com/2011/04/internet-3-end-user.html

สำหรับวิธีการถอดรหัสก็ทำคล้ายกันโดยใช้คำสั่ง
"openssl enc -d -aes-256-cbc -in ~/mypassword.txt.enc -out ~/mypassword.txt.dec"
จะเห็นว่ามี option -d เพิ่มขึ้นมาเป็นการบอกว่าให้มันถอดรหัสนะไม่ใช่เข้ารหัส ตามรูป

คำสั่ง+ใส่ Key ในการถอดรหัส

ไฟล์ที่ถูกถอดรหัสจะเห็นว่ากลับมา่อ่านได้อีกครั้ง
สามารถใช้เทคนิดเดียวกันนี้ในการเข้ารหัสไฟล์ประเภทต่างๆได้ทุกประเภท ที่เราต้องการเก็บไฟล์นั้นเป็นความลับ :D

Download OpenSSL for Windows :  http://gnuwin32.sourceforge.net/packages/openssl.htm
ใช้คำสั่งเหมือนข้างบนนี้ทุกประการ

#เขียนโดย MaYaSeVeN http://mayaseven.blogspot.com
#อนุญาติให้ Copy ไปโพสที่ไหนก็ได้แต่ต้องแนบเครดิตด้วยนะครับ