Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 79 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
79
Dung lượng
1,13 MB
Nội dung
MỤC LỤC Lời nói đầu Chƣơng 1: Tổng quan mật mã học 1.1 Mật mã học 1.2 Hệ thống mã hóa 1.3 Các tính chất q trình bảo mật mã hóa 1.4 Hệ thống mã hóa quy ước (mã hóa đối xứng) 1.4.1 Phương pháp mã hóa dịch chuyển 1.4.2 Phương pháp mã hóa thay 10 1.4.3 Phương pháp Affine 11 1.4.4 Phương pháp Vigenere 11 1.4.5 Phương pháp Hill 12 1.4.6 Phương pháp mã hóa hốn vị 13 1.4.7 Phương pháp DES 14 1.4.8 Phương pháp mã hóa Rijndael 16 1.5 Hệ thống mã hóa khóa cơng cộng (mã hóa bất đối xứng) phương pháp RSA 18 Chƣơng 2: NET Framework 20 2.1 Định nghĩa NET 20 2.2 Mục tiêu NET 20 2.3 Các dịch vụ NET 23 2.4 Tác động NET chuyên gia CNTT 24 2.5 Tác động NET người dùng 26 2.6 Kiến trúc NET Framework 27 2.6.1 Common Language Runtime 28 2.6.2 Base Class Libraries 32 2.6.3 ASP.NET 33 Chƣơng 3: NET Framework bảo mật 35 3.1 NET Framework Common Language Runtime 35 3.2 NET Framework đơn giản hóa việc bảo mật 35 3.3 Độ tin cậy tảng NET 36 3.4 Quản lý mã định kiểu an toàn 37 Chƣơng 4: Lớp Cryptogaraphy số loại mã hóa đƣợc hỗ trợ NET 39 4.1 Tổng quan lớp Cryptography 39 4.2 Các thuật tốn mã hóa đối xứng NET 40 4.3 Các thuật tốn mã hóa bất đối xứng NET 45 4.4 Các thuật toán hàm băm NET Framework : 51 4.4.1 Lớp HashAlgorithm 53 4.4.2 Lớp MD5 SHA 54 4.4.3 Lớp KeyedHashAlgorithm 54 4.4.4 Định danh đối tượng 55 Chƣơng 5: Lập trình với mã hóa đối xứng mã hóa bất đối xứng NET 57 5.1 Lập trình mã hóa đối xứng NET 57 5.1.1 Mã hóa file với thuật tốn mã hóa đối xứng 57 5.1.2 Giải mã file với thuật tốn mã hóa đối xứng 65 5.1.3 Cryptogphaph Stream 68 5.1.4 Chống lại khóa yếu 69 5.1.5 Tổng kết 70 5.2 Lập trình mã hóa bất đối xứng NET 70 5.2.1 Sinh cặp khóa Cơng khai-Bí mật 70 5.2.2 Lưu khóa dạng XML 72 5.2.3 Mã hóa file với thuật tốn mã hóa bất đối xứng 73 5.2.4 Giải mã file với thuật tốn mã hóa bất đối xứng 75 5.2.5 Tổng kết 76 5.3 Lợi ích việc sử dụng NET lớp Crpytography lập trình bảo mật 76 Kết luận 77 Tài liệu tham khảo 79 LỜI NÓI ĐẦU Mật mã (Cryptography) ngành khoa học ngành nghiên cứu kỹ thuật toán học nhằm cung cấp dịch vụ bảo vệ thông tin Đây ngành khoa học quan trọng, có nhiều ứng dụng đời sống – xã hội Khoa học mật mã đời từ hàng nghìn năm Tuy nhiên, suốt nhiều kỷ, kết lĩnh vực không ứng dụng lĩnh vực dân thông thường đời sống – xã hội mà chủ yếu sử dụng lĩnh vực quân sự, trị, ngoại giao Ngày nay, ứng dụng mã hóa bảo mật thông tin sử dụng ngày phổ biến lĩnh vực khác giới, từ lĩnh vực an ninh, quân sự, quốc phòng…, lĩnh vực dân thương mại điện tử, ngân hàng… Với phát triển ngày nhanh chóng Internet ứng dụng giao dịch điện tử mạng, nhu cầu bảo vệ thông tin hệ thống ứng dụng điện tử ngày quan tâm có ý nghĩa quan trọng Các kết khoa học mật mã ngày triển khai nhiều lĩnh vực khác đời sống – xã hội, phải kể đến nhiều ứng dụng đa dạng lĩnh vực dân sự, thương mại Các ứng dụng mã hóa thơng tin cá nhân, trao đổi thơng tin kinh doanh, thực giao dịch điện tử qua mạng trở nên gần gũi quen thuộc với người Cùng với phát triển khoa học máy tính Internet, nghiên cứu ứng dụng mật mã học ngày trở nên đa dạng hơn, mở nhiều hướng nghiên cứu chuyên sâu vào lĩnh vực ứng dụng đặc thù với đặc trưng riêng Ứng dụng khoa học mật mã khơng đơn mã hóa giải mã thơng tin mà cịn bao gồm nhiều vấn đề khác cần nghiên cứu giải quyết, ví dụ chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký điện tử), chứng nhận tính xác thực người sở hữu mã khóa (chứng nhận khóa cơng cộng), quy trình giúp trao đổi thơng tin thực giao dịch điện tử an toàn mạng Các ứng dụng mật mã học khoa học bảo vệ thông tin đa dạng phong phú, tùy vào tính đặc thù hệ thống bảo vệ thông tin mà ứng dụng có tính với đặc trưng riêng Trong đó, kể số tính hệ thống bảo vệ thơng tin: Tính bảo mật thông tin: hệ thống đảm bảo thông tin giữ bí mật Thơng tin bị phát hiện, ví dụ q trình truyền nhận, người công hiểu nội dung thông tin bị đánh cắp Tính tồn vẹn thơng tin: hệ thống bảo đảm tính tồn vẹn thơng tin liên lạc giúp phát thông tin bị sửa đổi Xác thực đối tác liên lạc xác thực nội dung thông tin liên lạc Chống lại thoái thác trách nhiệm: hệ thống đảm bảo đối tác hệ thống từ chối trách nhiệm hành động mà thực Những kết nghiên cứu mật mã đưa vào hệ thống phức tạp hơn, kết hợp với kỹ thuật khác để đáp ứng yêu cầu đa dạng hệ thống ứng dụng khác thực tế, ví dụ hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý an ninh đơn vị với hướng tiếp cận sinh trắc học, hệ thống cung cấp dịch vụ đa phương tiện mạng với yêu cầu cung cấp dịch vụ bảo vệ quyền sở hữu trí tuệ thông tin số Trong báo cáo thực tập em trình bày trình tìm hiểu tổng quan mã hóa lớp Crytography NET việc bảo vệ thông tin CHƢƠNG I: TỔNG QUAN VỀ MẬT MÃ HỌC 1.1 Mật mã học: Mật mã học ngành khoa học ứng dụng toán học vào việc biến đổi thông tin thành dạng khác với mục đích che dấu nội dung, ý nghĩa thơng tin cần mã hóa Đây ngành quan trọng có nhiều ứng dụng đời sống xã hội Ngày nay, ứng dụng mã hóa bảo mật thơng tin sử dụng ngày phổ biến lĩnh vực khác giới, từ lĩnh vực an ninh, quân sự, quốc phòng…, lĩnh vực dân thương mại điện tử, ngân hàng… Hình 1.1 : Sơ đồ mã hóa giải mã Cùng với phát triển khoa học máy tính Internet, nghiên cứu ứng dụng khoa học mật mã ngày trở nên đa dạng hơn, mở nhiều hướng nghiên cứu chuyên sâu vào lĩnh vực ứng dụng đặc thù với đặc trưng riêng Ứng dụng khoa học mật mã khơng đơn mã hóa giải mã thơng tin mà cịn bao gồm nhiều vấn đề khác cần nghiên cứu giải quyết: chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký điện tử), chứng nhận tính xác thực người sở hữu mã khóa (chứng nhận khóa cơng cộng), quy trình giúp trao đổi thơng tin thực giao dịch điện tử an toàn mạng Những kết nghiên cứu mật mã đưa vào hệ thống phức tạp hơn, kết hợp với kỹ thuật khác để đáp ứng yêu cầu đa dạng hệ thống ứng dụng khác thực tế, ví dụ hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý an ninh đơn vị với hướng tiếp cận sinh trắc học, hệ thống cung cấp dịch vụ multimedia mạng với yêu cầu cung cấp dịch vụ bảo vệ quyền sở hữu trí tuệ thơng tin số 1.2 Hệ thống mã hóa : - Định nghĩa 1.1: Hệ thống mã hóa (cryptosystem) năm (P, C, K, E, D) thỏa mãn điều kiện sau: Tập nguồn P tập hữu hạn tất mẩu tin nguồn cần mã hóa có Tập đích C tập hữu hạn tất mẩu tin có sau mã hóa Tập khóa K tập hữu hạn khóa sử dụng E D tập mã hóa giải mã với khóa k € K, tồn luật mã hóa ek € E luật giải mã dk € D tương ứng Luật mã hóa ek : P → C luật giải mã dk : C→ P hai ánh xạ thỏa mãn dk(ek(x))= x x € P Tính chất tính chất quan trọng hệ thống mã hóa Tính chất đảm bảo mẩu tin x € P mã hóa luật mã hóa ek € E giải mã xác thuật giải mã dk € D - Định nghĩa 1.2: Zm định nghĩa tập hợp {0,1, ,m−1} , trang bị phép cộng (ký hiệu +) phép nhân (ký hiệu ×) Phép cộng phép nhân Zm thực tương tự Z, ngoại trừ kết tính theo modulo m Ví dụ : Ta cần tính giá trị 11×13 Z16 Trong Z, ta có kết phép nhân 11×13 = 143 Do 143 ≡ 15 (mod 16) nên 11×13 = 15 Z16 Một số tính chất Zm: Phép cộng đóng Z m , a, b Zm , a b Tính giao hốn phép cộng Z m , Tính kết hợp phép cộng Zm, a, b, c Z m có phần tử trung hòa 0, a, b a, b Zm Zm , a b Zm , (a b) c a (b c) Zm , a 0 a Mọi phần tử a Z m có phần tử đối m a b a a Phép nhân đóng Z m , a, b Zm , a b Tính giao hốn phép nhân Z m , a, b Tính kết hợp phép nhân Z m, a, b, c Zm Zm , a b b a Zm , (a b) c a (b c) Z m có phần tử đơn vị 1, a, b Zm , a 1 a a 10 Tính chất phân phối phép nhân phép cộng a, b, c (a b) c Z m, a c b c 1.3 Các tính chất trình bảo mật mã hóa: - Tính bí mật (confidentiality/privacy): tính chất đảm bảo thông tin hiểu biết chìa khóa bí mật - Tính tồn vẹn (integrity): tính chất đảm bảo thông tin bị thay đổi mà khơng bị phát Tính chất khơng đảm bảo thông tin không bị thay đổi, bị nghe thay đổi người nhận thơng tin biết thơng tin bị nghe thay đổi Các hàm chiều (one-way function) MD5, SHA-1, MAC dùng để đảm bảo tính tồn vẹn cho thơng tin - Tính xác thực (authentication): người gửi (hoặc người nhận) chứng minh họ Người ta dụng password, challenge dựa thuật toán mã hóa bí mật chia sẻ hai người để xác thực Sự xác thực thực chiều (one-way) hai chiều (multual authentication) - Tính khơng chối bỏ (non-repudiation): người gửi nhận sau chối bỏ việc gửi nhận thông tin Thông thường điều thực thông qua chữ ký điện tử (electronic signature) - Tính nhận dạng (identification): người dùng hệ thống, tài nguyên sở hữu chứng minh thư (identity) chìa khóa ban đầu (primary key) identity xác định chức người dùng, giới hạn cho phép người dùng thuộc tính liên quan (thường gọi chung credential) Identity login, dấu vân tay, ADN, giản đồ võng mạc mắt… 1.4 Hệ thống mã hóa quy ƣớc (mã hóa đối xứng) : Trong hệ thống mã hóa quy ước, q trình mã hóa giải mã thơng điệp sử dụng mã khóa gọi khóa bí mật (secret key) hay khóa đối xứng (symmetric key) Do đó, vấn đề bảo mật thơng tin mã hóa hồn tồn phụ thuộc vào việc giữ bí mật nội dung mã khóa sử dụng Với tốc độ khả xử lý ngày nâng cao vi xử lý nay, phương pháp mã hóa chuẩn (Data Encryption Standard – DES) trở nên khơng an tồn bảo mật thơng tin Do đó, Viện Tiêu chuẩn Cơng nghệ Quốc gia Hoa Kỳ (National Institute of Standards and Technology – NIST) định chọn chuẩn mã hóa với độ an toàn cao nhằm phục vụ nhu cầu bảo mật thơng tin liên lạc phủ Hoa Kỳ ứng dụng dân Thuật toán Rijndael Vincent Rijmen Joan Daeman thức chọn trở thành chuẩn mã hóa nâng cao (Advanced Encryption Standard –AES) từ 02 tháng 10 năm 2000 Ví dụ thơng điệp nguồn mã hóa với mã khóa k thống trước người gửi A người nhận B Người A sử dụng mã khóa k để mã hóa thơng điệp x thành thông điệp y gửi y cho người B người B sử dụng mã khóa k để giải mã thơng điệp y Vấn đề an tồn bảo mật thơng tin mã hóa phụ thuộc vào việc giữ bí mật nội dung mã khóa k.Nếu người C biết mã khóa k C “mở khóa” thơng điệp mã hóa mà người A gửi cho người B Hình 1.2 : Mơ hình hệ thống mã hóa qui ước 1.4.1 Phƣơng pháp mã hóa dịch chuyển : Phương pháp mã hóa dịch chuyển phương pháp lâu đời sử dụng để mã hóa Thơng điệp mã hóa cách dịch chuyển xoay vòng ký tự k vị trí bảng chữ Trong trường hợp đặc biệt k=3, phương pháp mã hóa dịch chuyển gọi phương pháp mã hóa Caesar Thuật tốn 1.1: Phương pháp mã hóa dịch chuyển Mã hóa dịch chuyển phương pháp mã hóa đơn giản, thao tác xử lý mã hóa giải mã thực nhanh chóng Tuy nhiên, thực tế, phương pháp dễ dàng bị phá vỡ cách thử khả khóa k € K Điều hồn tồn thực khơng gian khóa K có n phần tử để chọn lựa Ví dụ: Để mã hóa thơng điệp biểu diễn chữ từ A đến Z (26 chữ cái), ta sử dụng P = C = K = Z26 Khi đó, thơng điệp mã hóa khơng an tồn dễ dàng bị giải mã cách thử 26 giá trị khóa k € K Tính trung bình, thơng điệp mã hóa bị giải mã sau khoảng n/2 lần thử khóa k € K 1.4.2 Phƣơng pháp mã hóa thay : Phương pháp mã hóa thay (Substitution Cipher) phương pháp mã hóa tiếng sử dụng từ hàng trăm năm Phương pháp thực việc mã hóa thơng điệp cách hoán vị phần tử bảng chữ hay tổng quát hoán vị phần tử tập nguồn P Thuật toán 1.2: Phương pháp mã hóa thay Đây phương pháp đơn giản, thao tác mã hóa giải mã thực nhanh chóng Phương pháp khắc phục điểm hạn chế phương pháp mã hóa dịch chuyển có khơng gian khóa K nhỏ nên dễ dàng bị giải mã cách thử nghiệm n giá trị khóa k € K Trong phương pháp mã hóa thay có khơng gian khóa K lớn với n! phần tử nên bị giải mã cách “vét cạn” trường hợp khóa k Tuy nhiên, thực tế thơng điệp mã hóa phương pháp bị giải mã thiết lập bảng tần số xuất ký tự thông điệp hay nắm số từ, ngữ thông điệp nguồn ban đầu 10 Output với thuộc tính Create-Wirte để tạo file ghi liệu lên file Tiếp theo xác định thuật toán lựa chọn sinh thuật tốn sau gán Key Véc tơ thuật toán Key Véctơ sinh trước MemoryStream dùng để làm nhớ đệm cho q trình mã hóa CryptoStream thực việc mã hóa Chúng ta cần đọc file nguồn dạng Byte cho q trình mã hóa Sau xếp Byte lại thành mảng ghi lên file đích Như tạo file đích có chứa thơng tin mã hóa 5.1.2 Giải mã file với thuật tốn mã hóa đối xứng: Chúng ta xem giao diện Form giải mã Giao diện mã nguồn số thành phần giống Form mã hóa Chúng ta xem xét đến thành phần khác biệt Form giải mã Trước hết Button Khóa Dùng để đưa khóa véctơ lưu q trình mã hóa vào làm Khóa Vectơ cho thuật tốn lựa chọn Sau giá trị Khóa Véctơ hiển thị textbox tương ứng 65 private void btnkhoa_Click(object sender, EventArgs e) { OpenFileDialog openkey = new OpenFileDialog(); OpenFileDialog openIV = new OpenFileDialog(); openkey.Filter = "Key File (*.key)|*.key"; openIV.Filter = "Vecto File (*.iv)|*.iv"; if (openkey.ShowDialog() == DialogResult.OK) { FileStream fsFileKey = new FileStream(openkey.FileName, FileMode.Open, FileAccess.Read); byte[] keybytes = new Byte[fsFileKey.Length]; fsFileKey.Read(keybytes, 0, keybytes.Length); fsFileKey.Close(); Key = keybytes; UpdateKeyTextBox(); if (openIV.ShowDialog() == DialogResult.OK) { FileStream fsFileIV = new FileStream(openIV.FileName, FileMode.Open, FileAccess.Read); byte[] IVbytes = new Byte[fsFileIV.Length]; fsFileIV.Read(IVbytes, 0, IVbytes.Length); fsFileIV.Close(); IV = IVbytes; UpdateIVTextBox(); } 66 } } Cùng sâu vào mã nguồn Button Giải Mã : private void btndecrpt_Click(object sender, EventArgs e) { SymmetricAlgorithm sa = CreateSymmetricAlgorithm(); sa.Key = Key; sa.IV = IV; FileStream fsFileOut = new FileStream(txtdich.Text, FileMode.Create, FileAccess.Write); FileStream fsFileIn = new FileStream(txtnguon.Text, FileMode.Open, FileAccess.Read); byte[] cipherbytes = new Byte[fsFileIn.Length]; fsFileIn.Read(cipherbytes, 0, cipherbytes.Length); fsFileIn.Close(); MemoryStream ms = new MemoryStream(cipherbytes); CryptoStream csDecrypt = new CryptoStream(ms, sa.CreateDecryptor(), CryptoStreamMode.Read); byte[] plainbytes = new Byte[cipherbytes.Length]; csDecrypt.Read(plainbytes, 0, plainbytes.Length); csDecrypt.Close(); ms.Close(); 67 fsFileOut.Write(plainbytes, 0, plainbytes.Length); fsFileOut.Close(); fsFileIn.Close(); } Cũng giống Button Mã Hóa phải đọc file đích dạng Byte Sau đưa vào đệm, cuối giải mã Tiếp đến lưu Byte đầu vào mảng Byte trung gian ghi kết lên File Đích Chúng ta có File giãi mã có nội dung giống File ban đầu 5.1.3 Cryptogphaph Stream: Common Language Runtime (CLR) hỗ trợ Stream có hướng, thiết kế cho việc xử lý mã hóa Lớp thực cơng việc đóng gói stream mã hóa có tên CryptoStream Mỗi q trình mã hóa cung cấp đối tượng CryptoStream để kết nối đến CryptoStream khác Bằng cách nối chuỗi mã hóa lại với nhau, đầu từ đối tượng đầu vào đối tượng mà không cần phải lưu trữ riêng rẽ đưa vào sau CryptoStream lớp dễ dàng sử dụng, cho phép bạn đọc ghi liệu thông qua đối tượng chuỗi mã hóa, điều đồng nghĩa với bạn áp dụng cho liệu đầu vào đầu đơn giản file hay socket Lớp CryptoStream mã hóa (ở chế độ ghi) giải mã (ở chế độ đọc) tức Trong chương trình sử dụng lớp MemoryStream để kích hoạt trình xử lý đầu vào/đầu để xử lý nhớ đệm Đây cấu trúc CryptoStream 68 public CryptoStream( Stream stream, ICryptoTransform transform, CryptoStreamMode mode ); 5.1.4 Chống lại khóa yếu: Có hàm lớp DES TripleDES có tên IsWeakKey, lấy chuỗi byte có chưa khóa làm biến, trả lại giá trị kiểu Boolean Hàm sử dụng để xác định khóa có yếu hay khơng Chúng ta biết khóa yếu mã hóa dễ dàng để bẻ Khóa yếu có số đặc trưng sau: Nếu mẩu tin mã hóa khóa yếu, sau mã hóa tiếp lần khóa cho kết mẩu tin ban đầu Vì TripleDes xây dựng từ DES nên khóa yếu với DES đồng nghĩa với việc yếu với TripleDES Sẽ khơng có khóa yếu với thuật tốn RC2 Rijndael nên lớp RC2 Rijndael khơng có hàm IsWeakKey Đã có khóa Des liệt vào danh sách khóa yếu hiển nhiên tránh khóa Tuy nhiên khơng đáng lo ngại nhiều DES có tới 56 bit tức 256 key sử dụng số lượng khóa yếu (22) nên xác xuất để lấy phải khóa yếu -54 Cịn 12 khóa đưa vào danh sách nửa-yếu, số lượng so với 256 khóa lấy nên khơng cần quan tâm đến Trong trường hợp, phần lới chương trình sử dụng mã khóa bí mật sinh cách tự động qua đối tượng thuật toán mã hóa, khơng cung cấp cho ta khóa yếu Nếu sử dụng lời gọi hàm GenerateKey bạn hồn tồn chắn tránh khóa yếu Trong trường hợp lấy khóa theo kiểu khác từ CSP nguồn ngoài, lớp DES TripleDES báo lỗi bạn cố tình sử 69 dụng khóa yếu Để tránh việc bạn hồn tồn sử dụng hàm IsWeakKey 5.1.5 Tổng kết : Phần đầu chương tập trung vào thuật tốn mã hóa đối xứng lớp NET Framework thực thi chúng Chúng ta tập trung vào loại mã phổ biến DES, Triple DES, Rinjdael, RC2 , tìm hiểu xem làm để sử dụng chúng từ lớp sở SymmetricAlgorithm Net Framework ứng dụng vào bảo mật thông tin Và lướt qua ưu điểm lớp CryptoStream Tuy nhiên vấn đề nâng cao kiểu mã hóa (Mode) kiểu Padding chưa sử dụng chương trình 5.2 Lập trình mã hóa bất đối xứng NET: Phần chương tìm hiểu lập trình mã hóa bất đối xứng với file môi trường NET 5.2.1 Sinh cặp khóa Cơng khai-Bí mật : Để thực việc mã hóa giải mã với thuật tốn mã hóa bất đối xứng cần tạo cặp khóa Cơng khai-Bí mật Khóa cơng khai dùng để mã hóa liệu cịn khóa bí mật dùng để giải mã liệu Để sinh cặp khóa phù hợp với thuật tốn q trình khó khăn với nhữn số lớn Tuy nhiên NET đơn giản hóa việc sinh cặp khóa để người sử dụng khơng cịn phải qian tâm q nhiều đến q trình sinh khóa Dưới giới thiệu cách tạo cặp khóa đơn giản Đây giao diện q trình sinh khóa 70 Các textbox Khóa cơng khai, khóa bí mật để hiển thị khóa Button Sinh khóa thực việc sinh khóa hiển thị chúng textbox tương ứng Khóa tự động sinh dạng XML định dạng mặc định Dưới mã nguồn Button Sinh khóa private void btnsinhkhoa_Click(object sender, EventArgs e) { GenerateNewRSAParams(); } private void GenerateNewRSAParams() { //establish RSA asymmetric algorithm RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); publicPrivateKeyXML = rsa.ToXmlString(true); publicOnlyKeyXML = rsa.ToXmlString(false); txtPubKey.Text = publicOnlyKeyXML; txtPriKey.Text = publicPrivateKeyXML; 71 } Phương thức rsa.ToXmlString() có tham số kiểu Boolean ứng với: - true : sinh khóa bí mật - false : sinh khóa cơng khai Sau sinh khóa thể khóa textbox txtPrivate txtPublic 5.2.2 Lƣu khóa dƣới dạng XML : Button Lưu khóa giúp bạn dễ dàng lưu khóa cơng khai khóa bí mật thành file xml private void btn_luuRSA_Click(object sender, EventArgs e) { SaveFileDialog savePubKey = new SaveFileDialog(); SaveFileDialog savePriKey = new SaveFileDialog(); savePriKey.Filter = "PriveteKey (*.xml)|*.xml"; savePubKey.Filter = "PublicKey (*.xml)|*.xml"; if (savePriKey.ShowDialog() == DialogResult.OK) { StreamWriter writerPri = new StreamWriter(savePriKey.FileName); writerPri.Write(publicPrivateKeyXML); writerPri.Close(); if (savePubKey.ShowDialog() == DialogResult.OK) { StreamWriter writerPub = new StreamWriter(savePubKey.FileName); writerPub.Write(publicOnlyKeyXML); writerPub.Close(); 72 } } } Ở ta dùng phương thức StreamWriter để lưu khóa vào file đích dạng XML 5.2.3 Mã hóa file với thuật tốn mã hóa bất đối xứng: Dưới giao diện chương trình Các cách thức chọn File nguồn File đích giống phần mã hóa bất đối xứng Chúng ta tìm hiểu khác biệt mã nguồn phương pháp mã hóa Như biết, mã hóa bất đối xứng cho phép dùng khóa cơng khai để mã hóa liệu Vậy nên có Button Nhập khóa để người có khóa cơng khai nhập vào dùng để mã hóa liệu mà khơng cần phải sinh khóa private void btnNhapkhoa_Click(object sender, EventArgs e) { OpenFileDialog openPubKey = new OpenFileDialog(); 73 openPubKey.Filter = "PublicKey (*.xml)|*.xml"; if (openPubKey.ShowDialog() == DialogResult.OK) { StreamReader reader = new StreamReader(openPubKey.FileName); string sPubkey = reader.ReadToEnd(); txtPublic.Text = sPubkey; reader.Close(); } } Chúng ta dùng phương thức StreamReader để đọc liệu từ khóa cơng khai thể lên text box tương ứng Tiếp đến tìm hiểu q trình mã hóa File qua Button Mã Hóa private void btnencrypt_Click(object sender, EventArgs e) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(txtPublic.Text); FileStream fsFileOut = new FileStream(txtdich.Text, FileMode.Create, FileAccess.Write); FileStream fsFileIn = new FileStream(txtnguon.Text, FileMode.Open, FileAccess.Read); byte[] ByteIn = new Byte[fsFileIn.Length]; 74 fsFileIn.Read(ByteIn, 0, ByteIn.Length); fsFileIn.Close(); cipherbytes = rsa.Encrypt(ByteIn, false); fsFileOut.Write(cipherbytes, 0, cipherbytes.Length); fsFileOut.Close(); } Đầu tiên tạo thuật tốn mã hóa RSA Sau đọc khóa cơng khai từ textbox txtPublic để mã hóa file Tiếp đến nhận liệu đầu vào đầu dạng FileStream Ta biến đổi file đầu vào từ FileStream sang dạng byte để dễ dàng mã hóa Cuối mã hóa ghi chúng lên File đích 5.2.4 Giải mã file với thuật tốn mã hóa bất đối xứng : Phần vào việc phân tích mã nguồn trình giải mã file Giao diện trương trình phần mã hóa Phần khác người ta dùng khóa bí mật để giải mã Các Button giống phần mã hóa Chúng ta nói khác biệt Button Giải Mã private void btndecrypt_Click(object sender, EventArgs e) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(txtPriKey.Text); 75 FileStream fsFileOut = new FileStream(txtdich.Text, FileMode.Create, FileAccess.Write); FileStream fsFileIn = new FileStream(txtnguon.Text, FileMode.Open, FileAccess.Read); byte[] ByteIn = new Byte[fsFileIn.Length]; fsFileIn.Read(ByteIn, 0, ByteIn.Length); fsFileIn.Close(); byte[] cipherbytes = rsa.Decrypt(ByteIn, false); fsFileOut.Write(cipherbytes, 0, cipherbytes.Length); fsFileOut.Close(); } Hồn tồn giống với q trình mã hóa khác điều trình giải mã sử dụng khóa bí mật hàm Decrypt() để giải mã Sau giải mã xong liệu ghi lên file đích hồn tồn giống với file gốc trước mã hóa 5.2.5 Tổng kết : Phần thứ chương giới thiệu với thuật tốn mã hóa bất đối xứng, cụ thể thuật tốn RSA Qua ta thấy ưu điểm thuật toán bất đối xứng toán thực tế khơng cần phải đưa khóa bí mật Và từ có nhìn tổng qua cách thức mã hóa thuật tốn RSA để xây dựng ứng dụng vào lập trình Net qua lớp RSACryptoServiceProvider Cuối biết cách lưu trữ thành phần thuật toán RSA thành dạng XML để chia cho đơn vị khác 76 KẾT LUẬN Phần làm làm đƣợc: Sau trình nghiên cứu, thực luận văn, em tìm hiểu nắm số vấn đề -Tìm hiểu số loại mã hóa cổ điển số loại mã hóa cao cấp sử dụng -Tìm hiểu NET Framework NET Framework bảo mật thơng tin -Tìm hiểu lớp Cryptography NET Framework hỗ trợ lập trình bảo mật -Xây dựng chương trình demo mã hóa file với số thuật tốn mã hóa đại Phần chƣa thực đƣợc: Bên cạnh phần thực được, đồ án tồn số hạn chế như: -Chưa tìm hiểu số loại mã hóa RC2 -Chương trình ứng dụng đơn giản, giao diện chưa thân thiện -Chưa bắt tất lỗi nêu rõ lỗi đâu -Chưa xây dựng hệ thống trợ giúp hỗ trợ người sử dụng -Mã hóa RSA chưa thực với file lớn Hƣớng phát triển: Qua số phần chưa thực được.Vì thời gian hạn chế mức độ nghiên cứu chưa sâu rộng Em mong đồ án tài liệu tham khảo 77 cho bạn sinh viên khóa sau khắc phục số khuyết điểm để chương trình hồn thiện như: -Xây dựng ứng dụng có giao diện than thiện dễ sử dụng -Bắt lỗi chi tiết lỗi nêu lỗi đâu -Xây dựng hệ thống trợ giúp -Mở rộng RSA để mã hóa file có dung lượng lớn Lời cảm ơn Dưới hướng dẫn nhiệt tình thầy giáo Thạc sĩ Lê Thụy, em tiếp thu nhiều kiến thức kinh nghiệm để hoàn thành báo cáo Do thời gian kiến thức cịn hạn chế nên đồ án khơng tránh khỏi thiếu sót, em mong nhận nhận xét đánh giá thầy cô giáo ý kiến đóng góp bạn để dồ án em hồn thiện Em xin tỏ lịng biết ơn tới thầy giáo Thạc sĩ Lê Thụy giành thời gian tâm huyết giúp đỡ em vượt qua khúc mắc trình làm đồ án Em xin cảm ơn thầy cô giáo trường tạo điều kiện cho em hoàn thành đồ án Em xin chân thành cảm ơn 78 TÀI LIỆU THAM KHẢO NET Security and Cryptography Mã hóa ứng dụng - Tác giả :TS Dƣơng Anh Đức – ThS Trần Minh Triết http://dot.net.vn/ http://www.dotnetspider.com/ Và số tài liệu Internet 79 ... trao đổi thông tin thực giao dịch điện tử an toàn mạng Các ứng dụng mật mã học khoa học bảo vệ thông tin đa dạng phong phú, tùy vào tính đặc thù hệ thống bảo vệ thông tin mà ứng dụng có tính với... riêng Trong đó, kể số tính hệ thống bảo vệ thơng tin: Tính bảo mật thơng tin: hệ thống đảm bảo thơng tin giữ bí mật Thơng tin bị phát hiện, ví dụ q trình truyền nhận, người công hiểu nội dung. .. cấp dịch vụ bảo vệ quyền sở hữu trí tuệ thơng tin số Trong báo cáo thực tập em trình bày trình tìm hiểu tổng quan mã hóa lớp Crytography NET việc bảo vệ thông tin CHƢƠNG I: TỔNG QUAN VỀ MẬT MÃ