MẬT MÃ ỨNG DỤNG TRONG THANH TOÁN ĐIỆN TỪ.DOC

4 732 5
MẬT MÃ ỨNG DỤNG TRONG THANH TOÁN ĐIỆN TỪ.DOC

Đang tải... (xem toàn văn)

Thông tin tài liệu

MẬT MÃ ỨNG DỤNG TRONG THANH TOÁN ĐIỆN TỪ

Trang 1

ài này nhằm bổ sung cho bài “An toàn thông tin trong thơng mại điện tử”[1]bằng một số trình bầy chi tiết hơn, có tính chất toán học và kĩ thuật, về các nội dung của lý thuyết mật mã, cơ sở của các giải pháp đã đợc đề cập trong bài trớc [1]

I Mật mã và cơ sở lý thuyết mật mã hiện đại

1 Mật mã khoá

Mật mã đã đợc nghiên cứu và sử dụng từ rất lâu trong lịch sử loài ngời Tuy nhiên chỉ vài ba chục năm gần đây, nó mới đợc nghiên cứu công khai và tìm đợc các lĩnh vực ứng dụng trong đời sống công cộng với sự phát triển của kỹ thuật tính toán và viễn thông hiện đại Và từ đó, ngành khoa học này đã phát triển rất mạnh mẽ, đạt đợc nhiều kết quả lý thuyết sâu sắc và tạo cơ sở cho việc phát triển các giải pháp bảo mật và an toàn thông tin trong mọi lĩnh vực hoạt động của con ngời ở thời đại mà công nghệ thông tin đợc ứng dụng rộng khắp.

Việc ra đời các máy tính điện tử có năng lực tính toán lớn cùng với việc phát hiện nhiều loại bài toán đòi hỏi những năng lực tính toán còn lớn hơn gấp bội đã đa đến việc nghiên cứu về độ phức tạp tính toán, và một quan niệm về bí mật gắn với độ phức tạp tính toán Một giải pháp đợc

gọi là bí mật lý tởng, nếu để “phá” đợc giải pháp đó (tức là giải đợc bí mật đó) cần phải thực hiện một quá trình tính toán cực kì phức tạp (chẳng hạn đòi hỏi tính toán hàng triêụ năm trên máy tính), phức tạp đến mức mà ta coi là “không thể đợc” trên thực tế.

Với quan niệm mới về “bí mật” đó, ngời ta đã cải tiến và tạo mới nhiều giải pháp mật mã chỉ có thể thực hiện đợc bằng các công cụ tính toán

hiện đại Các hệ thống mật mã theo phơng thức “khoá đối xứng” cổ điển, nhng lấy “độ phức tạp tính toán” làm tiêu chuẩn cho độ bảo mật, nh hệ DES, đã đợc chọn làm chuẩn cho truyền tin bảo mật trong mấy chục năm gần đây.

ở đây, ta sẽ giới thiệu chủ yếu các hệ thống mật mã khoá công khai là cống hiến mới của lý thuyết mật mã hiện đại, cùng nhiều ứng dụng của nó mà các giải pháp mật mã cổ điển không thể có đợc.

2.Mật mã khoá công khai là gì?

Cơ sở của các hệ thống mật mã khoá công khai là lý thuyết toán học về các “hàm một phía” hay “hàm cửa sập một phía”, đợc định nghĩa nh sau:

Hàm số học f là hàm một phía, nếu biết x, tính y = f(x) là dễ, còn ngợc lại, biết y, tìm x sao cho f(x) = y, hay x = f -1(y), là rất khó

Hàm f là hàm cửa sập một phía, nếu nó là hàm

một phía, nhng có một chốt cửa sập z để nếu biết

chốt z đó thì việc tính ngợc x từ y sẽ trở thành

dễ (Dễ, là có độ phức tạp tính toán chấp nhận đ-ợc; rất khó là có độ phức tạp tính toán không vợt qua nổi trên thực tế)

Thí dụ: Giả sử p là một số nguyên tố rất lớn,

g là một căn nguyên thuỷ modulo p (tức g là

phần tử sinh của nhóm Z p gồm các số bé hơn p

và nguyên tố với p).

Ta có Hàm y = f(x) = gx (mod p) là hàm một

phía, vì biết x tính y là khá đơn giản, nhng biết y

để tính x thì với các thuật toán đã biết hiện nay

đòi hỏi một khối lợng tính toán cỡ

O(exp(lnp.lnlnp)1/2) phép tính (nếu p là số

nguyên tố cỡ 200 chữ số thập phân, thì khối l-ợng tính toán trên đòi hỏi một máy tính 1 tỷ phép tính/giây làm việc không nghỉ trong

GS TS Phan Đình Diệu

Trang 2

khoảng 3000 năm!) Giả sử n = p.q là tích của

hai số nguyên tố lớn p, q và e là một số nguyên

tố với ϕ(n) = (p-1)(q-1) Biết p, q, dễ tính đợc d

sao cho de 1 mod ϕ(n).

Hàm y= f(x) = xe mod n là hàm một phía, vì

biết x tính y và biết y để tính x (trong trờng hợp

chỉ biết n) là rất khó, đòi hỏi một khối lợng tính

toán cũng tơng tự nh cách trích trên

O(exp(lnp.lnlnn)1/2) Tuy nhiên, nếu biết thêm d

(hay biết p, q, vì từ đó cũng dễ tính ra d), thì từ y

tìm x lại khá dễ, vì yd = xde = x (mod n) Nh vậy, y = f(x) là hàm cửa sập một phía, và d là chốt

cửa sập.

Trên đây là hai thí dụ điển hình, và cũng là hai trờng hợp đợc sử dụng rộng rãi, về hàm một phía và hàm cửa sập một phía Vì đây là những điểm then chốt của lý thuyết mật mã khoá công khai, nên việc tìm kiếm các loại hàm một phía và cửa sập một phía đợc nghiên cứu rất khẩn trơng, và đến nay tuy có đạt đợc một số kết quả, nhng việc tìm kiếm vẫn tiếp tục, đầy hứng thú nhng cũng đầy khó khăn.

II Mật mã khoá công khai với an toàn thông tin

1 Truyền tin bảo mật:

Trong các hệ thống bảo mật cổ điển, hai ngời muốn truyền tin bí mật cho nhau phải thoả thuận một khoá mật mã chung K, K vừa là khoá để lập

bản mật mã C từ bản rõ P, và cũng là khoá để

giải mã từ C tìm lại P theo các phép lập mật mã C = EK(P) và phép giải mã P = DK(C) Tất nhiên

ta có DK(EK(P)) = P Khoá K phải giữ kín, chỉ

có hai ngời biết.

Mật mã khoá công khai dựa trên ý tởng sau đây: có thể tách riêng hai quá trình lập mã và giải mã với hai khoá riêng biệt Bí mật là dành cho ngời nhận tin, nên khoá giải mã phải đợc giữ mật cho ngời nhận tin, còn việc lập mã để gửi đến một ngời A có thể công khai để mọi ng-ời có thể dùng để gửi thông tin mật cho A ý t-ởng đó đợc thực hiện nhờ vào các hàm cửa sập một phía Thí dụ về hàm cửa sập một phía kể trên là cơ sở của hệ mật mã khoá công khai nổi tiếng RSA (do Rivest-Shamir-Adleman đề xuất)

Một ngời A chọn một số nguyên n ( n = pq nh

trên) và một số e A công bố công khai khoá lập mã Kp = (n, e) và giữ bí mật cho riêng mình

khoá giải mã Ks = d Ai cũng có thể gửi thông

báo bí mật đến A, cụ thể, nếu thông báo là P (để

tránh phức tạp cho trình bầy, ta giả thiết P đã

đ-ợc qui về dạng con số modulo n), thì bản mật mã

tơng ứng là C = Pe mod n A nhận đợc C, và chỉ

riêng A giải đợc từ C tìm lại P, vì P = Cd mod n

Muốn phá mã thì phải biết d, mà biết d tơng

đ-ơng với việc tìm ra p, q là việc rất khó nh đã nói ở

phần trên.

Một hệ mật mã khoá công khai khác xây dựng trên cơ sở bài toán phân tích số nguyên thành thừa số nguyên tố là hệ mật mã Rabin Giả sử A

chọn một số nguyên n = pq, với p, q là các số

nguyên tố lớn dạng 4m+3, và một số B Khoá

công khai là Kp = (n, B), và khoá bí mật là Ks = (p, q) Thuật toán lập mã EKp và giải mã DKs

trong trờng hợp này là:

tơng đơng với việc tìm các thừa số p, q.

Ta giới thiệu thêm một hệ mật mã khoá công khai khác là hệ ElGamal Giả sử hệ xác định

một số nguyên tố lớn p và một căn nguyên thuỷ g mod p p và g có thể dùng chung cho cả hệ

thống gồm nhiều ngời Mỗi thành viên A chọn và giữ bí mật một số a (Ks = a); tính b = ga mod p và công bố công khai b (Kp = b) Mỗi lần một

thành viên khác muốn gửi bí mật một thông báo

P cho A thì làm nh sau: chọn ngẫu nhiên một số

Hệ mật mã này có một đặc điểm quan trọng: mỗi lần lập mã, ngời gửi có thể chọn thêm một yếu tố ngẫu nhiên để tăng độ mật của bản mã, nh vậy trên thực tế mỗi lần lập mã đều có sử dụng thêm một khoá riêng.

Tính u việt của mã khoá công khai là ở chỗ: trong một hệ truyền tin bảo mật không ai phải trao đổi khoá bí mật trớc với ai cả, mỗi ngời chỉ giữ cái mật mã riêng của mình mà vẫn truyền tin bảo mật đợc với mọi ngời khác Điều này đặc biệt quan trọng khi việc truyền tin đợc phát triển trên các mạng rộng, nh Internet với số ngời sử dụng gần nh không hạn chế Mặt khác, nh trên

Trang 3

đã nói, mật mã khoá công khai không chỉ có tác dụng với bảo mật, mà còn nhiều ứng dụng đặc sắc khác nh sẽ đợc trình bầy trong các phần sau.

2- Bài toán xác nhận.

Trong cách giao thiệp truyền thống, một chữ kí viết tay của ngời gửi dới một văn bản không có tẩy, xoá là đủ để xác nhận ngời gửi là ai, ngời gửi có trách nhiệm về văn bản và sự toàn vẹn của văn bản, và cũng không thể chối bỏ trách nhiệm về chữ kí của mình Nhng trong truyền tin điện tử, văn bản chỉ là một dãy bit mà “chữ kí” cũng chỉ có thể là một dãy bit, nên nếu mã hoá phần văn bản riêng, phần chữ kí riêng rồi ghép lại thì không còn có đợc tính chất nh theo cách truyền thống nói trên “Chữ kí điện tử”, để thực hiện đợc các chức năng xác nhận nh nói trên, của một ngời gửi trên một văn bản phải làm sao vừa mang dấu vết không chối cãi đợc của ngời gửi, vừa phải gắn bó với từng bit của văn bản mà nếu thay đổi dù chỉ là một bit của văn bản thì chữ kí cũng không còn đợc chấp nhận Những yêu cầu đó, may thay, lại có thể đợc giải quyết bằng phơng pháp mật mã khoá công khai.

Chẳng hạn, với thí dụ của hệ RSA, hệ này cũng có thể đợc dùng một cách đối ngẫu, để đợc một sơ đồ chữ kí, gọi là sơ đồ chữ kí RSA:

Một ngời dùng A chọn Kp = (n, e) là khoá

công khai và giữ Ks = d là khoá mật của mình

Bây giờ để kí trên một văn bản M, A dùng thuật

toán kí sigA trên M:sigA(M) = Md mod n

Md mod n là chữ kí của A trên văn bản M (M ≤ n; thông thờng, văn bản có thể dài, nhng ta muốn có chữ kí ngắn Để làm điều đó ngời ta dùng kĩ thuật hàm băm biến mỗi văn bản có độ dài tuỳ ý thành một digest có độ dài ≤ n, và kí trên digest đó Kĩ thuật hàm băm là một vấn đề quan trọng, có thể đợc đề cập trong một dịp khác.

Chú ý rằng chỉ có A mới tạo ra đợc chữ kí đó (vì có khoá mật d) A gửi (M, sigA(M)) đến ngời

nhận Dùng khoá công khai Kp = (n, e), ta có

một điều kiện kiểm thử verA(x, y) để xác nhận y

có đúng là chữ kí của A trên văn bản x hay

không Trong trờng hợp này, verA(x, y) = df (y e

x mod n)

Rõ ràng verA(x, y) đúng nếu x = M, y = sigA(M)

Ngời nhận thử, nếu thấy verA nghiệm đúng, thì

xác nhận chữ kí của A trên M và cả tính toàn

vẹn của M.

Trong thực tế, ngời ta thờng dùng các sơ đồ

chữ kí do cải tiến hoặc bổ sung từ sơ đồ chữ kí ElGamal sau đây: Giả sử ta chọn chung một số

nguyên tố lớn p và một căn nguyên thuỷ g mod p Mỗi thành viên A chọn một khoá bí mật a, và

công bố khoá công khai b ( = ga mod p) Thuật

toán kí sigA và điều kiện kiểm thử verA đợc xác

định nh sau: Để kí văn bản M, A lấy thêm một

số ngẫu nhiên (và giữ bí mật) r , rồi lập chữ kí sigA(M, r) = (y, z), trong đó:

y = gr mod p ; z = (M - ay) r-1 mod (p-1)(y, z) là chữ kí của A trên văn bản M Điều

kiện kiểm thử đợc xác định bởi

verA(M, (y, z)) = df (by.yz gM mod p).

Dễ thử lại rằng verA(M, (y, z)) đúng khi (y, z) cần đối thoại Tuy nhiên, trong một số trờng hợp để ràng buộc trách nhiệm rõ ràng trong việc xác nhận, ngời ta dùng các giao thức có tính chất đối thoại (hay chất vấn) qua một vài lần hỏi đáp để chính thức xác nhận tính đúng đắn của chữ kí, tính toàn vẹn của văn bản, hay để buộc chấp nhận (không thể thoái thác hoặc chối bỏ) chữ kí của mình.[1], [2]

3 Phân phối khoá và thoả thuận khoá

Để thực hiện việc truyền tin bảo mật trong các hệ cổ điển với việc sử dụng các phơng pháp mật mã khoá đối xứng, từng cặp ngời phải có cách an toàn để thoả thuận và truyền cho nhau các khoá bí mật chung Hiện nay, việc dùng các hệ mật mã khoá đối xứng nh DES vẫn còn khá thông dụng; tuy nhiên phơng pháp mã khoá công khai có thể giúp cho các thành viên trong mạng trao đổi và thoả thuận khoá bí mật với nhau bằng mạng truyền thông công cộng Một thí dụ là giao thức trao đổi Diffie-Hellman sau

đây: Giả thử trong hệ thống đã qui định sử dụng chung một số nguyên tố lớn p và một căn

nguyên thuỷ g mod p Mỗi thành viên Ai trong hệ thống tự chọn và giữ bí mật một số ai làm

khoá bí mật của mình, đồng thời tính bi = gai

khai của mình (ta nhớ rằng biết ai để tính bi là

dễ, còn ngợc lại, biết bi mà tìm ra đợc ai là cực

kì khó) Hai ngời Ai và Aj khi muốn trao đổi

Trang 4

thông tin mật với nhau thì có thể cùng tạo ra

khoá riêng của hai ngời nh sau: Ai tính bjai mod p, Aj tính biaj mod p , hai giá trị đó bằng nhau và

đợc xem là khoá riêng của Ai và Aj :

Kij = bjai mod p = biaj mod p.

Mỗi ngời có đợc khoá Kij đó bằng cách kết

hợp cái bí mật của mình với cái công khai của ngời kia Ngoài Ai và Aj không ai có thể tìm đợc

Kij !

Về nguyên tắc, trên mạng truyền thông công cộng, kể cả mạng lớn nh Internet, với phơng pháp mã hoá công khai, có thể tổ chức các hệ

thống trao đổi thông tin bảo mật mà không ngời nào phải trao đổi trớc một bí mật nào của mình với ngời khác Tuy nhiên, tuỳ theo yêu cầu của độ an toàn và tin cậy, các hình thức tổ chức có sự quản lí, điều phối tập trung theo mức độ nào đó vẫn là cần thiết Và do đó, việc quản trị khoá, phân phối khoá, thoả thuận khoá, chuyển vận khoá với sự can thiệp của trọng tài, theo các

yêu cầu tổ chức khác nhau vẫn là một vấn đề rất đợc quan tâm, đã và đang tiếp tục đợc nghiên cứu rộng rãi.

.

Ngày đăng: 24/08/2012, 22:06

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan