Vai trò của chìa khóa trong các giải pháp bảo mật và an toàn thông tin

MỤC LỤC MỤC LỤC . 1 DANH MỤC HÌNH 4 CÁC KÝ HIỆU VÀ CỤM TỪ VIẾT TẮT . 6 MỞ ĐẦU . 7 Chương 1 – Vai trò chìa khóa trong các giải pháp bảo mật và an toàn thông tin 9 1.1 Vai trò của chìa khóa trong các giải pháp bảo mật và an toàn thông tin 9 1.1.1 Trong hệ mã khóa đối xứng 9 1.1.2 Trong hệ mã khóa công khai 10 1.1.3 Trong sơ đồ xưng danh và xác nhận danh tính . 10 1.1.4 Trong hệ xác nhận và chữ ký điện tử . 11 1.2 Vấn đề an toàn khóa trong các giải pháp bảo mật . 11 1.2.1 Hệ mã khóa công khai . 11 1.2.2 Hệ mã khóa đối xứng 13 1.2.3 Trong môi trường truyền tin công cộng . 14 Chương 2 – Các giao thức an toàn khóa trong trao đổi, phân phối và chuyển vận khóa 16 2.1 Nhu cầu thỏa thuận, chuyển vận và phân phối khóa 16 2.2 An toàn khóa trong các giao thức trao đổi 18 2.2.1 Trao đổi khóa Diffie-Hellman 18 2.2.2 Trao đổi khóa STS 20 2.2.3 Thỏa thuận khóa MTI . 22 2.2.4 Giao thức Shamir . 24 2.2.5 Giao thức trao đổi khóa mã hóa EKE 25 2.2.6 Sơ đồ Girault 28 2.3 An toàn khóa trong các giao thức phân phối khóa . 31 2.3.1 Sơ đồ phân phối khóa Blom . 32 2.3.2 Hệ phân phối khóa Kerberos 34 2.3.3 Hệ phân phối khóa Diffie-Hellman . 36 2.3.4 An toàn khóa trong các sơ đồ chia sẻ bí mật 37 2.4 An toàn khóa trong các giao thức chuyển vận khóa . 39 2.4.1 Giao thức không sử dụng chữ ký . 40 2.4.2 Giao thức có sử dụng chữ ký 40 2.4.3 Giao thức lai . 42 Chương 3 - Kỹ thuật quản trị và kiểm tra việc sử dụng khóa . 46 3.1 Quản trị khóa 46 3.2 Các kỹ thuật quản trị . 46 3.2.1 Các kỹ thuật phân phối khóa bí mật . 46 3.2.2 Kỹ thuật phân phối khóa công khai 50 3.3 Kỹ thuật kiểm tra việc sử dụng khóa 58 3.3.1 Tách biệt khóa và ràng buộc khóa 58 3.3.2 Kỹ thuật điều khiển việc sử dụng khóa 59 3.4 Quản lý khóa trong hệ thống đa vùng . 60 3.4.1 Quan hệ tin cậy giữa hai vùng 61 3.4.2 Mô hình tin cậy với nhiều TA 62 3.5 Vòng đời khóa 64 Chương 4 - Một số cách tổ chức các dịch vụ quản trị khóa . 67 4.1 Giới thiệu . 67 4.2 Giao thức socket an toàn SSL . 67 4.2.1 Kiến trúc SSL . 68 4.2.2 Giao thức SSL Record 69 4.2.3 Giao thức SSL Change Cipher Spec . 70 4.2.4 Giao thức Alert . 71 4.2.5 Giao thức Handshake 71 4.3 Cơ sở hạ tầng khóa công khai PKI 74 4.3.1 Tổng quan PKI 75 4.3.2 Các dịch vụ PKI 75 NHẬN XÉT VÀ KẾT LUẬN 77 TÀI LIỆU THAM KHẢO . 78 MỞ ĐẦU Hiện nay, ở các nước phát triển cũng như đang phát triển, mạng máy tính và Internet đang ngày càng đóng vai trò thiết yếu trong mọi lĩnh vực hoạt động của xã hội, và một khi nó trở thành phương tiện làm việc trong các hệ thống thì nhu cầu bảo mật thông tin được đặt lên hàng đầu. Nhu cầu này không chỉ có ở các bộ máy An ninh, Quốc phòng, Quản lý Nhà nước, mà đã trở thành cấp thiết trong nhiều hoạt động kinh tế xã hội: tài chính, ngân hàng, thương mại thậm chí trong cả một số hoạt động thường ngày của người dân (thư điện tử, thanh toán tín dụng, ). Do ý nghĩa quan trọng này mà những năm gần đây công nghệ mật mã và an toàn thông tin đã có những bước tiến vượt bậc và thu hút sự quan tâm của các chuyên gia trong nhiều lĩnh vực khoa học, công nghệ. Một điểm đặc biệt của công nghệ bảo mật hiện đại là không dựa vào khả năng giữ bí mật của phương pháp (công nghệ), vì nó thường không chỉ một người nắm giữ, nói chung thường là nhóm đông người biết, mà khả năng giữ bí mật tuyệt đối của cả một nhóm người là không thể, vì thế bí mật chỉ có thể giữ bởi một người mà lợi ích của anh ta gắn liền với bí mật đó. Chính vì vậy, trong mã hóa hiện đại, người ta luôn giả thiết rằng phương pháp mã hóa thông tin là cái không thể giữ được bí mật, chúng sẽ được công khai, còn việc thực hiện thì cho phép thay đổi theo một tham số do từng người sử dụng tự ấn định (mỗi giá trị của tham số sẽ xác định một cách mã hóa riêng), việc lập mã và giải mã chỉ có thể được thực hiện khi biết được tham số đó. Tham số như vậy được gọi là “chìa khóa” và đó là thông tin duy nhất cần phải giữ bí mật. Tóm lại, một hệ mã hiện đại cần phải dựa trên nguyên tắc: chốt tính bảo mật vào chìa khóa, chứ không phải vào phương pháp (thuật toán). Luận văn sẽ nghiên cứu và xác định rõ vai trò của chìa khóa trong các giải pháp bảo mật và an toàn thông tin. Trên cơ sở nghiên cứu và phân tích các giải pháp an toàn khóa trong việc phân phối, trao đổi, chuyển vận khóa, cũng như các phương thức quản lý nhằm mang lại hiệu quả cao nhất trong quá trình thực hiện các giao thức đó. Luận văn gồm có bốn chương: Mở đầu Chương 1: Vai trò chìa khóa trong các giải pháp bảo mật và an toàn thông tin. Chương 2: Các giao thức an toàn khóa trong trao đổi, phân phối và chuyển vận khóa. Chương 3: Kỹ thuật quản trị và kiểm tra việc sử dụng khóa. Chương 4: Một số cách tổ chức các dịch vụ quản trị khóa. Kết luận

pdf78 trang | Chia sẻ: banmai | Lượt xem: 2006 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Vai trò của chìa khóa trong các giải pháp bảo mật và an toàn thông tin, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
M = m || IV với m đã lấy ở trên cùng với định danh của nó, sau đó kiểm thử chữ ký của U trên m bằng cách kiểm tra: SUM nmodWϑνα ϑ≡ . Nếu đúng, V chấp nhận U với danh tính IU chính là bên sinh ra K. • Vấn đề an toàn khóa của giao thức Trong giao thức mỗi bên phải thực hiện ít nhất một phép toán mã hóa với khóa bí mật chứng tỏ sự hiểu biết của mình về khóa, và một hoặc hai phép toán với khóa công khai (kiểm thử danh tính) vì thế mà cho phép xác thực lẫn nhau. 2.4.3.2. Giao thức Beller-Yacobi 2 - lần qua • Giao thức Thay đổi giao thức Beller-Yacobi 4-lần qua ta sẽ được giao thức 2-lần qua như trong Hình 2.13 dưới đây: Nguyễn Thị Hiền Luận văn thạc sỹ 45 • Vấn đề an toàn khóa của giao thức So với Beller-Yacobi 4-lần qua khả năng xác thực của giao thức 2-lần qua có yếu hơn, nhưng không đáng kể: V nhận được xác thực về U và khóa K chỉ có U biết, trong khi U cũng chắc chắn rằng khóa K chỉ có V biết. Nếu muốn U cũng nhận được xác thực về V thì giao thức cần thêm vào một gói tin nữa. Ở đây có thể sẽ xảy ra hiệu ứng không mong muốn nếu lấy khóa phiên K = t, khi đó U không thể tác động lên giá trị khóa, giao thức sẽ trở thành thỏa thuận khóa. Vì thế thay vào đó U sẽ chọn ngẫu nhiên x, lấy K = x, rồi mã hóa x gửi đi cùng w. Hình 2.13 Giao thức Beller-Yacobi 2-lần qua 1. V chọn ngẫu nhiên m rồi gửi m, ),,( VVVV GIcert ν= cho U 2. U xây dựng chữ ký ElGamal (t, w) trên M = (m, IV), lấy t làm khóa phiên K = t rồi gửi cho V: PV(t), Er(certU || w). 3. V giải mã gói tin U gửi cho để thu được t (= K), sau đó lấy giá trị này để giải mã certU và w, rồi kiểm thử certU và chữ ký (t, w) trên M = m||IV. Nguyễn Thị Hiền Luận văn thạc sỹ 46 Chương 3 - KỸ THUẬT QUẢN TRỊ VÀ KIỂM TRA VIỆC SỬ DỤNG KHÓA 3.1. Quản trị khóa Quan hệ khóa là trạng thái trong đó các thực thể truyền thông chia sẻ dữ liệu chung (chất liệu khóa) để làm thuận tiện cho các kỹ thuật mã hóa. Dữ liệu này có thể các khóa công khai, bí mật, các giá trị khởi tạo, các tham số công khai khác. Quản trị khóa là các kỹ thuật hay thủ tục hỗ trợ cho việc thiết lập và duy trì một quan hệ khóa giữa các bên được phép. Cụ thể là các công việc: 1. tạo người dùng hệ thống mới trong vùng; 2. tạo sinh, phân phối, cài đặt chất liệu khóa; 3. điều phối việc sử dụng chất liệu khóa; 4. cập nhật, thu hồi, huỷ bỏ chất liệu khóa; 5. lưu giữ, sao lưu, phục hồi chất liệu khóa. Lý do phải quản trị khóa Quản trị khóa đóng vai trò quan trọng trong hệ thống mã hóa, nó là nền tảng để thực hiện được các kỹ thuật nhận thực thực thể, xác nhận nguồn gốc dữ liệu, toàn vẹn dữ liệu, và chữ ký điện tử một cách an toàn. Nếu hệ thống có sử dụng các kỹ thuật quản trị khóa một cách hợp lý, nó có thể kháng lại các mối đe dọa sau: 1. lộ khóa bí mật 2. không còn đảm bảo tính xác thực của khóa bí mật & công khai. Tính xác thực ở đây được xem là những hiểu biết và khả năng kiểm thử được định danh của bên nhận đối với bên gửi. 3. thực hiện những thao tác không được phép trên khóa công khai & khóa bí mật. 3.2. Các kỹ thuật quản trị 3.2.1 Các kỹ thuật phân phối khóa bí mật Nguyễn Thị Hiền Luận văn thạc sỹ 47 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. Nguyễn Thị Hiền Luận văn thạc sỹ 48 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: )||(, MVEU UTK (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: )||( UME VTK (2) U→V: )||( VME VTK (3) Nguyễn Thị Hiền Luận văn thạc sỹ 49 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ỉ )||( VKE VTKT . 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: VKU SCertMVESCert UT ),||(, (1) trong đó ),||( UKESCert UTKU T= )||( VKESCert VTKV 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ỉ Nguyễn Thị Hiền Luận văn thạc sỹ 50 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 )||( MVE UTK có đúng là định danh trong SCertV hay không. 3.2.2 Kỹ thuật phân phối khóa công khai Các hệ mã khóa công khai chúng ta đã biết yêu cầu mỗi người phải có một giá trị khóa công khai. Để phân phối các giá trị đó cho người dùng đảm bảo tính xác thực tránh được tấn công giữa dòng như đã chỉ ra trong chương 1 ta có thể sử dụng một trong các kỹ thuật dưới đây: • Phân phối điểm - điểm trên kênh truyền tin cậy. Khóa công khai của các bên thu được thông qua việc trao đổi trực tiếp với nhau trên một kênh tin cậy. Phương pháp này phù hợp với hệ thống không thường xuyên sử dụng hoặc hệ đóng và nhỏ. Nhược điểm lớn nhất của phương pháp này là rất bất tiện khi cần một giá trị khóa để cho người dùng mới tham gia vào hệ thống. Lý do chính là tính không tự động của hệ thống. Hơn nữa để sử dụng phương pháp này phải có thêm chi phí để duy trì những kênh truyền tin cậy. • Truy nhập trực tiếp tới các tệp dùng chung (đăng ký khóa công khai). Sử dụng một CSDL công khai lưu trữ tên và khóa công khai được xác thực của mỗi người dùng hệ thống. Truy nhập từ xa qua những kênh truyền công cộng có thể tránh được những tấn công bị động, còn nếu muốn kháng lại những tấn công chủ động phải dùng những kênh truyền tin cậy. Phương pháp này thường sử dụng cây xác thực để xác thực các giá trị công khai đó. • Sử dụng phục vụ uỷ quyền trực tuyến. Một phục vụ tin cậy cho phép các truy nhập tương tự như khi truy nhập tới tệp dùng chung, khi các bên có yêu cầu khóa công khai, nó sẽ được phục vụ gửi cho cộng với chữ ký của phục vụ trên khóa đó. Mỗi người sử dụng đều có thể kiểm thử được chữ ký của phục vụ. Nguyễn Thị Hiền Luận văn thạc sỹ 51 Trở ngại chính của phương pháp này là phục vụ luôn luôn phải trực tuyến (on- line), điều này có thể dẫn đến tình trạng thắt nút cổ chai. Ngoài ra phương pháp còn yêu cầu đường truyền thông nối giữa phục vụ với các bên, và giữa hai bên với nhau. • Sử dụng phục vụ uỷ quyền ngoại tuyến & chứng chỉ. Trong trường hợp này phục vụ được gọi là CA (uỷ quyền chứng chỉ). Mỗi cá thể U chỉ phải liên lạc với phục vụ một lần để đăng ký khóa công khai của mình và nhận khóa kiểm thử chữ ký của CA (để kiểm thử chứng chỉ của người khác). CA sẽ chứng nhận (công chứng) khóa công khai của U rồi ràng buộc giá trị này với xâu xác định danh tính của U, đó sẽ là nội dung chứng chỉ của U. • Sử dụng hệ xác thực ẩn các tham số hệ thống. Đó là các hệ dựa trên danh tính có sử dụng các khóa công khai xác thực ẩn thông qua việc thiết kế thuật toán, vì vậy mà mọi sự thay đổi các tham số hệ thống sẽ bị phát hiện. Dưới đây chúng ta sẽ xem xét chi tiết các khái niệm được nhắc đến trong các kỹ thuật trên. ƒ Cây xác thực Cây xác thực là phương pháp tạo ra các giá trị công khai cùng với tính xác thực có thể kiểm chứng của chúng thông qua việc sử dụng cấu trúc cây kết hợp với hàm băm và tính xác thực của nút gốc. Những ứng dụng có thể sử dụng chúng gồm: • xác thực khóa công khai (hoặc các chứng chỉ công khai) • dịch vụ tem thời gian tin cậy • xác thực các tham số hợp lệ của người dùng Để thuận tiện cho việc khảo sát chi tiết, trước tiên ta nhắc lại các khái niệm cơ bản của cây nhị phân. Cây nhị phân Nguyễn Thị Hiền Luận văn thạc sỹ 52 Cây nhị phân là một cấu trúc gồm các đỉnh và các cạnh có hướng (cung). Các đỉnh của cây gồm có ba loại: 1. đỉnh gốc. Đỉnh có hai cung đi về phía nó, gọi là cung trái và cung phải. 2. đỉnh trong. Mỗi đỉnh trong có ba cung liên quan đến nó, hai cung trái và phải đi về phía nó và một cung đi ra khỏi nó. 3. lá. Mỗi đỉnh lá có một cung đi ra khỏi nó. Hai đỉnh gắn với cung nào đó có quan hệ “cha - con”, đỉnh mà cung đó đi ra khỏi nó gọi là con (tương ứng với cung trái và phải là con trái và phải), ngược lại gọi là cha. Từ cấu trúc cây nhị phân xác định ở trên dễ dàng thấy rằng luôn luôn tồn tại duy nhất một đường đi từ một đỉnh trong (hoặc lá) bất kỳ tới gốc. Hình 3.2: Cây nhị phân (3 đỉnh lá màu đen, 1 đỉnh trong) Xây dựng và sử dụng cây xác thực Xét một cây nhị phân T có t lá. Gọi h là hàm băm không va chạm. Ta có thể sử dụng cây T để xác thực t giá trị công khai Y1, Y2, …, Yt, bằng cách xây dựng cây xác thực T* như sau. 1. Gán nhãn cho t lá các giá trị Yi khác nhau đó. 2. Trên mỗi cung đi ra từ Yi gán nhãn h(Yi). 3. Nếu cung trái và phải của mỗi đỉnh trong được gán nhãn tương ứng là h1, h2 thì đỉnh trong đó sẽ được gán nhãn là h(h1||h2). 4. Nếu các cung đi đến gốc được gán nhãn là u1, u2, thì gốc sẽ được gán nhãn là h(u1||u2). Cung phải Cung phải Gốc Nguyễn Thị Hiền Luận văn thạc sỹ 53 Nếu giả thiết rằng giá trị ứng với nhãn của gốc đã được xác thực khi đó t giá trị công khai Yi được xác thực như sau: với mỗi giá trị Yi, tồn tại đường đi duy nhất (đường xác thực) từ Yi đến gốc. Mỗi cung trên đường đi sẽ là cung trái hay cung phải của một đỉnh nào đó hoặc là gốc. Nếu e là cung trực tiếp đi về phía x, ta sẽ ghi lại nhãn trên cung đi về phía x mà không phải là e . Dãy các nhãn này viết theo đúng thứ tự đường đi sẽ xác thực giá trị Yi. Hình 3.3: Cây xác thực. ƒ Chứng chỉ khóa công khai Chứng chỉ được dùng như một phương tiện để phân phối hay chuyển các khóa công khai trên kênh truyền thông tin cậy, nó sẽ tạo ra các giá trị công khai của một thực thể sao cho các bên khác có thể kiểm tra tính xác thực và hợp lệ. Trong thực tế người ta thường hay sử dụng các chứng chỉ X.509. Cấu trúc chứng chỉ Nó gồm có hai phần: phần dữ liệu và phần chữ ký. Phần dữ liệu tối thiểu phải có khóa công khai và thông tin về danh tính xác định chủ thể dưới dạng bản rõ. Phần chữ ký là chữ ký của uỷ quyền xác nhận thông tin trong phần dữ liệu. Tạo chứng chỉ Trước khi tạo chứng chỉ khóa công khai cho chủ thể U nào đó, uỷ quyền nên xác định các độ đo thích hợp (mức độ an toàn cần thiết, những hoạt động thương mại), để kiểm thử danh tính của U và xác thực đúng là giá trị công khai đó là của U. Chúng ta phân biệt hai trường hợp sau: h2 = h(Y3) Y3 h(Y2) h(Y1) Y2 Y1 h1 = h(h(Y1)||h(Y2)) R = h(h1 || h2) Nguyễn Thị Hiền Luận văn thạc sỹ 54 − Trường hợp thứ nhất (uỷ quyền tạo khóa). Uỷ quyền sẽ tạo ra cặp khóa công khai, rồi cấp cho cá thể nào đó, cũng như đưa cả giá trị đó vào chứng chỉ của cá thể. Các thành viên sẽ thu được giá trị bí mật tương ứng qua kênh truyền an toàn và tin cậy sau khi chứng tỏ được mình. Tất cả các bên sau đó sử dụng chứng chỉ này chủ yếu uỷ thác sự tin cậy vào một danh tính đã được kiểm thử trước đó. − Trường hợp thứ hai (thực thể tạo khóa). Các thành viên sẽ tự lấy khóa công khai của mình, rồi chuyển giá trị đó cho bên được uỷ quyền. Sau khi kiểm tra tính tin cậy của nguồn gốc dữ liệu, uỷ quyền sẽ tạo ra chứng chỉ khóa công khai như ta đã biết ở trên. Lưu ý rằng trong trường hợp thứ hai, uỷ quyền sẽ yêu cầu các cá thể chứng tỏ sự hiểu biết về giá trị bí mật tương ứng, để ngăn ngừa những bên không có quyền. Sử dụng và kiểm thử chứng chỉ Toàn bộ quá trình mà bên V nào đó sử dụng chứng chỉ để xác nhận khóa công khai của bên U có thể mô tả qua các bước như sau: 1. V yêu cầu khóa công khai từ uỷ quyền. 2. V nhận được xâu xác định danh tính U. 3. yêu cầu (từ CSDL chứng chỉ công khai tập trung, hoặc trực tiếp từ U), chứng chỉ khóa công khai tương ứng với chủ thể U và chấp nhận xâu định danh trước (thực hiện trên kênh công cộng). 4. (a) Kiểm tra thời gian hiện tại có vi phạm khoảng thời gian hợp lệ trong chứng chỉ. (b) Kiểm tra xem khóa công khai của CA còn hợp lệ hay không. (c) Kiểm thử chữ ký trên chứng chỉ của U, sử dụng khóa công khai của CA. (d) Kiểm tra xem chứng chỉ đã bị thu hồi hay chưa. Nguyễn Thị Hiền Luận văn thạc sỹ 55 5. Nếu tất cả các kiểm tra đều thành công thì V chấp nhận giá trị trong chứng chỉ đúng là khóa công khai của U. ƒ Hệ dựa trên danh tính Hệ này tương tự như hệ mã khóa công khai, nó cũng có những phép toán với khóa công khai và những biến đổi với khóa bí mật, chỉ khác là trong hệ mã công khai thì người dùng có giá trị khóa công khai tường minh, còn trong hệ dựa trên danh tính khóa công khai được thay bằng (hoặc có thể xác định được từ) những thông tin danh tính công khai đã có. Bất kỳ thông tin không thể chối được xác định duy nhất người sử dụng đều có thể được dùng làm thông tin định danh. Hệ mã khóa dựa trên danh tính (hay còn gọi là hệ dựa trên ID) là một hệ phi đối xứng trong đó thông tin xác định giá trị công khai của thực thể (tên duy nhất) đóng vai trò như khóa công khai, và được uỷ quyền T sử dụng để tính giá trị bí mật cho thực thể. Sau khi tính được, T chuyển khóa bí mật cho thực thể qua một kênh an toàn, tin cậy. Giá trị bí mật của thực thể được tính toán từ những thông tin xác định danh tính, hoặc có thể từ những thông tin chỉ có T biết. Nhằm chống lại sự giả mạo và mạo nhận thực thể, nên chỉ có T mới có thể tạo ra những giá trị bí mật hợp lệ từ những thông tin xác định danh tính. Trong một vài trường hợp, có thể đưa thêm vào dữ liệu công khai của hệ thống DU gắn với người dùng U trong thông tin định danh của anh ta IDU; những hệ thống như thế không còn là “thuần” dựa trên danh tính nữa, mặc dù không cần phải xác thực DU hay IDU một cách tường minh. Chú ý (tính xác thực của hệ dựa trên ID): Hệ dựa trên ID khác với hệ mã khóa công khai ở một điểm nữa là tính xác thực của những dữ liệu công khai đặc tả người dùng không cần phải được kiểm thử một cách tường minh. Chính sự dư thừa vốn có của dữ liệu công khai người dùng trong hệ thống, cùng với việc sử dụng dữ liệu hệ thống công khai tin cậy, đã ngầm bảo vệ để chống lại sự giả mạo; nếu dữ liệu đó được sử dụng không đúng, việc mã hóa sẽ thất bại, cụ thể hơn: không kiểm thử Nguyễn Thị Hiền Luận văn thạc sỹ 56 được chữ ký trong sơ đồ ký dựa trên ID, không xác thực được thực thể trong quá trình xác thực, không thể giải mã được bản mã trong sơ đồ mật mã, quá trình thỏa thuận khóa sẽ khiến các bên tạo ra các khóa khác nhau sau khi thực hiện giao thức. Nghiên cứu các hệ dựa trên ID cho phép xây dựng một hệ thống mô phỏng hệ thống thư điện tử lý tưởng. Trong thực tế người ta đã cài đặt những hệ thống dạng này trong đó có sử dụng các thẻ điện tử (chipcard). ƒ Khóa công khai xác thực ẩn Thay vì sử dụng hệ thống khóa công khai ta có thể kết hợp sử dụng cùng với khóa công khai xác thực ẩn. Trong hệ này, các khóa công khai của người dùng phải được tái dựng lại chứ không chuyển chúng như trong hệ thống dựa trên chứng chỉ. Người ta thiết kế các hệ này sao cho: 1. Các giá trị công khai có thể dễ dàng tái dựng được (bởi bên khác) từ những dữ liệu công khai (chủ yếu thay cho chứng chỉ) 2. Dữ liệu công khai có thể bao gồm: a. dữ liệu hệ thống gắn với uỷ quyền T; b. danh tính của thực thể người dùng (tên hay địa chỉ chẳng hạn); c. dữ liệu bổ trợ thêm của mỗi cá thể. 3. Tính toàn vẹn của khóa công khai không được kiểm thử một cách trực tiếp, nhưng giá trị công khai “đúng” chỉ có thể thu được từ những dữ liệu đã được xác thực. Để đảm bảo tính xác thực của giá trị công khai có thể tái dựng được, khi thiết kế hệ thống phải cho phép: 1. thay đổi dữ liệu tái dựng khóa công khai hay danh tính người dùng sẽ không thu được giá trị công khai. Nguyễn Thị Hiền Luận văn thạc sỹ 57 2. những kẻ tấn công (không biết giá trị bí mật của T) muốn tính được khóa bí mật từ những giá trị công khai của bất kỳ bên nào là không thể thực hiện được trong một thời gian chấp nhận được. ƒ Đánh giá và so sánh các kỹ thuật trên Các phương pháp đã khảo sát ở trên cơ bản khác nhau như sau: 1. Hệ thống dựa trên chứng chỉ lưu giữ khóa công khai ở dạng hiện, với hệ dựa trên danh tính thì giá trị này không ở dạng tường minh; còn trong hệ xác thực ẩn giá trị này có thể tái dựng. Khóa công khai trong hệ mã khóa công khai được thay bằng: a. bộ ba (DA, IDA, PT) trong hệ dựa trên danh tính, trong đó IDA là danh tính của A, DA là các thông tin công khai bổ trợ (do T xác lập liên quan đến IDA và khóa bí mật của A), PT là khóa công khai (hay tham số hệ thống) của uỷ quyền T. b. bộ ba (RA, IDA, PT) trong hệ xác thực ẩn. Khóa PA được tái dựng từ những tham số này, RA đóng vai trò tương tự như DA ở trên. 2. Tính xác thực của khóa công khai có thể (hay phải) được kiểm thử rõ ràng trong hệ dựa trên chứng chỉ, nhưng không cần trong hệ dựa trên ID hay hệ xác thực ẩn. 3. Cơ quan uỷ quyền (TA) không cần biết khóa bí mật của người dùng trong hệ dựa trên chứng chỉ hay hệ xác thực ẩn với khóa tự xác thực, nhưng trong hệ dựa trên ID thì ngược lại TA cần phải biết giá trị đó. 4. Giống như hệ dựa trên ID, khóa công khai xác thực ẩn (của cả hai lớp) phụ thuộc vào những thông tin xác định danh tính thực thể, theo nghĩa này thì nó cũng được gọi là “dựa trên danh tính”. Tuy nhiên hệ dựa trên ID không cho phép phơi bày toàn bộ khóa công khai. 5. Có hai lớp khóa công khai xác thực ẩn khác với quan hệ giữa dữ liệu công khai và khóa bí mật như sau: Nguyễn Thị Hiền Luận văn thạc sỹ 58 a. Lớp 1: khóa bí mật của thành viên là hàm của dữ liệu công khai, và do bên thứ ba tin cậy tính toán. b. Lớp 2: dữ liệu công khai là hàm của khóa công khai, và khóa bí mật tương ứng chỉ do bên sở hữu tính toán. 6. Trong cả ba cách tiếp cận trên, có thể ở một giai đoạn nào đó bên thứ ba (có mức độ tin cậy nhất định) yêu cầu một đường truyền để chuyển sự tin cậy giữa những người dùng trước đó chưa từng gặp nhau, cũng như không có gì chung ngoài các tham số hệ thống (hoặc có thể là những hiểu biết về danh tính của bên kia). Chú ý: - So với hệ dựa trên chứng chỉ, khóa công khai xác thực ẩn có ưu điểm là không gian yêu cầu ít hơn (chứng chỉ cần lưu chữ ký); tiết kiệm chi phí tính toán (không phải kiểm thử chữ ký), và chi phí truyền thông (thông tin về danh tính có thể biết trước). Tuy nhiên nó lại yêu cầu tính toán trong quá trình tái dựng giá trị công khai; và các dữ liệu khác. - Việc thu hồi (loại bỏ) các giá trị công khai được giải quyết trong sơ đồ dựa trên ID và hệ sử dụng khóa công khai xác thực ẩn bằng cách kết hợp các giá trị đó với khoảng thời gian khóa còn hợp lệ hoặc số seri. 3.3. Kỹ thuật kiểm tra việc sử dụng khóa 3.3.1 Tách biệt khóa và ràng buộc việc dùng khóa Những thông tin có thể đưa thêm vào kết hợp với khóa sẽ dùng để mã hóa có thể là những tham số hạn chế những sử dụng trên khóa đó bao gồm: 1) Người sở hữu giá trị khóa đó. 2) Thời gian khóa còn hợp lệ. 3) Định danh khóa. 4) Mục đích sử dụng. Nguyễn Thị Hiền Luận văn thạc sỹ 59 5) Thuật toán riêng nào đó. 6) Hệ thống hay môi trường dự định sẽ dùng, những sử dụng được phép. 7) Tên cá thể gắn với quá trình tạo, đăng ký, xác nhận khóa. 8) Kiểm tra tính toàn vẹn trên khóa. Nguyên lý của việc tách biệt khóa là các khóa có chức năng khác nhau phải được tách bạch về mặt mã hóa, tránh dùng cùng khóa cho nhiều mục đích khác nhau ví như không nên dùng khóa mã hóa khóa giống như khóa mã hóa dữ liệu, hoặc như khóa đối xứng và khóa dùng để ký cũng phải phân biệt rõ ràng vì vòng đời của chúng là không giống nhau. Những sai lầm chúng ta thường mắc phải là: dùng khóa công khai trong cả sơ đồ ký và phần hỏi – đáp nhằm xác thực thực thể; khóa dùng cả trong mã hóa và xác thực thực thể (rất dễ bị tấn công chọn bản rõ); sử dụng khóa đối xứng cả trong mã hóa và xác thực văn bản. 3.3.2 Các kỹ thuật điều khiển việc sử dụng khóa 3.3.2.1. Tạo đuôi khóa và các biến thể khóa Tạo đuôi khóa là phương pháp tương đối đơn giản để mô tả những sử dụng được phép trên khóa (khóa dùng để mã hóa dữ liệu hay mã hóa khóa). Nó là một vecto bit hay một trường có cấu trúc đi cùng khóa trong toàn bộ thời gian sống của khóa. Vecto này được mã hóa cùng với khóa, và chỉ có thể nhận được nó ở dạng tường minh sau khi giải mã khóa. Phương pháp đơn giản nhất để phân tách khóa là các khóa khác nhau đó được xác định từ một giá trị nào đó nhờ các hàm, các giá trị đó gọi là các biến thể khóa. - Kỹ thuật đơn giản nhất là kỹ thuật lấy phần bù khóa. Thay vì dùng khóa K (khóa mã hóa các khóa khác) ta sẽ sử dụng giá trị K⊕N trong đó N tăng lên sau mỗi lần sử dụng. - Kỹ thuật thứ hai sử dụng phần bù theo mặt nạ định sẵn. Giả sử trong hệ thống có ba lớp khóa, khi đó các khóa sẽ được xác định từ hai biến thể Nguyễn Thị Hiền Luận văn thạc sỹ 60 11 vKK ⊕= và 22 vKK ⊕= của khóa chính K, với v1, v2 là các giá trị mặt nạ công khai có sẵn. Lưu ý rằng các phép toán trên phải không khả nghịch (một chiều), nếu không giá trị ban đầu có thể tính được từ các biến thể của nó. 3.3.2.2. Chứng nhận khóa Yêu cầu chống lại sự tráo đổi khóa xuất hiện trong hầu hết các giao thức tạo lập khóa. Một trong những kỹ thuật dùng để ngăn ngừa việc tráo đổi khóa là đặc tả rõ ràng danh tính các bên có liên quan tới giá trị khóa đó, và chỉ khi có các thông tin định danh đúng đắn mới có thể xác định được khóa. Khi đó, khóa được gọi là dành riêng cho các danh tính đó, hay được chứng nhận cho các bên đó. Hệ thống có thể thực hiện chứng nhận khóa bằng cách đơn giản như sau: Phục vụ được uỷ quyền (hoặc có thể là bên nào đó) dùng khóa mã hóa khóa K để mã hóa khóa phiên S cho bên gửi i và bên nhận j dưới dạng: )()||( SE jiK⊕ , trong đó giá trị i và j là duy nhất xác định thực thể trong hệ thống. Khi đó hai bên để tính được S phải có chung giá trị K, và các giá trị i, j đúng đắn. 3.3.2.3. Vecto điều khiển Là giải pháp kết hợp ý tưởng tạo đuôi khóa và chứng nhận trên khóa. Mỗi khóa S sẽ đi kèm với một vecto C, chỉ rõ mục đích sử dụng khóa. Vecto này sẽ ràng buộc S thông qua sự thay đổi khóa mã khóa K trước khi mã hóa: )(SE CK⊕ . Việc giải mã để nhận được khóa yêu cầu phải cung cấp vecto C đúng đắn cũng như K, còn nếu giá trị CK ⊕ không đúng thì kẻ tấn công sẽ không thu được thông tin gì. 3.4. Quản lý khóa trong hệ thống đa vùng Các kỹ thuật ta đã xét trong các phần trên chủ yếu hoạt động trong vùng chỉ có một cơ quan được uỷ thác (CA). Tuy nhiên trong thực tế có những hệ thống gồm nhiều vùng, mỗi vùng có một CA riêng. Vậy thì làm thế nào để các bên uỷ thác vào CAX nào đó có thể tin cậy vào các giá trị khóa của các thành viên uỷ thác vào CAy. Nguyễn Thị Hiền Luận văn thạc sỹ 61 3.4.1 Quan hệ tin cậy giữa hai vùng Nếu hai bên U và V, trong đó U thuộc vùng DU có cơ quan được uỷ thác TU, còn V là thành viên của vùng DV, uỷ quyền TV, muốn truyền tin cho nhau, thì có thể thực hiện một trong hai cách sau: 1. (dùng chung khóa đối xứng) thiết lập khóa chung KUV chỉ có hai bên (có thể có uỷ quyền) biết. Quá trình để U và V có chung một giá trị khóa có thể phác thảo các bước như sau: - U thông báo cho TU muốn có khóa với V - TU, TV thiết lập khóa bí mật ngắn hạn KUV - TU chuyển KUV cho U, TV chuyển cho V an toàn và tin cậy - U dùng KUV để truyền thông trực tiếp với V. 2. (chia sẻ khóa công khai tin cậy) giá trị khóa công khai tin cậy sẽ được sử dụng như là cầu nối tin cậy giữa các vùng. U có thể nhận được khóa công khai tin cậy từ V như sau: - U yêu cầu TU cung cấp khóa công khai của V - TU nhận được giá trị đó từ TV xác thực - TU chuyển khóa này cho U - U sử dụng khóa này để truyền thông trực tiếp với V Để thực hiện được một trong hai trường hợp trên thì giữa TU và TV phải có quan hệ tin cậy, nó có thể là trực tiếp “tin” vào nhau, hoặc cả hai cùng “tin” vào một bên trung gian thứ ba. Bây giờ chúng ta sẽ nói đến một khái niệm thường xuyên được nhắc đến trong phần tiếp theo. Chứng chỉ giao chéo (cross - certificate) là chứng chỉ do một CA tạo ra, chứng nhận khóa công khai của CA khác. Nguyễn Thị Hiền Luận văn thạc sỹ 62 3.4.2 Các mô hình tin cậy với nhiều CA Có rất nhiều mô hình khác nhau để tổ chức quan hệ tin cậy giữa các CA trong hệ thống gồm nhiều CA, để phân biệt với mô hình truyền thông người ta gọi đó là mô hình dùng để chứng nhận. Các quan hệ tin cậy được thiết lập như thế nào để các thành viên của một CA nào đó có thể kiểm thử được chứng chỉ do CA khác cấp. 3.4.2.1. Sự tin cậy trên các vùng riêng biệt Mô hình này có các CA khác nhau xác định trên các vùng khác nhau, giữa chúng không có quan hệ tin cậy. Người dùng ở vùng này không thể kiểm thử tính xác thực của chứng chỉ trong vùng khác. 3.4.2.2. Mô hình tin cậy có thứ bậc chặt chẽ Mô hình này gồm có một nút gốc, và mọi sự chứng nhận đều xuất phát từ gốc, vì thế nó còn được gọi là mô hình tin cậy tập trung. Nhược điểm của mô hình này là: - mọi sự tin cậy của hệ thống phụ thuộc vào gốc - luôn luôn yêu cầu một dãy các bước chứng nhận kể cả với hai thực thể trên cùng một vùng. - khi cây có độ cao lớn thì dãy các bước chứng nhận càng lớn. . . . )1( rE )1( 1E CA1 )2( sE )2( 1E CA2 . . . Hình 3.4 Các vùng riêng biệt Nguyễn Thị Hiền Luận văn thạc sỹ 63 - không thật tự nhiên, vì thông thường sự tin cậy bao giờ cũng bắt nguồn từ những nút cục bộ chứ không phải gốc ở xa. Hình 3.5 Mô hình tin cậy có thứ bậc chặt chẽ 3.4.2.3. Chứng chỉ ngược thứ bậc và mô hình tổng quát Để khắc phục nhược điểm sự tin cậy tập trung quá nhiều vào gốc của mô hình trước, người ta đưa ra một mô hình tổng quát hơn cho phép các CA con ở mức dưới có thể chứng nhận chứng chỉ của các CA cha. Vì thế trong mô hình này có hai loại chứng chỉ: loại đúng thứ bậc do CA cha chứng nhận cho các CA con, loại ngược thứ bậc do các CA con chứng nhận CA cha. Mô hình này tự nhiên hơn mô hình trước vì CA của mỗi vùng sẽ chứng nhận khóa công khai của thực thể trong vùng đó. Tuy nhiên mô hình này vẫn còn không thuận tiện khi phải thiết lập quan hệ tin cậy giữa hai thực thể thuộc hai vùng khác nhau. )2( 1E CA5 CA3 CA4CA1 CA2 )1( rE )1( 1E … )2( sE … )4( 1E )2(rE … … Nguyễn Thị Hiền Luận văn thạc sỹ 64 Hình 3.6 Mô hình tin cậy ngược thứ bậc. Khi đó mô hình tin cậy không tập trung, không có nút gốc, có dạng đồ thị có hướng, trong đó quan hệ tin cậy được thể hiện bởi các cung của đồ thị là mô hình tổng quát và phù hợp với yêu cầu thực tế nhất trong số các mô hình đã xét. Ngoài ra, đôi khi người ta phải giới hạn phạm vi của dãy chứng nhận có thể chỉ nhỏ hơn một giá trị nào đó, hoặc các vùng hợp lệ trong khi chứng nhận. 3.5. Vòng đời khóa Cách quản lý khóa đơn giản nhất là dùng khóa vĩnh cửu nghĩa là giá trị của nó không thay đổi mỗi khi sử dụng. Tuy nhiên điều này rất nguy hiểm, vì vậy khóa phải được cập nhật một cách định kỳ để tránh sự phụ thuộc giữa khóa mới và khóa cũ trong quá khứ. Dãy các trạng thái thể hiện sự thao tác trên chất liệu khóa trong CA5 CA3 CA4CA1 CA2 CA5 CA3 CA4CA1 CA2 Hình 3.7 Mô hình tin cậy tổng quát Nguyễn Thị Hiền Luận văn thạc sỹ 65 toàn bộ thời gian sống của nó được gọi là vòng đời quản lý khóa. Các giai đoạn này thường bao gồm: 1 đăng ký thành viên - thực thể trở thành thành viên của vùng. Giai đoạn này yêu cầu một thực thể nào đó khi gia nhập vùng phải cung cấp một số PIN, hay mật khẩu. 2 khởi tạo người dùng - thực thể bắt đầu thực hiện ứng dụng mã hóa, thường là hoạt động sử dụng hay cài đặt chất liệu khóa ban đầu thu được sau khi đăng ký. 3 sinh khóa – sinh ra khóa để mã hóa. Thành viên có thể tự lấy khóa của mình hoặc yêu cầu từ một uỷ quyền nào đó. 4 cài đặt khóa - chất liệu khóa được cài đặt thực sự để sử dụng 5 đăng ký khóa – cùng với cài đặt khóa, chất liệu khóa phải chính thức được ghi lại cùng với tên để phân biệt các thành viên. 6 sử dụng thông thường - sử dụng khóa để mã hóa theo sơ đồ mã hóa nào đó. 7 sao lưu khóa – sao lưu chất liệu khóa một cách độc lập bằng phương tiện lưu giữ tin cậy. 8 cập nhật khóa - trước khi khoảng thời gian mã hóa hết liệu lực, chất liệu khóa phải được thay bằng giá trị mới. 9 lưu trữ lại - chất liệu không còn được dùng nữa có thể được lưu giữ lại phục vụ cho một vài trường hợp nhất định nào đó. 10 đăng ký lại và huỷ bỏ - mỗi khi không còn yêu cầu khóa hay duy trì nó nữa, thì cần phải đăng ký lại (loại bỏ tất cả bản ghi chính thức các khóa đang có) và loại bỏ tất cả cá bản sao của khóa. Nếu là khóa bí mật thì mọi sự theo dấu cũng phải được xóa bỏ hẳn. Nguyễn Thị Hiền Luận văn thạc sỹ 66 11 khôi phục khóa - nếu chất liệu khóa bị mất không phải vì để lộ (ví dụ như thiết bị hư hỏng hay quên mật khẩu), cần phải khôi phục lại từ bản sao lưu của nó. 12 thu hồi khóa - việc làm cần thiết khi loại bỏ khóa đã dùng hết hạn. Nếu sử dụng chứng chỉ khóa công khai điều này có nghĩa là thu hồi chứng chỉ. Các giai đoạn này thường được sử dụng trong hệ mã công khai, còn với hệ đối xứng thì không cần giai đoạn: đăng ký, sao lưu, huỷ bỏ hay lưu trữ lại. Nguyễn Thị Hiền Luận văn thạc sỹ 67 Chương 4 - MỘT SỐ CÁCH TỔ CHỨC CÁC DỊCH VỤ QUẢN TRỊ KHÓA 4.1. Giới thiệu Ngày nay hầu như tất cả các doanh nghiệp đều có Web site riêng của mình và trong các công ty thì việc sử dụng Internet ngày càng trở nên hết sức bình thường. Hệ quả của nó là mọi người ngày càng quan tâm thực sự đến thương mại điện tử (TMĐT) trên nền tảng Web. TMĐT với sự tham gia của rất nhiều tổ chức, doanh nghiệp khác nhau với nhiều giao dịch điện tử, không có giấy tờ, chỉ có truyền thông mạng và máy tính, truyền thông có thể là công khai hoặc bí mật, hoặc cũng có thể là sự hợp thành của cả hai. Trước đây TMĐT chủ yếu tập trung vào trao đổi dữ liệu điện tử, và đó là phương thức chính để thực hiện các hoạt động kinh doanh giữa các bên đã thiết lập quan hệ làm ăn trước đó. Nhưng giờ đây dưới sự phát triển của trình duyệt và HTML, TMĐT đã được mở rộng như là các hoạt động kinh doanh thông qua Internet thậm chí có thể giữa các bên mà có thể trước đây chưa hề biết nhau, còn Web được coi là hình thức thông dụng cho việc chuyển vận thông tin. Việc giao dịch sử dụng cơ sở hạ tầng của mạng công khai Internet có thể giảm chi phí cho các doanh nghiệp. Nó sẽ cho phép tất cả các công ty lớn, vừa, nhỏ vươn tới các khách hàng thực sự ở khắp mọi nơi. Tuy nhiên chúng ta phải đối mặt với một thực tế là Internet và Web cực kỳ nhạy cảm với các kiểu tấn công, và vì thế nhu cầu tất yếu ở đây đòi hỏi cần phải phát triển các dịch vụ đảm bảo an toàn. Trong chương này luận văn sẽ tập trung vào hai vấn đề ngày càng trở nên quan trọng hơn và gần như đã trở thành một phần của thương mại Web: giao thức Socket an toàn SSL và cơ sở hạ tầng khóa công khai PKI. 4.2. Giao thức SSL SSL (Secure Socket Layer) do Netscape đưa ra dùng để cung cấp tính bí mật và tin cậy giữa hai ứng dụng đang giao tiếp. Nguyễn Thị Hiền Luận văn thạc sỹ 68 SSL Handshake Protocol cho phép server và client thực hiện việc xác thực lẫn nhau, thỏa thuận một thuật toán mã hóa và các khóa bí mật trước khi giao thức ứng dụng gửi hoặc nhận dữ liệu. 4.2.1 Kiến trúc của SSL Hình 4.1 Chồng giao thức SSL Giao thức SSL Record cung cấp các dịch vụ an ninh chủ yếu cho các giao thức khác ở tầng trên. Đặc biệt là giao thức HTTP (Hypertext Transport Protocol) cung cấp dịch vụ tương tác Web giữa client/server có thể hoạt động trên nền của SSL. Ba giao thức mức cao hơn có thể coi là một phần của SSL: giao thức SSL Handshake, giao thức Change Cipher Spec, và giao thức Alert. Ngoài ra có hai khái niệm quan trọng của SSL là phiên làm việc SSL và kết nối SSL: − kết nối SSL: Một kết nối là một chuyển vận (được xác định trong mô hình OSI) cung cấp loại dịch vụ phù hợp. Với SSL, kết nối là quan hệ ngang hàng (peer-to-peer). Kết nối xảy ra rất nhanh chóng, và luôn luôn gắn liền với một phiên làm việc nào đó. − phiên làm việc SSL: luôn luôn gắn giữa client và server. Chúng được tạo ra bởi giao thức Handshake, xác định các tham số an toàn mã hóa có thể dùng chung cho nhiều kết nối. Sử dụng phiên làm việc để giảm chi phí Giao thức SSL Handshake Giao thức Change Cipher Spec Giao thức SSL Alert HTTP Giao thức SSL Record TCP IP Nguyễn Thị Hiền Luận văn thạc sỹ 69 thương lượng tham số mới mỗi khi kết nối. Một phiên làm việc gồm nhiều kết nối. 4.2.2 Giao thức SSL Record Giao thức này cung cấp hai dịch vụ cho kết nối SSL: − bí mật: Giao thức Handshake xác định khóa bí mật dùng chung để sử dụng mã hóa đối xứng cho payload SSL. − toàn vẹn dữ liệu: Giao thức Handshake cũng xác định khóa bí mật dùng chung sử dụng để hình thành mã xác thực văn bản (MAC). Hình vẽ dưới đây sẽ chỉ rõ hơn toàn bộ hoạt động của giao thức SSL Record: Hình 4.2 Hoạt động giao thức SSL Record Đầu tiên là phân mảnh dữ liệu thành các khối có kích thước nhỏ hơn hoặc bằng 214 byte. Sau đó, có thể thực hiện nén dữ liệu, tuy nhiên trong phiên bản SSLv3, không áp dụng thuật toán nén nào nên trường này có giá trị null. Bước tiếp theo trong quá trình xử lý là tính mã xác thực văn bản trên dữ liệu đã nén. Để làm được điều này, phải có một khóa bí mật dùng chung. Tính toán này được xác định như sau: Thêm MAC Phân mảnh Dữ liệu ứng dụng Nén Thêm header của SSL record Mã hóa Nguyễn Thị Hiền Luận văn thạc sỹ 70 hash(MAC_write_secret || pad_2 || hash(MAC_write_secret || pad_1 || seq_num || SSLCompress.type || SSLCompress.length || SSLCompressed.fragment)) trong đó MAC_write_secret : khóa bí mật dùng chung hash : thuật toán băm (MD5 hạơc SHA-1) pad_1 : byte 0x36 lặp lại 48 lần với MD5, 40 lần với SHA-1 pad_2 : byte 0x5C lặp lại 48 lần với MD5, 40 lần với SHA-1 seq_num : số tuần tự của văn bản SSLCompress.type : giao thức tầng trên được dùng xử lý phân mảnh này SSLCompress.length : độ lớn của phân mảnh đã nén SSLCompressed.fragment : phân mảnh nén Sau đó, văn bản nén cùng với MAC được mã hóa bằng thuật toán mã hóa đối xứng, có thể là IDEA, RC2-40, DES-40, DES, 3DES, …Bước cuối cùng của giao thức là thêm header gồm các trường sau: − Content Type (8 bit): giao thức tầng cao hơn được dùng để xử lý các phân đoạn đã đóng gói. − Major Version (8 bit): phiên bản chính của SSL đang dùng. Với SSLv3 thì giá trị này bằng 3. − Minor Version (8 bit): phiên bản phụ đang dùng. Với SSLv3 thì giá trị này bằng 0. − Compressed length (16 bit): độ lớn tính theo byte của phân đoạn bản rõ. 4.2.3 Giao thức Change Cipher Spec Một trong những giao thức đặc tả SSL dùng trong SSL Record và là giao thức đơn giản nhất, gói tin của nó chỉ có một byte với giá trị bằng 1, chỉ ra trạng thái treo để chờ sao chép vào trạng thái hiện thời, đang cập nhật bộ mã hóa sử dụng để kết nối. Nguyễn Thị Hiền Luận văn thạc sỹ 71 4.2.4 Giao thức Alert Giao thức dùng để chuyển cảnh báo có liên quan đến SSL cho thực thể ngang hàng. Gói tin của giao thức gồm hai byte, byte thứ nhất có giá trị cảnh báo hoặc rất có hại để chuyển tính nghiêm trọng của vấn đề: nếu là rất có hại, SSL ngay lập tức kết thúc kết nối, kết nối khác của phiên làm việc sẽ được tiếp tục, không thiết lập kết nối mới. Byte thứ hai là mã đặc tả cảnh báo: gói tin nhận được không thích hợp, MAC nhận được không đúng, không giải nén được, handshake thất bại (tương ứng với giá trị thứ nhất là rất có hại). 4.2.5 Giao thức Handshake Phần phức tạp nhất của SSL. Giao thức cho phép server và client xác thực với nhau và thỏa thuận thuật toán mã hóa, MAC và khóa để bảo vệ dữ liệu SSL. Giao thức được gọi trước khi chuyển dữ liệu của ứng dụng. Giao thức bao gồm một dãy các các gói tin trao đổi giữa client và server như trong hình vẽ dưới đây: Hình 4.3 Hoạt động giao thức Handshake Pha 1 Thiết lập năng lực an ninh gồm phiên bản giao thức, định danh phiên làm việc, bộ mã hóa, phương pháp nén, số ngẫu nhiên khởi tạo. Pha 2 Server gửi chứng chỉ, trao đổi khóa, và yêu cầu chứng chỉ. Tín hiệu server kết thúc pha chào hỏi. Pha 3 Client gửi chứng chỉ nếu được yêu cầu, trao đổi khóa, và gửi kiểm thử chứng chỉ (có thể). Pha 4 Thay đổi bộ mã hóa và kết thúc giao thức bắt tay. Nguyễn Thị Hiền Luận văn thạc sỹ 72 Mỗi gói tin đều gồm có ba trường: − Type (1 byte): chỉ rõ gói tin này là loại nào trong số 10 gói tin. − Length(3 byte): độ lớn của gói tin tính theo byte. − Content (≥ 1 byte): tham số kết hợp với gói tin. Quá trình thiết lập kết nối logic giữa client và server có thể chia làm bốn pha như dưới đây: Pha 1: Thiết lập năng lực an ninh Thiết lập kết nối logic và thiết lập khả năng an ninh sẽ có. Quá trình trao đổi sẽ xuất phát từ client thông qua việc gửi client_hello_massage với các tham số dưới đây: − Version: Phiên bản SSL mà client có thể hiểu được. − Random: Cấu trúc ngẫu nhiên do client sinh ra chứa 32 bit − Session ID: Định danh phiên làm việc có độ dài thay đổi − CipherSuite: Danh sách tổ hợp các thuật toán mã hóa client được hỗ trợ. − Compression Method: Danh sách các phương pháp nén client hỗ trợ. Sau khi nhận được gói tin client_hello, client chờ để nhận gói tin server_hello cũng có các tham số tương tự như gói tin client_hello. Thành phần đầu tiên của Cipher Suite là phương thức trao đổi khóa: RSA, Diffie- Hellman có dùng chứng chỉ, Diffie-Hellman có xác thực khóa, Diffie-Hellman không có xác thực, Fortezza. Pha 2: Xác thực server và trao đổi khóa Server bắt đầu pha này bằng cách gửi chứng chỉ của nó, nếu thực sự cần thiết, gói tin sẽ chứa một hoặc dãy các chứng chỉ X.509. Gói tin certificate là bắt buộc với bất kỳ phương pháp thỏa thuận trao đổi khóa nào ngoại trừ Diffie-Hellman không có xác thực. Sau đó server sẽ gửi gói tin server_key_exchange đi nếu có yêu cầu. Với Nguyễn Thị Hiền Luận văn thạc sỹ 73 hai tình huống: Server đã gửi chứng chỉ với các tham số Fixed Diffie-Hellman hay sử dụng trao đổi khóa RSA thì không cần gói tin này. Nếu server không sử dụng Diffie-Hellman nặc danh thì nó sẽ yêu cầu chứng chỉ từ client bằng cách gửi certificate_request gồm hai tham số: certificate_type, certificate_authorities. Gói tin cuối cùng cần phải có trong mọi trường hợp là server_done kết thúc quá trình chào hỏi từ server. Sau đó server sẽ đợi client trả lời. Pha 3: Client xác thực và trao đổi khóa Sau khi nhận được gói tin server_done từ server, client nên kiểm thử rằng server đã cung cấp chứng chỉ hợp lệ nếu cần và kiểm tra xem các tham số server_hello có chấp nhận được hay không. Nếu thỏa mãn, client sẽ gửi một vài gói tin cho server. Nếu server yêu cầu chứng chỉ, client bắt đầu pha này bằng cách gửi certificate. Nếu không có chứng chỉ client sẽ gửi no_certificate. Sau đó gửi gói tin client_key_exchange, gói này là bắt buộc. Nội dung thì tùy thuộc phương pháp trao đổi khóa: − RSA: client sinh giá trị 48 byte rồi mã hóa bằng khóa công khai của lấy được từ chứng chỉ của server hoặc từ gói tin server_key_change. − Diffie-Hellman nặc danh hay thay đổi: gửi tham số Diffie-Hellman công khai của client. − Diffie-Hellman cố định: phần này sẽ là null nếu tham số Diffie-Hellman công khai của client đã gửi trong gói tin certificate. − Fortezza: tham số Fortezza của client. Kết thúc pha này client gửi gói tin certificate_verify để cung cấp sự kiểm thử tường minh chứng chỉ client. Gói tin này chỉ gửi đi nếu chứng chỉ client có khả năng ký. Pha 4. Kết thúc Pha này sẽ hoàn thành quá trình khởi động một kết nối an toàn. Client gửi gói tin change_cipher_spec và sao chép CipherSpec đang chờ vào CipherSpec hiện tại. Sau đó client ngay lập tức gửi gói tin finished bằng các thuật toán, khóa, bí mật mới. Nguyễn Thị Hiền Luận văn thạc sỹ 74 Gói tin này sẽ kiểm thử tiến trình trao đổi khóa và xác thực có thành công hay không. Để đáp lại server gửi gói tin chage_cipher_spec, chuyển CipherSpec chờ vào CipherSpec hiện thời, rồi gửi finished. Đến thời điểm này quá trình bắt tay đã hoàn thành từ đây client và server có thể bắt đầu trao đổi dữ liệu tầng ứng dụng. 4.3. PKI PKI (Public Key Infrastructure) cho phép các bên khi tham gia vào một giao dịch có thể nhận ra bên kia bằng cách cung cấp thông tin xác thực thông qua chứng chỉ, và tin tưởng vào truyền thông bằng cách cung cấp bí mật thông qua việc sử dụng mã hóa, xác thực, toàn vẹn dữ liệu, và không thể thoái thác thông qua chữ ký điện tử. PKI là sự hợp thành của chứng chỉ điện tử, mã hóa khóa công khai, các CA. Trong môi trường Internet mở như hiện nay thì sử dụng PKI cấp quyền cho các bên là giải pháp hợp lý nhất. Nguyễn Thị Hiền Luận văn thạc sỹ 75 4.3.1 Các dịch vụ PKI PKI chủ yếu cung cấp dịch vụ xuất bản chứng chỉ và làm sao để có thể truy nhập và sử dụng chúng. Giống như danh bạ điện thoại vậy, thư mục PKI liệt kê khóa công khai của tổ chức hay cá nhân. Các PKI giải quyết các bài toán quản lý khóa: tạo sinh, phân phối, xác thực, và lưu giữ. Một cơ sở hạ tầng khóa công khai PKI gồm: − Một uỷ quyền chứng chỉ (CA) sinh và kiểm thử các chứng chỉ − Một uỷ quyền đăng ký (RA) thực hiện kiểm thử ủy quyền chứng chỉ trước khi xuất bản chứng chỉ cho bên yêu cầu. ký băm mã hóa bằng khóa đối xứng hỗ trợ hỗ trợ hỗ trợ Bản mã Bản rõ Văn bản tóm lược Bản mã + khóa đối xứng được mã hóa Chữ ký điện tử Chứng chỉ điện tử Cơ sở hạ tầng khóa công khai PKI Thành phần phần mềm PKI Chức năng PKI Cấu trúc uỷ quyền: ƒ Mô hình uỷ quyền ƒ Chứng chỉ giao chéo ƒ Sản phẩm thương mại ƒ Khả năng thông dịch ƒ Chuẩn khóa đối xứng được mã hóa bằng khóa công khai của người nhận Hình 4.4 Kỹ thuật kết khối an toàn gói tin Internet Nguyễn Thị Hiền Luận văn thạc sỹ 76 − Dịch vụ thư mục (DS) trong đó các chứng chỉ (cùng với khóa công khai của chúng) được lưu giữ và có sẵn dùng (thường là trong thư mục chuẩn ITU X.500) − Thực thể cuối (EE) giữ chứng chỉ: người dùng, tổ chức, ứng dụng, .v.v. − Các client dùng PKI để nhận chứng chỉ, hợp lệ chứng chỉ và chữ ký; − Một hệ thống quản lý chứng chỉ. Hệ thống quản lý chứng chỉ thường có các dịch vụ sau: − Hủy bỏ chứng chỉ: hủy chứng chỉ đã xuất bản, tạo và công khai danh sách chứng chỉ thu hồi, lưu lại và .. − Hết hạn chứng chỉ và cập nhật − Dịch vụ bảo đảm có thể giải mã được các văn bản đã mã hóa trước đó − Sao lưu và phục hồi chứng chỉ: Bảo đảm không bị mất thông tin − Dịch vụ hỗ trợ không thể thoái thác: việc sao lưu và phục hồi khóa gây ra một kẽ hở cho hệ thống. Ai đó có thể lợi dụng điều này cho rằng đã có người khác truy nhập tới khóa đang ký của họ, vì thế họ không hoàn toàn chịu trách nhiệm cho những giao dịch kiểu như thế, mặc dù những giao dịch này rõ ràng là do họ ký. Do đó cần thiết phải duy trì hai cặp khóa cho mỗi người dùng. Cặp khóa mã hóa có thể sao lưu và phục hồi, ngược lại thì cặp khóa ký không nên để cho người dùng sở hữu hoàn toàn. − Dịch vụ tem thời gian − Hợp lệ chứng chỉ thông qua chính sách. Nguyễn Thị Hiền Luận văn thạc sỹ 77 NHẬN XÉT VÀ KẾT LUẬN Ý nghĩa của việc nghiên cứu vấn đề Vấn đề đặt ra trong luận văn rất cần thiết trong nghiên cứu về mật mã, và sử dụng chúng trong các ứng dụng, đặc biệt là ngày nay khi mà hầu hết các hoạt động trao đổi thông tin của con người đều được thực hiện thông qua mạng truyền thông công cộng như Internet. Trong bối cảnh đó kể cả khi hệ thống sử dụng phương pháp mã hóa công khai thì việc quản lý và điều phối việc sử dụng khóa vẫn cực kỳ cần thiết. Còn nếu hệ thống sử dụng thuật toán mã hóa đối xứng thì việc trao đổi, phân phối, chuyển vận giá trị bí mật một cách an toàn cho hai bên là yêu cầu tất yếu. Trên cơ sở đó luận văn đã cố gắng tìm hiểu các giao thức tạo lập khóa bí mật và các kỹ thuật quản trị khóa và đạt được một vài kết quả nhất định. 1. Các kết quả đạt được - Nghiên cứu tìm hiểu và phân tích các giao thức tạo lập khóa: trao đổi, phân phối, chuyển vận khóa . - Tìm hiểu các kỹ thuật quản trị và kiểm tra việc sử dụng khóa. - Tìm hiểu giao thức socket an toàn – công nghệ ứng dụng sử dụng các giao thức tạo lập khóa đã nghiên cứu, cơ sở hạ tầng khóa công khai PKI trong môi trường mạng toàn cầu. 2. Hướng phát triển của luận văn - Nghiên cứu thay đổi các giao thức trao đổi khi đưa vào thực tế nhằm làm tăng thêm độ an toàn và tin cậy cho các bên tham gia truyền thông. - Nghiên cứu các khả năng tránh được các tấn công dùng lại, an toàn tiếp theo, tránh tấn công từ chối dịch vụ và bảo vệ danh tính của khóa phiên trong các giao thức trao đổi khóa. - Nghiên cứu và đề xuất một vài giải pháp cho các hệ thống ứng dụng mã hóa đòi hỏi sự tin cậy nhiều nhất hiện nay. Nguyễn Thị Hiền Luận văn thạc sỹ 78 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Phan Đình Diệu (2002), Lý thuyết mật mã & an toàn thông tin, Nhà xuất bản Đại học Quốc gia Hà nội. [2] Phạm Huy Điển – Hà Huy Khoái (2003), Mã hóa thông tin - Cơ sở Toán học & ứng dụng, Nhà xuất bản Đại học Quốc gia Hà nội. [3] Hà Huy Khoái (1997), Nhập môn số học thuật toán, Nhà xuất bản Khoa học. Tiếng Anh [4] A.J. Menezes, P.C. Van Oorschot, S.A. Vanstone (1997), Handbook of Applied Cryptography, CRC Press. [5] Bruce Schneier (1996), Applied Cryptography – Protocols, Algorithms and Source Code in C, John Wiley & Sons, Inc. [6] Douglas R.Stinson (1995), Cryptography – Theory and Practice, CRC Press [7]. Jan Li (2000), Public key infrastructure technology introduction, Intel Semiconductor Ltd. [8] S. Goldwasser, M.Bellare (2001), Lecture notes on Cryptography, MIT Laboratory of Computer Science. [9] Steven M. Bellovin & Michael Merritt (1992), Encrypted Key Exchange: Password Based Protocols Secure Against Dictionary Attacks. The IEEE Symposium on Research in Security and Privacy Oakland May 1992 [10] William Stalling (1998), Cryptography and network security – Principles and Practice, 2nd ed., Prentice Hall, Inc. [11] (1998) An Introduction to Cryptography, Network Associates Inc.

Các file đính kèm theo tài liệu này:

  • pdfCD007.pdf