Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (814.64 KB, 132 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP HCM KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN HỆ THỐNG THƠNG TIN
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP HCM KHOA CÔNG NGHỆ THÔNG TIN
BỘ MƠN HỆ THỐNG THƠNG TIN
Khuất Thị Ngọc Bích -0112046 Lê Thị Trúc Lâm -0112101
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Chúng em xin chân thành cám ơn Khoa Công Nghệ Thông Tin, trường Đại Học Khoa Học Tự Nhiên, Đại học Quốc gia Tp. Hồ Chí Minh đã tạo điều kiện thuận lợi cho chúng em thực hiện đề tài luận văn tốt nghiệp này.
Chúng em xin nói lên lịng biết ơn sâu sắc đối với ThS. Phạm Thị Bạch Huệ. Xin chân thành cám ơn Cơ đã ln quan tâm, tận tình hướng dẫn em trong quá trình học tập, nghiên cứu và thực hiện đề tài.
Em xin chân thành cám ơn quý Thầy Cô trong Khoa Công Nghệ Thông Tin đã tận tình giảng dạy, trang bị cho em những kiến thức quý báu, đã truyền thụ cho em những kiến thức, kinh nghiệm, đã quan tâm dìu dắt và giúp đỡ em trong quá trình học tập cũng như trong lúc thực hiện đề tài này.
Chúng con luôn nhớ mãi cơng ơn của Ơng Bà, Cha Mẹ đã ln thương u, lo lắng, chăm sóc và ni dạy con thành người.
Cuối cùng chúng em xin gửi lời cám ơn đến các anh chị, các bạn đã quan tâm động viên và giúp đỡ chúng em trong quá trình thực hiện đề tài. Đặc biệt, chúng em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Đình Thúc, chị Trần Hồng Ngọc, chị Trương Thị Mỹ Trang đã động viên, giúp đỡ chúng em trong thời gian thực hiện đề tài.
Mặc dù đã cố gắng hoàn thành luận văn trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong nhận được sự tận tình chỉ bảo của q Thầy Cơ và các bạn.
Một lần nữa, chúng em xin chân thành cám ơn và mong luôn nhận được những tình cảm chân thành của tất cả mọi người.
Tp. Hồ Chí Minh, tháng 6 năm 2005 Khuất Thị Ngọc Bích – Lê Thị Trúc Lâm
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Chương 1. Giới thiệu ...12
1.1. Tổng quan bảo mật ...12
1.1.1. Nhận định về bảo mật...12
1.1.2. Các chiều hướng bảo mật thơng tin :...13
1.1.3. Bảo mật thơng tin ...15
1.2. Tình hình an toàn và bảo mật trên thế giới và ở Việt Nam ...17
1.2.1. Trên thế giới : nhu cầu đang gia tăng ...17
1.2.2. Ở Việt Nam...18
1.3. Xu hướng mã nguồn mở...19
1.3.1. Lợi ích của phần mềm mã nguồn mở (PMNM) ...19
1.3.2. Việt Nam...19
1.4. Mục tiêu của đề tài...20
Chương 2. Các cơ sở lý thuyết bảo mật ...21
2.1. Secret Key Cryptography(Hệ Mã hoá quy ước)...21
2.1.1. Giới thiệu ...21
2.1.2. Phân loại thuật toán ...22
2.1.3. Một vài thuật toán SKC được sử dụng ngày nay ...23
2.1.4. Đánh giá phương pháp mã hóa quy ước...23
2.2. Public Key Crytography (Mã hố cơng khai) ...24
2.2.1. Giới thiệu chung ...24
2.2.2. Đánh giá phương pháp mã hóa cơng khai ...24
2.3. Hash Function (hàm Băm)...26
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
2.3.2. Tính chất của hàm băm...27
2.3.3. Cấu trúc của hàm băm ...28
2.3.4. Giới thiệu một số hàm băm ...28
Chương 3. Hệ quản trị cơ sở dữ liệu MySQL ...30
3.1. Giới thiệu hệ quản trị cơ sở dữ liệu MySQL...30
3.2.2. Bảo mật trong môi trường mạng ...36
3.2.3. Các khái niệm cơ bản ...36
3.2.4. Bảo mật cơ sở dữ liệu ...44
Chương 4. Thuật toán bảo mật password trong MySQL ...60
4.1. Thuật toán SHA-1...60
4.1.1. Ý tưởng thuật toán BĂM SHA...60
4.1.2. Thuật toán SHA-1...66
4.1.3. Đánh giá ưu khuyết điểm...68
4.2. Các thuật toán đề xuất ...70
4.2.1. SHA-224, SHA-256, SHA-384 và SHA-512...70
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
4.2.2. Thuật toán Tiger ...75
4.2.3. Thuật toán Whirlpool...78
4.2.4. So sánh SHA-1, Tiger, Whirlpool ...87
Chương 5. Cài đặt thử nghiệm...89
5.1. Yêu cầu chức năng chương trình...89
5.2. Chương trình cài đặt ...89
5.2.1. Hướng dẫn cài đặt MySQL từ source code ...89
5.2.2. Hướng dẫn thực thi chương trình ...94
5.3. Gíới thiệu chương trình cài đặt...94
Phụ lục A Thuật tốn SHA ...112
A.1. Hằng số sử dụng trong SHA ...112
A.1.1 Hằng số của SHA-1...112
A.1.2 Hằng số của SHA-224 và SHA-256 ...112
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
A.1.3 Hằng số của SHA-384 và SHA-512 ...113
A.2 Giá trị khởi tạo trong SHA...115
A.3 Các thao tác tiền xử lý trong SHA ...115
A.4 Thuật tốn tính hàm BĂM trong SHA...116
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Bảng 1.1.2 Các chiều hướng bảo mật ...14
Bảng 2.2.2 : Kích thước khóa giữa mã hóa quy ước và mã hóa khóa cơng khai với cùng mức độ bảo mật. ...25
Bảng 3.1.6 Kích thước giới hạn của file hệ thống trong MySQL...34
Bảng 3.2.4.2.a Danh sách các cột của bảng user, host, db trong MySQL ...46
Bảng 3.2.4.2.b Bảng tables_priv, columns_priv trong MySQL ...48
Bảng 3.2.4.2.d Phạm vi các cột trong các bảng ...50
Bảng 3.2.4.2.e Các giá trị trong các cột phân quyền ...51
Bảng 3.2.4.3.a Danh sách các đặc quyền ...53
Bảng 3.2.4.3.b Danh sách các đặc quyền quản trị ...54
Bảng 4.2.1.1 Các tính chất của các thuật tốn băm an tồn...71
Bảnng 5.3.2.2 So sánh SHA-1, Tiger, Whirlpool ...88
Bảnng 5.3.2.2 Các hàm chính trong SHA-1, Tiger,Whirlpool ...103
Bảng B.1. Máy CPU Celeron 950MHz, SDRAM 128 MB, HDD 40GB, Processor 32bit ...104
Bảng B.2. Máy CPU PentiumIV 1,5 GHz, DDRAM 384MB, HDD 30 GB, Processor 32bit ...104
Bảng B.3. Máy CPU PentiumIV 2.26 GHz, DDRAM 225MB, HDD 40GB, Processor 32bit ...105
Bảng B.4. Máy CPU PentiumIV 2.4 GHz, DRAM 225 MB, HDD 40 GB, Processor 32bit ...105
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Hình 2.1.1 Secret Key Cryptography...21
Hình 2.2.1 Public Key Crytography...24
Hình 2.3.1 Hash Function ...26
Hình 3.2.4.4 Kiểm tra yêu cầu ...59
Hình 5.3.2 Chương trình Hash Function...102
Hình phác thảo chức năng nén của Tiger...127
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
• Chương 1 : Trình bày tổng quan về bảo mật dữ liệu, các chiều hướng bảo mật thông tin hiện tại, các yêu cầu trong bảo mật dữ liệu, tình hình nghiên cứu hiện nay trên thế giới và trong nước về lĩnh vực này, đồng thời nêu lên mục đích, nội dung và ý nghĩa của đề tài.
• Chương 2 : Trình bày tóm tắt một số phương pháp mã hoá hiện nay, phân loại cũng như đánh giá ưu khuyết điểm của từng phương pháp. Đặc biệt, trong chương này sẽ giới thiệu khá kĩ về hàm BĂM, tạo cơ sở tiền đề để ta nghiên cứu ở các chương sau.
• Chương 3 : Trình bày khái quát về hệ quản trị cơ sở dữ liệu MySQL. Trong chương này, cơ chế bảo mật của MySQL sẽ được trình bày cụ thể. Cơ chế bảo mật trong mơi trường mạng, trong cơ sở dữ liệu cũng như cách lưu trữ password, quá trình kiểm tra password, cơ chế phân quyền sẽ được trình bày trong chương này.
• Chương 4 : Trình bày về thuật tốn bảo mật password trong MySQL : ý tưởng, các bước của thuật toán, đánh giá ưu khuyết điểm. Đồng thời, chúng tơi sẽ đề xuất một số thuật tốn tốt hơn có thể hạn chế được khuyết điểm của thuật tốn hiện tại.
• Chương 5 : Giới thiệu sơ lược mã nguồn mở của MySQL, tìm hiểu các hàm mã hoá password, hàm lưu password trong CSDL. Đồng thời cài đặt thử nghiệm một số thuật toán mới và ứng dụng phát triển cơ chế bảo mật của HQTCSDL MySQL.
• Chương 6 : Kết luận và hướng phát triền của đề tài.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Nội dung của chương 1 trình bày tổng quan về xu hướng mã nguồn mở và chiều hướng bảo mật thông tin hiện tại, các yêu cầu trong bảo mật dữ liệu, tình hình nghiên cứu hiện nay trên thế giới và trong nước về lĩnh vực này, đồng thời nêu lên mục đích, nội dung và ý nghĩa của đề tài.
1.1.1.
Bảo mật thông tin ảnh hưởng rất lớn đến sự tồn tại và phát triển của doanh nghiệp hay tổ chức. Do đó việc bảo mật thơng tin bảo mật thơng tin có ý nghĩa hết sức quan trọng.
Ngày nay với sự phát triển không ngừng của công nghệ thông tin, dữ liệu của các doanh, nghiệp, tổ chức, các nhân không chỉ lưu trữ trên giấy tờ mà được tổ chức thành một cơ sở dữ liệu (csdl). Csdl sẽ được quản lý bằng một hệ quản trị cơ sở dữ liệu (hqtcsdl). Tùy thuộc vào độ lớn của csdl, tình hình tài chính, khả năng của mình mà mỗi cơng ty sẽ chọn lựa một hệ quản trị phù hợp.
Ngày nay, sự phát triển của internet giúp cho các giao dịch trên mạng ngày càng tăng, lượng thông tin trao đổi trên mạng cũng tăng tương ứng. Vì thế cơ hội cho các đối thủ, các “hacker” thâm nhập đánh cắp dữ liệu càng tăng.
Thông tin cần được bảo vệ khỏi các mối đe dọa như :
Việc mạo danh truy cập thông tin bất hợp pháp và sử dụng thơng tin cho các mục đích riêng của mình.
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Sự tấn công của các hacker vào các dữ liệu nhằm phá hoại dữ liệu để phục vụ cho các mục đích riêng như cạnh tranh không lành mạnh giữa các doanh nghiệp.
Các thơng tin nhạy cảm có thể bị lấy trộm.
Thông tin cần được bảo vệ ngay trong csdl, trên đường mạng để tránh bị đánh cắp, bị thay đổi.
Các nhận định sai lầm về “mất mát thông tin” :
Thông tin bị mất thường là do các hacker bên ngoài đột nhập vào và đánh cắp. Nhưng thực tế thì 80% dữ liệu bị mất là do những người bên trong hệ thống gây ra.
Chỉ cần mã hóa dữ liệu là đã đủ khả năng bảo mật dữ liệu. Thực chất mã hóa chỉ là một bước trong một cơ chế bảo mật mà thơi.
Do đó, ta cần phải có cơ chế bảo mật thích hợp cho hệ thống. Một cơ chế bảo mật thường gồm các vấn đề sau :
Mã hóa dữ liệu.
Cách thức trao đổi thông tin. Cách thức lưu trữ thông tin.
Các phương pháp chứng thực user.
Cách thức nhận biết quyền hợp pháp của user đối với thông tin dữ liệu.
1.1.2.
Thông tin thường được lưu tại các server và được tổ chức thành các file vật lý có cấu trúc và được quản trị bằng một hệ quản trị cơ sở dữ liệu thích hợp. Thông tin được truyền trên các đường mạng sẽ được bảo vệ theo các cơ chế riêng.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Dù ở trong hình thức nào thì thơng tin đều cần được bảo mật theo các chiều hướng sau:
<small>Vật lý User chưa được chứng thực thì khơng được phép truy cập vào máy ở mức vật lý. </small>
<small>Cá nhân Quản trị viên có trách nhiệm quản trị và bảo mật dữ liệu trong hệ thống. Do đó quản trị viên phải là người đáng tin cậy, có tư cách về đạo đức. </small>
<small>Thủ tục Các thủ tục dùng trong hệ thống phải dùng đúng các dữ liệu theo đúng chức năng của mình. </small>
<small>Ví dụ một người thực hiện công việc back up dữ liệu thì nhiệm vụ duy nhất của người đó là đảm bảo dữ liệu back up và running. Một người chịu trách nhiệm thực hiện tạo các báo cáo về bảng lương và bán hàng thì người đó chỉ có nhiệm vụ kiểm tra và xác nhận tính tồn vẹn của dữ liệu. </small>
<small>Vì thế cách quản lý khéo léo nhất là phân chia nhiệm vụ, vai trò cho từng user theo đúng phạm vi chức năng phận sự. Kỹ thuật Lưu trữ, truy cập, sử dụng và truyền dữ liệu phải được an </small>
<small>toàn bằng những kỹ thuật thi hành theo những chính sách phù hợp. </small>
Bảng 1.1.2 Các chiều hướng bảo mật
Vậy khi đưa ra một giải pháp nào, ta cần phải cân nhắc thật cẩn thận về vấn đề bảo mật. Tuy nhiên, có một số trường hợp mà vấn đề kỹ thuật không thể giải quyết được. Đó là các vấn đề về “bảo mật trong môi trường làm việc”. Ví dụ, một nhân viên rời khỏi bàn làm việc của mình trong một lát vì một lý do nào đó và một người khác lợi dụng để xâm nhập đánh cắp hoặc thay đổi dữ liệu.
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
1.1.3.
1.1.3.1. Bảo mật thông tin truyền trong môi trường mạng
Khi dữ liệu truyền trên đường mạng thơng tin có thể bị lấy mất bất cứ lúc nào. Nếu dữ liệu truyền đi mà khơng có phương pháp nào bảo mật thì kẻ xấu dễ dàng lấy được thơng tin và dùng nó vào những mục đích riêng của mình. Do đó cần phải có những phương pháp bảo mật dữ liệu trên mạng.
1.1.3.2. Bảo mật thông tin CSDL
a) Bảo mật CDSL gồm có các tiêu chuẩn sau : • Bí mật
Hệ thống chỉ cho phép mỗi user khi đăng nhập thành công chỉ được thực hiện các thao tác mà user đó có đủ các quyền để thực thi thao tác. • Tồn vẹn
Dữ liệu phải được bảo tồn, khơng bị xóa lỗi. • Sẵn sàng
Dữ liệu phải ln sẵn sàng để phục vụ không được chậm trễ.
Bảo mật csdl là chỉ ra ai là người được truy cập vào dữ liệu, user được thấy những dữ liệu nào của csdl, user có thể thực hiện các thao tác nào trên csdl, user có thể xem các dữ liệu nhạy cảm khi cần thiết hay không ? b) Bảo mật username và password
Dữ liệu trong csdl trên server luôn cần được bảo mật và chỉ có một số người có chức năng mới được phép truy cập và sử dụng. Để chứng thực một user thì phương pháp thường thấy nhất là dùng một định danh username và password. Tuy nhiên, username và password có thể bị đánh cắp bất cứ lúc nào.
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
c) Sự truy cập bất hợp pháp vào dữ liệu
Trong csdl thì khơng phải bất kỳ một user nào cũng có quyền truy cập và thực hiên các thao tác như nhau. Tùy theo mỗi chức vụ, công việc, phạm vi thực hiện của mỗi user mà họ có quyền và có thể thực hiện một số thao tác khác nhau trên csdl. Đó chính là việc phân quyền cho user.
Ủy quyền là công việc trao cho user, program hay process quyền được truy cập thực thể hoặc tập các thực thể. Các quyền này có thể là chỉ là read hay read/write.
Quyền hạn là sự cho phép truy cập mang tính thi hành, ví dụ như quyền được truy vấn trên table. Quyền hạn được cấp cho user theo quyết định của user cấp cao hơn (thường là quản trị viên Administrator). Quyền hạn được cấp cho user hợp lệ để kết nối csdl, thao tác trên csdl. Có 2 mảng quyền chính :
System Privileges
Đây là quyền cấp cao. Thường thì các quyền này chỉ được cấp cho quản trị viên và các người phát triển ứng dụng. Quyền này cho phép user được phép thao tác trên toàn bộ csdl và được phép cấp quyền cho các user khác.
Object Privileges
Đây là các quyền thao tác trên các đối tượng của csdl như database, table, row, column. Các quyền này bao gồm các thao tác INSERT, UPDATE, DELETE, SELECT, CREATE …
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
1.2.1.
Theo kết quả khảo sát do Viện An ninh Máy tính (CSI) phối hợp với Cục điều tra Liên bang Mỹ (FBI) thực hiện về chủ đề tội phạm và an ninh mạng, các vụ đánh cắp thông tin mật gây thiệt hại lớn nhất là 2,7 triệu USD mỗi vụ. Còn theo tờ Computer Economics, trong năm 2003 các loại sâu và virus máy tính đã gây thiệt hại 12,5 tỉ USD trên toàn cầu. Trong an ninh mạng, các doanh nghiệp vừa và nhỏ (SMB) dễ trở thành nạn nhân của các vụ tấn công nhất, bởi đối tượng này thiếu nguồn lực và đội ngũ chuyên gia công nghệ thông tin. Ngay tại nước Mỹ, theo số liệu thống kê, chỉ 35% các doanh nghiệp vừa và nhỏ là có sử dụng hệ thống tường lửa (firewalls).
Cũng giống như môi trường an ninh nói chung, mơi trường an ninh trên Internet đang ngày càng trở nên phức tạp. Vấn đề bảo mật hệ thống và song hành với nó là vấn đề lưu trữ thơng tin đang đóng vai trị ngày càng quan trọng. Theo nhóm nghiên cứu thị trường Meta Group:
Hiện tại chỉ có khoảng 3-4% ngân sách CNTT dành cho vấn đề bảo mật và an tồn thơng tin, nhưng theo dự báo đến năm 2006 tỷ lệ này sẽ tăng lên 8-10%.
Thị trường an ninh CNTT Châu á dự tính cũng sẽ đạt mức tăng trưởng 22% từ năm 2003 đến năm 2008, con số gấp gần 2 lần tỷ lệ tăng trưởng của thị trường dịch vụ CNTT nói chung.
Cịn theo số liệu từ hãng nghiên cứu thị trường IDC, thị trường an ninh, bảo mật Châu á-Thái Bình Dương (trừ Nhật Bản) cũng sẽ tăng trưởng
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
15% từ năm 2002 đến năm 2007 và sẽ đạt tổng giá trị 4,1 tỉ USD vào năm 2007
1.2.2.
Chưa bao giờ vấn đề bảo mật và an toàn dữ liệu lại được coi trọng như hiện nay, trong bối cảnh mạng máy tính phá bỏ mọi ngăn cách, “mọi lúc, mọi nơi” người ta đều có thể lấy được thông tin cần thiết. Thông tin đã trở thành một trong những nguồn tài nguyên quan trọng nhất với tổ chức, doanh nghiệp. Con người tập trung nhiều sức lực, trí tuệ để có thơng tin nhanh, chính xác. Ai có thơng tin, kẻ đó chiến thắng. Bởi vậy, thông tin đã trở thành mục tiêu săn đuổi của những ai muốn vượt lên, và đồng thời là cái mà ai cũng cố gắng giữ.
Với sự phát triển của CNTT, hầu như mọi thứ đều được “số hóa”, đặc biệt là thơng tin. Soạn thảo hợp đồng bằng Word, gửi thư qua e-mail, thanh tốn với ngân hàng bằng thẻ tín dụng ...; nói chung mọi người làm việc, giao dịch đều qua máy tính và mạng. Ta khơng thể làm khác đi bởi sẽ bị cô lập, sẽ luôn chậm hơn, mất khả năng cạnh tranh và cuối cùng sẽ thua cuộc.
Dù nằm trong máy tính hay két sắt thì dữ liệu của người dùng vẫn là mục tiêu nhắm tới của các đối thủ cạnh tranh. Trong trường hợp này, “tin tặc” là những tay đáng ngại nhất. Người dùng phải biết cách phòng chống.
Tại VN, vấn đề BM hệ thống thơng tin bắt đầu nóng dần lên và đang sẵn sàng cho nhu cầu BM từ quy mô nhỏ cho đến lớn.
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
1.3.1.
Đặc tính chia sẻ mã nguồn khiến PMNM có vai trị thực sự quan trọng trong lĩnh vực đào tạo và nghiên cứu. Những thư viện mã nguồn mở sẽ giúp sinh viên hiểu rõ và nhanh chóng nắm bắt được cơng nghệ, rút ngắn được thời gian đào tạo sinh viên CNTT.
Không chỉ trong lĩnh vực giáo dục, đào tạo hay nghiên cứu, điều đáng ngạc nhiên là PMNM cũng hứa hẹn những cơ hội kinh doanh không nhỏ đối với các doanh nghiệp, những người luôn đặt vấn đề lợi ích lên hàng đầu. Cơ hội kinh doanh mà PMNM mang lại không nhỏ hơn những cơ hội kinh doanh dựa trên nền tảng của Microsoft Windows.
1.3.2.
PMNM đã từng được ví như lối thốt hiểm của Việt Nam trước áp lực về bản quyền sở hữu trí tuệ trong quá trình hội nhập quốc tế. Khi nước nhà chuẩn bị gia nhập Tổ chức Thương mại Thế giới WTO, Khu vực Mậu dịch Tự do (AFTA) và thực hiện Hiệp định Thương mại Việt-Mỹ thì PMNM là đường thốt hiểm duy nhất để thốt khỏi tình trạng vi phạm bản quyền phần mềm ở Việt Nam
Hội thảo quốc gia lần thứ nhất về PMNM được tổ chức tháng 12/2000 có thể được xem như một cột mốc đánh dấu sự xuất hiện chính thức của PMNM tại Việt Nam. Hai năm sau đó, Hội thảo Quốc gia về PMNM lần thứ hai, tháng 12/2002, được coi là bước chuẩn bị và nâng cao nhận thức về PMNM. Chính tại Hội thảo này đã cho thấy PMNM đang là một xu hướng phát triển trên thế giới :
Các tổ chức quốc tế đều khuyến cáo sử dụng PMNM.
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Các nước Châu Á như Trung Quốc, Hàn Quốc, Nhật Bản đang phát triển rất mạnh PMNM. Malaysia gần đây đã đầu tư 30 triệu USD cho PMNM. Năm 2003 Nhật Bản cũng dành 10 triệu USD cho PMNM.
Vấn đề bảo mật hệ thống và song hành với nó là vấn đề lưu trữ thơng tin đang đóng vai trị ngày càng quan trọng. Đối với một tổ chức hay cá nhân khi lựa chọn một hệ quản trị CSDL, ngồi tiêu chí chọn hệ quản trị có quy mơ phù hợp với độ lớn của CSDL thì vấn đề bảo mật của hệ quản trị đó cũng rất được quan tâm.
Đề tài “Tìm hiểu và phát triển cơ chế bảo mật trên mã nguồn mở của MySQL” được thực hiện nhằm mục tiêu:
• Tìm hiểu các cơ sở lý thuyết về bảo mật, giới thiệu tóm tắt một số phương pháp mã hố
• Tìm hiểu cơ chế bảo mật của một hệ quản trị mã nguồn mở : MySQL. • Tìm hiểu, phân tích, đánh giá thuật tốn mã hố password trong MySQL • Trên cơ sở nghiên cứu một số giải thuật mới, có độ an tồn cao, xây dựng
một số cơ chế mã hố password mới của riêng mình trong MySQL.
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Nội dung của chương 2 sẽ trình bày tóm tắt một số phương pháp mã hố hiện nay, phân loại cũng như đánh giá ưu khuyết điểm của từng phương pháp. Đặc biệt, trong chương này sẽ giới thiệu khá kĩ về hàm BĂM, tạo cơ sở tiền đề để ta nghiên cứu ở các chương sau.
Thuật tốn mã hóa dữ liệu hiện nay phân loại theo số khoá được dùng để mã hoá và giải mã có 3 loại :
1. Secret Key Cryptography (SKC) : sử dụng một khố chung cho q trình mã hoá và giải mã.
2. Public Key Cryptography (PKC) : sử dụng một khoá cho phần mã hoá và một khoá khác để giải mã.
3. Hash Functions: sử dụng một phép biến đổi mã hóa thơng tin một chiều. Điều này có nghĩa là một khi thơng tin đã được mã hóa thì khơng thể có cách nào để lấy lại được thông tin ban đầu.
2.1.1.
Hình 2.1.1 Secret Key Cryptography
Các thụât toán mã hoá quy ước (hay mã khố bí mật hay hệ mã đối xứng) dùng một khố bí mật đơn để mã hố và giải mã dữ liệu. Dữ liệu nguồn x được người gởi A mã hoá bằng thuật toán mã hoá quy ước với khố bí mật k được thống nhất trước giữa người gởi A và người nhận B. Dữ liệu sau khi mã hoá y sẽ
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
được truyền cho người nhận B. Sau khi nhận, B sẽ sử dụng khố bí mật k để giải mã y để có được thơng điệp nguồn x ban đầu.
Nếu một người C có được khố bí mật k thì C sẽ có khả năng giải mã tất cả dữ liệu của A bằng khoá k rồi thay đổi dữ liệu và mã hóa lại bằng khóa k sau đó gởi cho B. Do đó vấn đề bảo mật thơng tin được mã hố phụ thuộc vào việc giữ bí mật nội dung mã khố k.
Mã hố khố bí mật cũng được gọi là mã hố khố đối xứng vì chỉ dùng một khố cho mã hoá lẫn giải mã. Thuật toán mã hoá này có tốc độ cực nhanh và thích hợp đối với việc mã hố khối lượng dữ liệu lớn.
2.1.2.
2.1.2.1. Mã hóa theo chuỗi bit
Trong hệ mã hố theo chuỗi bit, thơng điệp là các bit và khoá được phát sinh bởi một bộ phát sinh ngẫu nhiên. Bảng rõ mã hoá theo từng bước để được bản mã.
2.1.2.2. Mã hóa theo chữ
Các hệ mã ban đầu dựa trên cơ sở phép biến đổi một chữ cái trong bảng rõ thành một chữ cái khác trong bảng mã. Kỹ thuật mã hố này cịn được gọi là mã hoá thay thế. Để thực hiện phương pháp này, trước tiên cần định nghĩa 1 bảng mã (như bảng mã ASCII) để số hố bảng rõ, vì các phép toán sẽ làm việc trên các số thay vì các kí tự.
2.1.2.3. Mã hóa theo khối
Ta thấy, hệ mã hố theo chữ có độ an tồn khơng cao vì một chữ cái ln được mã hố thành 1 chữ cái khác trong bảng mã. Với khả năng của máy tính
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
hiện đại, khơng khó để có thể giải mã 1 bảng mã theo chữ như thế. Để tăng độ an tồn, ta có thể mã hoá theo khối. Trong mã hoá theo khối, bản rõ và bảng mã được chia thành từng khối kí tự trước khi thi hành mã hố và giải mã.
2.1.2.4. Mã mũ
Do Pohlig và Hellman giới thiệu năm 1976. Có thể được mơ tả như sau : Chọn p là 1 số nguyên tố, M là 1 số tương ứng của bản rõ với mỗi kí tự trong bảng rõ được thay thế bằng mã tương ứng như trong bảng.
00 01 02 03 04 05 06 07 08 09 10 11
2.1.3.
Những thuật toán SKC được sử dụng ngày nay : Data Encryption Standard (DES), Triple-DES (3DES), DESX, RC1,RC2, RC3, RC4, RC5, RC6, Blowfish, Twofish, Camellia, MISTY1, SAFER, KASUMI, SkipJack.
2.1.4.
Mặc dù hệ thống mã hoá quy ước cung cấp khá nhiều thuật tốn mã hố có độ bảo mật rất cao nhưng nó có các hạn chế sau :
Hạn chế về khả năng trao đổi khoá : do cả người nhận và người gởi đều cần phải biết khố nên phát sinh vấn đề an tồn khi truyền khoá. Nếu khoá bị đánh cắp trong q trình truyền khố thì thơng tin được mã hố bằng khố đó khơng cịn được bảo mật và an tồn. Ngồi ra với mã hố quy ước khơng đảm bảo nguồn gốc thông tin được gởi nên không biết kháo có bị mật cắp hay khơng.
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Hạn chế khả năng quản lý khoá : đối với từng người cần liên lạc và với từng nội dung thơng tin cần phải có một khố quy ước để mã hố và giải mã. Do đó nếu trên 1 mạng liên lạc lớn, số lượng khoá cần phải lưu giữ rất nhiều nên nảy sinh vấn đề quản lý khoá quy ước và bảo mật thiết bị khoá quy ước.
2.2.1.
Hình 2.2.1 Public Key Crytography
Người gởi A sử dụng khố cơng khai (hệ mã không đối xứng) pk của người nhận B để mã hoá dữ liệu gốc x. Dữ liệu sau khi được mã hoá, y được truyền cho B. Người nhận B sau khi nhận được y sẽ sử dụng khoá riêng sk của mình để giải mã dữ liệu và nhận lại dữ liệu nguồn x ban đầu.
Nếu 1 người C có được dữ liệu đã mã hố y và khố cơng khai pk thì C vẫn khơng thể giải mã được y. Do khố riêng sk được giữ bí mật hồn tồn, chỉ có Người B biết được sk và sk không được giao dịch hay truyền đi nên rủi ro dẫn đến việc khoá sk bị đánh cắp là rất thấp.
Giới thiệu một số thuật toán : EEC, RSA
2.2.2.
Hệ thống mã hóa khóa cơng khai ra đời đã giải quyết các hạn chế của mã hóa quy ước. Mã hóa khóa cơng khai sử dụng một cặp khóa, một khóa (thơng thường
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
là khóa riêng) dùng để mã hóa và một khóa (khóa riêng) dùng để giải mã. Mã hóa khóa cơng khai giúp tránh bị tấn cơng khi trao đổi khóa do khóa để giải mã (khóa riêng) khơng cần phải truyền hoặc chia sẻ với người khác. Ngoài ra, mỗi người chỉ cần sở hữu một cặp khóa cơng khai – khóa riêng và người gởi thơng tin chỉ cần giữ khóa cơng khai của người nhận do đó số lượng khóa cần phải quản lý giảm khá nhiều. Mỗi người chỉ cần lưu trữ bảo mật một khóa riêng của chính mình.
Tuy nhiên, do nhu cầu mã hóa và giải mã bằng hai khóa khác nhau trong cùng một cặp khóa nên để đảm bảo bảo mật, kích thước khóa cơng khai – khóa riêng lớn hơn rất nhiều so với khóa cơng khai. Do đó tốc độ mã hóa khóa cơng khai chậm hơn tốc độ mã hóa khóa quy ước. Tốc độ mã hóa bằng phần mềm của thuật tốn DES nhanh hơn khoảng 100 lần so với mã hóa RSA với cùng mức độ bảo mật.
<small>Kích thước khóa (tính bằng bit) </small>
<small>Khóa cơng khai 56 80 112 128 192 256 RSA/DSA 512 1K 2K 3K 7.5K 15K </small>
Bảng 2.2.2 : Kích thước khóa giữa mã hóa quy ước và mã hóa khóa cơng khai với cùng mức độ bảo mật.
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
2.3.1.
Hình 2.3.1 Hash Function
Hàm băm mật mã là hàm tốn học chuyển đổi một thơng điệp có độ dài bất kỳ thành một dãy bit có độ dài cố định (tùy thuộc vào thuật toán băm). Dãy bit này được gọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu.
Dễ dàng nhận thấy rằng hàm băm h không phải là một song ánh. Do đó, với thơng điệp x bất kỳ, tồn tại thông điệp x’ ≠ x sao cho h(x) = h(x’). Lúc này, ta nói rằng “có sự đụng độ xảy ra”.
Một hàm băm h được gọi là an tồn (hay “ít bị đụng độ”) khi khơng thể xác định được (bằng cách tính tốn) cặp thơng điệp x và x’ thỏa mãn x ≠ x’ và h(x) = h(x’). Trên thực tế, các thuật toán băm là hàm một chiều, do đó, rất khó để xây dựng lại thông điệp ban đầu từ thông điệp rút gọn.
Hàm băm giúp xác định được tính tồn vẹn dữ liệu của thông tin : mọi thay đổi, dù là rất nhỏ, trên thơng điệp cho trước, ví dụ như đổi giá trị 1 bit, đều làm thay đổi thông điệp rút gọn tương ứng. Tính chất này hữu ích trong việc phát sinh, kiểm tra chữ ký điện tử, các đoạn mã chứng nhận thơng điệp, phát sinh số ngẫu nhiên, tạo ra khóa cho q trình mã hóa…
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Hàm BĂM được dùng trong chữ ký điện tử. Một đặc tính cơ bản của hàm BĂM là việc tạo mã khóa thơng điệp rất dễ nhưng việc phá mã để chuyển ngược mã thông điệp thành bản rõ ban đầu rất khó nếu khơng muốn nói là khơng thể.
Nếu tìm ra được một phương pháp tấn cơng cho phép xác định được “tiền ảnh” tương ứng với một giá trị băm cho trước thì thuật tốn băm sẽ khơng cịn an tồn nữa.
Cách tấn công nhằm tạo ra một thông điệp khác với thông điệp ban đầu nhưng có cùng giá trị băm gọi là tấn công “tiền ảnh thứ hai” (second pre-image attack).
2.3.2.2. Tính an tồn của hàm băm đối với hiện tượng đụng độ
Hàm băm được xem là an toàn đối với hiện tượng đụng độ khi rất khó tìm được hai thơng điệp có cùng giá trị băm.
Nhận xét : Trong một tập hợp mà các phần tử mang một trong N giá trị cho trước với xác suất bằng nhau, chúng ta cần khoảng <small>N</small> phép thử ngẫu nhiên để tìm ra một cặp phần tử có cùng giá trị.
Như vậy, phương pháp hàm băm được xem là an tồn đối với hiện tượng
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
có cùng giá trị hàm băm với số lượng tính tốn ít hơn đáng kể so với ngưỡng 2<sup>n/2</sup>, với n là kích thước (tính bằng bit) của giá trị băm.
Phương pháp tấn cơng dựa vào đụng độ :
• Tìm ra 2 thơng điệp có nội dung khác nhau nhưng cùng giá trị băm
• Ký trên một thơng điệp, sau đó, người ký sẽ khơng thừa nhận đây là chữ ký của mình mà nói rằng mình đã ký trên một thông điệp khác.
Như vậy, cần phải chọn 2 thông điệp “đụng độ” với nhau trước khi ký.
2.3.3.
Hầu hết các hàm băm mật mã đều có cấu trúc giải thuật như sau :
• Cho trước một thơng điệp M có độ dài bất kỳ. Tùy theo thuật tốn được sử dụng, chúng ta có thể cần bổ sung một số bit vào thông điệp này để nhận được thơng điệp có độ dài là bội số của một hằng số cho trước. Chia nhỏ thông điệp thành từng khối có kích thước bằng nhau: M1, M2, …Ms
• Gọi H là trạng thái có kích thước n bit, f là “hàm nén” thực hiện thao tác trộn khối dữ liệu với trạng thái hiện hành
Khởi gán H0 bằng một vector khởi tạo nào đó Hi = f(Hi-1, Mi) với i = 1, 2, 3, …, s
Hs chính là thơng điệp rút gọn của thông điệp M ban đầu
2.3.4.
Hàm băm là nền tảng cho nhiều ứng dụng mã hóa. Có nhiều thuật tốn để thực hiện hàm băm, trong số đó, phương pháp SHA-1 và MD5 thường được sử dụng khá phổ biến từ thập niên 1990 đến nay.
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Ngày 26/08/2002, Viện Tiêu chuẩn và Công nghệ quốc gia của Hoa Kỳ (National Institute of Standard and Technology - NIST) đã đề xuất hệ thống chuẩn hàm băm an toàn (Secure Hash Standard) gồm 4 thuật toán hàm băm SHA-1, SHA-256, SHA-384, SHA-512. Đến 25/03/2004, NIST đã chấp nhận thêm thuật toán hàm băm SHA-224 vào hệ thống chuẩn hàm băm.
Tiger ra đời năm 1996 bởi Ross Anderson và Eli Biham.
Hàm BĂM Whirlpool do Paul S.L.M Barreto và Vincent Rijment đề xuất năm 2001 và được cơng nhận tính bảo mật tại hội thảo bảo mật NESSIE tại Lund, Thụy Điển vào ngày 26/02/2003, đạt chuẩn ISO ISO/IEC 10118-3.
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Trình bày khái quát về hệ quản trị cơ sở dữ liệu MySQL. Trong chương này, cơ chế bảo mật của MySQL sẽ được trình bày cụ thể. Cơ chế bảo mật trong môi trường mạng, trong cơ sở dữ liệu cũng như cách lưu trữ password, quá trình kiểm tra password, cơ chế phân quyền sẽ được trình bày trong chương này.
3.1.1.
MySQL là 1 hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở phổ biến nhất hiện nay. Nó được phát triển, phân chia, hỗ trợ bởi MySQL AB. Đây là một công ty thương mại, được thành lập bởi nhóm phát triển MySQL.
MySQL server nhanh, đáng ting cậy, dễ sử dụng. Sử dụng môi trường client/server độc lập hoặc nhúng vào các chương trình khác.
Số nhà phát triển dùng MySQL là rất lớn trên thế giới cho nên số các ứng dụng chạy trên MySQL là nhiều và cũng miễn phí.
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Có một sự phân biệt khác rất quan trọng để người ta chọn MySQL, đó là tốc độ. Mặc dù MySQL xử lý transaction khơng tốt như Oracle, nhưng về tốc độ, nó chạy nhanh hơn Oracle rất nhiều. Cộng thêm mã nguồn mở và miễn phí, nó là giải pháp database tốt nhất cho các website, ngoại trừ các website lớn cần xử lý các tác vụ đặc biệt.
3.1.2.
• Chương trình được viết bằng C và C++.
• Được kiểm tra bằng các trình biên dịch khác nhau. • Làm việc trên nhiều nền khác nhau.
• Sử dụng Automake, Autoconf, và libtool tạo tính năng động.
• Các hàm API cho có giá trị trên C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, và Tcl.
• Những tiến trình nhân (kernel thread) sử dụng đa tiến trình nên có thể sử dụng nhiều CPU nếu người dùng có.
• Hệ thống cấp phát bộ nhớ dựa trên tiến trình rất nhanh.
• Có những bảng BAM bộ nhớ trong (in_memory) được sử dụng như những bảng tạm.
• Những hàm SQL thực thi nhanh do sử dụng các thư viện.
• Server có giá trị như 1 chương trình độc lập trong mơi trường mạng client/server, cũng có giá trị như 1 thư viện có thể nhúng vào các chương trình ứng dụng độc lập.
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
DATETIME TIMESTAMP YEAR
SET ENUM
• Fixed-length và variable-length records
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
• Hỗ trợ các câu truy vấn SQL GROUP BY và ORDER BY. Ngồi ra cịn hỗ trợ các hàm gom nhóm (COUNT(), COUNT(DISTNCT …), AVG(), STD(), SUM(), MAX(), MIN(), GROUP_CONCAT()).
• Hỗ trợ cho LEFT OUTER JOIN và RIGHT OUTER JOIN theo cú pháp chuẩn của SQL và ODBC.
• Hỗ trợ việc ghi các alias cho table, column.
• DELETE, INSERT, REPLACE, UPDATE trả về số dịng ảnh hưởng. • Câu lệnh đặc biệt MySQL: SHOW có thể được sử dụng nhận thơng tin về
cơ sở dữ liệu, table, index. Câu lệnh EXPLAIN có thể được dùng chỉ định cách thức giải quyết thõa câu truy vấn.
• Tên các hàm khơng xung đột với tên các table và column.
• Người dùng có thể sửa chữa các table trong các database khác nhau trong cùng một câu truy vấn (như MySQL 3.22).
3.1.5.
Hệ thống đặc quyền và password rất linh hoạt, an toàn, cho phép xác nhận dựa trên máy chủ (host). Password được bảo mật vì tất cả các dịng di chuyển password được mã hố khi user kết nối vào server.
3.1.6.
• Handles của database lớn. MySQL server với các database có thể chứa đến 50 triệu record. Ta có thể biết được các user sử dụng MySQL Server với 60.000 tables và khoảng 5.000.000.000 dòng.
• Có thể tạo 64 indexes trong 1 table (32 indexes đối với các phiên bản trước 4.1.2). Mỗi index có thể gồm từ 1 đến 16 cột hay các phần của cột.
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Độ lớn tối thiểu của index là 1000 bytes (500 bytes đối với các phiên bản trước 4.1.2). Một index có thể sử dụng tiền tố (prefix) của cột có các kiểu dữ liệu CHAR, VARCHAR, BLOB, hay TEXT.
• Giới hạn các bảng trong MySQL
MySQL 3.22 có giới hạn của table là 4GB. Với kỹ thuật lưu trữ MySIAM trong MySQL 3.23, kích thước tối đa của table được tăng 2<sup>63</sup> byte.
<small>Operating System File-size Limit Linux 2.2-Intel 32-bit 2GB (LFS: 4GB) </small>
<small>Linux 2.4 (using ext3 filesystem) 4TB Solaris 9/10 16TB </small>
<small>NetWare w/NSS filesystem 8TB win32 w/ FAT/FAT32 2GB/4GB </small>
<small>win32 w/ NTFS 2TB (possibly larger) MacOS X w/ HFS+ 2TB </small>
Bảng 3.1.6 Kích thước giới hạn của file hệ thống trong MySQL
3.1.7.
• Clients có thể kết nối với MySQL server bằng cách sử dụng những socket TCP/IP trên bất kì nền nào. Trên nền windows dịng NT, client có thể kết nối sử dụng pipes. Trên nền Unix, clients kết nối sử dụng Unix domain socket files.
• Windows có hổ trợ kết nối chia sẻ bộ nhớ nếu khởi động với lựa chọn share-memory. Client có thể kết nối qua bộ nhớ chia sẻ bằng cách sử dụng lựa chọn --protocol=memory.
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
• Giao diện Connector/ODBC (MyODBC) cung cấp MySQL hỗ trợ các chương trình client sử dụng kết nối ODBC (Open Database Connectivity). • Giao diện Connector/J interface cung cấp MySQL hỗ trợ chương trình
client Java sử dụng kết nối JDBC.
3.1.8.
• Có thể sử dụng cấp thơng điệp lỗi cho client ở bất kì ngơn ngữ nào do có rất nhiều bộ kí tự.
• Dữ liệu được lưu trữ theo bộ kí tự đã chọn.
3.2.1.
Bảo mật cơ sở dữ liệu là một yếu tố cần thiết trong bất kì hệ thống cơ sở dữ liệu nào. Bảo mật là bảo vệ dữ liệu chống lại các crackers, đồng thời cũng bảo vệ dữ liệu từ người dùng. Ví dụ, người dùng có thể xố, sửa, xem hoặc thêm những record mà họ không được phép. Để tránh những tình trạng này, người dùng có thể tạo nên một cơ chế bảo mật trên cơ sở dữ liệu để ngăn chặn các thao tác mà user không được phép thao tác trên CSDL. Bảo mật đóng vai trị chính trong bất kì ứng dụng nào mà người dùng có thể truy cập vào ít nhất một lần. Cơ chế bảo mật của HQTCSDL MySQL rất tốt, là một trong các hệ quản trị cơ sở dữ liệu an toàn nhất hiện nay. Cơ chế bảo mật của HQTCSDL MySQL gồm hai lĩnh vực chính :
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
3.2.2.
Bắt đầu từ phiên bản 4.0.0, MySQL hỗ trợ cho các kết nối an toàn giữa các MySQL client và server dùng giao thức Secure Sockets Layer (SSL).
Cấu hình chuẩn của MySQL có khuynh hướng sao cho chạy nhanh nhất có thể, nhưng việc mã hóa các kết nối khơng thể dùng mặc định. Làm như thế có thể sẽ làm cho client/server chậm hơn. Mã hoá dữ liệu là thao tác CPU-intensive mà địi hỏi máy tính cần phải thực hiện thêm một số cơng việc và có thể làm trì hỗn các nhiệm vụ khác của MySQL. Đối với các ứng dụng mà đòi hỏi bảo mật được cung cấp bởi các kết nối mã hố, sự tính toán thêm vào là được cho phép.
3.2.3.
Để hiểu MySQL dùng SSL như thế nào, ta cần biết căn bản về các khái niệm SSL và X509. Mặc định, MySQL dùng các kết nối giải mã giữa client và server. Điều này có nghĩa là một người khi truy cập được vào mạng thì có thể biết được mọi hoạt động của người dùng và thấy được tất cả dữ liệu đang được nhận hay gởi đi. Thậm chí họ cũng có thể thay đổi dữ liệu trong khi nó được chuyển đi giữa client và server. Để làm tăng tính bảo mật lên một chút, người dùng có thể nén client/server traffic bằng cách sử dụng lựa chọn --compress khi gọi các chương trình client. Tuy nhiên, nó khơng đánh lạc hướng được attacker.
Khi người dùng cần chuyển thông tin thông qua mạng theo thiết kế an tồn, kết nối giải mã là khơng chấp nhận được. Mã hoá là cách làm cho bất kỳ loại dữ liệu nào cũng không đọc được. Thật ra, thực tiễn yêu cầu thêm nhiều yếu tố bảo mật từ các thuật tốn mã hố. Chúng có thể chống lại nhiều cách tấn công như thay đổi trật tự của các message đã mã hoá hoặc lặp lại hai lần dữ liệu.
</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
• Chuẩn X509
X509 làm cho nó có thể nhận dạng một ai đó trên mạng. Nó khơng được sử dụng thông dụng nhất trong các ứng dụng điện tử. Trong các giới hạn cơ bản, một vài cơng ty gọi nó “Certificate Authority” (CA : bằng chứng nhận quyền) mà thiết kế các chứng thực điện tử cho những ai cần đến chúng. Các chứng thực đáp lại các thuật toán mã hoá bất đối xứng. Chủ nhân của (bằng) chứng thực có thể chỉ chứng thực cho party khác như là bằng chứng về nhận dạng. Chứng thực gồm khoá chung của chủ nhân của nó. Bất kỳ dữ liệu nào được mã hố với khố cơng cộng này chỉ có thể giải mã bằng khố bí mật tương ứng, khố này được giữ bởi chủ nhân của chứng thực.
3.2.3.1. Yêu cầu (Requirements)
Để sử dụng các kết nối SSL giữa MySQL server và các chương trình client, hệ thống của người dùng cần phải hỗ trợ OpenSSL và phiên bản MySQL phải từ 4.0.0 trở lên. Để có các kết nối bảo mật để làm việc với MySQL, người dùng cần phải thực hiện các công việc sau :
</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
1. Cài đặt thư viện OpenSSL
2. Khi người dùng cấu hình MySQL, chạy configure script với các lựa chọn --with-vio và -with-openssl.
3. Phải chắc rằng người dùng nâng cấp các bản phân quyền bao gồm các cột SSL-related trong bảng mysql.user. Đây là điều cần thiết nếu các bản phân quyền của người dùng có từ các phiên bản trước 4.0.0. Thủ tục nâng cấp 4. Để kiểm tra mysql server có hỗ trợ OpenSSL hay khơng, kiểm tra giá trị
của biến hệ thống have_openssl:
mysql> SHOW VARIABLES LIKE 'have_openssl'; +---+---+
| Variable_name | Value | +---+---+ | have_openssl | YES | +---+---+
Nếu giá trị là yes, server hỗ trợ các kết nối OpenSSL 3.2.3.2. Cách thức hoạt động của SSL protocol
SSL hoạt động gồm 7 bước sau : 1. Client gởi yêu cầu hay data tới server
2. Server gởi lại cho client public key với các certificate của nó.
3. Client sẽ kiểm tra certificate được cấp phát bởi party tin cậy (thường lầ root CA tin cậy), đó là các certificate còn giá trị và certificate phải liên quan đến (site contacted).
4. Sau đó client sẽ dùng pubic key để mã hóa secret key được lấy ngẫu nhiên. Và gởi nó tới cho server cùng với thơng tin đã được mã hóa bằng secret key.
</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
5. Server sẽ giải mã lấy secret key (symmetric key) bằng chính private key của nó và dùng nó giải mã thông tin mà client đã gởi qua.
6. Server lại mã hóa thơng tin mà nó trả lời cho client bằng chính secret key và gởi thơng tin đã mã hóa cho client.
7. Client giải mã lại thông tin trả lời vừa nhận được bằng secret key và hiển thị thông tin.
3.2.3.3. Các lựa chọn phân quyền của SSL
MySQL có thể kiểm tra các thuộc tính chứng thực X509 thêm vào trong sự chứng thực thông thường cơ bản là dựa trên username và password. Đối với các lựa chọn SSL-related cho tài khoản MySQL, sử dụng mệnd đề REQUIRE của cú pháp GRANT satement.
Các khả năng khác nhau cho giới hạn các loại kết nối tài Khoản :
Nếu tài khoản khơng có các u cầu SSL hay X509, các kết nối giải mã được cho phép nếu username và password có giá trị. Tuy nhiên, các kết nối mã hố cũng có thể sử dụng tại lựa chọn của client, nếu client có chứng thực chính xác và các key file.
Lựa chọn REQUIRE SSL giới hạn server chỉ cho phép các kết nối mã hóa SSL cho các tài khoản. Chú ý rằng lựa chọn này có thể bị bỏ qua nếu như có bất kỳ dịng dữ liệu ACL mà cho phép các kết nối non-SSL.
mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' -> IDENTIFIED BY 'goodsecret' REQUIRE SSL;
REQUIRE X509 có nghĩa là client phải có chứng thực có giá trị tuy nhiên chứng thực chính xác, người yêu cầu, và chủ đề là không quan trọng. Chỉ có yêu cầu mà có thể thực hiện để kiểm tra chữ ký của nó với
</div>