An toàn dữ liệu
Trương Thị Thu Hiền
Bộ môn Các hệ thống thông tin –
trường Đại học Công nghệ - ĐHQGHN
Bài giảng Tuần 2
•Hệ mật mã khóa công khai
•Hệ RSA
•Chữ ký điện tử
•Chữ ký RSA
Hệ mật mã khóa bí mật
•Người gửi và người nhận chọn một cách bí mật khoá K, sau đó dùng K
mã hoá y = e
K
(x) và giải mã x = d
K
(y) trong đód
K
hoặc giống e
K
hoặc
dễ dàng tính được từ e
K
.Việc để lộ K và e
K
sẽ làm hệ mã hóa mất tính
an toàn.
Alice
Alice
Encrypter
Encrypter
Decrypter
Decrypter
Bob
Bob
Oscar
Oscar
Key Source
Key Source
secure channel
secure channel
x
x
y
y
x
x
K
K
K
K
Hệ đối xứng – đặc điểm
•E
K
(P)=C
•D
K
(C)=P
•D
K
(E
K
(P))=P
–Chỉ dùng một khóa
–Yêu cầu kênh bí mật để truyền khóa
– Độ an toàn của hệ phụ thuộc vào độ an toàn của Khóa
–Tốc độ mã hóa nhanh
Hệ mật mã khóa công khai
• Bob chọn một cặp khoá (K, K’) trong đóK’ được giữ bí mật còn K
công khai. Alice dùng K mã hoá y = e
K
(x). Bob dùng K’ giải mã x =
d
K’
(y). Bất kỳ ai cũng có thể gửi thông tin mã hóa cho Bob bằng cách
dùng khóa K của Bob. Chỉ mình Bob biết K’ nên mình Bob có thể đọc
các thông tin người khác gửi cho mình.
Alice
Alice
Encrypter
Encrypter
Decrypter
Decrypter
Bob
Bob
Oscar
Oscar
Key encrypt
Key encrypt
x
x
y
y
x
x
K
K
Key decrypt
Key decrypt
K’
K’
Hệ công khai – đặc điểm
•E
K
(P)=C
•D
K’
(C)=P
•D
K’
(E
K
(P))=P (K# K’)
• Dùng 2 khóa khác nhau cho mã hóa và giải mã
• Bob có thể giao tiếp với nhiều người
• Khóa bí mật chỉ một người biết, khóa công khai thì tất cả mọi người
biết => không cần kênh bí mật để truyền khóa
• Khóa công khai có thể tính dễ dàng nếu biết khóa bí mật (bài toán lớp
P)
•Biết khóa công khai và biết thuật toán mã hóa vẫn khó có thể tính được
khóa bí mật (bài toán NP)
RSA
•RSA làhệ mật mã khóa công khai đặt theo tên của
3 nhà khoa học Ron Rivest, Adi Shamir và L.
Adleman và được đưa ra năm 1976
•Hệ mật mã khóa công khai là bước đột phá trong
ngành mật mã học. Nó được dùng để mã hóa
thông điệp, trao đổi khóa, tạo chữ ký điện tử.
•Hệ RSA được xây dựng trên trường hữu hạn các
số nguyên.
• Độ an toàn phụ thuộc vào độ khó của bài toán
phân tích một số thành các thừa số nguyên tố
RSA
• Hàm phi Euler
– ϕ(n) = | (0≤b<n) | g.c.d.(b,n) = 1) |
–Nếu p là số nguyên tố thì ϕ(p) = ?
– ϕ(m*n) = ϕ(m)* ϕ(n), if g.c.d.(m,n) = 1
•RSA sử dụng định lý nhỏ Fermat:
–Nếu g.c.d.(a, m) = 1, then a
ϕ(m)
=1 mod m
RSA
•Giai đoạn sinh khóa
–Chọn ngẫu nhiên các số nguyên tố lớn (khoảng 100 chữ
số) p và q.
– Tính n = p * q với p, q là các số nguyên tố
–Chọn một số ngẫu nhiên d sao cho d < n, gcd(d, ϕ(n)) = 1
– Tính e sao cho e * d = 1 mod ϕ(n), 0 ≤ d ≤ n
– Khóa công khai là K1={e,n}
– Khóa bí mật là K2={d,p,q}
– Độ dài khóa thường từ 512 đến 1024 bit.
RSA
• Mã hóa thông điệp M để nhận được bản mã
C bằng cách tính:
– C = M
e
mod n
•Giải mã C để nhận được M bằng cách tính:
– M = C
d
= M
e.d
= M
1+n*ϕ(n)
= M mod n
RSA
•Vídụ
– R = 517, ϕ(R) = 460
– e = 3, d = 307
– M = 26, C = 26
3
= 1756 mod 517 = 515
– p = 11, q= 47
– M = 515
307
= mod 517 = 26
RSA
• Độ an toàn của hệ RSA phụ thuộc vào độ khó của việc
phân tích một số lớn thành tích của 2 thừa số nguyên tố
• Để giải mã cần biết d và n. Có thể tính được d từ e và n?
– Phân tích n thành p * q. Khi đódễ dàng tính được d.
Tuy nhiên, với kỹ thuật hiện đại ngày nay cần hàng
triệu năm để phân tích một số có 200 chữ số ra thừa số
nguyên tố.
– Tính n và ϕ(n). Khi đódễ dàng tính được q nhờ giải hệ
phương trình: n=pq và ϕ(n)=(p-1)(q-1)
RSA
Số các chữ số trong
số được phân tích
Thời gian phân tích
50 4 giờ
75 104 giờ
100 74 năm
200 4.000.000 năm
300
5×10
15
năm
500
4×10
25
năm
RSA
• Ứng dụng:
– Được sử dụng hầu hết trong các công cụ mã
hóa hỗ trợ bảo mật: thương mại điện tử (SSL),
Email, Chứng thực điện tử, ….
–Tuy tốc độ mã hóa chậm nhưng đến nay, RSA
vẫn là hệ mật thống trị hoàn toàn và được dùng
trong hầu hết các ứng dụng liên quan đến bảo
mật bởi tính đơn giản và an toàn.
Chữ ký điện tử
•Sơ đồ chữ ký gồm 2 phần: ký và kiểm tra chữ ký
•Việc ký được thực hiện trên từng bit của văn bản. Cùng
một người ký thì chữ ký trên các văn bản khác nhau là
khác nhau
•Một sơ đồ ký gồm (P,K,A,S,V) trong đó:
– P là không gian bản rõ
– K: không gian khóa
–A: tập các chữ ký có thể
– S: thuật toán ký
– V: thuật toán kiểm tra chữ ký
•Với thông điệp x, chữ ký là y. Ver y = true nếu y = sig(x),
false nếu y # sig(x)
Chữ ký RSA
• Sinh khóa
–Chọn p, q. Khi đó n = p * q
–Tính ϕ(n) = (p-1)(q-1)
–Chọn d ngẫu nhiên thỏa mãn 1< d < ϕ(n) và
USCLN(d, ϕ(n)) = 1.
–Sử dụng thuật toán Euclid mở rộng để tính e
sao cho 1< e <ϕ(n) và ed ≡ 1 (mod ϕ(n)).
– Khóa ký là d, khóa xác minh chữ ký là e.
Chữ ký RSA
•Tạo chữ ký cho văn bản m
–Tính s = m
d
mod n
•Kiểm tra chữ ký
–Tính m = s
e
mod n
Chữ ký RSA
•Vídụ
• Sinh khóa: chọn p = 3, q = 11, n = 33,
ϕ(n) = 20. Chọn khóa ký d = 7,
khóa công khai e = 3.
•Ký: x = 2 thì chữ ký là 2
7
mod 33 = 29.
•Kiểm tra chữ ký: tính 29
3
mod 33 = 24389
mod 33 = 2.
Chữ ký RSA
•Chữ ký có độ dài bằng hoặc lớn hơn bản
gốc.
•Văn bản lớn thì chữ ký cũng rất lớn. Vì vậy,
để chữ ký gọn nhẹ, thay vì ký trên toàn bộ
văn bản, người ta chỉ ký trên đại diện của
văn bản. Thực hiện thu gọn văn bản để có
đại diện.
•Sử dụng hàm băm để tạo đại diện văn b
ản.
Hàm băm
•Hàm băm chuyển một văn bản có độ dài bất kỳ về
một đại diện có độ dài xác định.
•Hàm băm h là phải đáp ứng các tính chất:
–hlà hàm một chiều
–2 văn bản giống hệt nhau thì qua hàm băm phải cho ra
đại diện giống nhau.
–Với mỗi đại diện, chỉ có duy nhất một bản gốc tương
ứng.
•Hàm băm có thể hiểu là một dạng mã hóa đặc biệt
không sử dụng khóa.
MD5 và SHA
•MD5
–Thuộc nhóm các hàm một chiều đưa ra bởi
Ronald Rivest
–Tạo đại diện văn bản có độ dài cố định 128 bit
– MD5 được mô tả trong chuẩn RFC 1321
•SHA
– Được thiết kế bởi NIST và NSA
–Tạo đại diện có độ dài 160 bit
Quy trình Ký
SINH KHÓA
TẠO ĐẠI DIỆN
KÝ
KIỂM TRA CHỮ KÝ
Câu hỏi?
☺ ☺ ☺