Tải bản đầy đủ (.pdf) (7 trang)

Xâ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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (250.51 KB, 7 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>XÂY DỰNG CÁC THUẬT TOÁN MẬT MÃ KHĨA CƠNG KHAI </b>
<b>DỰA TRÊN TÍNH KHĨ CỦA VIỆC GIẢI ĐỒNG THỜI 2 BÀI TOÁN </b>


<b>LOGARIT RỜI RẠC VÀ PHÂN TÍCH SỐ/KHAI CĂN </b>
Nguyễn Vĩnh Thái1*, Lưu Hồng Dũng2


<i><b>Tóm tắt: </b>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 độ </i>
<i>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 Z</i><b>p</b><i> và bài tốn </i>


<i>phân tích một số ngun lớn ra các thừa số nguyên tố, hoặc: bài toán logarit rời rạc </i>
<i>trên Z</i><b>p</b><i> và bài toán khai căn trên vành Z</i><b>n</b><i>. 02 thuật toán mới đề xuất đảm bảo mức </i>


<i>độ an tồ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 </i>
<i>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. </i>


<b>Từ khóa:</b>Logarit rời rạc; Phân tích số; Khai căn; Thuật tốn khóa mật mã; Hệ thống mã khóa khóa cơng khai.
<b>1. ĐẶT VẤN ĐỀ </b>


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 tồn của nó. Tuy
nhiên, thuật tố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 tồn cho các thuật tố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 tố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 tồn cho thuật tố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 tố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.


<b>2. MỘT SỐ BÀI TỐN KHĨ ỨNG DỤNG TRONG MẬT MÃ </b>
<b>2.1. Bài tốn phân tích số </b>


Bài tố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;


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

Một trường hợp riêng của bài tố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 tốn phân tích
số hay cịn gọi là bài toán <sub>( )</sub> đượ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 tốn <sub>( )</sub>có thể được viết như một thuật tố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:
= <sub>( )</sub> hoặc: = <sub>( )</sub>


Trong hệ mật RSA, bài tố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 tố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.


<b>2.2. Bài toán khai căn trên </b> <b> </b>


Cho cặp số nguyên dương ( , ) với là tích 2 số nguyên tố và sao cho bài
tố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 tốn khai căn
trên Z hay còn gọi là RSAP<sub>( , )</sub> được phát biểu như sau:


Với mỗi số nguyên dương ∈ ℤ∗<sub>, hãy tìm thỏa mãn phương trình sau: </sub>
=


Bài tố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<sub>( , )</sub>, 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
tố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.


<b>2.3. Bài toán logarit rời rạc trên </b> <b> </b>


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<sub>( , )</sub> được phát biểu như sau:


Với mỗi số nguyên dương ∈ ℤ∗<sub>, hãy tìm thỏa mãn phương trình sau: </sub>
=


Giải thuật cho bài tốn DLP( , )có thể được viết như một thuật tốn tính hàm


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=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<sub>( , )</sub>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
tốn này.


<b>3. XÂY DỰNG THUẬT TỐN MẬT MÃ KHĨA CƠNG KHAI </b>
<b>3.1. Thuật tốn hình thành tham số và khóa </b>


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 tốn như sau:


a) <b>Thuật tốn 1. </b>Hình thành các tham số hệ thống


<b>Input</b>: , - độ dài (tính theo bit) của các số nguyên tố , .
<b>Output</b>: , , .


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, )


<i>Chú thích: </i> (. ): 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 tốn như sau:


b) <b>Thuật tốn 2. </b>Hình thành khóa


<b>Input</b>: , , , , - độ dài (tính theo bit) của các số nguyên tố , .
<b>Output</b>: , , ( ), .


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: = ± <sub> (1) </sub>


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 < ℎ <


<b>3.2. Thuật tốn mật mã khóa cơng khai </b>


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

( , , ), trong đó: được chọn ngẫu nhiên trong khoảng (1, ), còn


( , ) được tính theo (1) và (2) như sau:


= , = ( ) ( ) (3)


a) Thuật tốn mã hóa <b>(MTA 01.19 - 02) </b>
<b>Input</b>: <i>p, q , g, </i> , <i>, M.</i>


<b>Output</b>: , .


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ã: = × ( ) (4)


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ã <b>(MTA 01.19 - 03) </b>
<b>Input</b>: <i>p, q , g, </i> , , <i>, (C, R).</i>


<b>Output</b>: .


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


nhận được: = × ( ) (7)


Bước 3. Chuyển giá trị thành bản tin M.
c) Tính đúng đắn của thuật tốn



Điều cần chứng minh ở đây là: Cho <i>p, q, </i> , là các số nguyên tố thỏa mãn:
|(p − 1), n = p × q , > , 1 < < , = , 1 < < ,


= , = ( ) ( ), 1 < < , 0 ≤ ≤ − 1,


= × ( ) , = ( )


Nếu: = ( ) , = × ( ) thì =


Chứng minh:


Từ (3), (5) và (6) ta có:


= ( ) = (( ) )


= . = (8)


Nên từ (3), (4), (7) và (8) ta có điều cần chứng minh:


= × ( ) = × × ( )


= × . <sub>×</sub> . <sub> =</sub>


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=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
tốn 2 cho thấy, để tìm được cần phải giải được <sub>( )</sub>, cịn để tính được cần
phải giải được DLP( , ). Nói một cách khác, độ an tồ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 tốn <sub>( )</sub> và DLP<sub>( , )</sub>.


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 tốn mã hóa hoặc giải mã
như sau:


<i>- Tấn cơng thuật tốn mã hóa </i>


Có thể giải mã bản tin nếu tính được trong (4) theo 2 cách:


<i>Cách thứ nhất</i>: giải được bài tốn RSAP<sub>( , )</sub>để tìm X = RSAP<sub>(</sub> <sub>,</sub> <sub>)</sub>( ), sau đó
phải giải tiếp bài tốn DLP( , )để tìm k = DLP( , )( ).


<i>Cách thứ hai</i>: giải bài toán <sub>( )</sub> để tìm để tìm X = ( ) , sau


đó 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 tố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<sub>( , )</sub> và DLP<sub>( , )</sub>
hoặc <sub>( )</sub> và DLP( , ) đã chỉ ra ở trên. Nên độ an tồn của thuật tố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 tốn logarit rời rạc và bài tốn
phân tích số.


<i>- Tấn cơng thuật tốn giải mã </i>


Để giải mã bản tin bằng cách tấn cơng vào thuật tố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 <sub>( )</sub> và DLP<sub>( , )</sub>. Hay, độ an tồn của thuật tố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 tốn
phân tích số và bài toán logarit rời rạc trên Zp.



<b>3.4. Thuật tốn mã hóa - xác thực </b>


Thuật tố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 tồn vẹn của bản tin được
mã hóa, thuật tốn được đề xuất bao gồm thuật tốn mã hóa (<b>Thuật toán MTA </b>
<b>01.19 - 04</b>) và giải mã (<b>Thuật toán MTA 01.19 - 05</b>), với các tham số hệ thống
cũng được hình thành theo Thuật tốn 1 và khóa hình thành theo Thuật tố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:


= , = ( ) ( ) (9)


= , = ( ) ( )


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>Output</b>: , , .


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 2. Tính giá trị: = (11)


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ã: = ( ) × ( +


2 (13)


Bước 5. Gửi bản mã ( , , ) cho B.


b) Thuật toán giải mã <b>(MTA 01.19 - 05) </b>


<b>Input</b>: <i>p, q , g, </i> <i>, </i> <i>, </i> , , <i>, </i> ,( , , )<i>.</i>


<b>Output</b>: , ( , ) = / .


Bước 1. Người nhận sử dụng khóa bí mật thứ hai để tính ̅ theo:


= (14)


Bước 2. Tính giá trị: = ( ) (15)


và = ( ) × ( ) (16)


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 tốn <b>MTA 01.19 - 04; MTA 01.19 - 05</b>


Điều cần chứng minh ở đây là: Cho <i>p, q, </i> , là các số nguyên tố thỏa mãn:
|(p − 1), n = p × q , > , 1 < < , = , 1 < , < ,


= , = , = ( ) ( ), 1 < < ,


= ( ) ( ), 0 ≤ ≤ − 1, = ,


: {0,1}∗<sub>→</sub> <sub>với </sub><sub>|q| ≤ |h| < | |,</sub> <sub>=</sub> <sub>( ‖ ) </sub> <sub> , </sub>


= × (( + × ) ) ( )



Nếu = , = ( ) , = ( ) × ( ) ,


= × ( ) , = thì = và =


Chứng minh:


Từ (9), (10) và (14) ta có: =


= (( × ( ) ) )


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

= ( × ) = × . <sub> </sub>
Từ (9), (13) và (15) ta lại có: = ( )


= (( ) × ( + ) )) ) (20)


= (( ) × ( + ) )) .


= ( ) × ( + )


Thay (9) và (20) vào (16) ta được: = ( ) × ( )


= ( )( ) .( ) × ( )


= .( ) .( )<sub>×</sub> <sub> = (</sub> <sub>×</sub> <sub>×</sub> <sub>) </sub> <sub> </sub> <sub> (21) </sub>


= =


Từ (9), (19) và (21) ta suy ra điều cần chứng minh thứ nhất:



= × ( ) = × . × ( )


= ( × . <sub>×</sub> . <sub>) </sub> <sub> =</sub> <sub> (22) </sub>


Từ (17), (18), (21) và (22) ta suy ra điều cần chứng minh thứ hai:


= = ( ‖ ) =


<b>3.5. Độ an toàn của thuật toán MTA 01.19 - 04; MTA 01.19 - 05 </b>


Thuật tố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 tố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
tồ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 tốn sau:


</div>

<!--links-->

×