14.4.1. แนวคิด: ความเชื่อถือ, key, และรูปแบบไฟล์

ก่อนคำสั่งใดๆ มีพื้นฐานสามประการที่ใช้กับทุกหน้าอื่นๆ ในส่วนนี้

14.4.1.1. โมเดลความเชื่อถือ

การเชื่อมต่อ TLS สามารถให้ระดับการรับประกันที่เพิ่มขึ้นสามระดับ:

  • การเข้ารหัสเท่านั้น -- การรับส่งข้อมูลถูกเข้ารหัสแต่ไม่มีฝ่ายใดพิสูจน์ตัวตน ตั้งค่าง่าย (ไม่มีการตรวจสอบ certificate) แต่เสี่ยงต่อการโจมตี man-in-the-middle ใช้เฉพาะสำหรับการทดสอบภายในเครื่องเท่านั้น

  • การพิสูจน์ตัวตน server -- client ตรวจสอบ certificate ของ server กับ certificate ที่เชื่อถือ (โมเดล HTTPS ที่คุ้นเคย) OpenMV Cam สามารถทำหน้าที่เป็น client (ตรวจสอบ server ระยะไกล) หรือ server (นำเสนอ certificate ของตัวเอง)

  • การพิสูจน์ตัวตนร่วมกัน (mTLS) -- ทั้งสองฝ่ายนำเสนอและตรวจสอบ certificate ใช้เมื่อ server ต้องแน่ใจในตัวตนของ client ด้วย

14.4.1.2. การเลือกประเภท key

mbedTLS build ของกล้องรองรับ ECDSA บน NIST/SEC prime curve และ RSA มีสามวิธีปฏิบัติในการสร้าง key; แนะนำ ECDSA P-256 (prime256v1):

  • ECDSA P-256 (prime256v1) -- ความปลอดภัยประมาณ 128 บิต ด้วย key ขนาด 256 บิต key และ signature มีขนาดเล็กมาก และเป็น handshake ที่เร็วที่สุดในบรรดาตัวเลือกที่รองรับบน Cortex-M (การดำเนินการ elliptic-curve ถูกกว่า RSA private-key operation มาก) รองรับโดย TLS peer ทั่วไป นี่คือความสมดุลที่ดีที่สุดระหว่างความปลอดภัย ความเร็ว การใช้ RAM/flash และความเข้ากันได้บนอุปกรณ์ฝังตัว ซึ่งเป็นเหตุผลที่มันเป็นตัวเลือกเริ่มต้นที่นี่

  • ECDSA P-384 (secp384r1) -- ความปลอดภัยประมาณ 192 บิต ยังคงเป็น elliptic-curve ดังนั้นจึงมีประสิทธิภาพพอสมควร แต่ขนาดใหญ่กว่าและช้ากว่า P-256 สำหรับ security margin ที่การ deploy IoT ทั่วไปไม่จำเป็นต้องใช้ ใช้เฉพาะเมื่อ certificate ที่มีอายุยาวนานหรือข้อกำหนดด้านการปฏิบัติตามกฎระเบียบต้องการ

  • RSA-2048 -- ความปลอดภัยประมาณ 112 บิต เข้ากันได้ทั่วไป รวมถึง peer เก่ามาก แต่ RSA key และ certificate มีขนาดใหญ่กว่ามาก และ RSA private-key operation (ทำโดยฝ่ายที่นำเสนอ certificate) เป็นตัวเลือกที่ช้าที่สุดและใช้ memory มากที่สุดบน microcontroller ใช้เฉพาะเมื่อ peer ไม่สามารถทำ ECDSA ได้

Note

Ed25519 / Curve25519 key ไม่ได้รับการรองรับ mbedTLS build ของ OpenMV Cam ไม่เปิดใช้งาน EdDSA หรือ Curve25519 ดังนั้น Ed25519 certificate หรือ key จะล้มเหลวในการโหลดหรือ handshake ใช้หนึ่งในสามตัวเลือกด้านบน

14.4.1.3. รูปแบบไฟล์: ใช้ DER

mbedTLS build ที่ OpenMV Cam ใช้ไม่รวม PEM parsing ดังนั้นกล้องจึงอ่าน certificate และ key เฉพาะในรูปแบบ DER (การเข้ารหัสแบบ binary) เครื่องมือส่วนใหญ่จะสร้างรูปแบบ PEM (ข้อความ base64) โดยค่าเริ่มต้น ดังนั้นทุกไฟล์ที่มุ่งหน้าไปยังกล้องจะต้องถูกแปลงเป็น DER ก่อน -- แต่ละ recipe ในส่วนนี้จบลงด้วยขั้นตอนการแปลงนั้น คุณจะต้องการ:

  • Private key -- เก็บเป็นความลับ ใช้โดยฝ่ายที่นำเสนอ certificate

  • Certificate -- ส่วน public ที่นำเสนอต่ออีกฝ่ายระหว่าง handshake

  • CA / trust certificate -- certificate ที่ฝ่าย ตรวจสอบ โหลดเพื่อตัดสินว่า peer นั้นน่าเชื่อถือหรือไม่ สำหรับการตั้งค่า self-signed นี่คือ certificate ของ peer เองง่ายๆ