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.509 và PGP. 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.
Candice? Hôm nay Trent có bị ốm không? – caf
Ồ, 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