Cryptology Academy · บทเรียน

การตรวจสอบและคัดเลือกส่วนพึ่งพาด้านการเข้ารหัส

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

บทเรียน 4 จาก 413 ขั้นตอน

การตรวจสอบและคัดเลือกส่วนพึ่งพาด้านการเข้ารหัส เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดการเลือกไลบรารีจึงสำคัญ

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

วันที่และขอบเขตการตรวจสอบ

หนึ่งในคำถามแรกสำหรับไลบรารีการเข้ารหัสใด ๆ คือ มีการตรวจสอบโดยอิสระครั้งล่าสุดเมื่อใด และการตรวจสอบนั้นครอบคลุมเรื่องใดบ้าง การตรวจสอบเมื่อห้าปีก่อนบนเวอร์ชัน 1.0 ให้ความมั่นใจแก่เวอร์ชัน 3.0 ที่ใช้อยู่ในปัจจุบันได้น้อยกว่า ควรมองหาการตรวจสอบที่ดำเนินการโดยบริษัทความปลอดภัยที่มีชื่อเสียง เช่น NCC Group, Trail of Bits, Quarkslab และ Cure53 และครอบคลุมฟังก์ชันการทำงานเฉพาะที่คุณวางแผนจะใช้ ไลบรารีบางแห่งเผยแพร่รายงานการตรวจสอบต่อสาธารณะ การไม่มีการตรวจสอบใด ๆ ถือเป็นปัจจัยเสี่ยงที่สำคัญ

ประวัติ CVE และการตอบสนองต่อโปรแกรมแก้ไข

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

การบำรุงรักษาอย่างต่อเนื่องและชุมชน

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

ขอบเขต API และการต้านทานการใช้งานผิดวิธี

ขอบเขต API ที่เล็กกว่าและมีแนวทางชัดเจนเหมาะสมต่อความปลอดภัยมากกว่า ไลบรารีที่เปิดเผยตัวเลือกอัลกอริทึมและปุ่มปรับแต่งการกำหนดค่าจำนวนมากจะเพิ่มโอกาสในการกำหนดค่าผิด ลองเปรียบเทียบ libsodium ซึ่งมีฟังก์ชันหนึ่งรายการต่อกรณีใช้งานและใช้อัลกอริทึมตายตัว กับ OpenSSL EVP ซึ่งต้องเลือกชุดรหัส โหมด ขนาดกุญแจ การเติมข้อมูล และการจัดการ IV แยกกัน ยิ่งทำให้การใช้ไลบรารีอย่างไม่ถูกต้องทำได้ยากมากเท่าใด ไลบรารีนั้นก็ยิ่งเหมาะกับโครงการที่ให้ความสำคัญกับความปลอดภัยมากขึ้นเท่านั้น

การตรวจสอบการทำงานแบบใช้เวลาเท่ากัน

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

การรองรับอัลกอริทึมและความทันสมัย

ไลบรารีการเข้ารหัสที่ดีควรรองรับอัลกอริทึมสมัยใหม่และมีแผนเลิกใช้อัลกอริทึมที่ล้าสมัย ควรมี ChaCha20-Poly1305 หรือ AES-256-GCM สำหรับการเข้ารหัส Ed25519 หรือ ECDSA P-256 สำหรับลายมือชื่อ X25519 สำหรับการแลกเปลี่ยนกุญแจ และ Argon2id สำหรับการแฮชรหัสผ่าน ไลบรารีที่มีเฉพาะอัลกอริทึมรุ่นเก่า เช่น DES, RC4, MD5 และ SHA-1 ไม่เหมาะสำหรับการนำไปใช้งานใหม่ ไม่ว่าจะมีคุณสมบัติด้านอื่นดีเพียงใด

ความปลอดภัยของห่วงโซ่อุปทาน

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

ข้อกำหนดการตรวจสอบความถูกต้องตาม FIPS 140-2/3

อุตสาหกรรมที่อยู่ภายใต้การกำกับดูแล เช่น การแพทย์ การเงิน และภาครัฐ มักกำหนดให้ใช้โมดูลการเข้ารหัสที่ผ่านการตรวจสอบความถูกต้องตาม FIPS 140-2 หรือ 140-3 การตรวจสอบตาม FIPS มีค่าใช้จ่ายสูงและใช้เวลานาน จึงมีไลบรารีเพียงบางส่วนที่ผ่านการตรวจสอบนี้ OpenSSL ที่มีผู้ให้บริการ FIPS, BoringCrypto ซึ่งใช้ใน Go's crypto/tls และไลบรารี HSM บางรายการผ่านการตรวจสอบความถูกต้องตาม FIPS แล้ว หากการนำระบบไปใช้งานของคุณต้องปฏิบัติตาม FIPS ข้อกำหนดนี้จะจำกัดตัวเลือกไลบรารีลงอย่างมาก

ความเสี่ยงจากการผูกติดผู้ขายสำหรับ HSM และ KMS บนคลาวด์

โมดูลความปลอดภัยฮาร์ดแวร์ (HSM) และบริการ KMS บนคลาวด์มักมี API เฉพาะสำหรับการดำเนินการเกี่ยวกับกุญแจ การผูกแอปพลิเคชันของคุณไว้กับ AWS KMS หรือผู้จำหน่าย HSM รายใดรายหนึ่งอย่างแน่นหนาจะสร้างความเสี่ยงจากการผูกติดผู้ขาย ควรประเมินว่าไลบรารีมีชั้นนามธรรม เช่น การผสานรวม KMS ของ Tink ที่ช่วยให้เปลี่ยนผู้ให้บริการได้หรือไม่ นอกจากนี้ควรพิจารณาด้วยว่า หากผู้จำหน่าย HSM หยุดให้การสนับสนุนหรือขึ้นราคา ค่าใช้จ่ายในการย้ายระบบอาจสูงมาก

หลักการพื้นฐาน

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

การประเมินไลบรารีการเข้ารหัส

ปัจจัยใดสำคัญที่สุด (MOST) เมื่อประเมินไลบรารีการเข้ารหัสสำหรับโครงการใหม่

สรุปการตรวจสอบสิ่งที่ไลบรารีการเข้ารหัสพึ่งพา

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

เริ่มต้นได้ฟรี

เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
67
บทเรียน
261

คำถามที่พบบ่อย

บทเรียน “การตรวจสอบและคัดเลือกส่วนพึ่งพาด้านการเข้ารหัส” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตรวจสอบและคัดเลือกส่วนพึ่งพาด้านการเข้ารหัส” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบและคัดเลือกส่วนพึ่งพาด้านการเข้ารหัส”

ใช้กรอบการทำงานเพื่อประเมิน ตรวจสอบ และดูแลส่วนพึ่งพาของไลบรารีการเข้ารหัส คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การตรวจสอบและคัดเลือกส่วนพึ่งพาด้านการเข้ารหัส” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. libsodium: ไลบรารีการเข้ารหัสที่ลดความเสี่ยงจากการใช้งานผิดวิธี
  2. API ของ OpenSSL: โครงสร้างหลักและข้อผิดพลาดที่ควรระวัง
  3. Google Tink: การเข้ารหัสระดับสูงที่ปลอดภัย
  4. การตรวจสอบและคัดเลือกส่วนพึ่งพาด้านการเข้ารหัส
← กลับไปที่ Cryptology Academy