Professional Documents
Culture Documents
Chap2p - Diffie - Hellman
Chap2p - Diffie - Hellman
Lưu ý: chỉ có a, b và gab = gba mod p là được giữ bí mật. Tất cả các giá trị
khác như p, g, ga mod p và gb mod p được truyền công khai. Sau khi Alice và Bob
tính được bí mật chung, cả hai có thể sử dụng nó làm khóa mã hóa chung chỉ có
hai người biết để gửi dữ liệu trên kênh truyền thông mở.
Ví dụ:
1. Alice và Bob thỏa thuận sử dụng chung một số nguyên tố p=23 và căn nguyên
thủy g=5 (phần tử sinh).
2. Alice chọn một số nguyên bí mật a=6, và gửi cho Bob giá trị Xa = ga mod p
Xa = 56 mod 23 = 8
3. Bob chọn một số nguyên bí mật b=15, và gửi cho Alice giá trị Yb = gb mod p
Yb = 515 mod 23 = 19
4. Alice tính Ks = (Yb)a mod p
Ks = 196 mod 23 = (515)6 mod 23 = 2
5. Bob tính Ks = (Xa)b mod p
Ks = 815 mod 23 = 2
6. Như vậy Alice và Bob cùng chia sẻ bí mật chung là số 2.
Mô tả giao thức
Thiết lập khóa
1. Alice và Bob thỏa thuận sử dụng chung một nhóm cyclic hữu hạn G và
một phần tử sinh g của G. Phần tử sinh g công khai với tất cả mọi người,
kể cả kẻ tấn công. Dưới đây chúng ta giả sử nhóm G là nhóm nhân.
2. Alice chọn một số tự nhiên ngẫu nhiên a và gửi ga mod p cho Bob.
3. Bob chọn một số tự nhiên ngẫu nhiên b và gửi gb mod p cho Alice.
4. Alice tính (gb)a mod p. hay (Yb)a mod p=Ks
5. Bob tính (ga)b mod p. hay (Xa)b mod p=Ks
Vì giá trị (gb)a và (ga)b là bằng nhau (do nhóm G có tính kết hợp), cả Alice và
Bob đều tính được giá trị gab và có thể sử dụng nó cho khóa bí mật chung.
Mã hóa
Thông điệp m trước khi được gửi đi bởi Alice (hoặc Bob) sẽ được mã hóa
thành mgab.
Giải mã
Để giải mã thông điệp m, gửi dưới dạng mgab, Bob (hoặc Alice) phải tính được giá
trị (gab)-1. Giá trị (gab)-1 được tính như sau:
Vì Bob biết |G|, b, và ga, mặt khác theo định lý Lagrange trong lý thuyết nhóm ta
có x|G| = 1 với mọi x thuộc G,
nên Bob tính được (ga)|G|-b = ga(|G|-b) = ga|G|-ab = ga|G|g-ab = (g|G|)ag-ab=1ag-ab=g-ab=(gab)-1.
Việc giải mã bây giờ trở nên dễ dàng: Bob sử dụng (gab)-1 đã tính và phục hồi
thông điệp nguyên thủy bằng cách tính: mgab(gab)-1 = m(1) = m.