Giáo trình An toàn bảo mật thông tin - Nguyễn Khánh Văn - Chương 6: Cryptographic Protocol
Mục đích cuối cùng của Cryptography hay bất kỳchuyên ngành nào của khoa
học máy tính đều là để đi đến giải quyết những vấn đề, những bài toán do
thực tế đặt ra (đôi khi người ta hay quên điều này). Cryptography giải quyết
các vấn đềliên quan đến tính bảo mật (secretcy), tính xác thực (authenticity),
tính toàn vẹn (intergrity) . mà ở đó người ta phải luôn luôn tính đến những
yếu tố, những cá nhân tham gia không trung thực. Bạn là người đang nghiên
cứu Cryptography? Bạn đang say sưa với các thuật toán, các kỹthuật của
chuyên ngành này? Kiến thức đó chỉmang tính học thuật, chừng nào mà bạn
chưa học được cách đem vận dụng chúng đểgiải quyết một vấn đềcụthểnào
đó. Điểm mấu chốt này thểhiện rõ ràng khi chúng ta phân tích các khái niệm
sau đây vềcác cryptographic protocols (giao thức mật mã).
Một protocol chỉ đơn giản là một chuỗi các bước thực hiện, có it nhất 2 bên
tham dự, được thiết kế đểthực hiện một nhiệm vụnào đó. Định nghĩa này
đơn giản nhưng chặt chẽ. “Một chuỗi các bước” có nghĩa là một dãy các bước
có thứtự, có đầu có cuối, bước trước phải được kết thúc trước khi thực hiện
bước sau. “Có ít nhất 2 bên tham dự” có nghĩa là có thểcó nhiều người cùng
tham gia thực hiện chuỗi bước này, còn một người làm một mình thì không
thểgọi là protocol được. Nếu một người thực hiện một chuỗi bước đểlàm ra
một cái bánh thì không thểgọi chuỗi bước thực hiện đó là một protocol,
nhưng việc có thêm một người khác tham dựvào, chẳng hạn được mời để ăn
cái bánh đó, thì có thểlàm nên một protocol. Cuối cùng ghi nhớrằng,
protocol phải là một thiết kếnhằm đạt được tới một kết quảgì đó. Bất kỳmột
cái gì trông giống nhưmột protocol mhưng không đem đến một mục đích nào
thì đều không phải là protocol mà chỉlà một trò chơi lãng phí thời gian!
hiên công việc này đòi hỏi hiểu biết rĩng, nhít là về các công cụ toán học. Ngoài ra chúng ta còn chưa đề cập gì đến việc chứng minh protocol là đúng đắn. Ở đây ta nói đến phép chứng minh hình thức, tức là khả năng dùng công cụ logic hình thức và các hệ tiên đề để chứng minh một protocol là đúng, hơn là dựa vào phân tích trực giác. Đây là một vấn đề rất nan giải và thật ra còn để ngỏ, chưa có hệ phương pháp nào hoàn toàn đáp ứng. Do tính chất phức tạp của vấn đề nên không đề cập chi tiết ở đây. Trao đổi khóa đảm bảo7 (Needham-Schroeder protocol) Mục đích của những protocol thuộc loại này là: + Chứng thực danh tính: đảm bảo cho từng bên danh tính đối phương khai là 7 Authenticated key exchange protocol. Chuyên đề AT&BM các hệ thống máy tính Nguyễn Khánh Văn B/m H3T, khoa CNTT, ĐHBKHN Chương VI - 16 - đúng (chống lại mạo danh) + Sau khi đã chứng thực xong, xác lập một khóa bí mật dùng chung giữa hai bên để sử dụng về sau trên cơ sở dùng truyền tin mã đối xứng bí mật. Needham-Schroeder protocol. Ta hãy hình dung A và B là hai người xa lạ chưa từng liên hệ và bây giờ muốn nói chuyện bằng mật mã với nhau. Hai bên có thể liên lạc qua điện thoại và thống nhất là sẽ sử dụng một hệ mã đối xứng với khóa bí mật nào đó, DES chẳng hạn, tuy nhiên khó khăn là hai bên không thể bàn nhau chọn khóa này qua điện thoại được. Như vậy vấn đề mấu chốt là làm thế nào có thể bí mật chọn được một khóa cho hai bên là xong. Trong protocol này, việc đó sẽ làm được thông qua một giả sử là trong hệ thống có một server tin cậy S đứng trung gian. S vốn đã có khóa bí mật chung thiết lập từ trước với các user trong hệ thống, tức là S đã có thể truyền tin bí mật với các user trong hệ thống rồi. Ta sẽ thiết kế protocol dùng S làm công cụ bắc cầu để A và B có thể qua đó thiết lập được kênh truyền tin của mình. Ý tưởng cụ thể là: + A sẽ liên lạc (tất nhiên là bí mật) với S, nêu danh tính của mình và của B là người mà mình muốn nhờ S liên lạc giúp hộ. + S sẽ chọn ngẫu nhiên ra một chuỗi dùng để làm khóa gọi là K. + Đến đây bạn có thể hình dung đơn giản là S sẽ gửi ngay K này cho cả A và B để hai bên có thể liên lạc với nhau (*). Tuy nhiên như thế không ổn - ta sẽ bàn luận về khả năng này sau. ở đây cách xử lý tiếp theo là: S sẽ gửi trả lại cho A một khóa K nhưng được mã hóa theo khóa bí mật giữa B và S, khi A có mã này, A sẽ có thể gửi nó trực tiếp với B và B giải mã ra sẽ thu được khóa K cần thiết, bằng cách đó A và B sẽ bắt tay nhau và liên lạc bắt đầu. Sau đây là protocol đầy đủ: Trước hết chúng ta có một số thông tin viết tắt như sau: + RA, RB là các số ngẫu nhiên tạo ra bởi A, B để nhằm chống lại replay Chuyên đề AT&BM các hệ thống máy tính Nguyễn Khánh Văn B/m H3T, khoa CNTT, ĐHBKHN Chương VI - 17 - attack8. + K là khóa phiên được tạo ra bởi S + ZAS và ZBS là các khóa bí mật dùng chung giữa (A, S) và (B, S). Protocol như sau: 1. A → S: A, B, RA 2. S → A: ))A,K(E,K,B,R(E BSAS KAK .3 )A,K(E:BA BSK→ 4. )A,K(E:B BSK→ 5. A → B: EK (RB-1) B Giải thích: a. Trước hết ta hãy tạm khoan không để ý đến các phần mã có RA, RB ở bước 1, A đã gửi cho S danh tính của nó và của B và ngưòi cần liên lạc. ở bước 2 thì A nhận được của S (sau khi đã giải mã bằng khóa KAS), các tin là khóa K, danh tính B và nhắc lại RA(để đảm bảo A đã liên lạc với đúng đối tượng S chứ không phải tên cha căng chú kiết nào khác đêng giả vờ là S) và mã . )A,B(E BSK Chính nhờ có mã này khi A đem gửi nó cho B, ở bước 3, thì B sẽ giải mã theo khóa KBS là khóa chỉ riêng B và S mới có nên B thu được hai tin là khóa K và danh tính của A. Do đó B hiểu rằng A muốn nói chuyện với mình bằng khóa bí mật K. )A,B(E BSK b. Như vậy đến đây bạn đã cơ bản hiểu ý nghĩa của 3 bước đầu, ngoại trừ ý kiến dùng RA để làm gì chưa được giải đáp. Điểm tinh vi là ở chỗ, nếu ở đây mà ta không chú ý thì có thể bị chơi xấu bởi replay attack: Mallory nghe trộm các cuộc nói chuyện giữa A và S trước đây có thể đã ghi lại được một phản 8 Relay (phát lại) attack là thủ đoạn làm nhiễu hệ thống liên lạc của đối phương bằng cách thu lại các thông báo của đối phương để phát lại vào lúc khác làm đối phương tưởng có sự vụ mới thật. Để chống lại cần có bộ lọc cẩn thận để phân biệt và vứt bỏ nhưng thông tin replay đó. Chuyên đề AT&BM các hệ thống máy tính Nguyễn Khánh Văn B/m H3T, khoa CNTT, ĐHBKHN Chương VI - 18 - hồi của S cho A trước đó, và bây giờ nếu Mallory dùng thủ thuật đánh đổi, xóa phản hồi thật của S và phát lại phản hồi cũ cho A thì A sẽ bị đánh lừa vì không có gì để phân biệt tính cũ mới. A sẽ dùng khóa K từ trước trong phản hồi cũ để liên lạc với B và nếu tình cờ mà khóa K này đã bị lộ và rơi vào tay Mallory rồi thì thật bi đát cho A! Nay ta sử dụng RA trao đổi giữa A và B thì rõ ràng kế hoạch replay attack của Mallory sẽ gãy cầu, vì RA là số phát sinh ngẫu nhiên, mỗi lần mỗi khác. c. Nếu bạn đã hiểu phần giải thích trên thì bây giờ bạn có thể dễ dàng hiểu được nốt hai bước cuối của protocol. Bài tập: 1. Tự giải thích hai bước cuối 4,5 của Needham-Schroeder protocol 2. Bây giờ bạn hãy tự giải thích ý kiến cho rằng (*) là không ổn. Zero-knowledge protocols Nếu bạn nhập cảnh vào một đất nước thì người ta sẽ yêu cầu bạn trình xem hộ chiếu và Visa, nếu bạn muốn vào một tòa nhà có bảo vệ thì bạn cần phải cho xem chứng minh thư, nếu bạn muốn đi qua một phòng tuyến thì bạn phải cho biết một mật khẩu. Như vậy để bạn có thể chứng thực được mình chính là mình và mình có đủ thẩm quyền được phép làm gì đó thì bạn phải trình cho người gác xem một vật sở hữu gắn liền với bạn. Nhưng đối với cryptography bạn lại có thể có những phép màu là những protocol mà ở đó ta không cần cho xem vật sở hữu của ta (coi nó như một bí mật) mà vẫn chứng minh được cho người thẩm tra/người gác Victor rằng đúng là thật sự ta đang sở hữu vật đó. (Có phải bạn thấy nó như một điều phi lý không?!). Trường hợp này có thể rất cần thiết9. Điều này có thể thực hiện được thông qua khả năng của người cần chứng thực trả lời được một số câu hỏi của Victor - tuy nhiên không vì thế mà các câu trả lời lại lộ ra một chút thông tin cho phép Victor có thể đoán được vật sở hữu bí mật đó. Mật vẫn hoàn mật, dù Victor-gián điệp có ranh ma đến đâu cũng chỉ thu được số 0. Chính vì thế những protocol này 9 Người gác chỉ có nghĩa vụ thẩm tra xem ta có thẩm quyền để ra vào hay không nhưng chính người gác không được phép có thẩm quyền đó, và nếu như bạn là VIP và CIA đang săn tìm thông tin về bạn thì người gác có thể dám làm gián điêpj cho CIA lắm. Chuyên đề AT&BM các hệ thống máy tính Nguyễn Khánh Văn B/m H3T, khoa CNTT, ĐHBKHN Chương VI - 19 - được gọi với cái tên là zero-knowledge protocol. Zero-knowledge protocol cho phép các thao tác quan trọng như chứng minh danh tính (identification) hay trao chuyển khóa (key exchange) có thể cài đặt được mà không làm lộ một chút bí mật nào. Những tính chất này đặc biệt hấp dẫn khi áp dụng trong smart card. Trước khi nêu một protocol ví dụ trong số này, ta điểm qua các bên tham gia và có thể có can thiệp vào protocol: + Peggy người chứng minh (the prover): Peggy nắm được một thông tin và muốn chứng minh cho Victor hay nhưng không muốn tiết lộ thông tin đó. + Victor người thẩm tra (the verifier): Victor được quyền hỏi Peggy một loạt câu hỏi cho đến khi nào anh ta chắc chắn là Peggy nắm được thông tin mật đó. Victor không thể suy được thông tin này ngay cả khi anh ta có cố tình lừa đảo hoặc không tuân thủ protocol. + Eve người nghe trộm (Eavesdropper): Eve nghe trộm cuộc đối thoại trên mạng. Protocol cần phải chống lại không để Eve lấy được tin đồng thời đề phòng replay attack, tức là khả năng Eve sao chép các thông báo của Peggy phát đi và dùng lại sau này để lừa Victor. + Mallory kẻ địch tiềm năng nguy hiểm nhất (the malicious active attacker): Loại này vừa nghe trộm lại vừa có khả năng can thiệp bằng cách xóa, thay thế hay sửa đổi các thông báo của Peggy và Victor trên mạng. Bí mật cần chứng minh là một mẩu thông tin như là một mật khẩu, một khóa riêng bí mật của một hệ khóa công khai hay là một đáp số của một vấn đề toán học học búa. Protocol: Giả sử (n,e) là một hệ khóa công khai RSA. Giả sử Peggie muốn chứng minh rằng cô ta biết một TIN (plaintext) m là đã bị mã hóa thành Mã (ciphertext) c trong hệ RSA này, tức là c= me (mod n). 1. P ( V: y=re với r là một số ngẫu nhiên modulo n 2. V ( P: b ( {0,1}. Chuyên đề AT&BM các hệ thống máy tính Nguyễn Khánh Văn B/m H3T, khoa CNTT, ĐHBKHN Chương VI - 20 - 3. P ( V: z = r ( mb (tức là z=r nếu b=0 hoặc z=rm nếu b=1) 4. V kiểm tra kết quả như sau: nếu anh ta đã gửi b=0 ở bước 2 thì anh ta kiểm tra xem có thực ze=y, nếu anh ta đã gửi đi b=1 ở bước hai thì anh ta kiểm tra xem ze=yc có đúng không. Bốn bước này có thể lặp đi lặp lại rất nhiều lần và Victor có thể thay đổi giữa gửi b=0 và b=1 ở bước thứ hai một cách ngẫu nhiên tùy ý để thật yên tâm rằng thực sự Peggie là chủ nhân của thông tin m. Bài tập: Bạn đọc hãy tự lý giải cho mình những nhận xét sau đây:1. Peggie thực sự (tức là không phải mạo danh), người duy nhất biết m, thì luôn luôn qua protocol thành công. Tính chất này được gọi tính đầy đủ (completeness) 2. Nếu Mallory mạo danh Peggie thì anh ta sẽ thất bại với xác xuất rất cao (tùy thuộc vào số lần mà Victor lặp lại 4 bước của protocol). Tính chất này được gọi tính vững chãi (soundness). 3. Dù làm thế nào (tăng số lần lặp đi lặp lại và thay đổi giá trị b) Victor cũng không thể biết được gì hơn về m ngoại trừ điều rằng nó là một giá trị mà nếu đem lũy thừa số mũ e thì thu được giá trị c 10. 10 Cần lưu ý rằng bài toán tìm logarithm theo modulo (Discrete Logarithm Problem) được coi là bài toán khó và không có lời giải thời gian đa thức (tức là với những con số chọn đủ lớn thì thực tế không thể tính toán được dù giả sử có trong tay các máy tính mạhàng hóa của hàng chục năm sau).
File đính kèm:
- Giáo trình An toàn bảo mật thông tin - Nguyễn Khánh Văn - Chương 6 Cryptographic Protocol.pdf