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.

pdf7 trang | Chuyên mục: An Toàn Và Bảo Mật Hệ Thống Thông Tin | Chia sẻ: dkS00TYs | Lượt xem: 2049 | Lượt tải: 1download
Tóm tắt nội dung 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, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfGiá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
Tài liệu liên quan