Cũng với mục đích nâng cao độ an toàn cho thuật toán trước một số dạng tấn công trong thực tế, nhóm tác giả bài báo này đề xuất xây dựng 02 thuật toán: mật mã khóa công khai; mã hóa - [r]
Trang 1XÂY DỰNG CÁC THUẬT TOÁN MẬT MÃ KHÓA CÔNG KHAI DỰA TRÊN TÍNH KHÓ CỦA VIỆC GIẢI ĐỒNG THỜI 2 BÀI TOÁN
LOGARIT RỜI RẠC VÀ PHÂN TÍCH SỐ/KHAI CĂN
Nguyễn Vĩnh Thái1*, Lưu Hồng Dũng2
Tóm tắt: Bài báo đề xuất xây dựng thuật toán mật mã khóa công khai từ mức độ
khó của việc giải đồng thời 2 bài toán: bài toán logarit rời rạc trên Zp và bài toán phân tích một số nguyên lớn ra các thừa số nguyên tố, hoặc: bài toán logarit rời rạc trên Zp và bài toán khai căn trên vành Zn 02 thuật toán mới đề xuất đảm bảo mức
độ an toàn trước các tấn công: làm lộ khóa bí mật, thám mã bản tin Đồng thời xác thực nguồn gốc văn bản điện tử, cũng như đảm bảo việc xác thực người gửi
Từ khóa: Logarit rời rạc; Phân tích số; Khai căn; Thuật toán khóa mật mã; Hệ thống mã khóa khóa công khai
1 ĐẶT VẤN ĐỀ
Hiện tại, RSA [1] vẫn đang được sử dụng trong các giao dịch điện tử (Chính phủ điện tử, thương mại điện tử ) do tính mềm dẻo và độ an toàn của nó Tuy nhiên, thuật toán hệ mật này cũng có một nhược điểm căn bản so với các hệ mật được xây dựng trên bài toán logarit rời rạc (ElGamal, DSA, GOST R34.10-94 ) [3] đó là các thực thể đầu cuối không được phép dùng chung modulo n với nhau Nói cách khác: mỗi thực thể đầu cuối phải sở hữu một cặp tham số ( , ) nguyên
tố riêng biệt Hơn nữa, cặp tham số này phải được giữ bí mật tuyệt đối Trên thực
tế, việc tạo ra các số nguyên tố lớn và mạnh theo các tiêu chuẩn an toàn (FIPS 186
- 4) [2] và giữ bí mật tuyệt đối cho chúng là không đơn giản, nên nhược điểm trên
đã ảnh hưởng không nhỏ đến khả năng ứng dụng rộng rãi của hệ mật này (RSA) trong thực tế
Nâng cao độ an toàn cho các thuật toán mật mã khóa công khai dựa trên tính khó của việc giải đồng thời 2 bài toán khó là một hướng tiếp cận đang nhận được nhiều sự quan tâm của các nhà nghiên cứu [4 - 9]
Cũng với mục đích nâng cao độ an toàn cho thuật toán trước một số dạng tấn công trong thực tế, nhóm tác giả bài báo này đề xuất xây dựng 02 thuật toán: mật
mã khóa công khai; mã hóa - xác thực dựa trên tính khó của việc giải đồng thời 2 bài toán logarit rời rạc và phân tích số/khai căn, cho phép nhiều người dùng (thực thể cuối) sử dụng chung một , nghĩa là chỉ cần tạo ra một cặp tham số ( , ) duy nhất cho tất cả các thực thể cuối Ngoài ra, các tham số này không cần phải được giữ bí mật như ở hệ RSA mà vẫn có thể chống lại các dạng tấn công đã biết trong thực tế, đảm bảo độ an toàn của hệ thống
2 MỘT SỐ BÀI TOÁN KHÓ ỨNG DỤNG TRONG MẬT MÃ 2.1 Bài toán phân tích số
Bài toán phân tích số được phát biểu như sau: Cho số ∈ ℕ, hãy tìm biểu diễn:
= Π với: ≥ 1( = 1, … , ) nguyên dương;
≥ 1 ( = 1, … , ) nguyên tố
Trang 2Mộ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 mà ở đó là tích của hai số nguyên tố và Khi đó, bài toán phân tích
số hay còn gọi là bài toán ( ) được phát biểu như sau:
Với mỗi số nguyên dương , hãy tìm số nguyên tố hoặc thỏa mãn phương trình sau: × =
Giải thuật cho bài toán ( ) có thể được viết như một thuật toán tính hàm
(.) với biến đầu vào là , còn giá trị hàm là hoặc của phương trình sau:
= ( ) hoặc: = ( )
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/bí mật cho mỗi thực thể ký Với việc giữ bí mật các tham số ( , ) thì việc tính được khóa bí mật ( ) từ khóa công khai ( ) và ( ) là một bài toán khó nếu , được chọn đủ lớn và mạnh Hiện tại bài toán trê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 hay đa thức xác suất cho nó và hệ mật RSA là một minh chứng thực tế cho tính khó giải của bài toán này Trong thực tế, các tham số , có thể chọn theo FIPS 186 - 4 của Hoa
Kỳ cho hệ mật RSA
2.2 Bài toán khai căn trên
Cho cặp số nguyên dương ( , ) với là tích 2 số nguyên tố và sao cho bài toán phân tích số là khó giải trên Z , còn là một giá trị thỏa mãn: 1 < < ( )
và gcd , ( ) = 1, ở đây: ( ) = ( − 1) ( − 1) Khi đó, bài toán khai căn trên Z hay còn gọi là RSAP( , ) được phát biểu như sau:
Với mỗi số nguyên dương ∈ ℤ∗, hãy tìm thỏa mãn phương trình sau:
Bài toán RSAP( , ) cũng là một cơ sở quan trọng để xây dựng nên hệ mật RSA
Ở hệ mật RSA nếu giải được RSAP( , ), 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 ( , ), 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 vẫn chưa có giải thuật thời gian đa thức cho bài toán này và do đó việc tấn công hệ mật RSA bằng việc giải RSAP( , ) là vẫn chưa khả thi
2.3 Bài toán logarit rời rạc trên
Cho cặp số nguyên dương ( , ) với là số nguyên tố, còn là một phần tử của nhóm ∗ Khi đó, bài toán logarit rời rạc trên Z hay còn gọi là bài toán DLP( , ) được phát biểu như sau:
Với mỗi số nguyên dương ∈ ℤ∗, hãy tìm thỏa mãn phương trình sau:
Giải thuật cho bài toán DLP( , ) có thể được viết như một thuật toán tính hàm DLP ( ) với biến đầu vào là , còn giá trị hàm là của phương trình sau:
Trang 3= DLP( , )( ) Bài toán DLP( , ) là cơ sở để xây dựng nên hệ mật ElGamal Hiện tại chưa có giải thuật hiệu quả cho DLP( , ) và độ an toàn của thuật toán DSA trong chuẩn chữ ký số DSS của Hoa Kỳ là một minh chứng thực tế cho tính khó giải của bài toán này
3 XÂY DỰNG THUẬT TOÁN MẬT MÃ KHÓA CÔNG KHAI 3.1 Thuật toán hình thành tham số và khóa
Các tham số hệ thống hay tham số miền được nhà cung cấp dịch vụ chứng thực
số hình thành bằng thuật toán như sau:
a) Thuật toán 1 Hình thành các tham số hệ thống
Input: , - độ dài (tính theo bit) của các số nguyên tố ,
Output: , , Bước 1 Chọn cặp số , nguyên tố với:
( ) = , ( ) = sao cho |( − 1) Bước 2 Chọn là phần tử sinh của nhóm ∗ theo:
= , với ∈ (1, )
Chú thích: ( ): hàm tính độ dài (theo bit) của một số
Mỗi thực thể cuối/người sử dụng trong hệ thống hình thành khóa của mình bằng thuật toán như sau:
b) Thuật toán 2 Hình thành khóa
Input: , , , , - độ dài (tính theo bit) của các số nguyên tố ,
Output: , , ( ), Bước 1 Chọn cặp số , là các nguyên tố với: ( ) = , ( ) = Bước 2 Tính = , nếu ≤ thì thực hiện lại Bước 1
Bước 3 Tính ( ) = ( − 1) ( − 1)
Bước 4 Chọn khóa bí mật thứ nhất trong khoảng 1, ( )
Bước 5 Tính khóa công khai theo: = ± (1) Kiểm tra nếu: ≥ ( ) hoặc: gcd ( , ( )) ≠ 1 thì thực hiện lại từ Bước 4 Bước 6 Tính khóa bí mật thứ hai theo: = ( ) (2) Bước 7 Chọn hàm băm : {0,1}∗ → với < ℎ <
3.2 Thuật toán mật mã khóa công khai
Thuật toán mật mã được đề xuất ở đây bao gồm thuật toán mã hóa (Thuật toán
MTA 01.19-02) và giải mã (Thuật toán MTA 01.19-03) với các tham số hệ thống
được hình thành theo (1) và khóa hình thành theo (2) Giả thiết người gửi/mã hóa
là A, người nhận/giải mã là B và B có cặp khóa bí mật/công khai tương ứng là
Trang 4( , , ), trong đó: được chọn ngẫu nhiên trong khoảng (1, ), còn ( , ) được tính theo (1) và (2) như sau:
a) Thuật toán mã hóa (MTA 01.19 - 02)
Input: p, q , g, , , M
Output: , Bước 1 Biểu diễn bản tin cần mã hóa M thành một giá trị m tương ứng trong khoảng [1, − 1], chọn ngẫu nhiên một giá trị trong khoảng (1, ) rồi tính thành
Bước 2 Tính thành phần thứ 2 của bản mã: = ( ) (5) Bước 3 Gửi bản mã ( , ) cho B
b) Thuật toán giải mã (MTA 01.19 - 03)
Input: p, q , g, , , , (C, R)
Output: Bước 1 B sử dụng khóa bí mật thứ hai để tính theo: = ( ) (6) Bước 2 Người nhận sử dụng khóa bí mật thứ nhất của mình để giải mã bản tin
Bước 3 Chuyển giá trị thành bản tin M
c) Tính đúng đắn của thuật toán
Điều cần chứng minh ở đây là: Cho p, q, , là các số nguyên tố thỏa mãn:
|(p − 1), n = p × q , > , 1 < < , = , 1 < < ,
= , = ( ) ( ), 1 < < , 0 ≤ ≤ − 1,
Chứng minh:
Từ (3), (5) và (6) ta có:
Nên từ (3), (4), (7) và (8) ta có điều cần chứng minh:
3.3 Độ an toàn của thuật toán MTA 01.19 - 02; MTA 01.19 - 03
a) Tấn công khóa bí mật
Trang 5Ở thuật toán mới đề xuất, tính an toàn của lược đồ sẽ bị phá vỡ khi cặp khóa , có thể tính được bởi một hay các đối tượng không mong muốn Từ Thuật toán 2 cho thấy, để tìm được cần phải giải được ( ), còn để tính được cần phải giải được DLP( , ) Nói một cách khác, độ an toàn về khóa của thuật toán được đảm bảo bằng độ khó của việc giải đồng thời 2 bài toán ( ) và DLP( , ) b) Tấn công thám mã bản tin
Để giải mã bản tin có thể thực hiện tấn công vào thuật toán mã hóa hoặc giải mã như sau:
- Tấn công thuật toán mã hóa
Có thể giải mã bản tin nếu tính được trong (4) theo 2 cách:
Cách thứ nhất: giải được bài toán RSAP( , ) để tìm X = RSAP( , )( ), sau đó phải giải tiếp bài toán DLP( , ) để tìm k = DLP( , )( )
đó giải tiếp DLP( , ) để tìm k như cách thứ nhất
Như vậy, để giải mã bản tin bằng cách tấn công trực tiếp vào thuật toán mã hóa, kẻ tấn công cần phải giải được đồng thời hai bài toán RSAP( , ) và DLP( , ) hoặc ( ) và DLP( , ) đã chỉ ra ở trên Nên độ an toàn của thuật toán trước dạng tấn công này được quyết định bằng độ khó của việc giải đồng thời 2 bài toán: bài toán logarit rời rạc và bài toán khai căn, hoặc: bài toán logarit rời rạc và bài toán phân tích số
- Tấn công thuật toán giải mã
Để giải mã bản tin bằng cách tấn công vào thuật toán giải mã, kẻ tấn công cần phải tính được các khóa bí mật của người nhận B, nghĩa là phải giải được đồng thời hai bài toán bài toán ( ) và DLP( , ) Hay, độ an toàn của thuật toán trước dạng tấn công này được quyết định bằng độ khó của việc giải đồng thời 2 bài toán phân tích số và bài toán logarit rời rạc trên Zp
3.4 Thuật toán mã hóa - xác thực
Thuật toán mã hóa - xác thực được đề xuất ở đây thực hiện đồng thời chức năng bảo mật thông tin và xác thực nguồn gốc cũng như tính toàn vẹn của bản tin được
mã hóa, thuật toán được đề xuất bao gồm thuật toán mã hóa (Thuật toán MTA
01.19 - 04) và giải mã (Thuật toán MTA 01.19 - 05), với các tham số hệ thống
cũng được hình thành theo Thuật toán 1 và khóa hình thành theo Thuật toán 2 Giả thiết người gửi/mã hóa là A, người nhận/giải mã là B có cặp khóa bí mật/công khai tương ứng là ( , / ) và ( , / ), trong đó: ( , ) được chọn ngẫu nhiên trong khoảng (1, ), ( , ) và ( , ) được tính theo (1) và (2) như sau:
a) Thuật toán mã hóa (MTA 01.19 - 04)
Input: p, q , g, , , , , M
Trang 6Output: , , Bước 1 Biểu diễn bản tin cần mã hóa M thành một giá trị m tương ứng trong khoảng [1, − 1], chọn ngẫu nhiên một giá trị trong khoảng (1, ) rồi tính thành phần thứ nhất của bản mã: = ( × ( ) ) (10)
Bước 3 Tính thành phần thứ hai của bản mã: = ( ‖ ) (12) Bước 4 Tính thành phần thứ ba của bản mã: = ( ) × ( +
Bước 5 Gửi bản mã ( , , ) cho B
b) Thuật toán giải mã (MTA 01.19 - 05)
Input: p, q , g, , , , , , , ( , , )
Bước 1 Người nhận sử dụng khóa bí mật thứ hai để tính ̅ theo:
Bước 3 Từ , giải mã bản tin nhận được: = × ( ) (17) Bước 4 Chuyển giá trị thành bản tin và tính: = (18) Bước 5 Nếu = thì = và khẳng định người gửi chính xác là A
c) Tính đúng đắn của thuật toán MTA 01.19 - 04; MTA 01.19 - 05
Điều cần chứng minh ở đây là: Cho p, q, , là các số nguyên tố thỏa mãn:
|(p − 1), n = p × q , > , 1 < < , = , 1 < , < ,
: {0,1}∗→ với |q| ≤ |h| < | |, = ( ‖ ) ,
Chứng minh:
Từ (9), (10) và (14) ta có: =
Trang 7= ( × ) = × .
Từ (9), (13) và (15) ta lại có: = ( )
Thay (9) và (20) vào (16) ta được: = ( ) × ( )
Từ (9), (19) và (21) ta suy ra điều cần chứng minh thứ nhất:
Từ (17), (18), (21) và (22) ta suy ra điều cần chứng minh thứ hai:
3.5 Độ an toàn của thuật toán MTA 01.19 - 04; MTA 01.19 - 05
Thuật toán mã hóa - xác thực được đề xuất ở đây thực chất là sự kết hợp giữa
thuật toán mật mã ở mục 3.2 của bài báo này với thuật toán chữ ký số, nhằm cung
cấp tính năng bảo mật nội dung của bản tin và xác thực nguồn gốc cùng với tính
toàn vẹn của bản tin được thực hiện một cách đồng thời Nhờ đó, thuật toán này
cho phép chống lại các dạng tấn công giả mạo rất hiệu quả Có một điểm cần lưu ý
là dạng tấn công giả mạo ở đây cần được hiểu theo nghĩa một kẻ thứ 3 (T) muốn
mạo danh A để gửi cho B bản tin M hoặc là T gửi một bản tin không phải M cho B
trong khi B hiểu rằng A đã gửi bản tin M cho mình Từ thuật toán kiểm tra cho
thấy, điều kiện để B nhận biết chính xác bản tin M được A gửi đến khi nhận được
1 cặp (C,E,S) là:
(23)
Kẻ tấn công giả mạo có thể thực hiện được (23) nếu thực hiện được các bước
tính toán sau:
- Chọn giá trị ∗ và tính: = × ( ) ∗ ;