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

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

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

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

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

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

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

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

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

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

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

[tags]คอมพิวเตอร์,ซอฟต์แวร์,รหัสผ่าน,การจดจำ,ฮาร์ดแวร์[/tags]

Related Posts

9 thoughts on “รหัสผ่านเพื่อการจดจำ

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

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

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

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

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

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

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

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

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

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

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

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

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

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *