Chức năng mã hóa Mysql

Hàm MySQL ENCRYPT() được sử dụng để mã hóa một chuỗi bằng UNIX crypt() và trả về giá trị được mã hóa của chuỗi. Hàm này sử dụng muối trong quá trình mã hóa và muối phải dài ít nhất 2 ký tự. Nếu muối không được cung cấp, hàm này sẽ sử dụng một giá trị ngẫu nhiên là muối. Trong trường hợp đặc biệt, nó trả về như sau

Show
  • Trả về NULL nếu muối có độ dài dưới 2 ký tự
  • Trả về NULL nếu chuỗi là NULL
  • Trả về NULL nếu UNIX crypt() không có trên hệ thống

cú pháp


Thông số

stringRequired.Chỉ định chuỗi văn bản gốc được mã hóa bằng UNIX crypt(). saltOptional.Chỉ định chuỗi phải dài ít nhất 2 ký tự. Nó được sử dụng trong quá trình mã hóa. Nếu nó không được cung cấp, chức năng này sẽ sử dụng một giá trị ngẫu nhiên

Máy chủ Percona cho MySQL 8. 0. 28-20 thêm chức năng mã hóa và các biến để quản lý phạm vi mã hóa. Các hàm có thể lấy một đối số thuật toán. Mã hóa chuyển đổi bản rõ thành bản mã bằng khóa và thuật toán mã hóa

Bạn cũng có thể sử dụng các chức năng do người dùng định nghĩa với các khóa định dạng PEM do tiện ích OpenSSL tạo bên ngoài

Thông báo sử dụng văn bản gốc và tạo ra giá trị băm. Giá trị băm này có thể xác minh xem bản rõ có bị sửa đổi hay không. Bạn cũng có thể ký tên hoặc xác minh trên bản tóm tắt để đảm bảo rằng văn bản gốc không bị sửa đổi. Bạn không thể giải mã văn bản gốc từ giá trị băm

Khi chọn độ dài khóa, hãy xem xét những điều sau

  • Độ mạnh mã hóa tăng theo kích thước khóa và đồng thời, thời gian tạo khóa

  • Nếu hiệu suất là quan trọng và các chức năng được sử dụng thường xuyên, hãy sử dụng mã hóa đối xứng. Hàm mã hóa đối xứng nhanh hơn hàm mã hóa bất đối xứng. Hơn nữa, mã hóa bất đối xứng có những hạn chế về độ dài tối đa của tin nhắn được mã hóa. Ví dụ: đối với RSA, kích thước thông báo tối đa của thuật toán là độ dài khóa tính bằng byte (độ dài khóa tính bằng bit / 8) trừ đi 11

Bảng và các phần sau đây mô tả các chức năng. Ví dụ, xem chức năng ví dụ

Tên chức năng

Bảng sau đây mô tả các biến Ngưỡng mã hóa có thể được sử dụng để đặt giá trị tối đa cho độ dài khóa dựa trên loại mã hóa

Tên biến

Cài đặt thành phần_encryption_udf

Sử dụng Câu lệnh thành phần cài đặt để thêm thành phần component_encryption_udf. Các hàm và biến có sẵn. Các hàm do người dùng xác định và các biến Ngưỡng mã hóa được đăng ký tự động. Không có yêu cầu để gọi CREATE FUNCTION .. SONAME ...

Cần có đặc quyền INSERT trên bảng hệ thống mysql.component để chạy câu lệnh

-- Set Global variable
mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096;

-- Set Global variable
mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096;
0. Để đăng ký thành phần, thao tác thêm một hàng vào bảng này

Sau đây là một ví dụ về lệnh cài đặt

mysql> INSTALL COMPONENT 'file://component_encryption_udf';

Ghi chú

Nếu bạn đang Biên dịch Máy chủ Percona cho MySQL từ Nguồn, thì thành phần Mã hóa UDF được tạo theo mặc định khi Máy chủ Percona cho MySQL được tạo. Chỉ định tùy chọn cmake

-- Set Global variable
mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096;

-- Set Global variable
mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096;
1 để loại trừ nó

Các chức năng do người dùng xác định được mô tả

bất đối xứng_decrypt(thuật toán, crypt_str, key_str)

Giải mã một chuỗi được mã hóa bằng thuật toán và chuỗi khóa

trả lại

Một bản rõ dưới dạng một chuỗi

Thông số

Sau đây là các tham số của hàm

  • thuật toán - thuật toán mã hóa hỗ trợ RSA để giải mã chuỗi

  • key_str - một chuỗi ở định dạng PEM. Chuỗi khóa phải có các thuộc tính sau

  • Có hiệu lực

  • Chuỗi khóa công khai hoặc riêng tư tương ứng với chuỗi khóa riêng tư hoặc công khai được sử dụng với hàm asymmetric_encrypt

bất đối xứng_derive(pub_key_str, priv_key_str)

Tạo khóa đối xứng bằng cách sử dụng khóa chung được tạo ở một bên và khóa riêng được tạo ở bên kia

đầu ra bất đối xứng

Khóa dưới dạng chuỗi nhị phân

tham số asymmetric_derive

-- Set Global variable
mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096;

-- Set Global variable
mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096;
2 phải là khóa công khai ở định dạng PEM và được tạo bằng thuật toán Diffie-Hellman (DH)

-- Set Global variable
mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096;

-- Set Global variable
mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096;
3 phải là khóa riêng ở định dạng PEM và được tạo bằng thuật toán Diffie-Hellman (DH)

mã hóa bất đối xứng (thuật toán, chuỗi, keystr)

Mã hóa một chuỗi bằng thuật toán và chuỗi khóa

đầu ra asymmetric_encrypt

Bản mã dưới dạng chuỗi nhị phân

tham số asymmetric_encrypt

Các thông số như sau

  • thuật toán - thuật toán mã hóa hỗ trợ RSA để mã hóa chuỗi

  • str - được đo bằng byte. Độ dài của chuỗi không được lớn hơn độ dài mô-đun key_str tính bằng byte - 11 (byte bổ sung được sử dụng cho phần đệm PKCS1)

  • key_str - một khóa (riêng tư hoặc công khai) ở định dạng PEM

asymmetric_sign(thuật toán, digest_str, priv_key_str, digest_type)

Ký chuỗi thông báo bằng chuỗi khóa riêng

đầu ra asymmetric_sign

Chữ ký là một chuỗi nhị phân

tham số asymmetric_sign

Các thông số như sau

  • thuật toán - thuật toán mã hóa hỗ trợ RSA hoặc DSA để mã hóa chuỗi

  • digest_str - chuỗi nhị phân thông báo được ký. Gọi create_digest tạo thông báo

  • priv_key_str - khóa riêng được sử dụng để ký chuỗi thông báo. Khóa phải ở định dạng PEM

  • digest_type - phiên bản OpenSSL được cài đặt trên hệ thống của bạn xác định các hàm băm khả dụng. Bảng sau liệt kê các chức năng này

    OpenSSL 1. 0. 2OpenSSL 1. 1. 0OpenSSL 1. 1. 1OpenSSL 3. 0. xmd5md5md5md5sha1sha1sha1sha1sha224sha224sha224sha224sha384sha384sha384sha384sha512sha512sha512sha512md4md4md4md4shamd5-sha1md5-sha1md5-sha1ripemd160ripemd160ripemd160sha512-224whirlpoolwhirlpoolsha512-224sha512-256blake2b512sha512-256sha3-224blake2s256whirlpoolsha3-256sm3sha3-384blake2b512sha3-512blake2s256sha3-224sha3-384sha3-512shake128shake256

asymmetric_verify(thuật toán, digest_str, sig_str, pub_key_str, digest_type)

Xác minh xem chuỗi chữ ký có khớp với chuỗi thông báo hay không

đầu ra asymmetric_verify

Một

-- Set Global variable
mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096;

-- Set Global variable
mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096;
4 (thành công) hoặc một
-- Set Global variable
mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096;

-- Set Global variable
mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096;
5 (thất bại)

tham số asymmetric_verify

Các thông số như sau

  • thuật toán - hỗ trợ ‘RSA’ hoặc ‘DSA’

  • digest_str - gọi create_digest tạo ra chuỗi nhị phân thông báo này

  • sig_str - chuỗi nhị phân chữ ký. Gọi asymmetric_sign tạo ra chuỗi này

  • pub_key_str - chuỗi khóa công khai của người ký. Chuỗi này phải tương ứng với khóa riêng được chuyển đến asymmetric_sign để tạo chuỗi chữ ký. Chuỗi phải ở định dạng PEM

  • digest_type - các giá trị được hỗ trợ được liệt kê trong bảng loại thông báo của create_digest

create_asymmetric_priv_key(thuật toán, (key_len. dh_tham số))

Tạo khóa riêng bằng thuật toán đã cho và độ dài khóa cho các tham số RSA hoặc DSA hoặc Diffie-Hellman cho DH. Đối với RSA hoặc DSA, nếu cần, hãy thực thi

-- Set Global variable
mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096;

-- Set Global variable
mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096;
6 để chấm dứt quá trình tạo khóa lâu dài. Tạo khóa DH từ các tham số hiện có là một thao tác nhanh. Do đó, không có ý nghĩa gì khi chấm dứt hoạt động đó với
-- Set Global variable
mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096;

-- Set Global variable
mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096;
7

đầu ra create_asymmetric_priv_key

Khóa dưới dạng chuỗi ở định dạng PEM

tham số create_asymmetric_priv_key

Các thông số như sau

  • thuật toán - các giá trị được hỗ trợ là 'RSA', 'DSA' hoặc 'DH'

  • key_len - các giá trị độ dài khóa được hỗ trợ như sau

    • RSA - độ dài tối thiểu là 1.024. Chiều dài tối đa là 16.384

    • DSA - chiều dài tối thiểu là 1,024. Chiều dài tối đa là 9,984

    Ghi chú

    Giới hạn độ dài khóa được xác định bởi OpenSSL. Để thay đổi độ dài khóa tối đa, hãy sử dụng hoặc mã hóa_udf. rsa_bits_threshold hoặc mã hóa_udf. dsa_bits_threshold

  • dh_parameters - Tham số Diffie-Hellman (DH). Gọi create_dh_parameter tạo các tham số DH

create_asymmetric_pub_key(thuật toán, priv_key_str)

Lấy khóa công khai từ khóa riêng đã cho bằng thuật toán đã cho

đầu ra create_asymmetric_pub_key

Khóa dưới dạng chuỗi ở định dạng PEM

tham số create_asymmetric_pub_key

Các thông số như sau

  • thuật toán - các giá trị được hỗ trợ là 'RSA', 'DSA' hoặc 'DH'

  • priv_key_str - phải là chuỗi khóa hợp lệ ở định dạng PEM

tạo_dh_tham số (key_len)

Tạo các tham số để tạo cặp khóa riêng/công khai Diffie-Hellman (DH). Nếu cần, hãy thực thi

-- Set Global variable
mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096;

-- Set Global variable
mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096;
6 để chấm dứt việc tạo các tham số lâu dài

Việc tạo các tham số DH có thể mất nhiều thời gian hơn so với việc tạo các khóa RSA hoặc khóa DSA. OpenSSL xác định giới hạn độ dài tham số. Để thay đổi độ dài tham số tối đa, hãy sử dụng mã hóa_udf. dh_bits_threshold

đầu ra create_dh_parameters

Một chuỗi ở định dạng PEM và có thể được chuyển đến create_asymmetric_private_key

tham số create_dh_parameters

Các thông số như sau

  • key_len - phạm vi cho độ dài khóa là từ 1024 đến 10.000. Giá trị mặc định là 10.000

create_digest(digest_type, str)

Tạo một thông báo từ chuỗi đã cho bằng cách sử dụng loại thông báo đã cho. Chuỗi thông báo có thể được sử dụng với asymmetric_sign và asymmetric_verify

đầu ra create_digest

Bản tóm tắt của chuỗi đã cho dưới dạng chuỗi nhị phân

tham số create_digest

Các thông số như sau

  • digest_type - phiên bản OpenSSL được cài đặt trên hệ thống của bạn xác định các hàm băm khả dụng. Bảng sau liệt kê các chức năng này

    OpenSSL 1. 0. 2OpenSSL 1. 1. 0OpenSSL 1. 1. 1OpenSSL 3. 0. xmd5md5md5md5sha1sha1sha1sha1sha224sha224sha224sha224sha384sha384sha384sha384sha512sha512sha512sha512md4md4md4md4shamd5-sha1md5-sha1md5-sha1ripemd160ripemd160ripemd160sha512-224whirlpoolwhirlpoolsha512-224sha512-256blake2b512sha512-256sha3-224blake2s256whirlpoolsha3-256sm3sha3-384blake2b512sha3-512blake2s256sm3sha3-224blake2b512sha3-384blake2s256sha3-512blake2b512shake128blake2s256shake256
  • str - Chuỗi được sử dụng để tạo chuỗi thông báo

biến ngưỡng mã hóa

Giới hạn độ dài khóa tối đa được xác định bởi OpenSSL. Quản trị viên máy chủ có thể giới hạn độ dài khóa tối đa bằng cách sử dụng các biến ngưỡng mã hóa

Các biến được đăng ký tự động khi component_encryption_udf được cài đặt

Tên biếnencryption_udf. dh_bits_threshold

-- Set Global variable mysql> SET GLOBAL encryption_udf.dh_bits_threshold = 4096; -- Set Global variable mysql> SET GLOBAL encryption_udf.rsa_bits_threshold = 4096; 9

Biến đặt giới hạn tối đa cho hàm create_dh_parameters do người dùng xác định và được ưu tiên hơn giá trị độ dài tối đa của OpenSSL

OptionDescriptioncommand-lineYesscopeGlobaldata typeunsigned integerdefault10000

Phạm vi cho biến này là từ 1024 đến 10.000. Giá trị mặc định là 10.000

mã hóa_udf. dsa_bits_threshold

Biến đặt giới hạn ngưỡng cho hàm do người dùng xác định create_asymmetric_priv_key khi hàm được gọi với tham số RSA và được ưu tiên hơn giá trị độ dài tối đa của OpenSSL

Làm cách nào để mã hóa dữ liệu trong MySQL?

Để kích hoạt mã hóa cho vùng bảng hệ thống mysql, chỉ định tên vùng bảng và tùy chọn ENCRYPTION trong câu lệnh ALTER TABLESPACE . mysql> THAY ĐỔI TABLESPACE mysql ENCRYPTION = 'Y'; .

Chức năng mã hóa mật khẩu trong MySQL là gì?

Máy chủ MySQL sử dụng chức năng MẬT KHẨU để mã hóa mật khẩu MySQL để lưu trữ trong cột Mật khẩu của bảng cấp người dùng. Giá trị do hàm MẬT KHẨU trả về là một chuỗi được băm hoặc NULL nếu đối số là NULL. Hàm MẬT KHẨU nhận một tham số là chuỗi cần mã hóa.

MySQL có mã hóa không?

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)

Làm cách nào để mã hóa một cột trong MySQL?

Mã hóa cấp độ cột trong MySQL .
TẠO BẢNG pii_data ( user_id int unsigned PRIMARY KEY,.
CHÈN VÀO mytable (id, secret_data) GIÁ TRỊ (1, TO_BASE64(AES_ENCRYPT(“dữ liệu siêu bí mật”, “khóa của tôi”))); .
plaintextData = “nội dung siêu bí mật”.
CHỌN secretData, key TỪ mytable;