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…
Trang 11
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỞ TP.HCM KHOA CÔNG NGHỆ THÔNG TIN
Đề tài:
Tìm hiểu System.Security.Crytography namespace trên Microsoft.net Sử dụng lớp
Digital signature và Digital certificate hiện
thực mô hình tạo và kiểm tra chữ ký số
dùng RSA và SHA1
Năm học: 2016-2017
Giảng viên: Đào Thế Long Nhóm thực hiện: Nhóm 4 TP.HCM ngày 23 tháng 4 năm 2016
AN TOÀN BẢO MẬT THÔNG TIN
Trang 2Lời mở đầu
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…
Những kết quả nghiên cứu về mật mã cũng đã được đưa vào trong các hệ thống phức tạp hơn, kết hợp với những kỹ thuật khác để đáp ứng yêu cầu đa dạng của các hệ thống ứng dụng khác nhau trong thực tế, ví dụ như 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 của các đơn vị với hướng tiếp cận sinh trắc học…
Trong bài báo cáo của nhóm chúng em sẽ tìm hiểu về System.Security.Cryptography namespace trên NET trong 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ý nhất nhưng trong thời gian ngắn không tránh khỏi thiếu sót Mong thầy đọc và cho nhận xét về bài báo cáo của nhóm em
Cảm ơn thầy! Nhóm 02
Trang 4MỤC LỤC
- -
CHƯƠNG 1: TỔNG QUAN LỚP CRYPTOGRAPHY 1
1 Giới thiệu về lớp Cryptography 1
2 Một số lớp chính trong lớp System.Security.Cryptography 1
3 Ví dụ thuật giải 3
CHƯƠNG 2: THỰC HIỆN THUẬT GIẢI RSA 5
1 Tổng quan về RSA 5
2 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
1 Tổng quan SHA1 10
2 Giải thuật SHA1 10
Bước 1: Nhồi thêm dữ liệu 10
Bước 2: Thêm vào độ dài 11
Bước 3: Khởi tạo bộ đệm MD (MD buffer) 11
Bước 4: Xử lý các khối dữ liệu 512 bit 11
Bước 5: Xuất kết quả 12
3 Hướng dẫn sử dụng phần mềm SHA1 14
TÀI LIỆU THAM KHẢO 19
Trang 51
CHƯƠNG 1: TỔNG QUAN LỚP CRYPTOGRAPHY
1 Giới thiệu về 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 trong Win NT Mặc dù CryptoAPI cung cấp đầy đủ hỗ trợ cho ngành lập
trình mật mã, nhưng nó rất khó sử dụng Bạn phải hiểu thật rõ về mật mã học và phải làm việc với rất nhiều các thành phần cũng như những con số lớn trong API Nó cũng không
phải là một đối tượng được định hướng cho đến khi nó xuất hiện trong ngôn ngữ lập trình
C, và bạn có thể gọi hàm để sử dụng nó một 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ủa chúng ta bằng cách cung cấp một lớp rất thân thiện với tên gọi là System.Security.Cryptography
Hình 1.1: Sơ đồ mã hõa và giải mã
2 Một số lớp chính trong lớp System.Security.Cryptography
toán mã hóa đối xứng như: DES, Rijndael
thuật toán RSA, DSA
CryptoStream: Kết nối dòng dữ liệu nguồn với các thuật toán mã hóa
CrpParameters: Chứa thông tin của các tham số trong những thuật toán đặc
biệt để có thể lưu trữ và lấy lại thông qua Cryptographic Service Provider (CSP)
HashAlgorithm: Lớp cơ sở hỗ trợ các thuật toán băm
Trang 62
dãy Byte và Base-64
CryptographicException: Chứa thông tin về lỗi của các loại mã hóa khác
nhau
Các bạn có thể nhớ và tùy ý sử dụng các lớp này trong chương trình của mình
vì nó đã có sẵn trong lớp System.Security.Cryptography
Trang 7CreateKey(System Convert ToInt32(commandLineArgs[2]));
Console WriteLine( "<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\"
validation=\"SHA1\"/>" , validationKey, decryptionKey);
}
static String CreateKey( int numBytes)
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider ();
byte [] buff = new byte [numBytes];
rng.GetBytes(buff);
return BytesToHexString(buff);
Trang 84
}
static String BytesToHexString( byte [] bytes)
{
StringBuilder hexString = new StringBuilder (64);
for ( int counter = 0; counter < bytes.Length; counter++)
Trang 95
CHƯƠNG 2: THỰC HIỆN THUẬT GIẢI RSA
1 Tổng quan về RSA
Trong mật mã học, RSA là một thuật toánmật mã hóa khóa công khai Đây là thuật
toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa Nó đánh
dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an
toàn với điều kiện độ dài khóa đủ lớn
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả
Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc
tại GCHQ, đã mô tả một thuật toán tương tự Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm Tuy nhiên, phát minh
này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật
Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số
đăng ký 4.405.829) Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000 Tuy
nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ Ngoài ra, nếu như công trình của Clifford Cocks đã
được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký
Trang 106
Hình 2.1: Sơ đồ mã hóa RSA
2 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ố đầu tiên
Trang 117
Bước 2: Nhấn chọn giá trị cho p, q và e
Trang 128
Bước 4: Sau khi đã có được những giá trị ở trên ta tiến hành mã hóa một chuỗi ký tự
Bước 5: Muốn nhập dữ liệu khác chọn nút Reset All để xóa tất cả dữ liệu hiện có
Trang 139
Bước 6: Sau khi hoàn thành tắt chương trình bằng nút X màu đỏ phía trên bên phải của
chương trình hoặc nút Thoát, sẽ hiển thị một hộp thoại như sau:
**Bản demo đi kèm trong bài
Trang 1410
CHƯƠNG 3: KIỂM TRA CHỮ KÝ BẰNG SHA1
1 Tổng quan SHA1
SHA1 là thuật toán “băm” một chiều (hash) dùng trong rất nhiều hệ thống như SSH,
SSL, S/MIME, PGP, IPSec, VPNs…Nó được Cơ quan an ninh quốc gia Mỹ phát minh năm
1995 và trở thành chuẩn bảo mật cơ sở phổ biến nhất trên Internet và là thuật toán chữ ký
điện tử duy nhất được Cơ quan Chuẩn Chữ ký Số của chính phủ Mỹ phê chuẩn
SHA là viết tắt của Secure Hash Algorithm Ba thuật toán SHA co cấu trúc khác nhau
và được phân biệt là: SHA-0, SHA-1 và SHA2 SHA-1 gần tương tự như SHA-0, nhưng sửa chữa một lỗi trong các đặc tả kỷ thuật gốc của hàm băm SHA dẫn đến những điểm yếu quan trọng Các thuật toán SHA-0 đã không được sử dụng trong nhiều ứng dụng SHA-2 mặt khác
có những đ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 của các thuật toán băm an toàn
2 Giải thuật SHA1
Gồm 5 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 dữ liệu
Trang 1511
Thông điệp được nhồi thêm các bits sao cho độ dài I=448 mod 512 hay l = n*512 +
448(n, 1 nguyên)
Thông điệp luôn luôn được nhồi thêm dữ liệu
Số bits nhồi thêm nằm trong khoảng 1 đến 512
Phần dữ liệu nhồi thêm bao gồm một bit 1 và theo sau là các bit 0
Bước 2: Thêm vào độ dài
Độ dài của khối dữ liệu ban đầu được biểu diễn dưới dạng nhị phân 64 bit và được thêm vào cuối chuỗi nhị phân kết quả của bước 1
Độ dài được biểu diễn dưới dạng nhị phân 64 bit không dấu
Kết quả có được từ 2 bước đầu là một khối dữ liệu có độ dài là bội số của 512 Khối dữ
liệu được biểu diễn:
Bằng một dãy L khối 512 bit Y0, Y1, Y2 , YL-1
Bằng một 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 bộ đệm MD (MD buffer)
Một bộ đệm 160 bit được dùng lưu trữ các giá trị băm trung gian và kết quả Bộ đệm
được biểu diễn bằng 5 thanh ghi 32 bit với các giá trị khởi tạo ở dạng bigiendian (byte có
trọng số lớn nhất trong tử nằm ở địa chỉ thấp nhất) như sau:
Bước 4: Xử lý các khối dữ liệu 512 bit
Trọng tâm của giải thuật bao gồm 4 vòng lặp thực hiện tất cả 80 bước 4 vòng lặp có cấu trúc như sau, chỉ khác nhau ở các hàm logic f1, f2, f3, f4
Trang 16Đầu ra của 4 vòng (bước 80 được cộng với đầu ra của bước CVq để tạo CVq+1
Bước 5: Xuất kết quả
Sau khi thao tác trên toàn bộ L blocks Kết quả của khối thứ L là bảng băm 160 bit
Giải thuật được tóm tắt như sau:
CV0 = IV
CVq+1 = SUM32 (CVq, ABCDEq)
Trang 1713
Với
IV = giá trị khởi tạo của bộ đệm ABCCDE
ABCDEq = đầu ra của hàm nén trên khối thứ q
L = số khối 512 bit của thông điệp
SUM32 = phép cộng modulo 232 trên từng từ (32 bits) của đầu vào
Trang 18Từ 16 từ 32 ibit từ khối dữ liệu đầu vào, mở rộng thành 80 từ Wt
Với 0 ≤ t ≤ 15, giá trị Wt lấy trực tiếp từ khối dữ liệu
t > 15, Wt = S1(Wt-16 xorW1-14 xor Wt-8 xor Wt-5)
3 Hướng dẫn sử dụng phần mềm SHA1
Demo tạo và kiểm tra chữ kí số bằng SHA1
Khi chạy file “Kiểm tra tính toàn vẹn dữ liệu.exe” sẽ hiển thị hộp thoại
Trang 1915
Bước 1: Ta bấm vào nút tạo SNT và sau đó bấm vào nút Tính để tìm giá trị E và N và
Khóa Bí Mật
Trang 2016
Bước 2: Chuyển qua tab ký văn bản, tab ký văn bản Nhập nội dung Văn bản cần chữ,
rồi nhấn nút Ký
Trang 2117
Bước 3: Sang trang Kiểm tra chữ ký, nhập nội dung vào Văn bản cần kiểm tra, copy
Chữ ký ở trang Ký văn bản và Khóa bí mật D, N Nhấn nút Nhập khóa rồi tiếp đó t
nhấp nút Kiểm Tra VB
Trang 2218
Trang 23[4] Đề tài tìm hiểu tổng quan về mã hoá và lớp Crytography trong NET trong
việc bảo vệ thông tin