Tải bản đầy đủ (.doc) (14 trang)

Đồ án an toàn mạng và bảo mật mạng kỹ thuật mã hóa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (285.7 KB, 14 trang )

Mã hoá trong Mạng máy tính
06520027 Hồ Thanh Bình
06520031 Võ Khải Hoàng Ca
06520061 Nguyễn Quốc Cường
06520062 Trần Huy Cường
06520069 Đỗ Quang Đạt
06520090 Nguyễn Xuân Đức
06520118 Hoàng Trường Giang
06520212 Cao Văn Huỳnh
06520422 Đinh Xuân Thắng
06520434 Bùi Trung Thành
06520546 Huỳnh Thanh Tùng
06520569 Võ Quốc Việt
06520576 Nguyễn Văn Vỉnh
06520370 Phan Duy Quốc
An toàn mạng – Mã hoá Page 1
Các sản phẩm của mã hoá luôn có mặt khắp nơi trong đời sống thường ngày, đối với
ngành IT, đây là yếu tố không thể thiếu trong mọi ứng dụng hiện đại, đặc biệt là đối
với ngành giao dịch điện tử & bảo mật mạng.
MỤC LỤC: Trang
I. Tổng quan về mã hoá 3
II. Kĩ thuật mã hoá chung 4
III. Ứng dụng thực tiễn 7
IV. Các công cụ mã hoá 12
An toàn mạng – Mã hoá Page 2
I. Tổng quan về mã hoá
Mã hoá là gì: Mã hoá là một tiến trình biến đổi thông tin, sử dụng các thuật toán nhằm
mục đích không cho người khác có thể nắm bắt được nếu thiếu một vốn thông số nhất
định (key) để dịch ngược.
Đi kèm với mã hoá là giải mã.
Có rất nhiều loại thuật toán mã hoá cho dữ liệu máy tính, chúng được gọi tên theo


thuật toán và có thể so sánh trực tiếp với nhau, ví dụ mã hoá 128-bit, Triple-DES,
2048-bit RSA.
Trong cùng một loại, dĩ nhiên một phép mã hoá 2048-bit RSA sẽ mạnh mẽ hơn phép
mã hoá 1024-bit RSA.
Nhưng như vậy không có nghĩa là một phép mã hoá với độ dài dãy bit lớn được xem
là an toàn. Thử liên tưởng đến ngôi biệt thự của bạn, với chiếc cổng được khoá bằng ổ
khoá 4 chân, mỗi chân như vậy có thể nằm trong 10 vị trí, ổ khoá chỉ mở được khi 4
chân được sắp theo mã khoá của chủ nhà, và để vượt qua, 1 tên trộm cần phải dùng tối
đa 10.000 phép thử (brute-force attack). Nhưng nếu tăng ổ khoá lên 10 chân, sẽ tạo
nên 10 triệu khe cắm khoá hợp lệ, thì không ai đủ sự thông minh (hay sự ngu dốt) để
mở chiếc khoá bằng cách tấn công thuật toán này. Họ có thể phá cửa sổ, hay thậm chí
là phá chiếc cổng, giả danh chính quyền, thợ nước… để đột nhập vào căn nhà của bạn.
Một ổ khoá tốt không thể chống lại những kiểu tấn công như thế được.
Điều đó cho thấy một thuật toán mã hoá cực mạnh sẽ chỉ hữu ít nếu được sử dụng ở
đúng những nơi cần thiết, không phải lúc nào cũng là tối ưu. Cái cần bảo vệ ở trên
chính là ngôi nhà của bạn chứ không phải là đặt một hàng rào bẫy và hi vọng kẻ trộm
sẽ dính vào cái bẫy đó.
Với sự phát triển mạnh mẽ của mình, hầu hết các kênh thông tin đều lấy Internet làm
nền tảng để phát triển. Điều tất yếu sẽ nảy sinh là vấn đề An toàn thông tin, một ngày
nào đó, bạn bỗng nhận ra rằng, thông tin của bạn đang bị theo dõi.
Để vừa đảm bảo thông tin luôn kết nối, vừa đảm bảo yếu tố bảo mật của thông tin thì
phương pháp tốt nhất là mã hoá thông tin.
An toàn mạng – Mã hoá Page 3
Ngày nay việc mã hoá đã trở nên phổ cập, các quốc gia hay là các công ty lớn đều có
chính sách phát triển công cụ mã hoá riêng biệt để bảo vệ cho chính thông tin của họ.
Trên thế giới hiện có rất nhiều các loại thuật toán, trong khuôn khổ bài báo cáo, chúng
ta chỉ tìm hiểu về các thuật toán được ứng dụng phổ biển trong Internet.
Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc. Các
thuộc tính được yêu cầu là:
1) Bí mật: Chỉ có người nhận đã xác thực có thể lấy ra được nội dung của thông

tin chứa đựng trong dạng đã mật mã hóa của nó. Nói khác đi, nó không thể cho
phép thu lượm được bất kỳ thông tin đáng kể nào về nội dung của thông điệp.
2) Nguyên vẹn: Người nhận cần có khả năng xác định được thông tin có bị thay
đổi trong quá trình truyền thông hay không.
3) Xác thực: Người nhận cần có khả năng xác định người gửi và kiểm tra xem
người gửi đó có thực sự gửi thông tin đi hay không.
II. Kĩ thuật mã hoá chung
Các kĩ thuật mã hoá đều sử dụng các khoá (key) làm tác nhân thực hiện việc khoá mã,
thông thường khoá được thể hiện bằng độ dài của khoá tính theo bit, số bits càng lớn
thì tính bảo mật của phép mã hoá càng cao, có thể hiểu nôm na một khoá là một mật
khẩu. Thông thường, để an toàn thì các khoá thường có độ dài 128bits, nghĩa là
phương pháp tấn công vét cạn sẽ phải dò 2
128
trường hợp.
Có 3 kĩ thuật mã hoá chính:
1) Mã hoá đối xứng (Symmetric-key algorithms) - AES, IDEA, DES
Là các thuật toán mã hoá và giải mã trong đó các khoá (key) dùng cho
việc mã hoá và giải mã có quan hệ ràng buộc với nhau (về mặt toán học)
hoặc là như nhau.
Hạn chế của mã hoá đối xứng là khi trao đổi, khoá mã phải được 2 bên
nắm giữ, do vậy việc bảo vệ an toàn cho khoá mã là một việc hết sức khó
khăn. Để đảm bảo việc thông tin liên lạc được an toàn trong một nhóm n
người thì bắt buộc số lượng chìa khoá phải là n(n-1)/2. Do tính chất này,
để tránh rườm ra, người ta phân phối mã khoá này bằng phương pháp mã
hoá bất đối xứng khi có một phiên giao dịch, lúc đó ít nhiều sẽ dễ dàng
quản lý mã khoá hơn thông thường.
Ví dụ điển hình:
An toàn mạng – Mã hoá Page 4
Ngày xưa, khi chưa có máy tính, người ta đã vận dụng phương pháp mã
hoá đối xứng bằng một miếng bìa có đục lỗ theo ý của người viết mã

(đóng vai trò là key), áp miếng bìa lên một mặt giấy, các kí tự từ văn
bản gốc sẽ lần lượt được ghi lên giấy qua các lỗ hổng, sau khi hoàn tất,
các khoảng trống trên mặt giấy sẽ được điền các kí tự ngẫu nhiên. Có
thể nhận xét ngay, việc giải mã thông tin đó hầu như là không thể nếu
không có miếng bìa (key) để tra ngược lại.
Ngày nay người ta sử dụng nhiều thuật toán thao tác trên bit (xor, shift)
để biến đổi thông tin cần được mã hoá, các phép toán này được thực
hiện hàng chục vòng lặp (các giai đoạn monkey around) khiến cho việc
dịch ngược là vô cùng khó khăn nếu không có key.
2) Mã hoá bất đối xứng (Public key cryptography) - RSA
Mã hoá bất đối xứng là kĩ thuật mã hoá sử dụng một cặp khoá dùng để
mã hoá và giải mã thông tin. Khoá được dùng để mã hoá gọi là khoá
công khai (public key), khoá dùng để giải mã thông tin là khoá riêng tư
(private key). Để trao đổi thông tin, một chỉ cần public hoá mã khoá
công khai của mình (Public key), người khác dựa vào mã public đó để
mã hoá thông điệp cần được gửi. Ví dụ mỗi bên A, B sẽ có một public
key (PU ) private key (PR) riêng mình. A tạo ra PUA và PRA. B tạo ra
PUB và PRB. PUA sẽ được A gửi cho B và khi B muốn truyền dữ liệu
cho A thì B sẽ mã hóa bằng PUA. A sẽ giải mã bằng PRA. Ngược lại
nếu A muốn truyền cho B thì A sẽ mã hóa bằng PUB và B giải mã bằng
PRB. PRA và PRB không bao giờ được truyền đi và chỉ được giữ riêng
cho mỗi bên.
Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết
khóa cá nhân (bí mật) mới có thể giải mã được.
Với cách thức này, khái niệm chữ kí điện tử ra đời, khi một thông tin
(chữ kí) đã được mã hoá bằng một khoá công khai (public key), để thử
xem đó có phải là chữ kí của bạn hay không, bạn có thể mã hoá chúng
bằng khoá riêng tư, sau đó giải mã bằng khoá công khai của chính bạn,
nếu thông tin không bị sai lệch thì đó chính là chữ kí của bạn.
3) Mã hoá một chiều (hàm băm):

Tên gọi của nó đã gợi lên ý niệm là chuỗi mã hoá không thể bị dịch
ngược lại. Người ta đã chứng minh được rằng, mỗi chuỗi đã mã hoá chỉ
có thể là ánh xạ của duy nhất một chuỗi chưa mã hoá nhập vào ; có
nghĩa là một mật khẩu chỉ có thể được mã hoá ra một chuỗi duy nhất và
An toàn mạng – Mã hoá Page 5
ngược lại. Các thuật toán mã hoá một chiều được dùng nhiều trong quá
trình xác thực, lưu mật khẩu, thông tin thẻ tín dụng… Nền tảng của loại
này có thể xếp vào cùng loại với mã hoá đối xứng. Trong giao dịch điện
tử, chìa khoá chính là mật khẩu mà người sử dụng đã chọn lựa sẽ được
dùng để mã hoá thông tin của khách hàng, còn mật khẩu sẽ được mã hoá
theo hàm băm một chiều, các hackers hay thậm chí là admin của trang
giao dịch dù có lấy được dữ liệu lưu trên máy chủ cũng không thể nào
dịch ngược nếu không biết được mật khẩu (key) của user.
Ban đầu, người dùng nhập mật khẩu dưới dạng text và gửi yêu cầu xác
thực. Mật khẩu này sẽ được mã hoá băm (chẳng hạn là MD5). Quá trình
kiểm tra nếu trùng với chuỗi mã hoá đã lưu ở máy chủ thì mật khẩu đó
là hợp lệ.
Các thuật toán nổi tiếng được sử dụng nhiều nhất là MD-5 (Message-
Digest algorithm 5) và các thuật toán SHA (SHA-1, SHA-2). Mọi ứng
dụng từ các forum như IPB, VBB cho đến Yahoo! đều ứng dụng trong
việc mã hoá mật khẩu của users.
Theo nhận xét trong chuẩn của FIPS 180-2:
1) Cho một giá trị băm nhất định được tạo nên bởi một trong những
thuật giải SHA, việc tìm lại được đoạn dữ liệu gốc là không khả thi.
2) Việc tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo
ra bởi một trong những thuật giải SHA là không khả thi. Bất cứ thay đổi
nào trên đoạn dữ liệu gốc, dù nhỏ, cũng sẽ tạo nên một giá trị băm hoàn
toàn khác với xác suất rất cao.
* MD5 chuyển đổi thông tin có chiều dài bất kì thành một chuỗi có độ
dài 128 bit không đổi với xác suất khác biệt cao, được biểu diễn bằng 32

số mã hex.
MD5("The quick brown fox jumps over the lazy dog")
= 9e107d9d372bb6826bd81d3542a419d6
Thậm chí một sự thay đổi nhỏ trong mẩu tin cũng dẫn đến thay đổi hoàn
toàn bảng băm, do hiệu ứng tuyết lở. Ví dụ, thay d thành e:
MD5("The quick brown fox jumps over the lazy eog")
= ffd93f16876049265fbaef4da268dd0e
Bảng băm của một chuỗi rỗng là:
MD5("")
An toàn mạng – Mã hoá Page 6
= d41d8cd98f00b204e9800998ecf8427e
MD5 rất khó để có thể giải mã ngược chiều. Hiện nay cách đơn giản và
hiệu quả nhất của việc giải mã MD5 là dựng các databases của các giá
trị mã hoá MD5, trước tiên hackers cung cấp các công cụ cho phép
người dùng xem mã MD5 của một chuỗi người dùng nhập vào, kết quả
sẽ được trả về đồng thời nó cũng được lưu vào DB trong máy chủ, dần
dần tạo nên một khối DB khổng lồ.
Vì lý do này, MD5 được cải tiến, ngoài giá trị nhập vào của người dùng
(thường là password) máy tính sẽ tạo thêm một mã ngẫu nhiên (random
salt) được sinh và lưu ở máy chủ để “trộn” 2 lần vào chuỗi nhập sau đó
mới MD5 kết quả cuối cùng.
return md5( md5( $salt ) . $md5_once_password );
Vì vậy nếu bằng một cách nào đấy, hackers sniff được đoạn
MD5(password) của bạn thì việc dịch ngược cũng bó tay vì không thể
nào có được mã salt. Và dù cho hackers biết được mã salt thì việc dịch
ngược cũng là bất khả thi bởi DB có sẵn không thể nào lường hết được
các kí tự của mã salt này.
III. Ứng dụng thực tiễn
Trong việc mã hoá truyền thông trên Internet, nổi bật hiện nay là giao thức SSL
(Secure Socket Layer), áp dụng cả 3 kĩ thuật mã hoá trên.

SSL là giao thức đa mục đích được thiết kế để tạo ra các giao tiếp giữa hai chương
trình ứng dụng trên một cổng định trước (socket 443) nhằm mã hoá toàn bộ thông tin
đi/đến, mà ngày nay được sử dụng rộng rãi cho giao dịch điện tử như truyền số hiệu
thẻ tín dụng, mật khẩu, số bí mật cá nhân (PIN) trên Internet.
Điểm cơ bản của SSL được thiết kế độc lập với tầng ứng dụng để đảm bảo tính bí mật,
an toàn và chống giả mạo luồng thông tin qua Internet giữa hai ứng dụng bất kỳ, thí
dụ như webserver và các trình duyệt khách (browsers), do đó được sử dụng rộng rãi
trong nhiều ứng dụng khác nhau trên môi trường Internet.
An toàn mạng – Mã hoá Page 7
Chúng ta chỉ phân tích cơ chế để hiểu rõ thêm ứng dụng của các kĩ thuật mã hoá vào
giao thức này.
Để dễ hiểu, phần này sẽ trình bày qua ví dụ cụ thể: Alice trao đổi thông tin với Bob
bằng công nghệ khóa chung. Type_of_key{message} có nghĩa là message được mã
hóa hoặc giải mã bằng với loại thuật toán đang dùng (Type_of_key).
Alice cần chắc chắn là mình sẽ nói chuyện với Bob mà không phải là một ai khác.
Alice sẽ tiến hành xác thực (authenticate) Bob. Bob có một cặp khóa gồm một khoá
công khai (public key) và một khóa riêng (private key). Bob cho Alice biết trước khoá
công khai (public key) của mình (sẽ nói sau bằng cách nào). Alice sẽ tạo ra một thông
điệp ngẫu nhiên (random message) và gởi nó đến Bob:
A->B Random_message
Bob dùng khóa riêng (private key) của mình để mã hóa thông điệp vừa nhận được và
gởi trả lại cho Alice:
B->A private_Bob(Random_message)
Alice nhận được message từ Bob, dùng khoá công khai (public key) của Bob để giải
mã message này và sau đó so sánh message vừa giải mã được với Random_message
đã gởi đi. Nếu giống nhau, Alice có thể tin chắc rằng mình đang nói chuyện với Bob.
1. Digest
Thay vì phải mã hóa toàn bộ message nhận được từ Alice, Bob có thể xây dựng một
bản tóm tắt (digest) của message bằng hàm băm một chiều (hash one-way), sau đó mã
hóa digest bằng khóa riêng (private key) của mình và gởi cho Alice. Alice sẽ dùng

khoá công khai (public key) của Bob để giải mã digest do Bob gởi tới và tính digest
của message đã được gởi đi, sau đó so sánh hai digest này với nhau. Nếu trùng nhau,
có nghĩa Alice có thể tin chắc là mình đang nói chuyện với Bob.
An toàn mạng – Mã hoá Page 8
Digest thực chất là chỉ là một số nguyên (integer). Hai thuật toán phổ biến được dùng
để tạo digest là MD5 hash 128bit, SHA hash 160 bit. Ai đó có được digest của Bob
cũng không thể nào suy luận ra được message nguyên bản(original) vì digest chỉ là giá
trị hash một chiều. Hai message khác nhau sẽ có digest khác nhau, khả năng trùng
nhau xấp xỉ là 0.
2. Chữ kí điện tử (digital signature)
Theo cách ở trên thì Bob đã kí (sign) message do Alice gởi tới, nhưng nếu như ai đó
đã thay đổi message này thì sao? Vì vậy cần thay đổi một chút như sau:
A->B Chào, Có phải Bob đó không?
B->A Alice, Mình là Bob đây!
private_Bob{digest[“Alice, Mình là Bob đây!”]}
Như bạn thấy Bob không hề kí message của Alice. Thay vào đó, Bob sẽ gởi một
mesage khác (không bị mã hóa) và digest của của message này (đã được mã hóa bằng
khóa riêng (private key) của Bob) đến cho Alice. Bob chỉ tin tưởng vào chính mình.
Alice dễ dàng thẩm tra Bob bằng cách dùng khoá công khai (public key) của Bob giải
mã digest nhận được, sau đó tính digest của message nhận từ Bob và so sánh hai
digest này với nhau. Digest mà Bob gởi tới Alice chính là một chữ kí điện tử. Nó kí
cho message "Alice, Mình là Bob đây!" để đảm bảo chắc chắn là message này không
bị ai đó thay đổi gì khi đến Alice. Nếu thay đổi Alice sẽ biết ngay qua việc thẩm tra
digest.
An toàn mạng – Mã hoá Page 9
3. Trao khoá công khai (public key)
Bob trao khoá công khai (public key) của mình cho Alice bằng cách nào? Bạn hãy
xem thử giao thức sau:
A->B Xin chào!
B->A Chào, Mình là Bob. Đây là public key của mình!

A->B Hãy đưa bằng chứng đi!
B->A Alice, Mình là Bob đây!
private_Bob{digest[“Alice, Mình là Bob đây!”]}
Với cách này thì ai cũng có thể giả mạo Bob và trao khoá công khai (public key) của
họ cho Alice, làm cho Alice tưởng lầm là mình đang nói chuyện với Bob.
Để giải quyết vấn đề này, Alice và Bob có thể dùng giấy chứng nhận điện tử
4. Giấy chứng nhận điện tử (digital certificate)
Giấy chứng nhận điện tử dùng để chứng nhận khoá công khai (public key) của một cá
nhân nào đó. Một giấy chứng nhận điện tử thường bao gồm các thứ sau:
- Tên cơ quan cấp giấy chứng nhận (issuer's name)
- Tên thực thể (entity) được cấp giấy chứng nhận(còn được gọi là đối tượng - subject)
- Khoá công khai (public key) của subject
An toàn mạng – Mã hoá Page 10
- Tem thời gian (time-stamps) cho biết thời gian có hiệu lực của giấy chứng nhận
Chỉ có các cơ quan có thẩm quyền Certificate Authority (thường được gọi tắt là CA)
mới đươc phép cấp giấy chứng nhận. Giấy chứng nhận được kí bằng khóa riêng
(private key) của người cấp. CA cũng được tổ chức theo dạng cây "hierarchy" tương
tự như domain-name. Dĩ nhiên bạn cũng có thể tạo ra một CA mới cho riêng cho
mình.
Chúng ta hãy xem giao thức mới này:
A->B Xin chào!
B->A Chào, Mình là Bob. Đây là giấy chứng nhận của mình!
A->B Hãy đưa bằng chứng đi!
B->A Alice, Mình là Bob đây!
private_Bob{digest[“Alice, Mình là Bob đây!”]}
Bằng cách gửi Giấy chứng nhận điện tử (digital certificate) của mình cho Alice (có
nghĩa là alice sẽ biết khoá công khai của Bob) thì bắt buộc thông điệp phải được mã
hoá bằng chính private key của Bob thì Alice mới xác nhận được.
Ai đó dùng giấy chứng nhận của Bob để giả mạo Bob sẽ bị Alice phát hiện ngay!
A->M Xin chào

M->A Chào, Mình là Bob. Đây là giấy chứng nhận của mình!
A->M Hãy đưa bằng chứng đi!
M->A ???
Mallet không biết khóa riêng (private key) của Bob nên không thể xây dựng được
message để Alice có thể tin mình là Bob.
5. Trao đổi khóa bí mật (secret-key)
Sau khi Alice đã xác thực mình đang nói chuyện với Bob, Alice sẽ gởi cho Bob một
message đã bị mã hóa bằng khoá công khai (public key) của Bob:
A->B public_Bob{“khóa_bí_mật”}
Bằng cách này, chỉ có Bob mới có thể giải mã message trên và lấy được khóa bí mật
bởi vì chỉ có Bob mới biết được khóa riêng (private key) để giải mã. Trao đổi khóa bí
mật bằng công nghệ khoá công khai (public key) cực kì an toàn. Không một ai ngoại
trừ Alice và Bob biết được khóa bí mật. Trong SSL, khóa bí mật này chính là khóa
phiên giao dịch giữa 2 người ở thời điểm đó (session key). Kể từ đây Alice và Bob sẽ
dùng khóa phiên để trao đổi dữ liệu cho nhau. Khóa phiên được tạo ra trong mỗi phiên
kết nối SSL và hoàn toàn bí mật (chỉ có Alice và Bob biết) nên rất an toàn. Công nghệ
chuyên chở khóa phiên bằng khoá công khai (public key) và dùng khóa phiên như một
An toàn mạng – Mã hoá Page 11
khóa đối xứng bí mật để trao đổi dữ liệu cho nhau còn được biết đến với cái tên là
hybrid, tức là kết hợp cả hai phương pháp mã hóa dùng kĩ thuật mã hoá đối xứng và
mã hoá bất đối xứng.
Đây là giao thức mới:
A->B Xin chào!
B->A Chào, Mình là Bob. Đây là giấy chứng nhận của mình!
A->B Hãy đưa bằng chứng đi!
B->A Alice, Mình là Bob đây!
private_Bob{digest[“Alice, Mình là Bob đây!”]}
A->B Ok Bob, Đây là khoá bí mật của chúng ta public_Bob{“khóa_bí_mật”}
B->A khóa-bí-mật{message 1}
B->A khóa-bí-mật{message 2}


6. Tấn công man-in-the-middle
Giao thức trên chưa phải là an toàn tuyệt đối. Mallet ngồi giữa Alice và Bob có thể
chơi trò tấn công man-in-the-middle như sau:
A->M Xin chào!
M->B Xin chào!
B->M Chào, Mình là Bob. Đây là giấy chứng nhận của mình!
M->A Chào, Mình là Bob. Đây là giấy chứng nhận của mình!
A->M Hãy đưa bằng chứng đi!
M->B Hãy đưa bằng chứng đi!
B->M Alice, Mình là Bob đây!
private_Bob{digest[“Alice, Mình là Bob đây!”]}
M->A Alice, Mình là Bob đây!
private_Bob{digest[“Alice, Mình là Bob đây!”]}
A->M Ok Bob, đây là khoá bí mật của chúng ta public_Bob{“khóa_bí_mật”}
M->B Ok Bob, đây là khoá bí mật của chúng ta public_Bob{“khóa_bí_mật”}
B->M khóa-bí-mật{something}
M->A Editted [khóa-bí-mật{something}]
Mallet sẽ chuyển tiếp dữ liệu giữa Alice và Bob cho đến khi họ trao đổi khóa bí mật.
Tại thời điểm này Alice nghĩ rằng mình đang nói chuyện với Bob nên tin tưởng hoàn
toàn vào các message do Bob gởi tới. Thực chất không phải là như vậy. Mallet mặc dù
không biết khóa bí mật nhưng hoàn toàn có thể xén, thêm hoặc sửa đổi gì đó trên các
dữ liệu được gởi từ Bob đến Alice.
An toàn mạng – Mã hoá Page 12
7. Mã xác thực thông điệp (MAC)
Để ngăn chặn cuộc tấn công man-in-the-middle trên, Alice và Bob có thể dùng thêm
mã xác thực thông điệp (Message Authentication Code) thường được gọi tắt là MAC.
Thuật toán tạo MAC khá đơn giản:
Code:
MAC = Digest[some message, khóa bí mật]

Mallet không biết khóa bí mật nên không tài nào tính đúng giá trị digest của message.
Đây là toàn bộ giao thức:
A->B Xin chào!
B->A Chào, Mình là Bob. Đây là giấy chứng nhận của mình!
A->B Hãy đưa bằng chứng đi!
B->A Alice, Mình là Bob đây!
private_Bob{digest[“Alice, Mình là Bob đây!”]}
A->B Ok Bob, đây là khoá bí mật của chúng ta public_Bob{“khóa_bí_mật”}
khóa-bí-mật{something, MAC}
Toàn bộ cấp độ bảo mật và an toàn của thông tin/dữ liệu phụ thuộc vào một số tham
số:
(i) Số nhận dạng theo phiên làm việc ngẫu nhiên (session ID);
(ii) Cấp độ bảo mật của các thuật toán bảo mật áp dụng cho SSL;
(iii) Độ dài của khoá chính (key length) sử dụng cho lược đồ mã hoá thông tin.
An toàn mạng – Mã hoá Page 13
IV. Các công cụ mã hoá
BitLocker: BitLocker là ứng dụng mã hóa tích hợp sẵn trong Vista
Enterprise và Vista Ultimate có chức năng bảo vệ toàn diện này. BitLocker
nằm trong Windows Security Control Panel.
TrueCrypt (www.truecrypt.org) – Free source code
Ohos Mini Drive () – Shareware
PGP Desktop () - 99USD
Encrypt & Decrypt MD5 Hashes - />….
An toàn mạng – Mã hoá Page 14

×