9 คะแนน โดย GN⁺ 2024-05-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็น คอร์สออนไลน์ด้านวิทยาการเข้ารหัสฟรี โดย Dan Boneh แห่ง Stanford University ซึ่งเผยแพร่รายการบรรยายทั้งหมด ส่วนแบบฝึกหัดอย่างเป็นทางการ โปรเจกต์ และข้อสอบปลายภาคมีให้บน Coursera
  • ใช้ตำราเรียนฟรี A Graduate Course in Applied Cryptography ประกอบ โดยเสริมเนื้อหาที่ลึกกว่าการบรรยาย การพิสูจน์ความปลอดภัย และแบบฝึกหัด
  • หลักสูตรต่อเนื่อง 7 สัปดาห์ ตั้งแต่ stream cipher ไปจนถึงลายเซ็นดิจิทัล โดยแต่ละสัปดาห์เชื่อมโยงกับบทในตำรา วิดีโอบรรยาย และสไลด์
  • ครอบคลุม องค์ประกอบของการเข้ารหัสเชิงปฏิบัติ อย่างกว้างขวาง เช่น one-time pad, PRG, DES, AES, MAC, HMAC, TLS 1.2, Diffie-Hellman, RSA, ElGamal และลายเซ็นแบบอิงแฮช
  • สามารถดูวิดีโอบรรยายแต่ละตอนผ่าน Coursera ได้ และหากต้องการการประเมินผลและใบรับรอง ให้ลงทะเบียนในคอร์สบน Coursera

วิธีเรียนและตำรา

  • เป็นคอร์สออนไลน์ด้านวิทยาการเข้ารหัสที่สอนโดย Dan Boneh แห่ง Stanford University
  • การบรรยายทั้งหมดของคอร์สฟรีถูกรวบรวมไว้ในหน้าเดียว
  • หากต้องการเรียนอย่างเป็นทางการ รวมถึงแบบฝึกหัด โปรเจกต์ และข้อสอบปลายภาค ต้องใช้ หน้าคอร์สบน Coursera
  • ตำราเรียนฟรีคือ A Graduate Course in Applied Cryptography โดย D. Boneh และ V. Shoup
    • ครอบคลุมเนื้อหาที่ลึกกว่าการบรรยาย และมี การพิสูจน์ความปลอดภัย กับแบบฝึกหัดจำนวนมาก

สัปดาห์ที่ 1: ภาพรวมคอร์สและ stream cipher

สัปดาห์ที่ 2: block cipher

สัปดาห์ที่ 3: ความถูกต้องสมบูรณ์ของข้อความและแฮชที่ต้านทานการชนกัน

สัปดาห์ที่ 4: authenticated encryption และกับดักในการใช้งาน

สัปดาห์ที่ 5: key exchange และพื้นฐานทฤษฎีจำนวน

สัปดาห์ที่ 6: การเข้ารหัสแบบกุญแจสาธารณะ

สัปดาห์ที่ 7: ลายเซ็นดิจิทัล

  • สัปดาห์ที่ 7 ตรงกับบทที่ 13–14 ของตำรา ครอบคลุม ลายเซ็นดิจิทัล และลายเซ็นแบบอิงแฮช
  • สไลด์มีให้ในหัวข้อ Digital signatures และ Hash-based signatures

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

 
GN⁺ 2024-05-03
ความคิดเห็นบน Hacker News
  • ตอนเป็นนักศึกษาที่ Stanford วิชา CS255 Intro to Cryptography เป็นหนึ่งในวิชาที่ผมชอบที่สุด และ Dan ก็เป็นอาจารย์ที่สอนได้ยอดเยี่ยมจริง ๆ
    ถ้าต้องการสื่อการสอนด้านความปลอดภัยของ Stanford เพิ่ม ขอแนะนำ CS253 Web Security (https://web.stanford.edu/class/cs253/) ด้วย ขอเปิดเผยว่าผมเป็นคนสร้างวิชานี้เอง และ CS356 Topics in Computer and Network Security (https://cs356.stanford.edu/) ก็ใช้ได้เหมือนกัน
    วิดีโอของ CS253 อยู่ที่นี่: https://www.youtube.com/playlist?list=PL1y1iaEtjSYiiSGVlL1cH...

    • เห็นด้วย ผมชอบวิชา 155, 255, 251 ของศาสตราจารย์ Boneh มาก และเขาเป็นหนึ่งในอาจารย์ที่ผมชอบที่สุดมาตลอดหลายปี
      เขามีพรสวรรค์มากและอธิบายแนวคิดได้ดีเยี่ยม
  • เมื่อไม่กี่ปีก่อนผมเคยเรียน คอร์สวิทยาการเข้ารหัสลับ ออนไลน์ของอาจารย์ท่านนี้ ซึ่งดีมาก
    แม้ผมจะมีพื้นฐานคณิตศาสตร์ แต่หลังเรียนคอร์สนั้นก็รู้ตัวว่าไม่ได้อยากเป็นนักเข้ารหัสลับมืออาชีพ และแค่นั้นก็ถือว่าได้อะไรกลับมาค่อนข้างคุ้มแล้ว
    ล้อเล่นไว้ก่อน วิธีวิเคราะห์ระบบเข้ารหัสเป็น เกมกับปีศาจ เพื่อพยายามแยกแยะไบต์ที่ถูกเข้ารหัสออกจากบิตสุ่มนั้นสนุกมากจริง ๆ

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

  • ดูน่าสนใจ แต่คงดีถ้ามีสื่อที่สอนจากมุมมองผู้ปฏิบัติงานเกี่ยวกับ วิธีใช้ไลบรารีเข้ารหัสลับ โดยไม่เริ่มจากคณิตศาสตร์
    ไม่ใช่ว่าต้องรู้โครงสร้างภายในของ RSA แต่ต้องรู้ว่าจะนำมันไปประกอบกับ primitive อื่น ๆ อย่างปลอดภัยเพื่อสร้างระบบที่มีคุณสมบัติตามต้องการได้อย่างไร

    • ผมเริ่มอ่าน Real-World Cryptography ของ David Wong เพราะอยากเข้าใจคริปโตให้ดีขึ้น เพื่อจะได้เขียนโปรแกรมที่ใช้โปรโตคอลที่มีอยู่แล้วได้อย่างมั่นใจขึ้น
      ตอนนี้อ่านไปประมาณสามในสี่แล้วและพอใจอยู่ หนังสือแตะคณิตศาสตร์แบบเบา ๆ แต่ก็มีบ้าง และดูเหมือนเขียนมาเพื่อคนที่ถ้าไม่เข้าใจการทำงานภายในก็จะใช้งานไม่ถนัด แต่ไม่ได้จำเป็นต้องลงมือทำ implementation ภายในจริง ๆ
      ผมรู้สึกว่าหนังสือเล่มนี้ทำให้ผมเรียนรู้มากพอที่จะประกอบโปรโตคอลจาก primitive ต่าง ๆ ให้ดูเหมือนทำงานตามที่ตั้งใจไว้ได้ ขณะเดียวกันก็ได้เรียนรู้ด้วยว่ามีรายละเอียดปลีกย่อยมากมายที่สามารถทำให้โปรโตคอลพังทั้งระบบได้ การประกอบ primitive เข้าด้วยกันอาจสร้างจุดอ่อนที่ไม่คาดคิด และแม้แต่คนที่รู้เรื่องคริปโตมากกว่าผมมากก็ยังสร้างโปรโตคอลที่พังจาก primitive ที่ปลอดภัยได้
      อาจไม่ใช่หนังสือที่คุณกำลังหา แต่ถ้าไม่ได้ตั้งใจจะออกแบบเอง แค่อยากเข้าใจคริปโต ผมว่ามันเป็นหนังสือที่ดี
    • ต้องระวังความสามารถที่คุณคิดว่าจะได้จากระบบใหม่ นักพัฒนาซอฟต์แวร์มักโดน ปริมาณรังสีแห่งความแปลกใหม่ เข้าไปหลายซีเวิร์ตโดยไม่รู้ตัว และอาจยังไม่ได้ปูทฤษฎีที่น่าเบื่อให้แน่นพอ
      เช่น ถ้าใช้ libsodium แบบเดียวกับที่นักพัฒนาคนอื่น ๆ อีก 100 คนทำสำเร็จมาแล้ว ก็โอเค แต่แค่ผ่านขั้นตอนเล็ก ๆ และละเอียดอ่อนเพียงไม่กี่ขั้น คุณก็อาจสังเคราะห์ระบบเข้ารหัสลับใหม่ขึ้นมาโดยไม่รู้ตัว ความพยายามสร้างระบบส่งข้อความปลอดภัยด้วย primitive ของ libsodium ก็เป็นตัวอย่างหนึ่ง
      ต้องเรียนทฤษฎีให้มาก เรื่องนี้สำคัญ
    • ลองค้น Google ด้วยคำว่า Cryptographic Right Answers มีบทความอยู่หลายชิ้น และโดยทั่วไปเนื้อหาที่เจอมักเห็นพ้องกัน
      เช่น: https://gist.github.com/tqbf/be58d2d39690c3b366ad หรือ https://www.latacora.com/blog/2018/04/03/cryptographic-right...
    • สิ่งที่ต้องการอาจเป็นหนังสืออย่าง Cryptography Engineering: Design Principles and Practical Applications
      เขียนโดย Bruce Schneier, Niels Ferguson และ Tadayoshi Kohno
    • เรื่อง การประกอบอย่างปลอดภัย คอร์สนี้พูดถึงอย่างชัดเจน ไม่ได้พูดแค่รายละเอียดของ RSA เท่านั้น แน่นอนว่ามีบทเรียนที่เกี่ยวข้องอยู่บ้าง แต่ก็พูดถึงด้วยว่า primitive ต่าง ๆ มีคุณสมบัติด้านความปลอดภัยแบบใด และจะประกอบมันเข้าด้วยกันอย่างปลอดภัยได้อย่างไร
      ส่วนสำคัญของวิทยาการเข้ารหัสลับสมัยใหม่คือการค้นหาวิธีประกอบที่ปลอดภัย
  • ในเธรดนี้ดูเหมือนหลายคนสนใจ การเรียนคริปโตแบบลงมือทำ โดยไม่เน้นทฤษฎี ถ้าเป็นกรณีนั้น ลองดู cryptopals.com ของ tptacek ซึ่งเป็น MVP ของ HN

  • ถ้าอยากฝึกเนื้อหาแบบนี้ในรูปแบบ CTF ขอแนะนำ https://cryptohack.org/ เป็นเว็บที่ยอดเยี่ยม

  • เป็นคอร์สที่ยอดเยี่ยมและมีบทบาทสำคัญต่อการเติบโตในอาชีพของผม
    น่าสังเกตด้วยว่า Dan Boneh ยังเป็นที่ปรึกษาของ ทีมวิจัย a16z crypto[1] และทำคอนเทนต์เกี่ยวกับบล็อกเชนร่วมกับพวกเขาเป็นจำนวนมาก[2]
    [1]: https://a16zcrypto.com/research/
    [2]: https://a16zcrypto.com/team/dan-boneh/

  • การเข้ารหัสแบบกุญแจสาธารณะ
    ทั้งหมดเป็น RSA หมด บทเรียนคริปโตต่าง ๆ น่าจะใส่ การเข้ารหัสเส้นโค้งวงรี เข้ามาบ้างไม่ได้หรือ?

    • เราอาจกำลังดูคนละอย่างกัน แต่ในลิงก์มี การเข้ารหัส ElGamal ซึ่งอิงกับ discrete log
      การใช้งานสมัยใหม่ใช้เส้นโค้งวงรี และในอดีตคงใช้ discrete log ในกลุ่มย่อยของฟิลด์เฉพาะขนาดใหญ่ นอกจากนี้ยังพูดถึงลายเซ็น BLS ด้วย ซึ่งอิงกับเส้นโค้งวงรีทั้งหมด
      โดยทั่วไป อะไรก็ตามที่ความปลอดภัยพึ่งพา discrete log ก็สามารถ implement ด้วยเส้นโค้งวงรีได้ แต่ในวิชาเข้ารหัสลับเบื้องต้น สิ่งที่ต้องการส่วนใหญ่คือกลุ่มที่มีอันดับเป็นจำนวนเฉพาะ และเส้นโค้งวงรีก็มักถูกมองเหมือนกล่องดำที่เป็นกลุ่มอันดับเฉพาะได้ จึงถือเป็นรายละเอียดของ implementation
      ลายเซ็น BLS เป็นข้อยกเว้น เพราะต้องใช้ bilinear pairing ซึ่งต้องการเส้นโค้งวงรีชนิดพิเศษ ไม่ใช่แค่กลุ่มอันดับเฉพาะแบบกล่องดำธรรมดา
      มี ทริกเรขาคณิตเชิงพีชคณิต เจ๋ง ๆ มากมายที่ทำได้ด้วยเส้นโค้งวงรี แต่เนื้อหาแบบนั้นแทบไม่ปรากฏในวิชาเข้ารหัสลับเบื้องต้น และอาจถึงขั้นหาไม่เจอในวิชาวิทยาการคอมพิวเตอร์ใด ๆ เลยก็ได้
  • ยังมีใครรอคอร์ส Cryptography II บน Coursera อยู่ไหม?

  • หนังสือที่เขาร่วมเขียน A Graduate Course in Applied Cryptography ช่วยผมได้มาก
    https://toc.cryptobook.us/