Giáo trình An toàn bảo mật thông tin - Nguyễn Khánh Văn - Chương 5: Quản lý khóa
Trong các hệthống này, hai user cần phải sửdụng chung một khoá chung, tức là phải có
cách trao đổi thông tin đểthiết lập nên khoá này. Nhưng khi này nhớrằng đường truyền
tin chưa có bảo mật, vậy làm sao có thểgiữbí mật được thông tin trao đổi thiết lập khoá
này? Điều này có thểthực hiện qua một sốcách nhưsau:
1. Hai user sẽsửdụng một kênh truyền tin mật bổsung chẳng hạn nhưdùng người đưa
thư. Nhược điểm rõ ràng: tốn kém, chậm, độan toàn vẫn bị đặt dấu hỏi (người đưa
thưcó tin cậy được không?)
2. Trao chuyển khoá thông qua một nhà thẩm quyền đáng tin: mỗi user sẽliên lạc bí mật
với S -nhà thẩm quyền đáng tin. Mỗi user cần thiết lập trước với S một kênh liên lạc
bí mật, có thểlà dùng khoá đối xứng với khoá chung được thiết lập do gặp gỡtrực
tiếp. Sau này nếu một user A muốn thiết lập liên lạc bí mật với một user B khác thì A
có thểgửi yêu cầu thiết lập liên lạc tới B cho S đểqua S sẽlàm việc với B. Nhờqua S
mà khóa chung được thiết lập giữa A và B.
hoá Diffie-Hellman A và B thống nhất chọn một số nguyên tố p, một phần tử nguyên thuỷ (primitive element) α, tức là: {α0, α1, α2, ..., αp-1} = {1,2,3 ..., p-1} 1. A chọn một số ngẫu nhiên XA, 1≤ XA ≤p. B chọn một số ngẫu nhiên XB, 1≤ XB BB ≤p. 2. A tính: YA = ±p AXα A Æ B: YA A giữ bí mật XA B tính: YB = ±p B BXα Chuyên đề AT&BM các hệ thống máy tính B/m H3T, khoa CNTT, ĐHBKHN Nguyễn Khánh Văn Chương V - 2 - B Æ A: YB. B B giữ bí mật XBB 3. A tính: ppYK BAABA XXXXXB ±==±= αα )()( B tính: ppYK BABAB XXXXXA ±==±= αα )()( Như vậy ta thấy hai bên A và B trao đổi hai giá trị luỹ thừa của α, (với bậc XA và XB) từ đó hai bên đều cùng tính được cùng một số K cũng là luỹ thừa của α với bậc bằng tích X B AXBB. Vì XA,XB là được giữ bí mật và không truyền đi nên K cũng là bí mật, tức là hai bên có thể thống nhất chọn số K chung này làm khoá bí mật chung. B Kẻ thù chỉ có thể nghe trộm được YA,YB truyền qua mạng, để tính được K nó cần phải biết X B A,XBB. Dựa vào YA tìm XA là khó: Độ an toàn của hệ thống quyết định bởi tính khó của bài toán tính logarit rời rạc. Sau đây là một ví dụ minh hoạ cụ thể cho giao thức trao chuyển khoá Diffie-Hellman Ví dụ: Chọn p=11, α=2. A Æ B: Y = α3 = 8±11 B Æ A: Y’ = α7 = 7±11 A tính: K = Y’3 =73 = 2±11 B tính: K = Y3 =87 = 2±11 Tuy nhiên giao thức này vẫn có điểm yếu: nó là không an toàn đối với tấn công man-in- the-middle (người ngồi giữa thao túng). Trong phép tấn công này, kẻ thù C là rất mạnh và hiểm: C lẻn vào ngồi vào vị trí giữa A và B (vì tất nhiên A và B cách mặt nhau trên mạng) và đóng giả mỗi bên (đóng giả làm A đối với B, và đóng giả là B đối với A) để thiết lập khoá chung giữa A và C, B và C. Trong khi đó A và B cứ tưởng là mình đang thiết lập khoá chung giữa A và B với nhau. Kết cục A và B hoá ra nói chuyện với C chứ không phải là nói chuyện với nhau. Cụ thể như sau: A Æ C: aα C Æ A: 1cα Như vậy có thể thấy A và C cùng tính được 1acα C Æ B: 2cα B Æ C: bα Cả B và C cùng tính được 2acα Chuyên đề AT&BM các hệ thống máy tính B/m H3T, khoa CNTT, ĐHBKHN Nguyễn Khánh Văn Chương V - 3 - Như vậy A cứ tưởng là mình đã thiết lập đựoc khoá chung là với B mà thực ra là với C, cũng như B cứ tưởng là mình đã thiết lập được khoá chung là với A mà thực ra là với C. C sẽ chơi trò đóng giả như sau: Khi nào A nói một câu với B, bằng cách mã theo thì tất nhiên câu nói đó không đến tai B mà lại đến tai C, C sẽ dùng khoá để giải mã rồi lại dùng để mã lại và gửi lên cho B. Như vậy câu nói của A cho B vẫn đến tai B nhưng C nghe trộm mất. Ngược lại từ B về A cũng vậy. Hai bên A và B cứ tưởng đang nói truyện “thầm” vào tai nhau, kỳ tình C nghe được hết mà hơn nữa chính C đã gửi câu nói của người này đến tai người kia. 1acα 2acα 1acα 1acα 2acα Sau đây là giải pháp để khắc phục điểm yếu trên: AÆ B: αa B chọn một số ngẫu nhiên b và tính k=αab BÆ A: αb, Ek(SB(α , α )) B a b A tính k=αab và giải mã Ek(SB(α , α )) và kiểm định α B a b a A Æ B: Ek(SA(αa, αb)) Vấn đề trao chuyển khoá trên PKC Để liên lạc bí mật với Bob qua PKC, Alice cần phải lấy được khoá PK (khóa công khai - public key), có thể bằng 1 trong 2 cách: 1. lấy trực tiếp từ Bob 2. đọc từ thư mục công cộng Mặc dù khoá công khai nghĩa là không cần giữ bí mật, nhưng lại xuất hiện các vấn đề về tính xác thực và tính nguyên vẹn: + Carol có thể đánh tráo khoá PK của cô ta ZC vào thay ZB lừa Alice mã hoá bằng ZB C khi định liên lạc với Bob và Carol sẽ lấy trộm được tin. + Khoá PK là khá lớn, cỡ 1000 bits, một bit mà bị truyền có lỗi thì sẽ dẫn đến hỏng tất. Chứng nhận (Certificate) Một giải pháp kỹ thuật cho phép giải quyết một phần các vấn đề ở trên là áp dụng khái niệm chứng nhận (certificate). Hệ thống sẽ bao gồm: i) Một trung tâm thẩm quyền S ii) Mỗi user có thiết lập một kênh truyền tin bí mật với S: chẳng hạn như mọi user đều được phổ biến khoá PK của S. Hệ thống sẽ làm việc như sau. Alice sẽ bí mật gửi ZA cho S và nhận trả lại một certificate CA: M = [ZA, tên Alice, chu kỳ phép sử dụng] Chuyên đề AT&BM các hệ thống máy tính B/m H3T, khoa CNTT, ĐHBKHN Nguyễn Khánh Văn Chương V - 4 - CA = (M) SzD Như vậy CA liên kết tên Alice với khoá PK của Alice là ZA và một chu kỳ thời gian sử dụng bằng một chữ ký chứng nhận của cơ quan S. Khi Alice muốn gửi tin bí mật cho Bob, cô ta làm như sau: i) Kiếm certificate CB B ii) Kiểm định chữ ký của S iii) Tách ZB từ CB BB và sử dụng nó để mã hoá tin và gửi đi Một số vấn đề trong quản lý khoá trong hệ PKC có sử dụng certificate CA và CB là các certificate phát hành bởi S. A có thể nhận được CB BB bởi: i) hỏi trực tiếp Bob ii) xem thư mục công cộng Trong cả hai trường hợp, xuất hiện vấn đề của tính nguyên vẹn (integrity), chẳng hạn như certificate nhận được có thể vừa mới bị quá hạn. Một giải pháp có thể là hỏi lấy CB thông qua S. Ưu điểm rõ ràng của nó là ZB BB luôn được chứng nhận gia hạn kịp thời, tuy nhiên rõ ràng như vậy dễ gây ra quá tải cho S, đồng thời tập trung quá nhiều tin tưởng vào S. Vấn đề khác nữa là nhân vật nào sẽ tạo ra khoá trong hệ thống. Nếu để S tạo khoá thì: i) Ưu điểm: khoá sẽ được tạo ra trong một quá trình cẩn thận bài bản hơn ii) Nhược điểm: S có thể tận dụng cơ hội để nghe trộm, ngoài ra dễ tạo ra tắc ngẽn trong hệ thống Nếu để các user tạo khoá thì vấn đề thứ hai được giải toả nhưng các user phải có được khả năng truy nhập đến các khoá được tạo ở các lần trước kia để có thể truy nhập được các files đã mã hoá theo khoá trước kia. Còn vấn đề sẽ lưu cất khoá ở đâu: i) Có thể lưu khoá bằng phần mềm trong các tệp chỉ đọc (read-only). ii) Bằng phần cứng, cất giữ trong các bộ nhớ chỉ đọc. Thành phần công khai thì được đưa cho người Ngày nay chúng ta đã có những thiết bị như smart card (thẻ thông minh) trong đó có cả vi xử lý và thiết bị nhớ để lưu khoá và sinh/giải mã, tất cả trên một con chip. Dùng PKC để trao chuyển khoá bí mật Một ứng dụng quan trọng của PKC là để trao chuyển khoá cho SKC (hệ khoá đối xứng bí mật): nó được dùng để thiết lập các thông tin chia sẻ chung giữa hai bên truyền tin mật đối xứng, như khóa bí mật, vector khởi đầu. Giao thức thứ nhất Giả sử A muốn thiết lập một khoá SKC với B. Chuyên đề AT&BM các hệ thống máy tính B/m H3T, khoa CNTT, ĐHBKHN Nguyễn Khánh Văn Chương V - 5 - i) A và B tìm lấy khoá công khai của nhau ii) A tạo ra một khoá bí mật K và vector khởi đầu IV iii) A tạo ra một bản ghi gồm khoá K, vector IV, tên của Alice, nhãn thời gian và một số tuần tự (sequence number), rồi mã hoá bản ghi này với khoá công khai của Bob và gửi cho Bob X= [K, IV, A’s ID, timestamp, seq. no.] AÆ B: Y = )(XE BZ Những thông tin thêm vào này (A’s ID, timestamp, seq. no.) dùng để xác nhận Alice với Bob đồng thời chống lại replay attack: kẻ địch ghi lại các thông báo giữa A và B rồi chờ đến một lúc nào đó sẽ phát lại, đánh lừa B tưởng là A đang định liên lạc, gây nhiễu loạn hệ thống. Giao thức thứ hai: bắt tay ba bước Needham-Schroeder Giao thức sau đây cho phép A và B có thể chứng nhận được sự có mặt của nhau trong thời gian thật: i) AÆ B: ),( AAZ IDRE B ii) B Æ A: ),( BAZ RRE A iii) A Æ B: )( BZ RE A RA, RB là các số ngẫu nhiên do A, B tạo ra B IDA là các thông tin định danh cho A Ở đây ta có thể thấy rằng sau bước 2, A đã có thể kiểm tra được rằng đúng phía bên kia đang là B (vì chỉ có như thế thì mới giải mã được và trả về ngay số ngẫu nhiên RB, replay attack không thể thoả mãn là cũng phát lại về đúng số ngẫu nhiên được). B Tương tự, sau bước 2, B đã có thể kiểm tra được rằng đúng phía bên kia đang là B. Bằng cách này, A và B có thể chứng nhận được cho nhau về sự có mặt của nhau tại cùng lúc (thời gian thực) và sau đó A chỉ việc gửi khoá K bí mật sang cho B: A Æ B: ))(( KDE AB zZ Chú ý: thực ra việc chứng mình tính an toàn của một giao thức là một vấn đề rất khó. Có nhiều giao thức cho vấn đề trao chuyển khoá, chứng thực lẫn nhau, ... đã được đề xuất mà không có một phương pháp chứng minh một cách hệ thống nào cho tính an toàn của chúng. Khuyến nghị về một cơ chế chứng thực của ISO (ISO Authentication Framework - X.509) Trong khuyến nghị này, ISO đã trình bày như sau đây một chuẩn cấu trúc của giấy chứng nhận (certificate): Chuyên đề AT&BM các hệ thống máy tính B/m H3T, khoa CNTT, ĐHBKHN Nguyễn Khánh Văn Chương V - 6 - Version Serial Number: số giấy chứng nhận do người phát hành, CA đặt ra để phân biệt và lưu trữ các certificate. Algorithm identifier: thông số về thuật toán mà người phát hành dùng để sinh chữ ký • Algorithm: tên thuật toán • Parameters: các tham số thuật toán Issuer: Người phát hành ra giấy chứng nhận này (certificate) Subject: người được chứng nhận Subject’s public key: Về khoá công khai của người được chứng nhận • Algorithm: Thuật toán PKC sử dụng với khoá công khai này • Parameters: Các tham số cho thuật toán • Public key: Khoá công khai Signature: chữ ký của người phát hành Nếu Alice muốn truyền tin với Bob, cô ta sẽ sử dụng certificate của Bob. Nếu Alice và Bob đăng ký với cùng một cơ quan CA (certificate authority: cơ quan thẩm quyền phát hành chứng nhận) thì Alice sẽ lấy ngay được khoá công khai của CA và chứng nhận của Bob, do đó dùng khoá PK của CA để kiểm tra CB. Nếu Alice và Bob thuộc về các CA khác nhau thì khi đó Alice cần biết đường dẫn (certificate path) đến CA của Bob trên cây phân cấp các CA (certificate tree). B CAE CAD CAC CAB CAA Alice Bob Chuyên đề AT&BM các hệ thống máy tính B/m H3T, khoa CNTT, ĐHBKHN Nguyễn Khánh Văn Chương V - 7 - Trên cây certificate này, mỗi CA đều có chứa hai certificate chứng nhận cho hai cơ quan CA ở ngay trên nó và dưới nó. Dođó nó cho phép Alice lần lượt truy nhập và kiểm định chuỗi chữ ký như sau: - kiểm tra khoá PK của CAC bằng khoá PK của CAA. - kiểm tra khoá PK của CAD bằng khoá PK của CAC. - kiểm tra khoá PK của CAE bằng khoá PK của CAD.
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 5 Quản lý khóa.pdf