1. Trang chủ
  2. » Luận Văn - Báo Cáo

nghiên cứu, tìm hiểu một số vấn đề liên quan đến việc bảo đảm an toàn trong SQL server 2012

53 1,8K 10

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 53
Dung lượng 1,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

nghiên cứu, tìm hiểu một số vấn đề liên quan đến việc bảo đảm an toàn trong SQL server 2012

Trang 1

MỤC LỤC

LỜI NÓI ĐẦU 3

Chương I: Nghiên cứu và tìm hiểu chung về vấn đề an toàn trong SQL Server 2012 .5

1.1 An toàn máy chủ và an toàn mạng 5

1.2 An toàn bên trong SQL Server 8

1.3 Bảo vệ dữ liệu mức phân quyền truy cập 11

1.4 Bảo vệ dữ liệu bằng phương pháp mã hóa 13

Chương II: Nghiên cứu và tìm hiểu cơ chế mã hóa dữ liệu trong SQL Server 2012 .16

2.1 Kiến trúc phân cấp khóa trong SQL Server 2012 16

2.2 Quá trình tạo và sử dụng khóa trong SQL Server 2012 19

2.2.1 Khóa chủ dịch vụ (Service Master Key – SMK) 19

2.2.2 Khóa chủ cơ sở dữ liệu (Database Master Key - DMK) 20

2.2.3 Tạo và sử dụng khóa mã đối xứng 22

2.2.4 Tạo và sử dụng các khóa phi đối xứng 25

2.2.5 Tạo và sử dụng các chứng chỉ 27

2.3 Quá trình thực hiện mã hóa dữ liệu 33

2.3.1 Mã hóa dữ liệu với các khóa đối xứng 33

2.3.2 Mã hóa dữ liệu với các khóa phi đối xứng và chứng chỉ 35

2.4 Quá trình thực hiện mã hóa dữ liệu sử dụng TDE 37

Chương III: Thực hiện demo việc mã hóa dữ liệu trong SQL Server 39

3.1 Demo áp dụng mã hóa dữ liệu mức cột 39

Trang 2

3.2 Demo áp dụng công nghệ mã hóa dữ liệu trong suốt - TDE 46 KẾT LUẬN 51 TÀI LIỆU THAM KHẢO 53

Trang 3

LỜI NÓI ĐẦU

Thông tin được xem là tài sản vô giá và cần được bảo vệ bằng mọi cách Với sựphát triển hiện nay, yêu cầu chia sẻ thông tin qua các phương tiện truyền thông hayInternet ngày càng tăng cao, điều này thúc đẩy việc bảo vệ thông tin ngày càng trởnên cấp thiết

Hầu hết các doanh nghiệp hay các nhà quản lý hiện nay đều sử dụng 1 hệ quản trị

cơ sở dữ liệu để lưu trữ tập trung tất cả thông tin của mình Điều này đồng nghĩavới việc hệ thống này sẽ là tiêu điểm của các kẻ tấn công Ở mức độ nhẹ, các tấncông có thể dẫn đến việc hỏng hệ thống cơ sở dữ liệu, làm cho hệ thống hoạt độngkhông ổn định, mất mát dữ liệu gây ra tổn thất cho các doanh nghiệp Nghiêmtrọng hơn, các thông tin mật có thể bị tiết lộ và được đem bán cho các doanhnghiệp đối thủ Vì vậy việc đảm bảo an toàn và bảo mật cho hệ quản trị CSDL là

vô cùng quan trọng

Một số hệ quản trị mà chúng ta thường gặp như MySQL Server, Oracle DatabaseServer, Microsoft SQL Server Các hệ quản trị cơ sở dữ liệu cung cấp các cơ chế,các quy tắc đảm bảo tính an toàn cho hệ quản trị của mình Các nhà thiết kế vàphát triển ứng dụng cơ sở dữ liệu cần phải hiểu và nắm được các nguyên tắc đó đểlàm sao trong quá trình thiết kế và xây dựng chương trình cần đảm bảo vấn đề antoàn cho ứng dụng, an toàn cho dữ liệu trong cơ sở dữ liệu Bất kỳ người dùngkhông hợp lệ không thể khai thác được dữ liệu trong cơ sở dữ liệu

Xuất phát từ nhu cầu thực, trong phạm vi của đề tài, chúng tôi đi vào nghiên cứu,tìm hiểu một số vấn đề liên quan đến việc bảo đảm an toàn trong SQL Server 2012:

Trang 4

 Tìm hiểu các vấn đề chung liên quan đến việc đảm bảo an toàn cho hệ thốngkhai thác cơ sở dữ liệu

 Nghiên cứu tìm hiểu vấn đề bảo đảm an toàn cho cơ sở dữ liệu bằng cácphương pháp mã hóa

 Tạo kịch bản demo áp dụng các phương pháp mã hóa trong SQL ServerBáo cáo của đề tài được trình bày gồm các phần sau:

Chương I: Nghiên cứu và tìm hiểu chung vấn đề an toàn trong hệ quản trị SQLServer 2012 Trong chương này chúng tôi tìm hiểu các nguyên tắc cơ bản để đảmbảo an toàn cho SQL Server 2012 bắt đầu từ khi được cài đặt lên máy chủ An toànxác thực người dùng đăng nhập Bảo vệ dữ liệu trong cơ sở dữ liệu dựa vào cơ chếphân quyền trong hệ quản trị Bảo vệ dữ liệu bằng cách áp dụng phương pháp mãhóa dữ liệu

Chương II: Nghiên cứu và tìm hiểu cơ chế mã hóa trong SQL Server 2012 Trongchương này chúng tôi làm rõ hơn quá trình thực hiện mã hóa dữ liệu Nắm đượckiến trúc phân cấp và quản lý khóa mã trong SQL Server 2012 Cách tạo khóa mã

và sử dụng nó để thực hiện mã hóa dữ liệu theo yêu cầu

Chương III: Thực hiện demo mã hóa dữ liệu trong SQL Server Trong chương nàychúng tôi sẽ đưa ra kịch bản đơn giản để thấy được ý nghĩa của vấn đề mã hóa dữliệu Áp dụng các kiến thức ở phần trước để thực hiện lập trình và mô phỏng quátrình bảo vệ dữ liệu trong cơ sở dữ liệu

Trang 5

Chương I: Nghiên cứu và tìm hiểu chung về vấn đề an toàn trong SQL Server

2012

1.1 An toàn máy chủ và an toàn mạng

 Lựa chọn tài khoản để chạy SQL Server: SQL Server là một dịch vụWindows, một tiến trình được khởi động bởi hệ điều hành Windows đangchạy dưới quyền của người dùng hoặc tài khoản hệ thống Chọn một tàikhoản đúng là rất quan trọng cho vấn đề an toàn Vì những máy khách truycập SQL Server bằng kết nối cơ sở dữ liệu có thể truy cập vào hệ điều hànhWindows trong một vài trường hợp, hoặc nếu như một lỗ hổng an toàn đượctìm thấy trong mã lệnh SQL SQL Server không cần phải có quyền quản trịtrên máy tính, nó chỉ cần có quyền trên các thư mục nơi nó được lưu trữ dữliệu của nó, các file log lỗi, sao lưu, và một số quyền hệ thống

 Mã hóa phiên với SSL: Giữa máy khách và máy SQL Server, các câu truyvấn và các dữ liệu kết quả được gửi đi trên mạng mà con người có thể đọcđược bằng cách sử dụng các công cụ bắt gói tin như Wireshark Để bảo vệthông tin này khỏi bị nghe nén trên mạng thì chúng ta cần phải mã hóađường truyền thông giữa client và server bằng cách sử dụng SSL (SecuritySocket Layer)

 Cấu hình firewall cho truy cập SQL Server: SQL Server trả lời trên cổngTCP và UDP cụ thể, mà cần phải được mở trên firewall nếu muốn truy cậpvào SQL Server

 Cấm dịch vụ SQL Server Browser: Dịch vụ SQL Server Browser khởi động

tự động khi cài đặt SQL Server Nhiệm vụ của nó là để giao tiếp với các thể

Trang 6

đó đang lắng nghe Để che giấu sự hiện diện của một thể hiện SQL Server,chúng ta có thể dừng nó hoặc cấu hình để nó không đáp ứng các yêu cầuquảng bá.

 Đóng tất cả các dịch vụ không sử dụng: Nếu cài đặt trọn gói SQL Server,chúng ta có thể có các thành phần không cần thiết chạy trên máy chủ, do đóxuất hiện nhiều rủi ro an toàn và làm giảm hiệu suất máy chủ Ngoài ra còn

có một số dịch vụ khác của Windows chạy trên máy chủ mà chúng ta có thể

vô hiệu hóa một cách an toàn, đặc biệt là trên một máy chủ dành riêng choSQL Server

 Sử dụng mã hóa cơ sở dữ liệu trong suốt: Kẻ tấn công có quyền đọc trên thưmục SQL Server lưu trữ các tập tin dữ liệu của nó (.mdf) sẽ không gặp khókhăn để đạt được quyền truy cập vào tất cả các cơ sở dữ liệu, chỉ đơn giảnbằng cách sao chép các tệp mdf và gắn nó vào một SQL Server, nơi hắn cóquyền quản trị hệ thống Bảo vệ đầu tiên chống lại mối đe dọa này tất nhiên

là quản lý quyền NTFS chặt chẽ trên các thư mục dữ liệu SQL Server Đểđảm bảo an toàn hơn nữa cho cơ sở dữ liệu, chúng ta có thể sử dụng phươngpháp mã hóa cơ sở dữ liệu trong suốt (Transparent Database Encryption -TDE) để mã hoá tất cả các file dữ liệu (một cơ sở dữ liệu có thể bao gồmmột hoặc nhiều tập tin dữ liệu) Kẻ tấn công cố gắng gắn tệp dữ liệu đó vàomột SQL Server khác sẽ không thể giải mã chúng bởi vì không có khóa đểgiải mã

 An toàn truy cập máy chủ liên kết: Tính năng Linked Server cho phép chúng

ta định nghĩa bên trong SQL Server, một kết nối đến một máy chủ khác mà

có thể được tham chiếu trong mã T -SQL để truy cập nguồn dữ liệu ở xa.Với tính năng này, chúng ta có thể tạo ra các truy vấn phân phối hoặc trao

đổi dữ liệu bằng các cách của câu truy vấn (INSERT … SELECT) Giống

như việc lưu trữ chuỗi kết nối trong ứng dụng client, nhưng ứng dụng client

Trang 7

này là một SQL Server Một máy chủ liên kết có thể tham chiếu tới mộtSQL Server ở xa, hoặc bất kỳ nguồn dữ liệu khác có trình điều khiểnOLEDB được cài đặt trên máy SQL Server Khi chúng ta tạo ra một máychủ liên kết, cần phải nhận thức được một số vấn đề bảo mật liên quan.

 Cấu hình an toàn điểm đầu cuối (endpoint): Một điểm đầu cuối SQL Server

là một cửa được mở ra từ hoặc đến SQL Server Tất cả mọi thứ mà có thể đi

từ SQL Server tới mạng, hoặc từ mạng đến SQL Server, đều đi qua mộtđiểm đầu cuối Điểm đầu cuối này có thể là hệ thống hoặc người dùng địnhnghĩa Các điểm đầu cuối hệ thống cho phép các kết nối T-SQL tới SQLServer để gửi các truy vấn Chúng ta có thể tạo ra một điểm đầu cuối cho bamục đích: Các yêu cầu TCP, service broker, hoặc phản chiếu cơ sở dữ liệu

Ví dụ chúng ta sử dụng để tạo thiết lập một kết nối chuyên dụng và an toàntới SQL Server cho mục đích quản trị hoặc truy cập từ xa

 Hạn chế các tính năng: Một số tính năng bị vô hiệu hóa trong quá trình càiđặt SQL Server vì chúng có thể làm xuất hiện các rủi ro mất an toàn

Trang 8

1.2 An toàn bên trong SQL Server

 Lựa chọn phương pháp xác thực của Windows và SQL Server: Trong quátrình cài đặt, SQL Server yêu cầu kiểu xác thực để cấu hình Phương phápxác thực Windows mặc định được lựa chọn và là thiết lập được khuyến cáo

Nó đơn giản hoá quản trị và an toàn hơn, bởi vì nó sử dụng thẻ an toànWindows Người dùng không phải nhớ mật khẩu khác, và không phải truyềnmật khẩu qua mạng khi kết nối với SQL Server Chúng ta không thể vô hiệuhóa xác thực Windows, nhưng chỉ chọn để mở rộng nó với xác thực SQLServer (Windows và SQL Server, còn được gọi là phương pháp xác thực hỗnhợp) Chúng ta nên sử dụng xác thực SQL Server chỉ khi cần phải cho phéptruy cập từ người dùng bên ngoài mạng cục bộ và các miền Windows tincậy

 Tạo các tài khoản đăng nhập: Một thông tin đăng nhập là một tài khoảnđược định nghĩa ở cấp server với các quyền hạn được gán để kết nối và cóthể thực hiện nhiệm vụ quản trị, và để truy cập cơ sở dữ liệu trên các thểhiện Tạo ra thông tin đăng nhập là bước đầu tiên để cấp quyền truy cậptrong SQL Server Mô hình an toàn SQL Server có hai mức: mức server vàmức cơ sở dữ liệu Một thông tin đăng nhập đầu tiên phải được tạo ra ởmức server , và sau đó, cho phép truy cập đến một cơ sở dữ liệu, một ngườidùng phải được tạo ra trong cơ sở dữ liệu và được ánh xạ tới một thông tinđăng nhập đang tồn tại

 Bảo vệ server chống lại các tấn công brute-force: Tấn công brute-force làmột cách để crack mật khẩu đăng nhập SQL bằng cách cố gắng mọi kết hợp

ký tự có thể, hoặc bằng cách sử dụng một từ điển một danh sách từ, có chứacác mật khẩu có thể xảy ra nhất Cách tốt nhất để bảo vệ mật khẩu của chống

Trang 9

lại tấn công brute-force là để thi hành chính sách mật khẩu Windows và hếthạn, vì điều này sẽ đảm bảo rằng chúng ta chỉ có mật khẩu mạnh.

 Giới hạn các quyền admin của tài khoản SA: Tài khoản sa là quản trị hệthống máy chủ SQL Server Nó được tạo ra lúc cài đặt Trước đây đó là mộtđăng nhập cố định mà chúng ta không thể thay đổi, nhưng kể từ SQL Server

2005, chúng ta có thể đổi tên và vô hiệu hóa nó để ngăn chặn nó được sửdụng bởi kẻ tấn công

 Sử dụng các vai trò server đã được cố định: Thông tin đăng nhập cho phépbạn kết nối tới SQL Server và để truy cập cơ sở dữ liệu khi chúng được ánh

xạ tới người dùng cơ sở dữ liệu Mặc định chúng không quyền thực hiện cácthao tác quản trị mức server như quản lý các thông tin đăng nhập khác hoặcthay đổi cấu hình server Nếu chúng ta muốn cho phép đăng nhập để cóquyền quản trị, chúng ta có thể cung cấp cho nó những đặc quyền hoặc làthêm chúng vào vai trò máy chủ cố định đã xác định trước Các vai tròserver cố định cho phép chúng ta dễ dàng thu hồi hoặc cấp một số tập quyềnchung

 Tạo và sử dụng các vai trò server được người dùng định nghĩa: Một vai tròserver do người dùng định nghĩa là tiện dụng trong việc cấp một nhóm cácthông tin đăng nhập cho một số quyền quản trị, bởi vì nó giúp chúng ta tiếtkiệm khỏi phải áp dụng các quyền riêng lẻ cho mỗi thông tin đăng nhập.Chúng ta có thể tạo ra một vai trò người dùng xác định, cấp quyền truy cậpvào nó, và thêm các thông tin đăng nhập mong muốn là thành viên vai trò.Các quyền server có thể được cấp cho một vai trò, ví dụ quyền kết nối tớimột điểm đầu cuối, giả mạo đăng nhập khác (có nghĩa là, để thay đổi ngữcảnh của nó với EXECUTE AS), hoặc kiểm soát một số thông tin đăng nhậpkhác

Trang 10

 Tạo người dùng cơ sở dữ liệu và ánh xạ tới thông tin đăng nhập: Các thôngtin đăng nhập đảm bảo xác thực và truy cập vào tài nguyên máy chủ Để truycập vào một cơ sở dữ liệu, chúng phải ánh xạ tới một người dùng trong cơ

sở dữ liệu Truy cập vào các đối tượng cơ sở dữ liệu được cấp cho ngườidùng, không áp dụng cho thông tin đăng nhập dbo là viết tắt của DataBaseOwner Đây là một người sử dụng cơ sở dữ liệu đặc biệt mà ánh xạ tới chủ

sở hữu của cơ sở dữ liệu Khi được tạo ra, cơ sở dữ liệu được chỉ định mộtchủ sở hữu, đó là tên đăng nhập đã tạo ra nó

 Ngăn chặn thông tin đăng nhập và người dùng xem siêu dữ liệu: Trước SQLServer 2005, tất cả các máy chủ và siêu dữ liệu cơ sở dữ liệu là mọi ngườiđều có thể nhìn thấy Đó là một vấn đề, ví dụ, các công ty web-hostingngười chia sẻ một thể hiện SQL Server với khách hàng Tất cả mọi người cóthể nhìn thấy sự hiện diện của cơ sở dữ liệu khách hàng khác trên máy chủ.Bây giờ chúng ta có thể kiểm soát sự xuất hiện các siêu dữ liệu Nếu nhưchúng ta muốn ẩn các cơ sở dữ liệu đối với tất cả các thông tin đăng nhập,thì loại bỏ quyền VIEW ANY DATABASE khỏi vai trò server công khai

 Chỉnh sửa các lỗi ánh xạ người dùng tới thông tin đăng nhập trên cơ sở dữliệu được khôi phục: Nếu chúng ta di chuyển một cơ sở dữ liệu từ một máychủ này sang một máy chủ khác, bằng các cách backup/restore hoặcdetach/attach, sau đó có một dịp nào đó người dùng SQL của bạn sẽ trởthành mồ côi (orphaned), có nghĩa là họ sẽ không có thông tin đăng nhậptương ứng Như ánh xạ giữa tên đăng nhập và người sử dụng được thực hiệnbởi SID, nếu đăng nhập xuất hiện trên thể hiện SQL Server đích có cùng tênnhưng khác SID, thì người dùng này sẽ lỗi và hệ thống không nhận ra

Trang 11

1.3 Bảo vệ dữ liệu mức phân quyền truy cập

 Hiểu và quyền: Một hệ thống quản lý dữ liệu quan hệ , chẳng hạn như SQLServer , không chỉ là đáp ứng lưu trữ và truy xuất dữ liệu , mà còn đảm bảo

sự gắn kết của nó và bảo vệ nó Giống như hệ thống máy chủ khác , nó xácthực người sử dụng và duy trì một phiên mà người dùng đó sẽ có thể truycập dữ liệu, nếu người này được phép SQL Server sẽ kiểm tra những quyềntrong mỗi lần đọc hay ghi dữ liệu Các quyền hạn được thiết lập bởi các câulệnh ngôn ngữ kiểm soát dữ liệu (Data Control Language - DCL) DCL làmột tập con của ngôn ngữ SQL được sử dụng để kiểm soát việc truy cập dữliệu Có 3 trạng thái có thể của quyền hạn

o GRANT: Quyền được cho phép

o DENY: Quyền bị từ chối

o REVOKE: Xóa bỏ việc cấp hoặc từ chối quyền

Thuật toán kiểm tra quyền trong SQL Server là phức tạp, nhưng nó giúp ta

có chiến lược cấp quyền một cách đơn giản Các quyền được phân cấp vàbắc cầu Hệ thống phân cấp của các đối tượng trong SQL Server là như sau:

Server -> Database -> Schema -> Object -> Column

 Gán các quyền mức cột: Các quyền khoản trong SQL Server được phân cấp,người dùng có quyền trên lược đồ có cùng các quyền trên các đối tượng bêntrong lược đồ, trừ khi từ chối cho cấp phép đã được thực hiện Nhưng cácđối tượng này không phải là mức thấp nhất của hệ thống Chúng ta có thểthiết lập quyền tới cột đó Để gán các quyền cho cột chúng ta sử dụng lệnhGRANT SELECT ON <đối tượng> Quyền mức cột là không phù hợp với

hệ thống phân cấp quyền chính thức và có thể sẽ thay đổi trong các phiênbản tương lai, chúng ta có thể áp dụng tốt hơn bằng cách sử dụng các view

Trang 12

để hạn chế việc truy cập vào cột Các view cung cấp mức độ trừu tượng đểtruy cập bảng, đây là cách linh hoạt hơn so với thiết lập quyền mức cột.

 Quản lý quyền sở hữu đối tượng: Mặc định, chủ sở hữu đối tượng là chủ sởhữu của lược đồ thuộc về nó Chủ sở hữu này có tất cả các quyền đối với đốitượng, và không thể phủ nhận Để thiết lập quyền sở hữu đối tượng chúng ta

sử dụng lệnh ALTER AUTHORIZATION Chúng ta muốn thay đổi quyền

sở hữu khi người dùng cần loại bỏ hoặc khi cần chỉnh sửa một số vấn đề về

sở hữu đối tượng Tất nhiên, chuyển quyền sở hữu đòi hỏi phải có các quyềnhạn thực hiện điều này vì hai lý do Thứ nhất, một người nào đó không đượcphép ăn cắp một đối tượng, và thứ hai là chủ sở hữu của một đối tượngkhông được phép để chuyển nó cho những người không muốn nó

 Bảo vệ dữ liệu thông qua view và thủ tục lưu trữ: Khi chúng ta tham chiếumột đối tượng trong một view hoặc một đối tượng code, chẳng hạn như mộtthủ tục lưu trữ hoặc một hàm, thì các quyền có thể được thiết lập trên viewhoặc thủ tục, và loại bỏ quyền trên các đối tượng được tham chiếu Điều nàycho phép bảo vệ các bảng dữ liệu bên dưới chống lại các truy vấn trực tiếplên bảng Chúng ta cần phải hiểu được cách thức hoạt động để thực hiện nómột cách chính xác

 Cấu hình an toàn cross-database: Chuỗi các quyền sở hữu (ownershipchaining) cho phép cấp quyền chỉ trên view hay các thủ tục và cấp quyềncho các các đối tượng bên dưới, điều này mặc định được giới hạn trong một

cơ sở dữ liệu Nếu chúng ta tham chiếu một đối tượng từ một cơ sở dữ liệukhác trong view hoặc thủ tục, thì người dùng phải là một người sử dụngtrong cơ sở dữ liệu đó, và có quyền truy cập vào đối tượng này Đây là cách

an toàn được lựa chọn tốt nhất Nếu cơ sở dữ liệu của chúng ta được liên kếtchặt chẽ, chúng ta có thể cho phép chuỗi sở hữu chéo cơ sở dữ liệu (cross-database ownership chaining)

Trang 13

 Sử dụng EXECUTE AS để thay đổi ngữ cảnh người dùng: Kể từ SQLServer 2005, chúng ta có thể sử dụng lệnh EXECUTE AS để mạo danhngười dùng khác trong một phiên (dcó ích khi dùng để thử nghiệm cácquyền được gán cho người dùng) hoặc để thực thi một thủ tục Để thay đổingữ cảnh thực hiện trong phiên, chúng ta có thể dùng lệnh sau đây:

EXECUTE AS LOGIN = 'DOMAIN\Fred';

EXECUTE AS USER = 'Fred';

Lệnh đầu thay đổi ngữ cảnh được giả mạo một tài khoản đăng nhập mà đượcgán quyền mức server, trong khi đó lệnh thứ hai thay đổi ngữ cảnh chỉ liênquan đến cơ sở dữ liệu hiện tại và không cho đưa cho người gọi quyền mứcserver Chúng ta sẽ không thể chạy các lệnh bên ngoài của cơ sở dữ liệuhoặc thay đổi cơ sở dữ liệu hiện tại khi đang trong ngữ cảnh an toàn này

1.4 Bảo vệ dữ liệu bằng phương pháp mã hóa

Một trong những khó khăn để hiểu các lựa chọn nhất trong SQL Server 2012 làkhả năng mã hóa dữ liệu Lý do chính là tất cả các khả năng mã hóa khác nhau đềuđược cung cấp Mã hóa dữ liệu có thể được thực hiện bởi hệ điều hành, SQLServer, hoặc các ứng dụng Một số tùy chọn mã hóa SQL Server khác nhau

 Mã hóa dữ liệu trong suốt (Transparent Data Encryption - TDE) là tùy chọn

mã hóa chính trong SQL Server Lần đầu tiên TDE có sẵn trong SQL Server

2008, SQL Server 2012 và nó chỉ có trong các phiên bản SQL ServerEnterprise TDE cho phép chúng ta mã hóa toàn bộ một cơ sở dữ liệu Cácbản sao lưu cơ sở dữ liệu sử dụng TDE cũng được mã hóa TDE bảo vệ phần

dữ liệu ở trên thiết bị lưu trữ, có nghĩa là các file của cơ sở dữ liệu và cácfile log được mã hóa bằng thuật toán AES và 3DES TDE là hoàn toàn trongsuốt với các ứng dụng và không đòi hỏi phải sửa đổi mã lệnh để thực hiện

Trang 14

 Mã hóa mức cột (Column-level): Mã hóa mức cột (hay còn gọi là mã hóamức ô – cell-level) đã được đưa ra trong SQL Server 2005 và có sẵn trongtất cả các phiên bản của SQL Server Để sử dụng mã hóa mức ô, các lược đồphải thay đổi tới kiểu nhị phân (varbinary), sau đó chuyển đổi lại về kiểu dữliệu mong muốn Điều này có nghĩa là các ứng dụng phải sửa đổi để hỗ trợviệc mã hóa, giải mã, ngoài ra nó có thể ảnh hưởng đến hiệu năng Mã hóa

cơ sở dữ liệu xảy ra ở mức trang, nhưng khi các trang được đọc đến poolđệm thì chúng được giải mã Dữ liệu có thể được mã hóa bằng cách sử dụngmật khẩu, khóa bất đối xứng, khóa đối xứng, hoặc chứng chỉ Các thuật toán

hỗ trợ cho việc mã hóa mức cột là AES với 128, 196, 256 bit khóa và 3DES

 Mã hóa và giải mã dữ liệu với NET Framework: Một tùy chọn khác choviệc mã hóa dữ liệu được lưu trữ trong SQL Server là thực hiện việc mã hóa

và giải mã từ bên trong ứng dụng Tất cả các phiên bản của SQL Server hỗtrợ kiểu mã hóa dữ liệu này Tuy nhiên, không giống như TDE, mã hóa dữliệu trong ứng dụng yêu cầu chúng ta phải viết code ứng dụng để thực hiện

mã hóa bằng cách gọi cách hàm mã hóa và giải mã trong NET Framework,bằng cách sử dụng không gian tên System.Security.Cryptography để thựchiện mã hóa đối xứng hoặc bất đối xứng

 Mã hóa hệ thống tập tin (Encrypting File Systems - EFS): Phương pháp này

là một tính năng mã hóa file được giới thiệu trong Windows 2000 WindowsServer hỗ trợ EFS để mã hóa dữ liệu vào file và cấp độ thư mục EFS sửdụng thuật toán mã hóa AES, ECC và mã hóa dựa vào smartcard Cài đặtmột cơ sở dữ liệu SQL Server trong EFS trên thực tế là không được đề nghị

vì tăng thêm các chi phí EFS không được tối ưu hóa cho hiệu suất, và tất cảcác thao tác vào/ra là đồng bộ Nếu chúng ta sử dụng EFS, các tập tin cơ sở

dữ liệu được mã hóa dưới danh tính của các tài khoản đang chạy SQLServer Nếu chúng ta thay đổi tài khoản chạy dịch vụ SQL Server, trước tiên

Trang 15

cần phải giải mã các tập tin bằng cách sử dụng tài khoản cũ, sau đó mã hóalại chúng bằng cách sử dụng tài khoản mới

 BitLocker: Đây là một tính năng bảo vệ dữ liệu có sẵn trong WindowsServer 2012, Windows 8, Windows 7 và Windows Server 2008 R2.BitLocker thực hiện bảo vệ dữ liệu bằng cách mã hóa tất cả các dữ liệu trênphân vùng của hệ điều hành Windows

Trang 16

Chương II: Nghiên cứu và tìm hiểu cơ chế mã hóa dữ liệu trong SQL Server

2012

Vấn đề bảo vệ dữ liệu nhạy cảm là mối quan tâm quan trọng đối với các tổ chức

Số thẻ tín dụng, hồ sơ y tế và sức khỏe, và các thông tin cá nhân khác phải đượclưu trữ và bảo đảm theo một cách mà chỉ có nhân viên được ủy quyền mới có thểtruy cập thông tin Các phiên bản SQL Server 2000, 2005 vấn đề mã hóa cần phảiđược xử lý bởi ứng dụng SQL Server cung cấp các hàm mã hóa, giải mã dữ liệu

để người phát triển tích hợp Ngoài ra vấn đề quản lý khóa mã do người phát triểnứng dụng quản lý thủ công Từ phiên bản SQL Server 2008, 2012 ngoài kế thừagiải pháp mã hóa của các phiên bản trước, nó áp dụng một công nghệ mới, đó làcông nghệ mã hóa dữ liệu trong suốt (Transparent Data Encryption - TDE) TDEcho phép thực hiện mã hóa toàn bộ file cơ sở dữ liệu một cách trong suốt, có nghĩa

là ứng dụng người dùng không phải sửa đổi TDE chỉ có trong các phiên bản SQLServer sau:

 SQL Server 2012 Enterprise, Developer, Evaluation

 SQL Server 2008 R2 Datacenter, Enterprise, Developer, Evaluation

 SQL Server 2008 Enterprise, Developer, Evaluation

2.1 Kiến trúc phân cấp khóa trong SQL Server 2012

Trong quá trình tính toán, mã hóa bao gồm việc biến đổi đổi dữ liệu từ dạng rõ và

dễ đọc (được gọi là dạng rõ) thành một giá trị nhị phân phức tạp (được gọi là cácbản mã), bằng một thuật toán mã hóa Hàm mã hóa sử dụng một khóa để mã hóa

dữ liệu, đó là thông tin xác định kết quả bản mã Khóa mã đảm bảo rằng các kếtquả của việc mã hóa sẽ không chỉ phụ thuộc vào các thuật toán mã hóa Trong thực

Trang 17

tế khóa là yếu tố quan trọng của mã hóa Chất lượng của khóa đảm bảo rằng rấtkhó để giải mã dữ liệu mà không có khóa, nhưng không giữ bí mật thuật toán vàrất nhiều thuật toán có mã nguồn mở Nếu như việc mã hóa chỉ dựa vào thuật toán,

nó có thể dễ dàng dịch ngược mã lệnh và crack nó

Vì vậy , ngay cả khi sức mạnh của thuật toán mã hóa phụ thuộc vào chất lượng và

độ phức tạp của thuật toán, thì yếu tố bí mật thực sự là khóa Một khóa được ngườidùng mật mã tạo ra phải có đủ độ dài để ngăn chặn việc tìm kiếm tất cả các khảnăng có thể của các ký tự Thông thường, độ dài khóa ngày nay là giữa 128 và

2048 bit Vì vậy , khóa càng dài , mã hóa càng mạnh, nhưng đây không phải là tiêuchí duy nhất , bởi vì mã hóa mạnh hơn đòi hỏi cần nhiều tài nguyên hơn Đặc biệt

là trong các hệ thống cơ sở dữ liệu, hiệu suất của mã hóa và giải mã cần được xemxét Trong SQL Server chia ra làm nhiều loại khóa nhằm đáp ứng nhu cầu linhđộng trong việc quản lý và an toàn các khóa mã, cũng nhu đảm bảo hiệu năng truyxuất dữ liệu của toàn hệ thống như:

 Service Master Key - SMK

 Database Master Key DMK

Trang 18

Chứng chỉ (Certificate)

Khóa công khai

(Public Key)

Khóa công khai

(Public Key)

Khóa chủ (Master Key)

Khóa chủ (Master Key)

Mật khẩu (Password)

Mật khẩu (Password)

Service Key

DP API

Khóa (Key)

Khóa (Key)

Khóa bí mật (Private Key)

Khóa bí mật (Private Key)

Khóa (Key)

Được bảo vệ bởi

Được bảo vệ bởi

Gắn kết với Chứa

Được bảo vệ bởi

Được bảo vệ bởi

Trang 19

2.2 Quá trình tạo và sử dụng khóa trong SQL Server 2012

2.2.1 Khóa chủ dịch vụ (Service Master Key – SMK)

SQL Server cho phép tạo và lưu trữ các khóa mã trong một cơ sở dữ liệu Bí mật là

ở trong khóa, và điều quan trọng là bảo vệ các khóa này Cách tốt nhất để làm điều

đó là mã hóa các khóa đó sử dụng khóa khác Trong SQL Server, khóa này đượcgọi là khóa chủ (master key) Mỗi cơ sở dữ liệu sử hữu một khóa chủ, và các khóachủ cơ sở dữ liệu được mã hóa bằng một khóa chủ mức server Các khóa chủ cơ sở

dữ liệu được sử dụng để mã hóa một số thông tin nhạy cảm khác, chẳng hạn nhưmật khẩu chúng ta nhập vào trong các tùy chọn kết nối máy chủ liên kết

Trước khi một khóa có thể được sử dụng trong SQL Server, nó phải được mở ra.Điều này có nghĩa rằng khóa này được đọc từ một bảng hệ thống và giải mã Saukhi sử dụng, khóa này được đóng lại bằng cách sử dụng lệnh CLOSE hoặc khi kếtnối được đóng lại

SMK được bảo vệ bởi Windows Data Protect API (DPAPI), sử dụng thuật toánAES (Advanced Encryption Standard) và cả các bằng chứng (credentials) tài khoảnmáy và tài khoản dịch vụ SMK được dùng để bảo vệ các khóa DMK (DatabaseMaster Key )

Trang 20

Khóa SMK là gốc của hệ thống phân cấp mã hóa và được tạo tự động lần đầu khiSQL Server sử dụng để mã hóa khóa khác.

Điều quan trọng là việc sao lưu khóa SMK này, sử dụng lệnh

BACKUP SERVICE MASTER KEY TO FILE = ‘e:\encryption_keys\smk.key’ ENCRYPTION BY PASSWORD = ‘a strong password’ ;

Để khôi phục lại khóa SMK, chúng ta sử dụng lệnh sau:

RESTORE SERVICE MASTER KEY FROM FILE = ‘e:\encryption_keys\smk.key’ DECRYPTION BY PASSWORD = ‘a strong password’ FORCE ;

Chúng ta có thể quyết định tạo lại khóa SMK như là một phần trong chính sách antoàn Nó sẽ thực hiện giải mã và mã hóa lại các khóa mà được bảo vệ bởi SMK Sửdụng lệnh sau để tạo lại khóa SMK

ALTER SERVICE MASTER KEY REGENERATE;

2.2.2 Khóa chủ cơ sở dữ liệu (Database Master Key - DMK)

Khóa DMK phải được tạo bên trong một cơ sở dữ liệu Chúng ta phải cung cấpmột mật khẩu mà đáp ứng các yêu cầu chính sách mật khẩu Windows của máy tínhđang chạy SQL Server Hai bản sao của khóa DMK được giữ lại: một bản sao được

Trang 21

lưu trong cơ sở dữ liệu đó, và bản sao còn lại lưu trong cơ sở dữ liệu master KhóaDMK được bảo vệ bởi khóa SMK Điều này cho phép khóa DMK được mở tựđộng Đây là tiện dụng, bởi vì chúng ta không cần mở khóa trong mã lệnh, nhưng

nó cũng có nghĩa là bất kỳ người sử dụng cơ sở dữ liệu có thể sử dụng khóa này

Để tạo khóa DMK, thực hiện lệnh sau:

USE marketing ;

CREATE MASTER KEY

ENCRYPTION BY PASSWORD = ‘a very strong password’ ;

Chúng ta có thể xem cơ sở dữ liệu của mình có khóa DMK được mã hóa bởi SMKbằng cách thực hiện truy vấn sau:

SELECT name, is_master_key_encrypted_by_server

Khóa DMK là một khóa đối xứng và nó luôn nhận ID là 101 trong cơ sở dữ liệu

Nó luôn có tên là ###MS_DatabaseMasterKey###

Điều cần thiết là chúng ta cần sao lưu các khóa mã này, sử dụng lệnh

OPEN MASTER KEY

DECRYPTION BY PASSWORD = ‘a very strong password’ ;

Trang 22

ENCRYPTION BY PASSWORD = ‘new strong password’

CLOSE MASTER KEY ;

Để khôi phục khóa DMK từ file, chúng ta thực hiện lệnh sau:

RESTORE MASTER KEY FROM FILE = ‘e:\encryption_keys\dmk.key’’

DECRYPTION BY PASSWORD = ‘new strong password’

ENCRYPTION BY PASSWORD = ‘a very strong password’

Để tạo một bản sao của DMK được bảo vệ bằng SMK, và lưu nó trong cơ sở dữliệu hiện hành và cơ sở dữ liệu master, thực hiện lệnh

ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY ;

Chúng ta có thể muốn hạn chế truy cập chỉ để những người dùng cung cấp mậtkhẩu Để làm điều đó, loại bỏ việc bảo vệ SMK, như thể hiện trong ví dụ sau đây

Để loại bỏ việc bảo vệ DMK bởi SMK, thực hiện lệnh sau:

ALTER MASTER KEY

DROP ENCRYPTION BY SERVICE MASTER KEY;

Để xóa bỏ khóa DMK, thực hiện lệnh sau:

DROP MASTER KEY ;

2.2.3 Tạo và sử dụng khóa mã đối xứng

Để mã hóa dữ liệu trong cột, đầu tiên chúng ta cần phải tạo các khóa mã SQLServer cho phép chúng ta định nghĩa 2 kiểu khóa:

 Khóa đối xứng: Cùng một khóa được sử dụng để mã hóa và giải mã

 Khóa phi đối xứng: Một cặp khóa được sử dụng Một khóa công khai (publickey) được dùng để mã hóa và một khóa bí riêng (private key) dùng để giải mã

Trang 23

Mã hóa đối xứng là nhanh hơn mã hóa phi đối xứng, nhưng độ an toàn kém hơn Thuật toán mã hóa có thể sử dụng các khóa đối xứng đó là DES, TRIPLE_DES,TRIPLE_DES_3KEY, RC2, RC4, RC4_128, DESX, AES_128, AES_192,AES_256.

Một lần nữa, sự bí mật của mã hóa nằm ở khóa Khóa này cần được bảo vệ để ngănchặn truy cập không mong muốn Để bảo vệ khóa, chúng ta mã hóa nó với mộtkhóa khác hoặc với một mật khẩu mạnh Một khóa có thể được bảo vệ bởi một sốthao tác mã hóa Ví dụ, chúng ta có thể mã hóa một khóa đối xứng bởi một mậtkhẩu và một khóa phi đối xứng Sau đó để mở nó, chúng ta cần phải cung cấp chỉmột trong số chúng Điều này có ích khi chúng ta cung cấp các phương pháp đểgiải mã một số dữ liệu cho người sử dụng khác nhau bằng cách sử dụng cùng khóa,nhưng với mật khẩu cá nhân Nếu một người sử dụng sẽ cần bị từ chối truy cậptrong tương lai, chúng ta chỉ phải gỡ bỏ mật khẩu từ khóa đó, như thể hiện trongđoạn mã sau:

CREATE SYMMETRIC KEY UserSKey

WITH ALGORITHM = AES_256

ENCRYPTION BY PASSWORD = 'Password for Fred',

PASSWORD = 'Password for Mary' ;

OPEN SYMMETRIC KEY UserSKey

DECRYPTION BY PASSWORD = 'Password for Fred' ;

ALTER SYMMETRIC KEY UserSKey

DROP ENCRYPTION BY PASSWORD = 'Password for Fred' ;

CLOSE SYMMETRIC KEY UserSKey ;

Trang 24

Đoạn mã trên tạo khóa đối xứng UserSKey với 2 mật khẩu Mary và Fred sẽ có thể

mở được khóa này bằng cách sử dụng mật khẩu được cung cấp Để ngăn chặn Fred

mở khóa, một người quản trị (là người biết được mật khẩu của Fred và có quyềnALTER trên khóa) có thể mở khóa và sử dụng lệnh ALTER SYMMETRIC KEY

để loại bỏ mật khẩu

View sys.openkeys cho chúng ta biết các khóa được mở cho phiên hiện tại Khóađược lưu trong cơ sở dữ liệu mà nó được tạo ra Để mở và sử dụng khóa, chúng taphải ở trong ngữ cảnh cơ sở dữ liệu đó Nếu chúng ta cố gắng để mở một khóatrong ngữ cảnh cơ sở dữ liệu sai, thì chúng ta sẽ nhận được một thông báo lỗi

‘object not found’ Nếu chúng ta mở thành công một khóa, sau đó thay đổi ngữ

cảnh cơ sở dữ liệu và cố gắng mã hóa một cái gì đó thì sẽ nhận được kết quảNULL Trong mã hóa đối xứng, việc mã hóa và giải mã sử dụng cùng một khóa,đôi khi chúng ta có thể muốn gửi khóa này đến máy chủ khác để trao đổi các thôngtin được mã hóa Không có cách nào để sao lưu hoặc trích xuất một khóa đối xứngtạo ra trong SQL Server vào một tập tin, nhưng chúng ta có thể tạo lại khóa nàytrên một máy chủ khác Để thực hiện điều này chúng ta cung cấp tùy chọnKEY_SOURCE và IDENTITY_VALUE khi chúng ta tạo khóa như sau:

CREATE SYMMETRIC KEY SKeyToShare WITH

ALGORITHM = AES_256,

KEY_SOURCE = 'a complex passphrase #1',

IDENTITY_VALUE = 'a complex passphrase #2'

ENCRYPTION BY PASSWORD = 'a complex passphrase #3';

Hai khóa đối xứng tạo ra với cùng KEY_SOURCE và IDENTITY_VALUE làgiống hệt nhau, và chúng có thể được sử dụng thay thế cho nhau Ở đây, chúng tabảo vệ các khóa bằng mật khẩu, nhưng chúng ta cũng có thể bảo vệ chúng với mộtkhoá phi đối xứng hoặc chứng chỉ

Trang 25

Khi chúng ta mở khóa bằng lệnh OPEN SYMMETRIC KEY, khóa này sẽ đượcduy trì đến khi chúng ta đóng nó hoặc phiên này kết thúc

Nếu chúng ta muốn mở một khóa cho một phiên hoặc tất cả các phiên, mà khôngcần đặt bất kỳ lệnh nào trong mã lệnh của mã khách hàng thì chúng ta thực hiện lệnh OPEN SYMMETRIC KEY trong sự kiện kích hoạt đăng nhập Chúng ta cóthể chèn lệnh OPEN SYMMETRIC KEY trong thủ tục lưu trữ với ngữ cảnh thựchiện là OWNER hoặc SELF để ẩn mật khẩu từ người dùng Khóa sẽ được mở ratrong thủ tục và sẽ duy trì cho đến khi phiên kết thúc Tất nhiên, việc thực hành antoàn tốt nhất là không giữ việc mở khóa trong thời gian dài hơn mức cần thiết, vàchèn lệnh OPEN SYMMETRIC KEY trong khối xử lý lỗi try/catch để đảm bảorằng các khóa đã được đóng ngay cả trường hợp có lỗi xảy ra, như trong ví dụ sau:

BEGIN TRY

OPEN SYMMETRIC KEY UserSKey

DECRYPTION BY PASSWORD = 'I am for Fred';

/* Thực hiện các công việc tại đây */

2.2.4 Tạo và sử dụng các khóa phi đối xứng

Một khóa bất đối xứng là một cặp khóa: một khóa công khai mà chỉ có thể mã hóa

Trang 26

công khai tướng ứng Để có các khóa bất đối xứng được mã hóa bằng các khóaDMK, trước hết chúng ta phải tạo các khóa DMK Nếu cơ sở dữ liệu không cókhóa DMK, chúng ta vẫn có thể tạo khóa bất đối xứng, nhưng sẽ được bảo vệ bằngmật khẩu.

Để tạo một khóa bất đối xứng, chúng ta thực hiện các bước sau:

 Tạo khóa bất đối xứng một cách đơn giản nhất, thực hiện lệnh:

CREATE ASYMMETRIC KEY EmployeeSalaryASKey

WITH ALGORITHM = RSA_2048;

Lưu ý rằng, lệnh ở trên chúng ta không cung cấp mật khẩu Nếu chúng ta tạomột khóa bất đối xứng mà không cung cấp mật khẩu thì khóa riêng sẽ được mãhóa bằng khóa DMK

 Để thấy những khóa đang tồn tại trong cơ sở dữ liệu hiện tại, chúng ta có thếxem view sys.asymmetric_keys, như sau:

SELECT * FROM sys.asymmetric_keys;

Thuật toán mật mã được sử dụng cho khóa bất đối xứng là RSA (được đặt theo têncủa 3 người tạo ra thuật toán: Ron Rivest, Adi Shamir, Leonard Adleman) Độ dàikhóa ở đây chọn là 2028 bit

Microsoft khuyến cáo sử dụng khóa đối xứng để mã hóa dữ liệu, bởi vì lý do chính

là mã hóa và giải mã khóa bất đối xứng cần nhiều tài nguyên hơn Cách sử dụngthông thường là sử dụng mã hóa đối xứng để mã hóa dữ liệu, và khóa đối xứng nàyđược bảo vệ bởi khóa mã bất đối xứng Theo cách này thì hiệu năng thực hiệnkhông giảm đáng kể vì việc giải mã khóa bất đối xứng chỉ xảy ra một lần khi giải

mã để lấy khóa phi đối xứng Đoạn mã sau chỉ ra cách sử dụng khóa bất đối xứng

để bảo vệ khóa đối xứng

USE HumanResources;

CREATE ASYMMETRIC KEY HumanResourceASKey

Ngày đăng: 03/11/2015, 13:03

HÌNH ẢNH LIÊN QUAN

Bước 4: Hình sau hiển thị các thông tin vừa nhập vào trong bảng cá nhân. Thông - nghiên cứu, tìm hiểu một số vấn đề liên quan đến việc bảo đảm an toàn trong SQL server 2012
c 4: Hình sau hiển thị các thông tin vừa nhập vào trong bảng cá nhân. Thông (Trang 42)
Bảng canhan trong cơ sở dữ liệu HSCB - nghiên cứu, tìm hiểu một số vấn đề liên quan đến việc bảo đảm an toàn trong SQL server 2012
Bảng canhan trong cơ sở dữ liệu HSCB (Trang 45)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w