Một vài năm trước, khi lần đầu tiên được giới thiệu với ASP.net và .NET Framework, tôi đã xây dựng một hệ thống lưu trữ tệp trực tuyến rất đơn giản. Hệ thống này sử dụng mã hóa Rijndael để lưu trữ các tệp được mã hóa trên ổ cứng của máy chủ và HttpHandler để giải mã và gửi các tệp đó đến máy khách. Là một trong những dự án đầu tiên của tôi với ASP.net và cơ sở dữ liệu, không hiểu nhiều về cách thức hoạt động (cũng như rơi xuống same trap described by Jeff Atwood on this subject), tôi quyết định lưu trữ các khóa và IV mới được tạo cùng với mỗi mục nhập tệp trong cơ sở dữ liệu.AES Mã hóa và lưu trữ khóa?
Để làm cho mọi việc trở nên rõ ràng hơn, mã hóa chỉ nhằm bảo vệ tệp khỏi truy cập trực tiếp vào máy chủ và các khóa không được tạo bởi mật khẩu do người dùng nhập.
Câu hỏi của tôi là, giả sử tôi không muốn giữ một khóa cho tất cả các tệp, cách nên Tôi lưu trữ khóa mã hóa để bảo mật tốt nhất? Những gì được coi là thực hành tốt nhất? (ví dụ: Trên một máy chủ khác, trên một tệp văn bản thuần túy, được mã hóa).
Ngoài ra, vectơ khởi tạo được sử dụng cho loại thuật toán mã hóa này là gì? Nó có nên liên tục trong một hệ thống không?
quan sát nhỏ : "AES là một mật mã khối, nó chia tách dữ liệu thành các khối và cung cấp các kết quả của việc mã hóa khối cuối cùng vào khối tiếp theo". Bạn đang mô tả phương pháp [CBC] (https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher-block_chaining_.28CBC.29) * a * để sử dụng AES một cách an toàn. Có các giải pháp bảo mật khác - không phải tất cả yêu cầu một vectơ khởi tạo. – KovBal