Chƣơng 2 : MỘT SỐ VẤN ĐỀ AN NINH CƠ SỞ DỮ LIỆU
2.3. Một số biện pháp an ninh CSDL
2.3.2.5. Cơ chế mã hóa khóa bí mật
1). Khái quát
Cùng với sự phát triển mạnh mẽ về sức mạnh cũng nhƣ tốc độ của các bộ xử lý, chuẩn mã hóa dữ liệu (DES) với khóa là 56 bit không đƣợc xem là an toàn đối với kiểu tấn công vét cạn để tìm ra khóa. Việc tăng kích thƣớc của khóa cũng nhƣ khối mã hóa yêu cầu khả năng tăng tốc của quá trình mã hóa và giải mã. Hiện nay thì một khóa 56 bit đƣợc xem nhƣ không còn an toàn nữa, thay vào đó là Triple-DES (hay mã hóa DES 3 cấp) đƣợc sử dụng để tăng tính an toàn cho khóa. Vì thế, một trong những yêu cầu đặt ra là xây dựng một thuật toán mã hóa mới có độ an toàn cao và tốc độ nhanh hơn hẳn Triple-DES.
Để đáp ứng yêu cầu trên, vào năm 1997 học viện quốc gia Mỹ về tiêu chuẩn kỹ thuật (NIST – Institute of Standards and Technology) đã tiến hành một cuộc lựa chọn một thuật toán mã hóa với khóa đối xứng và thuật toán đƣợc chọn xem là chuẩn mã hóa cao cấp AES (Advance Encryption Standard). Và có rất nhiều thuật toán đƣợc đăng ký trong cuộc cạnh tranh để đạt chuẩn AES này.
Trong các thuật toán mới, mã hóa khối có chiều dài 128 bit làm cho việc tấn công bằng cách lập từ điển để đoán nội dung của chuỗi cần mã hóa trở nên khó khăn hơn. Bên cạnh đó thì có thể chọn lựa ra các giá trị độ dài khóa là 128, 192 và 256 bit.
Vào năm 1998 thì NIST thông báo chọn đƣợc ra 15 thuật toán mạnh đòi hỏi sự hỗ trợ về mặt kỹ thuật của các chuyên gia về mã hóa để phân tích và nghiên cứu để chọn ra thuật toán hiệu quả và an toàn nhất.
Tiếp sau đó thì năm thuật toán đƣợc chọn vào vòng chung kết bao gồm có Rijndael, Twofish, Serpent, MARS và RC6.
Cuối cùng vào tháng 2-2000, một thuật toán có tên là Rijndael đƣợc thiết kế bởi Vinent Rijmen và Joan Daemen đã đƣợc NIST công nhận là chuẩn mã hóa cao cấp AES. Thuật toán Rijndael đƣợc chọn là chuẩn mã hóa cao cấp dựa vào nhiều yếu tố nhƣ tốc độ, tính an toàn, khả năng tích hợp vào phần cứng…
2). Cơ chế mã hóa AES
Thuật toán mã hóa khối Rijndael đƣợc thiết kế để sử dụng cho các thao tác đơn giản trên byte. Bên cạnh đó thì thuật toán cũng cung cấp khả năng thay đổi đƣợc yêu cầu cho các ứng cử viên AES, đó là kích thƣớc khóa lẫn kích thƣớc khối có thể đƣợc chọn bất kỳ trong các giá trị 128, 192 và 256 bit.
Để mã hóa khối dữ liệu bằng Rijndael thì đầu tiên, tiến hành thao tác Add Round Key (thao tác XOR một khóa con với khối dữ liệu). Tiếp theo thì thực hiện một số vòng lặp chính, số vòng lặp chính trong Rijdael nhƣ sau:
- Là 9 vòng nếu cả khối cùng mã hóa và khóa có cùng chiều dài là 128 bit.
- Là 11 vòng nếu hoặc khối dữ liệu hay khóa là 192 bit và không có cái nào có kích thƣớc lớn hơn 192 bit.
- Là 13 vòng nếu hoặc khối dữ liệu hay khóa có chiều dài là 256bit. Vòng lặp chính bao gồm những bƣớc sau:
ByteSub (Substitution Byte): Mỗi byte của khối đƣợc thay thế bằng một giá trị khi qua một hộp S-box.
ShiftRow (Shift Rows): Là quá trình chuyển đổi các dòng.
MixColumn (Multiply Colunms): Thực hiện quá trình nhân ma trận, mỗi cột đƣợc nhân với một ma trận kích thƣớc 4x4.
AddRoundKey (Xored By Key): Quá trình này chỉ là việc XOR khóa con và cho kết quả của vòng hiện hành.
Vòng cuối cùng chỉ thi hành việc chuyển đổi: - ByteSub.
- ShiftRow. - AddRoundKey.
Sơ đồ mã hóa AES đƣợc minh họa nhƣ hình:
Hình 2.7 Sơ đồ mã hóa AES.
3). Phân phối khóa bí mật
a). Vấn đề quản lý khóa bí mật:
Đối với hệ mã hóa khóa đối xứng thì nếu biết đƣợc khóa giải mã thì có thể “dễ” tính đƣợc khóa mã hóa và ngƣợc lại, chính vì thế hệ mã hóa khóa đối xứng còn đƣợc gọi là hệ mã hóa “khóa riêng”. Tức là hai đối tác nếu muốn trao đổi thông tin bí mật với nhau bằng hệ mã hóa khóa đối xứng thì cần phải thỏa thuận trƣớc một “khóa riêng” hay là khóa bí mật.
Đối với việc giữ bí mật thì một ngƣời giữ bí mật đã khó, ở đây có hai ngƣời cùng giữ một bí mật nên sẽ càng khó hơn, và bí mật dễ bị lộ. Chƣa kể việc trong mạng có n ngƣời dùng thì thông thƣờng, mỗi ngƣời phải quản lý n-1 khóa, cho nên tổng số khóa bí mật giữa hai ngƣời dùng nhiều nhất là (n-1)+(n-2)+….2+1=n(n-1)/2. Nếu n lớn thì giải pháp này sẽ không thực tế vì lƣợng thông tin cần phải truyền đi rất lớn, khó đảm bảo an toàn. Chính vì thế, vấn đề cần quan tâm là cố gắng giảm đƣợc lƣợng tin cần truyền đi và cất giữ trong khi vẫn cho phép cặp ngƣời dùng A và B có chung khóa bí mật là Ka,b. Do đó xuất hiện nhu cầu quản lý khóa bí mật cho ngƣời dùng bao gồm có: Phân phối khóa mật, thỏa thuận khóa mật và bảo vệ khóa mật.
Để bảo vệ khóa mật thì cách thực hiện là mã hóa, băm khóa, giấu khóa,…
Plain Text Initial Round
AddRoundKey Standard Round ByteSub ShiftRow MixColumn AddRoundKey Final Round ByteSub ShiftRow AddRoundKey Cipher Text
Phân phối khóa mật là cơ chế để một tổ chức chọn khóa mật, sau đó truyền khóa mật, hay chỉ truyền “vật liệu công khai” và “cách thức” để tạo ra khóa mật đến cặp ngƣời dùng muốn có chung khóa mật.
Thỏa thuận khóa mật là giao thức để cặp ngƣời dùng liên kết với nhau cùng thiết lập khóa mật bằng cách liên lạc trên kênh công khai.
b). Phân phối khóa bí mật:
Sơ đồ mã hóa khóa đối xứng yêu cầu cả hai đối tác phải chia sẻ khóa bí mật chung, do đó đặt ra vấn đề về bảo vệ khóa bí mật chung này, bởi vì nó ảnh hƣởng đến an toàn của hệ mật (nếu khóa bí mật bị lộ thì coi nhƣ sự an toàn của hệ mật bị mất).
Với hai đối tác A và B cần thực hiện chia sẻ thông tin thì có cách phân phối khóa bí mật nhƣ sau:
Cách thứ nhất là A lựa chọn khóa bí mật và truyền cho B.
Cách thứ hai là đối tác thứ ba giả sử là C chọn khóa và phân phối cho A và B.
A và B có thể thống nhất dùng khóa trƣớc để mã khóa mới.
Cuối cùng là A và B trao đổi với một đối tác thứ ba là C và C chuyển tiếp giữa A và B.
c). Phân loại khóa: có hai loại chính là khóa phiên và khóa chính.
- Khóa phiên (section key): là khóa tạm thời dùng để mã hóa dữ liệu giữa nhóm ngƣời dùng cho một phiên logic sau đó bị hủy.
- Khóa chính (master key): là khóa dùng để mã hóa các khóa phiên chia sẻ giữa ngƣời dùng và trung tâm phân phối khóa.
Đối với vấn đề phân phối khóa thì đối với các mạng lớn thì đòi hỏi cần một trung tâm phân phối khoá và trung tâm này tạo sự tin cậy giữa các đối tƣợng sử dụng khóa với trung tâm và giữa các trung tâm với nhau. Thời gian sống của khóa phiên cần phải hạn chế cho an toàn và các khóa đƣợc phát sinh càng ngẫu nhiên càng tốt và hỗ trợ kiểm soát mục đích của bên dùng khóa.