6

Hai khách hàng Alice và Bob sử dụng máy chủ để đăng nhập và trao đổi tin nhắn thông qua máy chủ. Khi đăng nhập, cả hai đều gửi các khóa công khai của họ để được lưu trữ trên máy chủ. Khi Alice muốn nói chuyện với Bob, cô ấy thử một khóa đối xứng với khóa công khai của Bob và gửi nó cho Bob thông qua máy chủ.Ngăn chặn các cuộc tấn công MITM trên máy chủ

Làm cách nào để đảm bảo rằng máy chủ không tạo cặp khóa công khai của riêng nó và gửi cho Alice thay vì khóa công cộng của Bob. Bằng cách này, máy chủ đầu tiên sẽ giải mã những gì Alice đã gửi và mã hóa lại bằng cách sử dụng khóa công khai thực của Bob.

Cảm ơn

Trả lời

5

Vì Alice và Bob không thể tin tưởng máy chủ, họ phải tìm cách khác để xác nhận các khóa của nhau. Một khả năng là dựa vào một bên khác. Nếu Bob tin tưởng Candice (và biết khóa công khai của Candice), người biết Alice, Candice có thể ký vào khóa công khai của Alice rồi gửi phiên bản đã ký cho Bob. Điều này được gọi là web of trust.

+1

Candice? Hôm nay Trent có bị ốm không? – caf

+0

Ồ, và Candice không cần phải gửi phiên bản đã ký cho Bob - cô ấy có thể đưa nó cho Alice, người có thể chuyển nó cho Bob thông qua máy chủ không đáng tin cậy. Bob vẫn có thể xác minh chữ ký của Candice. – caf

0

Trừ khi bạn kiểm soát máy chủ bạn không thể. Trừ khi tất nhiên bạn đã biết khóa công khai của Bob nhưng sau đó .... Tôi nghĩ rằng bạn đang ở trong vấn đề gà và trứng ở đây.

5

Bằng cách có chứng chỉ của Bob được một bên thứ ba đáng tin cậy (Verisign, công ty của bạn, một trang web tin cậy, v.v.), hoặc bằng cách gửi giấy chứng nhận của mình cho Alice qua một đường dẫn an toàn riêng biệt (giao cho cô ấy một USB trong người ví dụ).

Cả hai điều này đều phù hợp với ý nghĩa của chứng chỉ của Bob. Bạn chỉ tin tưởng rằng chứng chỉ của Bob là chứng chỉ của Bob vì người bạn tin tưởng đã chứng nhận nó. Đó là "ai đó" có thể là chính Bob hoặc bên thứ ba đáng tin cậy ký giấy chứng nhận của Bob. Bạn chỉ có thể tin tưởng điều này nhiều như bạn tin tưởng người chứng nhận.

2

Trong mật mã học, bạn là những gì bạn biết. Nếu bạn muốn tránh MITM, thì Alice phải có khái niệm về "Bob" là ai, có nghĩa là Bob phải biết một số yếu tố dữ liệu mà kẻ tấn công không biết. Ở đây, kẻ tấn công của bạn là máy chủ, đó là vị trí lý tưởng để gắn kết một cuộc tấn công.

Câu hỏi đặt ra là: Bob là ai? Làm thế nào là máy chủ "không-Bob"?

Ví dụ: "Bob" có thể được định nghĩa là: "Bob là người có giấy phép lái xe có 'Bob' được viết trên đó". Hoặc: "Bob là anh chàng tôi đã gặp trong một quán bar và uống một ly bia".

Sử dụng mật mã không đối xứng cho phép bạn giảm sự cố với câu hỏi tin tưởng vào khóa công khai. Alice sẽ sử dụng những gì cô tin là chìa khóa công cộng của Bob. Do đó, Alice chỉ cần một số cách để đảm bảo rằng khóa công khai mà cô có thực sự thuộc sở hữu của Bob. Quyền sở hữu khóa công khai được xác định bởi sự kiểm soát của khóa riêng tương ứng: Khóa công khai của Bob là khóa mà khóa riêng nằm dưới sự kiểm soát độc quyền của Bob (ví dụ: chỉ Bob biết khóa đó hoặc khóa riêng nằm trong mã thông báo phần cứng - một thẻ thông minh - mà Bob giữ trong ví của mình).

Giải pháp cơ bản là trao đổi trực tiếp khóa công khai. Khi Alice gặp Bob trong một quán bar, họ đã cho nhau chìa khóa công khai của họ. Do đó, Alice có thể tin tưởng khóa công khai của Bob "theo định nghĩa". Để trao đổi dễ dàng hơn (đặc biệt là sau một vài loại bia), Alice và Bob chỉ có thể trao đổi "dấu vân tay", tức là giá trị băm được tính trên các khóa công khai. Các giá trị này ngắn hơn khóa công khai (ví dụ: 128 bit, thay vì nhiều hơn một nghìn bit cho khóa công khai RSA điển hình) và đủ để xác minh mà một khóa công khai đã khớp. Trong thiết lập đó, máy chủ có một kho lưu trữ cho khóa công khai, và Alice và Bob chỉ recompute dấu vân tay để đảm bảo rằng máy chủ không chơi trò chơi giả mạo.

Giải pháp nâng cao hơn, làm giảm nhu cầu tiêu thụ rượu trực tiếp, là sử dụng chứng chỉ. Chứng chỉ là một hộp có chứa thông tin nhận dạng (ví dụ: tên, chẳng hạn như "Bob") và khóa công khai. Hộp được ký bởi một cơ quan cấp chứng nhận (CA): CA xác nhận rằng khóa công khai thực sự thuộc về Bob, bằng cách áp dụng chữ ký của nó. Nếu Alice biết khóa công khai CA, thì cô ấy có thể xác minh chữ ký trên chứng chỉ và sau đó lấy được sự tin cậy trong liên kết giữa khóa công khai và danh tính có trong chứng chỉ.

Giấy chứng nhận là ủy thác tin cậy. Alice đại biểu sự tin tưởng của cô ấy đối với CA; được cho là, CA (gọi nó là Charlie) đi đến quán bar để gặp Bob; thông qua giấy chứng nhận, Charlie nói với Alice: "yeah, đó thực sự là chìa khóa của Bob, anh ấy đã đưa nó cho tôi sau lần thứ ba của anh ấy". Mọi thứ trở nên hơi u ám ở đây, bởi vì ủy thác sự tin tưởng là không dễ dàng (đặc biệt là nếu Charlie có thói quen say rượu). Phái đoàn có thể đi xa hơn, khi một CA ký giấy chứng nhận cho một CA khác. Ở đây, Charlie nói với Alice: "Tôi chưa gặp Bob, nhưng tôi đã gặp Daphne, người có thể gặp Bob và hành động như một CA". Alice, sử dụng cả chứng chỉ do Charlie cấp cho Daphne và chứng chỉ do Daphne gửi cho Bob, có thể xác minh rằng chuỗi chữ ký.

Điểm khó khăn ở đây là trong khi Alice có thể biết Charlie và tin tưởng anh ta trong khả năng xác định đúng Bob khi anh gặp anh ta, ngay cả dưới ảnh hưởng của một gallon Guinness, Alice không biết Daphne. Trong chuỗi Alice-Charlie-Daphne-Bob, Alice không chỉ tin tưởng Charlie đáng tin cậy (anh ta đã làm xác định Daphne đúng cách) nhưng Charlie cũng không tin, tức là Charlie sẽ từ chối ký giấy chứng nhận cho Daphne nếu Daphne không phải là bản thân đáng tin cậy. Trong các tình huống thực tế, sự tin tưởng nhanh chóng suy giảm khi nó được ủy nhiệm.

Khi sử dụng giấy chứng nhận, có chủ yếu là hai cấu trúc có thể:

  • phân cấp CA: có một hoặc một vài "CA gốc", mà được biết đến bởi tất cả mọi người bằng cách xây dựng. CA đại biểu cho một CA khác (tức là nó ký một chứng nhận với, trong danh tính, một cờ thông thường nói: "khóa công khai này có thể được tin cậy với mục đích xác minh chữ ký trên chứng chỉ") chỉ trong một thỏa thuận hợp đồng thiết lập pháp lý trách nhiệm của cả CA liên quan đến chứng nhận. Điều này có nghĩa rằng phái đoàn được chính thức xác định, và nó như vậy xảy ra rằng nó không phải là dễ dàng. Hợp đồng chứng nhận tương thích với luật sư, thường được gọi là "Tuyên bố Chính sách Chứng nhận" (CPS), là tài liệu dài 200 trang.

  • Web tin cậy: mọi người hoạt động như một CA. Trong trường hợp không có "sự tin cậy chính thức", mỗi chuỗi cá nhân chỉ mang lại một lượng tin cậy rất nhỏ. Điều này có nghĩa là phải được bù đắp bằng những con số khổng lồ. Alice sẽ chỉ chấp nhận khóa của Bob nếu cô ấy có thể xác minh một số (nhiều) chuỗi riêng biệt dẫn đến Bob, thông qua những người tham gia riêng biệt. Ví dụ, Alice sẽ yêu cầu chuỗi Charlie-Daphne-Bob nhưng cũng là chuỗi Elijah-Fiona-Bob và Gerald-Hillary-Ivan-Bob. Họ là tất cả những người say rượu, nhưng họ có thể là chung đáng tin cậy, trong đó một Bob giả sẽ phải trả nhiều vòng để làm hỏng một người tham gia của mỗi chuỗi mà Alice sử dụng (nếu Alice yêu cầu n chứng chỉ, sau đó kẻ tấn công phải tham nhũng ít nhất n người tham gia).

Vì vậy, doanh nghiệp chứng nhận chủ yếu là quy trình thủ tục: CA là gì, điều mà CA xác minh trước khi cấp (ký) chứng chỉ, toàn bộ điều đó từ quan điểm pháp lý, v.v. . Các thủ tục này vốn đã phức tạp và phải được hỗ trợ bởi các chi tiết trong định dạng chứng chỉ (chẳng hạn như cờ "khóa công khai này là khóa CA"). Hai định dạng chuẩn chính hiện được xác định là X.509PGP. X.509 có nhiều hỗ trợ cho CA phân cấp, và là một mớ hỗn độn rất phức tạp của các tiêu chuẩn, định dạng, thực hành và các ủy ban. PGP (được chuẩn hóa dưới tên "OpenPGP") không có hỗ trợ thực sự cho CA phân cấp; nó có nghĩa là được sử dụng với một Web of Trust. OpenPGP đơn giản hơn X.509 nhưng hạn chế hơn, đặc biệt nếu bạn muốn có ý nghĩa pháp lý mạnh mẽ đằng sau các chứng chỉ.

Đối với máy chủ IM, tất cả điều này có thể là quá mức cần thiết. Khái niệm về danh tính mà Alice thực sự muốn có lẽ là khái niệm về sự lặp lại : "Bob giống Bob hơn cái tôi đã nói chuyện với hôm qua". Alice không biết trước Bob, nhưng nói chuyện với anh ta một khi thiết lập danh tính của mình trong mắt của Alice. Cô chỉ muốn không bị lừa bởi một Bob khác. Đối với điều đó, một quá trình đơn giản như "phần mềm của Alice tiết kiệm chìa khóa công khai được công bố của bất kỳ trò chuyện mới, và sử dụng nó sau đó" sẽ làm các trick. Hãy nhớ rằng vấn đề chính là để đúng xác định khái niệm nhận dạng bạn đang theo dõi.

+0

Một chút tiết, nhưng +1 anyway. Tôi nghĩ rằng việc thiết lập trang web của khái niệm tin tưởng và khái niệm CA (phân cấp) sẽ đủ để hiển thị OP tùy chọn của mình. –

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