Chương 1. Tổng quan các chuẩn chữ ký số. Xây dựng lược đồ chữ ký số trên cơ sở bài toán phân tích số. Cài đặt và thử nghiệm chương trình.
TỔNG QUAN CÁC CHUẨN CHỮ KÝ SỐ Chương này trình bày các khái niệm cơ bản về chữ ký số, một số hệ chữ ký số điển hình, chức năng và khả năng ứng dụng của chữ ký số, quy trình ký, xác thực chữ ký số và định hướng nghiên cứu của đề tài. Đây chính là những kiến thức cơ bản và chung nhất cho việc tạo ra một chữ ký số hoàn chỉnh, là nền tảng để phát triển thuật toán lược đồ chữ ký số ở chương sau. Giới thiệu về hệ mật mã khóa công khai các nguyên lý Mã hóa bất đối xứng thường được hiểu là mã hoá sử dụng khóa công khai. Mã hóa bất đối xứng sử dụng một cặp khóa: khóa bí mật và khóa công khai, được miêu tả như hình 1.
Mỗi quá trình truyền tin sử dụng một cặp khóa duy nhất và có thể sử dụng linh hoạt. Khóa bí mật cần phải lưu trữ riêng và đảm bảo tính bảo mật, không được truyền trên mạng. Khóa công khai có thể được cung cấp miễn phí và công bố tới mọi người.1 Hệ thống sử dụng mã hóa khóa công khai Tương tự như mã hoá khoá bí mật, phương pháp này cũng có các thành phần chính như sau: - Plaintext: bản tin gốc. - Encryption Algorithm: Thuật toán mã hóa.
- Public/Private keys: cặp khóa công khai/bí mật. - Ciphertext: bản tin đã mã hóa. - Decryption Algorithm: Thuật toán giải mã. Quá trình sử dụng mã hóa khóa công khai: 4 - Bên nhận sinh cặp khóa.
- Khóa công khai thường được chứng thực bởi một bên thứ ba tin cậy và chuyển cho người gửi theo các phương thức truyền thông thông thường. - Bên gửi nhận được khóa công khai, kiểm tra các thông tin chứng thực khoá và dùng khóa này để mã hóa thông điệp và gửi cho bên nhận. - Bên nhận sử dụng khoá bí mật để giải mã thông điệp. - Thông điệp có thể bị bên thứ ba lấy trộm, nhưng không thể đọc được nội dung.
Các khái niệm cơ bản 1.1 Hệ khoá công khai RSA RSA là hệ mật mã khóa công khai phổ biến và cũng đa năng nhất trong thực tế, phát minh bởi Rivest, Shamir & Adleman (1977). Nó là chuẩn mật mã bất thành văn đối với PKC, cung cấp đảm bảo tính mật, xác thực và chữ ký điện tử. Cơ sở thuật toán RSA dựa trên tính khó của bài toán phân tích các số lớn ra thừa số nguyên tố: không tồn tại thuật toán thời gian đa thức (theo độ dài của biểu diễn nhị phân của số đó) cho bài toán này. Chẳng hạn, việc phân tích một hợp số là tích của 2 số nguyên tố lớn hàng trăm chữ số sẽ mất hàng ngàn năm tính toán với một máy PC trung bình có cấu hình CPU khoảng trên 2Ghz.
Ý tưởng (Motivation) Các nhà phát minh có lựa chọn khá giản dị là xây dựng thuật toán sinh/giải mã trên cơ sở phép toán lấy luỹ thừa đồng dư trên trường Zn = {0,1,2,. Chẳng hạn, việc sinh mã cho tin X sẽ được thực hiện qua: Y = Xe n Ở đây ta dùng ký hiệu a = b n nghĩa là a = b k* n với a Zn còn k = 1,2,3,., ví dụ 7 = 33 10) còn việc giải mã: 5 X = Yd n (e – khóa sinh mã, d – khóa giải mã) Như vậy để hai hàm sinh mã và giải mã này là hàm ngược của nhau, e và d phải được chọn sao cho: Xed = X n Người ta đã tìm được cách xây dựng cặp số (e,d) này trên cơ sở công thức như sau: X(n) = 1 n (định lý Ơ - le) Trong đó (n) hàm số cho biết số lượng các số thuộc Zn mà nguyên tố cùng nhau với n. Người ta cần chọn e*d sao cho chia (n) dư 1, hay d= e-1 (n), khi đó ta sẽ có điều cần thiết: Xed = Xk(n) +1 =( X(n))d * X = 1*X =X (n) có thể tính được khi đã biết công thức phân tích thừa số nguyên tố của n, cụ thể là nếu đã biết n = p*q (p.q là số nguyên tố) thì (n) = (p-1) (q- 1). Nói cách khác nếu như cho trước một số e thì nếu đã biết công thức phân tích thừa số nguyên tố của n ta có thể dễ dàng tìm được d sao cho d= e-1 (n) hay là Xed = X n, còn nếu không biết thì rất khó.
Vừa rồi là phần trình bày dẫn dắt về cội nguồn của thuật toán, sau đây là thuật toán cụ thể.2 Khái niệm chữ ký số Chữ ký số : Là một thể chứng thực được mã hóa bởi khoá bí mật của người gửi. Chữ ký số là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video.) nhằm mục đích xác định chủ thể của dữ liệu đó. Quá trình tạo và xác thực chữ ký số được mô tả như Hình 1.1 Vai trò của chữ ký số Chữ ký số dùng cho các văn bản số, cho biết toàn bộ văn bản đã được ký bởi người ký. Và người khác có thể xác minh điều này.
Chữ ký số tương tự như chữ ký thông thường, đảm bảo nội dung tài liệu là đáng tin cậy, chính xác, không hề thay đổi trên đường truyền và cho biết người tạo ra tài liệu là ai. Tuy nhiên, chữ ký số khác chữ ký thường, vì nó tuỳ thuộc vào văn bản. Chữ ký số sẽ thay đổi theo văn bản còn chữ ký thường thì không hề thay đổi. Chữ ký số được sử dụng để cung cấp chứng thực chủ sở hữu, tính toàn vẹn dữ liệu và chống chối bỏ nguồn gốc trong rất nhiều các lĩnh vực.
Ứng dụng của chữ ký số Giải pháp dùng chữ ký số là tối ưu vì nó có hiệu lực pháp luật, do đó không cần in ấn tài liệu mà vẫn có thể xác nhận được tài liệu, đảm bảo tính toàn vẹn và không chối bỏ. Chữ ký số được phát hành bởi bên thứ ba là cơ quan chứng thực có thẩm quyền cấp phát, thu hồi, quản lý chứng chỉ số cho các thực thể thực hiện các giao dịch an toàn ( Certificate Authority hoặc CA) nên đảm bảo tính khách quan. Như vậy, quá trình tạo chữ ký số, xác nhận các 7 yêu cầu pháp lý, bao gồm xác thực người ký, xác thực tin nhắn, là thành công và hiệu quả. Chính vì những ưu điểm của chữ ký số, nó được dùng trong nhiều ứng dụng: Đảm bảo an ninh truyền thông, ngân hàng trực tuyến, thương mại điện tử, đảm bảo an ninh cho thư điện tử, … 1.3 Các bước tạo và kiểm tra chữ ký điện tử Quá trình sử dụng chữ ký số được thực hiện theo 2 giai đoạn: Tạo chữ ký và kiểm tra chữ ký số.
Có thể dùng khoá công khai hoặc khoá bí mật để thực hiện các khâu trên. Hai quá trình tạo và kiểm tra sẽ được trình bày cụ thể tiếp sau đây. Các bước tạo chữ ký: - Dùng giải thuật băm để tính message digest của thông điệp cần truyền đi. Kết quả ta được một message digest.
- Sử dụng khóa bí mật của người gửi để mã hóa message digest thu được ở bước 1. Thông thường ở bước này ta dùng giải thuật RSA. Kết quả thu được gọi là digital signature của thông điệp ban đầu. Công việc này gọi là “ký” vào thông điệp.
Sau khi đã ký vào thông điệp, mọi sự thay đổi trên thông điệp sẽ bị phát hiện trong giai đoạn kiểm tra. Ngoài ra, việc ký này đảm bảo người nhận tin tưởng thông điệp này xuất phát từ người gửi chứ không phải là ai khác. - Gộp digital signature vào thông điệp ban đầu và gửi đến người nhận. Các bước kiểm tra: - Tách message ban đầu và chữ ký số.
- Dùng khóa công khai của người gửi (khóa này được thông báo đến mọi người) để giải mã chữ ký số của thông điệp. - Dùng giải thuật (MD5 hoặc SHA) băm thông điệp ban đầu. 8 - So sánh 2 chuỗi băm kết quả thu được ở 2 bước trên. Nếu trùng nhau, ta kết luận thông điệp này không bị thay đổi trong quá trình truyền và thông điệp này là của người gửi.4 Định nghĩa lược đồ chữ ký số Một lược đồ chữ ký số là bộ 5( M, A, K, S, V ) thỏa mãn các điều kiện sau: 1.
M là tập hữu hạn các bản tin. S là tập hữu hạn các chữ ký. K là tập hữu hạn các khóa bí mật. A là tập hữu hạn các thuật toán ký.
V là tập hữu hạn các thuật toán xác minh. Với mỗi k ∈ K tồn tại một thuật toán ký sigk ∈ A và một thuật toán xác minh verk ∈ V tương ứng, mỗi sigk : M → S và verk: M × S → { true, false} là hàm sao cho với mỗi m ∈ M và s ∈ S thỏa mãn phương trình sau: 𝑡𝑟𝑢𝑒, 𝑠 = 𝑠𝑖𝑔𝑘(𝑚) 𝑉𝑒𝑟(𝑠, 𝑚) = { 𝑓𝑎𝑠𝑒 , 𝑠 ≠ 𝑠𝑖𝑔𝑘(𝑚) 1.5 Chức năng của chữ ký số - Non-repudiation: Giúp cho người nhận khi kiểm tra nội dung đã được ký chữ ký số kèm theo sẽ biết chắc người ký không thể chối cãi về những gì đã tạo ra ở thời điểm bắt đầu tạo chữ kí số. - Integrity: Chữ ký số giúp kiểm tra tính toàn vẹn dữ liệu của nội dung được gửi đi là không bị thay đổi hay chỉnh sửa kể từ lúc khởi tạo chữ ký số và ký vào văn bản gửi đi. - Authenticity: Chữ ký số cũng dùng để chứng thực nguồn gửi nội dung thông điệp đi.
Thường thì thông tin về người chủ của chữ ký sẽ được thêm vào kèm với nội dung chữ ký số để giúp người nhận chứng thực được ai đã 9 gửi thông điệp đi. Chữ ký số ứng dụng nhiều trong các hoạt động cấp chứng chỉ Certificate SSL,… Chữ ký số cũng có có thể sử dụng trong các giao dịch thư điện tử, để mua bán hàng trực tuyến, đầu tư chứng khoán trực tuyến, chuyển tiền ngân hàng, thanh toán trực tuyến mà không sợ bị đánh cắp tiền như với các tài khoản Visa, Master.6 Các yêu cầu thành phần để tạo ra được chữ ký số Chữ ký số dựa trên công nghệ mã hoá khóa công khai (RSA): Mỗi người dùng phải có 1 cặp khóa (key pair) bao gồm khóa công khai (public key) và khóa bí mật (private key). + Private key: Là một khóa trong cặp khóa thuộc hệ thống mật mã không đối xứng, được dùng để tạo chữ ký số. + Public key: Là một khóa trong cặp khóa thuộc hệ thống mật mã không đối xứng, được sử dụng để giả mã kiểm tra chữ ký số được tạo bởi khóa bí mật tương ứng trong cặp khóa.