การบ้าน Cryptography

ไม่ได้ได้การบ้านมาจากไหน แต่ตั้งโจทย์การบ้านเล่นๆ

Blognone ได้รับของมาฟรีๆ เป็น “จตุคอร์แรมเทพ” Core i7 Extreme + DDR3 16GB เป็นของแจกในเว็บ ปัญหาเริ่มเกิดขึ้นว่าจะแจกกันอย่างไร

ลิ่วเสนอว่าให้แอบสุ่มเลขขึ้นมาแล้วให้สมาชิกทายเลขใน UINT64 ให้ใกล้ที่สุด แต่เนื่องจากสมาชิก Blognone เชื่อว่าลิ่วอาจจะมั่วนิ่มแอบเปลี่ยนเลขเพื่อให้สาวๆ ได้รางวัลจึงเรียกร้องให้มีกระบวนการตรวจสอบ

งานของท่านคือออกแบบโปรโตคอลเพื่อให้มีข้อมูลที่สามารถใช้ตรวจตัวเลขที่ลิ่วเฉลยมาภายหลังว่าเป็นเลขที่สุ่มไว้ล่วงหน้า และไม่สามารถเปลี่ยนแปลงได้ ข้อมูลนี้จะถูกประกาศบนหน้าเว็บ Blognone โดยโปรโตคอลนี้ต้อง

1. โปรโตคอลนี้ต้องเปิดเผยสู่สาธารณะ ดังนั้นห้ามมั่วนิ่มแบบ [Security through obscurity](http://en.wikipedia.org/wiki/Security_through_obscurity)
2. อย่าลืมว่าใน Blognone มีผู้เชี่ยวชาญด้านการคำนวณประสิทธิภาพสูง และมีหลายคนเข้าถึงเครื่องซุปเปอร์คอมพิวเตอร์ได้ ดังนั้นอย่าประมาทการ brute force

BONUS: เขียน script ตามโปรโตคอลที่ออกแบบ

ส่วนนี่ไม่เกี่ยวกับเนื้อหา

 

lewcpe

CTO at MFEC PLC. Chief Editor at Blognone.com

 

12 thoughts on “การบ้าน Cryptography

  1. ถ้าทำการบ้านได้นี่ได้เครื่องไปเลยปะครับ :P

  2. อ่าวเห็นพี่บอกได้ i7 เทพมาจาก intel นิ

    หรือได้แค่มา test เฉยๆ? ฮาๆ

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

  4. ถ้าได้จตุคอร์ แรมเทพแล้วได้ไปเกาหลีนี่เอาเลยนะ

  5. ลิ่วก็สร้าง public key ขึ้นมาอันหนึ่ง เอา RSA สัก 5120 bit ก็ได้ แล้ว ก็เอา ตัวเลขโจทย์เข้ารหัสซะด้วย private key แล้วประกาศ ตัวเลขที่เข้ารหัสออกมา พร้อมกับ private key โดยที่ลิ่วเก็บ public key ไว้กะตัว

    แล้วพอประกาศผล ลิ่วก็ให้ public key ไป คนก็จะได้ถอดตัวเลขออกมาได้ ถ้ามีคนสงสัยว่าเปลี่ยนเลขเปล่า ก็ลองเอาตัวเลขนั้นไปเข้า private key ที่ประกาศมาดูว่าได้ตัวเลขเข้ารหัสตัวเดียวกันเปล่า แล้วลองใช้ public key ถอดออกมาดูว่าได้ตรงกันเปล่า

    ขอ i7 นะ สาว ๆ ไม่เอา

  6. @pruet อ่าวมีอาจารย์มาชิงทำการบ้านไปซะแล้ว :P แต่จริงๆ ขาดเรื่อง signing ไปอีกหน่อยครับ

  7. @pruet กรณีที่ผมไปเมค private key ขึ้นใหม่น่ะครับ แล้วมามั่วนิ่มว่าค่าที่ถอดได้เป็นค่าที่ตั้งไว้ตอนแรก

    เลยต้องทำ checksum ต่อท้ายไว้อีกหน่อย ว่า decrypt มาแล้ว checksum ยังผ่านอยู่

  8. เอ ผมคิดว่า ตอนแรกถ้าประกาศออกไปแล้วว่านี่คือ encrypted message กับ private key ที่ใช้ ถ้า @lewcpe ไปเมค private key ขึ้นมา คนก็โวยวายได้ว่า เฮ้ยมันไม่ใช่ private key เดียวกัน

    ถ้าคิดว่ามันมั่วได้แล้วอ้างได้ว่านี่คือ private key อันที่ถูกต้อง การทำ checksum ก็ได้ผลเหมือนกันหรือเปล่า เพราะว่าก็เมค checksum ขึ้นมาใหม่ได้เหมือนกัน

  9. ตอนแรกคิดเหมือนอ. pruet นะ
    เอาอีกวิธีล่ะกัน

    ประกาศ sha-512 ของเลขสุ่ม กับ salt สองชุด ความยาว salt ก็ซัก 256-bit

    โอกาสที่ sha-512 ของ uint64 สองตัว จะชนกันด้วย salt ทั้งสองชุด แทบจะไม่เกิด

    .. แต่ อาจจะกัน brute force ไม่ได้, ฮ่ะฮ่า

Comments are closed.