Để bắt đầu, tôi hoàn toàn không phải là chuyên gia hay bất cứ thứ gì gần đó về mật mã học. Tôi biết rất cơ bản về điều này, đủ để ít nhiều chọn một phương pháp để thực hiện và sau đó đọc về nó để tôi biết những gì tôi đang thực hiện. Vì vậy, xin vui lòng tha thứ cho bất kỳ câu hỏi được cho là ngu ngốc haha.
Với ý nghĩ đó, tôi đã tạo một lớp mã hóa/giải mã AES-256/CBC/PKCS#7 + HMAC-SHA512 trong ứng dụng trợ lý Android mà tôi đang tạo (được cho là có tại địa phương (rất?) những thứ cá nhân và tôi có thể xuất bản nó trên Cửa hàng Play, vì vậy nó không chỉ dành cho tôi). Sự kết hợp đó được cho là có độ an toàn cao trong những năm tiếp theo??(?). Có thể chậm hơn một chút, nhưng tôi không phiền, ít nhất là vào lúc này (rất ít dữ liệu). Mặc dù vậy, tôi cũng đọc được rằng có một vấn đề với điều này, đó là khi vectơ khởi tạo được sử dụng lại. Với CBC, có vẻ như không thể lấy lại dữ liệu (phải không?), giống như với các chế độ khác, và đó là lý do tại sao tôi chọn chế độ này. [Nếu có bất kỳ vấn đề nào khác với phương pháp này, tôi rất vui được biết về chúng.]
Nhưng sau một thời gian, có thể phát hiện các mẫu và xem các thông báo bằng nhau ở đâu (các khối 16 byte bằng nhau). Ví dụ, biết khối đó có nghĩa là gì, người ta có thể biết khối đó không thay đổi theo thời gian sau nhiều phiên bản được mã hóa khác nhau.
Vì vậy, tôi có một ý tưởng, đó là: tất cả dữ liệu tôi mã hóa phải được mã hóa bằng UTF-7. Các giá trị byte còn lại (128-255) được sử dụng làm giá trị ngẫu nhiên để đặt một giá trị mỗi 16 byte, ở một vị trí ngẫu nhiên. Ví dụ: trong chỉ mục 4, 154 byte được thêm vào và trong chỉ mục 19, 234 byte được thêm vào. Bằng cách này, nó luôn ngẫu nhiên và các khối dữ liệu thực tế bằng nhau sẽ khác nếu cùng một IV được sử dụng lại ("ngẫu nhiên" có thể lặp lại các giá trị và tôi không thể kiểm tra xem mình đã sử dụng chúng chưa trong trường hợp này, vì vậy tôi nghĩ về điều này để ngăn chặn các vấn đề).
Đây có phải là một cách tiếp cận tốt? Nó có thể giảm thiểu vấn đề? Có thể giải quyết nó hoàn toàn trong vô số năm tiếp theo và phương pháp bây giờ sẽ hoàn toàn an toàn hoặc ít nhất là an toàn hơn nhiều?
Ngoài ra, nếu bất cứ điều gì tôi nói là sai, tôi rất vui khi được sửa chữa! Cảm ơn!