Hàm môôt chiều one-way functions: Hàm f: X → Y đựơc gọi là hàm một chiều nếu tính y=fx với mọi x ∈ X là dễ nhưng việc tìm x khi biết y lại là vấn đề khó. Viêôc nhân hai số nguyên tố l
Trang 1Modes of Operation
Trang 2Nội dung
Các kiểu thao tác (Modes of Operation)
Các kiểu chèn bổ sung thông tin (Padding Scheme)
Trang 3 Trong mã hóa, thường dữ liệu được chia thành từng đoạn (block) có kích thước cố định (ví dụ như 64 hay 128
bit)
Để mã hóa các thông điệp dài (có thể chia thành nhiều block), có thể sử dụng các kiểu thao tác khác nhau
(modes of operation) khác nhau
Các kiểu thao tác (Modes of
Operation)
Trang 4 Các kiểu thao tác đầu tiên được đề nghị (ECB, CBC, OFB, CFB) đảm bảo tính bí mật (confidentiality), không
giúp đảm bảo tính toàn vẹn thông tin (message integrity)
Các kiểu thao tác được thiết kế cho phép (CCM, EAX và OCB) vừa đảm bảo tính bí mật, vừa đảm bảo xác định
tính toàn vẹn thông tin.
Một số kiểu thao tác được xây dựng để mã hóa sector trên đĩa:
Tweakable narrow-block encryption –LRW
Wide-block encryption -CMC và EME
Các kiểu thao tác (Modes of
Operation)
Trang 5 Kiểu mã hóa đơn giản nhất là electronic codebook (ECB)
Thông điệp cần mã hóa được chia thành từng đoạn, mỗi đoạn được mã hóa độc lập nhau
Hạn chế: các khối có cùng nội dung, sau khi mã hoá xong cũng tạo thành các khối kết quả giống hệt nhau
Không che giấu được các “mẫu” dữ liệu (data pattern)
Không khuyến khích sử dụng ECB trong các giao thức mã hóa
Electronic codebook (ECB)
Trang 8Ảnh gốc theo kiểu Mã hóa ECB theo các kiểu khác Mã hóa
ECB có thể làm cho giao thức kém an toàn để bảo vệ tính toàn vẹn thông tin (ví dụ như đối với kiểu tấn công
thông tin (ví dụ như đối với kiểu tấn công replay attacks replay attacks )
Electronic codebook (ECB)
Trang 9 Trong kiểu mã hóa cipher-block chaining (CBC):
Mỗi khối plaintext được XOR với khối ciphertext trước khi được
Trang 10C 0 = IV
C i = E = E K (P ( P i ⊕ C i – 1 )
Cipher-block chaining (CBC)
Trang 11C 0 = IV
P i = D = D K (C ( C i ) ⊕ C i – 1
Cipher-block chaining (CBC)
Trang 12 CBC là kiểu mã hóa thường được sử dụng nhất
Hạn chế: xử lý tuần tự, không thể song song hóa
có thể chọn giải pháp counter mode để xử lý song song
Cipher-block chaining (CBC)
Trang 13 Bản chất:
Plaintext KHÔNG được mã hóa bằng chính thuật toán đang xét
Plaintext được mã hóa bằng cách XOR với một chuỗi được tạo ra bằng thuật toán mã hóa.
Biến Block Cipher thành stream cipher
Cipher feedback (CFB)
Trang 14C 0 = IV
C i = P = P i ⊕ E E K ( C i – 1 )
Cipher feedback (CFB)
Trang 16 Bản chất:
Plaintext KHÔNG được mã hóa bằng chính thuật toán đang xét
Plaintext được mã hóa bằng cách XOR với một chuỗi được tạo ra bằng thuật toán mã hóa.
Biến Block Cipher thành stream cipher
Output feedback (OFB)
Trang 19 Kiểu CTR còn gọi là Segmented Integer Counter (SIC)
Tương tự OFB, kiểu Counter cũng biến block cipher thành stream cipher
Tạo ra block keystream tiếp theo bằng cách mã hóa giá trị kế tiếp của "counter"
Counter có thể là bất kỳ hàm nào sinh ra dãy số không có giá trị lặp lại sau một khoảng thời gian đủ lâu
Counter (CTR)
Trang 20 CTR có tính chất giống OFC,
CTR cho phép giải mã “ngẫu nhiên” bất kỳ khối cipherytext nào
Lưu ý: vai trò của đoạn dữ liệu nonce giống như initialization vector (IV)
IV/nonce và giá trị counter có thể được nối với nhau, cộng hay XOR để tạo thành 1 dãy bit đặc trưng duy nhất
ứng với mỗi giá trị counter cụ thể
Counter (CTR)
Trang 23Initialization vector (IV)
Tất cả các kiểu mã hóa (ngoại trừ ECB) đều sử dụng vector khởi tạo (initialization vector - IV).
Trang 24 Với CBC và CFB, sử dụng lại giá trị IV làm rò rỉ thông tin
Với OFB và CTR, sử dụng lại IV làm phá vỡ hoàn toàn tính an toàn của hệ thống
IV trong CFB phải được phát sinh ngẫu nhiên và giữ bí mật cho đến khi nội dung của khối plaintext đầu tiên
được sẵn sàng để mã hóa
Counter (CTR)
Trang 25Chương 5: Hệ mã công
khai và RSA
Trang 26 Số nguyên tố : Số nguyên tố là môôt số lớn hơn 1, nhưng chỉ chia hết cho 1 và chính nó, ngoài ra không còn
số nào nó có thể chia hết nữa
Hai số a và n được gọi là hai số nguyên tố cùng nhau nếu chúng không có thừa số chung nào khác 1, hay
nói môôt cách khác, nếu ước số chung lớn nhất của a và n là bằng 1 Chúng ta có thể viết như sau :
GCD(a,n)=1, (GCD-Greatest Common Divisor)
Lý thuyết toán học
Trang 27 Hàm môôt chiều (one-way functions): Hàm f: X → Y đựơc gọi là hàm một chiều nếu tính y=f(x) với mọi x ∈ X là dễ nhưng việc tìm x khi biết y lại là vấn đề khó.
Viêôc nhân hai số nguyên tố là môôt ví dụ về hàm môôt chiều , nhân các số nguyên tố lớn để tạo thành môôt hợp số là dễ , nhưng công viêôc ngược lại phân tích môôt số nguyên lớn thành dạng thừa số nguyên tố lại là môôt bài toán khó (chưa có môôt thuâôt toán tốt)
Lý thuyết toán học
Trang 28Hàm Phi Ơle (Euler)
Định nghĩa: Hàm Phi ơle của số nguyên dương n là số các số nguyên tố cùng nhau với n nhỏ hơn n Kí hiệu Ф(n).
Ví dụ: n=10
• Tập đầy đủ các phần dư là {0,1,2,3,4,5,6,7,8,9}
• Tập rút gọn các phần dư nguyên tố với 10 là {1,3,7,9}
• Số các phần tử của tập rút gọn trên là giá trị của hàm Ơle Ф(n) Như vậy, Ф(10) = 4
Trang 29 Tính chất của hàm Phi ơle:
• Nếu n là số nguyên tố thì Ф (n) = n-1 Ví dụ: Ф (7)=6
• Nếu p, q là 2 số nguyên tố cùng nhau thì:
Ф (p*q)=Ф (p-1)*Ф (q-1)
ví dụ Ф(26)= Ф(2*13)= Ф(2)* Ф(13)=1*12=12
• Nếu p là số nguyên tố thi: Ф(pn) = pn-pn-1
Hàm Phi Ơle (Euler)
Trang 31 Thuật toán Ơcơlit tìm ước chung lớn nhất GCD(a, b)
Trang 3303/29/14 An toàn và bảo mật thông tin
Trang 3403/29/14 An toàn và bảo mật thông tin
Trang 35Thuâôt toán Ơclit mở rộng
Bổ đề:
Cho 2 số nguyên: r 0 , r 1 , tồn tại 2 số nguyên khác s và t sao cho : s.r 0 + t.r 1 =gcd(r 0 ,r 1 )=1 Khi đó t=r 1 -1 Theo mod r 0
Trang 3603/29/14 An toàn và bảo mật thông tin
36
Thuật toán : Cho 2 số nguyên r0 , r1 tìm r1 -1 theo mod r0
Trang 3703/29/14 An toàn và bảo mật thông tin
37
S i = s (i-2) – q (i-1) * s (i-1) t i = t (i-2) – q (i-1) * t (i-1)
Thuâôt toán Ơclit mở rộng
Trong đó ta có: Với i=0,1,2,3…
r i =q i+1 *r i+1 +r i+2
Trang 3803/29/14 An toàn và bảo mật thông tin
Ví dụ : Cho r0=29, r1=8 tìm 8 -1 theo mod 29
s.r0 + t.r1 =gcd(r0,r1) S0 =1 T0 = 0
S1 = 0 T1 = 1
Si = s(i-2) – q(i-1) * s(i-1) ti = t(i-2) – q(i-1) * t(i-1) ; i=2,3,4…
Rõ ràng : 29*(-3) + 8*11 = 1 s=3, t=11
Thuâôt toán Ơclit mở rộng
Bước ri qi+1 ri+1 ri+2 si ti
Trang 39Giới thiệu Hệ mã công khai và
Để bảo mật khóa K, A và B phải trao đổi với nhau trên một kênh liên lạc thật sự an toàn và bí mật
Tuy nhiên, rất khó có thể bảo đảm được sự an toàn của kênh liên lạc nên mã khóa K vẫn có thể bị phát hiện
bởi người C!
Trang 40 Ý tưởng về hệ mã công khai được Martin Hellman, Ralph Merkle và Whitfield Diffie tại Đại học Stanford
giới thiệu vào năm 1976
Sau đó, phương pháp Diffie-Hellman của Martin Hellman và Whitfield Diffie đã được công bố
Năm 1977, trên báo "The Scientific American", nhóm tác giả Ronald Rivest, Adi Shamir và Leonard
Adleman đã công bố phương pháp RSA, phương pháp mã hóa khóa công cộng nổi tiếng và được sử dụng rất nhiều hiện nay trong các ứng dụng mã hóa và bảo vệ thông tin
Giới thiệu Hệ mã công khai và
RSA
Trang 41 Một hệ mã công khai sử dụng hai loại khóa:
khóa công khai (public key) được công bố rộng rãi và được
sử dụng trong việc mã hóa,
khóa riêng (private key) chỉ do một người nắm giữ và được
sử dụng để giải mã thông tin đã được mã hóa bằng khóa công khai
Các phương pháp mã hóa này khai thác những ánh xạ f mà việc thực hiện ánh xạ ngược f –1 rất khó so
với việc thực hiện ánh xạ f Chỉ khi biết được khóa riêng K thì mới có thể thực hiện được ánh xạ ngược f –1
Giới thiệu Hệ mã công khai và
RSA
Trang 42Phương pháp RSA
Năm 1978, R.L.Rivest, A.Shamir và L.Adleman đã đề xuất hệ mã công khai RSA
Trong phương pháp này, tất cả các phép tính đều được thực hiện trên Zn với n là tích của hai số nguyên
tố lẻ p và và q khác nhau
Khi đó, ta có φ(n) = (p–1) (q–1)
Trang 431) Chọn ngẫu nhiên 2 số nguyên tố lớn p và q
2) Tính số làm modulo của hệ thống: n = p.q
Ta đã biết Ф(n)=(p-1)(q-1)
3) Chọn ngẫu nhiên khoá mã hóa b
Trong đó 1<b< Ф(n), gcd(b,Ф(n))=1
4) Giải phương trình sau để tìm khoá giải mã a sao cho
• a = b–1 mod Ф(n) (bằng thuật toán Euclide mở rộng)
b.a=1 mod Ф(n) với 0≤a≤ Ф(n)
5) Khoá mã công khai Kpub={b,n}
6) Giữ khoá riêng bí mật Kpr={a,p,q}
Phương pháp RSA
Phát sinh khóa
Trang 44 Hàm mã hóa: Sử dụng khóa riêng Kpub pub
Hàm gải mã:sử dụng khóa Kpr
Phương pháp RSA
Trang 45 Ví dụ : Alice sẽ gửi một bản rõ (x=4) tới Bob sau khi Bob gửi cho cô khóa công khai
Phương pháp RSA
Trang 46Một số phương pháp tấn công
RSA
Tính chất an toàn của phương pháp RSA dựa trên cơ sở chi phí cho việc giải mã sẽ quá lớn nên xem như
không thể thực hiện được
Vì khóa là công khai nên việc tấn công bẻ khóa phương pháp RSA thường dựa vào khóa công khai để xác
định được khóa riêng tương ứng Điều quan trọng là dựa vào n để tính p, q của n, từ đó tính được a.
Trang 47Phương pháp sử dụng φ (n)
Giả sử người tấn công biết được giá trị φ(n) Khi đó việc xác định giá trị p, q được đưa về việc giải hai
phương trình sau n = p⋅ q
Thay q = n/p, ta được phương trình bậc hai
p, q chính là hai nghiệm của phương trình bậc hai này Tuy nhiên vấn đề phát hiện được giá trị φ(n) còn khó
hơn việc xác định hai thừa số nguyên tố của n
Trang 48Thuật toán phân tích ra thừa
Trang 49 Thuật toán Pollard p-1 (1974) là một trong những thuật toán đơn giản hiệu quả dùng để phân tích ra thừa số
nguyên tố các số nguyên lớn Tham số đầu vào của thuật toán là số nguyên (lẻ) n cần được phân tích ra thừa
số nguyên tố và giá trị giới hạn B
Giả sử n = p.q (p, q chưa biết) và B là một số nguyên đủ lớn, với mỗi thừa số nguyên tố k,
k B
Thuật toán phân tích ra thừa số
p-1
Trang 50 Ở cuối vòng lặp (bước 2), ta có
a ≡ 2B! (mod n)
Suy ra: a ≡ 2B! (mod p)
Do p|n nên theo định lý Fermat, ta có :
Trang 51 Ví dụ:
Giả sử n = 15770708441
Áp dụng thuật toán p – 1 với B = 180, chúng ta xác định được a
= 11620221425 ở bước 3 của thuật toán và xác định được giá trị
Do đó, khi chọn B ≥ 173 sẽ đảm bảo điều kiện 135978 B!
Thuật toán phân tích ra thừa
số p-1
Trang 52 Trong thuật toán p − 1 có B − 1 phép tính lũy thừa modulo, mỗi phép đòi hỏi tối đa 2log2B phép nhân modulo
sử dụng thuật toán bình phương và nhân
Việc tính USCLN sử dụng thuật toán Euclide có độ phức tạp O((log n) 3 )
Như vậy, độ phức tạp của thuật toán là:
O(B log B(log n) 2 + (log n) 3 )
Thuật toán phân tích ra thừa
số p-1
Trang 53 Xác suất chọn giá trị B tương đối nhỏ và thỏa điều kiện là rất thấp
Khi tăng giá trị B (chẳng hạn như ) thì giải thuật sẽ thành công, nhưng thuật toán này sẽ không
nhanh hơn giải thuật chia dần như trình bày trên.
n
Thuật toán phân tích ra thừa
số p-1
Trang 54 Giải thuật này chỉ hiệu quả khi tấn công phương pháp RSA trong trường hợp n có thừa số nguyên tố p mà
(p − 1) chỉ có các ước số nguyên tố rất nhỏ
Chúng ta có thể dễ dàng xây dựng một hệ thống mã hóa khóa công cộng RSA an toàn đối với giải thuật tấn
công p − 1 Cách đơn giản nhất là tìm một số nguyên tố p1 lớn, mà p = 2p1 + 1 cũng là số nguyên tố, tương
tự tìm q1 nguyên tố lớn và q = 2q1 + 1 nguyên tố.
Thuật toán phân tích ra thừa
số p-1
Trang 55Bẻ khóa dựa trên các tấn
công lặp lại
Simons và Norris: hệ thống RSA có thể bị tổn thương khi sử dụng tấn công lặp liên tiếp Nếu đối thủ biết cặp
khóa công cộng {n, b} và từ khóa C thì có thể tính chuỗi các từ khóa sau:
Trang 56 Ví dụ: Giả sử anh ta biết {n, b, C}={35, 17, 3},anh ta sẽ tính:
Trang 57Sự che dấu thông tin trong hệ
thống RSA
Hệ thống RSA có đặc điểm là thông tin không phải luôn được che dấu
Giả sử người gởi có e = 17, n = 35 Nếu anh ta muốn gởi bất cứ dữ liệu nào thuộc tập sau
{1, 6, 7, 8, 13, 14, 15, 20, 21, 22, 27, 28, 29, 34}
thì kết quả của việc mã hóa lại chính là dữ liệu ban đầu Nghĩa là, M = M e mod n
Còn khi p = 109, q = 97, e = 865 thì hệ thống hoàn toàn không có sự che dấu thông tin, bởi vì:
∀M, M = M865 mod (109*97)
Trang 58 Với mỗi giá trị n, có ít nhất 9 trường hợp kết quả mã hóa chính là dữ liệu nguồn ban đầu Thật vậy,
M = M e mod n hay:
M = M e mod p và M = M e mod q (*)
Với mỗi e, mỗi đẳng thức trong (*) có ít nhất ba giải pháp thuộc tập {0, 1, -1}
Số thông điệp không được che dấu (không bị thay đổi sau khi mã hóa):
m = [1+gcd(e-1, p-1)][1+gcd(e-1), q-1]
Sự che dấu thông tin trong hệ
thống RSA
Trang 59Nhận xét
Mấu chốt để có thể giải mã được thông tin là có được giá trị p và q tạo nên giá trị n
Khi có được hai giá trị này, ta có thể dễ dàng tính ra được φ(n) = (p – 1)(q – 1) và giá trị a = b–1 mod φ(n) theo
thuật toán Euclide mở rộng
Nếu số nguyên n có thể được phân tích ra thừa số nguyên tố, tức là giá trị p và q có thể được xác định thì
xem như tính an toàn của phương pháp RSA không còn được bảo đảm nữa
Trang 60 Như vậy, tính an toàn của phương pháp RSA dựa trên cơ sở các máy tính tại thời điểm hiện tại chưa đủ khả
năng giải quyết việc phân tích các số nguyên rất lớn ra thừa số nguyên tố
Năm 1994, Peter Shor, một nhà khoa học tại phòng thí nghiệm AT&T, đã đưa ra một thuật toán có thể phân
tích một cách hiệu quả các số nguyên rất lớn trên máy tính lượng tử
Nhận xét
Trang 61Vấn đề số nguyên tố
Để bảo đảm an toàn cho hệ thống mã hóa RSA, số nguyên n = pq phải đủ lớn để không thể dễ dàng tiến hành
việc phân tích n ra thừa số nguyên tố
Hiện tại, các thuật toán phân tích thừa số nguyên tố đã có thể giải quyết được các số nguyên có trên 130 chữ
số (thập phân)
Để an toàn, số nguyên tố p và q cần phải đủ lớn, ví dụ như trên 100 chữ số
Vấn đề đặt ra ở đây là giải quyết bài toán: làm thế nào để kiểm tra một cách nhanh chóng và chính xác một số
nguyên dương n là số nguyên tố hay hợp số?
Trang 62 Theo định nghĩa, một số nguyên dương n là số nguyên tố khi và chỉ khi n chỉ chia hết cho 1 và n (ở đây chỉ
Trang 63 Việc kiểm tra một số nguyên dương n là số nguyên tố theo phương pháp trên sẽ đưa ra kết quả hoàn toàn
chính xác
Tuy nhiên, thời gian xử lý của thuật toán rõ ràng là rất lớn, hoặc thậm chí không thể thực hiện được, trong
trường hợp n tương đối lớn
Vấn đề số nguyên tố
Trang 64Thuật toán Miller-Rabin
Trên thực tế, việc kiểm tra một số nguyên dương n là số nguyên tố thường áp dụng các phương pháp thuộc
nhóm thuật toán Monte Carlo,
ví dụ:
thuật toán Solovay-Strassen hay thuật toán Miller-Robin;
thuật toán Miller-Robin thường được sử dụng phổ biến hơn
Trang 65Thuật toán thuộc nhóm Monte
Carlo
Thuật toán thuộc nhóm Monte Carlo được sử dụng trong việc khẳng định hay phủ định một vấn đề nào đó
Thuật toán luôn đưa ra câu trả lời và câu trả lời thu được chỉ có khả năng hoặc là “Có” (yes) hoặc là “Không” (no)
Thuật toán “yes-biased Monte Carlo” là thuật toán Monte Carlo, trong đó, câu trả lời “Có” (Yes) luôn chính
xác nhưng câu trả lời “Không” (No) có thể không chính xác
Trang 66 Ưu điểm: Xử lý nhanh (số nguyên dương n có thể được kiểm tra trong thời gian tỉ lệ với log2n, tức là số
lượng các bit trong biểu diễn nhị phân của n)
Có khả năng kết luận của thuật toán không hoàn toàn chính xác, nghĩa là có khả năng một hợp số n lại
được kết luận là số nguyên tố, mặc dù xác suất xảy ra kết luận không chính xác là không cao
Có thể khắc phục bằng cách thực hiện thuật toán nhiều lần để giảm khả năng xảy ra kết luận sai xuống
dưới ngưỡng cho phép kết luận có độ tin cậy cao
Thuật toán Miller-Rabin
Trang 67Phân tích số nguyên dương n = 2k m + 1 với m lẻ
Chọn ngẫu nhiên số nguyên dương a∈ {1, 2, , n – 1}