ฉันต้องการปกป้องข้อมูลที่มีโครงสร้าง

Tink API จะใช้ Blob ของไบนารีที่กำหนดเองเป็นอินพุต ซึ่งหมายความว่าหากต้องการเข้ารหัสข้อมูลที่มีโครงสร้าง เช่น บัฟเฟอร์โปรโตคอล คุณจะต้องเข้ารหัสข้อมูลก่อน

เข้ารหัส protobuf

วิธีเข้ารหัส

  1. ทำให้โปรโตคอล protobuf เป็นอนุกรมให้เป็นไบต์อาร์เรย์
  2. เข้ารหัสไบต์ที่ทำให้เป็นอนุกรม จากนั้นจัดเก็บหรือส่งข้อความเข้ารหัสที่ได้ ใช้รายการต่อไปนี้

วิธีถอดรหัส

  1. ถอดรหัสข้อความเข้ารหัส
  2. หากขั้นตอนที่ 1 สำเร็จ ให้ดีซีเรียลไลซ์โปรโตบุฟ

ปกป้อง Protobuf จากการปลอมแปลง

ในกรณีส่วนใหญ่ การเข้ารหัส protobuf จะดีกว่าในการตรวจสอบสิทธิ์เพียงอย่างเดียว

วิธีปกป้อง Protobuf จากการปลอมแปลง

  1. ทำให้โปรโตคอล protobuf เป็นอนุกรมให้เป็นไบต์อาร์เรย์
  2. ลงนามหรือตรวจสอบสิทธิ์ไบต์ที่ซีเรียลไลซ์ ใช้รายการต่อไปนี้
  3. จัดเก็บไบต์อนุกรมร่วมกับลายเซ็น (หรือ MAC)

ในการยืนยัน ให้ทำดังนี้:

  1. รับ protobuf แบบต่อเนื่องและลายเซ็น (หรือ MAC)
  2. ยืนยันลายเซ็น (หรือ MAC)
  3. ดีซีเรียลไลซ์โปรโตบุฟ

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

ป้องกันรายการข้อมูลหลายรายการ

หากต้องการป้องกันรายการข้อมูลหลายรายการ ให้ใช้วิธีการทำให้เป็นอนุกรม เพิ่มรายการข้อมูลทั้งหมดไปยัง protobuf และเข้ารหัส (หรือตรวจสอบสิทธิ์) ตามที่อธิบายข้างต้น

นอกจากนี้ คุณยังสามารถทำให้เป็นอนุกรมดังนี้

serialize(data1 , data2 , …, datan) = 4-byte-data1's length || data1 || 4-byte-data2's length || data2 || … || 4-byte-dataN's length || dataN

สุดท้าย เข้ารหัส (หรือตรวจสอบสิทธิ์) ไบต์อาร์เรย์ที่ได้