Đồ án Bảo mật thông tin Chữ ký số và giao thức xác thực chung

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.

 

docx40 trang | Chia sẻ: netpro | Lượt xem: 2711 | Lượt tải: 5download
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 xác thực chung, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 để

Các file đính kèm theo tài liệu này:

  • docxChu Ky So & Giao Thuc Chung Thuc.docx
  • pdfChu Ky So & Giao Thuc Chung Thuc.pdf
  • pptxChu Ky So & Giao Thuc Chung Thuc.pptx