Đề tài : Tìm hiểu Hệ mật mã RSA
Thành viên:
Hệ mật mã đối xứng không thỏa mãn được 2 mục tiêu an toàn:
- Alice và Bob trao đổi thông tin bí mật
- Alice cần phải biết thông tin chắc chắn đến từ
Bob, và ngược lại
- Alice và Bob trao đổi thông tin bí mật
- Nếu Alice đã gửi thông tin nào đó cho Bob thì
Alice không thể chối bỏ thông tin đó là của mình
Tại sao lại cần Hệ mật mã công khai?
Tại sao lại cần Hệ mật mã công khai?
Quản lý khóa đối xứng là một vấn đề nan giải
Trong các hệ khóa đối xứng, mỗi cặp
người dùng phải có khóa riêng
N người dùng cần N * (N-1)/2 khóa
Việc quản lý khóa trở nên phức tạp khi
số lượng người dùng tăng
Hệ mật mã khóa công khai (PKC) ra đời
Hệ mật mã công khai
- Khóa riêng bí mật
- Khóa công khai có thể chia sẻ
- N người dùng cần N khóa công khai được xác thực
- Hạ tầng quản lý khóa công khai PKI
Hệ mật mã công khai
Các thuật toán mã khóa công khai phổ biến:
Thuật toán RSA - Lịch sử
Năm 1977,hệ mật mã khóa công khai RSA được Ron Rivest, Adi Shamir và Len Adleman(R.S.A) mô tả lần đầu tiên.
Trước đó, vào năm 1973, Clifford Cocks - một nhà toán học người Anh đã 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
Thuật toán RSA có hai Khóa:
LÝ THUYẾT
VÍ DỤ
Bước 1: B (người nhận) tạo hai số nguyên tố lớn ngẫu nhiên p và q
Bước 1: Chọn số p = 11 và q = 23
(hai số này là 2 số nguyên tố)
Bước 2: Tính n=p*q và Φ(n) = (p-1)* (q-1)
Bước 2: n = 11 * 23 = 253
Φ(n) = 10 * 22 = 220
Bước 3: chọn một số ngẫu nhiên e
(0< e < Φ(n)) sao choƯCLN(e,Φ(n))=1
Bước 3: chọn e = 3 vì ƯCLN(3, 220) = 1
Bước 4: tính d = e^-1 (mod m) (dùng thuật toán Euclide mở rộng)
Bước 4: d = 147
Bước 5: Khóa công khai: (e,n)
Khóa bí mật : (d,p,q)
Bước 5: Khóa công khai: (3,253)
Khóa bí mật: (147,11,23)
LÝ THUYẾT
VÍ DỤ
Bước 1:A nhận khóa công khai của B
Bước 1:A nhận khóa công khai của b : (e,n) = (3,253)
Bước 2: A biểu diễn thông tin cần gửi thành số m (0<=m<=(n-1))
Bước 2: Thông tin cần gửi
m = 165
Bước 3: Tính
c = m^e mod n
Bước 3: Tính
c = 165^3 mod 253 = 110
Bước 4: Gửi c cho B
Bước 4: Gửi c = 110
Bước 5: Giải mã
m = c^d mod n
Bước 5: Giải mã
m = 110^147 mod 253 = 165
ĐỊNH LÝ RSA
Nếu:
thì:
(m^e)^d mod n = m
ĐỊNH LÝ EULER & FERMAT
Nếu:
thì:
x^ef(n) = 1 mod n
Không phải lúc nào thông tin cũng được che giấu tốt,tức là mọi khóa đều tốt và đều làm thay đổi bản rõ hoàn toàn.
Ví dụ:
Có: Bản rõ m = 8
Chọn p = 5,q = 7
Tính ra n = 35,Φ(n) = 24
Chọn e = 5 thỏa mãn UCLN(e,Φ(n)) = 1
Mã hóa
c = m^e mod n
Bản mã: c = 8
Vấn đề này nảy sinh ra 1 lỗ hổng gọi là Man-in-the-middle attack
- Khi A và B trao đổi thông tin thì C có thể gửi cho A một khóa bất kì để A tin rằng đó là khó công khai của B gửi
- Sau đó C sẽ giải mã và đánh cắp được thông tin.Đồng thời mã hóa lại thông tin theo khóa công khai của B và gửi lại cho B.
- Về nguyên tắc,cả A và B đều không phát hiện được sự can thiệp của C
So sánh RSA và DES:
Tốc độ mã hóa:
So sánh RSA và DES:
Tốc độ giải mã
Ứng dụng cơ bản của RSA:
Trong đó,tạo chữ ký điện tử là ứng dụng lớn nhất của RSA.
- Khóa bí mật dùng để tạo chữ ký số (CKS)
- Khóa công khai dùng để thẩm định CKS-> xác thực
Tạo chữ ký số
Thẩm định chữ ký
Xin cám ơn mọi người đã lắng nghe