Ứng dụng của tôi cần mã hóa một số dữ liệu (mã thông báo phiên của người dùng). Hầu hết các ví dụ tôi thấy xung quanh có một phương pháp mà tạo ra một khóa sử dụng một cụm từ mật khẩu và muối, như:Chúng tôi lưu trữ khóa/cụm mật khẩu/muối để mã hóa ở đâu?
public static Key generateKey(char[] passphrase, byte[] salt) {
...
}
hiểu biết của tôi là chúng ta có ba tùy chọn để tạo ra các cụm từ mật khẩu:
- Có người dùng nhập nó mỗi khi ứng dụng bắt đầu (gây phiền toái cho người dùng).
- Viết mã cụm mật khẩu vào chính ứng dụng. Thuận tiện hơn cho người dùng, nhưng ai đó có thể tìm ra cụm từ mật khẩu của bạn được cung cấp cho ứng dụng nhị phân của bạn.
- Tạo ngẫu nhiên cụm mật khẩu, nhưng sau đó chúng tôi phải lưu trữ Khóa được tạo trên đĩa. Bây giờ chúng tôi vừa chuyển vấn đề để lưu trữ khóa an toàn trên đĩa, điều này dường như không thể. Nếu kẻ tấn công tìm thấy khóa được tạo ra, vấn đề lớn.
Tùy chọn # 1 sẽ không hoạt động đối với tôi. Các tùy chọn # 2 và # 3 dường như không hoàn thiện, trừ khi tôi hiểu lầm về cách làm thế nào để thực hiện điều này (hy vọng rằng tôi). Cách được khuyến nghị để làm điều này là gì nếu chúng ta không thể đi với # 1? Chúng ta có đặt một loạt các vòng hãm hiếp để kẻ tấn công nhảy qua và hy vọng điều tốt nhất không?
Cảm ơn