กระโดดไปยังแผงนำทาง

รหัสผ่านเพื่อการจดจำ 26 February 2008 3:46 pm

บันทึกโดย Mr. PeeTai ใน : การสร้างซอฟต์แวร์ , ตรวจย้อนกลับ

ปรกติแล้วรหัสผ่านมีไว้เพื่อแสดงตนเข้าใช้งานถูกมั้ยครับ? แล้วโดยหลักการของรหัสผ่านนั้นผมก็เคยอธิบายไว้แล้วในหัวข้อ “อวสานรหัสผ่าน” แต่ในบางกรณีรหัสผ่านก็ไม่ได้ใช้เพื่อรักษาความปลอดภัยเพียงอย่างเดียว มันยังสามารถประยุกต์ใช้ในงานด้านอื่นได้อีกด้วย ซึ่งบางคนน่าจะเคยผ่านประสบการณ์เหล่านี้มาแล้ว นั่นก็คือการใช้รหัสผ่านเพื่อบันทึกสถานะล่าสุดของเกมที่เราเล่นอยู่!!!

ในสมัยก่อนเครื่องเล่นวีดีโอเกมจะไม่มีระบบความทรงจำสำหรับสำรองข้อมูล ดังนั้นเราจึงไม่สามารถจะบันทึกสถานะล่าสุดของเกมที่เราเล่นได้ จึงได้มีความคิดว่าน่าจะเป็นการดี หากจะใช้รหัสผ่านซึ่งประกอบไปด้วยตัวอักษรผสมตัวเลขหลายสิบหลัก เป็นตัวเก็บบันทึกสถานะล่าสุดของการเล่นเกมแทน

รหัสผ่านในลักษณะนี้จะแตกต่างจากรหัสผ่านสำหรับรักษาความปลอดภัย เพราะแก่นของรหัสผ่านสำหรับรักษาความปลอดภัยนั้น จะต้องทำยังไงก็ได้เพื่อไม่ให้ถอดรหัสได้ ดังนั้นหากต้องการตรวจสอบความถูกต้อง ก็จะต้องนำรหัสที่ถูกเข้ารหัสแล้วมาเปรียบเทียบกัน เพื่อตรวจสอบความถูกต้องแทน (ดูจาก : อวสานรหัสผ่าน)

แต่รหัสผ่านเพื่อการจดจำแบบนี้ต้องการให้ถอดรหัสได้ เพราะรหัสที่ถอดได้จะเป็นองค์ประกอบต่าง ๆ ของสถานะล่าสุดของข้อมูลที่ต้องการจะเรียกขึ้นมา!!!

ไม่ค่อยมีใครพูดถึงหรือกล่าวถึงอัลกอริทึมในการแปลงรหัสผ่านแบบนี้มากนัก เพราะมันคงจะล้าสมัยแล้ว แต่ไม่เป็นไรผมลองคิดอัลกอริทึมเล่น ๆ ให้พวกเราดูกันดีกว่า จะได้เห็นว่าโม้แล้วสามารถนำไปปฏิบัติได้ด้วย

นักมวยไทยผมจะสมมติว่าผมสร้างเกมบนเว็บแล้วกันนะ โดยเป็นเกมมวยไทยประเภท RPG เนื้อหาของเกมก็เหมือนกับเกม RPG ทั่ว ๆ ไป คือการให้ผู้เล่นเก็บประสบการณ์ไปเรื่อย ๆ เพื่อเพิ่มพลังทักษะให้กับตัวเอง

เนื่องจากผมขี้เกียจที่จะต้องเก็บข้อมูลต่าง ๆ ของผู้เล่นเอาไว้ที่ server อีกทั้งผมก็ขี้เกียจจะทำระบบสมาชิกด้วย ดังนั้นจึงน่าจะดีกว่าถ้าระบบสามารถที่จะสังเคราะห์รหัสผ่านออกมา เพื่อให้ผู้เล่นจดไปเก็บไว้กับตัวเอง และเมื่อถึงเวลาอยากจะเล่นต่อ ก็ให้นำรหัสผ่านดังกล่าวมากรอกใส่ แล้วระบบก็จะแปลงรหัสผ่านให้กลายเป็นข้อมูลต่าง ๆ เพื่อให้ผู้เล่นได้เล่นต่อจากที่ตัวเองเล่นค้างเอาไว้ต่อไป

เป็นการผลักภาระความรับผิดชอบเกี่ยวกับข้อมูลไปให้กับผู้เล่น ไม่ต้องเปลืองทรัพยากรบนเครื่อง server ของเราแต่ประการใด (มุขเก่า ๆ เอามาเล่าใหม่)

ทีนี้เรามาดูรายละเอียดกันดีกว่า ว่าสิ่งที่จะต้องใช้เพื่อสังเคราะห์เป็นรหัสผ่านคืออะไรบ้าง ซึ่งถ้าดูจากตัวอย่างข้างต้นก็จะได้รายละเอียดคือ

  • Mr. PeeTai ศิษย์ฝั่งธนฯ (ชื่อ)
  • 6 (พลังหมัด)
  • 7 (พลังเท้า)
  • 5 (พลังเข่า)
  • 9 (พลังศอก)
  • 100 (ความอึด)
  • 20 (จำนวนครั้งที่ชนะ)
  • 5 (จำนวนครั้งที่เสมอ)
  • 10 (จำนวนครั้งที่แพ้)

เอ้อ … นึกอัลกอริทึมไม่ออกอ่ะ ว่าจะเอาข้อมูลพวกนี้มายัดรวมกันกลายเป็นรหัสผ่านยาว ๆ ซัก 20 ตัวได้ไง (เพราะมีภาษาไทยปนอยู่ด้วยอ๊ะดิ๊) งั้นเอาไว้คิดออกแล้วค่อยเขียนต่อแล้วกัน ฮา ^-^

Technorati Tags: , , , ,

ความคิดเห็น»

1. redcap - 26 February 2008

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

ได้อัลกอลิทึ่มสวยๆเมื่อไร แบ่งกันมั่งเน้อ เผื่อจะจุดประกายไฟในตัว อิอิ

2. house - 26 February 2008

ง่ายๆก็ compress/encrypt ตามด้วย encode
เช่น เอาข้อมูลทั้งหมดมาต่อกัน แล้วยัดใส่ gzip ยัด AES กันโดนแคร็ก แล้วเอาข้อมูลที่ได้มาเข้า BASE64 ให้ได้ string

ตอนแกะก็ทำกลับกัน

ปัญหาคือไซต์ของพาสเวิร์ดอาจไม่คงที่(อยากให้คงที่อาจแก้ได้โดย padding)
ข้อมูลที่เก็บได้ไม่มากนัก เพราะยาวเกิน คนเล่นคงจำไม่ไหว
โดนแคร็กง่าย เพราะข้อมูลไปกองอยู่กับไคลเอนต์หมด เขาสร้างตัวละครซัก 5-6 ตัว มี attribute ต่้างกัน 1-2 ที่ต่อตัว มันจะเข้าข่าย known text attack เลย

3. pete - 26 February 2008

นึกออกตอนเล่น เกมส์ แฟมิคอม พวก Rockman
กับ เกมส์บอย บาง เกมส์

ประเภทเดียวกันหรือเปล่าครับ ?

4. wät - 26 February 2008

อ่านแล้วนึกถึง ドラゴンクエスト ภาคหนึ่ง ใช้ตัวอักษร ฮิรางานะ 20 ตัว เก็บข้อมูลทั้ง status, location, accessories ของตัวละครทั้งหมดที่เราเล่น

ป.ล. ไปค้นใน youtube ก็เจอ อันนี้ http://www.youtube.com/watch?v=87ozwyPOvRM

5. Mr. PeeTai - 28 February 2008

ผมยังคิดไม่ออกเลยครับคุณ redcap แฮะ ๆ

โอ้ คุณ house คิดได้แล้ว เจ๋งอ่ะ วิธีซับซ้อนมากเลย ส่วนเรื่องขนาดของรหัสไม่คงที่คงไม่เป็นประเด็นมั๊งครับ แต่ถ้ายาวเกินก็อาจจะจดผิดไปเลยก็ได้เน้อะ

ใช่ครับ แบบนั้นแหล่ะ ผมล่ะชอบ

อ่าฮ่า dragon quest ซะด้วย จริง ๆ แล้วผมไม่เคยอ่านการ์ตูนเรื่องนี้หรือเล่นเกมนี้เลยอ่ะคุณ wat รู้สึกว่ามันจะดังน้อยกว่า dragon ball ผมเลยไม่ค่อยสนใจเท่าไหร่ อิ อิ

6. เปิดร้านกาแฟ - 29 February 2008

ถ้าเกม famicom ที่ใช้รหัสนี่มีเยอะเลยนะครับ
อย่าง bomberman , ซึบาสะ , rockman , คุนิโอะ

เพราะระบบนี้เอาไว้ชดเชยที่เครื่อง famicom save game ไม่ได้

7. หล่อที่สุดในเมืองไทย - 15 March 2008

เจ๋งครับ น่าสนใจมากเลย

8. kradarndum - 5 April 2008

เสร็จแล้วบอกนะครับจะลองtest

9. เป่าแก้ว - 12 June 2008

เยี่ยมมากคับ


*
เพื่อพิสูจน์ว่าคุณเป็นมนุษย์ (ไม่ใช่หุ่นยนต์) ดังนั้น กรุณาใส่รหัสป้องกันซึ่งแสดงอยู่ด้านล่างด้วยครับ
Anti-Spam Image