1. Information Safe
Confidentiality
Asymmetric cipher
Van Hoang Nguyen
Mail: startnewday85@gmail.com
Department of Computer Science
Faculty of Information Technology – Hanoi University of Agriculture.
3. Vấn đề phân phối khóa
• Như ta đã biết vấn đề chính yếu tồn tại lâu dài trong
mã hóa đối xứng là:
Làm như thế nào để trao đổi khóa một cách bí mật giữa những
người, những tổ chức mong muốn được trao đổi thông tin với
nhau một cách bí mật?
• Vấn đề này được gọi là vấn đề phân phối khóa – key
distribution problem
Cái khó của vấn đề là tồn tại một nghịch lý giữa sự bí mật và sự
công khai
4. Sự xuất hiện của mạng máy tính
• Năm 1960, Bộ quốc phòng Mỹ bắt đầu tài trợ cho
dự án ARPA.
• Năm 1969, ARPANET đã được ra đời.
• Năm 1982, thì Internet ra đời.
5. Whitfield Diffie
• Whitfield Diffie sinh năm 1944 tại
Queens – NewYork.
• Lấy bằng cử nhân toán học năm 1965
tại MIT.
• Sau đó ông đã làm nhiều việc liên quan
tới an ninh máy tính.
• Đến năm 1970, ông trở thành
cyberpunk đầu tiên.
• Ông đặc biệt quan tâm tới vấn đề phân
phối khóa. Và sớm nhận ra tầm quan
trọng của vấn đề phân phối khóa, đặc
biệt khi mạng máy tính ra đời.
6. Martin Hellman
• Martin Hellman sinh năm 1945 tại
Bronx – NewYork.
• Lấy bằng cử nhân khoa học ở NewYork
University.
• Lấy bằng thạc sĩ và tiến sĩ ở Stanford
University.
• Làm việc ở IBM’s Watson Research
Center những năm 1968-69 và làm
Assistant Professor of Electrical
Engineering ở MIT những năm 1969-71.
• Hiện tại làm giảng viên ở Stanford
University.
• Ông cũng đặc biệt quan tâm tới vấn đề phân phối khóa.
7. Cuộc hội ngộ của hai thiên tài
• Năm 1974, Sau cuộc trò chuyện tại phòng thí nghiệm
Thomas J.Watson của IBM, Diffie được biết Martin
Hellman - Một người cũng quan tâm tới vấn đề phân
phối khóa như ông.
• Ngay tối hôm đó Diffie đã lái xe hơn 5.000 km để
đến gặp Hellman.
• Ngay sau buổi nói chuyện đó, Do Hellman không có đủ
tiền để thuê Diffie như một nghiên cứu viên, nên Diffie
đã đăng ký như một nghiên cứu sinh. Công cuộc tìm
kiếm giải pháp cho vấn đề phân phối khóa được bắt đầu.
Sau đó không lâu thì Ralph C.Merkle cũng ra nhập
nhóm.
8. Ralph C.Merkle
• Ralph C.Merkle nhận bằng tiến sĩ năm
1979 tại Stanford University.
• Năm 1988, ra nhập Xerox Palo
Research Center(PARC) và theo đuổi
công nghệ tính toán nano.
• Hiện tại là Giáo sư danh dự về tính
toán ở Georgia Tech College of
Computing và là giám đốc của Georgia
Tech Information Security Center.
• Hiện tại ông rành nhiều sự quan tâm
tới công nghệ nano và đã dành được
nhiều giải thưởng trong lĩnh vực này.
9. Giải pháp phân phối khóa
• Cuối cùng thì giải pháp cho vấn đề phân phối khóa
cũng ra đời vào năm 1976.
Được gọi là lược đồ trao đổi khóa Diffie-Hellman-
Merkle(hay ngắn gọn là Diffie-Hellman). Lược đồ cho phép
thiết lập một kênh trao đổi khóa bí mật trên hệ thống công
cộng.
• Các ông đã công bố những định hướng của vấn đề phân
phối khóa tại The National Computer Conference vào
tháng 6 năm 1976, và đã gây phấn khích mạnh trong
cộng đồng mật mã.
• Mặc dù vậy các ông vẫn chưa đưa ra một cài đặt
“thực tế” có thể làm việc.
10. Lược đồ trao đổi khóa
Diffie – Hellman – Merkle
• A và B thống nhất với nhau hai số Y và P: (7,11).
• A và B chọn hai số ngẫu nhiên x và z: (3,6).
• A tính α=Yx mod P: 73 mod 11 = 2.
• B tính β=Yz mod P: 76 mod 11 = 4.
• A gửi α cho B và
B gửi β cho A.
• A tính βx mod P: 43 mod 11=9,
B tính αz mod P: 26 mod 11=9.
Thật kỳ lạ là A và B đều tính ra số 9. Đó chính là chìa khóa mà A,B sẽ
sử dụng để trao ttổi thông tin với nhau một cách bí mật.
11. Alice và Bob ra công khai
• Diffie đã đưa ra ý tưởng mã hóa khóa công khai
(public-key) vào mùa hè năm 1975:
- Sử dụng một cặp khóa: một khóa công khai và một khóa riêng
bí mật.
- Khóa công khai được sử dụng để mã hóa, khóa bí mật được sử
dụng để giải mã.
• Mặc dù đưa ra ý tưởng, song Diffie chưa đưa ra
được một cài đặt thực tế có thể làm việc.
13. Alice và Bob ra công khai
• James Ellis(1924/25-1997)
- Lớn lên ở phía đông thành London những
năm 1920.
- Nghiên cứu vật lý ở Imperial College
London.
- Ra nhập Post Office Research Station ở
Dollis Hill - Nơi Tommy Flowers đã xây
dựng Colossus.
- Truyền cảm hứng từ một bài báo không tên của Bell
Telephone, ông đã tạo ra một ghi nhớ - thể hiện cùng ý
tưởng với Diffie, Hellman và Merkle.
- Mọi thứ ở GCHQ là top secret, do đó ông không được
xuất bản nó.
14. Alice và Bob ra công khai
• Clifford Cocks và Malcolm Williamson.
- Những nhà toán học ở GCHQ đã tiếp nối
những công việc của Ellis.
- Năm 1973, Cocks đã đưa ra ý tưởng
tương tự RSA. Clifford Cocks
- Năm 1974, Williamson phát hiện thuật
toán tương tự như của Diffie và Hellman.
- Mãi đến năm 1997, chính phủ Anh mới
xuất bản thông tin về các công việc ở Williamson
GCHQ.
15. Tính an toàn của mã hóa
Khóa công khai
• Cũng như với mã hóa đối xứng, mã hóa khóa công khai
cũng luôn phải đương đầu với tấn công vét cạn. Do đó
tính an toàn của khóa công khai cũng phải dựa trên số
lượng khóa tiềm năng.
• Tính an toàn của mã hóa khóa công khai phụ thuộc vào
tính khó của những vấn đề tính toán.
Do dựa trên tính khó của vấn đề tính toán, nên các thuật toán mã hóa
khóa công khai thường phải thao tác trên các con số khá lớn để đảm bảo
vấn đề tính toán có độ khó đủ để không có lời giải khả thi. Cũng chính vì
vậy các thuật toán mã hóa khóa công khai thường chạy chậm.
16. Ứng dụng của mã hóa
Khóa công khai
• Các ứng dụng với khóa công khai bao gồm 3 loại:
- Mã hóa giúp đảm bảo tính bí mật của thông tin.
- Làm nền tảng cho chữ ký điện tử.
- Được sử dụng để trao đổi khóa.
• Một số thuật toán mã hóa khóa công khai chỉ phục
vụ cho các ứng dụng đặc biệt.
19. RSA Public-key encrytion
• Được sáng tạo bởi Rivest, Shamir và Adleman ở MIT
vào năm 1977.
• Là mã công khai được biết đến nhiều nhất và sử dụng
rộng rãi nhất.
• Dựa trên lũy thừa trên trường hữu hạn các số nguyên
modulo nguyên tố.
• Phép lũy thừa cần O((logn)3) phép toán.
• Sử dụng các số rất lớn 1024 bits.
• Tính an toàn dựa vào độ khó phân tích ra thừa số
các số lớn. Lũy thừa yêu cầu O(elognloglogn) phép toán.
20. RSA Public-key encrytion
• Lược đồ sinh khóa
Mỗi người sử dụng sẽ được tạo một RSA publickey và một RSA
privatekey tương ứng. Khóa được tạo theo thuật toán sau:
Algorithm: Key generation for RSA
Sinh ra hai số nguyên tố “lớn” p và q phân biệt và có cỡ gần
bằng nhau.
Tính n=p.q do đó Ø(n)=(p-1).(q-1)
Chọn số ngẫu nhiên e sao cho: 1<e<Ø(n) và gcd(e,Ø(n))=1.
Tính số nguyên tố d sao cho: 1<d<Ø(n) và e.d ≡ 1 mod Ø(n).
Publickey là PU{e,n} và Privatekey là PR{d,n} hoặc PR{d,p,q}
21. RSA Public-key encrytion
• Lược đồ mã hóa:
Khi đối tượng B muốn gửi một thông điệp cho đối tượng A. Sau
khi đã nhận được khóa công khai(RSA publickey). B sẽ tiến thành
mã hóa theo tthuật toán sau:
Algorithm: RSA publickey encryption
Thi hành việc xác nhận publickey PU{n,e}.
Đặc tả thông điệp cần mã hóa như một số nguyên m: m [0,n-
1].
Tính c=me mod n.
Gửi c cho A; c chính là ciphertext.
22. RSA Public-key encrytion
• Lược đồ giải mã:
Khi A nhận được c do B gửi đến. A sẽ thực hiện giải mã thông điệp
theo thuật toán sau:
Algorithm: RSA publickey decryption
m=cd mod n
23. Ví dụ RSA: Key generation
• Chọn các số nguyên tố: p=17 và q=11.
• Tính n=p.q = 17x11=187.
• Tính Ø(n)=(p-1)(q-1) = 16x10=160.
• Chọn e: gcd(e,160)=1; lấy e=7.
• Xác định d: de≡1 mod 160 và d<160.
Giá trị cần tìm là d=13, vì 23x7=161=1x160+1.
• Công bố khóa công khai PU={7,187}.
• Giữ khóa bí mật PR={23,17,11}.
24. Ví dụ RSA: En/Decryption
• Cho mẩu tin m=88.
• Mã: c=me mod n = 887 mod 178 = 11.
• Giải mã: m=cd mod n = 1123= mod 178 = 88.
• Có thể sử dụng định lý phần dư trung
hoa để giải mã cho nhanh.
27. Mã hiệu quả
Efficient Encryption
Tính ac mod n?
28. Tính ac mod n?
Giả sử: bkbk-1…b1 là biểu diễn trong cơ số 2 của c.
Tính ac mod n?
c=0; f=1;
for i=k downto 1 do
BEGIN
c=2*c;
f=(f*f)mod n;
if bi == 1 then
BEGIN
c=c+1;
f=(f*a)mod n
END;
END;
return f;
30. Mã hiệu quả
Efficient Encryption
Lựa chọn e như thế nào?
31. Mã hiệu quả
Efficient Encryption
Lựa chọn e như thế nào?
• Nếu chọn e nhỏ thì quá trình mã hóa nhanh
hơn.
• Nên chọn e mà biểu diễn nhị phân của nó
chứa ít bit 1. Chẳng hạn như e=3,17 hay
65537(216+1).
32. Mã hiệu quả
Efficient Encryption
• Nhưng e nhỏ thì không an toàn!
• Có thể bị tấn công bởi định lý phần dư
Trung Hoa.
Ví dụ: Với e=3, nếu Alice gửi 3 message cho 3 người khác
nhau với n1,n2,n3. Eve có thể:
- Có: c1=m3 mod n1 , c2=m3 mod n2, c3=m3 mod n3
- Sử dụng định lý phần dư Trung Hoa để tính:
c=m3 mod(n1*n2*n3)
- Do m<n1, n2,n3 do đó m3<n1*n2*n3 => Từ đây eve chỉ
cần tính căn bậc 3 của m3
33. Giải mã hiệu quả
Efficient Decryption
m=c d mod n
với e.d ≡ 1 mod Ø(n)
34. Giải mã hiệu quả
Efficient Decryption
• Với d nhỏ thì quá trình giải mã rõ ràng rất
tiện lợi.
• Tuy nhiên cũng giống như e, d nhỏ thì RSA
trở nên không an toàn.
• Quá trình giải mã thường áp dụng định lý
phần dư Trung Hoa để tính toán nhanh hơn.
35. Sinh khóa RSA
RSA Key generation
• Người sử dụng RSA cần phải:
-Xác định ngẫu nhiên 2 số nguyên tố lớn.
- Chọn e để tính d.
• Các số nguyên tố p,q không dễ suy ra nếu
biết tích n=p.q.
- Như vậy p và q phải đủ lớn.
- p, q thường được đoán và kiểm tra theo nguyên tắc
xác suất.
- Các số e và d là nghịch đảo của nhau, có thể dùng
thuật toán nghịch đảo để tính số này khi biết số kia.
36. Tính an toàn của RSA
Các phương pháp tấn công:
• Tìm kiếm khóa bằng phương pháp vét
cạn(không khả thi với kích thước các số đủ
lớn).
• Tấn công bằng toán học: dựa vào độ khó
của việc tính Ø(n) bằng cách phân tích n ra
thừa số nguyên tố.
• Tấn công thời gian.
• Tấn công với bản mã chọn trước.
37. Factoring Problem
• Tấn công toán học có 3 dạng:
- Phân tích n thành p.q, sau đó tính Ø(n) và d.
- Tìm Ø(n) trực tiếp và tính d.
- Tìm d trực tiếp.
• Hiện tại, ta tin rằng các phương pháp đều
tương đương với bài toán phân tích thừa số.
- Có các bước tiến chậm theo thời gian.
- Hiện tại RSA 1024 và 2048 được cho là an toàn.
38. Timing Attack
• Phát triển vào giữa năm 1990.
• Paul Kocher chỉ ra rằng kẻ thám mã có thể
xác định được khóa riêng nếu theo dõi thời gian
máy tính cần để giải mã các bản tin.
• Tấn công thời gian không chỉ áp dụng cho RSA
mà cả với các hệ mã công khai khác.
• Tấn công thời gian giống như kẻ cướp đoán sự
an toàn bằng cách quan sát một người nào đó
trong bao lâu chuyển quay điện thoại từ số này
sang số khác.
39. Tấn công bảng mã chọn trước
• RSA có điểm yếu với tấn công bảng mã chọn
trước.
• Kẻ tấn công chọn bản mã và đoán bản rõ được
giải mã.
• Chọn bản mã để khám phá RSA cung cấp thông
tin để thám mã.
• Có thể tính với bộ đệm ngẫu nhiên của bản rõ.
• Hoặc sử dụng bộ đệm mã hóa phản
xứng(OASP).