Professional Documents
Culture Documents
CƠ SỞ MẬT MÃ HỌC
01 03
Bài toán xếp balo
Ví dụ và Định nghĩa - Dãy siêu tăng
- Ví dụ và định nghĩa
Hệ mật mã Merkle-
02 04
Hệ mật mã RSA Hellman
-Tạo khóa, mã khóa, giả - Thuật toán tạo khóa
mã và một số ví dụ - Mã hóa, giải mã
- Ví dụ
01
Bài toán phân tích thừa số
Cho số nguyên n , với n ≥ 2 ta luôn phân tích n dưới
dạng tích của các lũy thừa của các nguyên tố và phân
tích này là duy nhất như sau
- Nếu ta biết p&q thì tính n rất đơn giản nhưng ngược lại
biết n tìm p&q là rất khó
02
Hệ Mật Mã RSA
Hệ mã RSA
gcd(b, (p-1)(q-1))=1
Và một số nguyên C
B3: chọn một số ngẫu nhiễn e, 1 < e < φ(n) sao cho gcd(e, φ(n)) =
1
B4: sử dụng thuật toán Euclide để tính số
d,1<d<φ(n),sao cho e.d ≡ 1 (mod φ(n))
C ≡ Me mod n
Sau đó chuyển 8 khối này về giá trị thập phân tương ứng
M = CRYPTOGRAPH
Tiến hành mã hóa từng khối Mi để có cách khối mã Ci tương ứng như sau:
Giải mã
Tiến hành giải mã từng khối bản mã Ci để các khối Mi theo nguyên tắc giải mã:
Ví dụ :
M(1) = ( C1 )d mod n = 905517mod 2537 = 538
Các vấn đề điểm bất động trong RSA
Xét hệ mật RSA với các tham số (n,e) = (35,17) với q=5 p=7 Giả sử bảng tin M bằng 8 ta thấy:
C = Me mod n =817mod35=8
Với hệ mật mã RSA có các tham số công khai là(n,e) với n=q*p thì bản tin không thể che dấu
được được tính như sau
Ví dụ
Với hệ mật mã RSA với (n,e)=(35,3) với q=5 p=7 thì số bản tin không che dấu được là
N = [1+UCLN(2,4)]*[1+UCLN(2,6)] = 9
Các điểm bất động là : M = {0,1,6,14,15,20,21,29,34}
Vậy xác suất gặp phải các bản tin không thể che dấu là 1/4
03
Bài toán xếp
ba lô
Dãy siêu tăng
Định nghĩa : Dãy các số nguyên dương (a1, a2, ….,an) được gọi là dãy siêu tăng nếu
ai ≥ với ai > 0 ,2 ≤ i ≤ n
Ví dụ : Dãy số (1,2,4,8,16,32,64,128)
Bài toán xếp ba lô
Cho một tập hợp các gói có trọng lượng Mi , yêu cầu xếp các gói vào 1 ba lô chứa được trọng lượng S
Ta định nghĩa một dãy trọng số W là siêu tăng (superincreasing knapsack) nếu mỗi phần tử của
dãy đều lớn hơn tổng các phần tử phía trước nó
Bài toán xếp ba lô
• Độ phức tạp của BT ~n (Không phải 2 n)
VÀO: Dãy siêu tăng M = {M1,M2, …, Mn } và một số nguyên S là tổng của một tập
con trong M
RA : b=(b1,b2 ,…,bn) trong đó bi (0,1) sao cho: Mi =S (Phương án sắp xếp)
Bước 1: i n
Bước 2: Chừng nào i ≥1 hãy thực hiện:
Nếu
S ≥ Mi thì bi 1 và S S – Mi
ngược lại: bi 0
ii-1
Bước 3: Return (b)
Ví dụ
Bước 1:i = 7
Bước 2:
i = 7 : 57 < 64 → b7 = 0,i = 6
i = 6: 57 > 32 → b6 = 1, S = 57 - 32 = 25;i = 5
i = 5: 25 > 16 → b5 = 1, S = 25 -16 = 9; i = 4
i = 4: 9 > 8 → b4 = 1, S = 9 - 8 = 1; i = 3
i = 3:1 < 4 → b3 = 0; i = 2
i = 2: 1 < 2 → b2 = 0; i = 1
i =1:1 = 1 → b1 = 1, S = 1-1 = 0; i = 0
B cần gửi bản tin m = (m1, m2, ….,mn) cho A. B thực hiện các bước sau:
A nhận bản mã C và tiến hành giải mã theo các bước sau:
Bước 1: A tính d = W-1C mod M= Mi
Do (W,M)= 1 nên sẽ tồn tại W-1 việc tìm W-1 có thể theo thuật toán Euclid mở rộng.
Bước 2: Sử dụng thuật giải bài toán xếp ba lô trong trường hợp dãy siêu tăng để tính
d = Mi và tìm lại được m = (m1, m2, ….,mn)
dụ:
Ví
Tạo khóa:
• B1: + A chọn ngẫu nhiên: M1 ∈[1,16] ; M2 ∈ [17,32] ;
M3 ∈ [33,64] ; M4 ∈ [113,128]
+ Chọn dãy siêu tăng:Mi = 5,23,57,119 ; = 204;
→ Chọn M = 257
• B2: Chọn một số ngẫu nhiên W = 113, → W-1 = Wφ(M)-1 mod M → W-1 = 113255 mod 257 = 116
• B3: Tính các ai ≡ W.Mi mod M; i = 1…n
a1 = 113.5mod257 = 51; a2 = 113.23mod257 = 29
a3 = 113.57mod257 = 16; a4 = 113.119mod 257 = 83