Encryption
Field: Mã hóaProfessional Edition+Giới thiệu
Một số dữ liệu nghiệp vụ riêng tư, như số điện thoại khách hàng, địa chỉ email, số thẻ, v.v., có thể được mã hóa, sau khi mã hóa, sẽ được lưu vào database dưới dạng ciphertext.

Cách thức mã hóa
Plugin sẽ tự động sinh ra một application key, key này được lưu trong thư mục /storage/apps/main/encryption-field-keys.
Tên file của application key là Key ID, phần mở rộng là .key, vui lòng không tùy ý sửa tên file.
Vui lòng giữ gìn file application key cẩn thận, nếu mất file application key, dữ liệu được mã hóa sẽ không thể giải mã.
/storage/apps/${tên sub-app}/encryption-field-keysNguyên lý hoạt động
Sử dụng phương pháp mã hóa envelope

Quy trình tạo key
- Lần đầu tiên tạo field encryption, hệ thống sẽ tự động sinh ra một
application key32 bit, lưu vào thư mục storage mặc định ở format base64 encoding. - Mỗi lần tạo field encryption mới, sẽ sinh ngẫu nhiên
field key32 bit cho field này, sau đó sử dụngapplication keyvàfield encryption vector16 bit được sinh ngẫu nhiên để mã hóa nó (thuật toán mã hóaAES), sau đó lưu vào fieldoptionscủa bảngfields.
Quy trình mã hóa field
- Mỗi lần ghi dữ liệu vào field encryption, sẽ lấy
field keyđã mã hóa vàfield encryption vectortừ fieldoptionscủa bảngfieldstrước. - Sử dụng
application keyvàfield encryption vectorđể giải mãfield keyđã mã hóa, sau đó sử dụngfield keyvàdata encryption vector16 bit được sinh ngẫu nhiên để mã hóa dữ liệu (thuật toán mã hóaAES). - Sử dụng
field keyđã giải mã để ký dữ liệu (thuật toán digestHMAC-SHA256), chuyển đổi thành chuỗi ở format base64 encoding (data signatuređược sinh ra dùng cho việc tìm kiếm dữ liệu sau này). - Ghép nối binary
data encryption vector16 bit vàdata ciphertextđã mã hóa, chuyển đổi thành chuỗi ở format base64 encoding. - Ghép nối chuỗi
data signatureở format base64 encoding và chuỗidata ciphertextđã ghép nối ở format base64 encoding với dấu phân cách '.'. - Lưu chuỗi đã ghép nối cuối cùng vào database.
Biến môi trường
Nếu muốn chỉ định application key, có thể sử dụng biến môi trường ENCRYPTION_FIELD_KEY_PATH, plugin sẽ load file ở đường dẫn đó làm application key.
Yêu cầu format file application key:
- Phần mở rộng file phải là
.key. - Tên file sẽ được dùng làm Key ID, tốt nhất là sử dụng uuid để đảm bảo tính duy nhất.
- Nội dung file là dữ liệu binary 32 bit ở format base64 encoding.
Cấu hình Field

Ảnh hưởng đến lọc sau khi mã hóa
Field đã mã hóa chỉ hỗ trợ: bằng, không bằng, tồn tại, không tồn tại.

Cách thức lọc dữ liệu:
- Lấy
field keycủa field encryption, sử dụngapplication keyđể giải mãfield key. - Sử dụng
field keyđể ký văn bản tìm kiếm do người dùng nhập (thuật toán digestHMAC-SHA256). - Sử dụng văn bản tìm kiếm đã ký ghép với dấu phân cách
., thực hiện tìm kiếm prefix matching đối với field encryption trong database.
Key rotation
Trước khi sử dụng lệnh key rotation nocobase key-rotation, hãy xác nhận ứng dụng đã load plugin này.
Sau khi ứng dụng được di chuyển sang môi trường mới, nếu không muốn tiếp tục sử dụng key giống với môi trường cũ, có thể sử dụng lệnh nocobase key-rotation để thay thế application key.
Khi chạy lệnh key rotation cần chỉ định application key của môi trường cũ, sau khi chạy lệnh sẽ sinh ra application key mới và thay thế key cũ. Application key mới sẽ được lưu vào thư mục storage mặc định ở format base64 encoding.
Nếu là thay thế application key của sub-app, cần thêm tham số --app-name, chỉ định name của sub-app

