Chương 1 LÝ THUYẾT CHUNG VỀ MÃ HOÁ KHÓA CÔNG KHAI Để hiểu được về hạ tầng cơ sở khóa công khai, chúng ta cần tìm hiểu một số kiến thức sơ lược về mật mã khoá công khai, chữ ký số. Khái niệm mã hoá khoá công khai nảy sinh khi giải quyết hai vấn đề khó khăn trong mã hoá đối xứng, đó là vấn đề phân phối khoá và chữ ký số. Như chúng ta đã biết, việc phân phối khoá trong mã hoá đối xứng yêu cầu hai bên liên lạc phải: 1. Dùng chung một khoá được phân phối theo cách nào đó; hoặc: 2.
Sử dụng một trung tâm phân phối khoá. Vßng kho¸ c«ng khai cña Alice Joy Ted Mike Bob Kho¸ riªng Kho¸ c«ng khai cña Bob cña Bob B¶n m· ®-îc §Çu vµo truyÒn ®i §Çu ra ThuËt to¸n m· ThuËt to¸n b¶n râ gi¶i m· b¶n râ ho¸ (a) M· ho¸ Vßng kho¸ c«ng khai cña Bob Joy Ted Mike Alice Kho¸ riªng cña Alice Kho¸ c«ng khai cña Alice B¶n m· ®-îc truyÒn ®i §Çu vµo ThuËt to¸n ThuËt to¸n §Çu ra b¶n râ m· ho¸ gi¶i m· b¶n râ (b) X¸c thùc H×nh 1.1 M· ho¸ kho¸ c«ng khai 7 z Whitfield Diffie, một trong những người đã phát minh ra mã hoá khoá công khai (cùng với Martin Hellman, trường Đại học Stanford) đã suy luận và cho rằng, yêu cầu thứ hai phủ nhận bản chất của mật mã. Bản chất đó là đảm bảo tính bí mật trong liên lạc. Khó có thể tồn tại các hệ thống mật mã không thể phá được nếu người sử dụng của các hệ thống này bắt buộc phải dùng chung các khoá của một trung tâm phân phối khoá (KDC), lý do là trung tâm này có thể để lộ khoá.
Vấn đề thứ hai mà Diffie đặt ra là "chữ ký số". Nếu việc sử dụng mật mã trở nên phổ biến, không chỉ trong lĩnh vực quân sự mà còn được sử dụng cho các mục đích thương mại và cá nhân, thì các thông báo và tài liệu điện tử cần có các chữ ký và chúng có hiệu lực tương tự như các chữ ký trên giấy tờ.1 CÁC HỆ THỐNG MẬT MÃ KHÓA CÔNG KHAI Các thuật toán khoá công khai sử dụng một khoá để mã hoá và một khoá khác để giải mã (tạo thành một cặp khoá). Chúng có tính chất quan trọng sau đây: - Không thể xác định được khoá giải mã nếu chỉ căn cứ vào các thông tin về thuật toán và khoá mã hoá. Một số thuật toán, chẳng hạn như RSA, cũng có tính chất sau: - Một trong hai khoá được sử dụng để mã hoá, khoá còn lại được sử dụng để giải mã.1 minh hoạ quá trình mã hoá khoá công khai.
Các bước cơ bản gồm: 1. Mỗi thành viên sinh ra một cặp khóa, cặp khoá này được sử dụng để mã hoá và giải mã các thông báo. Mỗi thành viên công bố khóa mã hoá của mình bằng cách đặt khoá này vào một địa chỉ được công bố công khai. Đây chính là khoá công khai.
Khoá cùng cặp được giữ bí mật. Nếu A muốn gửi cho B một thông báo, A mã hoá thông báo bằng khoá công khai của B. Khi B nhận được thông báo, B giải mã thông báo bằng khoá riêng của B. Không một người nhận nào khác có thể giải mã thông báo, bởi vì chỉ có B mới biết khoá riêng của mình.
Với cách giải quyết này, tất cả các thành viên tham gia truyền thông đều có thể có được các khoá công khai. Khoá riêng của mỗi thành viên được giữ bí mật. Quá trình liên lạc chỉ an toàn chừng nào khoá riêng còn được giữ bí mật. Mỗi thành viên có thể thay đổi các khoá riêng của mình bất cứ lúc nào, đồng thời công bố các khoá công khai cùng cặp để thay thế khoá công khai cũ.1 trình bày một số đặc điểm quan trọng của mã hoá khoá công khai và mã hoá khoá riêng (mã hoá đối xứng).
Để phân biệt chúng, người ta gọi khoá được sử dụng trong mã hoá đối xứng là khoá bí mật. Hai khoá dùng trong mã hoá khoá công khai là khoá công khai và khoá riêng. Chúng ta xem xét chi tiết các yếu tố cần thiết trong lược đồ mã hoá khoá công khai (hình 1. X (X -íc l-îng) Ph©n tÝch m· KRb(KRb -íc l-îng) Nguån A §Ých B Nguån cña X Y X th«ng b¸o §Ých M· ho¸ Gi¶i m· KRb KUb Nguån cÆp kho¸ H×nh 1.2 HÖ mËt kho¸ c«ng khai: BÝ mËt Nguồn A đưa ra một thông báo rõ và bản rõ của thông báo là X = [X 1, X2,.
Các phần tử Xi (i = 1M) của X là các chữ cái trong bảng chữ cái hữu hạn nào đó. A dự định gửi thông báo cho đích B. B sinh ra một cặp khoá là khoá công khai KUb, khoá riêng KRb. Chỉ có B biết KRb, còn KUb được công bố công khai, do vậy A có thể có được khoá công khai này.1 Mã hoá khoá công khai và đối xứng Hệ mật đối xứng Hệ mật khoá công khai Các yêu cầu khi sử dụng Các yêu cầu khi sử dụng Quá trình mã hoá và giải mã sử dụng Một thuật toán sử dụng một cặp khoá khi cùng một thuật toán với cùng một khoá.
mã hoá và giải mã, một khoá được sử Người gửi và người nhận phải sử dụng dụng khi mã hóa, khoá còn lại được sử chung thuật toán và khoá. dụng khi giải mã. Người gửi và người nhận, mỗi người có một khoá trong cặp khoá. 9 z Các yêu cầu an toàn Các yêu cầu an toàn Khóa phải được giữ bí mật Một trong hai khóa phải được giữ bí mật.
Không thể giải mã được thông báo nếu Không thể giải mã được thông báo nếu không có các thông tin có giá trị khác. không có các thông tin có giá trị khác. Các thông tin về thuật toán, các mẫu Các thông tin về thuật toán, một trong các bản mã không đủ để xác định khoá. khoá và các mẫu bản mã không đủ để xác định khoá còn lại.
Với đầu vào là thông báo X và khoá mã hoá KUb, A tạo ra một bản mã Y = [Y1, Y2, ., YN ] với Y = E KUb(X). Người nhận hợp lệ (người sở hữu khoá riêng) thu được X, qua phép biến đổi ngược X = DKRb(Y). Đối phương (có thể có được Y và KUb nhưng không có KRb hoặc X) phải tìm cách khôi phục lại X và/hoặc KRb. Giả sử rằng, anh ta có các thông tin về thuật toán mã hoá (E) và giải mã (D), anh ta có thể khôi phục thông báo X, bằng cách sinh ra một bản rõ X ước lượng.
Tuy nhiên, để đọc được các thông báo mới, đối phương phải khôi phục được KRb bằng cách sinh ra một KRb ước lượng. Chúng ta đã biết, một trong hai khoá trong cặp khoá có thể được sử dụng để mã hoá, khoá còn lại được sử dụng để giải mã. Điều này cho phép thực hiện một lược đồ mã hơi khác một chút. Lược đồ được minh hoạ trong hình 1.2 cung cấp tính bí mật.3 minh hoạ việc sử dụng mã hoá khoá công khai cho xác thực: Y = EKRa(X) X = DKUa(Y) Ph©n KRa(KRa -íc l-îng) tÝch m· Nguån A §Ých B Nguån cña X M· ho¸ Y Gi¶i m· X §Ých th«ng b¸o KRa KUa Nguån cÆp kho¸ H×nh 1.3 HÖ mËt kho¸ c«ng khai: X¸c thùc 10 z Trong trường hợp này, A chuẩn bị một thông báo để gửi cho B và mã hoá thông báo bằng khoá riêng của A trước khi truyền đi.
B có thể giải mã thông báo bằng khoá công khai của A. Thông báo được mã hoá bằng khoá riêng của A nên có thể xác định chỉ có A là người tạo ra thông báo. Do vậy, toàn bộ thông báo mã hoá được sử dụng như một chữ ký số. Hơn nữa, không thể sửa đổi thông báo nếu không có khoá riêng của A, chính vì vậy thông báo được xác thực cả nguồn gốc lẫn tính toàn vẹn dữ liệu.
Trong lược đồ trước, toàn bộ thông báo được mã hoá, nó đòi hỏi khả năng lưu giữ lớn. Mỗi tài liệu phải được lưu giữ ở dạng rõ. Bản sao được lưu giữ ở dạng mã, do vậy chúng ta có thể kiểm tra được nguồn gốc và các nội dung trong trường hợp tranh chấp. Một cách hiệu quả hơn để có được các kết quả như trên là mã hoá một khối nhỏ các bit.
Khối này được gọi là dấu xác thực. Nó phải có tính chất là mọi thay đổi trên tài liệu dẫn đến sự thay đổi của dấu xác thực. Nếu dấu xác thực được mã hoá bằng khoá riêng của người gửi, nó được sử dụng như một chữ ký. Chữ ký được sử dụng để kiểm tra nguồn gốc, nội dung và trình tự.
Nguån A §Ých B Nguån Y Z Y X §Ých cña XX M· ho¸ M· ho¸ Gi¶i m· Gi¶i m· cña th«ng th«ng b¸o b¸o KRa KUa KUb KRb CÆp kho¸ CÆp cña kho¸ cña ng-êi ng-êi göi nhËn H×nh 1.4 HÖ mËt kho¸ c«ng khai: BÝ mËt vµ x¸c thùc Việc sử dụng lược đồ khoá công khai có thể đảm bảo tính xác thực và bí mật (hình 1.4): Z = EKUb [EKRa(X)] X = DKUa [DKRb(Z)] Trước hết, chúng ta mã hoá một thông báo bằng khoá riêng của người gửi, đưa ra một chữ ký số. Tiếp theo, mã hoá một lần nữa bằng khoá công khai của người nhận. Chỉ có người nhận hợp pháp mới giải mã được bản mã cuối cùng này vì anh 11 z ta có khoá riêng cùng cặp. Như vậy sẽ đảm bảo được tính bí mật.
Khó khăn của biện pháp này là thuật toán khoá công khai, nó thực sự phức tạp, phải tiến hành 4 lần (chứ không phải là 2 lần) cho mỗi cuộc truyền thông .2 CÁC ỨNG DỤNG HỆ THỐNG KHOÁ CÔNG KHAI Trước tiên, chúng ta cần làm rõ một khía cạnh của các hệ thống mật mã khoá công khai. Việc sử dụng một kiểu thuật toán mật mã với 2 khoá (một khoá riêng, một khoá công khai) là đặc trưng của các hệ thống khoá công khai. Tuỳ thuộc vào ứng dụng, người gửi sử dụng khoá riêng của người gửi hoặc khoá công khai của người nhận, hoặc cả hai. Nói rộng hơn, chúng ta có thể phân loại việc sử dụng hệ mật khoá công khai thành 3 loại: 1.
Mã hoá/giải mã: Người gửi mã hoá một thông báo bằng khoá công khai của người nhận. Chữ ký số: Người gửi "ký" thông báo bằng khoá riêng của mình. Quá trình ký được thực hiện nhờ dùng một thuật toán mã đối với thông báo hoặc một khối dữ liệu nhỏ. Trao đổi khoá: Hai thành viên trao đổi khoá phiên.
Có một vài hướng giải quyết khác nhau, cần đến một (hoặc nhiều) khoá riêng của một hoặc hai thành viên.