Tôi đang thực hiện một dự án sở thích nhỏ để hiểu rõ hơn về tiền điện tử.
https://app.gitbook.com/@noojee/s/dvault/
Mục đích là giúp dễ dàng mã hóa một tập hợp các tệp vào một 'kho tiền' và giải mã chúng vào một ngày sau đó.
Công cụ cli sẽ hoạt động như sau
#tạo cặp khóa rsa
cụm mật khẩu dvault init -p
#tạo một kho lưu trữ được mã hóa có chứa <đường dẫn đến tệp>
khóa dvault <đường dẫn đến tệp>
# giải mã kho tiền khôi phục tệp văn bản thuần túy.
mở khóa dvault <đường dẫn đến vault> -p cụm mật khẩu
Các cụm mật khẩu sẽ không được chuyển vào cli, trên đây chỉ là một minh họa.
Vì vậy, câu hỏi thực sự xoay quanh cấu trúc và quy trình để tạo kho tiền.
Tôi hiểu rằng iv và muối phải là ngẫu nhiên nhưng không cần phải mã hóa.
Mục đích của tôi là sử dụng aes 256 để mã hóa các tệp và sử dụng khóa chung rsa để mã hóa khóa aes.
Để mã hóa nội dung tệp, tôi sẽ tạo một tệp 'vault' chứa:
trong văn bản rõ ràng:
rsaIV
rsaMuối
aes256Iv
aes256Muối
các mục được mã hóa:
# tạo, mã hóa và lưu trữ aeskey bằng khóa công khai rsa
aesKey = thế hệ aesKey
encRsa[aesKey] sử dụng rsaPubKey, rsa256Iv, rsa256Salt
# tạo, mã hóa và lưu trữ macKey bằng khóa aes
aesMacKey = thế hệ aesMacKey
encAes[aesMacKey] sử dụng aesKey, aesIV,aesSalt
#tạo, mã hóa và lưu trữ bodykey bằng khóa aes
aesBodyKey = thế hệ aesKey
encAes[aesBodyKey] sử dụng aesKey, aesIV, aesSalt
# mã hóa/lưu trữ tệp bằng khóa aes
encBody = encAes256[file] sử dụng aesBodyKey, aes256Iv, aes256Salt
# tạo mac từ nội dung được mã hóa
macOfEncBody = mac[encBody]
# mã hóa, lưu trữ mac bằng aes
encAes256[macOfEncBody] sử dụng aesMacKey, aes256IV, aes256Salt
Tôi đã sử dụng ba phím aes ở đây. Tôi hiểu rằng các phím mac và body aes phải khác nhau. Tôi có thể sử dụng lại khóa aes chính để mã hóa nội dung và khóa mac và loại bỏ khóa nội dung không?
https://en.wikipedia.org/wiki/Authenticated_encryption (Mã hóa máy Mac)
Tôi đã chia sẻ aes IV và Salt trên ba phím, điều này có ổn không hay tôi cần một loại muối/iv duy nhất cho mỗi phím?