Báo cáo môn Mật Mã và An Toàn Dữ Liệu TÍNH LŨY THỪA VỚI SỐ MŨ LỚN THEO MODULO. Yêu cầu của bài toán tính lũy thừa với số mũ lớn theo phép tính modulo là làm sao tính được phần dư của phép chia ad cho N một cách nhanh nhất, với a, d, N là các số tự nhiên lớn, có thể có hàng trăm chữ số.
Trang 1TÍNH LŨY THỪA VỚI SỐ
MŨ LỚN THEO MODULO
Môn Học: Mậ Mã và An Toàn Dữ Liệu – Thầy Trịnh Nhật Tiến Học Viên: Ma Trọng Khôi
1
Trang 2Nội Dung
Giới thiệu
Ứng dụng
• Mã hóa trong thuật toán RSA
• Giải mã trong thuật toán RSA
• Kiểm tra số nguyên tố
Thuật toán
Thực nghiệm
2
Trang 3Giới Thiệu
Bài toán:
a d ≡ ? (modulo N)
• a, d, N là các số nguyên dương rất lớn
3
Trang 4Ứng Dụng
RSA
• n = p1 * p2, p1, p2 là số nguyên tố rất lớn
• e là số nguyên dương, gcd(n, e) = 1
• ᵠ(n) = ᵠ(p1) ᵠ(p2) = (p1 - 1)(p2 - 1)
• d * e ≡ 1 ≡ 1 + k * ᵠ(n) (modulo ᵠ(n))
• Mã hóa: m e ≡ c (modulo n)
• Giải mã: c d ≡ (m e ) d ≡ m * (m ᵠ (n) ) k ≡ m (modulo n)
Kiểm tra số nguyên tố: an-1 ≡ 1 (modulo n)
4
Trang 5ad modulo N
Tính thông thường
Phân tích thành nhân tử
VD: a55 ≡ (a5)11 (modulo n)
Vấn đề:
Số lượng phép nhân lớn
Phép Tính Với Số lớn
Hướng giải quyết:
Chia để trị số phép nhân là ít nhất
(a * b) mod n = [(a mod n) * (b mod n)] mod n
5
Trang 6ad modulo N – Phương Pháp Nhị Phân
Biểu diễn d ở dạng nhị phân:
c = a169 mod n = (a128 * a32 * a4 * a1) mod n
6
a 1 a 2 a 4 a 8 a 16 a 32 a 64 a 128
Trang 7Giả Mã
Độ phức tạp: O(log2(d))
Số phép nhân trung bình (1/2 * log2(d))
7
Trang 8Phương Pháp m-ary
Trường hợp đặc biệt: m = 2k
Tính a0, a1, a2, a3
số phép nhân: 2 + 6 + 3 = 11
; [2]
8
ST
1 11 a 3 mod n a 3 mod n
2 11 (a 3 ) 4 mod n a 12 * a 3 mod n
3 10 (a 15 ) 4 mod n a 60 *a 2 mod n
4 10 (a 62 ) 4 mod n a 248 *a 2 mod n
d
Trang 9Cửa sổ trượt
Độ dài cố định (w):
Đoạn bit 0 có chiều dài tùy ý
Đoạn bit khác 0 có độ dài w
Ví dụ: d = 3665 = 111 00 101 0 001
9
ST T
Bit s
1 111 a 7 mod n a 7 mod n
2 00 (a 7 ) 4 mod n a 28 mod n
3 101 (a 28 ) 8 mod n a 224 *a 5 mod n
4 0 (a 229 ) 2 mod n a 458 mod n
5 001 (a 458 ) 8 mod n a 3664 *a 1 mod n
Trang 10Cửa sổ trượt
Độ dài biến thiên (w,q):
Đoạn bit 0 có chiều dài ≥ q
Đoạn bit khác 0 có chiều dài ≤ w
Ví dụ: w = 5, q = 2, d = 11173 = 101 0 11101 00 101
10
Trang 11Cây Lũy Thừa
11
Trang 12Cây Lũy Thừa
Giả thiết:
nút ei là có độ cao là k
Dựng các nút có độ cao k+1:
ei + a1, ei + a2, …, ei + ak
a1 = 1, ak = ei
12
Trang 13Chuỗi cộng
Chuỗi cộng: a0, a1, …, ar
a0 = 1,
ak = ai + aj (i, j ≤ k)
Chuỗi cộng ngắn nhất tính ra d?
Ví du: d = 55
Nhị Phân: 1 2 3 4 7 8 16 23 32 55 Power tree: 1 2 3 6 12 13 26 27 54 55
13
Trang 14 [1] Element of Number Theory
[2] Daniel M Gordon A survey of fast exponentiation methods, Dec 30,
1997
14
Trang 16Thank You!