ทำความเข้าใจแนวคิดหลักใน Tink

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

แบบพื้นฐาน

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

แบบพื้นฐานที่ Tink รองรับ:

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

โปรดดูค่าพื้นฐานที่รองรับตามภาษาสำหรับข้อมูลความเข้ากันได้

ดูข้อมูลเพิ่มเติมได้ที่การออกแบบพื้นฐาน

ประเภทคีย์

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

คีย์เซ็ตและชุดคีย์

Tink ใช้ชุดคีย์ในการจัดการคีย์ โดยพื้นฐานแล้ว ชุดคีย์คือชุดของคีย์ ที่อำนวยความสะดวกในการหมุนเวียนคีย์ คุณสมบัติที่โดดเด่นของชุดคีย์ ได้แก่

  • แต่ละคีย์ในชุดคีย์จะมีรหัสที่ไม่ซ้ำกัน ซึ่งไม่ซ้ำกันภายในชุดคีย์ โดยปกติแล้ว ระบบจะเพิ่มรหัสนี้เป็นคำนำหน้าข้อความเข้ารหัส ลายเซ็น หรือแท็กแต่ละรายการที่สร้างขึ้นเพื่อระบุว่ามีการใช้คีย์ใด (ดูข้อมูลเพิ่มเติมในข้อความเข้ารหัสของแท็ก Tink)
  • คีย์ในชุดคีย์เป็นคีย์หลักเพียงครั้งละ 1 คีย์ คีย์หลักในชุดคีย์คือคีย์ที่ "ใช้งานอยู่" ในขณะนี้
  • คีย์ทั้งหมดในชุดคีย์ต้องเป็นการติดตั้งใช้งานคีย์ดั้งเดิมเดียวกัน (เช่น AEAD) แต่อาจมีประเภทคีย์ต่างกันได้ (เช่น คีย์ AES-GCM และ XCHACHA20-POLY1305)

การใช้งาน Tink แต่ละครั้งจะมี API สำหรับสร้างหรือแก้ไขชุดคีย์ อย่างไรก็ตาม เราขอแนะนำให้ใช้ Tinkey ในเครื่องมือ CLI

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

ดูข้อมูลเพิ่มเติมได้ที่การออกแบบชุดคีย์