Tôi không chắc chắn nếu sử dụng MySQL xây dựng trong mã hóa sẽ là giải pháp tốt nhất cho vấn đề của bạn.
Gói M_CRYPT của PHP được cho là khá tốt và nó mang lại cho bạn sự linh hoạt để chọn thuật toán phù hợp nhất với nhu cầu của bạn.
Lưu trữ khóa của bạn trên một số máy chủ khác có một lợi thế lớn: khóa không nằm trên cùng một máy với dữ liệu được mã hóa *).Vì vậy, miễn là kẻ tấn công không có đủ quyền kiểm soát máy bị xâm nhập, họ không thể lấy chìa khóa.
Nếu kẻ tấn công có toàn quyền điều khiển máy, dữ liệu được lưu trữ, họ rất có thể sẽ truy vấn dịch vụ web cho khóa.
Tuy nhiên, truyền chìa khóa từ máy này sang máy khác sẽ mở ra toàn bộ khu vực mới cần được bảo mật. Có thể liên quan đến nhiều lớp mã hóa và nhiều khóa hơn, do đó làm tăng cơ hội mắc lỗi.
*) Tùy chọn khác là nhập mật khẩu khi máy chủ web khởi động và chỉ giữ nó trong bộ nhớ.
giải pháp có thể
Nếu nhìn thấy một giải pháp tuyển dụng mà sử dụng các phương pháp sau đây để mã hóa các tập tin cho người dùng với quyền truy cập web (Tôi không chắc chắn của môi trường của bạn, nhưng nó có thể là hữu ích):
- Khi người dùng tạo, một khóa ngẫu nhiên dài được gán cho người dùng mới.
- Khóa ngẫu nhiên này được lưu trữ trong cột được mã hóa trong hồ sơ người dùng.
(chỉ cột này được mã hóa để không ảnh hưởng đến hiệu suất của phần còn lại của kỷ lục!)
- Các mã hóa của cột ngẫu nhiên-key được thực hiện với 1 mật khẩu chủ, lưu trữ trong một tập tin hoặc trong bộ nhớ.
(Các lựa chọn tốt hơn là nhập mật khẩu khi nhìn chằm chằm máy chủ web và chỉ lưu trữ nó trong bộ nhớ.)
(cách tiếp cận khác là cho phép người dùng nhập mật khẩu và sử dụng để mã hóa/giải mã random- cột khóa, nhưng tôi không chắc liệu điều đó có tăng hoặc giảm bảo mật)
- Mọi tài liệu cần được mã hóa đều được mã hóa bằng khóa ngẫu nhiên cho người dùng đó và sau đó được lưu trữ trên đĩa.
- Tài liệu được lưu trữ với các quyền tối thiểu trong hệ thống tệp.
Những lợi thế của phương pháp này là:
1. ngẫu nhiên-key được mã hóa trong cơ sở dữ liệu. Vì vậy, bạn vẫn có thêm bảo mật của máy chủ cơ sở dữ liệu, kết hợp với cột được mã hóa. 2. Tài liệu được lưu trữ với các khóa khác nhau, nếu kẻ tấn công nắm giữ chìa khóa, chỉ một phần tài liệu bị xâm phạm.
Tuy nhiên:
Nếu kẻ tấn công được tổ chức của Master Password đã đọc truy cập vào sử dụng bảng, toàn bộ hệ thống là, một lần nữa, bị hỏng.
Mục đích mã hóa cột là gì? Chắc chắn điều thông minh cần làm là mã hóa dữ liệu nhạy cảm của hàng thông qua ứng dụng của bạn và lưu trữ một muối cùng với hàng để khó giải mã hơn. – Aupajo
Tôi đoán tôi có nghĩa là mã hóa một trường nhất định trong mỗi hàng bằng AES_ENCRYPT. Vì vậy, việc mã hóa và giải mã ứng dụng tốt hơn các chức năng của MySQL hoặc bạn chỉ nói rằng tôi nên có một khóa muối duy nhất cho mỗi hàng khi gọi các hàm MySQL –