ฉันได้เข้ารหัสข้อมูลใน AES-GCM
กับ การเข้ารหัสลับ
เอพีไอ เดอะ เวกเตอร์เริ่มต้น
จากนั้นจะถูกเพิ่มลงในข้อมูล สร้างสตริงเข้ารหัสเฉพาะที่จัดเก็บไว้ในที่จัดเก็บภายในเครื่อง ในที่สุดรหัสลับจะถูกเก็บไว้ใน IndexedDB
เนื่องจากรหัสลับนั้นไม่สามารถแยกออกได้ แม้ว่ามันจะปลอดภัยเพียงพอสำหรับการใช้งานส่วนใหญ่ ตามความเข้าใจของฉัน ผู้โจมตีจะต้องปล้นทั้งที่เก็บข้อมูลในตัวเครื่องและฐานข้อมูลที่จัดทำดัชนี ค้นหาเวกเตอร์เริ่มต้นภายในข้อมูล แปลงเป็นอาร์เรย์บัฟเฟอร์ จากนั้นทำการถอดรหัสโดยตรงในเบราว์เซอร์ก่อนที่จะส่งข้อมูลกลับไปยังเซิร์ฟเวอร์ของเขา . แท้จริงแล้ว ดูเหมือนว่าลักษณะที่แยกไม่ได้ของรหัสลับหมายความว่าเขาจะไม่สามารถส่งรหัสลับดิบไปยังเซิร์ฟเวอร์ของเขาได้ และด้วยเหตุนี้จึงไม่สามารถทำการถอดรหัสให้เสร็จสมบูรณ์ได้
แต่ฉันได้รับแจ้งว่าฉันคิดผิดอย่างมาก และกลยุทธ์ของฉันก็แทบไม่มีความปลอดภัยมากไปกว่าการปล่อยให้ข้อมูลทั้งหมดสามารถอ่านได้โดยตรงในที่จัดเก็บในตัวเครื่อง
แล้วฉันจะปรับปรุงเวิร์กโฟลว์นี้ได้อย่างไร มันไม่ปลอดภัยจริงเหรอ? เป็นไปได้ไหมที่จะเข้ารหัสและถอดรหัสรหัสลับด้วยรหัสผ่านเฉพาะที่ผู้ใช้ให้มา รหัสผ่านจะอยู่ใน .env
ไฟล์และไม่เคยเปิดเผยต่อผู้โจมตี คุณจะทำอย่างไร?
นี่คือวิธีสร้างรหัสลับจนถึงตอนนี้:
crypto.subtle.generateKey(
{ ชื่อ: "AES-GCM", ความยาว: 256 },
เท็จ,
["เข้ารหัส", "ถอดรหัส"]
);
ขอบคุณสำหรับความช่วยเหลือของคุณ!