7. Ý NGHĨA KHOA HỌC VÀ THỰC TIÊN CỦA ĐỀ TÀI
1.2.6. Chuẩn mã dữ liệu DES
Mô tả đầy đủ của DES được nêu trong Công bố số 46 về các chuẩn xử lý thông tin Liên bang (Mỹ) vào 15.1.1977 [4], [25], [28], [31], [32]. DES mã hoá một xâu bit x của bản rõ độ dài 64 bằng một khoá 54 bit. Bản mã nhận được cũng là một xâu bit có độ dài 64. Trước hết ta mô tả ở mức cao về hệ thống.
Thuật toán tiến hành theo 3 giai đoạn:
1) Với bản rõ cho trước x, một xâu bit x0 sẽ được xây dựng bằng cách hoán vị các bit của x theo phép hoán vị cố định ban đầu IP. Ta viết:
0 ( ) 0 0
x IP x L R , trong đó L0 gồm 32 bit đầu và R0 là 32 bit cuối.
2) Sau đó tính toán 16 lần lặp theo một hàm xác định. Ta sẽ tính L Ri i, 1 i 16 theo quy tắc sau:
1 1 ( 1, ) i i i i i i L R R L f R k
trong đó kí hiệu phép cộng theo modulo 2. f là một hàm mà ta sẽ mô tả ở sau, còn k k1, 2,...,k16 là các xâu bit độ dài 48 được tính như hàm của khoá k. (trên
thực tế mỗi ki là một phép chọn hoán vị bit trong k). Các khóa con k k1, 2,...,k16 sẽ tạo thành bảng khoá.
3) Áp dụng phép hoán vị ngược IP1 cho xâu bit R L16 16, ta thu được bản mã
y, tức là yIP1(R L16 16).
Sơ đồ mã hóa DES được xây dựng trên lược đồ Feistel như trong hình 1.5.
Hình 1.5.Sơ đồ mã hóa DES
Có 64! cách chọn các bảng hoán vị, DES chọn các bảng hoán vị IP và hoán vị đảo IP-1 như trong bảng 1.3.
Bảng 1.3.Bảng IP và IP-1
Các mô tả về hàm mã hóa f và khối tạo khóa con trong DES như mô tả trong Hình 1.6 và Hình 1.7.
Hình 1.7.Các bước tạo khóa cho các vòng mã hóa của DES 1.2.7. Ưu nhược điểm của mật mã khóa bí mật
1.2.7.1. Ưu điểm:
Đơn giản (thời gian nhanh, yêu cầu phần cứng không phức tạp)
Hiệu quả: (Tỷ lệ mã bằng 1) dễ sử dụng cho các ứng dụng nhạy cảm với độ trễ và các ứng dụng di động.
1.2.7.2. Nhược điểm:
Phải dùng kênh an toàn để truyền khóa (Khó thiết lập và chi phí tốn kém)
Việc tạo và giữ khóa bí mật phức tạp, khó làm việc trên mạng do phải tạo khóa nhiều.
Các thuật toán là song ánh, vì vậy nếu biết M và K thì chắc chắn biết C. Thám mã có thể suy luận ra K, kết hợp với C tại kênh mở có thể suy ra M.
Khó xây dựng các dịch vụ an toàn khác như: đảm bảo tính toàn vẹn, xác thực, chữ ký số…
1.3.HỆ MẬT KHÓA CÔNG KHAI
1.3.1. Sơ đồ chức năng
Hình 1.8.Sơ đồ khối chức năng hệ mật khóa công khai
CB
K - Khóa công khai của B (Lấy trên kênh mở)
RB K - Khóa bí mật của B Phép mã hóa là ánh xạ 1:1: CE M K , CB Giải mã: 1 , RB , RB M E C K D C K Ưu điểm của hệ mật khóa công khai:
+ Không sử dụng kênh an toàn (đây là nhược điểm của hệ mật khóa bí mật). + Dễ bảo vệ, lưu trữ và sinh khóa.
+ Dễ tạo các dịch vụ an toàn khác. Ví dụ: Với n người dùng:
Số khóa cần tạo Số khóa cần lưu giữ bí mật
Hệ mật khóa bí mật ( 1)
2
n n
(n1)
Hệ mật khóa công khai 2n 1
Nhược điểm của hệ mật khóa công khai:
+ Phức tạp (với trường số lớn thì phần cứng phức tạp)
+ Hiệu quả không cao, do đó khó thực hiện các dịch vụ nhạy cảm đối với độ trễ và dịch vụ di động.
Mã hóa Kênh mở Giải mã
A M C CB K KRB C M B Nguồn Đích
1.3.2. Một số bài toán xây dựng hệ mật khóa công khai
Với yêu cầu với hệ mật khóa công khai: Dễ mã hóa, khó giải mã (Hàm một chiều), các hướng nghiên cứu từ năm 1976 cho đến nay đã tìm được 5 hàm một chiều, tương ứng với 5 bài toán [4].
1.3.2.1. Bài toán logarit rời rạc:
Bài toán này xây trên các hàm mũ của các phần tử trong trường hữu hạn
p
Z với p là số nguyên tố lớn. Bài toán ngược là phép logarit nhưng trên trường hữu hạn và đây là bài toán khó giải khi p lớn.
Các hệ mật liên quan bao gồm:
Thủ tục trao đổi và thỏa thuận khóa Diffie-Hellman
Hệ mật Omura – Massey
Hệ mật Elgamal…
1.3.2.2. Bài toán phân tích thừa số và hệ mật RSA
+ Định lý 1.1 (định lý cơ bản của số học) [4], [27], [30]: Cho n là một số nguyên tố, tồn tại phân tích duy nhất:
1 2 1e 2e ... ek k n p p p (1.17) Với: pi - số nguyên tố ei - số nguyên dương
Nếu n là tích của 2 số nguyên tố: n pq (p q, -là 2 số nguyên tố lớn thỏa mãn p q)
Đây là bài toán phân tích số nguyên tố lớn khó (tìm n đơn giản khi biết p q, , cho n rất khó tìm được p q, )
+ Hệ mật RSA (Rivest – Shamir – Adleman)
- Tạo khóa: Mỗi bên liên lạc (A,B) tạo cho mình một cặp khóa công khai –
bí mật theo các bước sau:
Bước 1: Chọn hai số nguyên tố lớn p và q có độ lớn tương đương. Bước 2: Tính n pq( )n (p1)(q1)
Bước 3: Chọn e ngẫu nhiên thỏa mãn: ( , ( )) 1e n
Bước 4: Tính d với ed 1mod ( ) n
Bước 5: + Khóa công khai: (n,e) + Khóa bí mật: d
trong đó: e là số mũ mã hóa; d là số mũ giải mã. Vai trò của e và d là như nhau (2 số nghịch đảo), tức là nếu mã hóa dùng e thì giải mã dùng d và ngược lại.
- Mã hóa: B cần gửi bản tin m cho A.
Bước 1: B nhận khóa công khai của A: (n,e) Bước 2: B tính Cmemodn
Bước 3: B gửi bản mã C cho A.
- Giải mã: A nhận C và giải mã ra m:
A tính Cd modn(me d) modnm
+ Nhận xét:
Thám mã phải thực hiện bài toán phân tích thừa số n pq thì mới tính được ( )n (nếu biết d muốn tìm e phải thỏa mãn điều kiện: ed 1mod ( ) n )
Hiệu quả truyền tin cao R1.
Hệ mật RSA được sử dụng rộng rãi hơn 30 năm qua.
1.3.2.3. Bài toán xếp ba lô
Bài toán xếp ba lô được xây dựng trên dãy siêu tăng, và hệ mật xây dựng trên bài toán này là hệ mật Merkle – Hellman. Đây là một trong các hệ mật bị thám mã nhanh nhất.
1.3.2.4. Bài toán mã sửa sai và hệ mật Mc. Eliece
Sử dụng mã sửa sai tuyến tính C n k d, , ; d 2t1 (với t là số sai sửa được). Ma trận sinh: Gk n và ma trận kiểm tra Hr n ;r n k; thỏa mãn: .G HT 0. Một trong những lớp mã này là mã Goppa, chúng được dùng làm cơ sở cho hệ mật Mc. Eliece.
1.3.2.5. Đường cong Elliptic và các hệ mật liên quan
Bài toán này được xây dựng trên các nhóm cộng của đường cong elliptic. đường cong Elliptic trên trường số thực có dạng sau:
2 3 2
y axybyx cx dxe
+ Đường cong Elliptic trên trường hữu hạn ZpGF p (Dạng Weiestrass)
2 3
mod
y x ax b p
Với xZp, nếu xZ*p thì x phải là thặng dư bậc hai. Điều kiện: tồn tại 3 2
4a 27b modp 0
Các hệ mật liên quan:
Trao đổi khóa Diffie-Helfman trên đường cong Elliptic.
Hệ mật Omura – Massey trên đường cong Elliptic
Hệ mật Elgamal trên đường cong Elliptic.
1.4.CƠ BẢN VỀ HÀM BĂM
1.4.1. Mở đầu
Các hàm băm đóng vai trò cơ bản trong mật mã hiện đại. Hàm băm sẽ tạo ra một đầu ra từ bản tin đầu vào. Đầu ra này được định nghĩa là mã băm (kết quả băm, giá trị băm).
Nói một cách chính xác hơn, hàm băm h sẽ tạo ra ánh xạ các xâu bit có độ dài hữu hạn tuỳ ý thành các xâu bit có độ dài n cố định.
Hàm băm h là một ánh xạ có độ dài n cố định :h DR và |D| | R| điều này có nghĩa là không thể tránh khỏi các va chạm (tức là cùng một giá trị đầu ra có thể có nhiều bộ giá trị vào khác nhau). Nếu hàm h là ngẫu nhiên theo nghĩa tất cả các đầu ra là đồng xác suất thì có chừng 2t n
các đầu vào ánh xạ tới mỗi đầu ra (t: số bit đầu vào, n: số bit đầu ra, t > n) và 2 đầu vào được chọn ngẫu nhiên sẽ có cùng đầu ra với xác suất 2n
(không phụ thuộc vào t).
Ý tưởng cơ bản của việc sử dụng các hàm băm trong mật mã là sử dụng chúng như một ảnh biểu diễn rút gọn (đôi khi còn được gọi là vết, dấu tay số hay tóm lược thông báo) của một xâu vào và có thể được dùng như thể nó chính là xâu vào đó.
Các hàm băm được dùng cho các sơ đồ chữ ký số kết hợp với việc đảm bảo tính toàn vẹn của dữ liệu, khi đó bản tin trước hết được băm và rồi giá trị băm (được xem như đại diện cho bản tin) sẽ được ký thay cho vị trí bản tin gốc [4], [34], [37].
Một lớp các hàm băm được gọi là các mã xác thực thông báo (MAC - Message Authentication Codes) sẽ cho phép xác thực thông báo bằng kỹ thuật đối xứng (mật mã cổ điển).
Các thuật toán MAC sử dụng 2 đầu vào (bao gồm bản tin và một khoá bí mật) để tạo ra một đầu ra có kích cỡ cố định (n bit) với ý đồ đảm bảo rằng nếu không biết khoá thì việc tạo ra cùng một đầu ra là không khả thi. MAC có thể được dùng để đảm bảo tính toàn vẹn của dữ liệu, xác thực tính nguyên bản của số liệu cũng như định danh trong sơ đồ mật mã cổ điển.
Một ứng dụng điển hình của hàm băm (không dùng khoá) để đảm bảo tính toàn vẹn của dữ liệu có thể được mô tả như sau:
Giá trị băm tương ứng với một bản tin riêng x sẽ được tính ở thời điểm T1. Tính toàn vẹn của giá trị băm này (chứ không phải là bản thân bản tin) sẽ được bảo vệ theo một cách nào đó. ở thời điểm tiếp theo sau T2 phép kiểm tra sau sẽ được tiến hành để xác định xem liệu thông báo có bị sửa đổi hay không, tức là xem liệu bản tin x có giống bản tin gốc hay không. Giá trị băm của x sẽ được tính toán và so sánh với giá trị băm đã được bảo vệ, nếu chúng bằng nhau thì bên thu sẽ chấp nhận rằng x và x là như nhau và như vậy có nghĩa là bản tin đã không bị sửa đổi. Như vậy vấn đề đảm bảo tính vẹn toàn của một bản tin lớn sẽ được gui về đảm bảo cho một giá trị băm có kích cỡ cố định (và nhỏ).
Ứng dụng trên thường được gọi là mã phát hiện sự sửa đổi (MDC - Manipulation Detection Codes).
1.4.2. Các định nghĩa và tính chất cơ bản
1.4.2.1. Định nghĩa Hàm băm
Định nghĩa 1.3 [4], [15], [23], 24], [26]:
Hàm băm là một hàm h có ít nhất hai tính chất sau:
a)Tính chất nén: h sẽ ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ tới một đầu ra h x có độ dài bit n hữu hạn.
b) Tính chất dễ dàng tính toán: Với h cho trước và một đầu vào x, có thể dễ dàng tính được h x .
1.4.2.2. Một số tính chất của các hàm băm không có khoá.
Giả sử h là một hàm băm không có khoá, x và x là các đầu vào, y vày là các đầu ra. Ngoài hai tính chất cơ bản trên ta còn có 3 tính chất sau [23], [24], [26]:
a) Tính kháng tiền ảnh:
Đối với mọi mã băm cho trước y(0,1)ncần ít nhất khoảng thời gian 2n để có thể tìm được x(0,1)* sao cho ( )h x y .
b) Kháng tiền ảnh thứ hai:
Với mọi thông điệp cho trước x(0,1)*cần ít nhất một khoảng thời gian 2n để có thể tìm được thông điệp *
(0,1)
x sao cho xx và ( )h x h x( ) c) Tính kháng va chạm
Cần ít nhất một khoảng thời gian 2n/2để có thể tìm được * , (0,1)
x x sao cho ( )h x h x( ) mà xx.
1.4.2.3. Hàm băm một chiều (OWHF - oneway hash function).
Định nghĩa 1.4 [23], [24], [26]:
OWHF là một hàm băm (có hai tính chất cơ bản) có tính chất bổ sung là: - Kháng tiền ảnh
- Kháng tiền ảnh thứ hai.
1.4.2.4. Hàm băm khó va chạm (CRHF: Collision resistant HF)
Định nghĩa 1.5 [23], [24], [26]:
CRHF là một hàm băm (có hai tính chất cơ bản) có tính chất bổ sung là: - Kháng tiền ảnh thứ hai
Chú ý về các thuật ngữ
Kháng tiền ảnh Một chiều
Kháng tiền ảnh thứ hai Kháng va chạm yếu. OWHF Hàm băm một chiều yếu.
CRHF Hàm băm một chiều mạnh.
1.4.2.5. Thuật toán mã xác thực thông báo (MAC).
Định nghĩa 1.6 [4]:
Thuật toán MAC là một họ các hàm hk (được tham số hoá bằng một khoá bí mật k) có các tính chất sau:
(1) Dễ dàng tính toán: Với hk đã biết và giá trị k cho trước và một đầu vào x, có thể được tính dễ dàng h xk( ) (h xk( )được gọi là giá trị MAC hay MAC).
(2) Nén: hk ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ tới một đầu ra ( )
k
h x có độ dài bit n cố định.
(3) Khó tính toán: Với các cặp giá trị x h xi, k( )i không có khả năng tính một cặp x h x, k( ) với x xi (kể cả có khả năng h xk( )h xk( )i với một i nào đó).
Nếu tính chất (3) không thoả mãn thì thuật toán được coi là giả mạo MAC.
1.4.2.6. Phân loại các hàm băm mật mã và ứng dụng
Hình 1.9.Phân loại hàm băm
Hàm băm
Không có khoá Có khoá
MDC Các ứng dụng khác Các ứng dụng khác MAC
1.4.3. Một số phương pháp xây dựng hàm băm
1.4.3.1. Các hàm băm không có khoá
Định nghĩa 1.7 [4]:
Mật mã khối (n, r) là một mã khối xác định một hàm khả nghịch từ các bản rõ n bit sang các bản mã n bit bằng cách sử dụng một khoá r bit. Nếu E là một phép mã hoá như vậy thì E xk( ) ký hiệu cho phép mã hoá x bằng khoá k.
Định nghĩa 1.8 [4]:
Cho h là một hàm băm có lặp được xây dựng từ một mật mã khối với hàm nén thực hiện s phép mã hoá khối để xử lý từng khối bản tin n bit. Khi đó tốc độ của h là 1/s.
a) MDC độ dài đơn.
Ba sơ đồ hình 1.10 dưới đây có liên quan chặt chẽ với các hàm băm độ dài đơn, xây dựng trên các mật mã khối. Các sơ đồ này có sử dụng các thành phần được xác định trước như sau:
- Một mật mã khối n bit khởi sinh Ek được tham số hoá bằng một khoá đối xứng k.
- Một hàm g ánh xạ n bit vào thành khoá k sử dụng cho E (Nếu các khoá cho E cũng có độ dài n thì g có thể là hàm đồng nhất)
- Một giá trị ban đầu cố định IV thích hợp để dùng với E.
Hình 1.10.Các sơ đồ hàm băm đơn a) Matyas-Mayer–Oseas; b) Davies-Mayer và c) Miyaguchi – Preneel c) g E Hi-1 xi Hi b) E xi Hi Hi-1 i x E Hi-1 xi Hi g a)
* Thuật toán băm Matyas - Mayer - Oseas.
Vào: Xâu bit x
Ra: Mã băm n bit của x
(1) Đầu vào x được phân chia thành các khối n bit và được độn nếu cần thiết nhằm tạo khối cuối cùng hoàn chỉnh. Ta được t khối n bit: x x1 2...xt . Phải xác định trước một giá trị ban đầu n bit (ký hiệu IV).
(2) Đầu ra là Ht được xác định như sau:
1 0 , ( )( ) , 1 i i g H i i H IV H E x x i t
* Thuật toán băm Davies - Mayer
Vào: Xâu bit x
Ra: Mã băm n bit của x
(3) Đầu vào x được phân thành các khối k bit (k là kích thước khoá) và được độn nếu cần thiết để tạo khối cuối cùng hoàn chỉnh. Biểu thị thông báo đã độn thành t khối n bit: x x1 2...xt. Xác định trước một giá trị ban đầu n bit (ký hiệu IV).
(4) Đầu ra là Ht được xác định như sau:
0 , ( 1) , 1
i
i x i i
H IV H E H x i t * Thuật toán băm Miyaguchi - Preneel
Sơ đồ này tương tự như sơ đồ M-M-O ngoại trừ Hi1 (đầu ra ở giai đoạn