Message trên và lấy được khóa bí mật bởi vì chỉ có Bob mới biết được khóa riêng (private key) để giả

Một phần của tài liệu Đồ án an toàn mạng và bảo mật mạng mã hóa an toàn thông tin (Trang 35 - 40)

- Tem thời gian (timestamps) cho biết thời gian có hiệu lực của giấy chứng nhận

message trên và lấy được khóa bí mật bởi vì chỉ có Bob mới biết được khóa riêng (private key) để giả

Bob mới biết được khóa riêng (private key) để giải mã. Trao đổi khóa bí mật bằng công nghệ khoá công khai (public key) cực kì an toàn.

SSL

 Không một ai ngoại trừ Alice và Bob biết được khóa bí mật. Trong SSL, khóa bí mật này chính là khóa phiên giao dịch giữa 2 người ở thời điểm đó (session key). Kể từ đây Alice và Bob sẽ dùng khóa phiên để trao đổi dữ liệu cho nhau. Khóa phiên được tạo ra trong mỗi phiên kết nối SSL và hoàn toàn bí mật (chỉ có Alice và Bob biết) nên rất an toàn. Công nghệ chuyên chở khóa phiên bằng khoá công khai (public key) và dùng khóa phiên như một khóa đối xứng bí mật để trao đổi dữ liệu cho nhau còn được biết đến với cái tên là hybrid, tức là kết hợp cả hai phương

pháp mã hóa dùng kĩ thuật mã hoá đối xứng và mã hoá bất đối xứng.

SSL

 Đây là giao thức mới:  A->B Xin chào!

B->A Chào, Mình là Bob. Đây là giấy chứng nhận của mình!

A->B Hãy đưa bằng chứng đi!

B->A Alice, Mình là Bob đây!

private_Bob{digest[“Alice, Mình là Bob đây!”]}

A->B Ok Bob, Đây là khoá bí mật của chúng ta

public_Bob{“khóa_bí_mật”}

B->A khóa-bí-mật{message 1}

B->A khóa-bí-mật{message 2} ...

SSL

6. Tấn công man-in-the-middle

Giao thức trên chưa phải là an toàn tuyệt đối. Mallet ngồi giữa Alice và Bob có thể chơi trò tấn công man-in-the-middle như sau:

A->M Xin chào!

M->B Xin chào!

B->M Chào, Mình là Bob. Đây là giấy chứng nhận của mình!

M->A Chào, Mình là Bob. Đây là giấy chứng nhận của mình!

A->M Hãy đưa bằng chứng đi!

SSL

B->M Alice, Mình là Bob đây!

private_Bob{digest[“Alice, Mình là Bob đây!”]}

M->A Alice, Mình là Bob đây!

private_Bob{digest[“Alice, Mình là Bob đây!”]}

A->M Ok Bob, đây là khoá bí mật của chúng ta public_Bob{“khóa_bí_mật”}

M->B Ok Bob, đây là khoá bí mật của chúng ta public_Bob{“khóa_bí_mật”}

B->M khóa-bí-mật{something}

M->A Editted [khóa-bí-mật{something}]

Mallet sẽ chuyển tiếp dữ liệu giữa Alice và Bob cho đến khi họ trao đổi khóa bí mật. Tại thời điểm này Alice nghĩ rằng mình đang nói chuyện với Bob nên tin tưởng hoàn toàn vào các message do Bob gởi tới. Thực chất không phải là như vậy. Mallet mặc dù không biết khóa bí mật nhưng hoàn toàn có thể xén, thêm hoặc sửa đổi gì đó trên các dữ liệu được gởi từ Bob đến Alice.

SSL

Một phần của tài liệu Đồ án an toàn mạng và bảo mật mạng mã hóa an toàn thông tin (Trang 35 - 40)