1. Trang chủ
  2. » Giáo Dục - Đào Tạo

bài tập lớn nhập môn an toàn thông tin đề tài tìm hiểu về chữ ký số

15 2 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Tìm hiểu về Chữ ký số
Tác giả Lê Hữu Tài, Nguyễn Thế Anh, Nguyễn Hữu Mạnh
Người hướng dẫn PGS. TS. Nguyễn Linh Giang
Trường học Trường Đại học Bách Khoa Hà Nội
Chuyên ngành Nhập môn An toàn thông tin
Thể loại Bài tập lớn
Thành phố Hà Nội
Định dạng
Số trang 15
Dung lượng 160,53 KB

Nội dung

Vì chỉ có public key của ngườigửi mới có thể giải mã chữ ký được tạo bằng private key của họ nên nó đảm bảo với ngườinhận rằng tài liệu thực sự được ký bởi người gửi.- Tính

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÀI T P LỚN NH P MÔN AN TOÀN THÔNG TIN ẬP LỚN NHẬP MÔN AN TOÀN THÔNG TIN ẬP LỚN NHẬP MÔN AN TOÀN THÔNG TIN

Đề tài: Tìm hiểu về Chữ ký số

Mã học phần : IT4015

Giảng viên hướng dẫn : PGS TS Nguyễn Linh Giang Danh sách thành viên nhóm:

Trang 2

MỤC LỤC

CHƯƠNG I: TỔNG QUAN VỀ CHỮ KÝ SỐ

1.1: Khái niệm

1.2:Các đặc điêm của chữ ký số

1.3:Cách hoạt động của chữ ký số

1.4:So sánh chữ ký số và chữ ký tay

1.5:Hàm băm(hash function)

1.6:Những thách thức

Trang 3

CHƯƠNG I: TỔNG QUAN VỀ CHỮ KÝ SỐ

1.1 Khái niệm:

Chữ ký số là một kỹ thuật mã hóa được sử dụng để xác thực tính xác thực và tính toàn vẹn của tin nhắn, phần mềm hoặc tài liệu kỹ thuật số Nó là dạng kỹ thuật số tương đương với chữ

ký viết tay hoặc con dấu đóng dấu, nhưng nó mang lại tính bảo mật cao hơn nhiều

Mã hóa đối xứng: Là những hệ mật được sử dụng chung 1 khóa trong quá trình mã hóa và mã hóa Do đó khóa phải được giữ bí mật tuyện đối

Mã hóa bất đối xứng: Cơ sở toán học của hệ mã hóa bất đối xứng là dùng những hàm một chiều, tức là những hàm để tính theo chiều thuận thì dễ còn theo chiều ngược lại thì với không khả thi với hệ thống máy tính hiện tại

Chữ ký số bao gồm 3 thành phần:

- Thuật toán tạo ra khóa

- Hàm tạo chữ ký là hàm tính toán chữ ký trên cơ sở khóa mật và dữ liệu cần ký

- Hàm kiểm tra chữ ký là hàm kiểm tra xem chữ ký đã cho có đúng với khóa công cộng không (Khóa này mọi người có quyền truy cập cho nên mọi người đều có thể kiểm tra được chữ ký)

1.2 Các đặc điểm của chữ ký số:

- Tính xác thực: chữ ký số xác minh danh tính của người gửi Vì chỉ có public key của người gửi mới có thể giải mã chữ ký được tạo bằng private key của họ nên nó đảm bảo với người nhận rằng tài liệu thực sự được ký bởi người gửi

- Tính toàn vẹn: bất kỳ thay đổi nào trong tài liệu sau khi được ký sẽ dẫn đến sự không khớp giữa hàm băm ban đầu và hàm băm của tài liệu đã sửa đổi, cho thấy có sự giả mạo

- Không thể tái sử dụng: mỗi chữ ký chỉ có giá trị trên 1 văn bản

- Không thể giả mạo

Trang 4

- Chống từ chối: sau khi tài liệu được ký, người gửi không thể phủ nhận việc đã ký nó vì chữ

ký là

duy nhất đối với khóa riêng của họ và tài liệu cụ thể

1.3 Cách hoạt động của chữ ký số:

Sinh ra các cặp khóa:

- Các public key và private key được sinh bằng các thuật toán mã hóa như RSA (RivestShamir-Adleman) hoặc ECDSA (Thuật toán chữ ký số đường cong Elliptic)

- Private key được chủ sở hữu giữ bí mật, còn public key được phân phối rộng rãi

Quy trình ký:

-Tính toán chuỗi đại diện (message digest/ hash value) của thông điệp sử dụng một giải thuật băm (Hashing algorithm)

-Chuỗi đại diện được ký sử dụng khóa riêng (Private key) của người gửi và 1 giải thuật tạo chữ ký (Signature/ Encryption algorithm) Kết quả chữ ký số (Digital signature) của thông điệp hay còn gọi là chuỗi đại diện được mã hóa (Encryted message digest)

-Thông điệp ban đầu (message) được ghép với chữ ký số (Digital signature) tạo thành thông điệp đã được ký (Signed message)

Thông điệp đã được ký (Signed message) được gửi cho người nhận

Quy trình kiểm tra chữ ký:

-Tách chữ ký số và thông điệp gốc khỏi thông điệp đã ký để xử lý riêng

-Tính toán chuỗi đại diện MD1 (message digest) của thông điệp gốc sử dụng giải thuật băm (là giải thuật sử dụng trong quá trình ký)

-Sử dụng khóa công khai (Public key) của người gửi để giải mã chữ ký số -> chuỗi đại diện thông điệp MD2

So sánh MD1 và MD2:

Nếu MD1 = MD2 -> chữ ký kiểm tra thành công Thông điệp đảm bảo tính toàn vẹn và thực sự xuất phát từ người gửi (do khóa công khai được chứng thực)

Nếu MD1 ≠ MD2 -> chữ ký không hợp lệ Thông điệp có thể đã bịs ửa đổi hoặc không thực sự xuất phát từ người gửi

1.4 So sánh chữ ký tay và chữ ký số:

Chứ ký cố định Chữ ký thay đổi tùy theo văn bản

Trang 5

Gắn liền với văn bản Có thể tách rời

1.5 Hàm băm (Hash function):

-Hàm băm là hàm toán học chuyển đổi thông điệp (message) có độ dài bất kỳ (hữu

hạn) thành một dãy bít có độ dài cố định (tùy thuộc vào thuật toán băm) Dãy bít này

được gọi là thông điệp rút gọn (message disgest) hay giá trị băm (hash value), đại diện

cho thông điệp ban đầu

-Hàm băm SHA-1: Thuật toán SHA-1 nhận thông điệp ở đầu vào có chiều dài

k<264 bit, thực hiện xử lý và đưa ra thông điệp thu gọn (message digest) có chiều dài

cố định 160 bits Quá trình tính toán cũng thực hiện theo từng khối 512 bits, nhưng

bộ đệm xử lý dùng 5 thanh ghi 32-bits Thuật toán này chạy tốt với các bộ vi xử lý có

cấu trúc 32 bits

1.6 Những hạn chế và thách thức:

-Yêu cầu một cơ sở hạ tầng mạnh mẽ để quản lý và phân phối khóa

-Người dùng cần hiểu tầm quan trọng của việc bảo vệ private key

-Khả năng tương thích và khả năng tương tác giữa các hệ thống và tiêu chuẩn khác nhau có thể là một vấn đề

-Ngoài ra còn một số nguy cơ có thể xảy ra:

-Kẻ xấu có thể giả mạo chữ ký tương ứng với văn bản đã chọn

- Kẻ xấu thử chọn bức điện mà tương ứng với chữ ký đã cho

- Kẻ xấu có thể ăn trộm khóa mật và có thể ký bất kỳ một bức điện nào nó muốn giống như chủ của khóa mật

- Kẻ xấu có thể giả mạo người gửi ký một bức điện nào đó

Trang 6

Chương II Hệ mã hóa chữ kí số

1 Hệ mã hóa RSA

RSA là một hệ mã hóa bất đối xứng được phát triển bởi Ron Rivest, Adi Shamir và Leonard Adleman (tên của nó cũng chính là tên viết tắt của 3 tác giả này) và được sử dụng rộng rãi trong công tác mã hoá và công nghệ chữ ký điện tử Trong hệ mã hóa này, public key có thể chia sẻ công khai cho tất cả mọi người Hoạt động của RSA dựa trên 4 bước chính: sinh khóa, chia sẻ key, mã hóa và giải mã

Quy trình hoạt động của RSA:

1.1 Sinh khóa

Mấu chốt cơ bản của việc sinh khóa trong RSA là tìm được bộ 3 số tự nhiên e,d,n sao cho:

và một điểm không thể bỏ qua là cần bảo mật cho d sao cho dù biết e, n hay thậm chí cả m cũng không thể tìm ra d được

Trong đó, có 2 loại khóa

• Public key ( n,e): dùng để mã hóa

• Private key( e,d): Dùng để giải mã, cần được bảo mật cẩn thận

Cụ thể, khóa của RSA được sinh như sau:

• Chọn 2 số nguyên tố p và q • Tính modulus n = pq

n sẽ được dùng làm modulus trong cả public key và private key

• Tính toán hàm Euler của n: φ = (p-1) * (q -1)

Trang 7

Giá trị này sẽ được giữ bí mật

• Chọn e sao cho 1 < e < φ φvà e nguyên tố cùng nhau

• Tính toán khóa bí mật d bằng cách tìm nghịch đảo modular của e theo modulus φ

d = e^(-1) mod φ

1.2 Mã hóa

Bản rõ (plaintext) m được mã hóa thành bản mã (ciphertext) c bằng công thức:

c=m^e (mod n)

Với C là thông điệp mã hóa

1.3 Giải mã

Bản mã c được giải mã thành bản rõ m bằng công thức:

m=c^d (mod  n)

Với m là thông điệp gốc

2 Giải thuật hàm băm SHA1

SHA-1 viết tắt của Secure Hash Algorithm 1 là một thuật toán sử dụng hàm

Cryptographic Hash để thu thập đầu vào và cho ra các giá trị Hash 160 bit (20byte) Trong đó, giá trị Hash này được gọi là Message Digest, nó bao gồm một chuỗi các số thập lục phân dài

40 chữ số

Tính chất của giải thuật băm

Xác định: Đầu vào giống nhau luôn cho ra kết quả băm giống nhau

Hiệu suất cao: Việc tính toán giá trị băm phải nhanh chóng

Không thể đảo ngược: Không thể suy ngược lại đầu vào từ giá trị băm

Kháng va chạm: Khó tìm được hai chuỗi đầu vào khác nhau nhưng cho ra cùng một

giá trị băm

Quá trình băm:

Thêm bit '1' vào cuối dữ liệu

• Thêm các bit '0' vào sau bit '1' cho đến khi độ dài của dữ liệu trở thành 64 bit ngắn hơn bội số của 512

Trang 8

• Thêm vào cuối chuỗi dữ liệu gốc độ dài của dữ liệu (trước khi đệm), được biểu diễn bằng 64 bit

để khởi tạo giá trị ban đầu:

• h0 = 0x67452301

• h1 = 0xEFCDAB89

• h2 = 0x98BADCFE

• h3 = 0x10325476

• h4 = 0xC3D2E1F0

Bước 3: Xử lý khối dữ liệu 512-bit

Dữ liệu được chia thành các khối 512 bit và mỗi khối được xử lý theo các bước sau:

• Chia nhỏ khối: Chia khối 512 bit thành 16 từ 32 bit

• Mở rộng: Mở rộng 16 từ này thành 80 từ 32 bit

• Chuỗi chức năng: Sử dụng một loạt các chức năng f và các hằng số k:

• f(t, B, C, D) = (B AND C) OR ((NOT B) AND D) (0 ≤ t ≤ 19)

• f(t, B, C, D) = B XOR C XOR D (20 ≤ t ≤ 39)

• f(t, B, C, D) = (B AND C) OR (B AND D) OR (C AND D) (40 ≤ t ≤ 59)

• f(t, B, C, D) = B XOR C XOR D (60 ≤ t ≤ 79)

• Các hằng số k: • k = 0x5A827999 (0 ≤ t ≤ 19)

• k = 0x6ED9EBA1 (20 ≤ t ≤ 39)

• k = 0x8F1BBCDC (40 ≤ t ≤ 59)

• k = 0xCA62C1D6 (60 ≤ t ≤ 79)

• Quá trình tính toán: Sử dụng các vòng lặp và phép toán logic để cập nhật giá trị của a,

b, c, d, e thông qua 80 bước

Bước 4: Cập nhật các giá trị h

• Sau khi xử lý mỗi khối 512 bit, cập nhật các giá trị h0, h1, h2, h3, h4

Bước 5: Kết quả cuối cùng

• Kết hợp các giá trị h0, h1, h2, h3, h4 để tạo ra giá trị băm cuối cùng

Giải thuật không còn được sử dụng trong thực tế do vấn đề bảo mật

Ví dụ: “2024”

Bước 1: Đệm dữ liệu

Trang 9

2024 => 00110010 00110000 00110010 00110100 (32 bit)

Đệm 1 sau đó thêm 512 – 64 - 32 –1 = 415 bit 0

Dữ liệu sau khi đệm: 00110010 00110000 00110010 00110100 1 00 00(415 + 64 bit 0)

Bước 2: Khởi tạo giá trị Bước 3: Xử lí khối dữ liệu

Chia nhỏ 512 bit thành 16 từ 32 bit

M[0] = 00110010 00110000 00110010 00110100

M[1-15] = 10000000 00000000 00000000 00000000

Mở rộng 16 từ 32bit thành 80 từ 32 bit for

i from 16 to 79:

W[i] = (W[i-3] XOR W[i-8] XOR W[i-14] XOR W[i-16]) <<< 1

a = h0 = 0x67452301 b = h1 =

0xEFCDAB89 c = h2 =

0x98BADCFE d = h3

= 0x10325476 e = h4 =

0xC3D2E1F0

for t

from 0 to 79:

TEMP = (a << 5) + f(t, b, c, d) + e + W[t] +

k(t) e = d d = c c = b << 30 b = a

a = TEMP

Bước 4: Cập nhật giá trị

h0 = h0 + a h1 = h1 +

b h2 = h2 + c h3 = h3

+ d h4 = h4 + e

Bước 5: Ghép các giá trị ra được giá trị băm cần tính

2 Hệ mã hóa ECDSA

ECDSA là viết tắt của Elliptic Curve Digital Signature Algorithm - thuật toán sinh chữ

ký số dựa trên đường cong Elliptic

ECDSA được sử dụng để tạo chữ kí số cho dữ liệu, giúp chống lại sự giả mạo cũng như làm sai lệch dữ liệu, cung cấp một phương pháp xác thực mà không ảnh hưởng đến tính bảo mật của dữ liệu gốc

• Tạo chữ kí

Trang 10

Bước 1: Khởi tạo tham số:

• Chọn một đường cong elip y^2 = x^3 + ax + b mod p, trong đó a, b, p là các tham số của đường cong, và p là số nguyên tố lớn • Chọn một điểm cơ sở G trên đường cong elip

Bước 2: Chọn khóa riêng:

• Người dùng chọn một số ngẫu nhiên d (khóa riêng), là một số nguyên dương nhỏ hơn thứ tự của điểm cơ sở G trên đường cong elip • Tính điểm công khai Q = d * G, nơi Q là khóa công khai và G là điểm cơ sở đã chọn

Bước 3: Tạo chữ ký số:

• Chọn một số ngẫu nhiên k (0 < k < n), nơi n là thứ tự của điểm cơ sở G

• Tính r = x_P mod n, nơi x_P là hoành độ của điểm P trên đường cong elip

• Tính s = k^{-1} * (H(m) + d*r) mod n, nơi H(m) là hàm băm của thông điệp m, d là khóa riêng, và k^{-1} là nghịch đảo của k modulo n • Chữ ký số (r, s) được tạo ra từ các giá trị r và s thu được

Xác thực chữ ký số:

Nhận được chữ ký số (r, s) và thông điệp m

• Kiểm tra r và s có thuộc đoạn [1, n-1] không

• Tính w = s^{-1} mod n, nơi s^{-1} là nghịch đảo của s modulo n

• Tính u_1 = H(m) * w mod n và u_2 = r * w mod n

• Tính điểm P = u_1 * G + u_2 * Q • Nếu P = O (điểm vô hướng ở vô cực), chữ ký số không hợp lệ; ngược lại, chữ ký số hợp lệ

CHƯƠNG 4: AN TOÀN TRONG CHỮ KÝ SỐ

4.1 Tính An Toàn của Chữ Ký Số

4.1.1 Cơ chế Bảo Mật Tuyệt Đối

Chữ ký số được cho là có khả năng đảm bảo an toàn vô cùng cao nhờ cơ chế bảo mật tuyệt đối thông qua những đặc điểm sau đây:

4.1.1.1 Khả Năng Xác Định Nguồn Gốc

Hệ thống mã hóa công khai sử dụng trong chữ ký số cho phép mã hóa văn bản bằng khóa bí mật của chủ sở hữu chữ ký số Để ký một văn bản, trước tiên, văn bản sẽ được chuyển đổi thành một giá trị băm (hash) thông qua hàm băm Hàm băm này tạo

ra các chuỗi có độ dài cố định, ngắn hơn văn bản gốc, sau đó được mã hóa bằng khóa bí mật của chủ sở hữu chữ ký số

Để xác minh chữ ký số, người nhận sẽ sử dụng khóa công khai của người gửi để giải

mã giá trị băm của văn bản đã nhận Sau đó, người nhận sẽ so sánh giá trị băm này

Trang 11

với giá trị băm của văn bản đã nhận Nếu hai giá trị này khớp nhau, người nhận có thể chắc chắn rằng văn bản này xuất phát từ người sở hữu khóa bí mật

Nhờ đặc điểm này, chữ ký số có khả năng xác định nguồn gốc một cách tuyệt đối, giúp loại bỏ nguy cơ bị kẻ gian lợi dụng để lừa đảo hoặc giả mạo thông tin

4.1.1.2 Tính Toàn Vẹn

Chữ ký số đảm bảo tính toàn vẹn tuyệt đối của tài liệu Một khi tài liệu đã được ký số, bất kỳ sự thay đổi nào trong quá trình truyền tải, dù là nhỏ nhất, sẽ làm thay đổi giá trị hàm băm của tài liệu Khi đó, sự thay đổi này sẽ ngay lập tức bị phát hiện, đảm bảo rằng tài liệu không bị can thiệp hay chỉnh sửa bởi bên thứ ba Nhờ vậy, tài liệu ký số luôn giữ được tính toàn vẹn 100%, không bị thay đổi nội dung trong suốt quá trình truyền tải

4.1.1.3 Tính Không Thể Phủ Nhận

Trong các giao dịch, người nhận có thể từ chối chấp nhận một tài liệu nếu tài liệu đó không có chữ ký số của người gửi Để tránh tình huống này, người gửi cần phải ký số lên tài liệu trước khi gửi đi Khi có tranh chấp xảy ra, chữ ký số sẽ đóng vai trò bằng chứng xác minh rằng tài liệu đã thực sự được gửi bởi người sở hữu chữ ký số Nhờ vậy, chữ ký số được xem là công cụ an toàn nhất để xác thực nguồn gốc của tài liệu, giúp giải quyết tranh chấp một cách minh bạch và đáng tin cậy

4.1.2 Độ An Toàn của Hệ Thống RSA

Độ an toàn của hệ thống RSA dựa trên hai vấn đề toán học chính: Bài toán phân tích

số nguyên lớn ra thừa số nguyên tố và Bài toán RSA Nếu hai bài toán này được xem

là khó giải quyết (không có thuật toán hiệu quả để giải chúng), thì việc phá mã RSA toàn bộ sẽ không thể thực hiện được Đồng thời, việc phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn

Để xây dựng một hệ thống RSA an toàn, số n = p*q phải đủ lớn để việc phân tích nó trở nên không khả thi về mặt toán học Để đảm bảo an toàn, các số nguyên tố p và q nên có độ dài ít nhất 100 chữ số Điều này nhằm làm cho việc phân tích n thành p và

q trở nên cực kỳ khó khăn và tốn kém về thời gian

Dưới đây là bảng thời gian phân tích mã RSA theo số chữ số trong số được phân tích:

Số chữ số trong số được

phân tích

Thời gian phân

tích

Trang 12

75 104 giờ

Cách thức phân phối khóa công khai là một trong những yếu tố quyết định đối với độ

an toàn của RSA Nếu không được thực hiện đúng cách, nó có thể tạo ra một lỗ hổng

an ninh gọi là “Man-in-the-middle attack” (MiMA - Tấn công vào giữa) Đây là cách thức mà kẻ tấn công có thể can thiệp vào quá trình trao đổi khóa công khai giữa hai bên giao tiếp (A và B), và thực hiện các bước sau:

2 Giả mạo khóa công khai:

• Khi A và B trao đổi thông tin, kẻ tấn công C có thể gửi cho A một khóa công khai giả mạo, khiến A tin rằng đó là khóa công khai của B

3 Giải mã và đánh cắp thông tin:

• Khi A mã hóa thông tin bằng khóa công khai giả mạo của C và gửi đi, C có thể giải mã thông tin đó bằng khóa riêng của mình

• Sau khi đọc thông tin, C sẽ mã hóa lại thông tin bằng khóa công khai thực sự của B và gửi cho B

4 Hoạt động không bị phát hiện: • Cả A và B đều tin rằng họ đang giao tiếp an toàn

với nhau, nhưng thực tế là thông tin của họ đã bị kẻ tấn công C can thiệp

Ngày đăng: 07/08/2024, 19:57

TỪ KHÓA LIÊN QUAN

w