3.1.1 Modul tạo khóa 31
3.1.2 Modul tạo chữ ký cho file tài liệu 31
3.1.3 Modul xác thực chữ ký số 31
3.2 Mô hình 1 : Tạo cặp khóa bí mật – công khai 32
3.3 Mô hình 2 : Tạo chữ ký số 33
3.4 Mô hình 3 : Xác thực chữ ký số 34
3.5 Chương trình thử nghiệm : 35
3.5.1 Giao diện chính của chương trình 35
3.5.2 Thử nghiệm 36
3.5.3 Nhận xét 36
Kết luận 38
Tài liệu tham khảo 39
Danh mục hình
Hình 1.1 : Phân loại chữ ký số 5
Hình 1.2 : Sơ đồ tổng quan chữ ký số trong thực tế 7
Hinh 1.3 : Ảnh minh họa làm việc của một hàm băm 12
Hình 1.4 : Giải thuật MD5 16
Hình 1.5 : SHA-1 18
Hình 1.6 : Mô hình của mật mã khóa công khai 20
Hình 1.7 : Mã hóa RSA 21
Hình 1.8 : Ví dụ RSA 23
Hình 2.1 : Hàm MAC 26
Hình 2.2 : Minh họa chữ ký số của bên gửi cho thông báo M 27
Hình 2.3 : Ký văn bản 29
Hình 2.4 : Xác thực chữ ký 30
Chương 3 : MÔ TẢ HỆ THỐNG CÀI ĐẶT 31
Hình 3.1 : Sơ đồ chương trình chữ ký số 31
Hình 3.5: Giao diện chương trình 36
Hình 3.6: Xác thực 36
Lời mở đầu
Mật mã học là một trong những vấn đề quan trọng trong lĩnh vực bảo mật và an toàn
thông tin. Trên thế giới, mật mã học đã được ra đời từ thời La Mã cổ đại và ngày càng
được nghiên cứu , phát triển đạt được những thành tựu to lớn. Trong mật mã học, vấn đề
bảo mật luôn đi đôi với vấn đề xác thực thông tin, đặc biệt trong hệ thống mã hóa khóa
công khai vấn đề xác thực là vô cùng quan trọng. Để giải quyết vấn đề trên người ta đưa ra
một cách giải quyết hiệu quả, đó là chữ ký số.
Với sự bùng nổ của mạng Internet hiện nay, mạng máy tính đang ngày càng đóng vai
trò thiết yếu trong mọi lĩnh vực hoạt động của toàn xã hội, và khi nó trở thành phương tiện
điều hành các hệ thống thì nhu cầu bảo mật thông tin được đặt lên hàng đầu. Việc sử dụng
chữ ký số là một giải pháp hữu hiệu, ngày càng được ứng dụng nhiều trong thực tế, không
chỉ giới hạn trong ngành công nghệ thông tin, mật mã học mà còn được áp dụng nhiều
trong những lĩnh vực khác như ngân hang, viễn thông…
Mật mã học khóa công khai tạo ra chữ ký số và ứng dụng vào các tài liệu. Hệ mã hóa
RSA – hệ mã hóa điển hình của mật mã công khai cùng với hàm băm mật mã học một
chiều chính là những công cụ chính trong việc tạo ra chữ ký số điện tử.
Trong khoá luận này, tôi chủ yếu tập trung vào sơ đồ chữ ký số RSA và ứng dụng của
nó. Luận văn này được trình bày theo 3 phần : Phần 1 gồm các chương 1 giới thiệu chung
và những công cụ tạo nên chữ ký số; Phần 2 là chương 2 nói về mô hình của chữ ký số và
phần 3 là chương 3 - mô tả hệ thống cài đặt thử nghiệm. Cuối cùng là phần kết luận và tài
liệu tham khảo.
Mặc dù đã cố gắng hết sức, nhưng vẫn không sao tránh khỏi sai sót, vì vây rất mong
được sự góp ý phê bình.
1
Chương 1 – TỔNG QUAN VỀ CHỮ KÝ SỐ
1.1 Giới thiệu về chữ ký số và những công cụ liên quan
1.1.1 Giới thiệu chung
Trong đời sống hàng ngày, chữ ký (viết tay) trên một văn bản là một minh chứng về
“bản quyền” hoặc ít nhất cũng là sự “tán đồng, thừa nhận” các nội dung trong văn bản.
Chẳng hạn như trên việc ký vào phiếu nhận tiền từ ngân hàng, hợp đồng mua bán, chuyển
nhượng, thừa kế, tố tụng…. Chữ ký viết tay được chính tay người ký nên không thể sao
chụp được. Thông thường chữ ký viết tay trên văn bản thì được dùng để xác nhận người
ký nó. Những yếu tố nào làm nên “sức thuyết phục của nó” ? Về mặt lý tưởng thì [1] :
- Chữ ký là bằng chứng thể hiện người ký có chủ định khi ký văn bản
- Chữ ký thể hiện “chủ quyền”, nó làm cho người nhận văn bản biết rằng ai đích thị
là người đã ký văn bản.
- Chữ ký không thể “tái sử dụng”, tức là nó là một phần của văn bản mà không thể
sao chép sang các văn bản khác
- Văn bản đã ký không thể thay đổi được
- Chữ ký không thể giả mạo và cũng là thứ không thể chối bỏ( người đã ký văn bản
không thể phủ định việc mình đã ký văn bản và người khác không thể tạo ra chữ ký
đó ).
Trong cuộc sống đời thường, việc tạo một mô hình “lý tưởng”như trên là không dễ vì
việc ký trên văn bản giấy có thể giả mạo chữ ký, nhưng với khả năng kiểm định sát sao thì
việc làm thay đổi không phải dễ. Tuy nhiên trong thế giới máy tính thì vấn đề ký như trong
thực tế sẽ gặp phải nhiều khó khăn : các dòng thông tin trên máy tính có thể thay đổi dễ
dàng, hình ảnh của chữ ký tay của một người cũng dễ dàng cho “sang – truyền” từ một văn
bản này sang một văn bản khác, và việc thay đổi nội dung một văn bản điện tử (sau khi ký)
cũng chẳng để lại dấu vết gì về phương diện “tẩy, xóa”…
Để có được những đặc tính như trên, giao thức “ký trong thế giới điện tử “ cần phải có
sự hỗ trợ của công nghệ mã hóa. Sơ đồ chữ ký số là phương pháp ký một thông báo được
lưu dưới dạng điện tử. Giao thức cơ bản của chữ ký số dựa trên ý tưởng của Diffie và
Hellman [7] :
2
- Người gửi (chủ nhân của văn bản) ký văn bản bằng cách mã hóa nó với khóa bí mật
của mình
- Người gửi chuyển văn bản đã ký cho người nhận
- Người nhận văn bản kiểm tra chữ ký bằng việc sử dụng chìa khóa công khai của
người gửi để giải mã văn bản.
1.1.2 Khái niệm về chữ ký số
Chữ ký số (khóa công khai) là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi
người sử dụng một cặp khóa công khai - bí mật và qua đó có thể ký các văn bản điện tử
cũng như trao đổi các thông tin mật. Khóa công khai thường được phân phối thông qua
chứng thực khóa công khai. Quá trình sử dụng chữ ký số bao gồm 2 quá trình: tạo chữ ký
và kiểm tra chữ ký [10].
Các thuật toán chữ ký số cho phép xác định nguồn gốc, bảo đảm tính toàn vẹn của dữ
liệu được truyền đi, đồng thời nó cũng bảo đảm tính không thể phủ nhận của thực thế đã
ký thông tin.
1.1.3 So sánh chữ ký số với chữ ký thông thường(chữ ký viết tay) trên văn bản
Chữ ký số và chữ ký thường có nhiều điểm khác nhau :
- Về tài liệu được ký : Với tài liệu thông thường, nó là một phần vật lý của tài liệu.
Ngược lại, chữ ký số không phải theo kiểu vật lý gắn vào thông báo nên không nhìn
thấy trên bức điện
- Về vấn đề kiểm tra chữ ký : Chữ ký thông thường được kiểm tra bằng cách so sánh
nó với các chữ ký xác thực khác ( chữ ký mẫu). Điểm yếu của chữ ký thông thường
là không an toàn, và dễ có thể giả mạo. Ngược lại, chữ ký số lại được kiểm tra nhờ
dùng thuật toán kiểm tra công khai, bất kỳ ai cũng có thể kiểm tra được. Việc dùng
một sơ đồ chữ ký an toàn có thể ngăn chặn được giả mạo.
1.1.4 Vị trí, vai trò của chữ ký số điện tử
- Xu hướng quốc tế hóa và toàn cầu hóa đã và đang ảnh hưởng đến sự phát triển của
thế giới. Việc trao đổi thông tin cũng từ đó yêu cầu nhanh gọn, chính xác và đặc
3
biệt là phải an toàn. Việc trao đổi thông tin, chứng thực thông tin theo phong cách
truyền thông làm giảm tốc độ, cũng như sự chính xác của thông tin. Những công
việc đó mang tính chất thủ công gây ra sự chậm chễ và thiếu chính xác trong trao
đổi.
- Chính khó khăn đã nảy sinh sự phát triển mạnh mẽ của công nghệ thông tin và công
nghệ mã hóa . Hiện nay, ở tất cả các nước phát triển cũng như đang phát triển, mạng
máy tính đang ngày càng đóng vai trò thiết yếu trong mọi lĩnh vực hoạt động của
toàn xã hội và nhu cầu bảo mật thông tin được đặt lên hàng đầu. Điển hình là việc
mã hoá bảo mật các thông tin số của doanh nghiệp, dùng chữ ký số xác thực email
trao đổi thông tin, kiểm soát truy cập vào các sàn thương mại điện tử và các đơn đặt
hàng, ngân hàng điện tử, mua sắm trực tuyến mà vai trò chủ yếu là chữ ký số điện
tử.
- Trên thực tế, chữ ký số không chỉ được thực hiện cho các giao dịch điện tử trên
mạng internet mà còn qua hệ thống mạng viễn thông di động.Đặc biệt, hiện nay
nhiều nước trên thế giới không chỉ triển khai ứng dụng chữ ký số trên mạng máy
tính mà còn áp dụng trên mạng điện thoại di động để thực hiện các giao dịch điện
tử. Hướng đi này giúp đẩy nhanh giao dịch, đơn giản hoá mua sắm trực tuyến và
giúp người dùng có thể truy cập mọi lúc, mọi nơi.
- Sự ra đời của chữ ký số khẳng đinh được lợi ích to lớn về chiến lược và kinh tế,
đồng thời các vấn đề liên quan đến chữ ký số cũng là nhưng chủ đề quan trọng nhất
của mật mã học.
1.1.5 Phân loại chữ ký số
Chúng ta có thể chia chữ ký số ra 2 loại [2]: Kỹ thuật ký mà chữ ký số là một phần đính
vào thông điệp gửi đi, cả 2 đều là đầu vào cho quá trình xác minh tính đúng đắn của chữ ký
và loại chữ ký mà từ nó có thể phục hồi lại thông điệp ban đầu trước khi ký, thông điệp ban
đầu này không phải là đầu vào cho quá trình xác minh chữ ký.
4
Hình 1.1 : Phân loại chữ ký số
Do tính thực tế của chữ ký số mà luận văn chủ yếu tập trung vào kỹ thuật ký thứ 2, chữ
ký số như một phần đính kém thêm cho quá trình xác minh thông điệp. Những đặc điểm cơ
bản của chữ ký này là :
- Chữ ký điện tử đi kèm với thông điệp gốc
- Cần có thông điệp (gốc) cho quá trình kiểm tra chữ ký điện tử
- Sử dụng hàm băm mật mã. Ví dụ: RSA, DSA, ElGamal, Schnorr…
- Dựa trên thuật toán mã hóa. Ví dụ :chữ ký số Full Domain Hash, RSA-PSS dựa theo
thuật toán mã hóa RSA, chữ ký số DSA dựa vào thuật toán DSA…
1.1.6 Sơ đồ tổng quan của một hệ thống chữ ký số điện tử
Một sơ đồ chữ ký số thường bao gồm hai thành phần chủ chốt là thuật toán ký và thuật
toán xác minh. Một sơ đồ chữ ký số là một bộ 5 (P, A, K, S, V) thỏa mãn các điều kiện sau
[13]:
- P là một tập hợp các bản rõ có thể
- A là tập hữu hạn các chữ ký có thể
- K là tập hữu hạn các khóa có thể
- S là tập các thuật toán ký
5
Chiến
lược chữ
ký
Khôi
phục
thông
điệp
Đính kèm
- V là tập các thuật toán xác minh
Với mỗi k thuộc K, tồn tại một thuật toán ký sigk thuộc S và một thuật toán xác minh
verk thuộc V, trong đó sigk và verk là các ánh xạ : sigk là một ánh xạ từ P sang A vàVerk
là một ánh xạ từ A sang tập biểu diễn {True, False} thỏa mãn với mọi x thuộc P, y thuộc
A,ver (x,y)= true nếu y=sig(x) và ver(x,y) = false nếu y khác sig(x). Với mỗi k thuộc K,
hàm sigk và verk là các hàm thời gian đa thức, verk là hàm công khai còn sigk là hàm mật.
o Ý nghĩa của sơ đồ :
Khi một người dùng muốn ký lên một thông báo x thì người đó dùng thuật toán an toàn
để tạo ra chữ ký y =sig(x) nhận được và gửi cho người nhận. Người nhận nhận được chữ
ký sig(x) thì dùng thuật toán xác minh ver(x,y) để xác định tính đúng đắn của chữ ký số
( trả về true hoặc false).
1.1.7 Sơ đồ chữ ký số RSA
Cho N = P x Q với P và Q là các số nguyên tố khác nhau. Cho P = A = Z
N
và định
nghĩa P = {(N, P, Q, A, B) với N = PQ, AB
≡
mod(
φ
(N)))}. Các giá trị N và B là công
khai. Ta định nghĩa : sig
k
(x) = x
α
(mod N)
và ver
k
(x,y) = true
⇔
x
≡
y
B
(mod N)
Trong sơ đồ này,
φ
(N) là phi hàm Euler (sẽ giải thích ở chương 2 :
φ
(N) = (P-1)x(Q-
1)). Thông điệp x được ký theo phép tính đồng dư với khóa riêng với khóa riêng của người
gửi và quá trình xác thực chữ ký cũng dựa vào phép tính đồng dư nhưng với khóa công
khai của người gửi.
1.1.8 Mô hình của chữ ký số trong thực tế
Mô hình này được giới thiệu trong [5]
6
Hình 1.2 : Sơ đồ tổng quan chữ ký số trong thực tế
Dịch vụ cung cấp ở client S : Dịch vụ ở phía client cho phép tạo chữ ký số σ cho
văn bản đầu vào m. Dịch vụ xác thực chữ ký
Dịch vụ của server G (CA) chứng thực số : Cung cấp khóa công khai, bí mật cho người
dùng (kv,ks). Xác thực một người dùng.
Dịch vụ xác thực chữ ký ở V :Cung cấp dịch vụ cho client kiểm tra tính đúng đắn của
một chữ ký.
o Chữ ký số RSA sử dụng các công cụ :
Chữ ký số RSA là một trong những loại chữ ký số sử dụng phổ biến hiện nay, nó sử
dụng những công cụ chính :
- Số học
- Hàm băm mật mã học
- Mật mã khóa công khai ( thuật toán mã hóa RSA)
Trong mật mã học nói chung, chữ ký số nói riêng thì toán học là công cụ không thể
thiếu. Các thuật toán mã hóa đều sử dụng những kiến thức toán học làm nền cơ bản. Vì vậy
chương 2 sẽ trình bầy ngắn gọn về một số kiến thức về Số học và Hình học đại số có ứng
dụng trực tiếp trong mã hóa thông tin, đặc biệt là trong thuật toán mã hóa RSA. Những vấn
đề của phần này chủ yếu được lấy từ [1] và [9].
1.2 Cơ sở hình thành nên chữ ký số
1.2.1 Cơ sở toán học
Mục này được trình bày trong[9]. Số học là một nhánh của toán học, nhưng nó lại trở
thành một trong những công cụ hữu hiệu nhất của ngành an ninh máy tính. Như là sự khởi
7
đầu, số học giúp bảo vệ những dữ liệu nhạy cảm như số thẻ tín dụng khi giúp người dùng
mua sắm trực tuyến. Đó chính là kết quả của một số thành tựu nghiên cứu đáng ghi nhận từ
những năm 1970 tới nay, đã được áp dụng rộng rãi trên thế giới. Những giao thức mã hóa
đặc biệt là chữ ký số điện tử đều dựa trên lý thuyết số học để tạo khóa, mã hóa và giải mã.
An tòan của những giao thức này đều liên quan tới vấn đề trong số học : giải thuật công
khai và phân tích thừa số nguyên tố.
1.2.1.1 Sinh số nguyên tố và phân tích thừa số nguyên tố
Hai hệ quả và một ước lượng trong thuyết số học là tiền đề cho hệ thống khóa công
khai RSA ngày nay
Hệ quả 1 : Sinh số nguyên tố thì dễ. Việc tìm ra một số nguyên tố ngẫu nhiên với kích
cỡ cho trước là dễ dàng.
Nó là kết quả của hai điểm khác : Số nguyên tố với kích thước bất kỳ thì rất phổ biến
và việc kiểm tra số nguyên tố thì không khó – thậm chí với cả số nguyên tố rất lớn
Để sinh số nguyên tố ngẫu nhiên, đơn giản nhất là chỉ việc sinh ra một số nguyên ngẫu
nhiên với độ lớn đã cho và kiểm tra tính nguyên tố cho đến khi một số nguyên tố được tìm
thấy. Dựa vào điều kiện số nguyên tố, một số kỳ vọng được kiểm tra dựa vào thứ tự của
lnx( thuật toán tự nhiên của x) khi mà x là một số điển hình với độ lớn mong muốn.
Việc kiểm tra một số là số nguyên tố là không dễ. Trong thực tế, dường như việc kiểm
tra tính nguyên tố sẽ yêu cầu một số khác ngoài chính số đó và số 1 là ước của số nguyên
cần kiểm tra. Hầu hết các hệ mã hóa khóa công khai ngày nay đề phụ thuộc vào việc sinh
số nguyên tố.
Cho p, và q là 2 số nguyên tố lớn được sinh ngẫu nhiên.(kích cỡ trung bình trong các hệ
mã hóa thường là 512 bits hoặc lớn hơn).
Hệ quả 2 : Phép tính nhân là dễ : Với p và q cho trước, việc tính kết quả của phép nhân
n = pxq là dễ dàng.
Ước lượng 3 : Phân tích thừa số là khó : Với một số nguyên n là kết quả của phép nhân
số nguyên tố lớn, việc tìm lại các số nguyên tố thừa số p, q là rất khó.
Bất chấp hàng trăm năm nghiên cứu trong vấn đề này, việc phân tích ra thừa số của một
số nguyên lớn vẫn mất rất một thời gian dài. Phương pháp nhanh nhất gần đây đã nhanh
hơn rất nhiều so với những cách đơn gaỉn là tìm tất cả các thừa số ở cùng một thời điểm.
8
Không có nhận xét nào:
Đăng nhận xét