C i= LSi(i-1) Di = LSi(Di-1)
K không gian khoá là tập hữu hạn các khoá có thể.
Với mỗi K thuộc K tồn tại một thuật toán kí sigk S và là một thuật toán xác minh verk V. Mỗi sigk : P A và verk: P×a {true,false} là những hàm sao cho mỗi thông điệp x P và mối chữ kí y a thoả mãn phương trình dưới đây.
Với mỗi k thuộc K hàm sigk và verk là các hàm có thời gian đa thức. verk sẽ là hàm công khai, sigk là bí mật. Không thể dể dàng tính toán để giả mạo chữ kí của Bob trên
∈
∈ → →
thông điệp x. Nghĩa là x cho trước, chỉ có Bob mới có thể tính được y để verk = True. Một sơ đồ chữ kí không thể an toàn vô điều kiện vì Oscar có thể kiểm tra tất cả các chữ số y có thể có trên thông điệp x nhờ dùng thuật toán verk công khai cho đến khi anh ta tìm thấy một chữ kí đúng. Vì thế, nếu có đủ thời gian. Oscar luôn luôn có thể giả mạo chữ kí của Bob. Như vậy, giống như trường hợp hệ thống mã khoá công khai, mục đích của chúng ta là tìm các sơ đồ chữ kí số an toàn về mặt tính toán.
6.2 Hàm băm
Chúng ta có thể thấy rằng các sơ đồ chữ kí nói chung chỉ cho phép kí các bức điện nhỏ. Thông thường khi sử dụng một sơ đồ chữ ký, chữ ký được sinh ra có độ dài lớn hơn so với văn bản ký, do vậy kích thước văn bản sau khi ký sẽ tăng lên rất nhiều. Và trên thực tế ta cần ký trên các bức điện rất dài, chẳng hạn, một tài liệu về pháp luật có thể dài nhiều Megabyte.
Một cách đơn giản để giải bài toán này là chia các bức điện dài thành nhiều đoạn sau đó kí lên các đoạn đó độc lập nhau. Ðiều này cũng tương tự như mã hóa một chuỗi dài bản rõ bằng cách mã hóa mỗi kí tự bản rõ độc lập nhau sử dụng cùng một bản khoá. (Ví dụ: chế độ ECB trong Mã hóa).
Biện pháp này có một số vấn đề trong việc tạo ra các chữ kí số. Trước hết, với một bức điện dài, ta kết thúc bằng một chữ kí rất lớn. Nhược điểm khác là các sơ đồ chữ kí “an toàn” lại chậm vì chúng dùng các phương pháp số học phức tạp như số mũ modulo. Tuy nhiên, vấn đề nghiêm trọng hơn với phép toán này là bức điện đã kí có thể bị sắp xếp lại các đoạn khác nhau,hoặc một số đoạn trong chúng có thể bị loại bỏ và bức điện nhận được vẫn xác minh được. Ta cần bảo vệ sự nguyên vẹn của toàn bộ bức điện và điều này không thể thực hiện được bằng cách kí độc lập từng mẩu nhỏ của chúng.
Giải pháp cho tất cả các vấn đề này là dùng hàm Hash mã hóa khoá công khai nhanh. Hàm này lấy một bức điện có độ dài tuỳ ý và tạo ra một bản tóm lược thông báo có kích thước qui định (VD: 160 bit với DSS). Sau đó bản tóm lược thông báo sẽ được ký thay vì ký trực tiếp trên văn bản gốc.
Khi Bob muốn kí bức điện x, trước tiên anh ta xây dựng một bản tóm lược thông báo z = h(x) và sau đó tính y = sigK (z ). Bob truyền cặp ( x, y) trên kênh. Xét thấy có thể thực hiện xác minh (bởi ai đó ) bằng cách trước hết khôi phục bản tóm lược thông báo z =h (x) bằng hàm h công khai và sau đó kiểm tra xem verk (x,y) có = true, hay không.
Trường Đại học Hải Phòng Bài giảng: An toàn thông tin
• Giá trị trả lại của hàm băm duy nhất đối với mỗi giá trị đầu vào. Bất kỳ sự thay đổi nào của dữ liệu vào cũng đều dẫn đến một kết quả sai.
• Từ đại diện văn bản không thể suy ra được dữ liệu gốc là gì, chính vì điều này mà người ta gọi là one-way.
Như đã đề cập trong phần mã hóa khóa khóa công khai, nó có thể sử dụng khóa bí mật của bạn cho việc mã hóa và khóa khóa công khai cho việc giải mã. Cách sử dụng cặp khóa như vậy không được dùng khi cần có sự bí mật thông tin, mà chủ yếu nó dùng để “ký” cho dữ liệu. Thay vào việc đi mã hóa dữ liệu, các phần mềm ký tạo ra đại diện văn bản (message digest) của dữ liệu và sử dụng khóa bí mật để mã hóa đại diện đó. Hình dưới đưa ra mô hình đơn giản hóa việc chữ ký số được sử dụng như thế nào để kiểm tra tính toàn vẹn của dữ liệu được ký.
Sử dụng chữ ký số để kiểm tra tính toàn vẹn của dữ liệu
Trong hình trên có hai phần được gửi cho người nhận: dữ liệu gốc và chữ ký số. Để kiểm tra tính toàn vẹn của dữ liệu, người nhận trước tiên sử dụng khóa khóa công khai của người ký để giải mã đại diện văn bản (message disgest) đã được mã hóa và khóa bí mật của người ký. Dựa vào thông tin về thuật toán băm trong chữ ký số, người nhận sẽ tạo ra đại diện văn bản từ dữ liệu gốc và mới. Nếu các đại diện này giống nhau tức là dữ liệu không bị thay đổi từ lúc được ký. Nếu không giống nhau có nghĩa là dữ liệu đã bị giả mạo, điều này cũng có thể xảy ra khi sử dụng hai khóa khóa khóa công khai và khóa bí mật không tương ứng.
Nếu như hai đại diện văn bản giống nhau, người nhận có thể chắc chắn rằng khóa khóa công khai được sử dụng để giải mã chữ ký số là tương ứng với khóa bí mật được sử dụng để tạo ra chữ ký số. Để xác thực định danh của một đối tượng cũng cần phải xác thực khóa khóa công khai của đối tượng đó.
Trong một vài trường hợp, chữ ký số được đánh giá là có thể thay thế chữ ký bằng tay. Chữ ký số chỉ có thể đảm bảo khi khóa bí mật không bị lộ. Khi khóa bí mật bị lộ thì người sở hữu chữ ký không thể ngăn chặn được việc bị giả mạo chữ ký.
6.3 Phân loại các sơ đồ chữ ký điện tử
Chữ ký cơ chế chữ ký điện tử được chia làm 2 lớp, lớp chữ ký kèm thông điệp (message appendix) và lớp chữ ký khôi phục thông điệp (message recovery) như sau:
• Chữ ký kèm thông điệp: Ðòi hỏi thông điệp ban đầu là đầu vào giải thuật kiểm tra.
• Chữ ký khôi phục thông điệp: Thông điệp ban đầu được sinh ra từ bản thân chữ ký.
Sau đây là hình biểu diễn phân loại ở mức tổng quan về chữ ký điện tử
Phân lớp các sơ đồ chữ ký
6.3.1 Sơ đồ chữ ký kèm thông điệp
Sơ đồ ký kèm thông điệp là sơ đồ được sử dụng nhiều nhất trong thực tế. Nó dựa trên các hàm băm mã hoá hơn là dựa trên các hàm băm bất kỳ và ít bị lỗi khi bị tấn công theo kiểu giả mạo. Chúng ta có thể định nghĩa chính xác sơ đồ chữ ký này như sau:
Ðịnh nghĩa : Một sơ đồ ký đòi hỏi thông điệp đầu vào là một tham số cho quá trình xác nhận chữ ký là sơ đồ ký kèm thông điệp. Ví dụ : ElGamal, DSA, Schonor