Mã hóa dữ liệu mysql

Máy chủ Percona cho MySQL cho phép mã hóa dữ liệu ở trạng thái nghỉ của không gian bảng InnoDB (tệp trên mỗi bảng) bằng cách mã hóa các tệp cơ sở dữ liệu vật lý. Dữ liệu được tự động mã hóa trước khi ghi vào bộ lưu trữ và tự động giải mã khi đọc. Nếu người dùng trái phép truy cập vào tệp dữ liệu, họ không thể đọc được nội dung. Máy chủ Percona cho MySQL 5. 7 dữ liệu khi mã hóa phần còn lại tương tự như MySQL 5. 7 mã hóa dữ liệu lưu trữ. Máy chủ Percona cho MySQL 8. 0 cung cấp thêm các tính năng và tùy chọn mã hóa không có trong phiên bản này

Bảng sau đây liệt kê các tính năng khác nhau được coi là Có sẵn chung (GA) hoặc trong bản xem trước công nghệ. Các tính năng và biến xem trước công nghệ không được khuyến nghị sử dụng trong sản xuất. Các tính năng và biến được đánh dấu là không dùng nữa sẽ không thực hiện hành động nào

FeatureStatus Phiên bản GA Phiên bản Tech Preview Phiên bản không dùng nữaPlugin khóa Vault Thường khả dụng, được hỗ trợPercona Server 5. 7. 21-21Mã hóa không gian bảng tệp trên mỗi bảng Thường khả dụng, được hỗ trợPercona Server 5. 7. 21-21Mã hóa một không gian bảng chung Thường khả dụng, được hỗ trợPercona Server 5. 7. 21-21Mã hóa tệp tạm thời Thường có sẵn, được hỗ trợPercona Server 5. 7. 22-22binlog_encryptThông thường có sẵn, được hỗ trợPercona Server 5. 7. 21-21InnoDB System Tablespace EncryptionDeprecatedPercona Server 5. 7. 23-24Máy chủ Percona cho MySQL 5. 7. 32-35Bộ đệm ghi đôiKhông dùng nữaPercona Server 5. 7. 23-24Máy chủ Percona cho MySQL 5. 7. 32-35InnoDB Hoàn tác mã hóa vùng bảngKhông dùng nữaPercona Server 5. 7. 23-24Máy chủ Percona cho MySQL 5. 7. 32-35Làm lại mã hóa nhật kýKhông dùng nữaMáy chủ Percona 5. 7. 23-24Máy chủ Percona cho MySQL 5. 7. 32-35Data ScrubbingKhông dùng nữaMáy chủ Percona 5. 7. 23-24Máy chủ Percona cho MySQL 5. 7. 32-35

Ngành kiến ​​​​trúc¶

Mã hóa dữ liệu ở trạng thái nghỉ sử dụng kiến ​​trúc hai tầng với các thành phần sau

LoạiMô tảKhóa chínhKhóa chính được sử dụng để mã hóa hoặc giải mã các khóa của vùng bảng. Tablespace key cho mỗi tablespace Key tablespace mã hóa các trang dữ liệu và được viết trong tablespace header

Khi máy chủ phải truy cập dữ liệu, khóa chính sẽ giải mã khóa của vùng bảng, vùng bảng được giải mã và sẵn sàng cho các thao tác đọc hoặc ghi

Kiến trúc hai phím riêng biệt cho phép xoay phím chính trong một thao tác tối thiểu. Trong quá trình xoay khóa chính, mỗi khóa vùng bảng được mã hóa lại bằng khóa chính mới. Chỉ trang đầu tiên của tệp không gian bảng (. ibd) được đọc và ghi trong quá trình quay. Một trang được mã hóa được giải mã ở lớp I/O, được thêm vào vùng đệm và được sử dụng để đọc và ghi dữ liệu. Trang vùng đệm không được mã hóa. Lớp I/O mã hóa trang trước khi trang được chuyển sang đĩa

Khóa mã hóa trong tiêu đề vùng bảng được yêu cầu để mã hóa hoặc giải mã vùng bảng. Khóa chính được lưu trữ trong plugin keyring

Ghi chú

Percona XtraBackup phiên bản 2. 4 hỗ trợ sao lưu các không gian bảng chung được mã hóa

Vault Keyring Plugin¶

Để bật mã hóa, hãy sử dụng một trong các plugin sau

  • keyring_file lưu cục bộ dữ liệu khóa trong một tệp phẳng

  • keyring_vault cung cấp giao diện cho cơ sở dữ liệu với máy chủ HashiCorp Vault để lưu trữ khóa và khóa mã hóa an toàn

Chỉ kích hoạt một plugin keyring tại một thời điểm. Kích hoạt nhiều phần bổ trợ khóa không được hỗ trợ và có thể dẫn đến mất dữ liệu

Ghi chú

Không nên sử dụng plugin keyring_file để tuân thủ quy định

Để cài đặt plugin đã chọn, hãy làm theo hướng dẫn cài đặt và gỡ cài đặt plugin

Đang tải plugin Keyring¶

Tải plugin khi khởi động máy chủ với Tùy chọn tải plugin sớm để kích hoạt khóa. Để khôi phục bảng được mã hóa hiệu quả hơn, hãy tải plugin bằng tệp cấu hình

Chạy lệnh sau để tải plugin keyring_file

$ mysqld --early-plugin-load="keyring_file=keyring_file.so"

Ghi chú

Để khởi động một máy chủ với các plugin ban đầu khác nhau sẽ được tải, tùy chọn

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
2 có thể chứa các tên plugin trong danh sách trích dẫn kép với mỗi tên plugin được phân tách bằng dấu chấm phẩy. Việc sử dụng dấu ngoặc kép đảm bảo dấu chấm phẩy không tạo ra sự cố khi danh sách được thực thi trong tập lệnh

Để kích hoạt mã hóa Master key vault, người dùng phải có đặc quyền SUPER

Các câu lệnh sau tải plugin keyring_vault và keyring_vault_config. Câu lệnh thứ hai cung cấp vị trí cho tệp cấu hình keyring_vault

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"

Thêm các tuyên bố sau vào của tôi. cnf

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"

Khởi động lại máy chủ

Ghi chú

Tiện ích mở rộng keyring_vault, “. so” và vị trí tệp cho cấu hình vault phải được thay đổi để phù hợp với vị trí hệ điều hành và tiện ích mở rộng hệ điều hành của bạn

Mô tả tệp keyring_vault_config¶

Tệp keyring_vault_config có thông tin sau

  • [mysqld]
    early-plugin-load="keyring_vault=keyring_vault.so"
    loose-keyring_value_config="/home/mysql/keyring_vault.conf"
    
    3 - địa chỉ máy chủ Vault

  • [mysqld]
    early-plugin-load="keyring_vault=keyring_vault.so"
    loose-keyring_value_config="/home/mysql/keyring_vault.conf"
    
    4 - nơi keyring_vault lưu trữ các khóa

  • [mysqld]
    early-plugin-load="keyring_vault=keyring_vault.so"
    loose-keyring_value_config="/home/mysql/keyring_vault.conf"
    
    5 -
    [mysqld]
    early-plugin-load="keyring_vault=keyring_vault.so"
    loose-keyring_value_config="/home/mysql/keyring_vault.conf"
    
    6 được sử dụng. Được triển khai trong Máy chủ Percona cho MySQL 5. 7. 33-36

  • [mysqld]
    early-plugin-load="keyring_vault=keyring_vault.so"
    loose-keyring_value_config="/home/mysql/keyring_vault.conf"
    
    7 - mã thông báo được tạo bởi máy chủ Vault

  • [mysqld]
    early-plugin-load="keyring_vault=keyring_vault.so"
    loose-keyring_value_config="/home/mysql/keyring_vault.conf"
    
    8 - nếu máy không tin cậy chứng chỉ CA của Vault, biến này sẽ trỏ tới chứng chỉ CA được sử dụng để ký chứng chỉ của Vault

Sau đây là một ví dụ tập tin cấu hình

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
0

Cảnh báo

Mỗi

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
4 chỉ được sử dụng bởi một máy chủ. Nhiều máy chủ sử dụng cùng một secret_mount_point có thể gây ra hành vi không thể đoán trước

Tạo bản sao lưu của tệp cấu hình khóa hoặc tệp dữ liệu ngay sau khi tạo vùng bảng được mã hóa. Nếu bạn đang sử dụng mã hóa Khóa chính, hãy sao lưu trước khi xoay khóa chính và sau khi xoay khóa chính

Lần đầu tiên một khóa được truy xuất từ ​​một chuỗi khóa, keyring_vault sẽ giao tiếp với máy chủ Vault để truy xuất loại khóa và dữ liệu

Variableskeyring_vault_configkeyring_vault_timeout

Xác minh Plugin Keyring đang hoạt động¶

Để xác minh plugin tạo khóa đang hoạt động, hãy chạy câu lệnh SHOW PLUGINS hoặc chạy truy vấn trên INFORMATION_SCHEMA. bảng PLUGIN. Bạn cũng có thể truy vấn chế độ xem PLUGINS

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
2

Đầu ra có thể như sau

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
3

Mã hóa một Tablespace File-Per-Table¶

Câu lệnh CREATE TABLESPACE được mở rộng để cho phép tùy chọn

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
00 mã hóa một vùng bảng File-per-Table

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
5

Để kích hoạt mã hóa cho một vùng bảng hiện có, hãy thêm tùy chọn

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
01 vào câu lệnh
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
02

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
8

Bạn phải thêm tùy chọn

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
01 vào ALTER TABLE để thay đổi trạng thái mã hóa bảng. Nếu không có tùy chọn
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
01, bảng được mã hóa vẫn được mã hóa hoặc bảng không được mã hóa vẫn không được mã hóa

Để thay đổi khóa vùng bảng, hãy chạy lệnh tối ưu hóa bảng

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
1

Mã hóa một Tablespace chung¶

Kể từ Máy chủ Percona 5. 7. 18-20, Máy chủ Percona dành cho MySQL hỗ trợ mã hóa không gian bảng chung. Bạn không thể mã hóa một phần các bảng trong một không gian bảng chung. Tất cả các bảng phải được mã hóa hoặc không có bảng nào được mã hóa

Tự động mã hóa các vùng bảng¶

Thêm biến

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
05 vào của tôi. cnf để tự động mã hóa các vùng bảng chung. Các giá trị có thể có của biến là

ValueDescriptionOFFGiá trị mặc định vô hiệu hóa tự động mã hóa các bảng mớiONbật mã hóa tự động cho các bảng mớiFORCECác bảng mới được tạo tự động bằng mã hóa. Việc thêm ENCRYPTION=NO vào câu lệnh CREATE TABLE hoặc ALTER TABLE dẫn đến cảnh báo

Câu lệnh CREATE TABLESPACE được mở rộng để cho phép tùy chọn

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
06

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
4

Để mã hóa một bảng hiện có, hãy thêm tùy chọn ENCRYPTION trong câu lệnh

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
02

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
0

Bạn cũng có thể tắt mã hóa cho một bảng, đặt mã hóa thành N

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
1

Ghi chú

Câu lệnh

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
02 chỉ sửa đổi chế độ mã hóa hiện tại nếu mệnh đề
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
01 được thêm vào một cách rõ ràng

Biến hệ thống¶

Ghi chú

Bạn không thể thay đổi khóa vùng bảng cho các bảng trong vùng bảng chung

Mã hóa nhật ký nhị phân¶

Để bắt đầu mã hóa binlog, hãy khởi động máy chủ bằng

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
20. Trạng thái này yêu cầu
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
21 và
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
22 phải là
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
23 và một trong các phần bổ trợ khóa được tải

GHI CHÚ. Những hành động này không mã hóa tất cả các binlog trong lược đồ sao chép. Bạn phải bật

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
24 trên mỗi máy chủ bản sao, ngay cả khi chúng không tạo tệp binlog. Kích hoạt mã hóa trên các máy chủ sao chép kích hoạt mã hóa nhật ký chuyển tiếp

Bạn có thể xoay khóa mã hóa được Percona Server sử dụng cho MySQL bằng cách chạy câu lệnh sau

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
2

Ghi chú

Lệnh

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
25 là Chất lượng thử nghiệm

Lệnh này tạo khóa mã hóa binlog mới trong khóa. Khóa mới mã hóa tệp binlog tiếp theo

Mã hóa tập tin tạm thời¶

Percona Server cho MySQL hỗ trợ mã hóa lưu trữ tệp tạm thời. Người dùng kích hoạt mã hóa với

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
26

Kích hoạt biến trong lệnh sau

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
3

Xác minh cài đặt mã hóa¶

Đối với các không gian bảng đơn lẻ, hãy xác minh tùy chọn ENCRYPTION bằng INFORMATION_SCHEMA. BẢNG và cài đặt CREATE OPTIONS

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
4

Đầu ra có thể như sau

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
5

Trường

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
27 trong
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
28 có bit số 13 được đặt nếu không gian bảng được mã hóa. Có thể kiểm tra bit này bằng biểu thức
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
29 bằng phương pháp sau

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
6

Đầu ra có thể như sau

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
7

Để cho phép xoay vòng Khóa chính, bạn có thể mã hóa vùng bảng hệ thống InnoDB đã được mã hóa bằng khóa chính mới bằng cách chạy câu lệnh

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
30 sau

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
8

Xoay Master Key¶

Để bảo mật, bạn nên xoay khóa Master kịp thời. Sử dụng câu lệnh

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
30. Để xoay phím, bạn phải có đặc quyền
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
32

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_vault_config="/home/mysql/keyring_vault.conf"
8

Không thể chạy câu lệnh cùng lúc khi bạn chạy câu lệnh

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
33 hoặc
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
34. Câu lệnh
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
30 sử dụng khóa để ngăn xung đột. Nếu một câu lệnh DML đang chạy, thì câu lệnh đó phải hoàn thành trước khi câu lệnh
[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
30 bắt đầu

Khi xoay phím Chính, các phím của vùng bảng trong trường hợp đó được mã hóa lại. Hoạt động không mã hóa lại dữ liệu không gian bảng

Việc mã hóa lại cho các khóa của vùng bảng phải thành công để xoay vòng khóa thành công. Nếu vòng quay bị gián đoạn, chẳng hạn như nếu máy chủ bị lỗi, thao tác sẽ tiếp tục khi máy chủ khởi động lại

Mã hóa vùng bảng hệ thống InnoDB¶

Tính năng này đã có trong bản xem trước công nghệ từ phiên bản 5. 7. 23-24 nhưng không được dùng từ phiên bản 5. 7. 32-35. Tính năng này không được khuyến nghị sử dụng trong sản xuất

Không gian bảng hệ thống InnoDB được mã hóa bằng cách sử dụng mã hóa khóa chính. Máy chủ phải được khởi động với tùy chọn

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
37

Nếu biến innodb_sys_tablespace_encrypt được đặt thành BẬT và máy chủ đã được khởi động ở chế độ bootstrap, bạn có thể tạo một bảng được mã hóa như sau

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
0

Ghi chú

Bạn không thể mã hóa các bảng hiện có trong không gian bảng Hệ thống

Không thể chuyển đổi vùng bảng hệ thống từ mã hóa sang không mã hóa hoặc ngược lại. Một phiên bản mới sẽ được tạo và các bảng người dùng phải được chuyển sang phiên bản mong muốn

Bạn có thể mã hóa không gian bảng hệ thống InnoDB đã được mã hóa (xoay vòng khóa) bằng khóa chính mới bằng cách chạy câu lệnh

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
30 sau

[mysqld]
early-plugin-load="keyring_vault=keyring_vault.so"
loose-keyring_value_config="/home/mysql/keyring_vault.conf"
1

[mysqld] early-plugin-load="keyring_vault=keyring_vault.so" loose-keyring_value_config="/home/mysql/keyring_vault.conf" 39¶

Tùy chọnMô tảDòng lệnh–innodb-sys-tablespace-encryptScopeGlobalDynamicNoData typeBooleanDefaultOFF

Biến đã được triển khai trong Percona Server 5. 7. 23-24. Chỉ định tốc độ xóa dữ liệu (ghi các bản ghi nhật ký làm lại giả) tính bằng byte trên giây

MySQL lưu trữ dữ liệu được mã hóa như thế nào?

Để lưu trữ dữ liệu được mã hóa, bạn có thể sử dụng trường BLOB và sử dụng các chức năng mã hóa tích hợp của MySQL . Thí dụ. cập nhật mytable set myfield = AES_ENCRYPT('some value', SHA2('key bí mật an toàn của bạn', 512)); .

Mã hóa trong MySQL là gì?

Mã hóa dữ liệu trong suốt dành cho doanh nghiệp MySQL (TDE) bảo vệ dữ liệu quan trọng của bạn bằng cách bật mã hóa dữ liệu lưu trữ trong cơ sở dữ liệu . Nó bảo vệ sự riêng tư của thông tin của bạn, ngăn ngừa vi phạm dữ liệu và giúp đáp ứng các yêu cầu quy định bao gồm. Tiêu chuẩn bảo mật dữ liệu ngành thẻ thanh toán (PCI DSS)

MySQL có hỗ trợ TDE không?

Máy chủ MySQL hỗ trợ Mã hóa dữ liệu minh bạch (TDE) , bảo vệ dữ liệu quan trọng bằng cách bật mã hóa dữ liệu lưu trữ.

MySQL có mã hóa khi nghỉ ngơi không?

Bạn có thể sử dụng Mã hóa dữ liệu trong suốt (TDE) để mã hóa các tệp dữ liệu SQL Server và Cơ sở dữ liệu SQL Azure đang lưu trữ . Với TDE, bạn có thể mã hóa dữ liệu nhạy cảm trong cơ sở dữ liệu và bảo vệ các khóa được sử dụng để mã hóa dữ liệu bằng chứng chỉ.