ฉันกำลังทำโปรเจกต์งานอดิเรกเล็กๆ น้อยๆ เพื่อให้เข้าใจคริปโตได้ดีขึ้น
https://app.gitbook.com/@noojee/s/dvault/
เป้าหมายคือทำให้ง่ายต่อการเข้ารหัสชุดไฟล์ใน 'ห้องนิรภัย' และถอดรหัสในภายหลัง
เครื่องมือ cli จะทำงานดังนี้
#สร้างคู่คีย์ rsa
dvault init -p วลีรหัสผ่าน
#สร้างห้องนิรภัยที่เข้ารหัสซึ่งมี <เส้นทางไปยังไฟล์>
ล็อค dvault <เส้นทางไปยังไฟล์>
# ถอดรหัสห้องนิรภัยที่กู้คืนไฟล์ข้อความธรรมดา
dvault ปลดล็อค <เส้นทางไปยัง vault> -p วลีรหัสผ่าน
ข้อความรหัสผ่านจะไม่ถูกส่งต่อไปยัง cli ข้อความด้านบนเป็นเพียงภาพประกอบ
ดังนั้น คำถามจึงอยู่ที่โครงสร้างและกระบวนการสร้างห้องนิรภัย
ความเข้าใจของฉันคือ iv และเกลือต้องสุ่ม แต่ไม่จำเป็นต้องเข้ารหัส
ความตั้งใจของฉันคือใช้ aes 256 เพื่อเข้ารหัสไฟล์และใช้รหัสสาธารณะ rsa เพื่อเข้ารหัสรหัส aes
ในการเข้ารหัสเนื้อหาไฟล์ ฉันจะสร้างไฟล์ 'ห้องนิรภัย' ที่มี:
ในข้อความที่ชัดเจน:
rsaIV
rsaเกลือ
aes256Iv
aes256เกลือ
รายการที่เข้ารหัส:
# สร้าง เข้ารหัส และจัดเก็บ aeskey ด้วยรหัสสาธารณะ rsa
aesKey = ยีน aesKey
encRsa[aesKey] โดยใช้ rsaPubKey, rsa256Iv, rsa256Salt
# สร้าง เข้ารหัส และจัดเก็บ macKey โดยใช้รหัส aes
aesMacKey = รุ่น aesMacKey
encAes[aesMacKey] โดยใช้ aesKey, aesIV,aesSalt
#สร้าง เข้ารหัส และจัดเก็บบอดี้คีย์โดยใช้คีย์ aes
aesBodyKey = ยีน aesKey
encAes[aesBodyKey] โดยใช้ aesKey, aesIV, aesSalt
# เข้ารหัส / จัดเก็บไฟล์โดยใช้ปุ่ม aes
encBody = encAes256[ไฟล์] โดยใช้ aesBodyKey, aes256Iv, aes256Salt
# สร้าง mac จากเนื้อหาที่เข้ารหัส
macOfEncBody = แมค[encBody]
# เข้ารหัส จัดเก็บ mac โดยใช้ aes
encAes256[macOfEncBody] โดยใช้ aesMacKey, aes256IV, aes256Salt
ฉันใช้ปุ่ม aes สามปุ่มที่นี่ ความเข้าใจของฉันคือคีย์ aes ของ mac และ body ต้องแตกต่างกัน ฉันสามารถใช้คีย์ aes หลักอีกครั้งเพื่อเข้ารหัสเนื้อหาและคีย์ mac และกำจัดรหัสเนื้อหาได้หรือไม่
https://en.wikipedia.org/wiki/Authenticated_encryption (เข้ารหัส Mac)
ฉันได้แชร์ aes IV และ Salt ให้กับคีย์ทั้งสามแล้ว ตกลงไหม หรือฉันต้องการเกลือ/iv ที่ไม่ซ้ำกันสำหรับแต่ละคีย์