Để khắc phục vấn đề phân phối và thỏa thuận khóa của mật mã khóa bí mật, năm 1976 Diffie và Dellman đã đưa ra khái niệm về mật mã khóa công khai và một phương pháp trao đổi khóa công kha
Trang 1LỜI NÓI ĐẦU Chúng ta đã biết rằng hiện nay Nhà nước ta đang tiến hành cải cách hành
chính, trong đó việc xây dựng một chính phủ điện tử đóng vài trò trọng tâm Nói đến chính phủ điện tử là nói đến những vấn đề như về hạ tầng máy tính, về con người, về tổ chức, về chính sách, về an toàn – an ninh thông tin…
Trong đó đảm bảo an toàn – an ninh thông tin cho các dịch vụ đóng một vai trò quan trọng vì nếu thông tin mà không đảm bảo an toàn – an ninh, đặc biệt là những thông tin nhậy cảm thì việc xây dựng chính phủ điện tử, thương mai điện tử trở lên vô nghĩa vì lợi bất cập hại Xây dựng một chính sách, đảm bảo an ninh – an toàn thông tin liên quan chặt chẽ đến việc xây dựng hệ thống mật mã khóa công khai, viết tắt là PKC (Public Key Cryptosystems)
Trong thời đại công nghệ thông tin thì giấy tờ không phải là một cách duynhất chứng nhận thỏa thuận giữa các bên Ở nhiều nước tiên tiến, các thỏa thuận thông qua hệ thống thông tin điện tử giữa các bên được hợp pháp hóa và có giá trị tương đương với các thỏa thuận thông thường về mặt pháp lý Sự kiện này đánh dấu một bước nhảy quan trọng trong việc phát triển chính phủ điện tử, thương mại điện tử Tuy nhiên cho đến nay các dự án chưa được triển khai rộng rãi do nhiều nguyên nhân khác nhau Một trong những nguyên nhân quan trọng đó là do người dùng vẫn luôn cảm thấy không an tâm khi sử dụng hệ thống Chẳng hạn khi gửi mẫu tin có thể là văn bản, hình ảnh, video… người nhận có quyền nghi ngờ thông tin đó có phải của đối tác không… Những vấn đề này thu hút sự chú ý của nhiều nhà khoa học trong lĩnh vực nghiên cứu bảo mật thông tin Đây cũng là nguyên nhân giải thích tại sao PKC ngày càng được chú trọng nghiên cứu, phát triển
Đến nay các nước tiên tiến trên thế giới đã ứng dụng thành công PKC Ở Châu Á nhiều nước cũng đã có những ứng dụng tuy mức độ khác nhau như ở
Singapore, Hàn Quốc, Trung Quốc, Thái Lan… Trong đó Singapore, Hàn Quốc sẵnsàng tài trợ chính, kỹ thuật, chuyên gia trong lĩnh vực mật mã sang giúp Việt Nam xây dựng hệ thống PKC Do đây là một vấn đề mới, nhậy cảm, gắn liền với bảo mậtthông tin nên chúng ta cần những tìm hiểu thận trọng, sâu sắc về vấn đề này Đây là một vấn đề cấp thiết nên chúng ta không thể không nghiên cứu
Là những kỹ sư công nghệ thông tin chúng ta có nhiệm vụ nghiên cứu, tìm hiểu sâu sắc hơn về vấn đề quan trọng và cấp bách này nhằm đảm bảo an ninh –
an toàn thông tin, điều này càng có ý nghĩa hơn khi chúng ta hội nhập WTO, làm chủ được công nghệ này giúp giữ vững an ninh quốc gia, thúc đẩy phát triển kinh tế
- xã hội
Trang 2Xuất phát từ những lý do trên, được sự nhất trí của nhà trường và thầy giáo hướng dẫn, em đã chọn đề tài “Tìm hiểu và trình bầy về hệ mật mã khóa công khai” làm đề tài nghiên cứu của mình.
MỤC LỤC
Trang
Trang 3Lời nói đầu………1
1 Khái niệm………4
1.1 Vấn đề sử dụng và phân phối khóa……… 4
1.2 Các yêu cầu của loại hệ mã PKC……….4
1.3 Các mô hình sử dụng PKC.……….5
1.4 Cấu trúc của PKC……….5
1.5 Một số hệ mật mã bất đối xứng thông dụng……….5
2 Hệ mã knapsack 6
2.1 Bài toán xếp ba lô……….6
2.2 Cách xây dựng hệ mã knapsack……… 7
3 Ưu nhược điểm của hệ mật mã khóa công khai……… 7
3.1 Ưu điểm………7
3.2 Nhược điểm……… 7
4 Hệ mật mã RSA……… 7
4.1 Định lý RSA……….7
4.2 Thuật giải RSA……….7
5 Hệ mã Difie – Henman……… 11
6 Hệ mã El Gamal (1985)……… 11
6.1 Mã hóa……… 11
6.2 Giải mã……….11
Phần silde……… 13
1 Khái niệm
Trang 4Để khắc phục vấn đề phân phối và thỏa thuận khóa của mật mã khóa bí mật, năm 1976 Diffie và Dellman đã đưa ra khái niệm về mật mã khóa công khai và một phương pháp trao đổi khóa công khai để tạo ra một khóa bí mật chung và tính an toàn được bảo đảm bởi độ khó của một bài toán học tính Logarit rời rạc Hệ mật mã khóa công khai sử dụng một cặp khóa, khóa dùng để mã hóa gọi là khóa công khai (Public key), khóa dùng để giải mã gọi là khóa bí mật (Private key), về nguyên tắc thì khóa công khai và khóa bí mật khác nhau Một người bất kỳ có khả năng sử dụng khóa công khai để mã hóa tin nhưng chỉ có người có đúng khóa bí mật thì mớigiải mã được tin đó.
Mật mã khóa công khai (Public key) hay còn gọi là mật mã bất đối xứng là
mô hình mã hóa 2 chiều sử dụng một cặp khóa là khóa riêng (Private key) và khóa công khai (Public key) Khóa công khai dùng để mã hóa, khóa riêng được dùng để giải mã
Hệ thống mật mã khóa công khai có thể sử dụng với các mục đích:
- Mã hóa: Giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được
- Tạo chữ ký số: Cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không
- Thỏa thuận khóa: Cho phép thiết lập khóa dùng để trao đổi thông tinmật giữa 2 bên
Các hệ mật mã khóa công khai được biết đến nhiều nhất là hệ RSA Trong các hệ mật mã khóa công khai thì hệ RSA được cộng đồng Quốc tế chấp nhận và ứng dụng rộng rãi nhất
1.1 Vấn đề sử dụng và phân phối khóa
Hệ mật bất đối xứng khắc phục được tính chất phức tạp trong việc phân phối khóa ở hệ mật đối xứng cho phép giao tiếp giữa các đối tượng một cách uyển
chuyển , dễ dàng
Sử dụng hai khoá Kp (public key ) và Ks (private key ) để mã và giải mật
Có hai mode làm việc :
Bảo mật : Mã bằng public key → giải mật bằng private key
Xác thực : Mã bằng private key → giải mật bằng public key
1.2 Các yêu cầu của loại hệ mã PKC
- Việc sinh KP, KS phải dễ dàng
- Việc tính E(KP, M) là dễ dàng
- Nếu có C = E(KP, M) và KS thì dễ ràng giải mật
- Nếu biết KP thì việc dò tìm KS là khó
Trang 5- Rất khó tìm bản rõ từ bản mã nếu không biết khóa.
1.3 Các mô hình sử dụng PKC
1.3.1 Mô hình bảo mật
Hình 1: Mô hình sử dụng 1 của các hệ mã hóa công khai PKC
Ciphertext = E(KP,P) , Plantext = D(KS, E(KP,P))
1.3.2 Mô hình xác thực
Hình 2: Mô hình sử dụng 2 của các hệ mã hóa công khai PKC
Ciphertext = D(KS, P) , Plaintext = E(KP, D(KS, P))
1.4 Cấu trúc của PKC
- PKC được xây dựng trên các hàm một chiều (one way functions)
- f : X → Y là hàm nếu biết x є X → dễ dàng tính y = f(x) Nhưng vớimọi y є Y việc tìm x є X: y = f(x), có nghĩa tìm hàm ngược f-1 rất khó
- Ví dụ : với P є { P1, P2, , Pn } thì việc tính N = P1 * P2 * * Pn
là dễ tìm Pi є {P} với N đủ lớn ( phân tích ngược – phân rã SNT) là một bài toán khó
- Trong các hệ mã PKC sử dụng các “trapdoor” giúp cho việc tìm x :
y = f(x) dễ dàng Hàm (trapdoor function): là một hàm một chiều trong đó việc tính f-1 là rất nhanh khi chúng ta biết được “trapdoor”
Trang 6- ECC The Elliptic Curve Cryptosystem (ECC) được sử dụng trên cácthiết bị nhỏ , ít thông minh như “ cell phones” và “wireless”.
- El Gamal thuật giả dùng để truyền “digital signatures” và “ key exchanges”(Cũng tương tự Diffie-Hellman “ The El Gamal còn được gọi là DSA
2 Hệ mã knapsack
Hệ mã knapsack do Merkle và Hellman (năm 1978)
2.1 Bài toán xếp ba lô
- Cho M, N và A1, A2, , AN là các số nguyên dương
Hỏi có tồn tại một véc tơ nhị phân x=(x1, x2,…, xN) sao cho
- Vectơ A = (A1, A2, , AN) gọi là vectơ “xếp balô”
- Vectơ X = (x1, x2, …, xN) là vectơ nghiệm
- Đây là bài toán khó có thời gian là hàm mũ O(2N)
- Nếu S là dãy siêu tăng thì bài toán trên giải được với thời gian tuyến tính ON
- Vector siêu tăng : Dãy A=(Ai ) gọi là siêu tăng nếu với mọi Ai>ΣAj (j=1, i-1) (tức là phần tử đứng sau lớn hơn tổng các phần tử đứng trước nó.
- Khi đó bài toán balo được phát biểu như sau:
- Cho M, N và A’=(A’1, A’2, , A’N ) là một dãy siêu tăng Hỏi có tồn tại một véc tơ nhị phân x=(x1, x2,…, xN) sao cho:
M=Σ i =1x i A i (i=1 N)).
* Vecto xếp ba lô siêu tăng:
- Một trường hợp riêng đáng quan tâm của bài toán xếp ba lô tổng quát là
trừờng hợp mà xi є {0, 1} Khi đó ta có bài toán “xếp ba lô” 0, 1
- Trong trường hợp vecto (A1, A2, , AN) được sắp lại thành (A’1, A’2, , A’N) sao cho: i ta có : thì vecto (A1, A2, , AN) được gọi là vecto xếp balo siêu tăng
- Khi (A’1, A’2, , A’N) là một vecto “xếp balo” siêu tăng ta có ngay tính chất : Với mọi i : M ≥ A’ Do đó việc giải bài toán xếp ba lô 0/1 trở nên
dễ dàng hơn rất nhiều
Thuật giải bài toán xếp balô:
For i:=N downto 1 do
Trang 7else “bài toán không có đáp án”;
2.2 Cách xây dựng hệ mã knapsack
1.Chọn 1 vecto siêu tăng A’ = (a’1, a’2, , a’N),
2 Chọn M > 2 * a’N, chọn ngẫu nhiên u < M : (u, M) = 1
3.Xây dựng Vecto S = (s1, s2, , sN) với si = (a’i * u) mod M
4.Khóa: KP = (S, M), KS = (u, u-1)
5.Không gian rõ : dãy N bit : P = (x1, x2, , xN)
6.Mã hóa :
7.Giải mã: Tính C’ = C * u-1 mod M sau đó giải bài toán xếp ba lô 0/1
với A’, C’ từ đó tìm được: P = (x1, x2, , xN).
3 Ưu nhược điểm của hệ mật mã khóa công khai
3.1 Ưu điểm
Ưu điểm chính của hệ mật mã khóa công khai là đã giải quyết được vấn
đề phân phối khóa và trao đổi khóa cực kỳ thuận lợi Một số ứng dụng quan trọng
và phổ biến nhất là xác thực và chữ ký số cái mà hệ mật mã khóa đối xứng chưa giải quyết được
3.2 Nhược điểm
Nhược điểm cơ bản của hệ mật mã khóa công khai là tốc độ mã hóa/ giải
mã khá chậm (chậm hơn khoảng một ngàn lần so với mật mã khóa đối xứng như mãDES chẳng hạn) do phải sử dụng đến các số nguyên tố rất lớn trên trường hữu hạn
4 Hệ mật mã RSA
Hệ mật mã RSA do Rivest, Shamir, Adleman tìm ra, được công bố lần đầu tiên vào tháng 8 năm 1977 trên tạp chí Scientific American Hệ mật mã RSA được sử dụng rộng rãi trong thực tiễn đặc biệt trong lĩnh vực bảo mật và xác thực
dữ liệu số Tính bảo mật và an toàn của chúng được đảm bảo bằng bài toán phân tích số nguyên thành các thừa số nguyên tố
4.1 Định lý RSA
- Cho p,q là hai SNT phân biệt N=pq.
- Có một hàm φ = φ (n)=(p-1)(q-1), 1≤e≤ φ, (e, φ)=1,
Tính được : d = e-1mod φ, 1<d< φ ,
- Cho một số m : 0 ≤ m < N , và tính c = memodN Thì : m = cdmodN
4.2 Thuật giải RSA
4.2.1 Phát sinh khóa RSA
- Tính N = p*q và φ = φ (n)=(p-1)(q-1) ; (p,q là hai SNT phân biệt đủ
lớn Trong thực tế >100 chữ số)
- Cho ngẫu nhiên một số eϵ]1, φ[ thoả (e, φ)=1 Sử dụng thuật giải Bezout
tính số nghịch đảo d ϵ]1, φ[ = e-1 mod φ ; ed ≡ 1 mod φ
- Cặp (e ,N) là khóa công khai (Kp )
- Cặp (d,N) là khóa các nhân – khóa bí mật (Ks )
4.2.2 Mã hóa và giải mã
Trang 81 Mã hóa
- Tạo cặp khóa công khai (e,N), và một thông điệp rõ dưới dạng một số
nguyên dương m ; mϵ[0,N[, m – văn bản rõ (plaintext)
- Tính c: c = m emodN, c – văn bản mật (ciphertext)
2 Giải mật
- Phục hồi lại văn bản rõ m từ văn bản bảo mật c, ta sử dụng cặp khóa cá
nhân (d,N) để tính m; m = cd modN.
4.2.3 Độ an toàn của RSA
- Độ an toàn của RSA phụ thuộc vào độ khó của việc tính φ (N) Muốn
vậy , cần phân tích N ra thừa số nguyên tố
- Thuật toán Brent-Pollard là thuật toán phân tích số nguyên tố hiệu quả
nhất hiện nay
- Việc sử dụng RSA cần tới các số nguyên tố lớn nên phải có một cơ sở
dữ liệu các số nguyên tố
- Tốc độ RSA chậm do phải tính số lượng lớn các phép nhân Phép nhân 2
số n bit cần thực hiện O(n2) phép tính bit Thuật toán nhân các số nguyênSchonhage – Strassen cho phép nhân 2 số với độ phức tạp là O(n log n)
Hình 3: Tốc độ của thuật toán Brent – Pollard
- Trong thực tế RSA thường được sử dụng với các thông điệp có kích
thước nhỏ (secsion key), và thường sử dụng lai ghép với các hệ mật đối xứng (DES,AES…)
4.2.4 Một số vấn đề xung quanh thuật toán RSA
- Vấn đề chọn p và q:
Trang 9+ p và q phải là những số nguyên tố lớn, ít nhất là cỡ 100 chữ số
+ p và q phải lớn cỡ xấp xỉ nhau ( về độ dài cùng 100 chữ số chẳng
hạn)
- Một vài con số về tốc độ thuật toán trong cài đặt:
So sánh với DES thì RSA: Có tốc độ chậm hơn rất nhiều Thường thì,RSA chậm ít nhất là 100 lần khi cài đặt bằng phần mềm, và có thể chậmhơn từ 1000 đến 10,000 lần khi cài đặt bằng phần cứng (còn tùy cách càiđặt)
Kích thước của khoá mật lớn hơn rất nhiều
- Vấn đề đi tìm số nguyên tố lớn: Một thuật toán để tạo ra tất cả các số
nguyên tố là không tồn tại, tuy nhiên có những thuật toán khá hiệu quả
để kiểm tra xem một số cho trước có phải là nguyên tố hay không (bàitoán kiểm tra tính nguyên tố) Thực tế, việc tìm các số nguyên tố lớn choRSA là một vòng lặp như sau:
1 Chọn một số ngẫu nhiên p nằm trong một khoảng có độ lớn yêu cầu(tính theo bit)
2 Kiểm tra tính nguyên tố của p, nếu là nguyên tố thì dừng lại, nếukhông thì quay lại bước 1
Những thuật toán tất định để kiểm tra tính nguyên tố là khá tốn thờigian và đòi hỏi được thực hiện trên máy tính có tốc độ cao Tuy nhiênngười ta cũng còn sử dụng các thuật toán xác suất, có khả năng „đoán‟rất nhanh xem một số có phải nguyên tố không Các thuật toán xác suấtnày không đưa ra quyết định đúng tuyệt đối, nhưng cũng gần như tuyệtđối; tức là xác suất báo sai có thể làm nhỏ tùy ý, chỉ phụ thuộc vào thờigian bỏ ra
- Về bài toán phân tích ra thừa số nguyên tố
Giải thuật tốt nhất vẫn là phương pháp sàng số Một ước lượng về thờigian thực hiện của giải thuật là:
Trong đó log2n cho số biết số bit cần để biểu diễn n, số cần phân tích ra thừa số nguyên tố Từ đó rút ra, nếu tăng n lên thêm 50 bit (quãng 15
chữ số thập phân) thì thời gian làm phân tích ra thừa số nguyên tố tănglên 10 lần
Vào những năm cuối của thế kỷ 20, người ta đã ước lượng thấy, với
n=200, L(n) ≈ 55 ngàn năm Đối với khả năng thực hiện bằng xử lý song
song, một trong các kết quả tốt nhất về phân tích TSNT với số lớn chobiết đã phân tích một số có 129 chữ số, phân bố tính toán trên toàn mạngInternet và mất trọn 3 tháng
4.2.5 Điểm yếu của giải thuật RSA
- Trong hệ RSA, không phải tất cả các thông tin đều được che giấu tốt, tức
là mọi khoá đều tốt và đều làm bản rõ thay đổi hoàn toàn
Trang 10- Đối với bất kỳ khoá nào tồn tại ít nhất 9 bản rõ bị ‘phơi mặt’, tuy nhiên
đối với n ≥ 200 điều đó không còn quan trọng Mặc dù vậy phải chú ý lànếu e không được chọn cẩn thận thì có thể gần đến 50% bản rõ bị lộ.Người ta cho rằng có thể tránh được tình huống này nếu số nguyên tốđược chọn là AN TOÀN Một số nguyên tố được gọi là AN TOÀN nếu
p=2p+1 trong đó p cũng là số nguyên tố.
4.2.6 Ứng dụng của RSA
- Bảo mật thông điệp : Sử dụng khoá công khai của bên nhận để mã , khoá
riêng của bên nhận để giải mã
- Xác thực thông điệp : Dùng khoá cá nhân của bên gửi để mã , khoá công
khai của bên gửi để giải mã
4.2.7 Phạm vi ứng dụng của RSA
- Mạng hành chính công , E-Business , E-Government.
- Kinh doanh thương mại điện tử : Thanh toán điện tử,bảo mật các dữ liệu
điện tử,chứng thực chữ ký điện tử
- Đào tạo ,thi cử từ xa,bảo mật dữ liệu tuyển sinh.
- Ngân hàng thương mại : Giao dịch, thanh toán qua mạng.
- Xuất nhập cảnh.
5 Hệ mã Difie – Henman
Trang 11- Được sử dụng trong các cơ chế phân phối khóa trong hệ mật đối xứng.
Tạo khóa
- Ta có p là số nguyên tố (p є Zp)
- Giả sử α ϵ Zp là một số nguyên thuỷ (primitive element )
- Các giá trị p và α được công bố công khai trên mạng.
- UID thông tin định danh hợp lệ cho từng user U trên mạng (“tên”,”
e-mail address”,” telephone number”…)
- Từng “user U,V” có một số mũ au ,aV với (0 ≤au ,aV ≤ p-2), và tính giá trị
bU ,bV công khai tương ứng :
Từng “user U,V” có một số mũ au ,av với : (0 ≤ au , av ≤ p-2),
- Output: Hai bên cùng tính bu = αa
- Là một biến thể của sơ đồ Diffie – Hellman.
- Tính an toàn dựa trên tính khó giải của bài toán logarit rời rạc.
- Nhược điểm chính: kích thước thông tin sau khi mã hóa sẽ tăng gấp đôi
so với thông tin gốc
- Giống các hệ mã khóa công khai khác , El Gamal làm việc với tốc độ
thấp (việc với các số nguyên lớn)
- Cần bộ nhớ lớn dành cho việc lưu trữ các khóa.
- Với hệ mã El Gamal chúng ta cần gấp đôi bộ nhớ để chứa bản mã so với
các hệ mã khác
6.1 Mã hóa
- Chọn pє Zp và α <P (α là một phần tử nguyên thủy є Z*p ) và x є ZN (x làcủa người nhận, bí mật) , tính: y = αx mod p
- Thông điệp rõ M ( M є ZP)
- Chọn ngẫu nhiên k < p và tính khóa mã hóa K: K = yk mod p
- Sau đó tính cặp bản mã: C1 = αk mod p; C2 = K.M mod p
- Gửi bản mã C = (C1, C2) đi (chú ý là sau đó k sẽ bị huỷ)
6.2 Giải mã
- Để giải mã thông điệp đầu tiên ta cần tính lại khóa mã hóa thông điệp K:
K = C1 mod p = αk.x mod p
- Sau đó tính M bằng cách giải phương trình : M = C2 K-1 mod p
- Việc giải mã bao gồm việc tính lại khóa tạm thời K (rất giống với mô
hình của Diffie – Hellman ) Khóa công khai của hệ mã là (p, α, y), khóa
bí mật là x