2010-03-02 35 views
5

Giả sử chúng ta có Alice và Bob.Mã hóa không đối xứng hai chiều hoạt động như thế nào?

Alice gửi cho Bob một tin nhắn cô đã mã hóa bằng khóa công khai của Bob. Bob là người duy nhất có thể giải mã nó bằng cách sử dụng khóa riêng của mình. Nhưng làm thế nào anh có thể chắc chắn thông điệp đến từ Alice?

Giả sử anh trả lời, mã hóa thông điệp của mình bằng khóa công khai của Alice. Chỉ có Alice mới có thể giải mã thông điệp. Nhưng làm thế nào cô có thể chắc chắn nó đã được gửi bởi Bob?

Alice có phải thêm một số loại băm công khai vào thông điệp của cô để Bob có thể nói "Điều này chắc chắn đến từ Alice?"

Trả lời

5

Bob cũng có khóa công cộng của Alice, và Alice đã ký thư đó bằng khóa riêng của cô ấy. Bob sử dụng khóa công khai của Alice để xác minh chữ ký.

Chuyển ngược lại cho Alice để đảm bảo thư từ Bob.

Tất cả những gì bạn phải làm bây giờ là đảm bảo rằng Bob có khóa công khai thực sự của Alice chứ không phải một người được tiêm ở giữa.

+0

Vì vậy, bạn cần phải xác minh TẤT CẢ các byte của khóa công khai? Có một phần cụ thể của chìa khóa mà bạn có thể xem xét để đảm bảo rằng nó có thực sự giữa bạn hay không? Dấu vân tay có đủ để khớp không? – tbarbe

+1

Không, bạn sử dụng khóa công khai để giải mã băm của thông báo (chữ ký), sau đó băm thông điệp của chính bạn làm người nhận. Nếu băm phù hợp, thì bạn biết nó được gửi bởi Alice. http://en.wikipedia.org/wiki/Digital_signature – Nathan

+0

Ah vâng ... md5 hoặc SHA-1 - vâng? Vì vậy, một khi cert đến đích - cách xác minh tất cả ok là so sánh md5 và SHA-1 .... các chứng chỉ tôi có - hiển thị cả hai điều này ...và tôi đoán đây là những gì Im đọc về 'so sánh chúng ra khỏi ban nhạc' - có nghĩa là không làm điều đó trên một thiết lập không an toàn? – tbarbe

-1

Vì bạn giả định rằng khóa riêng tư thực sự là "riêng tư" - tức là, alice và bob không để lại khóa usb của chúng được cắm vào máy của chúng khi chúng rời khỏi cơ quan.

+0

Tôi đã tạo giả định đó ở đâu? – Amy

+0

"Bạn" không, tôi có nghĩa là "bạn" ngôn ngữ; và có bạn không sử dụng loại mã hóa này trừ khi có một kênh tin cậy giữa Alice và Bob mà cơ quan cấp chứng nhận là một cá thể gián tiếp. Peh, tôi không thể loại bỏ upvote của tôi cho câu hỏi của bạn. –

+0

Tôi không biết bạn đang làm gì. Câu hỏi đặt ra là xác minh nguồn gốc của thông điệp. Đọc lại câu cuối cùng trong câu hỏi và nhận thấy rằng câu trả lời của bạn không giải quyết được. Điều này không liên quan gì đến việc giữ chìa khóa an toàn. Câu trả lời của bạn cho nhận xét của tôi cũng không giải quyết được câu hỏi. Tại sao bạn trả lời? – Amy

9

Kịch bản bạn mô tả thực sự không cung cấp tính xác thực. Vì vậy, cả Alice và Bob không thể chắc chắn rằng họ đang nói chuyện với nhau. Kịch bản này chỉ cung cấp tính bảo mật và như vậy cũng không bí mật.

Bob sẽ phải tự xác nhận với Alice rằng khóa công khai mà anh cho là khóa công khai của Alice thực sự là của cô (bằng cách gọi cho cô và đọc nó ra và xác nhận bằng giọng nói của cô là Alice).

Sự cố này thường được giải quyết với bên thứ ba đáng tin cậy (Cơ quan chứng chỉ chẳng hạn như VeriSign) phát hành chứng chỉ nêu rõ ví dụ: Alice thực sự là chủ sở hữu của khóa công khai cụ thể này. Đây là cách nó được giải quyết trong các trình duyệt hiện đại và đây là cách tất cả các phiên SSL (với ngân hàng của bạn lựa chọn) làm việc. Tổ chức phát hành chứng chỉ ký chứng chỉ từ ngân hàng của bạn (nói rằng ngân hàng của bạn thực sự là chủ sở hữu khóa công khai mà chứng chỉ chứa) và trình duyệt của bạn có chứng chỉ đã được tích hợp từ tổ chức phát hành chứng chỉ (xây dựng chuỗi chứng chỉ có thể được xác minh).

Kịch bản bạn mô tả dễ bị tấn công bởi một cuộc tấn công MITM (Man-in-the-middle) và không thể giải quyết hoàn toàn bằng mã hóa khóa công khai.

1

Những gì bạn đang nói về rất rất rất lỏng lẻo trông giống như thực hiện một thuật toán mã hóa không đối xứng khác trong khuôn khổ .Net.

. Net sử dụng hai nhánh cho mã hóa không đối xứng !!!

  1. RSA ** Grand Mac daddy sử dụng cho tất cả các mục đích không đối xứng.
  2. DSA ** liên quan nhiều hơn đến việc sử dụng và tạo chữ ký kỹ thuật số để xác minh tác giả.

Cả hai đều Tóm tắt

Cả hai đều rất giống với nhau như thế nào họ làm việc và làm thế nào một nhà phát triển thực hiện chúng, nhưng bên dưới Tôi đã đọc rằng hai thuật toán rất khác nhau tồn tại.

Bạn đang nói tùy chọn 2.

Net cung cấp một lớp được gọi là DSACryptoServiceProvider cho phép bạn tag dữ liệu của bạn với một giá trị được thường được gọi là chữ ký.

Theo sách giáo khoa khóa học chính thức của MS, nó gần như hoạt động như thế nào.

dữ liệu >>> Hash Alg >>> Hash Value >>>>>>>>> Asymm' Alg >>>> Chữ ký PVT.KEY người gửi >>>

Dưới đây cho thấy cách Bob có thể kiểm tra để xem liệu Alice có thực sự là người gửi hay không.

Dữ liệu >>> Hash Alg >>> Giá trị băm || Giải mã Chữ ký < < < Asymm' Alg < < < Chữ ký < < < người gửi PUB.KEY ? ==?

Như bạn có thể thấy, Bob phải so sánh Chữ băm và Chữ ký được giải mã được tạo ra để xác minh rằng Alice là người gửi. Lớp DSACrypto có 4 phương thức mà có thể được sử dụng ở đây nhưng chỉ có hai phương pháp nói theo ngữ cảnh hiệu quả. Tại thời điểm này, đây là tất cả những gì Bob có thể làm, nếu khóa công khai của anh ta không phải là khóa công khai của alice, thì về cơ bản ứng dụng phần mềm sẽ ngăn Bob chết trong các bài hát của anh ta. cố giao tiếp với Alice. Đây là mối quan hệ được áp đặt và nhấn mạnh tầm quan trọng của khóa công khai. Chữ ký cho phép bạn xác minh chủ sở hữu khóa công khai.

Tại sao? ::

Nếu Bob có khóa công khai của Alice thì anh ta có thể sử dụng cùng một thuật toán lần nữa để giải mã dữ liệu được mã hóa bằng phương thức .VerifyHash hoặc VerifyData. Nên thẳng về phía trước những gì họ làm cho bối cảnh này. Tất cả điều này được thực hiện bằng cách sử dụng Khóa công khai của Alice. Chỉ Alice mới có thể sử dụng các phương thức SignHash và SignData khi chúng yêu cầu khóa riêng của Alice.

Như bạn có thể thấy ở trên, một mức chức năng nhất định được gói gọn trong các lớp DSA và RSA CryptoServiceProvider. Nó tóm tắt về việc bạn triển khai chúng như thế nào để xác minh Alice là người gửi mọi lúc vì thuật toán DSA cho phép bạn xác nhận người gửi bằng cách kết hợp đầu ra được tạo ra. Một chữ ký và băm nhất định phải khớp với nhau, nếu chúng thực chất thì DSA đã cấp cho bạn một mức độ bảo mật nhất định giữa Bob và Alice.

+0

Tôi hy vọng điều này có ý nghĩa khi nó đến từ một sinh viên đang cố gắng vượt qua kỳ thi 70-536. Như ở trên là câu trả lời thứ hai của hai câu trả lời tôi đã đăng ở đây trên tràn ngăn xếp liên quan đến Mật mã. – IbrarMumtaz

Các vấn đề liên quan