Luận văn sẽ tập trung tìm hiểu cơ sở toán học của lý thuyết mật mã, thuật toán và độ phức tạp của hệ mật mã khoá công khai RSA, các vấn đề về chứng thực thông qua lược đồ chữ ký RSA..
Trang 1ĐẠI HỌC CÔNG NGHỆ ĐẠI HỌC QUỐC GIA HÀ NỘI
ĐỖ THANH BÌNH
HỆ MẬT RSA VÀ ỨNG DỤNG LƯỢC ĐỒ CHỮ KÝ SỐ
TRONG XÁC THỰC THÔNG TIN
LUẬN VĂN THS CÔNG NGHỆ THÔNG TIN
Người hướng dẫn PGS.TS Đoàn văn Ba
Hà Nội 2007
Trang 2MỤC LỤC
MỞ ĐẦU 3
BẢNG THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT 5
CHƯƠNG 1 – TỔNG QUAN VỀ CÁC HỆ MẬT MÃ 6
1.1 Hệ mật mã cổ điển 6
1.1.1 Hệ thống truyền tin mật 6
1.1.2 Một số hệ mật mã kinh điển 7
1.1.3 Chuẩn mã hoá DES và AES 9
1.2 Hệ mật khoá công khai 11
1.2.1 Khái quát 11
1.2.2 Nguyên tắc mã hoá của hệ mật khoá công khai 11
1.2.3 Một số hệ mật khoá công khai thông dụng 12
1.3 Kết chương 19
CHƯƠNG 2 - HỆ MẬT MÃ KHOÁ CÔNG KHAI RSA 21
2.1 Giới thiệu hệ mật 21
2.2 Phương pháp lập mã và giải mã của hệ mật RSA 22
2.2.1 Thuật toán 22
2.2.2 Đặc trưng của hệ mật RSA 23
2.2.3 Các ví dụ 25
2.3 Độ an toàn của hệ mật RSA 27
2.4 Quản lý khoá của hệ mật mã RSA 28
2.4.1 Phân phối khoá công khai 29
2.4.2 Sử dụng mã hoá khoá công khai để phân phối khoá mật 33
2.5 Các tấn công đối với hệ mật mã RSA 34
2.5.1 Tấn công trong quá trình tạo khóa 34
2.5.2 Tấn công liên quan đến tốc độ 35
2.5.3 Tấn công vào quá trình phân phối khoá 35
2.5.4 Tấn công dựa trên thời gian 35
2.5.5 Tấn công lựa chọn thích nghi bản mã 36
2.6 Kết chương 36
CHƯƠNG 3 - LƯỢC ĐỒ CHỮ KÝ SỐ RSA 38
3.1 Khái niệm chữ ký số 38
3.2 Ứng dụng của chữ ký số 38
Trang 33.3 Xác thực thông điệp 39
3.3.1 Mã hoá thông điệp 40
3.3.2 Kỹ thuật xác thực dùng khoá bí mật 40
3.3.3 Các hàm băm 40
3.4 Lược đồ chữ ký số dùng mật mã khoá công khai 41
3.4.1 Hoạt động của chữ ký số 41
3.4.2 Định nghĩa lược đồ chữ ký số 43
3.4.3 Phân loại lược đồ chữ ký số 43
3.5 Lược đồ chữ ký số RSA 47
3.5.1 Thuật toán sinh khoá cho lược đồ chữ ký số RSA 47
3.5.2 Thuật toán sinh và chứng thực chữ ký RSA 47
3.5.3 Các ví dụ 48
3.6 Các kiểu tấn công lược đồ chữ ký số 49
3.7 Kết chương 50
CHƯƠNG 4 - CHƯƠNG TRÌNH MÃ HOÁ DỮ LIỆU 53
4.1 Giới thiệu bài toán 53
4.2 Thiết kế chương trình 55
4.2.1 Công cụ và ngôn ngữ lập trình phục vụ phát triển ứng dụng 55
4.2.2 Thiết kế chức năng chương trình 71
4.3 Xây dựng chương trình 72
4.3.1 Giao diện chính của chương trình 72
4.3.2 Các hàm, thủ tục chính của chương trình 77
KẾT LUẬN 93
TÀI LIỆU THAM KHẢO 95
Trang 4MỞ ĐẦU
Ngày nay, với sự phát triển mạnh mẽ của công nghệ thông tin, mạng máy tính đã trở thành phương tiện hữu dụng phục vụ công tác điều hành, trao đổi thông tin trong mọi lĩnh vực của xã hội Song song với việc ứng dụng công nghệ thông tin trong cuộc sống, đặc biệt là việc sử dụng mạng internet như một môi trường giao tiếp thì vấn đề
an toàn thông tin/dữ liệu trong quá trình gửi và nhận thông qua mạng có một vai trò hết sức quan trọng
Trên thế giới đã có rất nhiều hội nghị thường niên của Hiệp hội quốc tế về mã mật liên tục được tổ chức; các hội nghị Euro Crypt tại Châu Âu và Crypto tại Mỹ luôn thu hút sự quan tâm trên toàn thế giới của các chuyên gia an ninh thông tin Các công nghệ
mã hoá (mã mật) hiện đại đều không bảo mật công nghệ mã hoá (thuật toán mã hoá công khai), mà chỉ dựa vào bí mật chìa khoá giải mã (giải mã mật) Một hệ như vậy đáp ứng đầy đủ các yêu cầu bảo mật thông tin, phù hợp với xu hướng trao đổi thông tin qua mạng máy tính
Năm 1976, ý tưởng về hệ mật khoá công khai đã được Diffie và Hellman đưa ra, sau đó Rivest, Shamir và Adleman đưa ra hệ mật nổi tiếng RSA vào 1977 Tiếp đó đã
ra đời một số hệ mật dựa trên các thuật toán khác nhau như: hệ mật xếp ba lô Hellman, hệ mật McElice, hệ mật Elgamal, hệ mật Chor-Rivest; hệ mật đường cong Elliptic,…
Markle-Trong các hệ mật khoá công khai trên, có hệ mật RSA là hệ mật mã được xây dựng đầu tiên (ra đời năm 1977 tại MIT) RSA được liệt vào một trong các giải thuật mã hóa bất đối xứng được dùng thông dụng nhất cho đến ngày hôm nay, RSA được đặt tên từ
ba nhà khoa học phát minh ra nó: Ron Rivest, Adi Shamir, và Leonard Adleman Nó được dùng hàng ngày trong các giao dịch thương mại điện tử, dùng cho chữ ký số đảm bảo tính toàn vẹn của các thông điệp khi lưu chuyển trên Internet
Luận văn với đề tài “Hệ mật RSA và ứng dụng lược đồ chữ ký số trong xác thực thông tin” tập trung nghiên cứu và ứng dụng một trong những phương pháp bảo mật
dữ liệu có tính an toàn cao nhất hiện nay Luận văn sẽ tập trung tìm hiểu cơ sở toán học của lý thuyết mật mã, thuật toán và độ phức tạp của hệ mật mã khoá công khai RSA, các vấn đề về chứng thực thông qua lược đồ chữ ký RSA Ngoài ra luận văn sẽ trình bày và xây dựng một ứng dụng mã hoá dữ liệu phục vụ truyền tin an toàn
Kết cấu luận văn được trình bày bao gồm những nội dung chính sau đây:
Chương I: Tổng quan về các hệ mật mã
Giới thiệu mô hình một số hệ mật mã đang được ứng dụng như hệ mã dịch vòng,
mã thay thế, hoán vị, hệ mật mã RSA, v.v
Chương II: Hệ mật khoá công khai RSA
Trang 5Nghiên cứu các vấn đề liên quan đến hệ mật mã khoá công khai RSA; phương pháp lập mã và giải mã; các đặc điểm và độ an toàn của hệ mật; vấn đề quản lý khoá, phân phối khoá
Chương III: Lược đồ chữ ký số RSA
Giới thiệu chữ ký số RSA, các ứng dụng của chữ ký số trong việc xác thực dữ liệu; lược đồ chữ ký số; v.v
Chương IV: Chương trình mã hoá dữ liệu
Ứng dụng cơ sở lý thuyết đã nghiên cứu để xây dựng một chương trình mã hoá ứng dụng các kỹ thuật mã khoá bí mật, mã khoá công khai và lược đồ chữ ký số
Trang 6BẢNG THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT
Các từ viết tắt
xứng
xứng
Algorithm
Thuật toán mật mã dữ liệu quốc tế
được thiết kế bởi Ronald Rivest năm 1991
Technology
Học viện công nghệ Massachusets
Standard
Chuẩn mật mã khoá công khai do phòng thí nghiệm RSA Data Security Inc phát triển
National Security Agency (NSA)
Trang 7kD nên dễ dàng có thể giải mã để nhận được bản rõ
Hình H1.1 là đồ khối chức năng của hệ thống thông tin mật theo nguyên tắc vừa
3) K (không gian khoá) là tập hữu hạn các khoá có thể
4) Đối với mỗi k K có một quy tắc giải mã ek: P C và một quy tắc giải mã tương ứng dk D Mỗi ek: R M và dk: M R là những hàm mã:
Trang 8Như vậy, theo định nghĩa trên, nếu một bản rõ x mã hoá bằng ek và bản mã nhận được giải mã bằng dk thì ta thu được bản rõ ban đầu x Người giải và người nhận áp dụng thủ tục sau đây cho hệ mật khoá riêng: Trước tiên, họ chọn một khoá ngẫu nhiên
k K; tiếp theo người giải muốn gửi một bản tin (cần bảo mật) cho người nhận trên kênh công khai và ta xem bản tin này là một chuỗi: x = x1, x2, …, xn
Với n là số nguyên lớn hơn hay bằng đơn vị (n 1); xi R, 1 i n; mỗi xi đều sẽ được mã hoá bằng quy tắc mã ek với khoá k xác định trước đó Do đó người gửi sẽ tính: yi = ek(xi), 1 i n
Và như vậy chuỗi bản mã nhận được: y = y1 y2…yn sẽ được gửi lên kênh đến người nhận Khi nhận được y = y1 y2…yn, thì người nhận sẽ giải mã bằng dk và nhận được bản rõ x = x1 x2…xn
Rõ ràng, hàm mã hoá ek phải là hàm đơn ánh (ánh xạ 1 - 1), nếu không việc giải mã
sẽ không thực hiện được một cách tường minh Ví dụ x1 ≠ x2 và y = ek(x1) = ek(x2) thì người nhận có cách nào để xác nhận được đâu là bản rõ đúng, vì khó giải mã cho cả hai nghiệm x1, x2 Chú ý rằng, nếu R = M thì mỗi hàm mã hoá sẽ là một phép hoán vị, nghĩa là tập các bản mã và các bản rõ là đồng nhất, thì mỗi một hàm mã sẽ là một sự sắp xếp lại (hoán vị lại) các phần tử của tập này
Hệ mật kinh điển (hay còn gọi là cổ điển) là hệ mật khoá bí mật (secret key cryptosystem - SKR) hay còn gọi là hệ mật đối xứng (symmetric cryptosystem), là hệ mật mà khoá mã và giải mã dùng chung một khoá bí mật (secret key)
Có ba phương pháp chính trong mã mật cổ điển là: hoán vị, thay thế và hỗn hợp
Với k = 3, ta có hệ mật Ceasar Ceasar đã chuyển các thông báo mật bằng cách định nghĩa mỗi chữ cái tương ứng với một số sau đó chuyển văn bản thành dạng chữ
số và cộng thêm 3 vào mỗi chữ số nhận được và rút gọn tổng theo modulo 26; tiếp theo làm phép biến đổi từ chữ số về dạng chữ viết Như vậy đã hoàn thành quá trình
Trang 9mã hoá Quá trình giải mã được tiến hành ngược lại nhờ bản tương ứng giữa chữ và số Trong tiếng Anh với 26 chữ cái, ta mô hình hoá được công thức mã Ceasar như sau:
Số 3 trong (1) được gọi là chìa khoá của mã Caesar Ta có thể dẫn đến quan hệ tổng quát hơn cho lập và giải mã từ (1):
M = (R + k) mod 26
Chìa khoá của phép mã này là k, với k là một số tuỳ ý giữa 1 và 26
Tính bảo mật của hệ mã dịch vòng nói chung, hay mã Ceasar là không cao, thám
mã có thể dùng phương pháp vét cạn để tìm khoá để xác định bản rõ, điều này càng rút ngắn nếu thực hiện phép tìm khoá theo cách vét cạn từ hai phía
b) Mã thay thế
Mã thay thế về bản chất xem phép mã hoá và giải mã như là các hoán vị của các ký
tự và được định nghĩa như sau Theo định nghĩa 1.1, cho R = M = Z26, k chứa mọi hoán vị có thể của m ký hiệu Với mỗi phép hoán vị K, ta định nghĩa: e(x) = (x)
và d(y) = -1
(y), trong đó -1
là hoán vị ngược của
Về mã này, với các văn bản tiếng Anh khi cần mã hoá, mỗi khoá của mã thay thế là một trong 26 hoán vị Do vậy, áp dụng phương pháp tìm khoá bằng phương pháp vét cạn sẽ khó khăn hơn Mã thay thế có thể dễ dàng bị thám bằng phương pháp thống kê Các mã dịch vòng và mã thay thế được gọi chung là hệ thay thế đơn biểu Về bản chất hai loại này đều xoay quanh phép thay thế
c) Mã hoán vị
Ý tưởng của mã hoán vị là thay đổi vị trí giữa các ký tự của rõ Mã hoán vị được định nghĩa như sau: Cho m là một số nguyên dương xác định nào đó Theo định nghĩa 1.1, cho R = M = (Z26)m và k gồm tất cả các hoán vị của {1, …, m} Đối với một khoá (tức là một hoán vị) ta xác định:
Trang 10Các hệ mật thuộc dạng này thường được gọi là các mã khoá Theo một cách nhìn nhận khác, người ta xây dựng các hệ mã dòng Bản chất của mã này là tạo ra một dòng khoá z = z1 z2 z3… và dùng nó để mã hoá một xâu bản rõ x = x1 x2 x3… theo quy tắc
y= y1 y2…=ez1(x1)ez2(x2)
Về mặt toán học mã dòng được định nghĩa như sau:
Định nghĩa 1.2: Mã mật (mã hoá) dòng là một bộ (R, M, K, L, F, E, D) thoả mãn
các điều kiện sau:
1) R là tập hữu hạn các bản rõ có thể
2) M là tập hữu hạn các bản mã có thể
3) K là tập hữu hạn các khoá có thể (không gian khoá)
4) L là tập hữu hạn bộ chữ của dòng khoá
5) F = (f1 f2…) là bộ tạo dòng khoá fi: K x R-1 L; i 1
6) Với mỗi z L có một quy tắc mã ez E và một quy tắc giải mã tương ứng
dz D thoả mã dz(ez(x)) = x với mọi bản rõ xP
Như vậy, ta có thể coi hệ mã khối là một trường hợp đặc biệt của mã dòng khi dùng khoá không đổi zi = K, với i 1
1.1.3 Chuẩn mã hoá DES và AES
Từ mã khối sang mã dòng từng bước nâng cao được tính bảo mật, tuy nhiên với khả năng thám mã hiện đại thì rất không an toàn, do đó người ta tiếp tục nghiên cứu phát triển Tiêu biểu cho kết quả nghiên cứu là chuẩn mã dữ liệu DES và tiếp đến là chuẩn AES
a) Chuẩn mã DES
DES là tên thông thường của FIPS46-3 (Fedderal Information Proccessing Standard) DES mô tả thuật toán mã hoá dữ liệu DEA (Data Encryption Algorithm) DEA cũng được định nghĩa trong chuẩn X3.92 (ANSI Standard X3.92) DES là một thuật toán được dùng rộng rãi nhất trên thế giới DES được phát triển bởi IBM trong những năm 70 của thế kỷ trước và được chấp nhận của NIST (National Institute of Standards and Technology) cho ứng dụng thương mại
DES bị hạn chế độ an toàn do bị giảm chiều dài khoá còn 56 bit thay vì 128 bit trong thiết kế DES đã công bố thuật nhưng nguyên lý căn bản của thiêt kế vẫn chưa được công bố DES được dùng rộng rãi ở Mỹ và nhiều nước trong lĩnh vực thương mại, nhưng không được dùng để bảo mật thông tin của chính phủ
Năm 1999, một nhóm chuyên gia đã kết hợp gần 100.000 máy PC và họ đã giải mã một bản tin mã hoá bằng DES mất 22 giờ 15 phút
Trang 11Triple-DES (3-DES) là một cải tiến của DES Mặc dù chậm hơn ba lần so với DES, nhưng thuật toán này cho độ bảo mật cao hơn nhiều Hiện nay 3-DES được thực hiện nhiều hơn so với DES Mặt khác, 3-DES đã chứng minh là một giải pháp tin cậy do sử dụng khoá dài hơn DES Hình 1.2 mô tả mã hoá 3-DES
Cách thực hiện: Bước mã hoá đầu tiên dùng khoá (key 1) với 56 bit; tiếp đến giải
mã bản tin đã mã hoá (bằng key 1) nhờ sử dụng khoá key 2 (nghĩa là về bản chất là mã hoá bản tin lần thứ hai); cuối cùng, mã hoá bản tin đã giải (bằng khoá key 2) với cùng khoá ban đầu (key 3)
b) Chuẩn mã AES
AES đã ra đời như là để thay thế về cơ bản thuật toán DES Các thuật toán đã đạt đến chuẩn AES gồm: MARS: do IBM phát triển; RC6 do Ron Rivest của phòng thí nghiệm RSA đưa ra; Twofish – Do hiệp hội Counterfrance Internet Security đưa ra, rất phù hợp cho các bộ xử lý lớn và vi xử lý trên thẻ thông minh; Serpent do Ross Anderson, EliBiham và Lars Knudsen thiết kế; Rifndael: được thiết kế bởi Daemen và Rifmen
Trong các thuật toán này thì Rifndael được coi là tốt nhất và được công bố là AES Một số đặc điểm của Rifndael là: kỹ thuật mã khoá đối xứng, độ dài khoá 128, 192 và
256 bit Kích thước khối dữ liệu 128, 192 hoặc 256 bit Sử dụng thuật toán này cho phép cải thiện được hiệu năng tính toán so với DES tốc độ xử lý Pentium Pro 200 MHz
Rifndael là thuật toán bảo mật tin cậy, xử lý nhanh, cấu trúc toán học đơn giản NIST đã chọn thuật toán này
Ciphertex
t Key 2
Encryption
Decryption Encryption Plaintext
Hình 1.2-Mã hoá 3-DES
Trang 121.2 Hệ mật khoá công khai
Thuật toán có tính mềm dẻo cao, ứng dụng đa dạng
Dễ dàng triển khai thuật toán trên các thiết bị điện tử
Thuật toán và các thiết bị mang nó phải có tính cộng đồng
Do vậy, việc ra đời của hệ mã khoá công khai (phi đối xứng) là một sự phát triển
có tính tất yếu
Xây dựng các hệ mật khoá công khai là thiết kế một hệ mật sao cho khả năng tính toán để xác định quy tắc giải mã (dk) là rất thấp dù đã biết đầy đủ quy tắc mã hoá ek
Vì vậy quy tắc mã hoá ek được công khai rộng rãi Ưu điểm của hệ mật này là nười gửi
có thể gửi bản tin cho người nhận mà không cần thông tin trước về khoá mật Người nhận là người duy nhất có thể giải mã thông tin nhận được nhờ sử dụng quy tắc giải
mã dk
Khái niệm về hàm cửa sập một chiều đóng vai trò rất quan trọng trong mã mật khoá công khai, nó có các đặc điểm sau: hàm mã hoá khoá công khai ek là một hàm dễ tính toán việc tìm hàm ngược dk (hàm giải mã) là cực kỳ khó Điều cần thiết ở đây ek phải là hàm một chiều
Có rất nhiều hàm được coi là hàm một chiều song vẫn không tồn tại một hàm nào
có thể chứng minh được là hàm một chiều Để thuận tiện cho việc giải mã cần xác định một hàm một chiều có tính năng dễ tính toán ngược nếu biết một cửa sập nhất định Trong thực tế các hàm trên nhóm hữu hạn (rời rạc) là những hàm cửa sập một chiều vì thuật toán logarit modulo p có độ phức tạp quá lớn, khi p đủ lớn
1.2.2 Nguyên tắc mã hoá của hệ mật khoá công khai
Trong hệ thống có N đối tượng cùng trao đổi thông tin mật Từng đối tượng chọn cho mình một khoá lập mã k và hàm mã ek được công khai Như vậy, có N khoá lập
mã k1, k2, kn
Khi một đối tượng thứ i muốn gửi thông tin cho đối tượng thứ j thì dữ liệu được chuyển thành từng khối với độ dài nào đó, mỗi khối P trong văn bản được mã hoá bằng khoá lập mã ekj của đối tượng thứ j
Thông tin gửi đi có dạng:
Trang 131.2.3 Một số hệ mật khoá công khai thông dụng
a) Hệ mật RSA
Mô tả hệ mật:
Hệ mật RSA được xây dựng trên cơ sở mã mũ, trong đó khoá lập mã là cặp (b, n), gồm số mũ b và mod n Với n = p.q, trong đó p và q là các số nguyên tố; còn b được chọn là một số nguyên ngãu nhiên sao cho 1(b, (n)) = 1, với (n) là giá trị hàm Euler của n, và:
số nhỏ
Do tính đơn giản trong thiết kế và tính an toàn của thuật toán nên RSA được
sử dụng rộng rãi và dùng nhiều nhất trong số các thuật toán với khoá công khai Tuy nhiên, RSA có tốc độ mã hoá rất chậm, vì thế người ta không
Trang 14dùng RSA để mã hoá khối dữ liệu lớn mà dùng nó cho ứng dụng quan trọng hơn đó là xác thực,…
Hệ mật RSA sẽ được trình bày chi tiết về thuật toán, các ví dụ cụ thể, độ an toàn và ứng dụng của hệ mật tại chương 2
2
B y
B y
Các giá trị n và B được công khai còn p và q được giữ bí mật
Rõ ràng, hàm mã hoá ek sẽ không phải là một đơn ánh, vì thế phép giải mã không thể thực hiện một cách xác định Thực tế có bốn bản rõ có thể ứng với một bản mã bất
kỳ cho trước Chính xác hơn, giả sử w là một trong 4 căn bậc hai của 1 modulo n Giả
sử x Zn, khi đó có thể kiểm tra các phương trình sau:
)(
44
22
222
22
2
2
2 2 2
2 2
2
x e
Bx x
B B Bx x
B B
x w
B B x w B B x w B
B x w
(Chú ý, tất cả các phép tính số học đều thực hiện trong Zn)
Bốn bản mã hoá ek(x) là: x, -x – B, w(x + B/2) và -w(x + B/2), trong đó là một căn bậc hai không tầm thường của một modulo n Nói chung, người nhận không có cách nào để xác định bản nào là đúng trong bốn bản, trừ phi bản rõ có đủ độ dư để loại bỏ
ba trong bốn bản đó
Trang 15Bây giờ ta xem xét bài toán giải mã theo quan điểm người nhận hợp pháp Người nhận có bản mã y, vấn đề là tìm x sao cho:
x2 + Bx y (mod n)
Đây là phương trình bậc hai theo giá trị x chưa biết Ta có thể loại bỏ số hạng tuyến tính bằng phép thế: x1 = x + B/2, (hay x = x1 – B/2) Với x = x1 – B/2, thì khi đó phương trình trên có dạng:
n
y
B Bx
B Bx
24
2 2
1 2
Như vậy, phép giải mã sẽ chỉ còn là thực hiện phép khai căn bậc hai theo modulo
n Điều này tương đương với việc giải hai phương trình đồng dư sau:
Có hai căn bậc hai của C modulo p và hai căn bậc hai của C modulo q Theo định
lý phần dư China (The Chinese remainder theorem), các nghiệm này là có thể được kết hợp để tạo nên bốn nghiệm theo modulo n) Có thể dùng tiêu chuẩn Euler để xác định xem C có phải là một thặng dư bậc hai theo modulo p (và modulo q) hay không Trên thực tế, C là một thặng dư bậc hai theo modulo p và modulo q, nếu phép mã được thực hiện đúng Tuy nhiên tiêu chuẩn Euler không giúp chúng ta tìm được căn bậc hai của
C, nghĩa là nó chỉ cho câu trả lời “có” hay “không” mà thôi
Khi p 3 (mod 4), ta có một công thức đơn giản để tính các căn bậc hai của các thặng dư bậc hai theo modulo p Giả sử C là một thặng dư bậc hai và p 3 (mod 4) Khi đó ta có:
C
p
p p
modmod
mod
2 1
2 1 2
4 1
hai x1 của C modulo n bằng cách dùng định lý phần dư China
Trang 16Nhận xét:
Với p 1 (mod 4), người ta chưa biết được một thuật toán theo thời gian đa thức nào để tính các căn bậc hai của các thặng dư bậc hai theo modulo p Tuy nhiên, vẫn có một thuật toán Las Vegas với thời gian đa thức để tính
nó Một khi đã xác định được bốn giá trị có thể của x1, ta tính x từ phương trình x = x1 – B/2 để tìm được bốn bản rõ có thể Điều này dẫn đến công thức giải mã:
24
2
B y
B y
là phần tử nguyên thuỷ)
Hệ mật Elgamal được định nghĩa:
Định nghĩa 1.4: Cho p là một số nguyên tố sao cho bài toán logarithm rời rạc trong
Các giá trị p, , được công khai, còn a giữ bí mật
Với K = (p, , a, ) và một số ngẫu nhiên bí mật k Zp, ta xác định:
p
Z ta xác định
x k y y p
d k , 2 1a 1mod
Trang 17Bài toán logarithm rời rạc trong Z p :
Đặc trưng của bài toán: I = (p, , ), trong đó p là số nguyên tố Zp là phần tử nguyên thuỷ, *
Bài toán logarithm rời rạc trong Zp là đối tượng trong nhiều công trình nghiên cứu
và được xem là bài toán khó, nếu p được chọn cẩn thận Thực tế là không có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc Để gây khó khăn cho các phương pháp tấn công đã biết, p phải có ít nhất 150 chữ số và (p - 1) phải có ít nhất một thừa số nguyên tố lớn Lợi thế của bài toán logarithm rời rạc trong xây dựng hệ mật là khó tìm được các logarithm rời rạc, song bài toán ngược lấy luỹ thừa lại có thể tính toán hiệu quả theo thuật toán nhân và bình phương Nói một cách khác, luỹ thừa theo modulo p là hàm một chiều với các số nguyên tố p thích hợp
Elgamal đã phát triển một hệ mật khóa công khai dựa trên bài toán logarithm rời rạc Hệ mật Elgamal là một hệ mật không tất định, vì bản mã phụ thuộc cả vào bản rõ
x lẫn giá trị ngẫu nhiên do người thực hiện mã hoá chọn Bởi vậy, sẽ có nhiều bản mã được mã từ cùng một bản rõ Dưới đây ta sẽ nghiên cứu nguyên tắc làm việc của hệ mật Elgamal Bản rõ x được “che dấu” bằng cách nhân nó với k
Ví dụ, cho p = 2579, = 2, a = 765 Khi đó = 2765 mod 2579 = 949
Bây giờ người mã hoá muốn gửi đi thông báo x = 1299, và giả sử người đó chọn k=853 Sau đó tính:
Trang 18Ý tưởng của Elgamal là rất tổng quát Sự tham gia của số ngẫu nhiên a làm cho hệ mật có độ an toàn rất cao Các giải pháp tấn công bằng cách sử dụng cặp “văn bản nguồn – văn bản mã” là rất khó áp dụng
d) Hệ mật xếp balô Merkle – Hellman
Mô tả hệ mật:
Hệ mật xếp ba lô (Knapsack) Merkle – Hellman được đưa ra năm 1978 Mặc dù hệ mật này và một vài biến thể của nó đã bị phá vào đầu 1980 Hệ thống này xây dựng trên cơ sở bài toán tổng hợp tập con Bài toán quyết định tổng các tập con là một bài toán NP đầy đủ Điều đó có nghĩa là trong số các thuật toán khác nhau, không có một thuật toán với thời gian đa thức nào tìm được quyết định lựa chọn phù hợp Điều này cũng đúng với bài toán tìm tổng các tập con Song ngay cả khi một bài toán không có thuật toán giải với thời gian đa thức nói chung thì vẫn có những trường hợp nhất định
có thể giải với thời gian đa thức, điều này cũng đúng với trường hợp bài toán tổng các tập con
Giả sử với một danh sách các cỡ (s1, s2,…, sn) là một dãy siêu tăng, nếu:
S
với 2 j n Nếu danh sách là các dãy siêu tăng thì dạng tìm kiếm của bài toán tổng các tập con
có thể giải rất dễ dàng với thời gian O(n) và giải pháp x (nếu tồn tại) phải là giải pháp duy nhất
Giả sử dãy siêu tăng s = (s1, s2, , sn), xét hàm:
n
S e
x x
e
1 1
s , ,
Từ đó có thể dùng es như là một quy tắc để mã hoá Vì s là một dãy siêu tăng nên es
là một đơn ánh và thuật toán để giải trường hợp siêu tăng của bài toán tổng các tập sẽ
là thuật toán giải mã tương ứng Tuy nhiên một hệ thống như vậy sẽ hoàn toàn mất an toàn vì bất kỳ ai cũng có thể giải mã bản tin theo cách trên Vấn đề cơ bản ở đây là biến đổi danh sách cỡ theo cách nào đó sao cho nó không còn một dãy siêu tăng nữa Người nhận sẽ không thể áp dụng một phép biến đổi ngược để khôi phục lại danh sách siêu tăng các cỡ Mặt khác, người thám mã (không biết phép biến đổi được dùng của người mã), nghĩa là phải đối mặt nó với bài toán tổng quát (là bài toán khó của bài toán tổng các tập con)
Trang 19Một kiểu biến đổi thích hợp là phép biến đổi theo modulo, điều này có nghĩa là phép biến đổi modulo p được chọn sao cho:
n
i i
S p
S p
1 là một số nguyên tố và 1 a p – 1 Với 1 i n, ta xác định:
ti = aSi mod p và ký hiệu t = (t1,…, tn)
Giả sử p = {0,1}n, C = {0, …, n(p-1)} và cho k = {(s, p, a, t)}, trong đó s, a, p và t
là các số được xây dựng như trên, t được công khai, còn p, a, s được giữ bí mật
x x
e
1 1
Trang 20Z = a-1y mod p = 317 6665 mod 2003 = 1643
Tiếp đến, người nhận sẽ giải trường hợp I = (S1, S2, , Sn, Z) = (S, Z) của bài toán tổng hợp tập con bằng thuật toán giải trường hợp siêu tăng của bài toán tổng hợp tập con; cuối cùng, người nhận sẽ thu được bản rõ x = (1, 0, 1, 1, 0, 0, 1, 1, 1)
Bài toán này đã bị Shamir phá vào đầu năm 1980, dựa trên thuật toán quy hoạch nguyên của Lensha
e) Hê mật McEliece
Mô tả hệ mật:
Hệ mật McEliece sử dụng nguyên lý tương tự hệ mật Merkle – Hellman Phép giải
mã là một trường hợp đặc biệt của bài toán NP đầy đủ nhưng nó được nguỵ trang giống như trường hợp tổng quát của bài toán Trong hệ mật này bài toán NP được áp dụng là bài toán giải mã cho một mã sửa sai (nhị phân) tuyến tính nói chung Tuy nhiên, đối với nhiều lớp mã đặc biệt tồn tại các các thuật toán thời gian đa thức Một trong những lớp mã này là mã Goppa, chúng được dùng làm cơ sở cho hệ mật McEliece
Nhận xét:
Hệ mật McEliece là hệ mật khoá công khai dựa trên lý thuyết mã đại số đưa
ra vào năm 1978 Ý tưởng chủ đạo của khoá công khai loại này, trên thực tế
là vấn đề giải mã của mật mã tuyến tính bất kỳ là khó khăn Trong quá khứ,
đã có nhiều nghiên cứu nhằm phá vỡ lược đồ McEliece nhưng không ai trong họ thành công Theo đánh giá của McEliece, một mã sửa sai có năng lực tạo ra nhiều lớp mã khác nhau có thể sử dụng có hiệu quả trong việc xây dựng các hệ mật hiện đại
Hệ mật McEliece dùng mã Goppa có các nhược điểm: dung lượng khoá lớn (512 K); mã hoá và giải mã phức tạp; chưa có thuật toán tìm mã hữu hiệu
2 và RC4, v.v Nhược điểm chính của phương pháp này là khóa được truyền trên môi
Trang 21trường mạng nên tính bảo mật không cao Ưu điểm là tốc độ mã hóa và giải mã rất nhanh
Phương pháp mã hóa khóa công khai (public key cryptography) đã giải quyết được vấn đề của phương pháp mã hóa khóa bí mật là sử dụng hai khóa public key và private key Public key được gửi công khai trên mạng, trong khi đó private key được giữ kín Public key và private key có vai trò trái ngược nhau, một khóa dùng để mã hóa và khóa kia sẽ dùng để giải mã
Phương pháp này còn được gọi là mã hóa bất đối xứng (asymmetric cryptography)
vì nó sử dụng hai khóa khác nhau để mã hóa và giải mã dữ liệu Phương pháp này có rất nhiều thuật toán mã hoá khác nhau được sử dụng như hệ mật RSA (tên của ba nhà phát minh ra nó: Ron Rivest, Adi Shamir và Leonard Adleman), hệ mật RABTN, hệ mật ELGAMAL, hệ mật xếp ba lô Merkl – Hellman, hệ mật McEliece…
Mỗi kỹ thuật mật mã hóa khóa công khai có những đặc điểm riêng và có ưu điểm nhược điểm khác nhau tuỳ thuộc vào ứng dụng cụ thể Riêng RSA là một trong các giải thuật mã hóa bất đối xứng được dùng thông dụng nhất cho đến ngày hôm nay (ra đời năm 1977 tại MIT), RSA được đặt tên từ ba nhà khoa học phát minh ra nó: Ron Rivest, Adi Shamir, và Leonard Adleman Nó được dùng hàng ngày trong các giao dịch thương mại điện tử qua web browser (SSL), PGP, dùng cho chữ ký số (digital signature) đảm bảo tính toàn vẹn của các thông điệp khi lưu chuyển trên Internet, phân phối & cấp phát các secret keys…
RSA sẽ được trình bày chi tiết về thuật toán cũng như độ an toàn và ứng dụng trong thực tế tại chương 2
Trang 22CHƯƠNG 2 - HỆ MẬT MÃ KHOÁ CÔNG KHAI RSA
2.1 Giới thiệu hệ mật
Công trình của Diffie – Hellman năm 1976 đã mở đầu một cách tiếp cận mới để mã hoá và thực sự thách thức các nhà lập mã nghiên cứu các thuật toán mã hoá đáp ứng yêu cầu hệ mật khoá công khai Bằng cách sử dụng khoá lập mã và khoá giải mã khác nhau, hệ mật mã khoá công khai đã cung cấp đồng thời cơ chế truyền các thông báo bí mật không cần trao đổi trước khoá bí mật và sự áp dụng chữ ký điện tử Một trong số kết quả đầu tiên trả lời thách thức đó là nhóm tác giả Ron Rivest, Adi Shamir và Len Adleman công bố vào năm 1978 Nhóm tác giả đó đã giới thiệu phương pháp đầu tiên thực hiện hệ mật khoá công khai, hệ mật đó gọi là RSA - dựa trên cơ sở tính luỹ thừa trong số học modulo Tính mật của hệ dựa trên độ khó của phân tích ra thừa số nguyên
tố các số nguyên lớn Sau này nhiều hệ mật mã công khai đã phát triển, nhưng hệ mật RSA vẫn được người sử dụng tin dùng và có nhiều ưu điểm nổi bật nhất
Thuật toán RSA ([6], [8], [10], [11], [12], [13]) có hai khoá: khóa công khai và khoá riêng Mỗi khoá là một số cố định sử dụng trong quá trình mã hoá và giải mã Khoá công khai được công bố rộng rãi cho mọi người dùng để mã hoá Những thông tin được mã hoá bằng khoá công khai chỉ có thể được giải mã bằng khoá riêng tương ứng Nói cách khác, mọi người đều có thể mã hoá nhưng chỉ có người biết khoá riêng mới có thể giải mã được
Bài toán: A muốn gửi cho B một thông tin mật mà A muốn duy nhất B có thể đọc được Để làm được điều này, B gửi cho A một chiếc hộp có khoá đã mở và giữ lại chìa khoá A nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khoá lại (lúc này ngay cả A cũng không thể đọc lại hay sửa thông tin trong thư được nữa) Sau đó A gửi chiếc hộp lại cho B B mở hộp với chìa khoá của mình và đọc thông tin trong thư Trong ví dụ này, chiếc hộp với khoá mở đóng vai trò khoá công khai, chiếc chìa khoá chính là khoá riêng
Độ mật của RSA được dựa trên cơ sở là hầu như không có khả năng khôi phục hai
số nguyên tố p và q từ tích n = p.q của chúng ít nhất là theo với các thuật toán phân tích ra thừa số hiện đã biết Mặt khác, các số nguyên tố lớn ngẫu nhiên có thể được tạo sinh nhanh chóng
Hệ mật RSA ngày nay được sử dụng trong rất nhiều sản phẩm phần mềm, có thể dùng trao đổi khoá, chữ ký điện tử, mã hoá các khối nhỏ số liệu Hệ mật RSA sử dụng các tính toán trong Zn Hệ RSA sử dụng khối dữ liệu mã hoá kích thước thay đổi và khoá kích thước thay đổi Cặp khoá được lấy từ số nguyên rất lớn n = pq là tích của hai số nguyên tố q và q được chọn Các số nguyên tố p và q có thể dài tới trên 100 chữ
số RSA là mã khối, trong đó bản rõ, bản mã là các số nguyên từ 0 đến n – 1
Trang 23Khoá lập mã công khai dựa trên n, trong khi sự giải mã đòi hỏi biết p và q Ta sẽ chỉ ra rằng giải mã là dễ dàng, nếu ta có được thông tin cửa sập bí mật Có nghĩa là số
d được gọi là số mũ giải mã Biết về d có liên quan chặt chẽ với sự hiểu biết về p và q
2.2 Phương pháp lập mã và giải mã của hệ mật RSA
2.2.1 Thuật toán
a) Tạo khoá
Hệ mật RSA dựa trên phép tính luỹ thừa, dó đó để lập mã một thông báo M ta tiến hành như sau:
i) Chọn hai số nguyên tố lớn p và q (p q) , sau đó tính tích n = p.q
Chú ý: nên chọn p và q đủ lớn (p, q là các số nguyên tố dài cỡ ít nhất 100 chữ số thập phân) để không thể khôi phục p, q từ tích n = pq
i) Sử dụng khoá công khai của B là (n, e)
ii) Biểu diễn thông điệp dưới dạng số, giả sử là số nguyên m sao cho:
Trang 24Nên chọn e là số nguyên tố tuỳ ý không quá nhỏ Số e phải chọn cần thoả mãn 2e >n = p.q Nếu điều kiện này không thoả mãn thì có khả năng xảy ra trường hợp me<n, và như vậy để tìm ra m chỉ cần thực hiện phép “khai căn thông thường” bậc e của C vì khi ấy me mod n = me
c) Giải mã
Để được bản rõ P từ C, B phải làm như sau:
i) Dùng khoá riêng d của B tính m = Cd mod n
ii) Khôi phục thông điệp từ hàm ngược của hàm số hoá để có P
Hệ mật RSA có các đặc trưng sau:
Không cần phải thiết lập một kênh bảo vệ với những thể thức phức tạp, rườm rà để truyền khoá như trong hệ mã bí mật (hệ mật mã đối xứng)
Khóa mã hoá (n; e) là công khai, vì thế bằng cách đặt khoá này vào một địa chỉ được công bố công khai (không phải dùng một kênh truyền bí mật) Ta
đã biết: nếu có khoá công khai không dễ gì để tìm được khoá riêng d trong thời gian chấp nhận được vì vậy không cần phải dùng một kênh bí mật để truyền khoá
Cặp khoá công khai được tạo ra theo một phương pháp đặc biệt có quan hệ với nhau và được chọn trong nhiều khoá có thể (trong đó nếu khoá này dùng
để mã hoá thì khoá kia dùng để giải mã)
Dựa vào khoá công khai (n; e) để tính khoá riêng, khoá riêng d được tính bằng cách giải phương trình đồng dư e.d 1(mod (n)) Khoá cùng cặp (n; d) được giữ bí mật còn được gọi là khoá riêng Vậy ứng với một cặp p, q có thể chọn được nhiều bộ khoá công khai (n; e; d) theo quan hệ chỉ ra và vai
Trang 25trò của e và d có thể xem là tương đương Nếu (n; e) là công khai thì (n; d)
là khoá riêng và ngược lại nếu (n; d) là công khai thì (n; e) là khoá riêng
Mọi người trong hệ thống nếu nhận được bản mật C thì cũng không thể biết được bản rõ P Với việc chỉ biết khoá mã hoá ke và căn cứ vào các thông tin
về thuật toán thì không thể tìm ra khó giải mã kd trong thời gian chấp nhận được (kể cả dùng hệ thống hiện đại nhất để tính toán)
Ta sẽ chứng tỏ rằng, nếu biết số mũ mã hoá e không thể dẫn đến việc tìm được số
mũ giải mã d:
Thật vậy: Muốn tìm nghịch đảo d của e modulo (n) thì trước hết phải tìm được
(n), nhưng việc tìm được (n) không dễ hơn so với việc phân tích số n Bởi vì một khi đã biết n và (n) thì dễ dàng tìm được p và q
Khoá bí mật
P = d b
Khoá công khai
Hình 2.1: Quá trình mã hóa khóa công khai RSA
Trang 26i) Mỗi thành viên sinh một cặp khoá (n; e; d), một khoá dùng để mã hoá và một khoá dùng để giải mã các thông điệp
ii) Mỗi thành viên công bố khoá công khai của mình (n; e) cho các thành viên khác trong hệ thống biết Khoá cùng cặp (n; d) được giữ lại làm khoá riêng (dùng để giải mã thông điệp)
iii) A gửi thông điệp cho B thì A mã hoá thông điệp bằng khoá công khai (n; eb) của B
iv) Khi B nhận được thông điệp của A gửi, B giải mã thông điệp bằng khoá riêng (n; db) của mình Không một người nào khác có thể giải mã thông điệp ngoài B, vì chỉ có B mới biết khoá riêng của mình
Dựa vào thuật toán RSA đã mô tả trên ta thấy, để sinh được cặp khoá và thực hiện được các phép lập mã, giải mã ta phải giải quyết các bài toán sau đây:
Tìm các số nguyên lớn để lấy làm các giá trị p và q (mỗi số có độ lớn không
ít hơn 100 chữ số thập phân)
Thực hiện nhanh các phép toán số học trên các số rất lớn, đặc biệt là phép
mũ với số mũ lớn theo modulo n
Dùng giải thuật Euclidean mở rộng dễ dàng tính được d = 937
Vậy khoá công khai là cặp (n; e) = (2537; 13); khoá riêng là d = 937
Giả sử ta có thông điệp: “PUBLIC KEY CRYPTOGRAPHY”
Mã hoá thông điệp:
i) Sử dụng khoá công khai của B là (n; e) = (2537; 13)
ii) Số hoá thông điệp trên và nhóm lại thành từng khối có 4 chữ số (để P được
số hoá thành một số m trong khoảng 0 đến n-1)
Giả sử ta có:
Trang 27Ta phải chọn e sao cho :
1<e<11200 và không chia hết cho 2, 5, 7 thoả mãn 2e
> n chẳng hạn chọn e = 3533, khi đó d = e-1 (mod 11200) = 6597
Vậy ta có khoá công khai là (n; e) = (11413; 3533)
Khoá riêng là (n; d) = (11413; 6597)
Phép lập mã :
E(x) = xe = x3533 mod 11413
Trang 28Phép giải mã :
D(y) = yd = y6597 mod 11413
Nếu lấy x= 9726 ta có y = 5761
2.3 Độ an toàn của hệ mật RSA
Độ an toàn của hệ mật RSA ([2],[4],[6]) thể hiện qua hai yếu tố:
Tính mật của hệ RSA, chủ yếu dựa vào việc bảo vệ khoá riêng d và giữ bí mật các số nguyên tố p và q
Tính an toàn của hệ RSA dựa vào độ khó của bài toán RSA và độ phức tạp của bài toán phân tích một số thành các thừa số nguyên tố
Bài toán RSA là bài toán tính căn bậc e môđun n (với n là hợp số): tìm số m sao cho me=c mod n, trong đó (e, n) chính là khóa công khai và c là bản mã Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích n ra thừa số nguyên tố Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuật toán Nếu kẻ tấn công tìm được 2 số nguyên
tố p và q sao cho: n = pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1) và qua đó xác định d từ e Chưa có một phương pháp nào được tìm ra trên máy tính để giải bài toán này trong thời gian đa thức (polynomial-time) Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại (sự không tồn tại của thuật toán) Xem thêm phân tích ra thừa số nguyên tố về vấn đề này
Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số nguyên tố có
độ dài 663 bít với phương pháp phân tán trong khi khóa của RSA có độ dài từ 1024 tới
2048 bít Một số chuyên gia cho rằng khóa 1024 bít có thể sớm bị phá vỡ (cũng có nhiều người phản đối việc này) Với khóa 4096 bít thì hầu như không có khả năng bị phá vỡ trong tương lai gần Do đó, người ta thường cho rằng RSA đảm bảo an toàn với điều kiện n được chọn đủ lớn Nếu n có độ dài 256 bít hoặc ngắn hơn, nó có thể bị phân tích trong vài giờ với máy tính cá nhân dùng các phần mềm có sẵn Nếu n có độ dài 512 bít, nó có thể bị phân tích bởi vài trăm máy tính tại thời điểm năm 1999 Một thiết bị lý thuyết có tên là TWIRL do Shamir và Tromer mô tả năm 2003 đã đặt ra câu hỏi về độ an toàn của khóa 1024 bít Vì vậy hiện nay người ta khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bít
Năm 1993, Peter Shor công bố thuật toán Shor chỉ ra rằng: máy tính lượng tử (trên
lý thuyết) có thể giải bài toán phân tích ra thừa số trong thời gian đa thức Tuy nhiên, máy tính lượng tử vẫn chưa thể phát triển được tới mức độ này trong nhiều năm nữa Với người thám mã có thể tấn công vào hệ mã RSA theo các hình thức:
Vét cạn: không gian khoá của RSA là rất lớn vì vậy tấn công theo hướng này là không thể thực hiện được
Trang 29 Dựa trên cơ sở toán học để tìm cách phân tích modulus n thành các thừa số nguyên tố
Hệ RSA chỉ có khả năng bảo mật khi p, q là các số nguyên tố lớn (khoảng hơn 100 chữ số thập phân) và như vậy thì n có khoảng hơn 200 chữ số thập phân Để phân tích một số nguyên cỡ lớn như thế với các thuật toán nhanh nhất hiện nay cùng với hệ thống máy tính hiện đại nhất cũng mất hàng tỷ năm
Do tính đơn giản trong thiết kế nên RSA được ứng dụng rộng rãi và dùng nhiều nhất trong số các thuật toán với khoá công khai Và cũng chính vì thế nó đã trải qua nhiều thử thách, xem xét, kiểm chứng của cộng đồng về độ an toàn của nó Tuy nhiên, khi dùng RSA thì tốc độ mã hoá rất chậm, vì thế để mã hoá khối dữ liệu lớn là không khả thi Người ta đã tìm ra ứng dụng quan trọng độc đáo khác của RSA hơn là dùng nó
để mã hoá:
Tạo vỏ bọc an toàn cho văn bản: dùng RSA để mã hoá khoá bí mật (của các
hệ mật mã có tốc độ mã hoá cao như DES, IDEA…) và dùng khoá bí mật
đó để mã hoá dữ liệu, bên gửi chỉ gửi đến cho bên nhận một bộ: khoá bí mật được mã hoá bằng RSA và dữ liệu được mã hoá bằng khóa bí mật Như vậy các hệ mã đối xứng khắc phục tốc độ mã hoá của RSA, còn RSA khắc phục khâu yếu nhất của mã hoá đối xứng là bảo đảm chuyển giao an toàn chìa khoá mã cho người nhận
Xác thực chủ thể: Ta đã biết trong hệ mật mã khoá công khai thì mọi người đều biết khoá công khai của từng cá thể trong hệ thống, như vậy liệu có thể
có một cá thể này đã mạo danh một cá thể khác để gửi thông điệp đến một
cá thể thứ ba trong hệ thống, điều này hoàn toàn có thể xảy ra, vậy làm thế nào để thông điệp được gửi đi có một chữ ký xác nhận của người gửi, để người nhận có thể biết đích xác rằng mình nhận của ai và người gửi cũng không thể thoái thác được trách nhiệm của văn bản mình đã gửi đi (chẳng hạn như một đơn đặt hang với số lượng lớn), đây chính là vấn đề xác thực chủ thể trong trao đổi thông tin điện tử Hai chìa khoá công khai và khoá riêng trong hệ RSA là có vai trò “đối xứng” nhau theo nghĩa nếu cái này dùng để mã hoá thì cái kia được dùng để giải mã và ngược lại Vậy nếu A dùng khoá bí mật để mã hoá văn bản gửi đi thì B dùng khóa công khai của
A để giải mã văn bản, điều đó chứng tỏ A đã xác nhận ký vào văn bản
2.4 Quản lý khoá của hệ mật mã RSA
Một trong các vai trò chính của mã khoá công khai là giải quyết vấn đề phân phối khoá [3] Khi sử dụng mã hoá khoá công khai, chúng ta cần phân biệt hai khái niệm sau:
Phân phối các khoá công khai
Trang 30 Sử dụng mã hoá khoá công khai để phân phối khoá bí mật
2.4.1 Phân phối khoá công khai
Trong lịch sử mật mã đã có nhiều đề xuất về phương pháp phân phối khoá công khai, những phương án này có thể chia thành các nhóm sau:
Khai báo công khai
Sử dụng thư mục khóa công khai
Trung tâm quản lý khoá công khai
Sử dụng chứng chỉ khoá công khai
a) Phương pháp khai báo công khai
Đặc điểm của mã hoá khoá công khai là khoá công khai được công bố công khai
Do vậy, nếu có một thuật toán được chấp nhận rộng rãi, như RSA, bất kỳ thành viên nào cũng có thể thông báo khoá công khai của mình để cho các thành viên khác được biết
Giải pháp này là khá thích hợp, nhưng có nhược điểm là bất kỳ ai cũng có thể giả mạo một khoá công khai Có nghĩa là một người sử dụng nào đó có thể mạo danh cá thể B và gửi một khoá công khai cho các thành viên khác Các thành viên khác cứ tưởng đấy là khoá công khai của B nên đã gửi các thông điêp cho B (giả mạo), và như thế là kẻ giả mạo đàng hoàng đọc được hết các thông điệp mã hoá gửi cho B, ngoài ra còn có thể sử dụng các khoá giả xác thực cho đến khi cá thể B phát hiện ra sự giả mạo
đó và thông báo cho các thành viên khác
b) Phương pháp sử dụng thư mục công khai
Việc duy trì và tổ chức một thư mục công khai thuộc về một tổ chức được tin cậy nào đó Một lược đồ như vậy bao gồm các yếu tố sau:
Tổ chức có nhiệm vụ duy trì thư mục, mỗi thành viên có một entry (định danh, khoá) trong thư mục
Mỗi thành viên đăng ký một khoá công khai với tổ chức quản lý thư mục
Mỗi thành viên có thể thay thế một khoá công khai bất cứ lúc nào khi cảm thấy khoá riêng bị lộ
Cơ quan quản lý công bố toàn bộ thư mục và có nhiệm vụ cập nhật thư mục một cách định kỳ
Mọi thành viên đều có thể truy nhập vào thư mục bất cứ lúc nào, vì thế việc truyền thông xác thực an toàn (từ cơ quan quản lý đến các thành viên) phải mang tính bắt buộc
Trang 31c) Trung tâm quản lý khoá công khai
Việc phân phối khoá công khai được an toàn cao hơn nếu cung cấp các kiểm soát chặt chẽ khi phân phối khoá công khai từ thư mục
Một cơ quan trung tâm duy trì một thư mục khoá công khai Mỗi thành viên đều biết khoá công khai của trung tâm quản lý khoá công khai, nhưng chỉ có trung tâm này biết khoá riêng cùng cặp
Quá trình trao đổi thông tin bí mật diễn ra như sau:
i) A gửi một thông điệp có gán nhãn thời gian cho cơ quan quản lý khoá công khai, yêu cầu khoá công khai hiện thời của B
ii) Cơ quan quản lý trả lời bằng một thông điệp Thông điệp này được mã hoá bằng khoá riêng dauth của cơ quan quản lý bao gồm:
- Khoá công khai eb của B (A có thể dùng nó để mã hoá các thông điệp gửi cho B)
- Yêu cầu gốc (request) – A so khớp yêu cầu này với yêu cầu A đã gửi đi trước đó, nhờ đó A có thể biết yêu cầu gốc có bị sửa đổi trước khi cơ quan quản lý nhận được hay không
- Nhãn thời gian gốc – cho phép A xác định được rằng: đây không phải là một thông điệp cũ mà là thông điệp có chứa khoá công khai hiện thời của B
iii) A lưu giữ khoá công khai của B và sử dụng nó để mã hoá một thông điệp gửi cho B, thông điệp này chứa tên của A (IDA) và một giá trị (được gọi là nonce) N1 để nhận dạng giao dịch này
iv) B lấy khoá công khai của A từ cơ quan quản lý khoá (tương tự như A đã lấy khoá công khai của B)
Như thế là A và B đã chuyển giao khoá công khai một cách an toàn, và họ có thể gửi và nhận tin của nhau
Tuy nhiên hai bước sau đây được bổ sung thêm xem như là tuỳ chọn:
B gửi thông điệp cho A, thông điệp này được mã hoá bằng khoá ea và có chứa N1 của A và một nonce mới N2 do B sinh ra Do chỉ có B mới có thể giải mã thông điệp và sự có mặt của N1 trong thông điệp đảm bảo rằng B chính là người A đang liên lạc
A trả lại N2 cho B bằng khoá công khai của B, đảm bảo với B rằng A chính
là người đang liên lạc với B
Trang 32d) Phương pháp sử dụng chứng chỉ khoá công khai
Việc phân phối khoá công khai là khá hấp dẫn Tuy nhiên dễ bị giả mạo (do mỗi đầu vào bao gồm tên và khoá công khai trong một thư mục do cơ quan quản lý duy trì)
Một giải pháp mới lựa chọn là dùng chứng chỉ ([3],[10]) Các thành viên sử dụng chứng chỉ này để trao đổi khoá mà không cần liên lạc với cơ quan quản lý khoá công khai Mỗi chứng chỉ chứa một khoá công khai và các thông tin khác Nó được một cơ quan quản lý chứng chỉ tạo ra và phát hành cho các thành viên Mỗi thành viên thông báo khoá công khai của mình cho các thành viên khác thông qua chứng chỉ
Chứng chỉ được định nghĩa là một “tài liệu chứa một công bố được chứng thực, như là sự khẳng định đúng đắn về một điều gì đó” Trong lĩnh vực điện tử, chứng chỉ
là một tài liệu chứa một tập hợp thông tin có chữ ký số của một người có thẩm quyền
và người này được cộng đồng những người sử dụng chứng chỉ công nhận và tin cậy ([1],[3])
Chứng chỉ số là một tệp tin điện tử được sử dụng để nhận diện một cá nhân, một máy chủ, một công ty hoặc một vài đối tượng khác và gắn định danh của đối tượng đó với một khóa công khai Giống như bằng lái xe, hộ chiếu, chứng minh thư hay những giấy tờ nhận diện cá nhân thông thường khác, chứng chỉ số cung cấp bằng chứng cho
sự nhận diện của một đối tượng Hệ mã khoá công khai sử dụng chứng chỉ số để giải quyết vấn đề mạo danh
Để lấy được chứng chỉ số bạn cần phải thực hiện các công việc đăng ký họ tên, địa chỉ và những thông tin cần thiết khác với nơi được gọi là nhà cung cấp chứng chỉ số (CA), một tổ chức có thẩm quyền xác nhận định danh và cấp các chứng chỉ số Họ có thể là một thành phần thứ ba đứng độc lập hoặc các tổ chức tự vận hành phần mềm cấp chứng chỉ số của mình Các phương pháp để xác định định danh phụ thuộc vào các chính sách mà CA đặt ra Thông thường, trước khi cấp chứng chỉ số, CA sẽ công bố các thủ tục cần phải thực hiện cho các loại chứng chỉ số
Hệ thống chứng chỉ khoá công khai (CA) làm việc như sau: CA phát hành chứng chỉ cho những người muốn trao đổi tin mật Mỗi chứng chỉ gồm có một khoá công khai và thông tin nhận dạng chủ thể của chứng chỉ Chủ thể của chứng chỉ là cá thể nắm giữ khoá riêng tương ứng gọi là thuê bao của CA Các chứng chỉ được CA ký bằng khoá riêng của CA
Việc sử dụng chứng chỉ rất đơn giản, giả sử người sử dụng đã có khoá công khai
CA và anh ta tin tưởng CA phát hành chứng chỉ một cách hợp lệ Nếu cần khoá công khai của một người nào đó trong các thuê bao của CA anh ta chỉ việc lấy bản sao chứng chỉ của thuê bao đó và dùng khoá công khai cùa CA để kiểm tra chữ ký của CA
Trang 33Đặc trưng quan trọng của chứng chỉ là: “Các chứng chỉ có thể được phát hành mà không cần phải bảo vệ thông qua các dịch vụ an toàn truyền thông để đảm bảo bí mật, xác thực và tính toàn vẹn” Bởi vì các chứng chỉ có khả năng tự bảo vệ bằng chữ ký số của CA
Lợi ích của chứng chỉ khoá công khai là một người sử dụng có thể có được một số lượng lớn các khoá công khai của các thành viên khác một cách tin cậy chỉ cần thông qua khoá công khai CA
Tên thuật toán ký xác nhận
Tên người ký: tên của CA phát hành
Thời gian có hiệu lực: ngày bắt đầu và hết hạn của chứng chỉ
Định danh của người được chứng thực: chủ thể nắm giữ khoá riêng
Thông tin về khoá công khai của chủ thể được cấp giấy chứng nhận: khóa công khai và tên thuật toán sử dụng khoá công khai
Chữ ký (mã băm cho các trường dữ liệu, mã hoá chữ ký bằng khoá riêng) Chi tiết hơn về cấu trúc của X 509 có thể xem tại website:
http://www.ietf.cnri.reston.va.us/ids.by.wg/x.509.html
Các yêu cầu của lƣợc đồ trao đổi các chứng chỉ khoá công khai:
Một thành viên có thể đọc chứng chỉ để xác định tên và khoá công khai của
cá thể sở hữu chứng chỉ
Một thành viên có thể kiểm tra: nguồn gốc của chứng chỉ để biết nó có thể
bị giả mạo không
Chỉ có cơ quan quản lý chứng chỉ mới có thể tạo ra và cập nhật các chứng chỉ
Mọi thành viên có thể kiểm tra sự lưu hành của chứng chỉ
a u th , ,
Trong đó:
Trang 34dauth là khoá riêng của cơ quan quản lý chứng chỉ
T là thời hạn chứng chỉ có giá trị
IDA là định danh của cá thể A
ea là khoá công khai của A
A có thể chuyển chứng chỉ này cho các thành viên khác, thành viên này muốn biết khoá công khai của A thì kiểm tra chứng chỉ như sau:
lý chứng chỉ
2.4.2 Sử dụng mã hoá khoá công khai để phân phối khoá mật
Merkle đưa ra một lược đồ rất đơn giản: Nếu A muốn trao đổi thông tin mật với B, thủ tục được thực hiện tuần tự theo các bước sau:
i) A tạo ra một cặp khoá (ea, da) và truyền thông điệp cho B biết khoá công khai ea và tên của A (IDA)
ii) B tạo ra một khoá bí mật Ks, gửi khoá bí mật cho A: E e aK s
iii) A tính toán để biết khoá bí mật Ks bằng việc giải mã thông điệp
(như vậy chỉ có A và B biết được khoá Ks)
iv) A huỷ bỏ ea, da và B huỷ bỏ ea
Bây giờ A và B có thể trao đổi với nhau bằng khoá phiên Ks Sau khi trao đổi xong
cả A và B cùng huỷ bỏ KS, như vậy theo cách này thì việc đảm bảo bí mật là rất tốt vì trước và sau khi liên lạc không có khoá nào tồn tại Rủi ro lộ khoá là rất nhỏ Tại thời điểm này việc liên lạc là đảm bảo an toàn Đây là một giao thức hấp dẫn
Tuy nhiên, thủ tục này có điểm yếu là dễ bị tấn công chủ động Nếu một cá thể C chủ động muốn nghe trộm thông tin trao đổi giữa A và B, C sẽ tìm cách kiểm soát đường truyền thông giữa hai người C có thể dàn xếp cuộc truyền thông mà không bị phát hiện, theo hình thức sau đây:
i) A tạo ra một cặp khoá (ea, da) và truyền một thông điệp cho B, thông điệp là cặp (ea, IDA)
ii) C chặn lấy thông tin, tạo ra một cặp khoá (ec, dc) và truyền cho B một thông điệp là cặp (ec, IDA)
iii) B tạo ra một khoá bí mật KS, gửi khoá bí mật đó cho A: E c K s
Trang 35iv) C chặn lấy thông điệp, tính K s D d E c K s
Quá trình phân phối khoá bí mật bảo đảm tính bí mật và tính xác thực: Ở đây ta xem như A và B đã trao đổi khoá công khai mà trong các lược đồ trước đã nêu Các bước tiếp theo diễn ra như sau:
i) A sử dụng khoá công khai của B để mã hoá thông điệp gửi cho B:
ii) B gửi thông điệp cho A Thông điệp được mã hoá bằng ea N1 xác thực rằng
A đang liên lạc với B, N2 là giá trị nonce mới do B sinh ra
iii) A trả lại N2, được mã hoá bằng khoá công khai của B để đảm bảo rằng B đang liên lạc với A, đồng thời gửi khoá bí mật Ks do A sinh ra:
a
,2
iv) B tính toán D D C
b
d a
e để khôi phục khoá bí mật đồng thời xác thực rằng A đang làm việc với B
Lược đồ này đảm bảo tính tin cậy và xác thực trong trao đổi khoá bí mật
2.5 Các tấn công đối với hệ mật mã RSA
2.5.1 Tấn công trong quá trình tạo khóa
Việc tìm ra 2 số nguyên tố đủ lớn p và q thường được thực hiện bằng cách thử xác suất các số ngẫu nhiên có độ lớn phù hợp (dùng phép kiểm tra nguyên tố cho phép loại
bỏ hầu hết các hợp số)
p và q còn cần được chọn không quá gần nhau để phòng trường hợp phân tích n bằng phương pháp phân tích Fermat Ngoài ra, nếu p-1 hoặc q-1 có thừa số nguyên tố nhỏ thì n cũng có thể dễ dàng bị phân tích và vì thế p và q cũng cần được thử để tránh khả năng này
Bên cạnh đó, cần tránh sử dụng các phương pháp tìm số ngẫu nhiên mà kẻ tấn công
có thể lợi dụng để biết thêm thông tin về việc lựa chọn (cần dùng các bộ tạo số ngẫu nhiên tốt) Yêu cầu ở đây là các số được lựa chọn cần đồng thời ngẫu nhiên và không
dự đoán được Đây là các yêu cầu khác nhau: một số có thể được lựa chọn ngẫu nhiên (không có kiểu mẫu trong kết quả) nhưng nếu có thể dự đoán được dù chỉ một phần thì
Trang 36an ninh của thuật toán cũng không được đảm bảo Một ví dụ là bảng các số ngẫu nhiên
do tập đoàn Rand xuất bản vào những năm 1950 có thể rất thực sự ngẫu nhiên nhưng
kẻ tấn công cũng có bảng này Nếu kẻ tấn công đoán được một nửa chữ số của p hay q thì chúng có thể dễ dàng tìm ra nửa còn lại (theo nghiên cứu của Donald Coppersmith vào năm 1997)
Một điểm nữa cần nhấn mạnh là khóa bí mật d phải đủ lớn Năm 1990, Wiener chỉ
ra rằng nếu giá trị của p nằm trong khoảng q và 2q (khá phổ biến) và d < n1/4/3 thì có thể tìm ra được d từ n và e
Mặc dù e đã từng có giá trị là 3 nhưng hiện nay các số mũ nhỏ không còn được sử dụng do có thể tạo nên những lỗ hổng (đã đề cập ở phần chuyển đổi văn bản rõ) Giá trị thường dùng hiện nay là 65537 vì được xem là đủ lớn và cũng không quá lớn ảnh hưởng tới việc thực hiện hàm mũ
2.5.2 Tấn công liên quan đến tốc độ
RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật toán mã hóa đối xứng khác Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để
mã hóa văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn hơn nhiều so với văn bản)
Phương thức này cũng tạo ra những vấn đề an ninh mới Một ví dụ là cần phải tạo
ra khóa đối xứng thật sự ngẫu nhiên Nếu không, kẻ tấn công (thường ký hiệu là Eve)
sẽ bỏ qua RSA và tập trung vào việc đoán khóa đối xứng
2.5.3 Tấn công vào quá trình phân phối khoá
Cũng giống như các thuật toán mã hóa khác, 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 Quá trình phân phối khóa cần chống lại được tấn công đứng giữa (man-in-the-middle attack) Giả sử Eve
có thể gửi cho Bob một khóa bất kỳ và khiến Bob tin rằng đó là khóa (công khai) của Alice Đồng thời Eve có khả năng đọc được thông tin trao đổi giữa Bob và Alice Khi
đó, Eve sẽ gửi cho Bob khóa công khai của chính mình (mà Bob nghĩ rằng đó là khóa của Alice) Sau đó, Eve đọc tất cả văn bản mã hóa do Bob gửi, giải mã với khóa bí mật của mình, giữ 1 bản copy đồng thời mã hóa bằng khóa công khai của Alice và gửi cho Alice Về nguyên tắc, cả Bob và Alice đều không phát hiện ra sự can thiệp của người thứ ba Các phương pháp chống lại dạng tấn công này thường dựa trên các chứng thực khóa công khai (digital certificate) hoặc các thành phần của hạ tầng khóa công khai (public key infrastructure - PKI)
2.5.4 Tấn công dựa trên thời gian
Vào năm 1995, Paul Kocher mô tả một dạng tấn công mới lên RSA: nếu kẻ tấn công nắm đủ thông tin về phần cứng thực hiện mã hóa và xác định được thời gian giải
mã đối với một số bản mã lựa chọn thì có thể nhanh chóng tìm ra khóa d Dạng tấn
Trang 37công này có thể áp dụng đối với hệ thống chữ ký điện tử sử dụng RSA Năm 2003, Dan Boneh và David Brumley chứng minh một dạng tấn công thực tế hơn: phân tích thừa số RSA dùng mạng máy tính (Máy chủ web dùng SSL) Tấn công đã khai thác thông tin rò rỉ của việc tối ưu hóa định lý số dư Trung quốc mà nhiều ứng dụng đã thực hiện
Để chống lại tấn công dựa trên thời gian là đảm bảo quá trình giải mã luôn diễn ra trong thời gian không đổi bất kể văn bản mã Tuy nhiên, cách này có thể làm giảm hiệu suất tính toán Thay vào đó, hầu hết các ứng dụng RSA sử dụng một kỹ thuật gọi
là che mắt Kỹ thuật này dựa trên tính nhân của RSA: thay vì tính cd mod n, Alice đầu tiên chọn một số ngẫu nhiên r và tính (rec)d mod n Kết quả của phép tính này là rm mod n và tác động của r sẽ được loại bỏ bằng cách nhân kết quả với nghịch đảo của r Đỗi với mỗi văn bản mã, người ta chọn một giá trị của r Vì vậy, thời gian giải mã sẽ không còn phụ thuộc vào giá trị của văn bản mã
2.5.5 Tấn công lựa chọn thích nghi bản mã
Năm 1981, Daniel Bleichenbacher mô tả dạng tấn công lựa chọn thích nghi bản mã (adaptive chosen ciphertext attack) đầu tiên có thể thực hiện trên thực tế đối với một văn bản mã hóa bằng RSA Văn bản này được mã hóa dựa trên tiêu chuẩn PKCS #1 v1, một tiêu chuẩn chuyển đổi bản rõ có khả năng kiểm tra tính hợp lệ của văn bản sau khi giải mã Do những khiếm khuyết của PKCS #1, Bleichenbacher có thể thực hiện một tấn công lên bản RSA dùng cho giao thức SSL (tìm được khóa phiên) Do phát hiện này, các mô hình chuyển đổi an toàn hơn như chuyển đổi mã hóa bất đối xứng tối
ưu (Optimal Asymmetric Encryption Padding) được khuyến cáo sử dụng Đồng thời phòng nghiên cứu của RSA cũng đưa ra phiên bản mới của PKCS #1 có khả năng chống lại dạng tấn công nói trên
2.6 Kết chương
Trong mật mã học, RSA là một thuật toán mật mã khoá 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ã hoá 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 khoá 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 khoá đủ lớn
Tuy vậy, để các hoạt động trong thế giới số có được các điều kiện như hoạt động trong thế giới thực thì chúng ra cần có: Các chính sách bảo mật tạo ra khung pháp lý cho hoạt động mã hoá; các công cụ tạo lập; lưu trữ và quản lý khoá; các thủ tục tạo lập, phân phối, sử dụng khoá và chứng chỉ số Tức là, chúng ta cần cơ sở hạ tầng mã khoá công khai (PKI)
Một cơ sở hạ tầng mã khoá công khai là sự kết hợp giữa sản phẩm phần mềm, phần cứng, chính sách phục vụ và thủ tục Nó cung cấp nền tảng bảo mật cơ bản, cần thiết
để thực hiện các giao dịch, trao đổi thông tin PKI dựa trên cơ sở các nhận dạng số gọi
Trang 38là “chứng thực số” mà cơ chế hoạt động giống như “hộ chiếu điện tử” và ràng buộc chữ ký số của người sử dụng với khoá công khai của người đó
Như vậy, RSA là hệ mật khoá công khai thông dụng nhất hiện nay do tính đơn giản trong thiết kế, độ an toàn của nó đã được chứng minh trên cơ sở toán học bởi các chuyên gia đầu ngành Tuy nhiên, tốc độ mã hoá RSA là khá chậm nên người không dùng để mã hoá với khối dữ liệu lớn mà ứng dụng quan trọng độc đáo của nó là xác thực Chúng ta sẽ tìm hiểu ứng dụng quan trọng này ở Chương 3: Lược đồ chữ ký số RSA
Trang 39CHƯƠNG 3 - LƯỢC ĐỒ CHỮ KÝ SỐ RSA
3.1 Khái niệm chữ ký số
Khái niệm về chữ ký đã khá quen thuộc trong đời sống hàng ngày Chữ ký được sử dụng hàng ngày để viết thư, rút tiền ở nhà băng, ký hợp đồng, v.v Chữ ký viết tay thông thường trên tài liệu dùng để xác nhận một người ký nó
Lược đồ chữ ký số là một phương pháp ký một thông điệp lưu dưới dạng điện tử
Ví dụ như thông điệp được ký có thể truyền trên mạng máy tính
Giữa chữ ký tay và chữ ký số có một vài điều khác nhau cơ bản Cụ thể như sau:
Với chữ ký thông thường, nó là một phần vật lý của tài liệu Đối với chữ ký
số thì không gắn theo kiểu vật lý vào tài liệu mà gắn theo kiểu logic với tài liệu
Về việc kiểm tra chữ ký: Với chữ ký thông thường thì kiểm tra bằng cách so sánh nó với những chữ ký xác thực khác Ví dụ, một người ký trên một tấm séc mua hàng, người bán phải so sánh chữ ký trên mảnh giấy với chữ ký nằm ở sau thẻ tín dụng để kiểm tra Và ta có thể thấy đây không phải là phương pháp an toàn Mặt khác, lược đồ chữ ký số có thể được kiểm tra bằng cách sử dụng thuật toán kiểm thử công khai Vì vậy bất kỳ ai cũng có thể kiểm thử chữ ký số Việc dùng một lược đồ chữ ký số an toàn có thể ngăn chặn được khả năng giả mạo
Còn một sự khác nhau cơ bản giữa chữ ký số và chữ ký thông thường là bản sao chép của chữ ký số đồng nhất với bản gốc Còn của chữ ký thông thường có thể khác xa so với bản gốc Điều này có nghĩa là phải cẩn thận ngăn chặn một thông điệp chữ ký số khỏi bị dùng lại Ví dụ, nếu Bob ký bức điện số xác nhận Alice rút 100$ từ nhà băng, anh ta chỉ muốn Alice có thể làm điều đó một lần Vì vậy, cần nghiên cứu những phương pháp để ngăn chặn việc chữ ký số bị dùng lại
Một lược đồ chữ ký số bao gồm 2 phần: 1 thuật toán ký và 1 thuật toán kiểm thử Bob có thể ký trên thông điệp x bằng một thuật toán ký an toàn Kết quả của việc ký sig(x) có thể được kiểm thử bằng thuật toán công khai Khi đưa
1 cặp (x,y), thuật toán kiểm thử trả lại câu trả lời là “True” hoặc “False” phụ thuộc vào việc chữ ký số là xác thực hay không xác thực
3.2 Ứng dụng của chữ ký số
Do có những thuộc tính rất quan trọng nên chữ ký số đã được sử dụng trên thực tế trong nhiều ứng dụng khác nhau:
Trang 40 Hệ thống thư tín điện tử (electronic mail system): sau khi một bên tạo ra bản tin, bên đó có thể ký và gửi sang bên thứ hai, sau khi xác minh bản tin nhận được, bên thứ hai có thể tin tưởng rằng bản tin đã được ký bởi bên thứ nhất, bên thứ hai cũng sẽ biết rằng bản tin đã không bị thay đổi sau khi bên thứ nhất đã ký nó
Hệ thống chuyển tiền điện tử: chữ ký được sử dụng cho bản tin chuyển tiền trước khi nó được gửi đi và do vậy bên nhận sẽ xác minh được rằng bản tin nhận được là chính xác và yêu cầu chuyển tiền cũng không thể bị chối bỏ
Các ứng dụng thương mại: thanh toán điện tử, trao đổi thông tin điện tử, điền vào các bản tin thuế và các tài liệu pháp quy khác, bán hàng trực tuyến
và các giao dịch dùng card
Bầu cử số (digital voting): người dân xác minh rõ ràng rằng phiếu bầu thuộc
về họ, tránh việc bầu quá (over voting) Việc ứng dụng chữ ký số thúc đẩy phát triển Chính phủ điện tử
Phân phối phần mềm: một chữ ký số được áp dụng cho phần mềm sau khi
nó được hoàn thành và được chấp thuận để phân phát Trước khi cài đặt phần mềm trên một máy tính, chữ ký cần được xác minh để chắc chắn rằng không có sự thay đổi nào ngoài thẩm quyền (ví dụ như sự thêm vào của một viruts) Chữ ký số cũng được xác minh một cách định kỳ để chắc chắn sự toàn vẹn của phần mềm
Trong các ứng dụng cơ sở dữ liệu, sự toàn vẹn của thông tin lưu trữ trong cơ
sở dữ liệu thường là điều cốt yếu Thông tin có thể được ký khi được nhập vào cơ sở dữ liệu và khi được cập nhật hay sửa chữa và được xác minh tính toàn vẹn và sự thay đổi trước khi được hiển thị Một số ứng dụng đang được triển khai là bảo vệ các hồ sơ của bệnh nhân trong các hệ thống chăm sóc sức khỏe
Máy di động có thể là nơi chứa các chữ ký số, dùng để ký các hợp đồng, séc hoặc thanh toán điện tử (digital cash), các dịch vụ xác thực theo vị trí, v.v
3.3 Xác thực thông điệp
Xác thực thông điệp là một thủ tục nhằm kiểm tra các thông điệp nhận được, xem chúng có đến từ một nguồn hợp lệ và có bị sửa đổi hay không Xác thực thông điệp cũng có thể kiểm tra trình tự và tính đúng lúc Có nhiều kỹ thuật để xác thực thông điệp: Ngay trong hệ mã bí mật người ta cũng đã đề cập đến việc xác thực thông điệp, chữ ký số cũng là một kỹ thuật xác thực, nó cũng bao gồm nhiều biện pháp để chống lại việc chối bỏ đã gửi hay nhận thông điệp
Các hàm xác thực có thể được sử dụng để tạo ra dấu xác thực có thể chia thành ba loại: Mã hoá thông điệp, mã xác thực thông điệp và các hàm băm ([3], [10])