Phân loại chữ ký số tập thể

Một phần của tài liệu Xây dựng một số lược đồ chữ ký số tập thể dựa trên bài toán phân tích số (Trang 27)

Chữ ký số tập thể có nhiều dạng như chữ ký số tập thể mù, chữ ký số tập thể ủy nhiệm, chữ ký số bội, chữ ký nhóm. Tuy nhiên, có thể chia các loại chữ ký số tập thể thành hai dạng sau chữ ký số tập thể có phân biệt trách nhiệm của người ký và chữ ký số tập thể không phân biệt trách nhiệm người ký.

- Chữ ký số tập thể có phân biệt trách nhiệm của người ký

Theo L. Harn [41], mỗi thành viên tham gia ký phải có trách nhiệm với từng phần văn bản ký. Chữ ký số tập thể trong công bố của L. Harn có các thuộc tính như Chữ ký số tập thể được tạo ra không cần biết khóa bí mật của từng người ký và được xác thực bằng khóa công khai của của cả tập thể; Chữ ký số tập thể sẽ không tạo được nếu không có sự tham gia của tất cả các thành viên. Tuy nhiên, trong thực tế những người ký có thể sẽ có vai trò khác nhau và chịu trách nhiệm các phần khác nhau trong văn bản. Mỗi người ký có thể chịu trách nhiệm đúng phần văn bản có liên quan đến chức năng và trách nhiệm của mình. Khi chữ ký tập thể đảm bảo được các thuộc tính như trên thì được gọi là chữ ký số tập thể có phân biệt trách nhiệm.

- Chữ ký số tập thể không phân biệt trách nhiệm của người ký

Trong công bố [40] của L. Harn, các thành viên ký trong lược đồ đều có vai trò giống nhau và không phân biệt trách nhiệm. Tất cả các thành viên cùng ký vào toàn bộ văn bản. Mỗi thành viên tham gia ký đều có khóa công khai và khóa bí mật khác nhau.

1.3. Cơ sở toán học sử dụng trong luận án

1.3.1. Một số bài toán đặc thù trong lý thuyết số ứng dụng cho modulo

Với sự phát triển mạnh mẽ của khoa học kỹ thuật, đặc biệt là hệ thống mạng Internet hiện nay, thì việc nâng cao độ an toàn bảo mật thông tin trong

các hệ thống là điều rất quan trọng, đồng thời góp phần giảm thiểu việc gây ra mất mát thông tin và thiệt hại về kinh tế. Trong khi đó, các giao dịch trên mạng yêu cầu xác thực thông tin của người gửi, người nhận ngày càng được phổ biến. Do đó, việc xây dựng, phát triển các thuật toán, lược đồ chữ ký dựa trên tính khó giải của các bài toán được kết hợp lại với nhau sẽ đạt được hiệu quả cao trong việc nâng cao độ an toàn cho các thuật toán chữ ký số.

1.3.1.1. Bài toán khó trong lý thuyết số và ứng dụng trong hệ mật

Bài toán khó (Hard Problem) một bài toán được gọi là khó nếu chưa tồn tại thuật toán thời gian đa thức để giải nó.

Vấn đề khó (Difficult Problem) một vấn đề được gọi là khó đối với đối tượng A trong khoảng thời gian T nếu người này không thể giải quyết được nó trong thời gian nói trên.

Trong các ứng dụng mật mã việc xây dựng các hệ mật hay các lược đồ chữ ký thường được lựa chọn sao cho bài toán tấn công chúng là bài toán khó. Tuy nhiên, khi phân tích về độ an toàn của các ứng dụng này phải quan tâm đến đối tượng tấn công và thời gian cho phép đối với việc tấn công, cho nên một ứng dụng được gọi là an toàn trước đối tượng A trong thời gian T, nếu vấn đề tấn công là vấn đề khó đối với A và đây là cơ sở cho phương pháp xây dựng hệ mật an toàn.

Vấn đề xây dựng các hệ mật hay các lược đồ chữ ký có độ an toàn dựa trên hai bài toán khó A và B nhằm mục đích có được các ứng dụng mật mã vẫn an toàn, ngay cả trong tình huống một trong hai bài toán nêu trên bị phá.

Từ mục đích trên cho thấy, một ứng dụng mật mã dựa trên hai bài toán khó A và B nếu thỏa mãn các điều kiện

- Muốn tấn công thì phải giải được đồng thời A và B.

- Bài toán giải A trong điều kiện giải được B (kí hiệu là bài toán A/B) và bài toán giải B trong điều kiện giải được A (kí hiệu là bài toán B/A) đều là bài toán khó.

khó thì việc xác định tiêu chuẩn cho các tham số được dùng trong ứng dụng này cũng tuân theo điều kiện nhất định để đảm bảo được ngưỡng an toàn nào đó. Ngưỡng an toàn được hiểu là số phép toán cơ bản người tấn công không thể thực hiện được trong thời gian T.

1.3.1.2. Một số bài toán cơ sở sử dụng trong luận án a. Bài toán phân tích số

Định nghĩa 1.2 [20] Cho trước một số nguyên dương n, thừa số nguyên tố của nó được viết dưới dạng

� � �

(1.2) Trong đó pi là các số nguyên tố phân biệt theo từng cặp và�� ≥ 1.

Một trường hợp riêng của bài toán phân tích số được ứng dụng để xây dựng hệ mật RSA [57] mà ở đó n là tích của 2 số nguyên tố p q. Khi đó, bài toán phân tích số hay còn gọi là bài toán IFP(n) được phát biểu như sau

Với mỗi số nguyên dương n, hãy tìm số nguyên tố p hoặc q thỏa mãn phương trình (1.3)

p q n (1.3)

Thực tế bài toán đặt ra chỉ cần tìm được một số p hoặc q. Bài toán này chỉ là bài toán khó khi n đủ lớn, tức là, khi n là hợp số có hàng trăm chữ số thập phân và chỉ có hai ước nguyên tố. Theo đó, bản chất của bài toán là tìm được một số nguyên tố lớn là ước của n cho trước. Vấn đề thực tế và ý nghĩa của bài toán nếu n là hợp số lớn bất kỳ thì rất khó để kiểm tra n chỉ có hai ước nguyên tố. Trong mật mã học, người ta thường biết trước n là tích của hai số nguyên tố lớn, nhưng giá trị cụ thể của hai số nguyên tố này không được biết trước. Người khác muốn tìm được p, q phải giải phương trình trên.

Giải thuật cho bài toán IFP(n) có thể được viết như một thuật toán tính hàm IFP(.) với biến đầu vào là n, còn giá trị hàm là p hoặc q của phương trình

p IFPn hoặc q IFPn (1.4) � = �11�22 … ���

Trong hệ mật RSA, bài toán phân tích số được sử dụng trong việc hình thành cặp khóa công khai và khóa bí mật cho mỗi thực thể ký. Với việc giữ bí mật các tham số (p, q) thì việc tính được khóa bí mật (d) từ khóa công khai (e) và modulo n là một bài toán khó nếu p, q được chọn đủ lớn và mạnh. Hiện tại, IFP(n) vẫn được coi là bài toán khó do chưa có giải thuật thời gian đa thức cho bài toán này và hệ mật RSA là một minh chứng cho tính khó giải của bài toán IFP(n). Trong thực tế, các tham số p, q có thể chọn theo X9.31 hay FIPS 186 - 4 của Hoa Kỳ cho hệ mật RSA [51].

b. Bài toán khai căn trên Zn

Cho cặp số nguyên dương (n,e) với n là tích 2 số nguyên tố p q sao cho bài toán phân tích số là khó giải trên Zn, còn e là một giá trị thỏa mãn 1 e (n) và gcd(e, (n)) 1 , ở đây  (n) ( p 1) (q 1) . Khi đó, bài toán khai căn trên Zn hay còn gọi là RSAP(n,e) được phát biểu như sau

phương trình (1.5)

x e mod n y (1.5)

Giải thuật cho bài toán RSAP(n,e) có thể được viết như một thuật toán tính hàm RSAP(n,e)(.), với biến đầu vào là y, còn giá trị hàm là x của phương trình (1.6)

x RSAP(n,e) y (1.6) Bài toán RSAP(n,e) cũng là cơ sở để xây dựng nên hệ mật RSA. Trong hệ mật RSA nếu giải được RSAP(n,e), kẻ thám mã có thể tìm được bản rõ (M) từ bản mã (C) và các tham số công khai (n,e), hoặc dễ dàng tạo được chữ ký giả mạo (S) cho một bản tin bất kỳ (M) mà không cần biết khóa bí mật (d) của đối tượng ký (bị mạo danh). Tuy nhiên, hiện tại việc tấn công hệ mật RSA bằng việc giải RSAP(n,e) là vẫn chưa khả thi.

c. Bài toán logarit trên Zp

Định nghĩa 1.3 [62] Nếu p là một số nguyên tố, thì Zp là ký hiệu của tập các số nguyên0,1,2,..., 1, p -1. Các phép cộng và phép nhân được thực hiện qua

phép modulo p. Khi đó, tồn tại một phần tử g Z p 0 sao cho mỗi phần tử khác 0 trong Zp có thể được viết dưới dạng lũy thừa của g. Phần tử g được gọi là phần tử sinh của Zp.

Bài toán phát biểu như sau cho cặp số nguyên dương (p,g) với p là số nguyên tố, còn g là một phần tử của nhóm Zp*. Khi đó, bài toán logarit rời rạc trên Zp hay còn gọi là bài toán DLP(p,g) được phát biểu như sau

phương trình (1.7)

g x mod p y (1.7)

Giải thuật cho bài toán DLP(p,g) có thể được viết như một thuật toán tính hàm DLpP(.) với biến đầu vào là y, còn giá trị hàm là x của phương trình (1.8)

x DLp P y (1.8)

Bài toán DLP(p,g) là cơ sở để xây dựng nên hệ mật Elgamal, việc sử dụng rộng rãi của hệ mật Elgamal [69] và các biến thể của nó trong thực tế hiện nay là một minh chứng cho tính khó giải của bài toán này.

d. Bài toán logarit trên Zn

Cho cặp số nguyên dương (n,g) với n là tích hai số nguyên tố p q sao cho bài toán phân tích số là khó giải trên Zn, còn g là một phần tử của nhóm Zn*. Khi đó, bài toán logarit rời rạc trên Zn hay còn gọi là bài toán DLP(n,g) được phát biểu như sau

phương trình (1.9)

g x mod n y (1.9)

Giải thuật cho bài toán DLP(n,g) có thể được viết như một thuật toán tính hàm DLnP(.), với biến đầu vào là y, còn giá trị hàm là x của phương trình (1.10)

x DLn P y 1.10)

Bài toán DLP(p,g) Với mỗi số nguyên dương y Z p , tìm x thỏa mãn

Tương tự bài toán phân tích số IFP(n), bài toán DLP(n,g) cũng là cơ sở để xây dựng nên hệ mật RSA. Hiện tại chưa có giải thuật hiệu quả (thời gian đa thức hay đa thức xác suất) cho DLP(n,g), vì thế tính khó của việc giải bài toán logarit rời rạc trên Zn có thể đặt ra với giả thiết là giải thuật cho bài toán này phải được thực hiện thông qua việc giải hai bài toán bài toán phân tích n thành tích của hai số nguyên tố p, q (bài toán phân tích số) và bài toán logarit rời rạc theo modulo p và q là các nhân tử của n (bài toán logarit rời rạc trên Zp). Như vậy, ý tưởng của giải pháp cho DLP(n,g) là nếu như độ khó để giải bài toán phân tích số là đủ lớn, thì độ khó để giải được bài toán DLP(n,g) sẽ là tích các độ khó của việc giải hai bài toán IFP(n) và bài toán DLP(p,g), với giả thiết xác suất xảy ra việc giải được đồng thời cả hai bài toán này là nhỏ, nên khả năng giải được bài toán DLP(n,g) là thấp.

1.3.2. Hàm băm

Trong các giao dịch điện tử, hàm băm đóng vai trò quan trọng trong việc dùng để tạo chữ ký số và xác thực tính toàn vẹn của dữ liệu.

Hàm băm là một ánh xạ, nó thực hiện ánh xạ các chuỗi nhị phân có độ dài tuỳ ý thành các chuỗi nhị phân có độ dài cố định được gọi là giá trị băm.

Hàm băm được mô tả bằng công thức sau E(M,H0) = H, trong đó, M là một văn bản cần băm, H0 là giá trị khởi tạo ban đầu, H là giá trị băm có được từ M. Nhưng do H0 là giá trị cụ thể nên để đơn giản và không làm mất tính tổng quát ta có E(M) = H.

Hàm băm được gọi là an toàn khi nó thỏa mãn các tính chất sau [45] - Hàm một chiều tức là nếu cho M, H thì sẽ dễ dàng tính ra H=E(M). Nhưng nếu chỉ có giá trị băm H thì rất “khó” có thể tìm được văn bản M sao cho H=E(M). Tính “khó” ở đây được hiểu là hiện tại không chỉ ra được thuật toán hữu hiệu nào làm được.

- Không tìm được xung đột tức là rất khó để tìm ra hai văn bản M M′

- Không tìm được xung đột của văn bản cho trước tức là cho trước văn bản M thì rất khó để tìm được văn bản M′ có cùng giá trị băm với văn bản M.

Một số hàm băm được sử dụng hiện nay như SHA-1, SHA-224, SHA- 256, SHA-348, SHA-512 do NIST và NSA xây dựng.

1.3.3. Độ phức tạp tính toán của các thuật toán

Hiệu quả của một thuật toán được ứng dụng trên máy tính hiện đại gồm thời gian thực hiện thuật toán để giải bài toán và bộ nhớ máy tính cần thiết để cài đặt thuật toán. Đối với các máy tính hiện đại thì vấn đề bộ nhớ không còn cấp thiết nữa nhưng vấn đề thời gian luôn hiện hữu. Thời gian thực hiện thuật toán phụ thuộc độ phức tạp của thuật toán. Độ phức tạp tính toán của các thuật toán có thể lấy thời gian thực hiện trên máy tính làm thước đo. Tuy nhiên thước đo này chưa phản ảnh chính xác “độ phức tạp tính toán” của thuật toán, vì thời gian tính toán còn phụ thuộc tốc độ máy tính, bộ nhớ cần thiết để cài đặt thuật toán và kỹ thuật lập trình. Để làm rõ bản chất của “độ phức tạp tính toán” của thuật toán người ta sử dụng khái niệm số lượng các phép tính cơ bản mà chương trình cần thực hiện theo thuật toán để giải xong bài toán.

Lý thuyết độ phức tạp cung cấp một phương pháp để phân tích độ phức tạp tính toán của thuật toán và các kỹ thuật mã hoá khác nhau. Lý thuyết thông tin cho biết một thuật toán mã hoá có thể bị bại lộ, còn lý thuyết độ phức tạp cho biết khả năng bi ̣thám mã của một hệ mã mật. Độ phức tạp thời gian của thuật toán là một hàm của kích thước dữ liệu đầu vào của thuật toán đó. Thông thường độ phức tạp thời gian của thuật toán được kí hiệu là hàm số f(n) (n là đối số của hàm f f là hàm của n, tức là, f là số lượng các phép tính cần thực hiện theo thuật toán, đối với mọi n). Tuy nhiên, xác định được hàm số f(n) là việc làm khó khăn hơn là so sánh nó với những hàm đã biết. Người ta phân các thuật toán theo các lớp xác định để dễ hiểu và dễ biểu diễn.

Ví dụ, những thuật toán có độ phức tạp là n3 được gộp vào cùng nhóm và kí hiệu nhóm này là O(n3). Nói chung, để chỉ hai hàm f(x) và g(x) cùng có độ tăng như nhau (cùng nhóm độ phức tạp tính toán) và viết f ( x) O( g ( x)).

Các thuật toán được chia thành hai lớp tổng quát lớp P (Polynomial - đa thức) và lớp NP (NonPolynomial - không phải đa thức). Các thuật toán thuộc lớp P có độ phức tạp là hàm đa thức. Độ phức tạp các hàm mũ thuộc lớp NP.

Để đánh giá hiệu quả thực hiện của lược đồ chữ ký đề xuất với các lược đồ khác, luận án đánh giá độ phức tạp thời gian của các lược đồ chữ ký thông qua số phép toán cần thực hiện gồm thời gian thực hiện phép tính lũy thừa modulo; thời gian thực hiện phép nghịch đảo modulo; thời gian thực hiện hàm băm; thời gian thực hiện phép nhân modulo…

Chi phí tổng thời gian cần thực hiện các phép toán để tạo chữ ký và kiểm tra chữ ký càng thấp thì hiệu quả thực hiện của lược đồ càng cao.

1.4. Các lược đồ chữ ký số và chuẩn chữ ký số phổ biến

1.4.1. Lược đồ chữ ký số RSA

Lược đồ chữ ký số RSA được xây dựng dựa trên hệ mật RSA [57]. Các thuật toán được sử dụng trong hệ mật RSA sử dụng các khóa công khai và khóa bí mật để mã hóa thông tin và giải mã thông tin.

1.4.1.1. Thuật toán chữ ký số RSA

Thuật toán chữ ký RSA sử dụng cặp khóa công khai và khóa bí mật được sinh theo thuật toán sinh khóa RSA. Trong đó, khóa bí mật là d được sử dụng để sinh chữ ký và khóa công khai n, e được dùng để kiểm tra chữ ký.

Thuật toán hình thành chữ ký và kiểm tra chữ ký được thực hiện như sau

a. Tạo các tham số và khóa

1. Chọn cặp số nguyên tố p q đủ lớn. 2. Tính n p q , (n) ( p 1) (q 1)

3. Chọn khóa công khai e là một giá trị ngẫu nhiên thỏa mãn 1 e (n) và gcd(e, (n)) 1

1 Trong đó

- d là khóa bí mật;

- n, e là giá trị công khai.

Một phần của tài liệu Xây dựng một số lược đồ chữ ký số tập thể dựa trên bài toán phân tích số (Trang 27)

Tải bản đầy đủ (DOCX)

(139 trang)
w