1. Trang chủ
  2. » Luận Văn - Báo Cáo

TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN

47 1,5K 4

Đ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 47
Dung lượng 2,37 MB

Nội dung

CHƢƠNG 1: TỔNG QUAN VỀ MÃ HÓA ........................................................................ 1 1.1. Khái niệm về mã hóa dữ liệu: ................................................................................... 1 1.2. Phân loại mã hóa dữ liệu: .......................................................................................... 1 1.2.1. Phân loại theo các phƣơng pháp: ....................................................................... 1 1.2.2. Phân loại theo số lƣợng khóa: ............................................................................ 3 1.3. Tầm quan trọng của mã hóa dữ liệu: ........................................................................ 3 1.4. Các ứng dụng của mã hóa dữ liệu: ............................................................................ 3 CHƢƠNG 2: MÃ HOÁN VỊ ............................................................................................... 5 2.1. Cơ sở lý thuyết: ......................................................................................................... 5 (1) Đảo ngƣợc toàn bộ bản rõ ...................................................................................... 5 (2) Mã hóa theo mẫu hình học ..................................................................................... 5 2.2. Cài đặt chƣơng trình: ................................................................................................ 6 CHƢƠNG 3: HÀM BĂM MD5 .......................................................................................... 8 3.1. Cơ sở lý thuyết: ....................................................................................................... 10 3.1.1. Hàm băm: ......................................................................................................... 10 3.1.2. Hàm băm MD5: ............................................................................................... 12 3.1.2.1. Giới thiệu: ................................................................................................. 12 3.1.2.2. Thuật toán MD5: ....................................................................................... 12 3.2. Cài đặt chƣơng trình: .............................................................................................. 18 CHƢƠNG 4: CÁC DỊCH VỤ PGP ................................................................................... 27 4.1. Tổng quan về PGP .................................................................................................. 27 4.1.1. Giới thiệu chung về PGP ................................................................................. 27 4.1.2. Mục đích sử dụng PGP .................................................................................... 27 4.1.3. Hoạt động của PGP .......................................................................................... 27 4.1.3.1. Xác thực .................................................................................................... 28 4.1.3.2. Mã hóa ...................................................................................................... 28 4.1.3.3. Bảo mật và xác thực .................................................................................. 29 4.1.3.4. Nén ............................................................................................................ 29 4.1.3.5. Tƣơng thích thƣ điện tử ............................................................................ 29 4.1.3.6. Khoá riêng và công khai của PGP ............................................................ 30 4.1.3.7. Các chùm khoá PGP ................................................................................. 31 4.1.3.8. Sinh mẩu tin PGP ...................................................................................... 31 4.1.3.9. Quản lý khoá PGP ..................................................................................... 31 4.2. Cài đặt và thử nghiệm: ............................................................................................ 32 4.2.1. Cài đặt: ............................................................................................................. 32 4.2.2. Sử dụng PGP Desktop Proffessionnal: ............................................................ 35 1

Trang 1

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM

Lê Quyết Tiến Đặng Trung Hiếu Nguyễn Hoàng Thùy Trang

Bùi Thị Hương

Hải Phòng, tháng 6 năm 2014

Trang 2

CHƯƠNG 1: TỔNG QUAN VỀ MÃ HÓA 1

1.1 Khái niệm về mã hóa dữ liệu: 1

1.2 Phân loại mã hóa dữ liệu: 1

1.2.1 Phân loại theo các phương pháp: 1

1.2.2 Phân loại theo số lượng khóa: 3

1.3 Tầm quan trọng của mã hóa dữ liệu: 3

1.4 Các ứng dụng của mã hóa dữ liệu: 3

CHƯƠNG 2: MÃ HOÁN VỊ 5

2.1 Cơ sở lý thuyết: 5

(1) Đảo ngược toàn bộ bản rõ 5

(2) Mã hóa theo mẫu hình học 5

2.2 Cài đặt chương trình: 6

CHƯƠNG 3: HÀM BĂM MD5 8

3.1 Cơ sở lý thuyết: 10

3.1.1 Hàm băm: 10

3.1.2 Hàm băm MD5: 12

3.1.2.1 Giới thiệu: 12

3.1.2.2 Thuật toán MD5: 12

3.2 Cài đặt chương trình: 18

CHƯƠNG 4: CÁC DỊCH VỤ PGP 27

4.1 Tổng quan về PGP 27

4.1.1 Giới thiệu chung về PGP 27

4.1.2 Mục đích sử dụng PGP 27

4.1.3 Hoạt động của PGP 27

4.1.3.1 Xác thực 28

4.1.3.2 Mã hóa 28

4.1.3.3 Bảo mật và xác thực 29

4.1.3.4 Nén 29

4.1.3.5 Tương thích thư điện tử 29

4.1.3.6 Khoá riêng và công khai của PGP 30

4.1.3.7 Các chùm khoá PGP 31

4.1.3.8 Sinh mẩu tin PGP 31

4.1.3.9 Quản lý khoá PGP 31

4.2 Cài đặt và thử nghiệm: 32

4.2.1 Cài đặt: 32

4.2.2 Sử dụng PGP Desktop Proffessionnal: 35

Trang 3

CHƯƠNG 1: TỔNG QUAN VỀ MÃ HÓA 1.1 Khái niệm về mã hóa dữ liệu:

Mã hóa đã được con người sử dụng từ lâu đời Các hình thức mã hóa sơ khai đã được tìm thấy từ khoảng 4000 năm trước trong nền văn minh Ai Cập cổ đại Trải qua hàng nghìn năm lịch sử, mã hóa đã được sử dụng rộng rãi ở khắp nơi trên thế giới từ Đông sang Tây để giữ bí mật cho việc giao lưu thông tin trong nhiều lĩnh vực hoạt động giữa con người và các quốc gia, đặc biệt trong các lĩnh vực quân sự, chính trị, ngoại giao

Vậy Encrypt (Encipher, Encryption): mã hóa – đó là quá trình biến đổi thông tin từ dạng

ban đầu – có thể hiểu được thành dạng không thể hiểu được, với mục đích giữ bí mật thông tin đó

Hệ mật mã: Hệ mật mã được định nghĩa là một bộ năm (P, C, K, E, D), trong đó:

Hình 1.1 Quá trình mã hóa và giải mã

1.2 Phân loại mã hóa dữ liệu:

1.2.1 Phân loại theo các phương pháp:

 Mã hóa 2 chiều

(1) Mã hóa đối xứng (Symetric cryptography):

- Mã hóa đối xứng còn có một số tên gọi khác như Secret Key Cryptography hay Private Key Cryptography, sử dụng một khóa cho cả 2 quá trình mã hóa và giải mã Trong hệ thống mã hóa đối xứng, trước khi truyền dữ liệu, 2 bên gửi

Trang 4

và nhận phải thỏa thuận về khóa dùng chung cho quá trình mã hóa và giải mã Sau đó, bên gửi sẽ mã hóa bản rõ (PlainText) bằng cách sử dụng khóa bí mật này và gửi cho bên nhận Bên nhận sau khi nhận được thông điệp đã mã hóa sẽ dùng chính khóa bí mật mà 2 bên đã thỏa thuận để giải mã và lấy lại bản rõ (PlainText)

Hình 1.2 Mã hóa đối xứng

- Mã hóa đối xứng có thể chia làm 2 loại:

 Loại tác động theo từng nhóm bits– Mã khối (Block cipher): từng khối dữ liệu trong văn bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài Đối với các thuật toán ngày nay thì kích thước chung của một khối là 64 bits

 Loại tác động lên bản rõ theo từng bit một – Mã dòng (Stream cipher): dữ liệu của văn bản được mã hóa từng bit một Các thuật toán mã hóa theo phương pháp này có tốc độ nhanh hơn các thuật toán theo mã hóa khối, và

nó thường được áp dụng trong trường hợp lượng dữ liệu mã hóa chưa biết trước

- Một số loại mã hóa đối xứng: DES, 3DES, RC4, AES,…

(2) Mã hóa bất đối xứng (Asysmetric Cryptography):

- Hay còn được gọi với một cái tên khác là mã hóa công khai (Public Key Cryptograpy), nó được thiết kế sao khóa được sử dụng trong quá trình mã hóa khác biệt với kháo sử dụng trong quá trình giải mã Một người có thể dùng khóa này để mã hóa dữ liệu nhưng chỉ duy nhất người có khóa giải mã tương ứng mới có thể đọc được dữ liệu mà thôi Khóa để mã hóa là Public Key, khóa

để giải mã là Private Key

Trang 5

Hình 1.3 Mã hóa bất đối xứng

- Một ví dụ điển hình của mã hóa bất đối xứng là mã hóa RSA

 Mã hóa 1 chiều: là loại mã hóa mà chỉ có thể mã hóa từ một thông điệp thành một

thông điệp rút gọn mà không thể giải mã trở lại thành thông điệp ban đầu Ví dụ

về mã hóa một chiều có thể kể đến SHA1, MD5,…

1.2.2 Phân loại theo số lượng khóa:

 Mã hóa khóa bí mật (Private Key Cryptography): là dạng mã hóa mà khi người

dùng trao đổi thông tin với nhau không cần trao đổi khóa bí mật, nhưng khi nhận được thông điệp gửi đến thì không thể xác nhận chính xác được người gửi cũng như nội dung có bị thay đổi hay không

 Mã hóa khóa công khai (Public Key Cryptography): là dạng mã hóa cho phép

người trao sử dụng trao đổi các thông tin mật mã mà không cần phải trao đổi các khóa chung bí mật trước đó Điều này được thực hiện bằng các sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa bí mật

1.3 Tầm quan trọng của mã hóa dữ liệu:

Thuật ngữ Cryptography đề cập tới ngành khoa học nghiên cứu về mã hóa và giải

mã thông tin Cụ thể hơn là nghiên cứu các cách thức chuyển đổi thông tin từ dạng rõ sang dạng mờ và ngược lại Đây là một phương pháp rất tốt trong việc chống lại những truy cập bất hợp pháp tới dữ liệu được truyền đi trên mạng, áp dụng mã hóa sẽ khiến thông tin được truyền đi dưới dạng mờ và không thể đọc bởi bất kỳ ai cố tình muốn lấy thông tin đó Mã hóa được áp dụng như một biện pháp nhằm giúp chúng ta bảo vệ chính mình cũng như những thông tin chúng ta muốn truyền đi Bên cạnh đó mã hóa còn có những ứng dụng khác nhau như bảo đảm tính toàn vẹn của dữ liệu, tính bí mật, tính xác thực và tính không thể chối bỏ

1.4 Các ứng dụng của mã hóa dữ liệu:

Một số ứng dụng của mã hóa dữ liệu phổ biến:

(1) Securing Mail (Bảo mật email)

(2) Authentication System (Xác thực hệ thống)

(3) Secure E-commere (An toàn trong thương mại điện tử)

(4) Virtual Private Network (Bảo mật mạng riêng ảo)

Trang 6

(5) Wireless Encryption (Mã hóa mạng không dây)

(6) Là nền tảng của chữ ký điện tử, các hệ thống PKI (hạ tầng khóa công khai) (7) …

Trang 7

CHƯƠNG 2: MÃ HOÁN VỊ 2.1 Cơ sở lý thuyết:

Hệ mã hoán vị hay còn gọi là hệ mã hóa đổi chỗ Là hệ mã hóa mà các ký tự của bản rõ vẫn giữ nguyên, nhưng thứ tự của chúng được sắp xếp lại Không giống như mã thay thế, ở đây không có phép toán đại số nào cần thực hiện khi mã hóa và giải mã

Phương pháp này có các kỹ thuật mã hóa sau:

(2) Mã hóa theo mẫu hình học

Bản gốc được sắp xếp lại theo một mẫu hình học nào đó, thường là một mảng hoặc ma trận hai chiều

Ví dụ: Bản rõ: “KHOA CONG NGHE THONG TIN” được viết theo ma trận 4x5 như sau:

Đầu tiên biểu diễn các ký tự trong bản rõ thành dạng hình chữ nhật theo cột, sau

đó các cột được sắp xếp lại và các chữ cái được lấy ra theo hàng ngang

Ví dụ: Bản rõ là “KHOA CONG NGHE THONG TIN” được viết dưới dạng ma trận 4x5 theo cột như sau:

Trang 8

Vì có 5 cột nên ta có thể sắp xếp lại theo 5!=120 cách khác nhau Để tăng độ an toàn có thể chọn 1 trong các cách sắp xếp lại đó

Nếu ta chuyển vị trí các cột theo thứ tự 3, 5, 2, 4, 1 Rồi lấy các ký tự ra theo hàng ngang

ta sẽ được bản mã là:

“NGCTKGTOHHHINÔENGNA”

Lưu ý: các ký tự trống được bỏ đi

(4) Hoán vị các ký tự của bản rõ theo chu kỳ cố định

Cho m là một số nguyên dương xác định nào đó Cho P = C = (Z26)m và cho K gồm tất cả các hoán vị của {1,…,m} Đối với một khóa π (tức là một hoán vị) ta xác định:

Nếu kích thước bản rõ lớn hơn nhiều so với d thì ta sẽ phải chia bản rõ thành các khối d

ký tự và tiến hành mã hóa theo từng khối Ví dụ:

Bản rõ “KHOA CONG NGHE THONG TIN” giả sử d=6, và f hoán vị dãy i = 12345 thành f(i) = 35142

Ta thu được bản mã “OCKAHGGONNTOHHETNIG”

2.2 Cài đặt chương trình:

2.2.1 Mã nguồn cài đặt:

Trang 9

private Dictionary<int, int> _BangHoanVi;

private Dictionary<int, int> _BangGiaiHoanVi;

private int _KichThuocHoanVi

_BangHoanVi = new Dictionary<int, int>();

_BangGiaiHoanVi = new Dictionary<int,int>();

int num = int.Parse(sr.ReadLine());

for (int i = 0; i < num; i++)

Trang 10

catch (Exception ex)

char[] banMa = vBanRo.ToArray<char>();

int len = vBanRo.Length;

for (int i = 0; i < len; ++i)

{

int thuTu = i % _KichThuocHoanVi;

int dich = i - thuTu;

banMa[dich + _BangHoanVi[thuTu]] = vBanRo[dich + thuTu];

char[] banRo = vBanMa.ToArray<char>();

int len = vBanMa.Length;

for (int i = 0; i < len; ++i)

{

int thuTu = i % _KichThuocHoanVi;

int dich = i - thuTu;

banRo[dich + thuTu] = vBanMa[dich + _BangHoanVi[thuTu]];

Trang 11

2.2.2 Giao diện demo:

Hình 2.1 Giao diện demo thuật toán mã hoán vị

Trang 12

CHƯƠNG 3: HÀM BĂM MD5 3.1 Cơ sở lý thuyết:

3.1.1 Hàm băm:

Hàm băm là các thuật toán không sử dụng khóa để mã hóa (ở đây ta dùng thuật ngữ “băm” thay cho “mã hóa”), nó có nhiệm vụ “lọc” (băm) thông điệp được đưa vào

theo một thuật toán h một chiều nào đó, rồi đưa ra một bản băm – văn bản đại diện – có

kích thước cố định Do đó người nhận không biết được nội dung hay độ dài ban đầu của thông điệp đã được băm bằng hàm băm

Giá trị của hàm băm là duy nhất, và không thể suy ngược lại được nội dung

thông điệp từ giá trị băm này

 Đặc trưng

Hàm băm h là hàm băm một chiều (one-way hash) với các đặc tính sau:

h(x’) h(x) Cho dù chỉ là một sự thay đổi nhỏ hay chỉ là xóa đi 1 bit dữ liệu

của thông điệp thì giá trị băm cũng vẫn thay đổi Điều này có nghĩa là: hai thông điệp hoàn toàn khác nhau thì giá trị hàm băm cũng khác nhau

Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm băm Nghĩa là: với

thông điệp x thì dễ dàng tính được z = h(x), nhưng lại không thể (thực chất là khó) suy ngược lại được x nếu chỉ biết giá trị hàm băm h

 Tính chất

Tính chất 1: Hàm băm h là không va chạm yếu

Xét một kiểu tấn công như sau:

Đáng lẽ: thông tin phải được truyền đúng từ A đến B

Hình 3.1 Cách đi đúng của thông tin

Trang 13

Nhưng: trên đường truyền, thông tin bị lấy trộm và bị thay đổi

Hình 3.2 Thông tin bị lấy trộm và bị thay đổi trên đường truyền

Người A gửi cho B (x, y) với y = sigK(h(x)) Nhưng trên đường truyền, tin bị lấy trộm Tên trộm, bằng cách nào đó tìm được một bản thông điệp x’ có h(x’) = h(x) mà x’

x Sau đó, hắn đưa x’ thay thế x rồi truyền tiếp cho người B Người B nhận được và

vẫn xác thực được thông tin đúng đắn

Do đó, để tránh kiểu tấn công như trên, hàm h phải thỏa mãn tính không va chạm yếu: Hàm băm h là không va chạm yếu nếu khi cho trước một bức điện x, không thể tiến hành về mặt tính toán để tìm ra một bức điện x’ x mà h(x’) = h(x)

Tính chất 2: Hàm băm h là không va chạm mạnh:

Xét một kiểu tấn công như sau: Đầu tiên, tên giả mạo tìm ra được hai bức thông

điệp x’ và x (x’ x) mà có h(x’) = h(x) (ta coi bức thông điệp x là hợp lệ, còn x’ là giả mạo) Tiếp theo, hắn đưa cho ông A và thuyết phục ông này kí vào bản tóm lược h(x) để nhận được y Khi đó (x’, y) là bức điện giả mạo nhưng hợp lệ

Để tránh kiểu tấn công này, hàm h phải thỏa mãn tính không va chạm mạnh: Hàm băm h là không va chạm mạnh nếu không có khả năng tính toán để tìm ra hai bức thông điệp x và x’mà x x’ và h(x) = h(x’)

Tính chất 3: Hàm băm h là hàm một chiều:

Xét một kiểu tấn công như sau: Việc giả mạo các chữ ký trên bản tóm lược z

thường xảy ta với các sơ đồ chữ ký số Giả sử tên giả mạo tính chữ ký trên bản tóm lược

z, sau đó hắn tìm một bản thông điệp x’ được tính ngược từ bản đại diện z, z = h(x’) Tên

trộm thay thế bản thông điệp x hợp lệ bằng bản thông điệp x’ giả mạo, nhưng lại có z =

h(x’) Và hắn ký số trên bản đại diện cho x’ bằng đúng chữ ký hợp lệ Nếu làm được như

vậy thì (x’, y) là bức điện giả mạo nhưng hợp lệ

Để tránh được kiểu tấn công này, h cần thỏa mãn tính chất một chiều: Hàm băm h

là một chiều nếu khi cho trước một bản tóm lược thông báo z thì không thể thực hiện về mặt tính toán để tìm ra thông điệp ban đầu x sao cho h(x) = z

Ng-êi göi

A

Ng-êi nhËn B

Tªn nghe lÐn, lÊy trém tin

Trang 14

 Các thuật toán băm

Các hàm băm dòng MD: MD2, MD4, MD5 được Rivest đưa ra thu được kết quả đầu ra với độ dài là 128 bit Hàm băm MD4 đưa ra vào năm 1990 Một năm sau phiên bản mạnh MD5 cũng được đưa ra Chuẩn hàm băm an toàn: SHA, phức tạp hơn nhiều cũng dựa trên các phương pháp tương tự, được công bố trong Hồ sơ Liên bang năm 1992

và được chấp nhận làm tiêu chuẩn vào năm 1993 do Viện Tiêu Chuẩn và Công Nghệ Quốc Gia (NIST), kết quả đầu ra có độ dài 160 bit

3.1.2 Hàm băm MD5:

3.1.2.1 Giới thiệu:

MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm là 128bit Từng được xem là một chuẩn trên Internet, MD5 đã được sử dụng rộng rãi trong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó MD4

MD5 có 2 ứng dụng quan trọng:

(1) MD5 được sử dụng rộng rải trong thế giới phần mềm để đảm bảo rằng tập tin tải

về không bị hỏng Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5

Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối, trong khi

hệ điều hành Windows sử dụng phần mềm của hãng thứ ba

(2) MD5 được dùng để mã hóa mật khẩu Mục đích của việc mã hóa này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu Có nghĩa là việc giải mã là không thể hoặc phải mất một khoãng thời gian vô tận (đủ để làm nản lòng các hacker)

3.1.2.2 Thuật toán MD5:

MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước cố định 128 bits Thông điệp đưa vào sẽ được cắt thành các khối 512 bits Thông điệp được đưa vào bộ đệm để chiều dài của nó chia hết cho 512

Bộ đệm hoạt động như sau:

(1) Trước tiên nó sẽ chèn bit 1 vào cuối thông điệp

(2) Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội số của

512 một khoảng 64 bit

(3) Phần còn lại sẽ được lấp đầy bởi một số nguyên 64 bit biểu diễn chiều dài ban đầu của thông điệp Trong trường hợp độ dài của thông điệp lớn hơn 2^64 thì chỉ có 64 bit thấp được sử dụng

Trang 15

Thuật toán chính của MD5 hoạt động trên một bộ 128 bit Chia nhỏ nó ra thành 4 word 32 bit, kí hiệu là A,B,C và D Các giá trị này là các hằng số cố định Khối dữ liệu đầu vào của thuật toán có độ dài là bội số của 512 sẽ được chia thành L khối 512 bit Sau

đó thuật toán chính sẽ luân phiên hoạt động trên các khối 512 bit Mỗi khối sẽ phối hợp với một bộ Quá trình xử lý một khối thông điệp bao gồm 4 bước tương tự nhau, gọi là vòng (“Round”) Mỗi vòng lại gồm 16 quá trình tương tự nhau dựa trên hàm một chiều F, phép cộng module và phép xoay trái…Đây là hình mô tả một quá trình trong một vòng

Có 4 hàm một chiều F có thể sử dụng Mỗi vòng sử dụng một hàm khác nhau

Hình 3.3 uá trình trong một v ng

Thuật toán:

Input : Thông điệp có độ dài tùy ý

Ouput : Bản băm, đại diện cho thông điệp gốc, độ dài cố định 128 bit

Mô tả thuật toán:

Giả sử đầu vào là một xâu a có độ dài b bit (b có thể bằng 0)

Bước 1: Khởi tạo các thanh ghi

Có 4 thanh ghi được sử dụng để tính toán nhằm đưa ra các đoạn mã: A, B, C, D Bản tóm lược của thông điệp được xây dựng như sự kết nối của các thanh ghi Mỗi thanh ghi có độ dài 32 bit Các thanh ghi này được khởi tạo giá trị hecxa

Trang 16

word B := EF CD AB 89 word C := 98 BA DC FE word D := 10 32 54 76

Bước 2:

Xử lý thông điệp a trong 16 khối word, có nghĩa là xử lý cùng một lúc 16 word =

512 bit (chia mảng M thành các khối 512 bit, đƣa từng khối 512 bit đó vào mảng T[j]) Mỗi lần xử lý một khối 512 bit Lặp lại N/16 lần

Gán giá trị cho bốn biến AA, BB, CC, DD lần lƣợt bằng giá trị của 4 thanh ghi A,

B, C, D

Bước 3:Thực hiện bốn vòng băm với các khối cần xử lý

Một số phép toán logic đƣợc sử dụng trong bốn vòng này

 X Y là phép toán AND theo bit giữa X và Y

 X Y là phép toán OR theo bit giữa X và Y

 X Y là phép toán XOR theo bit giữa X và Y

Trang 17

Hình 3.4 uá trình tạo bản băm của MD5

Các vòng 1, 2, 3 và 4 dùng tương ứng ba hàm F, G, H và I Mỗi hàm này là một hàm boolean tính theo bit Chúng được xác định như sau:

Trang 18

Hình 3.5 Lược đồ thuật toán MD5

MD5 sử dụng thêm một mảng S[1 … 64] được xây dựng từ hàm sin Với S[i], giá

trị của phần tử thứ i trong mảng S, tương đương với phần nguyên của 4294967296 abs(sin(i)), với i tính theo radian

Trang 19

Ta có mảng S[1 … 64] nhƣ sau (tất cả đều để ở hệ cơ số 16):

Trang 20

Các phép toán được thực hiện trong bốn vòng tạo ra các giá trị mới trong bốn

thanh ghi Cuối cùng, bốn thanh ghi được cập nhật ở 3.5 bằng cách cộng ngược các giá

trị lưu trước đó ở 2.3 Phép cộng này được xác định là cộng các số nguyên dương, được rút gọn theo modulo 232

Kết quả ra là đoạn mã có độ dài 128 bit, được thu gọn từ thông điệp a có độ dài b

bit Đoạn mã này thu được từ 4 thanh ghi A, B, C, D: bắt đầu từ byte thấp của thanh ghi

A cho đến byte cao của thanh ghi D

3.2 Cài đặt chương trình:

3.2.1 Mã nguồn chương trình:

Trang 21

Mã nguồn file ThuatToanMahoa

int len = _K.Length;

for (int i = 0; i < len; ++i)

_K[i]= (uint)Math.Floor(Math.Abs(Math.Sin(i + 1)) * Math.Pow(2,32)); }

private byte[] DemChuoiDauVao(string vBanRo)

{

//Bước 1: Chuyển bản rõ thành dãy byte

byte[] bytes = TienIch.ChuyenStringSangBytes(vBanRo);

//Bước 2: Chèn bit 1 vào cuối dãy

bytes = TienIch.NoiBytes(bytes, new byte[] { 128 });

//Bước 3: Tạo ra dãy bit 0 để nối vào sao cho chiều dài dãy chia 512 dư 448 byte[] byte0s = new byte[(120 - (bytes.Length % 64))%64];

for (int i = 0; i < byte0s.Length; ++i)

byte0s[i] = 0;

//Bước 4: Nối dãy bit 0 vào sau chuỗi

bytes = TienIch.NoiBytes(bytes, byte0s);

Trang 22

Int64 len = (TienIch.ChuyenStringSangBytes(vBanRo).Length * 8) %

((Int64)Math.Pow(2,64));

//Bước 6: Chuyển độ dài này về dạng dãy byte

byte[] byteLenghts = BitConverter.GetBytes(len);

//Bước 7: Nối dãy byte này vào dãy byte đầu

bytes = TienIch.NoiBytes(bytes, byteLenghts);

//throw new Exception(TienIch.ChuyenBytesSangString(bytes));

byte[] bytes = DemChuoiDauVao(vBanRo);

List<byte[]> khois = TienIch.ChiaNho(bytes,64);

int lenKhois = khois.Count;

for (uint i = 0; i < lenKhois; i++)

{

List<byte[]> tus = TienIch.ChiaNho(khois[(int)i], 4);

int lenTus = tus.Count;

Trang 23

bytes = TienIch.NoiBytes(bytes, BitConverter.GetBytes(_H2));

bytes = TienIch.NoiBytes(bytes, BitConverter.GetBytes(_H3));

return TienIch.ChuyenBytesSangString(bytes);

}

}

}

Ngày đăng: 13/08/2014, 09:52

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Quá trình mã hóa và giải mã - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Hình 1.1 Quá trình mã hóa và giải mã (Trang 3)
Hình 1.2 Mã hóa đối xứng - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Hình 1.2 Mã hóa đối xứng (Trang 4)
Hình 1.3 Mã hóa bất đối xứng - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Hình 1.3 Mã hóa bất đối xứng (Trang 5)
Hình 2.1 Giao diện demo thuật toán mã hoán vị - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Hình 2.1 Giao diện demo thuật toán mã hoán vị (Trang 11)
Hình 3.2 Thông tin bị lấy trộm và bị thay đổi trên đường truyền - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Hình 3.2 Thông tin bị lấy trộm và bị thay đổi trên đường truyền (Trang 13)
Hình 3.4  uá trình tạo bản băm của MD5 - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Hình 3.4 uá trình tạo bản băm của MD5 (Trang 17)
Hình 3.5 Lược đồ thuật toán MD5 - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Hình 3.5 Lược đồ thuật toán MD5 (Trang 18)
Hình 3.6 Giao diện demo mã hóa MD5 - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Hình 3.6 Giao diện demo mã hóa MD5 (Trang 28)
Sơ đồ sau nêu cách người nhận giải mã, kiểm chứng thông tin để đọc mẩu tin. - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Sơ đồ sau nêu cách người nhận giải mã, kiểm chứng thông tin để đọc mẩu tin (Trang 33)
Sơ đồ sau mô tả qui trình sinh mẩu tin PGP để gửi cho người nhận. - TÌM HIỂU VỀ MÃ HOÁN VỊ, HÀM BĂM MD5, CÁC DỊCH VỤ PGP  BÁO CÁO BÀI TẬP LỚN MÔN HỌC AN TOÀN BẢO MẬT THÔNG TIN
Sơ đồ sau mô tả qui trình sinh mẩu tin PGP để gửi cho người nhận (Trang 33)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w