Phần I LÝ THUYẾT CHUNG VỀ AN TOÀN BẢO MẬT THÔNG TIN Chương 1 MỘT SỐ KHÁI NIỆM 1.1 Khái niệm hệ mật mã Một hệ mật mã là một bộ 5 P,C,K,E,D thỏa mãn các điều kiện sau: P: Là một tập hợp
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 3
Phần I 4
LÝ THUYẾT CHUNG VỀ AN TOÀN BẢO MẬT THÔNG TIN 4
Chương 1 4
MỘT SỐ KHÁI NIỆM 4
1.1 Khái niệm hệ mật mã 4
1.2 Mã hóa và giải mã 4
1.3 Quy trình mã hóa và giải mã dữ liệu 4
1.4 Khái niệm hệ mã cổ điển 5
1.5 Hệ mã công khai 6
Chương 2 7
MỘT SỐ HỆ MÃ CỔ ĐIỂN 7
2.1 Mã dịch vòng 7
2.2 Mã thay thế 8
2.3 Mã Affine 9
2.4 Mã Vigenere 11
2.5 Hệ mã Hill 12
2.6 Hệ mã Hoán vị 13
2.7 Các hệ mã dòng 15
2.8 Sơ lược về thám mã các hệ mã cổ điển 17
2.9 Nhận xét chung về các hệ mật mã cổ điển 18
Chương 3 19
HỆ MÃ DES 19
3.1 Mô tả DES 19
3.2 Ví dụ 27
Chương 4 31
MỘT SỐ HỆ MẬT MÃ CÔNG KHAI 31
4.1 Tổng quan 31
4.2 Hệ mã RSA 31
4.3 Hệ mã Ba Lô 32
Phần II 35
HỆ MÃ CÔNG KHAI RSA VÀ CÀI ĐẶT RSA 35
Chương 1 35
HỆ MÃ CÔNG KHAI RSA 35
1.1 Cơ sở toán học của thuật toán RSA 35
1.2 Tạo khóa của mã RSA 38
1.3 Mã hóa 39
1.4 Giải mã 40
1.5 Ví dụ 40
1.6 Một số vấn đề 41
Trang 21.7 Đánh giá độ an toàn 42
1.8 Chữ ký số bằng hệ mã RSA 44
Chương 2 46
CÀI ĐẶT THUẬT TOÁN RSA 46
2.1 Xây dựng lớp BigInteger để lưu số lớn 46
2.2 Cài đặt thuật toán 46
KẾT LUẬN 53
TÀI LIỆU THAM KHẢO 54
Phụ lục 55
MỘT SỐ MÃ NGUỒN 55
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 63
Trang 3LỜI NÓI ĐẦU
Từ xưa đến nay thông tin luôn là yếu tố quan trọng trong các hoạt động của đời sống con người Trong thời đại ngày nay, các phương thức truyền đạt thông tin ngày càng đa dạng và phát triển Với sự ra đời của máy tính và mạng máy tính, việc trao đổi thông tin đã trở lên dễ dàng hơn, nhanh chóng hơn, đa dạng hơn Nhưng kèm theo đó là các nguy cơ xâm phạm thông tin cũng ngày càng tăng Nắm bắt được thông tin nhiều khi mang ý nghĩa quyết định, sống còn đặc biệt trong các lĩnh vực: kinh tế, chính trị, an ninh, quốc phòng…Vì vậy việc bảo mật thông tin đã, đang
và sẽ là vấn đề được đặt ra rất cấp bách Để giải quyết vấn đề đó các hệ mật mã đã
ra đời Từ các hệ mật mã sơ khai cổ điển như: hệ mã dịch vòng, hệ mã Hill, hệ mã Affine,…, cho đến các hệ mật mã hiện đại, phức tạp như hệ mã DES Các hệ mật
mã công khai như hệ mã RSA, hệ mã ba lô Nhưng đi kèm với sự ra đời và phát triển của các hệ mật mã là các phương pháp phá khóa các hệ mật mã đó Cuộc chiến giữa bảo mật thông tin và xâm phạm thông tin vẫn luôn diễn ra một cách thầm lặng nhưng vô cùng gay gắt
Với mong muốn tìm hiểu được các phương pháp bảo mật thông tin em đã chọn đề tài “HỆ MÃ HÓA CÔNG KHAI RSA: QUÁ TRÌNH MÃ HOÁ, GIẢI MÃ
VÀ CHỮ KÝ SỐ” làm đồ án tốt nghiệp Tuy đã có nhiều cố gắng trong việc xây dựng đồ án nhưng do còn hạn chế về mặt thời gian cũng như kiến thức và kinh nghiệm thực tế nên đồ án không tránh khỏi những thiếu sót Vì vậy em rất mong được sự chỉ bảo, đóng góp ý kiến của các thầy cô giáo để đồ án của em ngày càng hoàn thiện hơn
Trang 4Phần I
LÝ THUYẾT CHUNG VỀ AN TOÀN BẢO MẬT
THÔNG TIN
Chương 1 MỘT SỐ KHÁI NIỆM
1.1 Khái niệm hệ mật mã
Một hệ mật mã là một bộ 5 (P,C,K,E,D) thỏa mãn các điều kiện sau:
P: Là một tập hợp hữu hạn các bản rõ, nó được gọi là không gian bản rõ
C: Là tập hữu hạn các bản mã, nó được gọi là không gian bản mã Mỗi phần tử của
C có thể nhận được bằng cách áp dụng phép mã hóa Ek lên một phần tử của P, với
kK
K: Là tập hữu hạn các khóa hay còn gọi là không gian khóa Đối với mỗi phần tử k của K được gọi là một khóa Số lượng của không gian khóa phải đủ lớn để “kẻ địch” không có đủ thời gian để thử mọi khóa có thể (phương pháp vét cạn)
Đối với mỗi kK có một quy tắc mã ek P: C và một quy tắc giải mã tương ứng
dkD Mỗi ek P: C và dk C: P là những hàm mà:Dk(ek(x)) x với mọi bản
Trang 5Quy trình thực hiện như sau:
Bộ phận quản lý khóa thực hiện lập khoá mã hoá (Ke) và khóa giải mã (Kd)
Dữ liệu gốc được mã hóa nhờ khóa mã hóa Vấn đề ở đây là quản lý khóa như thế nào để cho việc mã hóa và giải mã tương đối đơn giản và đảm bảo tuyệt đối bí mật cho khóa giải mã
1.4 Khái niệm hệ mã cổ điển
Trong các hệ mã cổ điển, người ta sử dụng cùng một khóa ở hai phía dĩ nhiên hạn chế sự an toàn và phổ biến của phương pháp đối xứng, đồng thời cũng là điểm yếu, bởi vì chỉ cần một bên để lộ khóa thì bí mật sẽ bị mất
Hệ mã cổ điển là loại mã được thực hiện thông qua hàm f có tính thuận nghịch, sử dụng f để mã hóa, biết f có thể suy ra hàm giải mã 1
Khoá Ke Qu¶n lý kho¸ Khoá Kd
Hình 1.1: Quy trình mã hoá dữ liệu
Trang 7Giả sử khóa cho MDV là K = 11 và bản rõ là :wewillmeetatmidnight
Đổi chuỗi ra số theo tứ tự trong bảng chữ cái ta có:
Ta thu được bản mã: HPHTWWXPPELEXTOYTRSE
Giả sử P = C = K = Z26 với 0 k 25 , Định nghĩa:
Trang 8Giả sử P = C = K = Z26 K chứa mọi hoán vị có thể của 26 kí hiệu
Trang 9Sau đây là một ví dụ về phép hoán vị ngẫu nhiên tạo nên một hàm mã hóa (cũng như trước các ký hiệu của bản rõ được kí hiệu bằng chữ in thường còn các ký hiệu của bản mã được kí hiệu bằng chữ in hoa)
Như vậy e (a) X , e (b) N,… Hàm giải mã là phép hoán vị ngược Điều này được thực hiện bằng cách viết hàng thứ hai lên trước rồi sắp xếp theo thứ tự chữ cái Ta nhận được:
Trang 10Ở đây tất cả các phép toán đều được thực hiện trên Z26
Để minh họa ta hãy mã hóa bản rõ “hot” Trước tiên ta biến đổi các chữ h, o, t thành
các thặng dư theo modulo 26 Ta được các số tương ứng là 7,14,19 bây giờ sẽ mã hóa:
0 26 mod 52 26 mod 3 7
23 26 mod 101 26 mod 3 14
6 26 mod 136 26 mod 3 19
Bởi vậy 3 kí hiệu của bản mã là 0, 23, 6 tương ứng với xâu kí tự axg
Thực hiện giải mã theo hàm giả mã ta thu được bản mã “hot”
2.3.2 Đánh giá độ an toàn
Do đặc trưng của hệ mã cổ điển: Hàm mã hóa phải khả nghịch, có f thì tính được 1
f , hàm f phải là hàm đơn ánh do định lý về nghiệm duy nhất của đồng dư
đa thức ax bmodm Bởi vậy, hàm mã hóa của hệ mã Affine là hàm ek(x) có nghiệm duy nhất khi (a,26) = 1
Trang 11Cho m là một số nguyên dương cố định nào đó Giả sử P = C = K = (Z26)m
Với khoá K = ( k1, k1,…,km) ta xác định:
ek(x1, x2, …, xm) = (x1+k1, x2+k2,…, xm+km)
và
dk(y1, y2,…, ym) = (y1-k1, y2-k2, …, ym-km) Trong đó tất cả các phép toán đều được thực hiện trên Z26
Từ nhận xét trên ta thấy, sẽ có 12 cách chọn a, 26 cách chọn b do đó có: 12*26 = 312 cách chọn khóa Như vậy độ an toàn là nhỏ
2.4 Mã Vigenere
2.4.1 Mô tả
Trong cả hai hệ mã dịch vòng và mã thay thế (một khi khóa đã được chọn) mỗi ký tự sẽ được ánh xạ vào một ký tự duy nhất Vì lý do đó, các hệ mật còn được gọi là các hệ thay thế đơn biểu Còn đây là một hệ mật không phải là bộ chữ đơn, mật mã này lấy tên của Blaise de Vigenere sống vào thế kỷ XVI Hệ mã Vigenere được định nghĩa như sau:
Sử dụng phép tương ứng A <=> 0, B<=> 1,…, Z<=>25 mô tả ở trên ta có thể gắn cho mỗi khóa K với một chuỗi kí tự có độ dài m được gọi là từ khóa Mật mã Vigenere sẽ đồng thời mã hóa m kí tự
Trang 12Bởi vậy dãy kí tự tương ứng của xâu bản mã sẽ là
mã hệ đơn biểu
2.5 Hệ mã Hill
2.5.1 Mô tả
Mật mã Hill cũng là một hệ mật thay thế đa biểu do Lester S.Hill đưa ra năm
1929 Giả sử m là một số nguyên dương P=C=(Z26)m Ý tưởng ở đây là lấy m tổ
Trang 13Cho m là một số nguyên dương cố định Cho P=C=(Z26)m và cho
Tất cả các phép toán đều được thực hiện trong Z26
hợp tuyến tính của m ký tự trong một phần tử của bản rõ để tạo ra m ký tự ở một phần tử của bản mã Hệ mã Hill được định nghĩa như sau:
8 11
18 7
Do không gian khóa nhỏ hơn so với hệ mã Vigenere nên độ an toàn của hệ
mã Hill nhỏ hơn so với hệ mã Vigenere
2.6 Hệ mã Hoán vị
2.6.1 Mô tả
Trang 14Cho m là một số nguyên dương xác định nào đó Cho P=C= (Z26)m và cho K gồm tất cả các hoán vị của {1,…,m} Đối với một khoá (tức là một hoán vị)
π
-1 (m)) Trong đó 1
là hoán vị ngược của hoán vị
Tất cả các hệ mật mã thảo luận ở trên đều ít nhiều xoay quanh phép thay thế: Các ký tự của bản rõ được thay thế bằng các ký tự khác trong bản mã Ý tưởng của
mã hoán vị là giữ các ký tự của bản rõ không thay đổi nhưng sẽ thay đổi vị trí của chúng bằng cách sắp sếp lại các ký tự này Thật ra thì sự phân biệt giữa mã hoán vị
và mã thay thế đã được Giovani Porta chỉ ra từ năm 1563 Định nghĩa hình thức cho
mã hoán vị như sau:
Ví dụ:
Giả sử m = 6 và các phép hoán vị ( ) như sau:
Khi đó phép hoán vị ngược 1
Shesel lsseas hellsb ythese ashore
Bây giờ mỗi nhóm 6 chữ cái được sắp xếp lại theo phép hoán vị ta có:
Trang 15EESLSH SALSES LSHBLE HSYEET HRAEOS Như vậy bản mã thu được là: EESLSHSALSESLSHBLEHSYEET HRAEOS Quá trinh giải mã làm tương tự bằng phép hoán vị đảo 1
2.6.2 Đánh giá độ an toàn
Không giống với mã thay thế ở đây không có các phép toán đại số nào cần thực hiện khi mã hóa và giải mã nên thích hợp hơn cả là dùng các ký tự mà không dùng các thặng dư theo modulo 26 Thực tế mã hoán vị là trường hợp đặc biệt của
Các hệ mật thuộc dạng này thường được gọi là các mã khối Một quan điểm
sử dụng khác là mật mã dòng Ý tưởng cơ bản ở đây là tạo ra một dòng khóa z=z1z2 và dùng nó để mã hóa một xâu bản rõ x = x1x2… theo quy tắc
, , ,1 1
Phần tử zi của dòng khóa được dùng để mã xi tạo ra y i e iz x i Bởi vậy, để
mã hoá xâu bản rõ x1x2… ta phải tính liên tiếp : z1, y1,z2, y2…
Việc giải mã xâu bản mã: y1y2… có thể được thực hiện bằng cắch tính liên tiếp: z1, x1, z2, x2…
Dưới đây là định nghĩa toán học của mật mã dòng
Trang 16Mật mã dòng là một bộ (P, C, K, L, F, E, D) thoả mãn được các điều kiện sau:
P: Là một tập hữu hạn các bản rõ có thể
C: Là một tập hữu hạn các bản mã có thể
K: Là tập hữu hạn các khóa có thể (không gian khóa)
L: Là tập hữu hạn các bộ chữ của dòng khóa
F: f f1, 2, là bộ tạo khóa dòng Trong đó, với mỗi i ≥ 1
L P
8 17 4 13 3 4 25 21 14 20 Bây giờ cộng các phần tử tương ứng rồi rút gọn theo modulo 26:
25 21 17 16 7 3 20 9 8 12 Bản mã ở dạng ký tự là : ZVRQHDUJIM
Với 0 z 25 ta xác định
ez(x) = x + z mod 26
dz(y) = y - z mod 26 (x,y Z26 )
Trang 17Giải mã:
Trước tiên biến đổi xâu thành dãy số:
25 21 17 16 7 3 20 9 8 12 Sau đó ta tính
2.7.3 Đánh giá độ an toàn của khóa tự sinh
Dĩ nhiên là mã dùng khóa tự sinh là không an toàn do chỉ có 26 khóa
2.8 Sơ lược về thám mã các hệ mã cổ điển
Trong phần này ta sẽ bàn tới một vài kỹ thuật thám mã Giả thiết chung ở đây
là luôn coi đối phương đã biết hệ mật đang dùng Giả thiết này được gọi là nguyên
lý Kerekhoff Dĩ nhiên, nếu đối phương không biết hệ mật được dùng thì nhiệm vụ của anh ta sẽ khó khăn hơn Tuy nhiên, ta không muốn độ mật của một hệ mã lại dựa trên một giả thiết không chắc chắn là đối phương không biết hệ mật được sử dụng Do đó, mục tiêu trong thiết kế một hệ mật là phải đạt được độ mật dưới giả thiết Kerekhoff
Trước tiên ta phân biệt các mức độ tấn công khác nhau vào các hệ mật Sau
đó là một số loại thông dụng nhất:
- Chỉ có bản mã: Thám mã chỉ có xâu bản mã y
- Chỉ có bản mã y và một bản rõ x
- Bản rõ đã biết được lựa chọn: Một người tấn công có thể truy nhập được vào
hệ thống và chọn một bản rõ x, sau đó mã hóa thành bản mã y tương ứng
- Bản mã được lựa chọn: Người tấn công có thể truy nhập được vào hệ thống
và chọn một bản mã y, sau đó giải mã được thành bản rõ x tương ứng Trong mỗi trường hợp trên, điều đối tượng cần phải xác định chính là khóa đã
sử dụng Rõ ràng 4 mức tấn công trên đã được liệt kê theo độ tăng của sức mạnh
Trang 18tấn công Nhận thấy rằng, tấn công theo bản mã được lựa chọn là thích hợp với các
hệ mật khóa công khai
Phương pháp chung
Kỹ thuật thám mã sử dụng phương pháp chung là dùng các kỹ thuật thống kê
để tìm tần suất xuất hiện các ký tự và các cụm ký tự
Đối với các bản mã cần phá, cũng thực hiện phép thống kê tương ứng rồi lần lượt thử gán các ký hiệu có tần suất xuất hiện tương đương với nhau Bằng cách như vậy có thể làm giảm bớt số lần thử
2.9 Nhận xét chung về các hệ mật mã cổ điển
- Tính bảo mật kém
- Khóa có thể có nhiều dạng khác nhau nhưng chỉ có một khóa chung duy nhất cho
cả người mã hóa và người giải mã
- Thuật toán nói chung phải giữ bí mật: e k x d k y e k1 x
- Không thể dùng vào mục đích xác thực, không dùng được cho chữ kí điện tử
Trang 19
Chương 3
HỆ MÃ DES
Vào đầu những năm 70, hãng IBM (Mỹ) đề xuất một thuật toán mã khối được gọi là thuật toán Lucifer Thuật toán đó đáp ứng các yêu cầu của cơ quan chuẩn quốc gia Mỹ NBS (National Bureau of Standard) và được ứng dụng ở các trạm ngân hàng tự động Thuật toán Lucifer sau này được phát triển cải tiến trở thành mã chuẩn DES
3.1 Mô tả DES
Thuật toán tiến hành theo 3 giai đoạn:
Với bản rõ cho trước x, một xâu bít x0 sẽ được xây dựng bằng cách hoán vị các bít của x theo phép hoán vị cố định ban đầu IP Ta viết: x0= IP(x) = L0R0, trong đó L0 gồm 32 bít đầu và R0 là 32 bít cuối
Sau đó tính toán 16 lần lặp theo một hàm xác định Ta sẽ tính LiRi, 1≤i ≤16 theo qui tắc sau:
Trong đó kí hiệu phép hoặc loại trừ của hai xâu bít (cộng theo modulo 2)
F là một hàm mà ta sẽ mô tả ở sau, còn K1, K2, …, K16 là các xâu bít độ dài 48 được tính như hàm của khóa K (Trên thực tế mỗi Ki là một phép chọn hoán vị bít trong K) K1,…, k16 sẽ tạo thành bảng khóa Một vòng của phép mã hóa được mô tả trên hình 3.1
Áp dụng phép hoán vị ngược IP-1 cho xâu bít R16L16, ta thu được bản mã y Tức là y = IP-1 (R16L16) Hãy chú ý thứ tự đã đảo của L16 và R16
Trang 20Hình 3.1 Một vòng của DES
Hàm f có hai biến vào: biến thứ nhất A là xâu bít độ dài 32, biến thứ hai J là một xâu bít độ dài 48 Đầu ra của f là một xâu bít độ dài 32 Các bước sau được thực hiện:
1 Biến thứ nhất A được mở rộng thành một xâu bít độ dài 48 theo một hàm
mở rộng cố định E E(A) gồm 32 bít của A (được hoán vị theo cách cố định) với 16 bít xuất hiện hai lần
2 Tính E(A) J và viết kết quả thành một chuỗi 8 xâu 6 bít=
Li-1 Ri-1
+
Li Ri
Trang 214 Xâu bít C= C1C2…C8 có độ dài 32bit được hoán vị theo phép hoán vị cố định P Xâu kết quả là P(C) được xác định là f A,J
Hàm f được mô tả trong hình 3.2 Chủ yếu nó gồm một phép thế (sử dụng hộp S), tiếp sau đó là phép hoán vị P 16 phép lặp của f sẽ tạo nên một hệ mật như
Trang 25là một xâu bít độ dài 64, trong đó 56 bít là khóa và 8 bít để kiểm tra tính chẵn lẻ nhằm phát hiện sai Các bít ở các vị trí 8,16,…, 64 được xác định sao cho mỗi byte chứa một số lẻ các số “1” Bởi vậy một sai sót đơn lẻ có thể phát hiện được trong mỗi nhóm 8 bít Các bít kiểm tra bị bỏ qua trong quá trình tính toán bảng khóa
Với một khóa K 64 bít cho trước, ta loại bỏ các bít kiểm tra tính chẵn lẻ và hoán vị các bít còn lại của K theo phép hoán vị cố định PC -1 Ta viết:
Trang 26Hình 3.3 Khóa của DES
Các hoán vị PC-1 và PC-2 được dùng trong bảng khoá là:
LS16 LS16
C16 D16 PC-2 K16
Trang 273.2 Ví dụ
Sau đây là một ví dụ về phép mã DES Giả sử ta mã bản rõ (ở dạng mã hexa
- hệ đếm 16):
0 1 2 3 4 5 6 7 8 9 A B C D E F Bằng cách dùng khóa:
1 2 3 4 5 7 7 9 9 B B C D F F 1 Khoá ở dạng nhị phân không chứa các bít kiểm tra là:
00010010011010010101101111001001101101111011011111111000
Sử dụng IP, ta thu được L0 và R0 (ở dạng nhị phân) như sau:
L0 = 1100110000000000110010011111111
L1 =R0 = 11110000101010101111000010101010 Sau đó thực hiện 16 vòng của phép mã DES như sau:
E(R0) = 011110100001010101010101011110100001010101010101
K1 = 000110110000001011101111111111000111000001110010 E(R0) K1 = 011000010001011110111010100001100110010100100111 S-box outputs 01011100100000101011010110010111
L2 = R1 = 11101111010010100110010101000100
Trang 28E(R1) = 011101011110101001010100001100001010101000001001
K2 = 011110011010111011011001110110111100100111100101 E(R1) K2 = 000011000100010010001101111010110110001111101100 S-box outputs 11111000110100000011101010101110
L3 = R2 = 11001100000000010111011100001001
E(R2) = 111001011000000000000010101110101110100001010011
K3 = 010101011111110010001010010000101100111110011001 E(R2) K3 = 101100000111110010001000111110000010011111001010 S-box outputs 00100111000100001110000101101111
L4 =R3 = 10100010010111000000101111110100
E(R3) =01010000010000101111100000000101011111111010100
K4 = 011100101010110111010110110110110011010100011101 E(R3) K4 = 001000101110111100101110110111100100101010110100 S-box outputs 00100001111011011001111100111010
L5 = R4 = 01110111001000100000000001000101
E(R4) = 101110101110100100000100000000000000001000001010
K5 = 011111001110110000000111111010110101001110101000 E(R4) K5 = 110001100000010100000011111010110101000110100010 S-box outputs 01010000110010000011000111101011
L6 = R5 = 10001010010011111010011000110111
E(R5) = 110001010100001001011111110100001100000110101111
K6 = 011000111010010100111110010100000111101100101111 E(R5) K6 =101001101110011101100001100000001011101010000000 S-box outputs 01000001111100110100110000111101
L7 = R6 = 11101001011001111100110101101001
E(R6) = 111101010010101100001111111001011010101101010011
K7 = 111011001000010010110111111101100001100010111100 E(R6) K7 = 000110011010111110111000000100111011001111101111 S- box outputs 00010000011101010100000010101101
L8 = R7 = 00000110010010101011101000010000
Trang 29E(R7) = 000000001100001001010101010111110100000010100000
K8 = 111101111000101000111010110000010011101111111011 E(R7) K8 = 111101110100100001101111100111100111101101011011 S-box outputs 01101100000110000111110010101110
L9 = R8 = 11010101011010010100101110010000
E(R8) = 011010101010101101010010101001010111110010100001
K9 = 111000001101101111101011111011011110011110000001 E(R8) K9 = 100010100111000010111001010010001001101100100000 S-box outputs 00010001000011000101011101110111
L10 = R9 = 00100100011111001100011001111010
E(R9) = 000100001000001111111001011000001100001111110100
K10 = 101100011111001101000111101110100100011001001111 E(R9) K10 = 101000010111000010111110110110101000010110111011 S-box outputs 11011010000001000101001001110101
L11 = R10 = 10110111110101011101011110110010
E(R10) = 010110101111111010101011111010101111110110100101
K11 = 001000010101111111010011110111101101001110000110 E(R10) K11 = 011110111010000101111000001101000010111000100011 S-box outputs 01110011000001011101000100000001
L12 = R11 = 11000101011110000011110001111000
E(R11) = 011000001010101111110000000111111000001111110001
K12 = 011101010111000111110101100101000110011111101001 E(R11) K12 = 000101011101101000000101100010111110010000011000 S-box outputs 01110011000001011101000100000001
L13 = R12 = 01110101101111010001100001011000
E(R12) = 001110101011110111111010100011110000001011110000
K13 = 100101111100010111010001111110101011101001000001 E(R12) K13 = 101011010111100000101011011101011011100010110001 Sbox outputs 10011010110100011000101101001111
L14 = R13 = 00011000110000110001010101011010
Trang 30E(R13) = 000011110001011000000110100010101010101011110100
K13 = 010111110100001110110111111100101110011100111010 E(R13) K14 = 010100000101010110110001011110000100110111001110 S-box outputs 01100100011110011001101011110001
L15 = R14 = 11000010100011001001011000001101
E(R14) = 111000000101010001011001010010101100000001011011
K15 = 101111111001000110001101001111010011111100001010 E(R14) K15 = 010111111100010111010100011101111111111101010001 S-box outputs 10110010111010001000110100111100
R15 = 01000011010000100011001000110100
E(R15) = 001000000110101000000100000110100100000110101000
K16 = 110010110011110110001011000011100001011111110101 E(R15) K16 = 111010110101011110001111000101000101011001011101 S-box outputs 10100111100000110010010000101001
R16 = 00001010010011001101100110010101
Cuối cùng áp dụng IP-1 vào L16, R16 ta nhận được bản mã hexa là:
8 5 E 8 1 3 5 4 0 F 0 A B 4 0 5
Trang 31Có những thuật toán mật mã khóa bất đối xứng không có tính chất khóa công khai
và bí mật như đề cập ở trên mà cả hai khóa (cho mã hóa và giải mã) đều cần phải giữ bí mật
Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được
Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không
Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên
Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng
4.2 Hệ mã RSA
Trong mật mã học, RSA là một thuật toán mật mã hóa khóa công khai Đây
là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng RSA đang được sử dụng phổ biến trong thương mại điện tử
và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn