Lịch SửThuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts MIT.. Nhưng tại thời điểm đó thì thuật toán này không
Trang 1BẢO MẬT THÔNG TIN
Thuật Toán Mã Hóa
RSA
GVHD: Tống Thanh Văn
Nhóm 11:
Ngô Gia Băng
Đinh Phúc Thọ
Phạm Chí Phương
Trang 2Lịch Sử
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả (R.S.A).
Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự.
Nhưng tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm.
Trang 3Lý Thuyết Số
Trang 4Phép chia Modulo
Phép chia modulo là một pháp chia lấy phần dư: Ví dụ: 55 mod 8 = 7 tức là 55 :
8 dư 7
Tổng quát a mod n = r với a >= 0; n>0; 0 <=r<n-1
Trang 5Phép chia Modulo
Phép chia modulo là một pháp chia lấy phần dư: Ví dụ: 55 mod 8 = 7 tức là 55 : 8 dư 7
Tổng quát a mod n = r với a >= 0; n>0; 0 <=r<n-1
Trang 6Một số tính chất của modulo
a) a+b) mod n = [(a mod n) + (b mod n)] mod n b) (a-b) mod n = [(a mod n) - (b mod n)] mod n c) (a x b) mod n = [(a mod n) x (b mod n)] mod n
Trang 7Định Lý Fermat
Định lý:
Nếu p là số nguyên tố và a là số nguyên tố không chia hết cho p thì 1 mod p
Ví Dụ:
p = 5 , a= 9 => = 6561 = 1 mod 5
p = 5 , a= 11 => = 14641 = 1 mod 5
Trang 8Phép Logarit Rời Rạc
Ta định nghĩa phép lũy thừa modulo như sau:
để tính y từ a(với x, n là các số nguyên):
y = mod n y = (a.a.a….) mod n
Ví Dụ:
Trang 9Mã Khóa Công Khai
RSA
Trang 10Sơ lược về RSA
RSA được sử dụng rộng rãi trong công tác mã hoá và công nghệ chữ ký điện tử Trong hệ mã hóa này, public key có thể chia sẻ công khai cho tất
cả mọi người Hoạt động của RSA dựa trên 4 bước chính: sinh khóa, chia
sẻ key, mã hóa và giải mã
Trang 11Mô Tả Hoạt Động
● Thuật toán RSA có hai khóa:
○ Khóa công khai (Public key): khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa
○ Khóa bí mật (Private key): những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
Trang 12Khởi Tạo Khóa RSA
Bước 1: chọn 2 nguyên tố lớn ngẫu nhiên và độc lập p và q.
Bước 2: tính n= pq.
Bước 3: tính giá trị hàm số ɸ(n)= (p-1)(q-1)
Bước 4: chọn 1 số tự nhiên e sao cho 1<e<ɸ(n) và UCLN (e,ɸ(n))= 1.
Bước 5: tính d= e-1 bằng cách dung thuật toán Euclide, tìm số tự nhiên x sao cho d= (x*(p-1)*(q-1)+1)/ e.
Bước 6: n và e làm khóa công khai, n và d làm khóa bí mật.
Trang 13Mã Hóa và Giải Mã
● Bước 1: A nhận khóa công khai của B
● Bước 2: A biểu diễn thông tin cần gửi thành số m (0<m<n) sao cho m,n nguyên tố cùng nhau
● Bước 3: tính c= me mod n
● Bước 4: gửi giá trị c cho B
● Bước 5: giải mã m= cd mod n
Sơ đồ quá trình
Trang 14Ví Dụ Minh Họa
Thủ tục tạo khóa:
● Chọn 2 số nguyên tố p = 2 và q = 11 (giữ bí mật hoặc hủy sau khi tạo khóa)
● n = pq = 2.11 = 22 ( công khai )
● ɸ(n) = (p-1)(q-1) = 10
● Chọn e sao cho 0 < e < 10 và e và ϕ(n) là số nguyên tố cùng nhau Chọn e = 3 ( số mũ công khai)
● Tính d biết (d,e) = 1 ( mod ϕ(n) )
d.e = k.ϕ(n) + 1
3d - 1 = 10k
d = (10 k + 1) / 3
d = 7 ( k = 2 ) ( số mũ bí mật)
● Khóa công khai (10;3)
● Khóa bí mật (7)
Trang 15Mã hóa và giải mã:
● Giả sử ta cần mã hóa và giải mã văn bản có giá trị m = 4
Tính c ( c là văn bản mã) :
c = me mod n = 43 mod 22 = 20
=> c = 20
m = cd mod n = 207 mod 22 = 4 => m = 4
Trang 16Độ An Toàn Của Mã Hóa RSA
Độ an toàn của hệ thống RSA dựa trên 2 vấn đề: bài toán phân tích ra số nguyên tố các số nguyên lớn và bài toán RSA Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với RSA
Vì vậy muốn xây dựng hệ RSA an toàn thì n=p*q phải là một số đủ lớn, để không có khả năng phân tích nó về mặt tính toán Để đảm bảo an toàn nên chọn các số nguyên tố p và q từ 100 chữ số trở lên
Trang 17Ứng Dụng Của Hệ Mã Hóa RSA
1 Độ bảo mật cao (nghĩa là để giải mã ddược mà không biết kháo thì phải tốn hàng triệu năm)
2 Thao tác nhanh (thao tác mã hóa và giải mã ít tốn thời gian)
3 Dùng chung được
4 Có ứng dụng rộng rãi
5 Có thể dùng để xác định chủ nhân (dùng làm chữ ký điện tử)
Vì vậy mà thuật toán RSA được sử dụng rộng rãi trong công tác mã hoá và công nghệ chữ ký điện tử: truyền dẫn quỹ điện tử chuyển đổi thư điện tử, giao dịch tiền điện tử, thương mại điện tử, tài chính- ngân hàng