Tải bản đầy đủ
Hình 2.6 Mã hoá với khoá mã và giải mã khác nhau

Hình 2.6 Mã hoá với khoá mã và giải mã khác nhau

Tải bản đầy đủ

51

- Kích thước khóa lớn hơn khóa đối xứng rất nhiều.
- Không có lược đồ khóa công khai nào được chứng minh là an toàn.
Lược đồ mã hóa khóa công khai hiệu quả nhất được phát minh để khẳng định
tính an toàn của chúng dựa vào một tập hợp nhỏ các bài toán lý thuyết số được thừa
nhận là khó.
Sau đây ta xét hai hệ mã hoá khoá phi đối xứng là RSA và Elgamal
1/. Hệ mã hoá RSA
RSA là tên viết tắt của ba tác giả Rivest, Shamir, adleman. Hệ mã hoá này
được đề xuất năm 1977, dựa trên độ khó của việc phân tích thành thừa số nguyên tố
của các số nguyên lớn.
* Sơ đồ:
Chọn bí mật p,q là hai số nguyên tố lớn
Đặt P=C=Z n , tính bí mật n = p.q, φ ( n ) = ( p − 1) . ( q − 1)
Chọn b < φ ( n ) , b nguyên tố cùng nhau với φ ( n )
Chọn a là nghịch đảo của b theo φ ( n ) :

a . b ≡ 1 mod φ (n)
k = (k ', k ") trong đó

k ' = ( n, b) là khoá công khai
k " = ( n, a ) là khoá bí mật
Với mỗi khoá k (n, a, b) , mỗi x ∈ P, y ∈ C ta định nghĩa:
Hàm lập mã : y = ek ' ( x ) = x b mod n
Hàm giải mã : d k " ( y ) = y a mod n

52

Ví dụ:
Chọn cặp số nguyên tố p=61 và q=53
Khi đó n=p.q=61.53=3233 và φ ( n ) = 60.52=3120
Chọn b=17 thoả mãn điều kiện 17 và 3233 nguyên tố cùng nhau.
Với b=17 ta xác định a=2753 vì a.b = 17.2753 = 46801 ≡ 1mod 3120
Khi đó ta có cặp khoá như sau:
+ Khoá công khai: ( n, b) = (3233,17)
+ Khoá bí mật: ( n, a ) = (3233, 2753)
Một người B nếu gửi thông tin x =123 cho người nhận A, dựa trên khoá
công khai của A, người B thực hiện như sau:
Mã hóa thông tin x =123 bằng cách thực hiện phép tính:

y =12317 mod 3233 =855
Để giải mã bản mã 855, người A thực hiện phép tính:
8552573 mod 3233 =123
Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ giải thuật bình
phương và nhân.
* Độ an toàn của hệ mật mã RSA
- Hệ mã hoá RSA là tất định, tức là với một bản rõ
(n,a) thì chỉ có một bản mã

x và một khoá bí mật

y.

- Hệ mã RSA là an toàn khi giữ được bí mật khoá giải mã

a, p, q

và φ ( n )

.
- Nếu biết được p và q thì thám mã dễ dàng tính được φ ( n ) . Nếu biết được

φ ( n ) thì thám mã sẽ tính được a theo thuật toán Euclide mở rộng. Nhưng phân tích
n thành tích của p và q là bài toán khó.

53

Độ an toàn phụ thuộc vào khả năng giải bài toán phân tích số nguyên dương
n thành tích của hai số nguyên tố lớn p và q.
2/. Hệ mã hoá Elgamal
Hệ mã hoá Elgamal được T.Elgamal đề xuất năm 1985, dựa vào độ khó của
bài toán tính logarithm rời rạc, sau đó nhanh chóng được sử dụng rộng rãi không
những trong vấn đề bảo mật truyền tin mà còn trong các vấn đề xác nhận và chữ ký
điện tử.
Bài toán logarithm rời rạc trong Z p là đối tượng trong nhiều công trình
nghiên cứu và được xem là bài toán khó nếu p được chọn cẩn thận. Cụ thể là không
có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc. Để gây khó
khăn cho các phương pháp tấn công đã biết thì p phải có ít nhất 150 chữ số và (p-1)
phải có ít nhất một thừa số nguyên tố lớn. Lợi thế của bài toán logarithm rời rạc
trong xây dựng hệ mật là khó tìm được các logarithm rời rạc, song bài toán ngược
lấy luỹ thừa lại có thể tính toán hiệu quả theo thuật toán “ bình phương và nhân”.
Nói cách khác, luỹ thừa theo modulo p là hàm một chiều với các số nguyên tố p
thích hợp.
Hệ mật này là một hệ không tất định vì bản mã phụ thuộc vào cả bản rõ x lẫn
giá trị ngẫu nhiên k do người lập mã chọn. Bởi vậy, sẽ có nhiều bản mã được mã từ
cùng một bản rõ.
Bài toán logarithm rời rạc trong Zp
Đặc trưng của bài toán:I = (p, α, β) trong đó p là số nguyên tố,α

∈ Zp là

phần tử nguyên thuỷ, β∈Z p
*

Mục tiêu: Hãy tìm một số nguyên duy nhất a, 0 ≤ a ≤ p-2 sao cho

αa ≡ β(mod p )

54

*
Hệ mật khoá công khai Elgamal trong Z p

Sinh khoá:
Cho p là số nguyên tố sao cho bài toán logarithm rời rạc trong Z p là khó giải.
Cho α ∈Z p là phần tử nguyên thuỷ
*

*
*
*
Giả sử P =Z p , C =Z p x Z p

Ta định nghĩa:

K ={ k = (k ', k "); k ' = ( p, α, β); k " = a : β ≡ αa (mod p )}
Các giá trị p, α, β được công khai, còn a giữ kín (0 ≤ a ≤ p − 2)
với K = ( p, α, a, β ) và một số ngẫu nhiên bí mật k ∈Zp-1 , ta xác định:
Hàm lập mã : ek ' ( x, k ) = ( y1 , y2 )
Trong đó: y1 = α k mod p
y2 = x.β k mod p

với

y1 , y2 ∈ Z *p

Hàm giải mã: d k " ( y1 , y2 ) = y2 .( y1a ) −1 mod p
Ví dụ:
*
Chọn p = 2579 , α ∈Z p là phần tử nguyên thuỷ, chọn α = 2

Chọn a sao cho 0 ≤ a ≤ p − 2 nên chọn a = 765
Khi đó: β ≡ α a mod p = 2765 mod 2579 = 949
Chọn một số ngẫu nhiên bí mật k ∈Z p −1 , chọn k=853
Giả sử A muốn gửi thông báo x=1299 cho B, A phải tính

ek ' ( x, k ) =( y1 , y2 )
k
853
Trong đó: y1 = α mod p = 2 mod 2579 = 435

y2 =1299.949853 mod 2579 = 2396

khi B thu được bản mã ( y1 , y2 ) = (435, 2396) , anh ta sẽ tính

55

x = d k " ( y1 , y2 ) = y 2 .( y1a ) −1 mod p
=2396.(435765 ) −1 mod 2579 =.....
=1299

Đó chính là bản rõ mà A đã mã hoá
* Độ an toàn của hệ mã hoá Elgamal
Độ an toàn phụ thuộc vào khả năng giải bài toán logarit rời rạc trong Zp
2.2.1.4. Sử dụng phương pháp mã hoá bảo mật thông tin trên đường truyền lưới
Thông tin tại một nút lưới nào đó trước khi gửi đi sẽ phải mã hoá để bảo đảm
được tính bảo mật. Những dự liệu lớn sẽ dùng hệ mã hoá khoá đối xứng vì tốc độ
nhanh hơn hệ mã hoá khoá công khai.
Nút lưới nguồn

Thông tin gốc
E1

Thông tin đã mã hoá
với khoá 1

Nút lưới đích
Nút lưới trung
gian thứ nhất

D1

E2

Thông tin nhận
DN

Thông tin đã mã hoá
với khoá N

E1: Mã hoá với khoá 1 E2: Mã hoá với khoá 2
D1: Giải mã với khoá 1 DN: Giải mã với khoá N
Hình 2.7 Bảo mật thông tin bằng mã hóa theo đường truyền
Ở đây, thông tin được mã hoá để bảo vệ trên đường truyền giữa hai nút lưới,
không quan tâm đến nguồn và đích của thông tin đó. Vì vậy, tại các nút lưới đòi hỏi
phải được bảo vệ tốt.

56

2.2.2. Phương pháp tạo đại diện thông điệp
Trên thực tế, các thông điệp sử dụng chữ ký điện tử có độ dài bất kỳ, thậm
chí có kích thước lên đến vài Megabye. Trong khi đó, việc ký số thực hiện trên từng
bit tài liệu nên độ dài của chữ ký số ít nhất cũng bằng độ dài của thông điệp. Một số
chữ ký trên thông điệp có kích thước gấp đôi thông điệp đó, chẳng hạn như phương
pháp DSS sử dụng chữ ký 320 bit trên thông điệp 160 bit.
Để giải quyết vấn đề này, chúng ta có thể chia nhỏ thông điệp cần ký thành
các đoạn có độ dài thích hợp và ký trên từng mảnh thông điệp này. Tuy nhiên giải
pháp này lại có nhiều khuyết điểm và không thích hợp áp dụng trong thực tế.
Nếu văn bản cần được ký quá dài thì số lượng chữ ký được tạo ra sẽ nhiều và
kết quả nhận được là một thông điệp có kích thước rất lớn.
Hầu hết các phương pháp chữ ký điện tử có độ an toàn cao đều đòi hỏi chi
phí tính toán cao và do đó, tốc độ xử lý rất chậm. Việc áp dụng thuật toán tạo chữ
ký điện tử nhiều lần trên một văn bản sẽ thực hiện rất lâu.
Từng đoạn văn bản sau khi ký có thể dễ dàng bị thay đổi thứ tự hay bỏ bớt đi
mà không làm mất đi tính hợp lệ của văn bản. Việc chia nhỏ văn bản sẽ không thể
bảo đảm được tính toàn vẹn của thông tin ban đầu.
Thay vì ký trên tài liệu dài, người ta thường dùng “hàm băm” để tạo “đại
diện” cho tài liệu, sau đó mới “ký số” lên đại diện này. Đại diện của tài liệu chính là
giá trị của hàm băm trên tài liệu, nó còn được gọi là “tóm lược” hay “bản thu gọn”
của tài liệu. Đại diện của tài liệu được xem như là “đặc thù” của tài liệu (thông
điệp).
2.2.2.1. Cấu trúc hàm băm mật mã
Hầu hết các hàm băm mật mã đều có cấu trúc giải thuật như sau:
Cho trước một thông điệp M có độ dài bất kỳ, tuỳ theo thuật toán được sử
dụng, chúng ta có thể cần bổ sung một số bit vào thông điệp này để nhận được
thông điệp có độ dài là bội số của một hằng số cho trước. Chia nhỏ thông điệp thành
từng khối có kích thước bằng nhau M1,M2,...,Ms.