1. Trang chủ
  2. » Công Nghệ Thông Tin

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

23 282 2

Đ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 23
Dung lượng 1,18 MB

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

Nội dung

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 1

1

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 2

Lờ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 4

MỤ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 5

1

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 6

2

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 7

CreateKey(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 8

4

}

static String BytesToHexString( byte [] bytes)

{

StringBuilder hexString = new StringBuilder (64);

for ( int counter = 0; counter < bytes.Length; counter++)

Trang 9

5

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 10

6

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 11

7

Bước 2: Nhấn chọn giá trị cho p, q và e

Trang 12

8

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 13

9

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 14

10

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 15

11

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 17

13

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 18

Từ 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 19

15

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 20

16

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 21

17

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 22

18

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

Ngày đăng: 01/02/2018, 02:53

TỪ KHÓA LIÊN QUAN

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