2.3. Chữ ký số
2.3.3. Thực hiện chữ ký số khóa công khai
Chữ ký số khóa công khai dựa trên nền tảng mật mã hóa khóa công khai. Để có thể trao đổi thông tin trong môi trường này, mỗi người sử dụng có một cặp khóa: một công khaivà một bí mật. Khóa công khai được công bố rộng rãi còn khóa bí mật phải được giữ kín và không thể tìm được khóa bí mật nếu chỉ biết khóa công khai.
Toàn bộ quá trình gồm 3 thuật toán: - Thuật toán tạo khóa;
- Thuật toán tạo chữ ký số; - Thuật toán kiểm tra chữ ký số; 2.3.4. Chữ ký số RSA
2.3.4.1. Giới thiệu
Trong mật mã học, RSA là một thuật toán mậ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ý.
2.3.4.2. Hoạt động
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được. Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật.
2.3.4.3. Tạo cặp khóa
- Chọn bí mật số nguyên tố lớn p, q, tính n = p * q, công khai n, - Sao cho việc tách n thành p, q là bài toán khó. đặt P = C = Zn - Tính bí mật (n) = (p-1).(q-1).
- Chọn khóa công khai b < (n), nguyên tố cùng nhau với (n).
- Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b 1 (mod (n).
- Tập cặp khóa (bí mật, công khai) K = (a, b)/ a, b Zn , a*b 1 (mod (n)) .
2.3.4.4. Ký số
2.3.4.5. Kiểm tra chữ ký
Verk (x, y) = đúng x y b (mod n). 2.3.5. Lược đồ ký số RSA
Dữ liệu cần ký được băm thông qua một hàm băm (SHA-1 hoặc SHA-2). Dữ liệu băm được ký bởi khóa bí mật của người ký; khóa bí mật được lưu trong thiết bị lưu khóa. Để thuận tiện cho người xác thực dữ liệu, chứng thư số của người ký cũng được ghép với chữ ký đầu ra để người xác thực không phải tìm kiếm chứng thư số của người ký khi xác thực chữ ký.
-Người dùng truy câp vào khóa bí mật được lưu trực tiếp thiết bị lưu khóa (USB token). Để truy cập được vào thiết bị này người dùng phải tiến hành xác thực bằng mã số PIN.
-Áp dụng hàm băm lên tài liệu số.
-Mã hóa giá trị băm thu được bằng khóa bí mật để tạo chữ ký số cho tài liệu số.
-Gắn chữ ký số lên tài liệu số và gửi đi.
Bảng 2.6: Lược đồ ký số RSA 2.3.6. Lược đồ xác thực chữ ký RSA 2.3.6. Lược đồ xác thực chữ ký RSA
Dữ liệu gốc
Thuật toán băm
Dữ liệu tóm lược
Chữ ký số
Hàm băm RSA Chứng thư số
người ký ID người ký Khóa bí mật PKI Token Chứng thư số Kho chứng thư Ký số RSA Băm
Bảng 2.7: Lược đồ xác thực chữ ký RSA
2.3.7. Đánh giá độ chi phí, tốc độ và độ an toàn của thuật toán RSA 2.3.7.1. Chi phí và tốc độ thực hiện của thuật toán RSA 2.3.7.1. Chi phí và tốc độ thực hiện của thuật toán RSA
Chi phí: Để thực hiện thuật toán RSA phần lớn phải tốn chi phí thực hiện các phép tính cơ bản như: tạo khoá, mã hoá, giải mã. Quá trình mã hoá và giải mã tương đương với chi phí thực hiện các phép tính luỹ thừa module n. Để đảm bảo cho khoá bí mật được an toàn thì thường chọn số mũ công khai e nhỏ hơn nhiều so với số mũ bí mật d, do đó chi phí thời gian để thực hiện mã hoá dữ liệu nhỏ hơn nhiều so với thời gian giải mã.
Tốc độ của hệ RSA: Tốc độ của RSA là một trong những điểm yếu của RSA so với các hệ mã đối xứng, so với hệ mã DES thì RSA chậm hơn từ 100 đến 1000 lần, vì vậy RSA không được dùng để mã hoá khối lượng dữ liệu lớn mà thường dùng để mã hoá những dữ liệu nhỏ.
2.3.7.2. Độ an toàn
Độ an toàn của RSA được thiết kế dựa trên độ khó giải bài toán phân tích ra thừa số nguyên tố n = p*q với 2 số nguyên tố bí mật lớn p, q. Nếu ta chọn các số p, q khoảng 100 chữ số thập phân thì nó sẽ có khoảng 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 những máy tính hiện đại nhất cũng mất hàng triệu năm. Như vậy việc phân tích số nguyên n thành các thừa số nguyên tố
Dữ liệu gốc Dữ liệu tóm lược
mới
Chữ ký số
Hàm băm SHA Chứng thư số người ký ID người ký
Kho chứng thư
Chứng thư số người ký Khóa công khai
người ký Tóm lược gốc So sánh Xác thực Yes No Băm
p, q nhằm mục đích bẻ gãy hệ mật mã RSA là điều khó có thể tính toán nổi nếu như trong quá trình thiết kế hệ RSA ta chọn số nguyên N lớn.
Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA. Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với RSA. 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.
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).
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.
Năm 2010, các nhà khoa học thuộc Đại học Michigan đã công bố phát hiện một kẽ hở trong hệ thống mật mã hoá RSA. Cách phá vỡ hệ thống, lấy khoá bí mật RSA 1024 bit chỉ trong vài ngày thay vì vài năm nếu tấn công theo cách
thông thường - tấn công bằng brute force (dò tìm lần lượt). Các nhà khoa học tạo một điện thế lớn để gây lỗi hệ thống, từ đó giúp tìm ra khoá bí mật. Việc tấn công được thực hiện trên một FPGA. Báo cáo được trình bày tại hội nghị DATE 2010 diễn ra tại Dresden, Đức tháng 3 năm 2010.
2.3.7.3. Ứng dụng
RSA được sử dụng nhiều trong bảo mật thông tin trong thương mại điện tử. Nó cũng là cơ sở quan trọng để hình thành hạ tầng khóa công khai cho phép người sử dụng của một mạng công cộng như internet trao đổi dữ liệu một cách an toàn. Các ứng dụng chính của RSA là:
Tạo vỏ bọc an toàn cho văn bản Tạo chữ ký số cho văn bản Hạ tầng khóa Công khai
2.4. Hạ tầng khóa công khai (PKI)
2.4.1. Giới thiệu PKI
Một PKI (Public Key Infrastructure) cho phép người sử dụng của một mạng công cộng không bảo mật, chẳng hạn như Internet, có thể trao đổi dữ liệu và tiền một cách an toàn thông qua việc sử dụng một cặp mã khóa công khai và khóa cá nhân được cấp phát và sử dụng thông qua một nhà cung cấp chứng thực được tín nhiệm. Nền tảng khóa công khai cung cấp một chứng thư số, dùng để xác minh một cá nhân hoặc một tổ chức, và các dịch vụ danh mục có thể lưu trữ và khi cần có thể thu hồi các chứng thư số. Mặc dù các thành phần cơ bản của PKI đều được phổ biến, nhưng một số nhà cung cấp đang muốn đưa ra một chuẩn PKI riêng khác biệt. Một tiêu chuẩn chung về PKI trên Internet cũng đang trong quá trình xây dựng.
2.4.2. Chức năng của PKI
PKI cho phép những người tham gia xác thực lẫn nhau. Mục tiêu chính của PKI là cung cấp khóa công khai và xác định mối liên hệ giữa khóa và định dạng người dùng. Nhờ vậy người dùng có thể sử dụng trong một số ứng dụng như:
- Xác thực người dùng ứng dụng;
- Mã hóa, giải mã văn bản;
- Mã hóa Email hoặc xác thực người gửi Email;
- Tạo chữ ký số trên văn bản điện tử; 2.4.3. Các thành phần của PKI
- Cơ quan chứng thực Certificate Authority (CA): là một bên thứ 3 được tin cậy có trách nhiệm tạo, quản lý, phân phối, lưu trữ và thu hồi các chứng thư số. CA sẽ nhận các yêu cầu cấp chứng thư số và chỉ cấp cho những ai đã xác minh được nhận dạng của họ.
- Registration Authority (RA): đóng vai trò trung gian giữa CA và người dùng. Khi người dùng cần chứng thư số mới, họ gửi yêu cầu tới RA và RA sẽ xác nhận tất cả các thông tin nhận dạng cần thiết trước khi chuyển tiếp yêu cầu đó tới CA để CA thực hiện tạo và ký số lên chứng chỉ rồi gửi về cho RA hoặc gửi trực tiếp cho người dùng.
- Certificate Repository và Archive: có 2 kho chứa quan trọng trong kiến trúc của PKI. Đầu tiên là kho công khai lưu trữ và phân phối các chứng chỉ và CRL (chứa danh sách các chứng chỉ không còn hiệu lực). Cái thứ 2 là một cơ sở dữ liệu được CA dùng để sao lưu các khóa hiện đang sử dụng và lưu trữ các khóa hết hạn, kho này cần được bảo vệ an toàn như chính CA.
- Security Server: là một máy chủ cung cấp các dịch vụ quản lý tập trung tất cả các tài khoản người dùng, các chính sách bảo mật chứng thư số, các mối quan hệ tin cậy (trusted relationship) giữa các CA trong PKI, lập báo cáo và nhiều dịch vụ khác.
- PKI-enabled applications và PKI users: bao gồm các người dùng sử dụng các dịch vụ của PKI và các phần mềm có hỗ trợ cài đặt và sử dụng các chứng thư số như các trình duyệt web, các ứng dụng email chạy phía máy khách. 2.4.4. Mô hình hoạt động của PKI
Bảng 2.8: Mô hình PKI 2.4.4.1. Đăng ký và phát hành chứng thư số 2.4.4.1. Đăng ký và phát hành chứng thư số
Bảng 2.9: Quy trình đăng ký chứng thư số Các bước thực hiện đăng ký chứng thư số: Các bước thực hiện đăng ký chứng thư số:
- User gửi thông tin về bản thân tới RA để đăng ký. Thông tin này có thể là họ tên, số chứng minh thư, email, địa thư v.v..
- RA ký yêu cầu được chấp thuận và gửi thông tin về User đến trung tâm CA.
- CA tạo chứng thư trên khóa công khai, ký bằng khóa bí mật của CA và cập nhật chứng thư trên cơ sở dữ liệu LDAP, MySQL v.v..
- CA gửi chứng thư trở lại RA.
- RA cấp chứng thư cho người sử dụng. 2.4.5. Các chức năng cơ bản của PKI
2.4.5.1. Chứng thực
Chứng thực là chức năng quan trọng nhất của hệ thống PKI. Đây là quá trình ràng buộc khóa công khai với định danh của thực thể. CA là thực thể PKI thực hiện chức năng chứng thực.
2.4.5.2. Thẩm tra
Quá trình xác dịnh liệu chứng chỉ đã đưa ra có thể đuợc sử dụng đúng mục đích thích
hợp hay không được xem như là quá trình kiểm tra tính hiệu lực của chứng chỉ. 2.4.5.3. Một số chức năng khác
Hệ thống PKI thực hiện chức năng chứng thực, thẩm tra cùng với một số chức năng phụ trợ khác. Dưới đây là một số chức năng và dịch vụ được hầu hết các hệ thống PKI cung cấp. Một số những chức năng khác có thể được định nghĩa tuỳ theo yêu cầu cụ thể của các hệ thống PKI.
- Đăng ký.
- Khởi tạo ban đầu.
- Khôi phục cặp khóa.
- Tạo khóa.
- Hạn sử dụng và cập nhật khóa.
- Xâm hại khóa.
- Thu hồi.
- Công bố và gửi thông báo thu hồi chứng chỉ.
- Xác thực chéo. 2.4.6. Các mô hình của PKI
Một số mô hình tin cậy có thể được áp dụng hoặc được đề xuất sử dụng trong hạ tầng mã hóa công khai –PKI dựa trên x.509:
- Single CA Model (mô hình CA đơn)
- Hierarchical Model (Mô hình phân cấp)