Công cụ này mô phỏng quy trình mã hóa và giải mã dữ liệu bằng thuật toán DES (Data Encryption Standard). Giao thức Diffie-Hellman được sử dụng để trao đổi khóa an toàn, kết hợp với chữ ký số để xác minh danh tính, ngăn chặn tấn công man-in-the-middle (MITM). Người dùng nhập hai số bí mật (a
và b
) để tạo khóa chung, sau đó khóa này được băm bằng MD5 (lấy 16 ký tự HEX đầu tiên) để tạo khóa DES. Quy trình bao gồm:
a
và b
chỉ dành cho mục đích mô phỏng. Trong thực tế, mỗi bên chỉ giữ số bí mật của mình và trao đổi khóa công khai qua kênh liên lạc.
Công cụ cho phép mô phỏng giao thức Diffie-Hellman bằng cách nhập cả hai số bí mật (a
và b
) để tính toán khóa công khai và khóa chung. Quy trình bao gồm:
p
và số nguyên g
(generator). Công cụ có thể cung cấp giá trị mặc định.a
và b
.Tham số | Giá trị |
---|---|
p |
23 |
g |
5 |
Số bí mật a |
18 |
Số bí mật b |
7 |
Khóa | Công thức | Ví dụ |
---|---|---|
A |
g^a mod p |
5^18 mod 23 = 6 |
B |
g^b mod p |
5^7 mod 23 = 17 |
Khóa | Công thức | Ví dụ |
---|---|---|
K |
A^b mod p = B^a mod p |
17^18 mod 23 = 6^7 mod 23 = 3 |
a
và b
để thấy toàn bộ quy trình từ tính khóa công khai đến khóa chung. Trong thực tế, b
là bí mật của đối phương và không được chia sẻ, khóa công khai trước khi gửi cho người nhận cần phải được thực hiện cùng chữ ký số để xác minh.
Trước khi xác minh chữ ký số, cần tạo cặp khóa RSA gồm khóa công khai và khóa riêng để sử dụng trong quá trình ký và xác minh danh tính. Khóa riêng được giữ bí mật, còn khóa công khai được chia sẻ để xác minh chữ ký.
p
và q
(ví dụ: p = 61
, q = 53
).n = p * q
và hàm Euler φ(n) = (p-1) * (q-1)
.e
sao cho 1 < e < φ(n)
và e
nguyên tố cùng nhau với φ(n)
.d
sao cho d * e ≡ 1 mod φ(n)
.Tham số | Ví dụ |
---|---|
n |
61 * 53 = 3233 |
φ(n) |
(61-1) * (53-1) = 3120 |
Khóa công khai | (e, n) = (17, 3233) |
Khóa riêng | (d, n) = (2753, 3233) |
(d, n)
ở nơi an toàn, không chia sẻ.(e, n)
với đối phương để họ sử dụng trong xác minh chữ ký.e, n
và d, n
).p
và q
phải rất lớn (thường 2048 bit hoặc hơn) để đảm bảo an toàn. Trong mô phỏng, các số nhỏ được dùng để đơn giản hóa.
Để đảm bảo khóa công khai từ A
gửi đến B
đáng tin cậy, công cụ sử dụng chữ ký số để xác minh danh tính.
Kết quả nhận được: S = m^d mod n = 6^2753 mod 3233 = 2902 (đây là chữ ký)
Người gửi (A) sẽ gửi khóa công khai diffie-helman và chữ ký cho (B): (6,2902)
Tham số | Giá trị |
---|---|
Thông điệp cần xác minh | 6 |
Chữ ký số | 2902 |
Khóa công khai RSA | (e, n) = (17, 3233) |
Kết quả nhận được: m = s^e mod n = 2902^17 mod 3233 = 6 (kết quả sau khi xác minh chữ ký trùng khớp với nội dung mà A gửi) -> thông điệp không bị thay đổi
Sau khi xác minh B
, công cụ băm khóa chung bằng MD5 để tạo khóa DES.
K
đã được tính ở bước 1 (K = 3
).K
bằng MD5 (vì thuật toán DES cần dữ liệu đầu vào có độ dài 64 bit tương ứng 8 byte) lấy 16 ký tự HEX đầu tiên (8 byte) làm khóa DES.Thao tác | Giá trị |
---|---|
Khóa chung K |
3 |
MD5(K ) |
eccbc87e4b5ce2fe28308fd9f2a7baf3 |
Khóa DES | eccbc87e4b5ce2fe |
Sử dụng khóa DES để mã hóa thông điệp. Quy trình bao gồm:
Định dạng | Giá trị |
---|---|
ASCII | Là dạng chữ (Chỉ hỗ trợ tiếng Anh) như "Hello". |
HEX | Là dạng mã hóa thành số kiểu hệ 16, từ 0-9 và A-F. Ví dụ: eccbc87e4b5ce2fe |
BIN | Là dạng chỉ dùng 0 và 1. Ví dụ: 1110110011001011110010000111111001001011010111001110001011111110 |
eccbc87e4b5ce2fe
khóa này ở dạng HEX.Đầu vào | Giá trị |
---|---|
Thông điệp cần mã hóa | Hello (Ascii). |
Khóa | eccbc87e4b5ce2fe (Hex) |
Kết quả: | D845C0056A740A0A (Hex) 1101100001000101110000000000010101101010011101000000101000001010 (BIN) |
Sử dụng khóa DES để giải mã bản mã. Quy trình bao gồm:
D845C0056A740A0A
(HEX). eccbc87e4b5ce2fe
.Đầu vào | Giá trị |
---|---|
Thông điệp cần giải mã | D845C0056A740A0A (Hex). |
Khóa | eccbc87e4b5ce2fe (Hex) |
Kết quả: | 48656C6C6F000000 (Hex) 0100100001100101011011000110110001101111000000000000000000000000 (BIN) Hello (Ascii) |
Dưới đây là toàn bộ quy trình:
Thao tác | Đầu vào | Đầu ra |
---|---|---|
Tạo khóa Diffie-Hellman |
p = 23 , g = 5 Số bí mật: a = 18 , b = 7
|
Khóa công khai: A = 6 , B = 17 Khóa chung: K = 3
|
Tạo khóa RSA |
Số nguyên tố: p = 61 , q = 53 e = 17
|
Khóa công khai: (e, n) = (17, 3233) Khóa riêng: (d, n) = (2753, 3233)
|
Tạo chữ ký số |
Khóa bí mật (RSA) của A = 2753 , dữ liệu cần ký là khóa công khai (Diffie-helman) của A = 6
|
S = m^d mod n = 6^2753 mod 3233 = 2902
|
Xác minh chữ ký |
Khóa công khai (RSA) của A = (17,3233) , chữ ký số S = 2902
|
m = s^e mod n = 2902^17 mod 3233 = 6 -> Xác minh thành công
|
Tạo khóa DES |
Khóa chung: K = 3
|
Khóa DES: eccbc87e4b5ce2fe (16 ký tự HEX đầu của MD5)
|
Mã hóa |
Bản rõ: Hello (ASCII)Khóa: eccbc87e4b5ce2fe (HEX)
|
Bản mã: D845C0056A740A0A (HEX)
|
Giải mã |
Bản mã: D845C0056A740A0A (HEX)Khóa: eccbc87e4b5ce2fe (HEX) |
Bản rõ: Hello (ASCII)
|
a
và b
để minh họa Diffie-Hellman. Trong thực tế, chỉ chia sẻ khóa công khai (A
, B
), không chia sẻ số bí mật.