Khóa bí mật mà ta nói đến ởđây là các khóa của hệ mã khóa đối xứng và các khóa riêng trong hệ mã khóa công khai. Trong phần này chúng ta sẽ nghiên cứu hai kỹ thuật phân phối khóa bí mật phổ biến nhất một dựa trên việc phân lớp sử dụng khóa, một dựa trên chứng chỉ và Trung tâm chuyển khóa.
3.2.1.1. Phân lớp khóa
Người ta phân loại khóa dựa trên mức độ quan trọng của chúng như sau:
1. khóa chính (master key): khóa ở mức cao nhất trong cây phân cấp, thông thường không bảo vệ bằng mã hóa. Chúng thường được phân phối bằng tay, hoặc thông qua các thủ tục, các phần cứng vật lý.
2. khóa mã hóa khóa (key - encrypting keys): khóa đối xứng hay các khóa công khai dùng để chuyển vận hay lưu giữ các khóa khác, sự an toàn của các khóa đó phụ thuộc vào chúng.
3. khóa dữ liệu (data keys): dùng trong các phép toán mã hóa (hay xác thực) trên dữ liệu. Chúng có thể là các khóa phiên (trong hệ mã đối xứng). Khóa riêng trong sơ đồ chữ ký cũng có thể là khóa dữ liệu (tuy nhiên loại này thường được dùng trong thời gian dài).
Khóa ở mức cao được sử dụng để bảo vệ khóa ở mức thấp hơn. Mục đích chính của việc làm này để tăng thêm độ khó cho các tấn công, và hạn chế bớt thiệt hại khi có khóa nào đó bị lộ. Chẳng hạn khi khóa mã hóa khóa bị lộ, tệ hơn nữa là khóa chính thì sẽảnh hưởng tới sự an toàn của tất cả các khóa ở mức dưới, nhưng khi khóa mã hóa dữ liệu nào đó bị lộ thì không ảnh hưởng tới các khóa ở mức trên.
Ngoài ra người ta có thể phân chia khóa dựa trên khoảng thời gian còn hợp lệ của chúng thành khóa vĩnh cửu (dùng mãi mãi) và khóa phiên (chỉ dùng trong một phiên giao dịch hoặc trong khoảng thời gian nhất định). Khóa vĩnh cửu thường được dùng trong những ứng dụng lưu trữ dữ liệu, còn khóa phiên thường được dùng trong những ứng dụng truyền thông. Khóa dùng lâu dài chủ yếu được dùng để bảo vệ khóa phiên.
3.2.1.2. Chứng chỉ và Trung tâm chuyển khóa
Trung tâm chuyển khóa KTC
Trung tâm chuyển khóa KTC (Key Translation Center) T là một phục vụ được ủy quyền cho phép hai bên U và V truyền thông an toàn thông qua việc sử dụng các giá trị khóa KUT và KVTđã thống nhất trước với T. Nếu U muốn gửi cho V văn bản M thì anh ta có thể sử dụng giao thức có sự tham gia của KTC như trong Hình 3.1 dưới đây. Trong trường hợp văn bản M chính là khóa K cần chuyển cho nhau, thì giao thức có thể được coi là giao thức chuyển khóa; vì thế KTC được gọi là trung tâm chuyển khóa hay văn bản.
Trong giao thức E là thuật toán mã khóa đối xứng. Giá trị M là văn bản U muốn gửi cho V. Trước khi thực hiện giao thức U chia sẻ KUT với T, còn V là KVT.
Với giao thức trên thì chỉ một trong hai U hoặc V là truyền thông trực tiếp với T. Ngoài ra có thể thay đổi giao thức đi bằng cách U gửi văn bản cho T, sau đó T sẽ
Hình 3.1 Giao thức chuyển văn bản có KTC
1. U mã hóa M (cùng với danh tính của bên nhận V) bằng KUT, rồi gửi cho T cùng với danh tính của mình (cho phép T kiểm tra KUT)
U→T: U,E (V ||M)
UT
K (1)
2. Sau khi giải mã văn bản, T xác định được đây là thông tin U cần gửi cho V, T sẽ tìm khóa KVT của V, mã hóa văn bản M bằng khóa này rồi gửi cho V.
T trả lại văn bản đã được mã hóa bằng khóa của V cho U (hoặc có thể gửi tới một site công cộng) để U gửi cho V. (hoặc có thể trực tiếp gửi cho V) T→U: E (M ||U) VT K (2) U→V: E (M ||V) VT K (3)
mã hóa và trực tiếp gửi cho V. Nó được gọi là “chuyển văn bản” vì T chỉ làm nhiệm vụ chuyển M mà U muốn gửi cho V.
Tính an toàn của giao thức:
- Danh tính mà (1) sử dụng khóa công khai của U để mã hóa, được đưa vào trong (2) nhằm chỉ rõ nguồn gốc dữ liệu tránh tấn công tráo khóa.
- Thứ tự của hai trường danh tính và văn bản trong (1) và (2) ngược nhau nhằm không cho kẻ tấn công dùng lại (1) để gửi trở lại U.
- Tấn công dùng lại văn bản hoàn toàn bị loại bỏ khi ta sử dụng thêm tem thời gian hoặc số tuần tự. Giao thức trên không cung cấp xác thực thực thể.
- Nên sử dụng kỹ thuật kiểm tra tính toàn vẹn dữ liệu trên bản mã để T có thể phát hiện được sự giả mạo danh tính U trong (1), cũng như trong (2) và (3).
- Có thể sử dụng mã hóa CBC [6] để ngăn ngừa kiểu tấn công chọn bản rõ trên khóa KVT trong (2), và thêm vào phần đầu một số ngẫu nhiên.
Chứng chỉ khóa đối xứng
Nếu KTC không muốn luôn luôn phải duy trì CSDL các bí mật của người dùng (có khi phải có thêm các bản sao trên nhiều phục vụ khác nhau) và thực hiện các giao dịch truy xuất tới các giá trịđó khi có yêu cầu chuyển khóa thì sử dụng chứng chỉ là một giải pháp thay thế.
Giờ đây khóa của mỗi cá thể V, KVT được mã hóa bằng khóa KT chỉ có T biết khi đưa vào trong chứng chỉ EK (KVT ||V)
T . Ngoài ra chứng chỉ cũng có thể thêm khoảng thời gian còn hợp lệ của nó. Khi đó (1) trong Giao thức 3.1 sẽđược thay bằng
U→T: SCertU EK V M SCertV UT( || ),
, (1)
trong đó SCertU =EKT(KUT ||U), SCertV = EKV(KVT ||V)
Hệ thống sẽ có một CSDL công khai gồm nhiều mục dữ liệu, mỗi mục có tên người dùng và chứng chỉ tương ứng của người đó. Để xây dựng được (1), U lấy chứng chỉ
của V và đưa vào văn bản gửi cho T cùng với thông tin về mình. T sử dụng khóa KT của mình thu được KUT và KVT từ chứng chỉ của U, V. Ngoài ra T còn phải thử lại rằng người dùng V mà U muốn truyền thông mô tả trong E (V ||M)
UT
K có đúng là định danh trong SCertV hay không.