1. Trang chủ
  2. » Tất cả

Đồ án an toàn mạng và bảo mật mạng mã hóa an toàn thông tin

43 956 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 43
Dung lượng 805 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đ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, Tr

Trang 1

An Toàn Thông Tin

06520118 Hoàng Trường Giang

06520212 Cao Văn Huỳnh

Trang 3

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.

Trang 4

Tổng quan về mã hoá

 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.

 Đ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.

 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.

Trang 5

Tổng quan về mã hoá

 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à:

 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.

 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.

 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.

Trang 6

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ò 2128 trường hợp

Trang 7

Kĩ thuật mã hoá chung

Có 3 kĩ thuật mã hoá chính:

1.Mã hoá đối xứng (Symmetric-key algorithms)

- AES, IDEA, DES

2.Mã hoá bất đối xứng (Asymmetric cryptography - Public key cryptography) - RSA

3.Mã hoá một chiều (hàm băm):

Trang 8

Kĩ thuật mã hoá chung

I 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 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.

Trang 9

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ụ:

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,

Trang 10

Mã hoá đối xứ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.

Trang 11

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.

Trang 12

lệch thì đó chính là chữ kí của bạn.

Trang 13

Mã hoá một chiều

III 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à

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

Trang 14

Mã hoá một chiều

Theo nhận xét được ghi trong chuẩn 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.

Trang 15

Mã hoá một chiều

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

Trang 16

 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

- MD5("The quick brown fox jumps over the lazy eog")

= ffd93f16876049265fbaef4da268dd0e

- MD5("") = d41d8cd98f00b204e9800998ecf8427e

Trang 17

Mã hoá một chiều

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ồ

http://gdataonline.com

Trang 18

Mã hoá một chiều

Ở thuật toán MD5 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 của người dùng sau đó

mới MD5 kết quả cuối cùng

return md5( md5( $salt ) $md5_once_password );

Trang 19

Ứng dụng thực tiễn

IV Ứ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.

Trang 20

Ứng dụng thực tiễn

 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.

 Đ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ỳ

Trang 21

message) và gởi nó đến Bob:

Trang 23

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

Trang 24

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

Trang 25

2 Chữ kí điện tử (digital signature)

Trang 26

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!”]}

Trang 27

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

Trang 28

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!”]}

Trang 29

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

Trang 30

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!

mình!

B->A Alice, Mình là Bob đây!

private_Bob{digest[“ Alice, Mình là Bob đây! ”]}

Trang 31

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ử

Trang 32

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

- 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

Trang 33

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!

Trang 34

 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.

Trang 35

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:

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.

Trang 36

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 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

Trang 37

 Đâ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 }

Trang 38

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!

Trang 39

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 ”}

Trang 40

Để 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.

Trang 41

SSL

Trang 42

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.

Trang 43

 PGP Desktop (http://na.store.pgp.com) - 99USD

 Encrypt & Decrypt MD5 Hashes -

http://md5encryption.com/

Ngày đăng: 14/12/2021, 18:03

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w