Lời giới thiệu
Trong cuộc sống hàng ngày, ta cần dùng chữ ký để xác nhận các văn bản tài liệu nào đó và có thể dùng con dấu với giá trị pháp lý cao hơn đi kèm với chữ ký.
Cùng với sự phát triển nhanh chóng của công nghệ thông tin, các văn bản tài liệu được lưu dưới dạng số, dễ dàng được sao chép, sửa đổi. Nếu ta sử dụng hình thức chữ ký truyền thống như trên sẽ rất dễ dàng bị giả mạo chữ ký.
Vậy làm sao để có thể ký vào các văn bản, tài liệu số như vậy? Giải pháp được đưa ra đó là Chữ ký số.
Chữ ký số (Digital Signature) hay chữ ký điện tử (Electronic Signature) là thông tin đi kèm theo dữ liệu nhằm mục đích xác nhận người chủ của dữ liệu đó. Chữ ký số được phát triển dựa trên lý thuyết mã hóa, cụ thể là kỹ thuật mã hoá công khai.
Trong chương này chúng ta sẽ tìm hiểu chữ ký số là gì, các yêu cầu của chữ ký số. Chúng ta sẽ tìm hiểu kỹ hơn về hai loại của chữ ký số đó là: Chữ ký số trực tiếp và chữ ký số có trọng tài.
Chúng ta sẽ tìm hiểu về các giao thức chứng thực chữ ký số, làm thế nào để biết chữ ký số này của ai, làm sao đảm bảo được tính xác thực của chữ ký. Ở phần này chúng ta sẽ tìm hiểu về hai phương pháp chứng thực đó là: Chứng thực lẫn nhau và chứng thực một chiều.
Phần thứ 3 chúng ta sẽ tìm hiểu về chuẩn chữ ký số (Digital Signature Standard) và thuật toán chữ ký số (The Digital Signature Algorithm).
Hai phần cuối cùng đó là một số trang web, tài liệu bạn có thể đọc để tìm hiểu thêm về dịch vụ này và phần thuật ngữ một số câu hỏi và một số vấn đề khác.
13.1 CHỮ KÝ SỐ
Các yêu cầu
Chữ ký số trực tiếp
Chữ ký số có trọng tài
13.2 CÁC GIAO THỨC CHỨNG THỰC
Sự chứng thực lẫn nhau
Sự chứng thực một chiều
13.3 CHUẨN CHỮ KÝ SỐ
Các phương pháp tiếp cận chữ ký số
Thuật toán chữ ký số
13.4 KHUYẾN CÁO ĐỌC VÀ CÁC TRANG WEB KHUYẾN CÁO
13.5 THUẬT NGỮ CHÍNH, MỘT SỐ CÂU HỎI VÀ MỘT SỐ VẤN ĐỀ
Một số thuật ngữ chính
Một số câu hỏi
Một số vấn đề
40 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2803 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đồ án Bảo mật thông tin - Chữ ký số và giao thức chứng thực, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lời giới thiệu
Trong cuộc sống hàng ngày, ta cần dùng chữ ký để xác nhận các văn bản tài liệu nào đó và có thể dùng con dấu với giá trị pháp lý cao hơn đi kèm với chữ ký.Cùng với sự phát triển nhanh chóng của công nghệ thông tin, các văn bản tài liệu được lưu dưới dạng số, dễ dàng được sao chép, sửa đổi. Nếu ta sử dụng hình thức chữ ký truyền thống như trên sẽ rất dễ dàng bị giả mạo chữ ký.
Vậy làm sao để có thể ký vào các văn bản, tài liệu số như vậy? Giải pháp được đưa ra đó là Chữ ký số.
Chữ ký số (Digital Signature) hay chữ ký điện tử (Electronic Signature) là thông tin đi kèm theo dữ liệu nhằm mục đích xác nhận người chủ của dữ liệu đó. Chữ ký số được phát triển dựa trên lý thuyết mã hóa, cụ thể là kỹ thuật mã hoá công khai.
Trong chương này chúng ta sẽ tìm hiểu chữ ký số là gì, các yêu cầu của chữ ký số. Chúng ta sẽ tìm hiểu kỹ hơn về hai loại của chữ ký số đó là: Chữ ký số trực tiếp và chữ ký số có trọng tài.
Chúng ta sẽ tìm hiểu về các giao thức chứng thực chữ ký số, làm thế nào để biết chữ ký số này của ai, làm sao đảm bảo được tính xác thực của chữ ký. Ở phần này chúng ta sẽ tìm hiểu về hai phương pháp chứng thực đó là: Chứng thực lẫn nhau và chứng thực một chiều.
Phần thứ 3 chúng ta sẽ tìm hiểu về chuẩn chữ ký số (Digital Signature Standard) và thuật toán chữ ký số (The Digital Signature Algorithm).
Hai phần cuối cùng đó là một số trang web, tài liệu bạn có thể đọc để tìm hiểu thêm về dịch vụ này và phần thuật ngữ một số câu hỏi và một số vấn đề khác.
CHƯƠNG 13. CHỮ KÝ SỐ VÀ GIAO THỨC CHỨNG THỰC
13.1 CHỮ KÝ SỐ
Các yêu cầu
Chữ ký số trực tiếp
Chữ ký số có trọng tài
13.2 CÁC GIAO THỨC CHỨNG THỰC
Sự chứng thực lẫn nhau
Sự chứng thực một chiều
13.3 CHUẨN CHỮ KÝ SỐ
Các phương pháp tiếp cận chữ ký số
Thuật toán chữ ký số
13.4 KHUYẾN CÁO ĐỌC VÀ CÁC TRANG WEB KHUYẾN CÁO
13.5 THUẬT NGỮ CHÍNH, MỘT SỐ CÂU HỎI VÀ MỘT SỐ VẤN ĐỀ
Một số thuật ngữ chính
Một số câu hỏi
Những điểm chính:
● Một chữ ký số là một cơ chế xác thực cho phép các tác giả của một tin nhắn có thể gắn một mã hoạt động như chữ ký. Chữ ký này được hình thành bởi lấy giá trị băm của thông điệp và mã hóa các tin nhắn với khóa bí mật của tác giả. Chữ ký bảo đảm nguồn và tính toàn vẹn của thông điệp.
● Giao thức xác thực chung cho phép các bên giao tiếp để đáp ứng tự lẫn nhau về danh tính của nhau và trao đổi khóa phiên.
● Trong giao thức xác thực một chiều, người nhận muốn một số bảo đảm rằng một thông báo là từ người gửi bị cáo buộc.
● Các chữ ký số tiêu chuẩn ( DSS ) là một tiêu chuẩn NIST sử dụng thuật toán hàm băm bí mật (SHA).
Một số vấn đề
13.1 CHỮ KÝ SỐ
YÊU CẦU
Một thông điệp xác thực được trao đổi giữa hai bên và được bảo vệ bởi một bên thứ ba. Tuy nhiên, nó không bảo vệ hai bên với nhau. Một vài hình thức tranh chấp có thể xảy ra giữa hau bên.
Ví dụ, giả sử John gửi một thông điệp xác nhận cho Mary, sử dụng một trong những phương pháp ở Hình 11.4. Ta xem xét một số tranh chấp có thể phát sinh.
1. Mary có thể giả mạo một thông điệp khác và nói rằng nó đến từ John. Mary chỉ đơn giản tạo một thông điệp và thêm vào mã xác thực bằng cách sử dụng khóa (key) mà John đã chia sẻ cho Mary.
2. John có thể phủ nhận đã gửi thông điệp. Bởi vì nó có thể là thông điệp giả mạo từ Mary. Trong thực tế không có cách nào chứng minh rằng John đã gửi thông điệp đó.
Cả hai trường hợp trên là mối quan tâm chính đáng có thể xảy ra . Ở đây ta có một ví dụ về trường hợp thứ nhất: Một giao dịch (chuyển tiền) điện tử diễn ra, và người nhận tăng số tiền trong giao dịch đó và tuyên bố rằng số tiền lớn đó là đến từ người gởi. Một ví dụ về trường hợp thứ hai là một thư điện tử có chứa thông điệp hướng dẫn việc môi giới chứng khoán cho một giao dịch mà hóa ra nặng. Người gửi giả vờ rằng thông điệp không bao giờ được gửi đi.
Trong trường hợp không có đủ sự tin tưởng giữa người gửi và người nhận, cần thêm một vài xác thực. Giải pháp tối ưu cho vấn đề này chính là chữ ký số. Chữ ký số là một dạng tượng tự với chữ ký tay. Nó phải có các thuộc tính sau đây:
Nó phải xác minh được tác giả, ngày tháng và thời gian của chữ ký.
Nó phải xác thực được nội dung tại thời điểm của chứ ký.
Nó phải được kiểm chứng từ bên thứ ba, để giải quyết tranh chấp.
Vì vậy, chức năng của chữ ký số bao gồm chức năng xác thực.
Trên cơ sở các đặc tính này, chúng ta có thể xây dựng các yêu cầu sau cho một chữ ký số:
Chữ ký số phải là một mẫu bit và phụ thuộc vào thông điệp đã được ký kết.
Chữ ký số phải sử dụng một số thông tin duy nhất từ người gửi, để ngăn ngừa giả mạo và từ chối từ hai phía.
Phải có phương pháp tương đối dễ dàng để tạo ra chứ ký số.
Phải có phương pháp tương đối dễ dàng trong việc nhận biết và xác minh chứ ký số.
Nó phải được tính toán sao cho việc giả mạo chứ ký số là không khả thi hoặc là bằng việc xây dựng một thông điệp mới cho một chữ ký số đã tồn tại hoặc xây dựng một chữ ký số giả mạo cho một thông điệp được gửi đi là không thể.
Nó phải thực hiện giữ lại lại một bản sao trong kho lưu trữ.
Một hàm băm bí mật, được nhúng trong chương trình như ở Hình 11.5c hoặc d, đáp ứng được những yêu cầu ở trên.
Một loạt các phương pháp tiếp cận đã được đề xuất cho chức năng của chữ ký số. Các phương pháp tiếp cận đó đó rơi vào một trong hai loại: trực tiếp (direct) và trọng tài (arbitrated).
CHỮ KÝ SỐ TRỰC TIẾP
Chữ ký số trực tiếp chỉ có liên quan đến việc giao tiếp (người gửi, người nhận). Nó giả định người nhận biết khóa công khai của người gửi. Một chữ ký số có thể được hình thành bằng cách mã hóa toàn bộ thông điệp bằng khóa bí mật của người gửi (Hình 11.1c) hoặc thông điệp được “băm” ra rồi mã hóa bằng khoá bí mật (Hình 11.5c).
Tính bảo mật có thể được cung cấp thêm với điều kiện là mã hóa toàn bộ thông điệp cộng với chữ ký của một trong hai, khóa công khai của người nhận ( khóa công khai mã hóa) hoặc một khóa bí mật đã được chia sẻ ( mã hóa đối xứng); ví dụ, nhìn Hình 11.1d và 11.5d. Lưu ý rằng điều quan trọng là thực hiện chức năng chữ ký đầu tiên sau đó mới là chức năng bảo mật bên ngoài. Trong trường hợp tranh chấp, một vài bên thứ ba sẽ phải xem thông điệp đó và chữ ký của nó. Nếu chữ ký là một thông điệp được mã hóa cẩn thận, sau đó bên thứ ba cần xác định khóa giải mã để đọc văn bản chính thức. Tuy nhiên, nếu chữ ký hoạt động bên trong sau đó người nhận có thể lưu trữ các thông điệp thô đó và ký nó sau sử dụng tranh chấp phân giải.
Tất cả các phương pháp được chia sẻ cho đến nay có một điểm yếu chung. Đó là hiệu lực của phương pháp này phụ thuộc vào độ bảo mật khóa chính của người gửi. Nếu người gửi sau đó muốn phủ nhận việc gửi tin nhắn, người gửi có thể nói rằng khóa bí mật của họ bị mất hoặc bị đánh cắp và có ai đó đã giả mạo chữ ký của họ. Điều khiển quản lý liên quan đến độ bảo mật của khóa riêng có thể được sử dụng để ngăn chặn hoặc ít nhất làm suy yếu những âm mưu này, nhưng mối nguy hiểm vẫn còn tồn tại, ít nhất là ở một mức nào đó. Một ví dụ kiểu như là yêu cầu mọi thông điệp đều đã được ký cần chứa một mốc thời gian (ngày và thời gian)và yêu cầu thong báo kịp thời khi khóa bị xâm nhập tới một cơ quan trung ương.
Mối nguy hiểm khác là một vài khóa bí mật có thể thực sự bị đánh cắp từ X tại thời điểm T. Các đối thủ có thể gửi một thông điệp đã ký chữ ký của X và đóng dấu trước thời điểm hoặc trùng với thời điểm T.
CHỮ KÝ SỐ CÓ TRỌNG TÀI
Các vẫn đề liên quan đến chữ ký số trực tiếp có thể giải quyết bằng cách sử dụng một trọng tài.
Như với phương pháp chữ ký trực tiếp, có một loạt các đề án để phán xét chữ ký đó. Nói chung tất cả đều hoạt động như sau. Mọi thông điệp được ký từ người gửi X tới người nhận Y trước tiên sẽ đi qua một trọng tài A. Người mà đối tượng thong điệp và nó đóng dấu một số để kiểm tra nguồn gốc và nội dung của thông điệp. Các thông điệp sau đó được gửi cho Y với một dấu hiệu cho biết cho biết đã có sự xác minh và hài lòng của trọng tài. Sự hiện diện của A giải quyết vấn đề đối diện của phương pháp chữ ký trực tiếp: X chịu thừa nhận tin nhắn.
Trọng tài đóng một vai trò nhạy cảm và rất quan trọng trong phương pháp sắp xếp, và tất cả các bên phải có một niềm tin tuyệt đối vào vào cơ chế giải quyết của trọng tài là đúng đắn. Việc sử dụng một hệ thống đúng đắn, được đề cập ở Chương 20 có thể đáp ứng các nhu cầu này.
Bảng 13.1, dựa trên tình huống được mô tả ở [AKL83] và [MIT92], đưa ra một số ví dụ về việc phân xử chữ ký số. Ở lần đầu tiên, mã hóa đối xứng được sử dụng. Nó giả định người gửi X và trọng tài A chia sẻ khóa bí mật Kxa và A và Y chia sẻ khóa bí mật Kay,. X xây dựng một thông điệp M và tính giá trị hàm băm của nó H(M). Sau đó X gửi thông điệp cộng với một chữ ký cho A. Chữ ký bao gồm một định danh IDx của X cộng với giá trị băm, tất cả được mã hóa sử dụng khóa Kxa. Giải mã chứ ký và kiểm tra giá trị băm để xác nhận tin nhắn. Sau đó A gửi một thông điệp cho Y, mã hóa với khoá Kay. Thông điệp bao gồm IDx, thông điệp chính thức từ X, chữ ký và một mốc thời gian. Y có thể giả mã để phục hồi lại thông điệp và chữ ký. Con dấu thời gian thông báo với Y rằng đây là một thông điệp kịp thời và không phải là thông điệp gửi lại. Y có thể lưu trữ M và chữ ký. Trong trường hợp tranh chấp, Y người tuyên bố đã nhận thông điệp M từ X, gửi qua A:
[1] Các định dạng sau được sử dụng. A giao tiếp từng bước trong đó P gửi một thông điệp M cho Q ký hiệu P à Q: M.
E(Kay, [IDX||M||E(Kxa, [IDX||H(M)])])
Trọng tài sử dụng Kay để phục hồi IDx, M, và chữ ký, và sau đó sử dựng Kxa để giải mã chữ ký và xác định mã băm. Trong phương pháp này này, Y không thể trực tiếp kiểm tra chữ ký của X; chữ ký ở đây là duy nhất để giải quyết tranh chấp. Y xem xét thông điệp gửi từ X là đáng tin cậy bởi vì nó được thông qua A. Trong tình huống này, cả hai bên phải có sự tin tưởng cao với A:
X phải tin tưởng A không tiết lộ Kxa và không sử dụng để tạo ra chữ ký giả cho mẫu E (Kxa, [IDx||H(M)]).
Y phải tin tưởng A gửi mẫu E(Kay, [IDX||M||E(Kxa, [IDX||H(M)])||T]) chỉ khi giá trị hàm băm là chính xác và chữ ký được tạo ra từ X.
Cả hai bên phải tin tưởng A giải quyết vấn đề tranh chấp một cách công bằng.
Nếu tồn tại sự tin tưởng vào trọng tài, thì sau đó X yêm tâm rằng không có ai có thể giả mạo chữ ký của mình và Y cũng yên tâm rằng X sẽ không chối bỏ chữ ký của X.
Các tình huống trước đó cũng có nghĩa rằng A có thể đọc những thông điệp từ X gửi cho Y, sự thực là, bất kì kẻ trộm nào cũng có thể làm điều đó. Bảng 13.1b cho thấy một tình huống cung cấp các trọng tài như trước nhưng vẫn đảm bảo được tính bí mật. Trong tường hợp này người ta giả định rằng X và Y chia sẻ khoá bí mật Kxy. Bây giờ X gửi một định danh, một bản copy của thông điệp đã được mã hóa bởi khóa Kxy, và một chữ ký tới A. Chữ ký bao gồm định danh cộng với giá trị băm của thông điệp đã được mã hóa, tất cả việc mã hóa sử dụng Kxa, Như trước, A giải mã chữ ký và kiểm tra giá trị băm để xác nhận thong điệp. Trong tình huống này A chỉ làm việc với phiên bản thông điệp đã được mã hóa và bị ngăn cản việc đọc nó. A sau đó sẽ truyền mọi thứ nó nhận được từ X, cộng với con dấu thời gian, tất cả mã hóa với khóa Kay tới Y.
Mặc dù không thể đọc thông điệp, nhưng người trọng tài vẫn có một vị trí quan trọng trong việc chống gian lận một phần nào đó từ X hoặc từ Y. Một vấn đề nữa, trong tình huống chia sẻ đầu tiên (giữa Sender và A), là trọng tài có thể liên minh với người gửi để từ chối một thông điệp đã được ký, hoặc với người nhận để giả mạo chữ ký của người gửi.
Tất cả những vẫn đề đã thảo luận có thể được giải quyết bằng cách sử dụng ý tưởng khóa công khai, một phiên bản của nó trong Bảng 13.1c. Trong tình huống này, X mã hóa hai lần một thông điệp M đầu tiên bằng khóa bí mật của X, PRx và sau đó với khóa công khai của Y, PUy. Đây là một chữ ký bí mật, phiên bản bí mật của thông điệp. Thông điệp này đã ký, với định danh của X, là mã hóa trở lại bằng PRx và, cùng với IDx, sau đó gửi cho A. Xét bên trong, thông điệp được mã hóa hai lần thì đảm bảo bí mật với trọng tài (và mọi người khác trừ Y). Tuy nhiên, A có thể giải mã những mã hóa bên ngoài để đảm bảo thông điệp phải được gửi từ X (bởi vì chỉ X có PRx). A kiểm tra để chắc chắn rằng cặp khóa bí mật/ khóa công khai của X vẫn còn hiệu lực, nếu có, xác minh tin nhắn. Sau đó A chuyển một thông điệp tới Y, mã hóa với PRa. Thông điệp này chứa IDx, thông điệp mã hóa hai lần, và một con dấu thời gian.
Đề án này có một số ưu điểm so vơi hai đề án trước đó. Đầu tiên, không có thông tin nào được chia se giữa các bên trước khi truyền thông, tránh việc liên minh để lừa gạt. Thứ hai không có sự sai lệch ngày gửi thông điệp. Thậm chí nếu PRx có bị hư hại, thì PRa cũng không bị ảnh hưởng. Cuối cùng nội dung tin nhắn từ X tới Y là bí mật với A và với bất kì ai khác. Tuy nhiên, đề án cuối cùng này liên quan đến việc mã hóa thông điệp lần thứ hai với thuật toán khóa công khai. Chúng ta sẽ thảo luận chi tiết hơn sau đó.
13.2 GIAO THỨC CHỨNG THỰC
Các công cụ cơ bản được mô tả ở Chương 11 được sử dụng trong một loạt các ứng dụng, bao gồm chữ ký số được thảo luận trong Mục 13.1. Ngoài ra còn rất nhiều ứng dụng khác và ngày càng tăng hơn nữa. Trong phần này chung tôi tập trung chủ yếu vào hai phần ( chứng thực lẫn nhau và xác thực một chiều) và kiểm tra một vài ảnh hưởng của hai kỹ thuật chứng thực nói trên.
CHỨNG THỰC CHUNG
Một khoảng ứng dụng chứng thực quan trọng đó là giao thức chứng thực chung. Giao thức này cho phép các bên truyền thông tự thỏa thuận với nhau về danh tính của nhau và trao đổi những khóa phiên (session keys). Chủ đề này được khảo sát ở Mục 7.3 (kỹ thuật đối xứng) và Mục 10.1 (kỹ thuật khóa công khai). Ở đây, trọng tâm là sự phân phối khóa. Chúng ta sẽ trở lại chủ đề này ngay sau đây để xem xét tác động rộng hơn của chứng thực.
Trọng tâm cho vấn đề chứng thực trao đổi khóa là hai vấn đề sau: tính bảo mật và tính kịp thời. Để ngăn chặn sự giả mạo và sự thỏa thuận trong các phiên khóa, mã nhận biết và thông tin phiên khóa phải được truyền trong một mẫu mã hóa. Điều này đòi hỏi sự tồn trại trước của khóa bí mật hoặc khóa công khai để có thể sử dụng cho mục đích này. Vấn đề thứ hai, tính kịp thời, rất quan trọng bởi vì mối đe dọa của thông điệp phản hồi. Một vài phản hồi, tồi tệ nhất có thể cho đối thủ thỏa hiệp một khóa phiên hoặc thành công trong việc mạo danh một bên khác. Ít nhất, một phản hồi thành công có thể làm gián đoạn hoạt động của các bên khi hiển thị với thông điệp xuất hiện thật nhưng không.
[GON93] danh sách các cuộc tấn công phản hồi:
Phản hồi đơn giản (Simple replay): Một đối thủ đơn giản là sao chép một thông điệp và phản hồi nó sau này.
Phản hồi có lưu lại (Repetition that can be logged): Một đối thủ có thể phản hồi một thông điệp tăng dần trong thời gian hợp lệ của cửa sổ.
Phản hồi không thể phát hiện: Tình trạng này có thể xảy ra khi thông điệp ban đầu có thể bị chặn và do đó không thể đến được đích, chỉ có thông báo phản hồi là tới nơi.
Phát ngược lại mà không sửa đổi: Đây là thông điệp được phát ngược trở lại người gửi. Kiểu tấn công này hiệu quả nếu thuật toán mã hóa đối xứng được sử dụng v à người gửi không thể dễ dàng nhận ra sự khác biệt giữa thông điệp đã gửi và thông điệp nhận lại cơ bản về nội dung.
Một cách tiếp cận để đối phó với các cuộc tấn công phản hồi đó là đính kèm một số thứ tự cho mỗi thông điệp sử dụng trong chứng thực hoán chuyển. Một thông điệp mới chỉ được chấp nhận nếu số thự tự của nó phù hợp. Cái khó của phương pháp này là nó đòi hỏi mỗi bên phải theo dõi số thự tự cuối cùng cho mỗi lần khiếu nại đã được xử lí. Bởi vì phí tổn này nên đánh số thứ tự thường không được sử dụng cho chứng thức và trao đổi khóa. Thay vào đó một trong hai phương pháp sau có thể thường được sử dụng.
Dấu thời gian: Bên A chỉ cấp nhận một thông điệp như mới nếu thông điệp đó chứa một dấu thời gian, trong phán xét của A, là đủ gần cho kiến thức của A trong thời gian hiện hành. Cách tiếp cận này đòi hỏi phải có sự đồng bộ giữa các bên.
Thách thức và phản ứng: Bên A, chờ đợi một thông điệp mới từ bên B, lần đầu gửi B một nonce (thử thách) và yêu cầu thông điệp tiếp theo (phản ứng) nhận được từ B chứa đúng giá trị nonce.
Nó có thể được lập luận (e.g…[LAM92a] rằng cách đánh dấu thời gian không nên sử dụng cho ứng dụng kết nối tin cậy bởi vì những khó khăn vốn có của kỹ thuật này. Đầu tiên, một số loại giao thức sắp xếp là cần thiết để duy trì đồng bộ hóa giữa các xung xử lí khác nhau. Giao thức này phải được cả hai chấp nhận có lỗi sai, và an toàn để đối phó với các cuộc đấu tranh của địch thủ. Thứ hai, cơ hội cho một cuộc tấn công thành công sẽ xuất hiện nếu có một sự mất mát tạm thời của sự đồng bộ kết quả từ sự thiếu sót trong cơ chế xung nhịp của một trong các bên. Thành ra bất kì thủ tục nào dựa trên dấu thời gian cũng phải cho phép của sổ có thời gian đủ lớn để phù hợp với sự chậm trễ của mạng nhưng cũng phải đủ nhỏ để giảm tối thiểu các cơ hội tấn công.
Mặt khác, các tiếp cận thách thức - phản ứng là không phù hợp với loại phi kết nối của ứng dụng bởi nó có chi phi của bước bắt tay trước bất kì một truyền thông phi kết nối, phủ nhận kết quả đặc trưng chính của giao dịch phi kết nối. Đối với các ứng dụng như vậy sự phụ thuộc vào máy chủ thời gian an toàn và nỗ lực thống nhất của mỗi bên để giữ cho xung trong đồng bộ hóa là cách tiếp cận tốt nhất. (ví dụ., [LAM92b]).
Phương pháp tiếp cận mã hóa đối xứng.
Như đã thảo luận ở Phần 7.3, một hệ thống hai cấp độ của mã hóa đối xứng có thể thường cung cấp bảo mật trong môi trường phân phối. Nhìn chung, chiến lược này liên quan đến việc sử dụng một trung tâm phân phối khóa đáng tin cậy (KDC). Mỗi bên trong mạng chia sẻ một khóa bí mật, như một khóa chủ, với KDC. KDC chịu trách nhiệm tạo ra các khóa sử dụng trong một thời gian ngắn trên một kết nối giữa hai bên, được biết như một là khóa phiên, và phân phối nhiều khóa bằng cách sử dụng khóa chủ để bảo vệ cho sự phân phối. Cách tiếp cận này thì khá là phổ biến. Một ví dụ, chúng ta có thể tìm thấy hệ thống Kerberos tại Chương 14. Các cuộc thảo luận trong mục này liên quan đến sự hiểu biết về cơ chế Kerberos.
Hình 7.9 minh họa một đề xuất ban đầu được đưa ra bởi Needham và Schroeder [NEED78] cho việc phân phối khóa bí mật sử dụng KDC, như đã đề cập ở Chương 7, bao gồm tính năng chứng thực. Giao thức có thể được tóm lược như sau:
Những khóa bí mật Ka và Kb đã được chia sẻ giữa A và KDC và giữa B và KDC. Mục đích của giao thức là phân phối một cách an toàn một khóa phiên Ks cho A và B. Một cách an toàn thu nhận lại phiên khóa mới ở bước 2. Thông điệp trong bước 3 có thể được giải mã, và do đó hiểu được, chỉ có B. Bước 4 đảm bảo sự hiểu biết của B về Ks, và bước 5 đảm bảo với B về sự hiểu biết của A bới Ks và đảm bảo với B là một thông điệp mới bởi vì việc sử dụng của nonce N2. Nhớ lại cuộc thảo luận của chúng ta ở Chương 7 mục đích của bước 4 và 5 là ngăn chặn sự một loại tấn công phản hồi. Đặc biệt, nếu đối phương có thể bắt được thông điệp ở bước 3 và phản hồi nó lại, điều này có thể làm gián đoạn hoạt động tại B.
Mặc dù quá trình bắt tay của bước 4 và 5, giao thức này vẫn dễ dàng bị tấn công từ một trong các cuộc tấn công phản hồi. Giả sử một đối thủ, X, đã có một thỏa hiệp của khóa phiên cũ. Phải thừa nhận rằng, đây là một sự xuất hiện khó hơn so với đối thủ chi quan sát và ghi chép lại ở bước 3. Tuy nhiên, nó là một nguy cơ bảo mật tiềm năng. X có thể đóng vai trò của A và lừa B sử dụng khóa cũ bằng cách phát lại ở bước 2. Trừ khi B nhớ vô thời hạn tất cả các khóa phiên trước đó đã sử dụng với A, B sẽ không thể phát hiện đây là một phản hồi phát lại. Nếu X có thể đánh chặn thông điệp bắt tay, ở bước 4, sau đó có thể mạo nhận phản ứng của A, ở bước 5. Từ điểm này, X có thể gửi tin nhắn giả mạo tới B để B tưởng rằng nó đến từ A sử dụng một khóa phiên chứng thực.
Denning [DENN81, DENN82] đề xuất khắc phục điểm yếu này bằng cách sử đổi giao thức Needham/Schroeder bao gồm việc bổ sung dấu thời gian ở bước 2 và bước 3. Đề nghị giả sử có các khóa chủ, Ka và Kb an toàn, và nó bao gồm những bước sau đây.
T là một dấu thời gian để đảm bảo với A và B rằng khóa phiên vừa mới được tao ra. A và B có thể xác minh dấu thời gian bằng cách kiểm tra.
|Clock T| < ∆t1 + ∆t2
∆t1 được ước tính thông thường là khoảng thời gian nằm giữa xung clock của KDC và xung clock của A hoặc B, ∆t2 được dự kiến là thời gian trễ trên mạng. Mỗi node (trạm) có thể thiết lập xung clock của mình dựa vào trạm được chọn làm nguồn. Bởi vì dấu thời gian T được mã hóa an toàn sử dụng khóa chính, do đó nếu một kẻ tấn cống ngay cả khi biết khóa phiên cũ cũng không thể thành công nếu tấn công và phản hồi lại tại bước 3 sẽ bị phát hiện bởi B, vì không phù hợp với dấu thời gian.
Nhận xét cuối cùng là: Tại bước 4 và 5 không có trong phần trình bày ban đầu [DENN81] nhưng được bổ sung trong [DENN82]. Những bước này xác nhận việc tiếp nhận khóa phiên tại B.
Giao thức Denning có vẻ như cung cấp mức độ an toàn cao hơn so sánh với giao thức Needham/Schroeder. Tuy nhiên mối quan tâm mới ở đây là: sơ đồ này yêu cầu sự tin cậy của xung clock được sử dụng để đồng bộ trên mạng. [GONG92] chỉ ra một nguy cơ. Nguy cơ này dựa trên thực tế rằng việc phân phối xung clock có thể không đồng bộ nếu bị tấn công hoặc xảy ra lỗi trên đồng hồ hoặc lỗi khi đồng bộ.[2] Một vấn đề xảy ra khi xung clock của người gửi vượt trước xung clock của người nhận. Trong trường hợp này kẻ tấn công có thể chặn các thông điệp từ người gửi và phát lại nó khi dấu thời gian của thông điệp phù hợp với dấu thời gian cùa phía nhận. Thông điệp phát lại này có thể cho kết quả không mong đợi (bị sai lệch). Gong đề cập đến cuộc tấn công gọi là suppres –replay attacks.
[2] Như những thứ có thể và đang diễn ra. Trong những năm gần đây, flawed chip được sử dụng trong một số máy tính và trong những hệ thống điện tử khác để quản lý thời gian. Chip này có xu hướng bỏ qua một ngày [NEUM90].
Một cách để ngăn chặn kiểu tấn công lặp lại yêu cầu các bên tham gia phải thường xuyên theo dõi xung clock của họ tương phản với xung clock của KDC. Một cách khác là tránh sự đồng bộ xung clock nếu không cần thiết, việc này dựa trên giao thức bắt tay và sử dụng nonces.Cách này không dễ bị tấn công lặp lại bởi vì nonce của người nhận sẽ được chọn trong tương lai và không thể đoán trước được người gửi. Giao thức Needham/Schroeder dựa vào một nonce duy nhất, như chúng ta đã biết đã có một lỗ hổng khác ở đây.
Trong [KEHN92] một ý tưởng được đưa ra tập trung vào vấn đề suppress-replay attacks và đồng thời khắc phục những vấn đề trong giao thức Needham/Schroeder. Sau đó một mâu thuẫn trong giao thức sau đó được ghi chú và một chiến lược nâng cao được trình bày trong [NEUM93.a]. [3] Giao thức như sau:
[3] Đó là điều khó khăn để có được sự thật.
Bây giờ chúng ta xem xét thứ tự các bước:
Khởi tại của trao đổi chứng thực bằng cách tạo ra một nonce, Na, cùng với định danh của nó được gửi tới B trong plaintext. Nonce này sẽ được gửi lại A trong một thông điệp được mã hóa bao gồm khóa phiên và đảm bảo tính kịp thời của A.
B sẽ yêu cầu tới KDC để nhận một khóa phiên nếu cần thiết. Thông điệp của nó tới B bao gồm định danh của nó và nonce, Nb nonce này sẽ được gửi trả lại cho B đính kèm trong thông điệp được mã hóa,cùng với khóa phiên và đảm bảo tính kịp thời của B. KDC dựa vào những thông tin này để cấp chứng chỉ cho A. Những thông tin này quy định cụ thể thứ tự nhận chứng chỉ, một chứng chỉ có một thời gian hết hạn và nonce nhận được từ A.
KDC sẽ gửi tới A nonce của B và những thông tin được mã hóa với khóa mà B chia sẻ với KDC. Những block server này xem như là những giấy phép để A có thể sử dụng trong những lần xác thực tiếp theo, sẽ được nhìn thấy ở phần sau. KDC cũng gởi tới A những thông tin được mã hóa với khóa bí mật dùng chung giữa A và KDC. Những block này xác nhận rằng B đã nhận được những thông điệp gửi đến từ A (IDB) và đây là các thông điệp kịp thời chứ không phải là thông điệp lặp lại (Na) và cung cấp với A khóa phiên (Ks) và giới hạn thời gian sử dụng của nó là (Tb).
A truyền chứng chỉ (ticket) tới B cùng với nonce của B , sau đó mã hóa với khóa phiên. Chứng chỉ cung cấp cho B cùng với khóa bí mật được sử dụng để giải mã E (Ks,Nb) dùng để khôi phục nonce.
Trong thực tế nonce của B được mã hóa với khóa phiên xác thực để thông điệp có thể đến từ A mà không bị replay (phát lại).
Giao thức cung cấp một sự an toàn, có nghĩa là thiết lập giữa A và B trong trong một phiên làm việc là an toàn với việc sử dụng khóa phiên. Hơn nữa, giao thức này cho phép A sở hữu một khóa để có thể sử dụng trong những lần xác thực tiếp theo, tránh sự liên tục liên lạc với máy chủ xác thực nếu không cần thiết. Giả sử rằng A và B thiết lập với nhau một phiên (làm việc) sử dụng giao thức đã nói ở trên và sau đó kết thúc phiên làm việc.
Sau đó, trong thời gian thiết lập kết nối của giao thức, A đề nghị một phiên làm việc mới với B. Giao thức sẽ xảy ra như sau:
Khi B nhận được thông điệp ở bước 1, nó xác minh chứng chỉ là chưa hết hạn. Các nonces N’a và N’b mới được tạo ra đảm bảo rằng mỗi bên không bị tấn công phát lại.
Trong tất cả các bước trên thời gian quy định trong Tb tương đương với xung clock của B. Vì vậy timestamp không yêu cầu đồng bộ, bởi vì B chỉ kiểm tra dấu thời gian do mình tạo ra.
Public-Key Encryption Approaches (Phương pháp mã hóa công khai)
Trong Chương 10 chúng ta đã xem xét một phương pháp sử dụng mã hóa khóa công khai cho mục đích phân phối khóa phiên (Hình 10.6). Giao thức này giả sử rằng mỗi bên sở hữu khóa công khai của nhau. Giả sử này có thể không thực tế:
Giao thức sử dụng dấu thời gian được cung cấp trong [DENN8]:
Trong trường hợp này, hệ thống trung tâm được xem như dịch vụ xác thực (AS), bởi vì nó không thực sự chịu trách nhiệm phân phối khóa bí mật. Thay vào đó, AS cung cấp chứng nhận khóa công khai. Khóa phiên được lựa chọn và được mã hóa bởi A; do đó, không có nguy hiểm nào tới AS. Dấu thời gian bảo vệ khóa khỏi sự tấn công lặp lại.
Giao thức này là nhỏ gọn (đơn giản), nhưng như đã nói ở trước việc yêu cầu đồng bộ của xung clock. Một phương pháp khác được đề xuất bởi Woo and Lam [WOO92a], sử dụng nonces. Giao thức bao gồm các bước sau:
Tại bước một, A thông báo với KDC về ý định muốn thiết lập một kết nối an toàn với B. KDC trả về cho A một bản so chứng nhận khóa công khai của B (bước 2). Sử dụng khóa công khai của B, A thông báo với B về đề nghị muốn giao tiếp với B và tới một nonce Na (bước 3). Tại bước 4, B yêu cầu KDC cho biết khóa công khai của A và yêu cầu một khóa phiên. B gửi cho KDC khóa phiên của A để KDC đóng dấu khóa phiên với nonce này, nonce được bảo vệ sử dụng khóa công khai của KDC. Tại bước 5 KDC gửi về cho một bản sao chứng nhận khóa công khai của A cộng thêm thông tin {Na, Ks,IDB}. Thông tin này cho biết Ks là khóa bí mật được sinh ra bởi KDC và thay cho B gắn nó với Na. Các ràng buộc giữa Ks và Na sẽ đảm bảo với A rằng Ks là đáng tin cậy. Trong bước 6 cả ba tham số {Na, Ks,IDB} sẽ được mã hóa sử dụng khóa bí mật của KDC, cho phép B xác minh rằng cả ba thông số này là của KDC, nó cũng được mã hóa sử dụng khóa công khai của B, vì vậy không có một đối tượng nào có thể sử dụng ba thông số này để cố gắng thiết lập một một kết nối giả mạo (gian lận) với A. Khóa phiên Ks sẽ được lấy lại để mã hóa Nb và trả nó về cho B. Điều này đảm bảo với B rằng khóa phiên đã được A biết đến.
Giao thức này có vẻ an toàn với các kiểu tấn công khác. Tuy nhiên tác giả đã tìm thấy lỗ hổng và gửi một phiên bản sửa đổi của thuật toán trong [WOO92b]:
Định danh của A, IDA, được têm vào các mục được mã hóa với khóa bí mật của KDC ở bước 5 và 6. Việc liên kết khóa phiên này (Ks) để xác định các bên sẽ tham gia vào phiên làm việc. Các tài khoản định danh IDA cho ta biết giá trị nonce Na trong thực tế được xem là duy nhất trong số các nonce được tạo bởi A, không bao gồm các nonce được tạo bởi tất cả các bên. Vì vậy cặp {IDA,Na} xác định duy nhất yêu cầu kết nối của A.
Trong hai ví dụ này và giao thức được mô tả trước đó. Giao thức này đã được chỉnh sửa và bổ sung để có được giao thức an toàn hơn. Những ví dụ này làm nổi bật những khó khăn trong lĩnh vực xác thực (ngay cả khi các giá trị nhận được là đúng).
SỰ CHỨNG THỰC MỘT CHIỀU
Một ứng của phương pháp này đang được phát triển phổ biến trong lĩnh vực thư điện tử. Lợi ích chủ yếu của xác thực một chiều trong thư điện tử là không nhất thiết người nhận và người gửi đều cùng online (có thể offline). Thay vào đó các e-mail được chuyển đến hộp thư điện tử của người nhận, nó sẽ được đặt vào vùng đệm cho đến khi người nhận sẵn sàng đọc nó. Các “envelope” hoặc tiêu đề của e-mail phải được trình bày rõ ràng, để thông điệp có thể được xử lý bởi giao thức e-mail khi lưu trữ và truyền thông, các giao thức e-mail như Simple Mail Transfer Protocol(SMTP) hoặc X.400. Tuy nhiên, ta thường mong muốn rằng các giao thức xử lý mail không truy xuất đến văn bản nguồn của thông điệp, bởi vì điều đó yêu cầu các giao thức xử lý mail phải đáng tin cậy. Vì vậy, thông điệp e-mail nên được mã hóa như vậy để các hệ thống xử lý mail không phải là chủ sở hữu của khóa giải mã.
Một yêu cầu thứ hai của xác thực là. Thông thường, người nhận muốn đảm bảo rằng thông điệp phải đến từ người gửi.
Symmetric Encryption Approaches (Phương pháp mã hóa đối xứng)
Sử dụng mã hóa đối xứng, việc phân quyền phân phối khóa được trình bày trong Hình 7.11 là không thực tế. Sơ đồ này yêu cầu người gửi, gửi đến người nhận một yêu cầu và chờ gửi về cho người người nhận một khóa phiên, khóa phiên này là duy nhất cho người yêu cầu nó.
Với một số cải tiến, chiến lược phân phối khóa KDC minh họa trong Hình 7.9 là một lựa chọn điển hình cho mã hóa thư điện tử. Bởi vì chúng ta muốn tránh yêu cầu người nhận (B) và người gửi A online cùng nhau, bước 4 và 5 bị loại ra. Đối với một thông điệp M, ta có thứ tự như sau:
Phương pháp này đảm bảo rằng chỉ duy nhất ngưới chờ nhận thông điệp mới có thể đọc được nó. Phương pháp này cũng cung cấp một mức độ xác thức mà người gửi là A. Như đã nói lúc trước, giao thức này không phát hiện kiểu tấn công lặp lại. Một phương pháp phòng chống là cung cấp một dấu thời gian cùng với thông điệp. Vì sự trì hoãn trong việc xử lý e-mail nên dấu thời gian có thể bị hạn chế khả năng.
Public-Key Encryption Approaches (Phương pháp mã hóa công khai)
Chúng ta tìm hiểu phương pháp mã hóa khóa công khai để phù hợp với dịch vụ thư điện tử, bao gồm sự mã hóa đơn giản toàn bộ thông điệp cho việc bảo mật (Hình 11.1b), xác thực (11.1c) và cả hai (11.1d). Những phương pháp này yêu cầu hoặc người gửi biết khóa công khai của người nhận (bảo mật), hoặc người nhận biết khóa công khai của người gửi (xác thực) hoặc cả hai biết khóa công khai của nhau (bảo mật và xác thực). Ngoài ra thuật toán khóa công khai phải được áp dụng một hoặc hai lần đối với những thông điệp dài.
Nếu bảo mật là quan trọng thì cách dưới đây hiệu quả hơn:
Trong trường hợp này, thông điệp được mã hóa một lần với khóa bí mật, nó cũng được mã hóa một lần với khóa công khai của B. Chỉ có B mới có thể sử dụng khóa bí mật tương ứng để khôi phục thông điệp bị khóa và sau đó sử dụng khóa này để giải mã thông điệp. Sơ đồ này hiệu quả hơn đơn giản chỉ là mã hóa toàn bộ thông điệp với khóa công khai của B.
Nếu xác thực là quan trọng hơn thì sử dụng chữ ký số là đủ, nó được trình bày như trong Hình 11.5c:
Phương pháp này đảm bảo rằng A không thể phủ nhận việc gửi thông điệp. Tuy nhiên kỹ thuật lại mở ra một kiểu tấn công mới. Bob gửi văn bản tới ông chủ Alice của mình để báo cáo rằng mình đang có một ý tưởng giúp tiết kiệm tiền cho công ty. Anh ta ký vào thông điệp chữ ký của mình và sau đó gửi nó tới hệ thống e-mail. Sau đó thông điệp sẽ được gửi tới mailbox của Alice. Nhưng giả sử rằng Max đã nghe được ý tưởng của Bob và lấy cắp được mail trong hàng đợi trước khi nó được chuyển. Anh ta tìm thấy thông điệp của Bob và gỡ chữ ký của Bob ra thay chữ ký của mình, sau đó chuyển thông điệp tới hàng đợi mail của Alice. Max đã ăn cắp ý tưởng của Bob.
Để tránh được điều này, cả thông điệp và chữ ký có thể được mã hóa với khóa công khai của người nhận:
Sơ đồ thứ hai yêu cầu B biết khóa công khai của A và và khóa là đúng đắn và kịp thời. Một cách hiệu quả được cung cấp để bảo đảm cho vấn đề này là sử dụng chứng nhận chữ ký số, được trình bày trong Chương 10. Chúng ta có như sau:
Ngoài việc gửi thông điệp, A còn gửi cho B chữ ký được mã hóa với khóa công khai của A và chứng chỉ của A. Chứng chỉ này được mã hóa với khóa bí mật của trung tâm xác thực. Bên nhận thông điệp trước hết sử dụng chứng chỉ để đạt được khóa công khai của người gửi và xác minh nó là đúng đúng đắn, sau đó sử dụng khóa công khai để xác minh thông điệp của chính nó (thông điệp vừa nhận được). Ngoài ra toàn bộ thông điệp có thể được mã hóa một lần với khóa bí mật; khóa bí mật cũng được truyền, mã hóa với khóa công khai của B. Phương pháp này được xem xét kỹ trong Chương 15.
13.3 DIGITAL SIGNATURE STANDARD
Viện tiêu chuẩn và công nghệ quốc gia (NIST) đã công bố chuẩn xử lý thông tin liên bang FIPS 186, nó được biết đến như là chuẩn chữ ký số (DSS). Chuẩn chữ ký số này được tạo ra bằng cách sử dụng thuật toán băm an toàn (SHA) được mô tả trong Chương 12 và trình bày một công nghệ chữ ký số mới, sử dụng thuật toán chữ ký số (DSA). DSS được đề xuất lần đầu tiên vào năm 1991 sau đó được sửa đổi để phù hợp với những thông tin phản hồi nhận được vào năm 1993. Có 1 phiên bản thử nghiệm vào năm 1996. Năm 2000 một phiên bản mở rộng của chuẩn này được ban hành có tên là FIPS 186-2. Phiên bản cuối cùng là sự kết hợp giữa thuật toán DSA dựa trên RSA và mật mã đường cong ellipse. Trong phần này chúng ta sẽ thảo luận về thuật toán DSS gốc.
The DSS Approach (Các phương pháp tiếp cận DSS)
DSS sử dụng một thuật toán được cung cấp chức năng duy nhất là chữ ký số. Không giống như RSA nó không được sử dụng để mã hóa hoặc trao đổi khóa. Tuy nhiên nó sử dụng kỹ thuật khóa công khai.
Hình 13.1 thể hiện sự tương phản của phương pháp DSS và RSA được sử dụng để tạo ra chữ ký số. Trong phương pháp RSA, thông điệp được ký là đầu vào của một hàm băm để tạo ra mã băm an toàn có chiều dài cố định. Mã băm này sau đó được mã hóa sử dụng khóa bí mật của người gửi để tạo chữ ký. Cả thông điệp và chữ ký sau đó được truyền đi. Người nhận sau đó nhận được thông điệp này và cũng tạo ra mã băm dựa trên thông điệp nhận được. Người nhận cũng sẽ giải mã chữ ký sử dụng khóa công khai của người gửi. Nếu việc tính toán mã băm giống với chữ ký được giải mã thì chữ ký được chấp nhận là có giá trị. Bởi vì chỉ có duy nhất người gửi có khóa bí mật và chỉ có duy nhất người gửi mới có thể tạo ra giá trị của chữ ký.
Hình 13.1 Hai phương pháp chữ ký số
Phương pháp DSS cũng sử dụng một hàm băm. Hàm băm được cung cấp như là đầu vào của hàm chữ ký cùng với giá trị k được tạo ra ngẫu nhiên là những thành phần của hàm chữ ký này. Hàm chữ ký cũng phụ thuộc vào khóa bí mật (PRa) của người gửi và đặt các tham số được biết đến này tới một nhóm các thông tin cơ bản. Chúng ta có thể xem xét những thiết lập để tạo thành khóa công khai toàn cục(PUg). Kết quả là một chữ ký bao gồm hai thành phần đặt tên là r và s.
[4] Nó cũng cho phép các tham số được thêm vào thay đổi với mỗi user để chúng là một phần khóa công khai của người sử dụng. Trong thực thế nhiều khả năng khóa công khai toàn cục sẽ được sử dụng tách biệt với khóa công khai của những người sử dụng.
Bên nhận thông điệp sẽ tạo ra mã băm dựa trên thông điệp nhận được. Mã băm này cùng với chữ ký là đầu vào của hàm xác minh chữ ký. Hàm xác minh cũng phụ thuộc vào khóa công khai toàn cục và khóa công khai của người gửi (PUa), khóa công khai và khóa bí mật được tạo ra bởi người gửi. Đầu ra của hàm xác minh là r (thành phần của chữ ký) nếu chữ ký là có giá trị. Chữ ký được nhận được là của người gửi vì chỉ có người gửi mới có khóa bí mật, mới có thể tạo ra được chữ ký hợp lệ.
Bây giờ chúng ta sẽ đi vào chi tiết của thuật toán.
The Digital Signature Algorithm (Thuật toán chữ ký số)
Thuật toán DSA dựa trên độ phức tạp của bài toán logarit rời rạc (trình bày trong Chương 8)
Và dựa vào hệ chữ ký Elgamal [ELGA85] và Schnorr [SCH91]
Hình 13.2 tổng quan về thuật toán. Có ba tham số dùng chung và được công khai cho một nhóm người dùng. Bao gồm số nguyên tố q 160 bit, tiếp theo là số nguyên tố p có độ dài trong khoảng 512 đến 1024 bits là ước số của q chia (p-1). Cuối cùng là g là kết quả của phép tính g = h(p1)/q mod p, trong đó h là một số nguyên có giá trị nằm giữa 1 và p-1 và g phải lớn hớn 1. [5]
[5]Trong lý thuyết số tính g dựa trên việc tính q mod p; xem lại Chương 8.
Hình 13.2 Thuật Toán Chữ Ký Số (DSA)
Global Public – Key Component
p
số nguyên tố thõa 2L-1 < p < 2L với 512 <= L <= 1024 và là bội số của 64
q
là ước số của (p-1) với 2159 < q < 2160 , chiều dài 160 bit
g
= h(p-1)/q mod p , với h là số nguyên bất kỳ 1< h < (p-1) sao cho
h(p-1)/q mod p > 1.
User’s Private Key
x
là số ngẫu nhiên hoặc chuỗi số ngẫu nhiên 0 < x < q
User’s Public Key
y
= gx mod p
User’s Per-Message Secret Number
k
là số ngẫu nhiên hoặc chuỗi số ngẫu nhiên 0 < k < q
Signing
r
= (gk mod p) mod q
s
= [k-1 (H(M) + xr)] mod q
Signature= (r,s)
Verifying
w
= (s’)-1 mod q
u1
= [H(M’)w] mod q
u2
=(r’)w mod q
v
= [(gu-1yu-2) mod p] mod q
TETS: v=r’
M
thông điệp được gửi
H(M)
hàm băm của M sử dụng thuật toán SHA
M’,r’,s’
các phiên bản nhận được của M, r, s
Với những số mà mình có, mỗi user sẽ sử dụng khóa bí mật của mình để tạo ra khóa công khai. Khóa bí mật x phải là một số phải là số có giá trị từ 1 tới (q -1) và nên chọn là số ngẫu nhiên hoặc là chuỗi số ngẫu nhiên. Khóa công khai được tính từ khóa cá nhân y= gx mod p. Việc biết x sau đó tính y thì đơn giản, nhưng khi biết y muốn tính x thì lại rất khó vì đó là bài toán logarit rời rạc của y và g mod p (đã xét trong Chương 8).
Để tạo chữ ký, user tính toán hai đại lượng r và s, hàm của khóa công bao gồm các thành phần (p, q, g), khóa bí mật của user (x), giá trị băm của thông điệp H(M), và một số k được chọn ngẫu nhiên và là duy nhất cho mỗi chữ ký.
Tại nơi nhận, việc xác thực được thực hiện như công thức trình bày trên Hình 13.2, phía nhận tạo ra một đại lượng v là một thành phần của hàm khóa công khai, khóa công khai của người gửi và giá trị băm của thông điệp nhận được. Nếu đại lượng v và r (thành phần của chữ ký) là giống nhau thì chữ ký là có giá trị (là chữ ký của người gửi).
Hình 13.3 miêu tả hàm ký và xác nhận (xác minh chữ ký).
Hình 13.3 miêu tả hàm ký và xác nhận.
Cấu trúc của thuật toán như trình bày trong Hình 13.3, khá thú vị. Lưu ý rằng việc kiểm tra dựa vào giá trị r (giá trị xác thực) mà không phụ thuộc vào các giá trị khác của thông điệp. Thay vào đó,r là hàm của k và ba thành phần của khóa công khai hay r = (gk mod p) mod q , s = ( k-1H(M) + xr) mod q) trong đó giá trị băm H(M), nghịch đảo của k, x.r là các đầu vào của hàm f1 .
Cấu trúc của hàm là để phía nhận có thể khôi phục r bằng cách sử dụng chữ ký và thông điệp đến, khóa công khai của người dùng, và khóa công khai toàn cục.
Việc kiểm chứng tại sao cho nếu v = r thì chữ ký được cho là đúng, nếu dựa vào các hướng dẫn trong Hình 13.2 và 13.3 thì sẽ không chứng minh được điều này. Nếu muốn giải thích rõ hơn thì độc giả tham khảo thêm tại website của ebook này.
Với độ khó của bài toán logarit rời rạc, rất khó để bên thứ ba có thể khôi phục k khi biết r hoặc khôi phục x từ s.
Một điểm đáng chú ý là việc tạo ra chữ ký chỉ yêu cầu tính toán (gk mod p). Bởi vì gia trị này không phụ thuộc vào thông điệp được ký, nó có thể được tính toán trước. Trong trường hợp này người sử dụng có thể tính toán lại r được dùng để ký các văn bản khi cần. Công việc lúc này chỉ khác trước là việc tính nghịch đảo của k là (k-1). Một lần nữa các giá trị này lại được tính toán lại.
13.4 KHUYẾN NGHỊ ĐỌC VÀ CÁC TRANG WEB KHUYẾN CÁO.
[AKL83] là một trang kinh điển thảo luận về chữ ký số vá còn có giá trị thực tế rất cao. Ngoài ra, còn có những trang trang khác cũng rất hay, xem tại [MITC92]
AKL83 Akl, S. "Digital Signatures: A Tutorial Survey." Computer, February 1983.
MITC92 Mitchell, C.; Piper, F. ; and Wild, P. "Digital Signatures." In SIMM92a].
Các trang web khuyến cáo
Digital Signatures: NIST là trang cung cấp thông tin về các phương pháp chữ ký số.
13. 5. THUẬT NGỮ CHÍNH, MỘT SỐ CÂU HỎI VÀ MỘT SỐ VẤN ĐỀ.
Thuật ngữ chính
Trọng tài
Chữ ký số có trọng tài
Chữ ký số trực tiếp
Chữ ký số
Thuật toán chữ ký số (DSA)
Chuẩn chữ ký số (DSS)
Xác thực lẫn nhau
nonce
Xác thực một chiều
Tấn công lặp lại
Ngăn chặn - tấn công lặp lại
Dấu thời gian
Câu hỏi ôn tập:
13.1 Danh sách hai tranh chấp nảy sinh trong hoàn cảnh việc xác thực thông điệp.
13.2 Các tính chất một chữ ký số cần phải có là gì?
13.3 Những yêu cầu của 1 chương trình chữ ký số cần phải đáp ứng là gì?
13.4 Sự khác nhau giữa chữ ký số trực tiếp và chữ ký số có trọng tài là gì?
13.5 Chức năng chữ ký và chức năng bảo mật được đưa vào thông điệp theo thứ tự nào? Và tại sao?
13.6 Một số mối đe dọa liên kết với một chương trình trực tiếp chữ ký số là gì?
13.7 Cho ví dụ về tấn công lặp lại.
13.8 Ba phương pháp chung để xử lý tấn công lặp lại.
13.9 Ngăn chặn-tấn công trở lại là gì?
Các vấn đề:
13.1 Sửa đổi chữ ký số của Bảng 13.1a và b để cho phép người nhận để kiểm chứng chữ ký.
13.2 Sửa đổi chữ ký số của Bảng 13.1c để tránh tăng gấp ba mã hoá của toàn bộ thông điệp.
13.3 Thảo luận ở Bảng 13.1c, đã nói rõ các liên minh để không thể lừa gạt được. Trong thực tế, có một khả năng. Mô tả nó và giải thích tại sao nó sẽ có sự tín nhiệm nhỏ rất chúng ta có thể một cách an toàn lờ đi.
13.4 Ở Phần 13.2, chúng tôi phác thảo kế hoạch khoá công khai dự kiến trong [WOO92a] cho phân phối của khóa bí mật. Các phiên bản sửa đổi bao gồm IDA trong các bước 5 và 6. Điều gì tấn công, cụ thể, là phản đối bằng cách sửa đổi này?
13.5 Giao thức tham khảo trong Vấn đề 13.1 có thể giảm từ bảy bước đến năm, có trình tự sau :
(1) A à B:
(2) B à KDC:
(3) KDC à B:
(4) B à A:
(5) A à B:
Hiển thị thông báo truyền ở mỗi bước. Gợi ý: Thông báo cuối cùng trong giao thức này giống như thông báo cuối cùng trong giao thức gốc.
13.6 Có tham khảo đến kìm nén - lặp lại tấn công mô tả trong Phần 13.2:
a. Hãy cho một ví dụ về một cuộc tấn công khi một bên là xung clock trước đó của KDC.
b. Hãy cho một ví dụ về một cuộc tấn công khi một bên là xung clock trước đó của một bên khác.
13.7 Có ba phương pháp điển hình để sử dụng như thách thức. Giả sử Na là một nonce tạo ra bởi A, A và B cùng chia sẻ khóa K, và f() là một chức năng chẳng hạn như tăng. Ba tập quán là:
Mô tả tình huống theo đó mỗi sử dụng thích hợp.
13.8 Tiến sĩ Watson kiên nhẫn đợi cho đến khi Sherlock Holmes kết thúc. " Một số vấn đề thú vị để giải quyết, Holmes? Ông ấy hỏi khi Holmes rời khỏi cuối cùng.
"Ôi, không chính xác. Tôi chỉ đã kiểm tra thư điện tử của tôi rồi làm một vài thí nghiệm mạng thay vì những hoá chất bình thường của tôi. Tôi có chỉ một khách hàng bây giờ và tôi đã giải quyết vấn đề của anh ấy. Nếu tôi nhớ chính xác, bạn từng đề cập khóa mật mã giữa sở thích kia của bạn, vì vậy nó có thể làm bạn quan tâm. "
"Ừm, Tôi chỉ là người chuyên về mật mã nghiệp dư, Holmes. Tất nhiên Tôi quan tâm đến vấn đề. Nó về là gì? "
"Khách hàng của tôi là ông Hosgrave, giám đốc của một ngân hàng nhỏ nhưng tiến bộ. Ngân hàng làm hoàn toàn trên máy vi tính và tất nhiên sử dụng mạng truyền thông rộng rãi. Ngân hàng đã sử dụng RSA để bảo vệ dữ liệu của mình và ký các văn bản kỹ thuật số được truyền đạt. Bây giờ ngân hàng muốn giới thiệu một số thay đổi trong thủ tục của nó, trong đó, nó cần phải kỹ thuật số ký một số văn bản do hai bên ký
Bên ký hiệp ước đầu tiên chuẩn bị tài liệu, tạo thành chữ ký của nó, và chuyển tài liệu cho bên ký hiệp ước thứ hai
Người ký thứ hai như là một bước đầu tiên phải xác minh rằng tài liệu đã thực sự có chữ ký của người ký tên đầu tiên. Sau đó kết hợp chữ ký của mình vào chữ ký của tài liệu để cho người nhận, cũng như thành viên nào của công chúng, có thể xác nhận rằng tài liệu đã thực sự có chữ ký của cả hai bên ký. Ngoài ra chỉ có người ký tên thứ hai có thể xác minh chữ ký của tài liệu sau bước (1), có nghĩa là người nhận (hoặc thành viên nào của công chúng) có thể chỉ để xác minh các tài liệu hoàn chỉnh với chữ ký của cả hai bên ký, nhưng không phải tài liệu ở dạng trung gian của nó, nơi chỉ có một bên ký kết đã ký tên vào nó. Hơn nữa, các ngân hàng muốn sử dụng các module hiện tại của mình có hỗ trợ RSA kiểu chữ ký số."
"Hm, Tôi hiểu như thế nào RSA có thể được dùng để ký theo số thức tài liệu vào lúc 1 giờ bên ký hiệp ước, Holmes. Tôi đoán bạn đã giải quyết được vấn đề của ông Hosgrave bởi khái quát thích hợp của RSA chữ ký số."
"Chính xác, Watson," Sherlock Holmes gật đầu. "Ban đầu, chữ ký kỹ thuật số RSA được hình thành bằng cách mã hóa các tài liệu của khoá giải mã tin của khóa 'd', và chữ ký có thể được kiểm chứng bởi bất cứ ai thông qua giải mã của nó bằng cách sử dụng mã hóa khóa công khai được biết đến khóa 'e'. Người ta có thể xác minh rằng chữ ký S được thành lập bởi có những người biết d, mà lẽ ra phải được bên ký hiệp ước duy nhất? Bây giờ các vấn đề của ông Hosgrave có thể được giải quyết trong cùng một cách bởi khái quát nhẹ của quá trình, đó là ..."
Kết thúc giải thích.
13.9 DSA xác định nếu quy trình thế hệ chữ ký dẫn đến giá trị của s = 0, một giá trị mới của k nên được tạo ra và chữ ký phải được tính toán lại. Tại sao?
13.10 Chuyện gì sẽ xảy ra nếu giá trị k được dùng tạo ra chữ ký DSA là làm hại?
13.11 Các tài liệu DSS bao gồm một thuật toán được đề nghị cho thử nghiệm một số cho tính nguyên tố, như sau:
1. [Chọn w] Cho w là một số nguyên lẻ ngẫu nhiên. Sau đó (w 1) thậm chí còn và có thể được thể hiện trong mẫu 2a m với m lẻ. Vậy là, 2a là bộ nguồn lớn nhất của 2 chia cho (w 1).
2. [Tạo b] Cho b là một số nguyên ngẫu nhiên trong khoảng 1 < b <w.
3. [Exponentiate] Đặt j = 0 và z =bm mod w.
4. [Done] Nếu j = 0 và z = 1, hoặc nếu z = w 1, sau đó w vượt qua thử nghiệm và có thể là số nguyên tố; đi đến bước 8.
5. [Chấm dứt] Nếu j > 0 và z = 1, sau đó w là không phải là số nguyên tố, chấm dứt thuật toán cho w.
6. [Tăng j] Đặt j = j + 1. Nếu j <a, thiết lập z = z2 mod w và đi đến bước 4.
7. [Chấm dứt] w không phải số nguyên tố, chấm dứt thuật toán cho w.
8. [Kiểm tra một lần nữa] Nếu đủ các giá trị ngẫu nhiên của b đã được thử nghiệm, sau đó chấp nhận w là số nguyên tố và chấm dứt thuật toán, nếu không, hãy xem bước 2.
a. Giải thích thuật toán công trình
b. Chỉ ra rằng nó tương đương với các bài kiểm tra Miller-Rabin được mô tả trong Chương 8.
13.12 Với DSS, vì giá trị của k được tạo ra cho mỗi chữ ký, ngay cả khi cùng một thông điệp được ký kết hai lần khác nhau, chữ ký sẽ khác nhau. Điều này không đúng với chữ ký RSA. Các ý nghĩa thực tiễn của sự khác biệt này là gì?
13.13 Xem xét các vấn đề của việc tạo ra các thông số tên miền cho DSA. Giả sử chúng ta có số nguyên tố đã được tìm thấy p và q sao cho q | (p 1).chúng ta cần tìm g thuộc Zp with g of order q mod p. Hãy xem xét hai thuật toán sau đây:
a. Chứng minh rằng giá trị trả về của thuật toán 1 có thứ tự q.
b. Chứng minh rằng giá trị trả về của thuật toán 1 có thứ tự q.
c. Giả sử P = 40193 và q = 157. Bạn mong bao nhiêu lần lặp lại vòng lặp?
Thuật toán 1 để làm trước khi nó tìm máy phát điện?
d. Nếu p là 1024 bit và q là 160 bit, bạn sẽ đề nghị dùng thuật toán 1 để tìm g phải không? Giải thích.
e. Giả sử P = 40193 và q = 157. Xác suất mà thuật toán 2 tính một máy phát điện trong vòng lặp đi lặp lại đầu tiên của nó là gì?
13.14 Ta thường có khuynh hướng cố phát triển phiên bản trên Diffie - Hellman điều đó có thể được dùng làm chữ ký số. Đây là cái mà là đơn giản hơn DSA và không đòi hỏi số ngẫu nhiên bí mật ngoài khóa riêng
Yếu tố công khai:
q số nguyên tố
α α < q và α là gốc nguyên thuỷ của q
Khóa riêng:
X X < q
Khoá công khai:
Y = aX mod q
Để đăng một thông điệp M, tính h = H (M), mã hàm băm của thông điệp. Chúng tôi yêu cầu gcd(h, q 1) = 1. Nếu không, phụ thêm hàm băm vào thông điệp và tính toán một hàm băm mới. Tiếp tục quy trình này cho đến mã băm được tạo ra tương đối cơ bản để (q 1). Sau đó tính Z để đáp ứng Z x h _ X (mod q 1). Chữ ký của thôgn điệp là aZ. Để xác minh chữ ký, người sử dụng xác nhận rằng Y = (AZ)h = AX mod q.
Kế hoạch này làm việc cho thấy rằng quy trình kiểm tra tạo ra bình đẳng nếu chữ ký là hợp lệ.
Chương trình này không thể chấp nhận bằng cách mô tả một kỹ thuật đơn giản để giả mạo chữ ký của người dùng trên một tin nhắn tùy ý.
13.15 Đề xuất đầu tiên cho kế hoạch chữ ký số sử dụng mã hoá cân đối được dựa trên những thứ sau đây: Để ký n - bit thông báo, người gửi phát sinh ngẫu nhiên trước khóa mật mã 56 -bit 2n :
k1, K1, k2, K2,..., kn, Kn
được giữ bí mật. Người gửi chuẩn bị trước hai bộ tương ứng tham biến việc làm hợp lệ 64 bit nonsecret, được công bố :
u1, V1, u2, V2,..., un, Vn and v1, V1, v2, V2,..., vn, Vn
vi = E(ki, ui), Vi = E(ki, Ui)
Các tin M được ký như sau. Đối với các bit thứ i của tin nhắn, hoặc ki hoặc Ki được đính kèm vào tin nhắn, tùy thuộc vào việc các bit tin là 0 hoặc 1. Ví dụ, nếu ba bit đầu tiên của tin nhắn là 011, sau đó ba phím đầu tiên của chữ ký là k1, K2, K3.
a. Làm thế nào xác nhận tin nhắn?
b. Kỹ thuật an toàn không?
c. Làm thế nào nhiều lần cùng một bộ khóa bí mật có thể được sử dụng an toàn cho các tin nhắn khác nhau?
d. Cái gì, nếu có, vấn đề thực tế cho phương pháp hiện nay?
TÀI LIỆU DỊCH
[1] Cryptography and Network Security, Fourth Edition – William Stallings.