Mật mã (Cryptography) là một ngành nghiên cứu các kỹ thuật toán học nhằm cung cấp các dịch vụ bảo vệ thông tin. Đây là ngành khoa học quan trọng, có nhiều ứng dụng trong đời sống – xã hội. Cùng với sưu phát triển của khoa học máy tính và Internet, các nghiên cứu và ứng dụng của mật mã học ngày càng trở nên đa dạng hơn, mở ra nhiều hướng nghiên cứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù với những đặ trưng riêng. Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết, ví dụ như 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 về người sở hữu mã khóa (chứng nhận khóa công cộng), các quy trình giúp trao đổi thông tin và thực hiện giao dịch điện tử an toàn trên mạng…
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỞ TP.HCM KHOA CƠNG NGHỆ THƠNG TIN AN TỒN BẢO MẬT THƠNG TIN Đề tài: Tìm hiểu System.Security.Crytography namespace Microsoft.net Sử dụng lớp Digital signature Digital certificate thực mơ hình tạo kiểm tra chữ ký số dùng RSA SHA1 Giảng viên: Đào Thế Long Nhóm thực hiện: Nhóm TP.HCM ngày 23 tháng năm 2016 Năm học: 2016-2017 Lời mở đầu Mật mã (Cryptography) 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 Cùng với sưu 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 đặ 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à 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… 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… Trong báo cáo nhóm chúng em tìm hiểu System.Security.Cryptography namespace NET việc bảo vệ thơng tin Mặc dù nhóm em cố gắng biên soạn, chọn lọc tài liệu, cách trình bày hợp lý thời gian ngắn khơng tránh khỏi thiếu sót Mong thầy đọc cho nhận xét báo cáo nhóm em Cảm ơn thầy! Nhóm 02 DANH SÁCH NHĨM 02 STT HỌ VÀ TÊN MSSV GHI CHÚ 1* Lê Thị Tú Hoan 1354050029 DH13TK02 Trần Thị Kim Loan 1354052153 DH13TK01 MỤC LỤC - - CHƯƠNG 1: TỔNG QUAN LỚP CRYPTOGRAPHY .1 Giới thiệu lớp Cryptography Một số lớp lớp System.Security.Cryptography Ví dụ thuật giải CHƯƠNG 2: THỰC HIỆN THUẬT GIẢI RSA Tổng quan RSA .5 Hướng dẫn sử dụng phần mềm chuyển mã RSA .6 CHƯƠNG 3: KIỂM TRA CHỮ KÝ BẰNG SHA1 10 Tổng quan SHA1 .10 Giải thuật SHA1 10 Bước 1: Nhồi thêm liệu 10 Bước 2: Thêm vào độ dài 11 Bước 3: Khởi tạo đệm MD (MD buffer) 11 Bước 4: Xử lý khối liệu 512 bit 11 Bước 5: Xuất kết .12 Hướng dẫn sử dụng phần mềm SHA1 14 TÀI LIỆU THAM KHẢO .19 CHƯƠNG 1: TỔNG QUAN LỚP CRYPTOGRAPHY Giới thiệu lớp Cryptography Microsoft đăng ký quyền sỡ hữu Win 32 Cryptography API (CrytoAPI) vào năm 1996 tích hợp Win NT Mặc dù CryptoAPI cung cấp đầy đủ hỗ trợ cho ngành lập trình mật mã, khó sử dụng Bạn phải hiểu thật rõ mật mã học phải làm việc với nhiều thành phần số lớn API Nó khơng phải đối tượng định hướng xuất ngơn ngữ lập trình C, bạn gọi hàm để sử dụng cách đơn giản Thật may mắn, NET Framework làm đơn giản hóa việc sử dụng API cách cung cấp lớp thân thiện với tên gọi System.Security.Cryptography Hình 1.1: Sơ đồ mã hõa giải mã Một số lớp lớp System.Security.Cryptography SymmetricAlgorithm: Lớp mã hóa đối xứng Nó mã hóa theo thuật tốn mã hóa đối xứng như: DES, Rijndael AsymmetricAlgorithm: Lớp mã hóa bất đối xứng, mã hóa theo thuật tốn RSA, DSA CryptoStream: Kết nối dòng liệu nguồn với thuật tốn mã hóa CrpParameters: Chứa thơng tin tham số thuật tốn đặc biệt để lưu trữ lấy lại thông qua Cryptographic Service Provider (CSP) HashAlgorithm: Lớp sở hỗ trợ thuật toán băm RandomNumberGenerator: Lớp sở sinh số ngẫu nhiên ToBase64Transform FromBase64Transform: Dùng để chuyển đổi dãy Byte Base-64 CryptographicException: Chứa thông tin lỗi loại mã hóa khác Các bạn nhớ tùy ý sử dụng lớp chương trình có sẵn lớp System.Security.Cryptography Hình 1.2: Các thuật tốn mã hóa hỗ trợ lớp Cryptography Ví dụ thuật giải using System; using System.Text; using System.Security.Cryptography; namespace Crypto { public class KeyCreator { public static void Main(String[] args) { String[] commandLineArgs = System.Environment.GetCommandLineArgs(); string decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs[1])); string validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs[2])); Console.WriteLine("", validationKey, decryptionKey); } static String CreateKey(int numBytes) { RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); byte[] buff = new byte[numBytes]; rng.GetBytes(buff); return BytesToHexString(buff); } static String BytesToHexString(byte[] bytes) { StringBuilder hexString = new StringBuilder(64); for (int counter = 0; counter < bytes.Length; counter++) { hexString.Append(String.Format("{0:X2}", bytes[counter])); } return hexString.ToString(); } } } CHƯƠNG 2: THỰC HIỆN THUẬT GIẢI RSA Tổng quan RSA Trong mật mã học, RSA thuật tốn mật mã hóa khóa cơng khai Đây thuật toán phù hợp với việc tạo chữ ký điện tử đồng thời với việc mã hóa Nó đánh dấu tiến vượt bậc lĩnh vực mật mã học việc sử dụng khóa cơng cộng RSA sử dụng phổ biến thương mại điện tử cho đảm bảo an tồn với điều kiện độ dài khóa đủ lớn Thuật toán Ron Rivest, Adi Shamir Len Adleman mô tả lần vào năm 1977 Học viện Cơng nghệ Massachusetts (MIT) Tên thuật tốn lấy từ chữ đầu tên tác giả Trước đó, vào năm 1973, Clifford Cocks, nhà tốn học người Anh làm việc GCHQ, mơ tả thuật tốn tương tự Với khả tính tốn thời điểm thuật tốn khơng khả thi chưa thực nghiệm Tuy nhiên, phát minh công bố vào năm 1997 xếp vào loại tuyệt mật Thuật tốn RSA MIT đăng ký sáng chế Hoa Kỳ vào năm 1983 (Số đăng ký 4.405.829) Bằng sáng chế hết hạn vào ngày 21 tháng năm 2000 Tuy nhiên, thuật tốn cơng bố trước có đăng ký bảo hộ nên bảo hộ khơng có giá trị bên ngồi Hoa Kỳ Ngồi ra, cơng trình Clifford Cocks cơng bố trước sáng chế RSA khơng thể đăng ký Hình 2.1: Sơ đồ mã hóa RSA Hướng dẫn sử dụng phần mềm chuyển mã RSA Bước 1: Nhập vào N số nguyên tố muốn hiển thị, sau nhấn nút khởi tạo để xem N số nguyên tố Bước 2: Nhấn chọn giá trị cho p, q e Bước 3: Nhấn vào nút Tính để giá trị N, Fi, d, khóa Kp, khóa Ks Bước 4: Sau có giá trị ta tiến hành mã hóa chuỗi ký tự Bước 5: Muốn nhập liệu khác chọn nút Reset All để xóa tất liệu có Bước 6: Sau hồn thành tắt chương trình nút X màu đỏ phía bên phải chương trình nút Thốt, hiển thị hộp thoại sau: **Bản demo kèm CHƯƠNG 3: KIỂM TRA CHỮ KÝ BẰNG SHA1 Tổng quan SHA1 SHA1 thuật toán “băm” chiều (hash) dùng nhiều hệ thống SSH, SSL, S/MIME, PGP, IPSec, VPNs…Nó Cơ quan an ninh quốc gia Mỹ phát minh năm 1995 trở thành chuẩn bảo mật sở phổ biến Internet thuật toán chữ ký điện tử Cơ quan Chuẩn Chữ ký Số phủ Mỹ phê chuẩn SHA viết tắt Secure Hash Algorithm Ba thuật toán SHA co cấu trúc khác phân biệt là: SHA-0, SHA-1 SHA2 SHA-1 gần tương tự SHA-0, sửa chữa lỗi đặc tả kỷ thuật gốc hàm băm SHA dẫn đến điểm yếu quan trọng Các thuật tốn SHA-0 khơng sử dụng nhiều ứng dụng SHA-2 mặt khác có điểm khác biệt quan trọng so với hàm băm SHA-1 Hình 3.1: Các tính chất thuật tốn băm an tồn Giải thuật SHA1 Gồm bước: Đầu vào: chuỗi có độ dài tối đa 264 bits Đầu ra: giá trị băm có độ dài 160 bits Bước 1: Nhồi thêm liệu 10 Thông điệp nhồi thêm bits cho độ dài I=448 mod 512 hay l = n*512 + 448(n, nguyên) Thông điệp luôn nhồi thêm liệu Số bits nhồi thêm nằm khoảng đến 512 Phần liệu nhồi thêm bao gồm bit theo sau bit Bước 2: Thêm vào độ dài Độ dài khối liệu ban đầu biểu diễn dạng nhị phân 64 bit thêm vào cuối chuỗi nhị phân kết bước Độ dài biểu diễn dạng nhị phân 64 bit không dấu Kết có từ bước đầu khối liệu có độ dài bội số 512 Khối liệu biểu diễn: Bằng dãy L khối 512 bit Y0, Y1, Y2 , YL-1 Bằng dãy N từ (word) 32 bit M0, M1, MN-1 Vậy N= L x 16(32 x 16 = 512) Bước 3: Khởi tạo đệm MD (MD buffer) Một đệm 160 bit dùng lưu trữ giá trị băm trung gian kết Bộ đệm biểu diễn ghi 32 bit với giá trị khởi tạo dạng bigiendian (byte có trọng số lớn tử nằm địa thấp nhất) sau: A = 01234567 D = 76543210 B = 89 AB CD EF E = C3D2E1F0 C = FE DC BA 98 Các giá trị tương đương với từ 32 bit sau: A = 01234567 D = 76543210 B = 89 AB CD EF E = C3D2E1F0 C = FE DC BA 98 Bước 4: Xử lý khối liệu 512 bit Trọng tâm giải thuật bao gồm vòng lặp thực tất 80 bước vòng lặp có cấu trúc sau, khác hàm logic f1, f2, f3, f4 11 Mỗi vòng có đầu vào gồm khối 512 bit thời đệm 160 bit ABCDE Các thao tác cập nhật giá trị đệm Mỗi bước sử dụng số Kt (0≤t ≤79) Kt = 5A827999 (0 ≤ t ≤ 19)) Kt = 6ED9EBA1 (20≤t ≤39) Kt = 8F1BBCDC (40≤t≤59) Kt = CA62C1D6 (60≤t≤79) Đầu vòng (bước 80 cộng với đầu bước CVq để tạo CVq+1 Bước 5: Xuất kết Sau thao tác toàn L blocks Kết khối thứ L bảng băm 160 bit Giải thuật tóm tắt sau: CV0 = IV CVq+1 = SUM32 (CVq, ABCDEq) 12 MD = CVL Với IV = giá trị khởi tạo đệm ABCCDE ABCDEq = đầu hàm nén khối thứ q L = số khối 512 bit thông điệp SUM32 = phép cộng modulo 232 từ (32 bits) đầu vào MD = giá trị băm Giải thích: Giải thuật thực tất 80 bước, bước mô tả sau: A ← E + f(t, B,C D) + S5(A)+ Wt + Kt B←A C←S30(B) D←C E←D Trong 13 A, B, C, D, E = từ đệm t = số thứ tự bước F(t, B,C, D) = làm logic bước t Sk = dịch vòng trái k bits Wt = từ thứ t khối liệu Kt = số += phép cộng modulo 232 Các hàm f: Từ 16 từ 32 ibit từ khối liệu đầu vào, mở rộng thành 80 từ Wt Với ≤ t ≤ 15, giá trị Wt lấy trực tiếp từ khối liệu t > 15, Wt = S1(Wt-16 xor W1-14 xor Wt-8 xor Wt-5) Hướng dẫn sử dụng phần mềm SHA1 Demo tạo kiểm tra chữ kí số SHA1 Khi chạy file “Kiểm tra tính tồn vẹn liệu.exe” hiển thị hộp thoại 14 Bước 1: Ta bấm vào nút tạo SNT sau bấm vào nút Tính để tìm giá trị E N Khóa Bí Mật 15 Bước 2: Chuyển qua tab ký văn bản, tab ký văn Nhập nội dung Văn cần chữ, nhấn nút Ký 16 Bước 3: Sang trang Kiểm tra chữ ký, nhập nội dung vào Văn cần kiểm tra, copy Chữ ký trang Ký văn Khóa bí mật D, N Nhấn nút Nhập khóa tiếp t nhấp nút Kiểm Tra VB 17 18 TÀI LIỆU THAM KHẢO [1] Trang hỗ trợ Microsoft https://support.microsoft.com/vi-vn/kb/312906 [2] Luận văn Ứng dụng DS1307 xây dựng hệ thống thời gian thực http://luanvan.co/luan-van/luan-van-ung-dung-ds1307-xay-dung-he-thong-thoigian-thuc-44709/ [3] Hướng dẫn trình bày luận văn thạc sĩ http://dlib.ptit.edu.vn/bitstream/123456789/957/1/TTLV%20Pham%20thi%20Th uy%20Quynh.pdf [4] Đề tài tìm hiểu tổng quan mã hố lớp Crytography NET việc bảo vệ thông tin http://luanvan.net.vn/luan-van/de-tai-tim-hieu-tong-quan-ve-ma-hoa-va-lopcrytography-trong-net-trong-viec-bao-ve-thong-tin-27711/ [5] Demo kết băm chuỗi theo thuật toán MD5, SHA1, SHA256 https://www.youtube.com/watch?v=kBGHgPJjTss [6] Giới thiệu RAS wiki https://vi.wikipedia.org/wiki/RSA_(m%C3%A3_h%C3%B3a) [7] Đề tài giới thiệu mã hóa liệu SHA1, MD5, demo ứng dụng http://luanvan.net.vn/luan-van/de-tai-gioi-thieu-ma-hoa-du-lieu-sha1-md5-vademo-ung-dung-59498/ 19 ... = 0 12 345 67 D = 76 543 21 0 B = 89 AB CD EF E = C3D2E1F0 C = FE DC BA 98 Các giá trị tương đương với từ 32 bit sau: A = 0 12 345 67 D = 76 543 21 0 B = 89 AB CD EF E = C3D2E1F0 C = FE DC BA 98 Bước 4: Xử... IV CVq+1 = SUM 32 (CVq, ABCDEq) 12 MD = CVL Với IV = giá trị khởi tạo đệm ABCCDE ABCDEq = đầu hàm nén khối thứ q L = số khối 5 12 bit thông điệp SUM 32 = phép cộng modulo 23 2 từ ( 32 bits) đầu vào... http://dlib.ptit.edu.vn/bitstream/ 12 345 6789/957/1/TTLV %20 Pham %20 thi %20 Th uy %20 Quynh.pdf [4] Đề tài tìm hiểu tổng quan mã hoá lớp Crytography NET việc bảo vệ thông tin http://luanvan.net.vn/luan-van /de- tai- tim-hieu-tong-quan-ve-ma-hoa-va-lopcrytography-trong-net-trong-viec-bao-ve-thong-tin -27 711/