Thật khó có thể xác định được chính xác điểm bắt đầu của khoa học mật mã nhưng chúng ta có thể khẳng định Mật mã đã có một lịch sử rất dài và phát triển cùng với sự phát triển của xã hội loài người. Từ thời cổ đại, Ceza đã biết cách sử dụng kỹ thuật mật mã để bảo vệ những thông tin quân sự. Từ đó đến nay, mật mã không ngừng được phát
triển và hoàn thiện. Phạm vi ứng dụng của mật mã cũng không ngừng được mở rộng, từ lĩnh vực an ninh quốc phòng đến kinh tế xã hội và thông tin cá nhân. Ta có thể phân chia mật mã thành hai loại hệ mật cơ bản sau:
• Hệ mật khoá bí mật hay còn gọi là hệ mật đối xứng,
• Hệ mật khoá công khai hay còn gọi là hệ mật phi đối xứng.
Đối với hệ mật khoá bí mật thì khoá để mã hoá và khoá để giải mã là như nhau. Khoá này phải được giữ bí mật ở cá đầu mã hoá và đầu giải mã. Cho đến giữa những năm 70 của thế kỷ 20, người ta vẫn chỉ mới biết đến hệ mật khoá đối xứng. Mặc dù hệ mật này tính toán hiệu quả, song nó đã gặp khó khăn rất nhiều khi giải quyết bài toán phân phối khoá. Mọi việc đã thay đổi khi W. Diffie và M. Hellman đưa ra khái niệm mật mã khoá công khai vào năm 1976. Việc phát minh ra các hệ mật khoá công khai đã tạo ra cuộc cách mạng trong khoa học mật mã. Một trong những ứng dụng đầu tiên của nó là để giải quyết vấn đề phân phối khoá trong các hệ mật khoá đối xứng. Đây là một vấn đề gặp rất nhiều khó khăn khi chưa xuất hiện các hệ mật khoá công khai. Ứng dụng mật mã khoá công khai cũng cho phép giảm số khoá cần thiết trong hệ thống. Đối với các hệ mật khoá đối xứng thì để duy trì trao đổi bí mật giữa n thành viên cần tới n(n-1)/2 khoá trong khi nếu sử dụng hệ mật khoá công khai thì chỉ cần n cặp khoá cho n thành viên. Tuy nhiên khi ứng dụng mật mã khoá công khai thì một vấn đề nẩy sinh là làm thế nào để phân phối khoá công khai một các tin cậy. Đây là một vấn đề không hề đơn giản và những nghiên cứu và phát triển Cơ sở hạ tầng khoá công khai hay PKI là nhằm mục đích giải quyết vấn đề này.
Để xây dựng hạ tầng cơ sở khoá công khai có nhiều vấn đề cần phải giải quyết bao gồm cả các vấn đề về công nghệ và các vấn đề về pháp lý. Có giải quyết được các vấn đề này thì mới có thể ứng dụng PKI trong các hoạt động TMĐT. Nhiều vấn đề về công nghệ và pháp lý được tập trung nghiên cứu nhiều trong một số năm gần đây. Các nước phát triển như Mỹ, Canada, châu Âu là những nước đi đầu trong lĩnh vực này. Châu Á cũng đã quan tâm chú ý tại một số nước như Nhật, Hàn quốc, Đài loan, Singapore, Malaixia, Thái lan. Các hội thảo về PKI được tổ chức đều đặn hàng năm. Việt nam đang trong giai đoạn đầu tìm hiểu và ứng dụng thử nghiệm.
Kể từ khi W. Diffie và M. Hellman lần đầu tiên đưa ra khái niệm mật mã khoá công khai, mật mã khoá công khai đã có những phát triển mạnh mẽ. Nhiều thuật toán mã công khai đã được xây dựng như RSA, DSA và lớp các thuật toán mã dựa trên mật mã đường cong Elliptic. Nhiều chuẩn về mã hoá và chữ ký cũng đã được xây dựng như chuẩn mã hoá dữ liệu DES của Mỹ. Tuy nhiên, hạ tầng cơ sở khoá công khai - PKI mới chỉ được phát triển trong khoảng 10 năm trở lại đây. Đầu tiên và trước hết PKI là công nghệ xác thực sử dụng tổ hợp cả mật mã khoá bí mật và mật mã khoá công khai. PKI cho phép một
số dịch vụ an toàn như mã hoá dữ liệu, xác thực dữ liệu và quản lý khoá. Khung làm việc của PKI đã được định nghĩa trong ITU-T X.509 Recommendation.
Trong phần này, đề tài sẽ trình bày những nghiên cứu về lý thuyết, công nghệ và cách ứng dụng thử nghiệm cho mục tiêu đảm bảo an toàn cho các hoạt động TMĐT ở nước ta. Để phục vụ cho mục tiêu đó, trước hết cần tìm hiểu những cơ sở lý thuyết, cơ sở công nghệ và nghiên cứu xây dựng một số ứng dụng cho hoạt động TMĐT ở nước ta. 1. Mật mã đối xứng
Hình bên dưới minh hoạ quá trình mã hoá đối xứng. Bản rõ (dạng văn bản ban đầu có thể hiểu được) được chuyển thành bản mã (dạng văn bản vô nghĩa khó hiểu). Quá trình mã hoá gồm một thuật toán và một khoá. Khoá là một giá trị không phụ thuộc vào bản rõ. Đầu ra của thuật toán phụ thuộc vào khoá xác định (đây chính là khoá đang được sử dụng tại thời điểm này). Nếu chúng ta thay đổi khoá thì đầu ra của thuật toán cũng thay đổi theo.
Một khi bản mã được tạo ra, nó có thể được truyền đi. Tại nơi nhận, bản mã có thể được biến đổi trở lại dạng bản rõ ban đầu, nhờ một thuật toán giải mã và thuật toán này sử dụng cùng một khoá như đã được sử dụng trong khi mã hoá.
Độ an toàn của hệ mã này phụ thuộc vào các yếu tố. Trước hết, thuật toán mã hoá phải đủ mạnh, sao cho việc giải mã một thông báo mà chỉ dựa vào bản mã là không khả thi. Tiếp theo, độ an toàn của mã hoá đối xứng phụ
thuộc vào sự bí mật của khoá, chứ không phải là sự bí mật của thuật toán. Có nghĩa là, việc giải mã một thông báo chỉ dựa vào bản mã và các thông tin về thuật toán mã hoá/giải mã là không khả thi. Nói cách khác, người ta không cần giữ bí mật thuật toán mà giữ bí mật khoá.
Chính đặc tính này đã làm cho mã hoá đối xứng được sử dụng rộng rãi. Đó là vì các thuật toán không cần phải giữ bí mật, có nghĩa là các nhà sản xuất có thể sản xuất các chíp thuật toán mã giá thành thấp. Các chíp này có sẵn và dễ dàng ghép với một số sản phẩm khác. Khi sử dụng mã hoá đối xứng, vấn đề an toàn cần được quan tâm hàng đầu chính là sự bí mật của khoá
2. Mật mã khóa công khai
2.1 Nguyên lý của các hệ thống mật mã khóa công khai
Khái niệm mật mã khoá công khai nảy sinh khi giải quyết hai vấn đề khó khăn trong mã hóa đối xứng: 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:
- Dùng chung một khoá được phân phối theo cách nào đó hoặc sử dụng một trung tâm phân phối khoá.
Whitfield Diffie đã 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ờ
2.2 Các hệ thống mã hó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ã. Hình minh hoạ quá trình mã hoá khoá công khai. Các bước cơ bản gồm:
- Mỗi hệ thống cuối trên một mạng 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à nó nhận được.
- Mỗi hệ thống công bố khóa mã hoá của mình bằng cách đặt khoá này vào trong một thanh ghi công khai hoặc một file. Đâ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, nó 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 có thể truy nhập vào các khoá công khai. Khoá riêng do mỗi thành viên sinh ra không bao giờ được phân phối. Quá trình liên lạc chỉ an toàn chừng nào hệ thống còn kiểm soát được khoá riêng của mình. Một hệ thống có thể thay đổi các khoá riêng của nó 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ũ.
Bảng II.1 trình bày một số điểm quan trọng của mã hoá khoá công khai và mật mã truyền thống (mã đối xứng). Để phân biệt chúng, người ta gọi khoá (được sử dụng trong mã đố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
2.3 Các ứng dụng hệ thống khóa 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ể việc sử dụng các hệ thống mật mã khoá công khai thành 3 loại:
- 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ật 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 một 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.
Một số thuật toán phù hợp cho tất cả các ứng dụng, còn một số thuật toán khác chỉ được sử dụng cho một hoặc hai ứng dụng của chúng.
2.4 Các yêu cầu đối với mật mã khóa công khai
Các ứng dụng hệ mật được minh hoạ phụ thuộc vào một thuật toán mật mã với hai khoá cùng cặp. Diffie và Hellman đưa ra các điều kiện mà các thuật toán trên phải đáp ứng như sau:
Thành viên B có thể dễ dàng sinh ra được một cặp khoá (khoá công khai KUb và khoá riêng KRb).
Người gửi A dễ dàng biết được khoá công khai, mã hoá thông báo M và tạo ra một bản mã tương ứng: C=EKUb(M)
Người nhận B dễ dàng giải mã được bản mã bằng cách sử dụng khoá riêng, khôi phục lại thông báo ban đầu.M=DKRb(C) =DKRb[EKUb(M)]
Đối phương khó có thể xác định được khoá riêng KRb, mặc dù biết khoá công khai KUb.
Đối phương khó có thể khôi phục lại thông báo M ban đầu dù biết khoá công khai KUb và bản mã C.
2.5 Quản lý khóa
Một trong các vai trò chính của mã hoá khoá công khai là giải quyết vấn đề phân phối khoá. Khi sử dụng mã hoá khoá công khai, chúng ta cần phân biệt hai khái niệm sau:
• Phân phối các khoá công khai.
• Sử dụng mã hoá khoá công khai để phân phối các khoá bí mật. Chúng ta sẽ xem xét từng khái niệm sau đây
2.6 Phân phối các khóa công khai
Người ta đã đề xuất một số kỹ thuật phân phối khoá công khai. Các đề xuất này có thể được nhóm lại như sau:
• Khai báo công khai • Thư mục công khai
• Cơ quan quản lý khoá công khai • Các chứng thư khoá công khai
Xuất phát điểm của mật mã khoá công khai là khoá công khai được công bố công khai. Do vậy, nếu có một thuật toán được chấp nhận rộng rãi, chẳng hạn như RSA, bất kỳ thành viên nào cũng có thể gửi khoá công khai của mình cho thành viên khác hoặc quảng bá cho cộng đồng
Mặc dù giải pháp này khá thích hợp, nhưng nó có nhược điểm là bất kỳ ai cũng có thể giả mạo một khoá công khai. Có nghĩa là, một người sử dụng nào đó có thể giả danh là người sử dụng A và gửi một khoá công khai cho thành viên khác. Khoảng thời gian cho đến khi người sử dụng A phát hiện ra sự gian lận và thông báo cho các thành viên khác, đối tượng giả mạo có thể đã đọc toàn bộ các thông báo mã hoá gửi cho A và có thể sử dụng các khoá giả cho xác thực
Thư mục công khai
Chúng ta có thể có được độ an toàn cao, bằng cách duy trì một thư mục công khai. Việc duy trì và phân phối thư mục công khai thuộc trách nhiệm của một tổ chức tin cậy nào đó
Một lược đồ như vậy gồm các yếu tố sau:
Cơ quan quản lý duy trì một thư mục, mỗi thành viên có một đầu vào entry {tên, khoá công khai}.
Mỗi thành viên đăng ký một khoá công khai với cơ quan quản lý thư mục. Việc đăng ký này có thể được thực hiện bởi một cá nhân hoặc qua hình thức liên lạc có xác thực an toàn nào đó.
Một thành viên có thể thay thế một khoá mới bất kỳ lúc nào, chẳng hạn khi họ muốn thay thế một khoá công khai đã được sử dụng nhiều, hoặc khi khoá riêng cùng cặp bị lộ. Cơ quan quản lý công bố toàn bộ thư mục hoặc cập nhật thư mục một cách định kỳ. Các thành viên cũng có thể truy nhập vào thư mục. Chính vì vậy, việc truyền thông xác thực an toàn (từ cơ quan quản lý đến thành viên) phải mang tính bắt buộc.
2.7 Cơ quan quản lý khóa công khai
Việc phân phối khoá công khai được đảm bảo an toàn cao hơn nếu cung cấp các kiểm soát chặt chẽ khi phân phối khoá công khai từ thư mục
Một cơ quan trung tâm duy trì một thư mục khoá công khai động cho tất cả các thành viên. Mỗi thành viên biết một khoá công khai nhưng chỉ có cơ quan này biết khoá riêng cùng cặp
2.8 Các chứng thư khóa công khai
Cơ quan quản lý khoá công khai gần giống như một cổ chai trong hệ thống. Người sử dụng phải yêu cầu cơ quan quản lý cấp khoá công khai cho người sử dụng khác khi họ muốn liên lạc. Như đã trình bày từ trước, cơ quan quản lý duy trì thư mục (mỗi đầu vào bao gồm tên và khoá công khai) - đây cũng là chính là điểm yếu dễ bị giả mạo.
Một giải pháp lựa chọn là sử dụng chứng thư. Các thành viên sử dụng chứng thư này để trao đổi khoá mà không cần liên lạc với cơ quan quản lý khoá công khai. Mỗi chứng thư chứa một khoá công khai và các thông tin khác. Nó được một cơ quan quản lý chứng thư tạo ra và phát hành cho các thành viên. Một thành viên chuyển thông tin khoá của mình cho thành viên khác thông qua các chứng thư. Các thành viên khác có thể kiểm tra chứng thư do cơ quan quản lý tạo ra.
Chúng ta có thể đưa vào lược đồ này các yêu cầu như sau:
Một thành viên có thể đọc chứng thư để xác định tên và khoá công khai của người sở hữu chứng thư.
Mọi thành viên có thể kiểm tra: chứng thư có nguồn gốc từ cơ quan quản lý chứng thư và nó không bị giả mạo.
Chỉ có cơ quan quản lý chứng thư mới có thể tạo ra và cập nhật các chứng thư.Và một yêu cầu được bổ sung thêm như sau:
Mọi thành viên có thể kiểm tra sự lưu hành của chứng thư. Hình minh hoạ một