từ K16 đến K1, nghĩa là trong bước 2 của quá trình mã hoá dữ liệu đầu vào ở trên Ri-1 sẽ được XOR với K chứ không phải với K... Thời gian thực hiện Tính bảo mật của một hệ mã hoá đối xứ
Trang 1I THUẬT TOÁN DES
(THE DATA ENCRYPTION STANDARD)
Trang 2LỊCH SỬ CỦA THUẬT TOÁN DES
- Ngày 13/5/1973 ủy ban quốc gia về tiêu chuẩn của Mỹ công bố yêu cầu về hệ mật mã áp dụng cho toàn quốc Điều này đã đặt nền móng cho chuẩn mã hóa dữ liệu, hay là DES
- Lúc đầu Des được công ty IBM phát triển từ hệ
mã Lucifer, công bố vào năm 1975
- Sau đó Des được xem như là chuẩn mã hóa dữ liệu cho các ứng dụng
Trang 3CẤU TRÚC THUẬT TOÁN
DES là thuật toán mã hóa khối, độ dài mỗi khối là
64 bit
Khóa dùng trong DES có độ dài toàn bộ là 64 bit Tuy nhiên chỉ có 56 bit thực sự được sử dụng; 8 bit còn lại chỉ dùng cho việc kiểm tra
Des xuất ra bãn mã 64 bit
Trang 4MÔ TẢ THUẬT TOÁN
Thuật toán được thực hiện trong 3 giai đoạn:
1. Cho bản rõ x (64bit) được hoán vị khởi tạo IP
(Initial Permutation) tạo nên xâu bit x0
x0=IP(x)=L0R0
L0 là 32 bit đầu tiên của x0
R0 là 32 bit cuối của x0
Trang 6MÔ TẢ THUẬT TOÁN (tt.)
Trang 7Một vòng của quá trình lập mã được
mô tả qua hình
Trang 8MÔ TẢ THUẬT TOÁN
3 Áp dụng hoán vị ngược IP -1 cho xâu bit R 16 L 16 ta nhận được bản mã y.
Trang 9Hoán vị IP-1
Hàm f lấy đối số đầu là xâu nhập Ri (32 bit)
đối số thứ hai là Ki (48bit) và tạo ra xâu xuất có
độ dài 32 bit Các bước sau được thực hiện
1. Đối số đầu Ri sẽ được “mở rộng” thành xâu có
độ dài 48 bit tương ứng với hàm mở rộng E cố định
E(Ri) bao gồm 32 bit từ Ri, được hoán vị theo một cách thức xác định, với 16 bit được tạo ra 2
Trang 112 Tính E(Ri) Ki và viết kết quả như là nối của 8 xâu 6bit.
b2b3b4b5 xác định biểu diễn nhị phân của cột c của Sj (0<=c<=15)
Trang 12Ví dụ: Ta có B1=011000 thì b1b6=00 (xác định r=0), b2b3b4b5=1100 (xác định c=12), từ đó ta tìm được phần tử ở vị trí (0,12) > S1(B1)=0101 (tương ứng với số 5).
Trang 134 Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit được hoán vị tương ứng với hoán vị cố định P Kết quả có P(C)= f(Ri,Ki).
Trang 15Khóa K
- K là một xâu có độ dài 64 bit trong đó 56 bit dùng làm khóa và 8 bit dùng để kiểm tra sự bằng nhau (phát hiện lỗi)
Trang 16Quá trình tạo các khóa con (subkeys) từ khóa K được
mô tả như sau:
1. Cho khóa K 64 bit, loại bỏ các bit kiểm tra và
hoán vị các bit còn lại của K tương ứng với hoán vị cố định PC-1 Ta viết PC1(K) = C0D0, với C0 bao gồm 28 bít đầu tiên của PC-1(k) và
D0 là 28 bit còn lại
Trang 182 Với i nằm trong khoảng từ 1 đến 16, ta tính Ci, Di như sau:
for(i=1;i<=16;i++){
Ci = LSi(Ci-1)
Di = LSi(Di-1) }
Và Ki = PC-2(CiDi)
- PC-2 là 1 hoán vị cố định khác.
- LSi biểu diễn phép chuyển chu trình sang trái của 1 hoặc của 2 vi trí tùy thuộc vào giá trị của i
- Đẩy sang trái 1 vị trí nếu i= 1, 2, 9 hoặc 16, và đẩy 2
vị trí trong những trường hợp còn lại
Trang 19Sơ đồ tạo các khóa con
Trang 20từ K16 đến K1, nghĩa là trong bước 2 của quá trình
mã hoá dữ liệu đầu vào ở trên Ri-1 sẽ được XOR với K chứ không phải với K
Trang 21Thời gian thực hiện
Tính bảo mật của một hệ mã hoá đối xứng là một hàm hai tham số: độ phức tạp của thuật toán và độ dài của khoá.
Giả sử rằng tính bảo mật chỉ phụ thuộc vào độ phức tạp của thuật toán.
Có nghĩa rằng sẽ không có phương pháp nào để phá vỡ
hệ thống mật mã hơn là cố gắng thử mọi khoá có thể, phương pháp đó được gọi là brute-force attack Nếu khoá
có độ dài 8 bít, suy ra sẽ có 28=256 khoá Vì vậy, sẽ mất nhiều nhất 256 lần thử để tìm ra khoá đúng
Trang 22Thời gian thực hiện (tt)
Nếu khoá có độ dài 56 bít, thì sẽ có 256 khoá có thể
sử dụng Giả sử một Suppercomputer có thể thử một triệu khoá trong một giây, thì nó sẽ cần 2000 năm để tìm ra khoá đúng Nếu khoá có độ dài 64 bít, thì với chiếc máy trên sẽ cần 600,000 năm để tìm ra khoá đúng trong số 264 khoá Nếu khoá có độ dài 128 bít, thì sẽ mất 1025 năm để tìm ra khoá đúng Vũ trụ chỉ mới tồn tại 1010 năm, vì vậy 1025 thì một thời gian quá dài Với một khoá 2048 bít, một máy tính song
Trang 23Đặc điểm của mã DES
E K là bản mã hóa của E với khóa K P và C là văn
bản rõ (trước khi mã hóa) và văn bản mã (sau khi mã hóa)
Trang 242 Các khóa yếu trong mã Des:
Ngoài ra DES còn có 4 khóa yếu (weak keys) Khi
sử dụng khóa yếu thì mã hóa (E) và giải mã (D) sẽ cho
ra cùng kết quả:
E K (E K (P)) = P or equivalently, E K = D K
Bên cạnh đó, còn có 6 cặp khóa nửa yếu weak keys) Mã hóa với một khóa trong cặp, K1, tương đương với giải mã với khóa còn lại, K2:
E K1 (E K2 (P))=P or equivalently E K1 =D K2
Trang 253 Triple DES:
Triple-DES chính là DES với hai chìa khoá 56 bit Cho một bản tin cần mã hoá, chìa khoá đầu tiên được dùng để mã hoá DES bản tin đó.
Kết quả thu được lại được cho qua quá trình giải mã DES nhưng với chìa khoá là chìa khoá thứ hai.
Bản tin sau qua đã được biến đổi bằng thuật toán DES hai lần như vậy lại được mã hoá DES một lần nữa với chìa khoá đầu tiên để ra được bản tin mã hoá cuối cùng
Trang 26Ứng dụng của DES
DES thường được dùng để mã hoá bảo mật các thông tin trong quá trình truyền tin cũng như lưu trữ thông tin Một ứng dụng quan trọng khác của DES là kiểm tra tính xác thực của mật khẩu truy nhập vào một hệ thống (hệ thống quản lý bán hàng, quản lý thiết bị viễn thông…), hay tạo và kiểm tính hợp lệ của một mã số bí mật (thẻ
internet, thẻ điện thoại di động trả trước), hoặc
Trang 27HÀM BĂM
Trang 28Giới thiệu
Định nghĩa:
Một hàm Băm H sẽ lấy ở đầu vào một thông tin X có kích thước biến thiên và sinh kết quả là một chuỗi có độ dài cố định, được gọi là cốt của bức điện (message digest)
Ví dụ như khi B muốn ký một bức điện x (độ dài bất kỳ), đầu tiên anh ta tính cốt của bức điện z = h(x) (độ dài cố định) và sau đó ký y = sigK(z) Anh ta phát cặp (x,y) lên kênh truyền, bây giờ việc kiểm tra có thể thực
Trang 30Tính chất của hàm băm
Trang 31Thuật toán MD5
Trang 32Phát triển bởi Rivest (MIT)
Đầu vào có độ dài bất kỳ
Đầu ra 128 bit
Trang 33Sơ đồ chung
Trang 34Các bước thực hiện
Được bổ xung các bit để độ dài đồng dư với 448 mod 512.
Việc bổ xung luôn luôn thực hiện (thậm chí với độ dài mong muốn).
Số lượng bit bổ xung 1-512
Các bit bổ xung 10…0
Trang 35Bước 2 : Bổ sung giá trị độ dài
Một khối 64 bit (thể hiện độ dài của ban tin khởi đầu) được thêm vào.
Ghi độ dài tin tức theo mod 2 64
A = 67452301,
B = EFCDAB89,
C = 98BADCFE,
D = 10325476.
Trang 36 Để lưu giữ các kết quả trung gian và cuối cùng của hàm băm, sẽ sử dụng 128 bit đệm.
Đệm có thể trình bày dưới dạng bốn ghi dịch 32 bit (A,
B, C, D).
word A : 01 23 45 67
word B : 89 ab cd efword C : fe dc ba 98
Trang 37khối theo 16 từ).
Bốn công đoạn xử lý.
Các công đoạn có cấu trúc giống nhau.
Mỗi công đoạn sử dụng hàm logic nguyên thủy của mình
F, G, H, I.
Lưu A vào AA, B vào BB, C vào CC, D và DD AA=A
BB=B
Trang 38Gia công một khối 512 bit trong MD5
Trang 39Trong mỗi công đoạn cũng được sử dụng một phần tư của bảng 64 phần tử T[1…64], bao gồm từ các giá trị của hàm sin
Trong bảng T, phần tử thứ i, được ký hiệu T[i], là phần nguyên của giá trị 232 abs(sin(i)), ở đây i là góc tính theo radian
Trang 40Rõ ràng rằng abs(sin(i)) có giá trị nằm trong dải từ 0…
1, mỗi phần tử T là một số nguyên, mà có thể trình bày trong dạng 32 bit
Bảng bảo đảm”phân đều” tập mã 32 bit, nó có sứ mệnh “đập tan” sự đều dặn bất kỳ của số liệu đầu vào
Trang 41Giá trị đầu ra của công đoạn thứ bốn được bổ xung thêm giá trị đầu vào của công đoạn thứ nhất (CVq) và kết quả nhận được CVq+1
Phép cộng được thực hiện theo modul 2 32
Trang 42Các giá trị của hàm logic
Trang 43F(b,c,d)=bcvnot(c)d
Trang 44Bảng T
Trang 45Phần tử cơ bản của 1 vòng
Trang 46Định nghĩ các hàm
FF(a,b,c,d,Mj,s,ti): a = b + ((a + F(b,c,d) + Mj + ti)
Trang 47Các chu kỳ thực hiện
Vòng1:
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
Vòng 2:
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
Trang 48Các chu kỳ thực hiện(tiếp)
Vòng 3:
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
Vòng 4:
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
Sau đó làm các phép cộng sau ( Nghĩa là cộng vào mỗi thanh ghi giá trị của nó trước khi vào
Trang 49Bước 5 : Đầu ra
Mã số thông điệp được tạo ra là A,B,C,D Nghĩa là chúng ta bắt đầu từ byte thấp của A, kết thúc với byte cao của D
Trang 50HÀM BĂM SHA
Trang 511 Khái niệm hàm Băm
Năm 1995, tổ chức NIST cùng NSA đã thiết kế ra thuật toán hàm Băm an toàn (SHA) sử dụng cho chuẩn chữ
ký điện tử DSS SHA được thiết kế dựa trên những nguyên tắc của MD4/MD5,tạo ra 160-bit giá trị Băm.
SHA (Secure Hash Algorithm) là các thuật giải dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu
có chiều dài không đổi với xác suất khác biệt cao.
Việc tìm lại được đoạn dữ liệu gốc là không khả thi.
Việc tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm là không khả thi.
Bất cứ thay đổi nào trên đoạn dữ liệu gốc, dù nhỏ, cũng sẽ
Trang 52Thuật toán hàm băm SHA có 2 bước là tiền
xử lý và tính toán giá trị băm.
- Bước tiền xử lý gồm các thao tác + Mở rộng bức điện
+ Phân tích bức điện đã mở rộng thành các khối m bit.
+ Khởi tạo giá trị băm ban đầu.
- Bước tính toán giá trị băm bao gồm:
Làm N lần các công việc sau:
+ Tạo bảng phân bố bức điện từ khối thứ i.
2 Mô hình thực hiện:
Trang 53Cũng giống với MD5, bức điện được cộng thêm một bit 1 và các bit 0 ở cuối bức điện có thể chia hêt cho 512 SHA sử dụng 5 thanh ghi dịch:
Bức điện được chia ra thành nhiều khối 512-bit Ta cũng đặt là
a, b, c, d và e thay cho A, B, C, D và E đối với khối 512-bit đầu tiên của bức điện SHA có bốn vòng lặp chính với mỗi vòng thực hiện 20 lần biến đổi: bao gồm thực hiện với một hàm phi
2 Mô hình thực hiện: (tt)
Trang 54 SHA xác lập bốn hàm phi tuyến tính như sau:
ft(X,Y,Z) = (X Y) ((¬X) Z) vớiX) Z) với 0 ≤ t ≤ 19
Trang 55 Các khối bức điện được mở rộng từ 16 word 32 bit (M0 đến M15) thành
80 word 32 bit (W0 đến W79) bằng việc sử dụng thuật toán mở rộng:
Wt = Mt với 0 ≤ t ≤ 15
Wt= (Wt-3 Wt-8 Wt-14 Wt-16 ) với 16 ≤ t ≤ 79.
Ta có thể miêu tả 1 vòng lặp SHA như sau:
2 Mô hình thực hiện: (tt)
Trang 56 Nếu gọi Wt là biểu diễn của khối con thứ t của bức điện được
mở rộng và <<<s là biểu diễn dịch trái s bít thì vòng lặp chính của SHA như sau:
Trang 573 Khung thuật toán chung của các hàm băm SHA
Trong các hàm băm SHA
chúng ta cần sử dụng thao tác quay phải một từ, ký hiệu là ROTR và thao tác dịch phải một từ, ký hiệu là SHR.
Trang 58 for t = 0 to 63
T1 = h + ∑1(e) + Ch(e, f, g) + Kt + Wt
T2 = ∑0(a) + Maj(a, b, c)
H0(i) = a+H0(i-1) H1(i) = b+H1(i-1) H2(1)=c+H2(i-1) H3(1)=d+H3(i-1) H4(1)=e+H4(i-1) H5(1)=f+H5(i-1)
3 Khung thuật toán chung của các hàm băm SHA (tt)
Trang 594 Tính bảo mật trong SHA:
Để hiểu rõ hơn về tính bảo mật của SHA ta hãy
so sánh SHA với MD5 để có thể tìm ra những điểm khác nhau của hai hằm băm này:
- MD5 và SHA đều cộng thêm các bit giả để tạo thành những khối chia hết cho 512-bit, nhưng SHA sử dụng cùng một hàm phi tuyến tính f cho
cả bốn vòng
- MD5 sử dụng mỗi hằng số duy nhất cho mỗi bước biến đổi, SHA sử dụng mỗi hằng số cho
Trang 60 - Trong hàm phi tuyến thứ 2 của MD5 có sự cải tiến so với MD4, SHA thì sử dụng lại hàm phi tuyến của MD4, tưc (X Y) (X Z) (Y Z).
- Trong MD5 với mỗi bước được cộng kết quả của bước trước đó Sự khác biệt đối với SHA là cột thứ 5 được cộng (không phải b, c hay d trong MD5), điều này làm cho
phương pháp tấn công của Boer-Bosselaers đối với SHA
bị bất bại (den Boer và Bosselaers là hai người đã phá thành công 2 vòng cuối trongMD4).
Cho đến nay, chưa có một công bố nào được đưa ra trong
3 Tính bảo mật trong SHA (tt)
Trang 615 Một số ứng dụng của hàm Băm
Là sử dụng với các hệ chữ ký điện tử, trong đó thay vì ký trực tiếp lên các văn bản, thông điệp (mà trong đa số trường hợp là rất lớn, tốc độ chậm) người ta sẽ ký lên giá trị băm đại diện cho toàn bộ văn bản đó
Ngoài việc sử dụng với các hệ chữ ký điện tử hàm băm còn được sử dụng vào các mục đích khác như: xác thực hóa thông điệp, xác thực hóa người dùng
Hiện nay tất cả các hệ quản trị cơ sở dữ liệu đều được trang bị các hàm băm để cho phép người