Chương 2 MỘT SỐ NHIỆM VỤ VÀ PHƢƠNG PHÁP BẢO VỆ DỮ LIỆU
2.3. XÁC THỰC DỮ LIỆU [6]
2.3.1. Xác thực dữ liệu bằng chữ ký số.
Để chứng thực nguồn gốc hay hiệu lực của một tài liệu (ví dụ: đơn xin học, giấy báo nhập học, ...), lâu nay ngƣời ta dùng chữ ký “tay”, ghi vào phía dƣới của mỗi tài liệu. Nhƣ vậy ngƣời ký phải trực tiếp “ký tay” vào tài liệu.
Ngày nay các tài liệu đƣợc số hóa, ngƣời ta cũng có nhu cầu chứng thực nguồn gốc hay hiệu lực của các tài liệu này. Rõ ràng không thể “ký tay” vào tài liệu, vì chúng không đƣợc in ấn trên giấy. Tài liệu “số” (hay tài liệu “điện tử”) là một xâu các bit (0 hay 1), xâu bít có thể rất dài (nếu in trên giấy có thể hàng nghìn trang). “Chữ ký” để chứng thực một xâu bít tài liệu cũng không thể là một xâu bit nhỏ đặt phía dƣới xâu bit tài liệu. Một “chữ ký” nhƣ vậy chắc chắn sẽ bị kẻ gian sao chép để đặt dƣới một tài liệu khác bất hợp pháp.
Những năm 80 của thế kỷ 20, các nhà khoa học đã phát minh ra “chữ ký số” để chứng thực một “tài liệu số”. Đó chính là “bản mã” của xâu bít tài liệu. Ngƣời ta tạo ra “chữ ký số” (chữ ký điện tử) trên “tài liệu số” giống nhƣ tạo ra “bản mã” của tài liệu với “khóa lập mã”.
Nhƣ vậy “ký số” trên “tài liệu số” là “ký” trên từng bit tài liệu. Kẻ gian khó thể giả mạo “chữ ký số” nếu nó không biết “khóa lập mã”. Để kiểm tra một “chữ ký số”
thuộc về một “tài liệu số”, ngƣời ta giải mã “chữ ký số” bằng “khóa giải mã”, và so sánh với tài liệu gốc.
Ngoài ý nghĩa để chứng thực nguồn gốc hay hiệu lực của các tài liệu số hóa. Mặt mạnh của “chữ ký số” hơn “chữ ký tay” là ở chỗ ngƣời ta có thể “ký” vào tài liệu từ rất xa trên mạng công khai. Hơn thế nữa, có thể “ký” bằng các thiết bị cầm tay (ví dụ: điện thoại di động) tại khắp mọi nơi miễn là kết nối đƣợc vào mạng, điểu đó sẽ giúp giảm thời gian, sức lực, chi phí hơn nhiều so với sử dụng chữ ký truyền thống.
“Ký số” thực hiện trên từng bit tài liệu, nên độ dài của “chữ ký số” ít nhất cũng bằng độ dài của tài liệu. Do đó thay vì ký trên tài liệu dài, ngƣời ta thƣờng dùng “hàm băm” để tạo “đại diện” cho tài liệu, sau đó mới “Ký số” lên “đại diện” này.
2.3.2. Một số phƣơng pháp ký số.
Sơ đồ chữ ký là bộ năm (P, A, K, S, V), trong đó: P là tập hữu hạn các văn bản có thể.
A là tập hữu hạn các chữ ký có thể. K là tập hữu hạn các khoá có thể. S là tập các thuật toán ký.
Với khóa k K, có thuật toán ký Sig k S, Sig k: P A và thuật toán kiểm tra chữ ký Ver k V, Ver k: P Ađúng, sai, thoả mãn điều kiện với x P, y A.
Ver k (x, y) = Đúng, nếu y = Sig k (x) Ver k (x, y) = Sai, nếu y Sig k (x)
Chú ý: Ngƣời ta thƣờng dùng hệ mật mã khóa công khai để lập “Sơ đồ chữ ký
số”. Ở đây khóa bí mật a dùng làm khóa “ký”, khóa công khai b dùng làm khóa kiểm tra “chữ ký”. Ngƣợc lại với việc mã hóa, dùng khóa công khai b để lập mã, dùng khóa bí mật a để giải mã. Điều này là hoàn toàn tự nhiên, vì “ký” cần giữ bí mật nên phải dùng khóa bí mật a để “ký”. Còn “chữ ký” là công khai cho mọi ngƣời biết, nên họ dùng khóa công khai b để kiểm tra.
Một số phƣơng pháp ký số thƣờng đƣợc nhắc đến là: chữ ký ElGamal, chữ ký DSS, chữ ký Rabin, chữ ký Schnorr, chữ ký RSA.
2.3.3. Sơ đồ chữ ký số RSA.
2.3.3.1 Sơ đồ (Đề xuất năm 1978)
*Tạo cặp khóa (bí mật, công khai) (a, b):
Chọn bí mật số nguyên tố lớn p, q, tính n = p * q, công khai n, đặt P = C = Zn Tính bí mật (n) = (p-1).(q-1). Chọn khóa công khai b < (n), nguyên tố với (n). Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b 1 (mod (n)). Tập cặp khóa (bí mật, công khai) K = (a, b)/ a, b Zn, a*b 1 (mod (n)). * Ký số: Chữ ký trên x P là y = Sig k (x) = x a (mod n), y A. (R1)
* Kiểm tra chữ ký: Verk (x, y) = đúng x y b (mod n) (R2)
Chú ý
- So sánh giữa sơ đồ chữ ký RSA và sơ đồ mã hóa RSA ta thấy có sự tƣơng ứng. - Việc ký chẳng qua là mã hoá, việc kiểm thử lại chính là việc giải mã: Việc “ký số” vào x tƣơng ứng với việc “mã hoá” tài liệu x. Kiểm thử chữ ký chính là việc giải mã “chữ ký”, để kiểm tra xem tài liệu đã giải mã có đúng là tài liệu trƣớc khi ký không. Thuật toán và khóa kiểm thử “chữ ký” là công khai, ai cũng có thể kiểm thử chữ ký đƣợc.
Ví dụ Chữ ký trên x = 2
*Tạo cặp khóa (bí mật, công khai) (a, b):
Chọn bí mật số nguyên tố p=3, q=5, tính n = p * q = 3*5 = 15, công khai n. Đặt P = C = Zn. Tính bí mật (n) = (p-1).(q-1) = 2 * 4 = 8.
Chọn khóa công khai b = 3 < (n), nguyên tố với (n) = 8.
Khóa bí mật a = 3, là phần tử nghịch đảo của b theo mod (n): a*b 1 (mod (n)). * Ký số: Chữ ký trên x = 2 P là y = Sig k(x) = x a(mod n)= 23(mod 15) = 8, y A. * Kiểm tra chữ ký: Verk(x,y) = đúng x yb (mod n) hay 2 8 b(mod 15).
2.3.3.2 Độ an toàn của chữ ký RSA
Ví dụ 1. Ngƣời gửi G gửi tài liệu x cùng chữ ký y đến ngƣời nhận N, có 2 cách xử lý nhƣ sau:
a). Ký trước, mã hóa sau:
G ký trƣớc vào x bằng chữ ký y = SigG (x), sau đó mã hoá x và y nhận đƣợc z = eG (x, y).
G gửi z cho N. Nhận đƣợc z, N giải mã z để đƣợc x, y. Tiếp theo kiểm tra chữ ký VerN (x, y) = true ?
b). Mã hóa trước, ký sau:
G mã hoá trƣớc x bằng u = eG (x), sau đó ký vào u bằng chữ ký v = SigG (u). G gửi (u, v) cho N. Nhận đƣợc (u, v), N giải mã u đƣợc x. Tiếp theo kiểm tra chữ ký VerN (u, v) = true ?
Ví dụ 1. Giả sử H lấy trộm đƣợc thông tin trên đƣờng truyền từ G đến N. Trong trƣờng hợp a, H lấy đƣợc z. Trong trƣờng hợp b, H lấy đƣợc (u, v). Để tấn công x, trong cả hai trƣờng hợp, H đều phải giải mã thông tin lấy đƣợc. Để tấn công vào chữ ký, thay bằng chữ ký (giả mạo), thì xảy ra điều gì?
- Trƣờng hợp a, để tấn công chữ ký y, H phải giải mã z, mới nhận đƣợc y.
- Trƣờng hợp b, để tấn công chữ ký v, H đã sẵn có v, H chỉ việc thay v bằng v‟. H thay chữ ký v trên u, bằng chữ ký của H là v‟ = SigH(u), gửi (u, v‟) đến N. Khi nhận đƣợc v‟, N kiểm thử thấy sai, gửi phản hồi lại G. G có thể chứng minh chữ ký đó là giả mạo. G gửi chữ ký đúng v cho N, nhƣng quá trình truyền tin sẽ bị chậm lại.
Nhƣ vậy trong trƣờng hợp b, H có thể giả mạo chữ ký mà không cần giải mã. Vì thế để an toàn thì chúng ta nên ký trƣớc, sau đó mã hoá cả chữ ký rồi mới gửi.
Chương 3. MỘT SỐ MÔ HÌNH AN NINH CSDL [7] 3.1. TỔNG QUAN VỀ MÔ HÌNH AN NINH CSDL
Mục tiêu của mô hình an ninh là để tạo ra các phần mềm độc lập ở mức cao, các mô hình khái niệm để bảo vệ các hệ thống thông tin. Mô hình an ninh cho phép mô tả chức năng, cấu trúc của một hệ thống an ninh cần có, cũng nhƣ cho phép những ngƣời phát triển đƣa ra những định nghĩa về bảo mật, những chính sách an ninh cần thiết cho hệ thống. Có rất nhiều mô hình an ninh đƣợc đƣa ra, ta có thể phân thành hai loại mô hình an ninh chính nhƣ sau:
- Mô hình tự quyết (discretionary): Access Matrix, Take-Grant, Action-Entity, Wood at al.
- Mô hình bắt buộc (mandatory): Bell-LaPadula, Biba, Dion, The Sea View, Jajodia & Sandhu, Smith & Winslelt, Lattice.
(1) Mô hình tự quyết (Dicretionary Access Control Models - DAC)
Mô hình này đảm bảo quyền truy cập của ngƣời sử dụng đến tài nguyên của hệ thống dựa trên định danh của ngƣời sử dụng và các luật an ninh thông tin của ngƣời sử dụng đối với các đối tƣợng trong hệ thống. Nếu ngƣời sử dụng có quyền thì có thể truy cập đến các đối tƣợng trong hệ thống, ngƣợc lại sẽ bị từ chối. Ngƣời sử dụng này có thể ủy quyền cho ngƣời sử dụng khác để truy cập đến tài nguyên của mình (ownership policy). Hầu hết các chuẩn chung trong việc quản trị là phân quyền sở hữu, việc phân quyền này có thể là tạo lập hoặc thu hồi quyền truy cập. Do đó, mô hình an ninh này rất mềm dẻo, có thể đáp ứng đƣợc các yêu cầu đảm bảo an ninh khác nhau.
(2) Mô hình bắt buộc (Mandatory Access Control Models - MAC)
Mô hình bắt buộc đƣợc dùng để bảo vệ và ngăn chặn các tiến trình máy tính, dữ liệu, và các thiết bị hệ thống khỏi sự lạm dụng. Kỹ thuật này có thể mở rộng và thay thế kỹ thuật điều khiển truy cập tự quyết đối với các phép truy cập và sử dụng hệ thống tập tin (file-system permissions) cùng những khái niệm về ngƣời dùng và nhóm ngƣời dùng.
Đặc trƣng quan trọng nhất của MAC bao hàm việc từ chối ngƣời dùng toàn quyền truy cập/sử dụng tài nguyên do chính họ kiến tạo. Chính sách an ninh của hệ thống (đƣợc quy định bởi nhà quản trị) hoàn toàn quyết định các quyền truy cập đƣợc công nhận, và một ngƣời dùng không thể tự hạn chế quyền truy cập vào các tài nguyên của họ hơn những gì mà nhà quản trị quy định. (Các hệ thống dùng điều khiển truy cập tự quyết cho phép ngƣời dùng toàn quyền quyết định quyền truy cập đƣợc công nhận cho các tài nguyên của họ, nghĩa là họ có thể cấp quyền truy cập cho những ngƣời dùng bất hợp pháp.)
Mô hình này dựa trên việc phân lớp chủ thể (subject) và đối tƣợng (object) trong hệ thống. Giữa các chủ thể và đối tƣợng có mối quan hệ với nhau (Relationship)
Đối tƣợng: là các thực thể lƣu giữ thông tin có tính bị động (passive), nhƣ: Data files, Records, Fields in Record, …
Chủ thể: là các thực thể chủ động (active) có thể truy cập đến các đối tƣợng, thƣờng là các tiến trình của các ngƣời dùng.
Chƣơng này sẽ tìm hiểu một số mô hình bảo mật tự quyết và bắt buộc đã đƣợc đề xuất để bảo vệ thông tin trong hệ CSDL.
Tên mô hình An ninh
HĐH An ninh CSDL An ninh tự quyết Access Matrix x x x Take – Grant x x x Action – Entity x x x Wood et al x x Bell – La Padula x x Biba x x Dion x Sea View x x Jajodia – Sandhu x Smith - Winslett x Lattice x
3.2. MÔ HÌNH MA TRẬN TRUY CẬP HARRISON–RUZZO–ULLMAN (HRU)
Mô hình ma trận truy cập đƣợc giới thiệu là mô hình áp dụng cho an ninh hệ điều hành, nhƣng nó cũng là mô hình có thể áp dụng cho bất kỳ hệ thống nào. Đối với hệ điều hành, mô hình này đƣợc Lampson phát triển đầu tiên vào năm 1971, đƣợc mở rộng bởi Graham và Denning (1972). Sau đó Harrison-Ruzzo-Ullman (1976) và nhóm đồng nghiệp của ông đề xuất một mô hình hƣớng đối tƣợng chuẩn, biểu thị các thuộc tính tin cậy trong hệ thống bảo mật. Năm 1972, một phiên bản của mô hình này cũng đƣợc Convay phát triển. Trong phần này chúng ta tìm hiểu mô hình HRU do Harrison cùng nhóm đồng nghiệp đề xuất và một vài phần mở rộng cần thiết cho mô hình.
Trong hệ thống máy tính, điều khiển truy cập chỉ một chủ thể (quá trình, máy tính, ngƣời dùng …) có thể thực thi một số phép toán (đọc, ghi, thực hiện, xóa, tìm kiếm …) trong một đối tƣợng (một bộ trong cơ sở dữ liệu, một bảng, một tệp tin, một dịch vụ, hay bất kỳ tài nguyên nào của hệ thống) tùy theo một chính sách.
Mô hình đƣợc gọi là ma trận truy cập theo trạng thái cấp quyền, nghĩa là các trạng thái cấp quyền của hệ thống đƣợc thể hiện dƣới một ma trận. Vì thế ma trận này cung cấp sự thể hiện trừu tƣợng các hệ thống bảo vệ.
Mô hình định nghĩa một tập các chủ thể S và một tập các đối tượng cần bảo vệ, một tập các kiểu truy cập T. Lƣu ý rằng các chủ thể cũng có thể chính là các đối tƣợng. Chủ thể, đối tƣợng, kiểu truy cập có thể khác nhau trong các hệ thống khác nhau hoặc trong các ngữ cảnh ứng dụng khác nhau. Ví dụ:
- Trong một hệ điều hành, các chủ thể là các tiến trình xử lý, các đối tƣợng là tài nguyên hệ thống (các tệp tin, các thƣ mục, chƣơng trình …), và các kiểu truy cập thƣờng là read, write, execute.
- Trong một hệ quản trị cơ sở dữ liệu, các chủ thể là ngƣời dùng, đối tƣợng là các khoản mục dữ liệu, và kiểu truy cập thƣờng là retrieve, update, insert, delete.
- Trong các hệ thống CSDL hƣớng đối tƣợng, các đối tƣợng là các lớp hoặc các đối tƣợng và kiểu truy cập là các phƣơng thức trong lớp.
3.2.1. Trạng thái cấp quyền (Authorization State)
Trạng thái cấp quyền đƣợc xác định trong một ma trận, trong đó các hàng của ma trận là các chủ thể (Subject), còn các cột là đối tƣợng (Object), giá trị của ma trận theo hàng và cột chính là các quyền của chủ thể đối với các đối tƣợng
Ví dụ:
Trạng thái cấp quyền có thể đƣợc biểu diễn bằng bộ Q= (S,O,A), trong đó:
S = Subjects, sử dụng tài nguyên của hệ thống (file, process, …);
O = Objects bao gồm thực thể bị động (là tài nguyên của hệ thống) và thực thể chủ động (S) (file, segment, DB, relations, record, …).
Nhƣ vậy S là tập con của O;
A = Access Matrix, hàng là các chủ thể trong S, cột là các đối tƣợng trong O,
A[s, o] thể hiện quyền truy cập của chủ thể s đối với đối tƣợng o.
Lƣu ý rằng hàng s của ma trận giống nhƣ “danh sách khả năng” của chủ thể s, trong khi cột o tƣơng tự nhƣ “danh sách truy cập” cho đối tƣợng o.
Bảng 3.2 Ma trận truy cập
Khi mô hình an ninh này đƣợc sử dụng trong hệ cơ sở dữ liệu, nó có thể đƣợc mở rộng, khi đó các trạng thái A[si, oj] có thể là các luật quyết định cho s đối với các đối tƣợng o, các điều kiện thoả mãn luật có thể là:
Phụ thuộc dữ liệu (Data-dependant): Xác định một ràng buộc đối với dữ liệu đƣợc truy cập. Ví dụ: s có quyền đƣợc đọc bảng lƣơng, nhƣng chỉ đọc đƣợc lƣơng của những ngƣời có lƣơng nhỏ hơn hoặc bằng 1000.
Phụ thuộc thời gian (Time-dependant): Tạo ràng buộc về thời gian khi thực hiện truy cập. Ví dụ: Chỉ cho s quyền đọc bảng dữ liệu về lƣơng trong khoảng thời gian từ 8.00am đến 5.00am.
Phụ thuộc vào ngữ cảnh (Context-dependant): Tạo ràng buộc khi có sự truy xuất dữ liệu đồng thời. Ví dụ: Cho s quyền đƣợc truy xuất đến tên và lƣơng của nhân viên, nhƣng không có kết nối giữa tên và lƣơng, tức không biết nhân viên có lƣơng là bao nhiêu.
Phụ thuộc lịch sử (History-dependant): Tạo ràng buộc đối với các truy xuất trƣớc đó. Ví dụ: s đƣợc ủy quyền để đọc lƣơng của nhân viên, nếu trƣớc đó s chƣa đọc đến tên nhân viên.
3.2.2. Các kiểu truy cập (Access Modes)
Các kiểu truy cập phụ thuộc vào kiểu của các đối tƣợng trong hệ thống và chức năng của hệ thống. Thông thƣờng, các kiểu truy cập là: read, write, append, execute
và own. Nếu A[s,o] có giá trị là own thì có nghĩa s có quyền cao nhất đối với o hay s có quyền quản trị o.
Trong một số phiên bản của mô hình, có chế độ điều khiển cho phép một tiến trình có thể sinh ra một tiến trình con. Ví dụ: P1 nắm giữ quyền điều khiển đối với P2 thì P2 thuộc quản lý của P1, khi đó P1 có thể cấp quyền, hay huỷ bỏ quyền đối với P2.
3.2.3. Các phép toán (Operations)
HRU định nghĩa 6 phép toán để mô tả sự thay đổi trạng thái hệ thống: thêm hoặc loại bỏ một chủ thể, thêm hoặc loại bỏ một đối tƣợng, thêm hoặc loại bỏ một quyền.
- enter r into A[si, oj]: Thêm quyền r cho si đối với oj
- destroyr from A[si, oj]: Bỏ quyền r của si đối với oj
- create subject si: Thêm một hàng (chủ thể) vào ma trận A - destroysubject si: Xoá một hàng (một chủ thể) trong ma trận A - create object oj: Thêm một cột (một đối tƣợng) vào ma trận A - destroyobject oj: Xoá một cột (một đối tƣợng) trong ma trận A
Việc áp dụng một phép toán đối với trạng thái Q=(S,O,A) sẽ tạo ra một chuyển đổi từ Q sang Q‟=(S‟,O‟,A‟). Trong đó Q‟ khác với Q ở giá trị của ít nhất là một trong