TÍ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
Nộ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
Giớ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
Ứng Dụng
RSA
•
n = p
1
* p
2
, p
1
, p
2
là số nguyên tố rất lớn
•
e là số nguyên dương, gcd(n, e) = 1
•
ᵠ
(n) =
ᵠ
(p1)
ᵠ
(p2) = (p
1
- 1)(p
2
- 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ố: a
n-1
≡ 1 (modulo n)
4
a
d
modulo N
Tính thông thường
Phân tích thành nhân tử.
VD: a
55
≡ (a
5
)
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
a
d
modulo N – Phương Pháp Nhị Phân
Biểu diễn d ở dạng nhị phân:
c = a
169
mod n = (a
128
* a
32
* a
4
* a
1
) mod n
6
d 1 0 0 1 0 1 0 1
c a
1
- - a
8
- a
32
- a
128
a
1
a
2
a
4
a
8
a
16
a
32
a
64
a
128
Giả Mã
Độ phức tạp: O(log
2
(d))
Số phép nhân trung bình (1/2 * log
2
(d))
7
Phương Pháp m-ary
Trường hợp đặc biệt: m = 2
k
Ví dụ: d = 250 = 11 11 10 10
Tính a
0
, a
1
, a
2
, a
3
số phép nhân: 2 + 6 + 3 = 11
; [2]
8
STT Bits Bước a Bước b
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
Cử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
STT Bits Bước a Bước b
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
Cử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
Cây Lũy Thừa
11
Cây Lũy Thừa
Giả thiết:
đã dựng được cây có độ cao k
nút e
i
là có độ cao là k
Dựng các nút có độ cao k+1:
e
i
+ a
1
, e
i
+ a
2
, …, e
i
+ a
k
a
1
= 1, a
k
= e
i
12
Chuỗi cộng
Chuỗi cộng: a
0
, a
1
, …, a
r
a
0
= 1,
a
k
= a
i
+ a
j
(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
References
[1] Element of Number Theory
[2] Daniel M. Gordon. A survey of fast exponentiation methods, Dec 30, 1997
14
Thank You!