III.1 Nguyên lý hệ mật mã công khai Vấn đề phân phối khóa: p p • Trong sơ đồ mã hoá truyền thống, quá trình phân phốikhoá đưa ra yêu cầu hai phía tham gia vào trao đổi thôngy p g gtin:
Trang 1Chương III g Các Hệ Mật Mã Công Khai
Trang 2III.1 Nguyên lý hệ mật mã công khai
Đặc điểm: ặ
• Mật mã công khai dựa trên cơ sở của các hàm toán học
chứ không phải dựa trên phép thay thế và đổi chỗ nhưg p ự p p ytrong phương pháp mã hoá đối xứng
• Mã mật công khai là bất đối xứng Trong cơ chế mã mậtậ g g g ậ
khoá công khai sử dụng hai khoá: khoá mật và khoácông khai Việc sử dụng hai khoá không đối xứng đưa
đến những hệ quả sâu sắc trong lĩnh vực an toàn thôngtin: tính toàn vẹn, tính xác thực, phân phối khoá
Trang 3III.1 Nguyên lý hệ mật mã công khai
Xuất xứ:
• Hệ mã mật khoá công khai được phát triển nhằm giải
quyết hai vấn đề phức tạp nảy sinh từ phương pháp mã
Trang 4III.1 Nguyên lý hệ mật mã công khai
Vấn đề phân phối khóa: p p
• Trong sơ đồ mã hoá truyền thống, quá trình phân phốikhoá đưa ra yêu cầu hai phía tham gia vào trao đổi thôngy p g gtin:
Phải chia sẻ trước khoá, khoá này phải được phân
• Chữ ký điện tử phải được sử dụng trong các thông điệp
điện tử và phải có hiệu lực tương đương với chữ ký trêngiấy
Trang 5III.1 Nguyên lý hệ mật mã công khai
Hệ mật khóa công khai: ệ ậ g
• Mỗi hệ thống đầu cuối tạo một cặp khoá để mã hoá và
giải mã các thông điệp
• Mỗi hệ thống đầu cuối công bố một khoá trong cặp khoá
,khoá còn lại được giữ mật
• Nếu A muốn gửi thông điệp cho B, A sẽ mã hoá văn bản
bằng khoá công khai của B
• Khi B nhận được thông điệp B sẽ giải mã bằng khoá
• Khi B nhận được thông điệp, B sẽ giải mã bằng khoá
mật Không một bên thứ ba có thể giải mã được thôngđiệp vì chỉ có B biết khoá mật của B
Trang 6III.1 Nguyên lý hệ mật mã công khai
Sơ đồ mã hóa công khai: g
• Sơ đồ mã mật khoá công khai sử dụng một khoá để mã
hoá và một khoá khác có liên quan để giải mã Các thuậtộ q g ậtoán mã hoá và giải mã có một số đặc điểm quan trọngsau:
Không thể xác định được khoá giải mã nếu chỉ biết
thuật toán mã hoá và khoá mã hoá
Một số hệ mã mật khoá công khai (như RSA) còn
cung cấp khả năng sử dụng bất kỳ một khoá trong cặpkhoá làm khoá mã hoá, khoá còn lại sẽ được dùnglàm khoá giải mã
Trang 7III.1 Nguyên lý hệ mật mã công khai
Sơ đồ mã hóa:
Trang 8III.1 Nguyên lý hệ mật mã công khai
Sơ đồ chứng thực: g ự
Trang 9III.1 Nguyên lý hệ mật mã công khai
Các bước tiến hành:
1 Mỗi người sử dụng tạo một cặp khoá được sử dụng để mã hóa và
giải mã thông điệp.
ỗ
2 Mỗi người dùng sẽ giao một trong hai khóa cho người đăng ký
khóa công cộng hoặc một file có khả năng truy cập Khóa đó là khóa công khai Cái còn lại là sẽ được giữ bí mật Như trong hình g ạ ợ g ậ g trên đã giả thiết, mỗi người dùng sẽ duy trì một tập các khóa công khai thu được từ các người dùng khác
3 Nếu Bob muốn gửi một thông điệp bí mật cho Alice Bob mã hóa
thông điệp bằng cách sử dụng khóa công khai của Alice.
4 Khi Alice nhận được thông điệp, cô giải mã nó bằng khóa riêng
ể của mình Không có người nhận khác có thể giải mã thông điệp vì chỉ Alice biết khóa riêng của Alice.
Trang 10III.1 Nguyên lý hệ mật mã công khai
Mô hình đảm bảo bí mật: ậ
Kẻ phá mã, quan sát Y và có quyền
ậ à
truy cập vào KUbnhưng không có quyền truy cập
q y y ập vào KRb hoặc X,
để xem được thông tin kẻ phá
thông tin kẻ phá
mã phải phục hồi
X và / hoặc KRb.
Trang 11III.1 Nguyên lý hệ mật mã công khai
Mô hình chứng thực:
Trong trường hợp này, A soạn một tin nhắn đến B và mã hóa bằng khóa riêng của A trước khi truyền nó B
có thể giải mã thông điệp bằng cách g g ệp g
sử dụng khóa công khai của A Bởi
vì thông điệp đã được mã hóa bằng khóa riêng của A, chỉ A có thể soạn g , ạ thông báo này Vì vậy, thông điệp được mã hóa toàn bộ phục vụ như một chữ ký số Ngoài ra, không thể thay đổi thông điệp mà không cần truy cập vào các khóa riêng của A,
do đó thông điệp này là xác thực cả
về nguồn và về tính toàn vẹn dữ liệu.
Trang 12III.1 Nguyên lý hệ mật mã công khai
Mô hình kết hợp:
Trong trường hợp này, chúng ta bắt đầu như trước bằng cách mã hóa các tin nhắn sử dụng khóa riêng của người gửi Công việc này để cung cấp các chữ ký số Tiế th hú t ã hó ột
Tiếp theo, chúng ta mã hóa một lần nữa, bằng cách sử dụng khóa công khai của người nhận Các bản mã cuối cùng chỉ có thể được giải mã chỉ bởi người nhận đã được xác định người có chìa khóa Vì vậy, tính bảo mật được cung cấp.
Trang 13III.1 Nguyên lý hệ mật mã công khai
Các điều kiện cần thiết:
• Bên B dễ dàng tạo ra được cặp (KUb, KRb)
• Bên A dễ dàng tạo ra được C = EKUb(M)
• Bên B dễ dàng giải mã M = DKRb(C)
• Đối thủ không thể xác định được KRb khi biết KUb
• Đối thủ không thể xác định được M khi biết KU và C
• Đối thủ không thể xác định được M khi biết KUb và C
• Một trong hai khóa có thể dùng mã hóa trong khi khóa
kia có thể dùng giải mãg g
M = DKRb(EKUb(M)) = DKUb(EKRb(M))
Trang 14III.1 Nguyên lý hệ mật mã công khai
Mã hóa đối xứng và mã hóa công khai: g g
Trang 15III.2 Thuật Toán RSA
Hệ mã hóa RSA: ệ
• Đề xuất bởi Ron Rivest, Adi Shamir và Len Adleman
(MIT) vào năm 1977
• Hệ mã hóa khóa công khai phổ dụng nhất
• Mã hóa khối với mỗi khối là một số nguyên < n
Thường kích cỡ n là 1024 bit ≈ 309 chữ số thập phân
• Đăng ký bản quyền năm 1983, hết hạn năm 2000
• An toàn vì chi phí phân tích thừa số của một số nguyênp p g y
lớn là rất lớn
Trang 16III.2 Thuật Toán RSA
Tạo khóa RSA: ạ
• Mỗi bên tự tạo ra một cặp khóa công khai - khóa riêng
theo các bước sau :
Tìm khóa giải mã d ≤ n thỏa mãn e d ≡ 1 mod Φ(n)
Tìm khóa giải mã d ≤ n thỏa mãn e.d ≡ 1 mod Φ(n)
• Công bố khóa mã hóa công khai KU = {e, n}
• Giữ bí mật khóa giải mã riêng KR = {d, n}g g { }
Các giá trị bí mật p và q bị hủy bỏ
Trang 17III.2 Thuật Toán RSA
Thực hiện RSA: ự ệ
• Để mã hóa 1 thông báo M, bên gửi thực hiện
Lấy khóa công khai của bên nhận KU = {e, n}
• Lưu ý là thông báo M phải nhỏ hơn n
Phân thành nhiều khối nếu cần
Trang 18III.2 Thuật Toán RSA
Tính khả thi của RSA:
Trang 19III.2 Thuật Toán RSA
Ví dụ tạo khóa RSA: ụ ạ
• Công bố khóa công khai KU = {7, 187}
• Giữ bí mật khóa riêng KR = {23, 187}
Hủy bỏ các giá trị bí mật p = 17 và q = 11
Trang 20III.2 Thuật Toán RSA
Ví dụ tạo khóa RSA: ụ ạ
Trang 21III.2 Thuật Toán RSA
• Trước đây khuyến nghị giá trị của e là 3 nhưng hiện nay
• Trước đây khuyến nghị giá trị của e là 3, nhưng hiện nay
được coi là quá nhỏ
• Thường chọn e = 2ườ g c ọ e 16 - 1 = 6553565535
• Giá trị của d sẽ lớn và khó đoán
Trang 22III.2 Thuật Toán RSA
An toàn của RSA:
• Khóa 128 bit là một số giữa 1 và một số rất lớn
340.282.366.920.938.000.000.000.000.000.000.000.000
• Có bao nhiêu số nguyên tố giữa 1 và số này
≈ n / ln(n) = 2 128 / ln(2 128 ) ≈ 3.835.341.275.459.350.000.000.000.000.000.000.000
• Cần bao nhiêu thời gian nếu mỗi giây có thể tính được
Trang 23III.2 Thuật Toán RSA
Phá mã RSA:
• Phương pháp vét cạn
Thử tất cả các khóa riêng có thể
Phụ thuộc vào độ dài khóa
• Phương pháp phân tích toán học
Phân n thành tích 2 số nguyên tố p và q
ế
Xác định trực tiếp Φ(n) không thông qua p và q
Xác định trực tiếp d không thông qua Φ(n)
• Phương pháp phân tích thời gian
Dựa trên việc đo thời gian giải mã
Có thể ngăn ngừa bằng cách làm nhiễu
Trang 24III.3 Hệ Trao Đổi Khóa Diffie-Hellman
• Giải thuật mật mã khóa công khai đầu tiênậ ậ g
• Đề xuất bởi Whitfield Diffie và Martin Hellman vào năm
1976
ấ
Malcolm Williamson (GCHQ - Anh) phát hiện trước mấy năm
nhưng đến năm 1997 mới công bố
• Chỉ dùng để trao đổi khóa bí mật một cách an toàn trênChỉ dùng để trao đổi khóa bí mật một cách an toàn trên
các kêch thông tin không an toàn
• Khóa bí mật được tính toán bởi cả hai bên
• An toàn phụ thuộc vào độ phức tạp của việc tính log rời
rạc
Trang 25III.3 Hệ Trao Đổi Khóa Diffie-Hellman
Thiết lập Diffie-Hellman: ập
• Các bên thống nhất với nhau các tham số chung
q là một số nguyên tố đủ lớn
là ột ê ă ủ
α là một nguyên căn của q
α mod q, α 2 mod q, , α p-1 mod q là các số nguyên giao hoán của các số từ
1 đến q - 1
Bê A
Chọn ngẫu nhiên làm khóa riêng XA < q
Tính khóa chung Y g AA = αXA mod q q
Chọn ngẫu nhiên làm khóa riêng XB < q
Tính khóa chung Y αXB mod q
Tính khóa chung YB = α B mod q
Trang 26III.3 Hệ Trao Đổi Khóa Diffie-Hellman
Trao đổi khóa Diffie-Hellman:
Trang 27III.3 Hệ Trao Đổi Khóa Diffie-Hellman
• Tính toán khóa bí mật chung
K = YBXA mod 353 = 248 97 mod 353 = 160 (Alice)
K = Y K YAAXB mod 353 = 40 mod 353 40 mod 353 160 (Bob) 97 mod 353 = 160 (Bob)
Trang 28III.3 Hệ Trao Đổi Khóa Diffie-Hellman
Hạn chế của khóa công khai: ạ g
• Tốc độ xử lý
Các giải thuật khóa công khai chủ yếu dùng các phép nhân
hậ hơ hiề ới á iải th ật đối ứ
chậm hơn nhiều so với các giải thuật đối xứng
Không thích hợp cho mã hóa thông thường
Thường dùng trao đổi khóa bí mật đầu phiên truyền tin
• Tính xác thực của khóa công khai
Bất cứ ai cũng có thể tạo ra một khóa công bố đó là của một
người khác
Chừng nào việc giả mạo chưa bị phát hiện có thể đọc được nội
dung các thông báo gửi cho người kia
Cầ đả bả hữ ời đă ký khó là đá i
Cần đảm bảo những người đăng ký khóa là đáng tin
Trang 29Chương IV g Xác Thực và Chữ Ký Số
Trang 30IV.1 Các Hành Động Tấn Công
• Giải phòng nội dung thông điệp: Phát hành nội dung thông điệp tới một
ế người hoặc một tiến trình nào đó mà không sở hữu khóa mật thích hợp.
• Phân tích tải: để xác định tần suất, thời gian kết nối, số lượng và chiều
dài của thông điệp giữa 2 bên g ệp g
• Giả mạo: chèn tin nhắn vào mạng từ một nguồn gian lận, chẳng hạn như
tạo ra các thông điệp có mục đích xấu bởi người có thẩm quyền.
Th đổi ội d Th đổi á ội d ủ ti hắ ó b ồ
• Thay đổi nội dung: Thay đổi các nội dung của tin nhắn có, bao gồm
chèn, xóa, hoán vị, và sửa đổi
• Thay đổi thứ tự: là bất ky một sự sửa đổi nào cho một chuỗi các thông
điệp giữa các bên, bao gồm chèn, xóa, và sắp xếp lại.
• Thay đổi thời gian: làm trễ hoặc phát lại các tin nhắn
• Sự từ chối dịch vụ: từ chối gửi các thông điệp từ nguồn gửi hoặc từ chối
• Sự từ chối dịch vụ: từ chối gửi các thông điệp từ nguồn gửi hoặc từ chối
nhận các thông điệp ở đích.
Trang 31IV.1 Các Vấn Đề Xác Thực
• Các tiêu chuẩn cần xác minh
Thông báo có nguồn gốc rõ ràng chính xác
Nội dung thông báo toàn vẹn, không bị thay đổi
ể
Thông báo được gửi đúng trình tự và thời điểm
• Mục đích chống lại tấn công chủ động (xuyên tạc dữ
liệu )
• Các phương pháp xác thực thông báo
Mã hoá thông báo(1)Mã hoá thông báo(1)
Sử dụng mã xác thực thông báo(2)
Sử dụng hàm băm(3)
Trang 32 Các gói tin được đánh số thứ tự à mã hóa nên không thể tha
Các gói tin được đánh số thứ tự và mã hóa nên không thể thay
đổi trình tự và thời điểm nhận được
• Sử dụng mã hóa khóa công khai
ố
Không chỉ xác thực thông báo mà còn tạo chữ ký số
Phức tạp và mất thời gian hơn mã hóa đối xứng
Trang 33từ thông báo đó và khóa bí mật chung
so xem MAC có chính xác không
giải ngược.
Trang 34IV.1 Các Vấn Đề Xác Thực
Xác thực dùng mã Checksum: ự g
• Có thể có nhiều thông báo có cùng chung MAC
Nhưng nếu biết 1 thông báo và MAC, rất khó tìm rag g ,
một thông báo khác cùng MAC
Các thông báo có cùng xác suất tạo ra MAC
• Đáp ứng 3 tiêu chuẩn xác thực
Trang 36IV.1 Các Vấn Đề Xác Thực
Tại sao dùng MAC:
• Nhiều trường hợp chỉ cần xác thực, không cần mã hóa tốn thời gian và tài nguyên
Trang 37IV.1 Các Vấn Đề Xác Thực
Xác thực dùng hàm băm:
• Một hàm băm nhận đầu vào là một thông báo có độ dài
tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định,
đôi khi được gọi là tóm tắt thông báo hoặc chữ ký số.
• Tạo ra một giá trị băm có kích thước cố định từ thông
báo đầu vào (không dùng khóa)
h = H(M)
• Hàm băm không cần giữ bí mậtg g ậ
• Giá trị băm gắn kèm với thông báo dùng để kiểm tra tính
toàn vẹn của thông báo
• Bất kỳ sự thay đổi M nào dù nhỏ cũng tạo ra một giá trị h
khác
Trang 38IV.1 Các Vấn Đề Xác Thực
Xác thực dùng hàm băm:
Trang 39IV.1 Các Vấn Đề Xác Thực
Xác thực dùng hàm băm:
Trang 40IV.1 Các Vấn Đề Xác Thực
Yêu cầu đối với hàm băm:
• Có thể áp dụng với thông báo M có độ dài bất kỳ
• Tạo ra giá trị băm h có độ dài cố định
• H(M) dễ dàng tính được với bất kỳ M nào
• Từ h rất khó tìm được M sao cho H(M) = h
Trang 41IV.1 Các Vấn Đề Xác Thực
Yêu cầu đối với hàm băm:
• Có thể áp dụng với thông báo M có độ dài bất kỳ
• Tạo ra giá trị băm h có độ dài cố định
• H(M) dễ dàng tính được với bất kỳ M nào
• Từ h rất khó tìm được M sao cho H(M) = h
Trang 42IV.2 Vấn Đề An Toàn Của Hàm Băm & MAC
Kiểu tấn công ngày sinh: g g y
• Nghịch lý ngày sinh
Trong 23 người, xác suất tìm ra 1 người khác có cùng ngày
i h ới A là 6%
sinh với A là ≈ 6%
Xác suất 2 trong 23 người có cùng ngày sinh là ≈ 50%
• Cách thức tấn công mã băm m bitg
Tạo ra 2 m/2 biến thể đồng nghĩa của thông báo hợp lệ
Tạo ra 2 m/2 biến thể của thông báo giả mạo
So sánh 2 tập thông báo với nhau tìm ra 1 cặp có cùng mã băm
(xác suất > 0,5 theo nghịch lý ngày sinh)
Để người gửi ký biến thể hợp lệ, rồi dùng chữ ký gắn vào biến
ể thể giả mạo
Trang 43IV.2 Vấn Đề An Toàn Của Hàm Băm & MAC
• Kiểu tấn công vét cạn
• Kiểu tấn công vét cạn
Với hàm băm, nỗ lực phụ thuộc độ dài m của mã băm
¾ Độ phức tạp của tính một chiều và tính chống xung đột yếu là 2 m ; của
í h hố độ h là 2 /2
tính chống xung đột mạnh là 2 m/2
¾ 128 bit có thể phá được, thường dùng 160 bit
Với MAC, nỗ lực phụ thuộc vào độ dài k của khóa và độ dài n
của MAC
¾ Độ phức tạp là min(2 k , 2 n )
¾ Ít nhất phải là 128 bit
ể ấ
• Kiểu tấn công dùng kỹ thuật
Hàm băm thường gồm nhiều vòng như mã hóa khối nên có thể
tập trung khai thác điểm yếu hàm vòng
Trang 44IV.3 Chữ ký số
• Xác thực thông báo không có tác dụng khi bên gửi và bên
nhận muốn gây hại cho nhau
Bên nhận giả mạo thông báo của bên gửi
Bên gửi chối là đã gửi thông báo đến bên nhận
• Chữ ký số không những giúp xác thực thông báo mà còn
bảo vệ mỗi bên khỏi bên kia
• Chức năng chữ ký số
Xác minh tác giả và thời điểm ký thông báo
Xác thực nội dung thông báo
Là căn cứ để giải quyết tranh chấp
Trang 45IV.3 Chữ ký số
Yêu cầu đối với chữ ký số: ý
• Phụ thuộc vào thông báo được ký
• Có sử dụng thông tin riêng của người gửi
Để tránh giả mạo và chối bỏ
• Tương đối dễ tạo ra
• Tương đối dễ nhận biết và kiểm tra
• Tương đối dễ nhận biết và kiểm tra
• Rất khó giả mạo
Bằng cách tạo thông báo khác có cùng chữ ký số
Bằng cách tạo chữ ký số theo ý muốn cho thông báo
• Thuận tiện trong việc lưu trữ
Trang 46IV.3 Chữ ký số
Chữ ký số trực tiếp: ý ự p
• Chỉ liên quan đến bên gửi và bên nhận
• Với mật mã khóa công khai
Dùng khóa riêng ký toàn bộ thông báo hoặc giá trị băm
Có thể mã hóa sử dụng khóa công khai của bên nhận
Quan trọng là ký trước mã hóa sau Q ọ g ý
• Chỉ có tác dụng khi khóa riêng của bên gửi được đảm
bảo an toàn
ê i ó hể i ờ ấ khó iê
Bên gửi có thể giả vờ mất khóa riêng
¾ Cần bổ xung thông tin thời gian và báo mất khóa kịp thời
Khóa riêng có thể bị mất thật
¾ Kẻ cắp có thể gửi thông báo với thông tin thời gian sai lệch
Trang 47IV.3 Chữ ký số
Chữ ký số gián tiếp:
• Có sự tham gia của một bên trọng tài
Nhận thông báo có chữ ký số từ bên gửi, kiểm tra tính hợp lệ
của nó
Bổ xung thông tin thời gian và gửi đến bên nhận
• An toàn phụ thuộc chủ yếu vào bên trọng tài
Cần được bên gửi và bên nhận tin tưởng
• Có thể cài đặt với mã hóa đối xứng hoặc mã hóa khóa
công khai
• Bên trọng tài có thể được phép nhìn thấy hoặc không nội
dung thông báo
Trang 48(1) X → A : IDX ║ EKXY[M] ║ EKXA[IDX ║ H(EKXY[M])]
(2) A → Y : E [ID ║ E [M] ║ E [ID ║ H(E [M])]
(2) A → Y : EKAY[IDX ║ EKXY[M] ║ EKXA[IDX ║ H(EKXY[M])]
║ T
(c) Mã hóa khóa công khai, trọng tài không thấy thông báo
(1) X → A : IDX ║ EKRX[IDX ║ EKUY[EKRX[M])]
(2) A → Y : EKRA[IDX ║ EKUY[EKRX[M]] ║ T]
Ký hiệu : ý ệ X = Bên gửi g M = Thông báo g
Y = Bên nhận T = Nhãn thời gian
A = Trọng tài