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 1TRƯỜ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 2MỤ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 3CHƯƠ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 5Gắ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 6Chươ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 7Giá 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 92024 => 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 10Bướ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 11vớ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 1275 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