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

Tìm hiểu hạ tầng khóa công khai và xây dựng ứng dụng khoá luận tốt nghiệp

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 (1.46 MB, 74 trang )

LỜI CAM ĐOAN
Em xin cam đoan: Bản khóa luận tốt nghiệp này là công trình nghiên
cứu thực sự của cá nhân, được thực hiện dựa trên cơ sở nghiên cứu lý thuyết,
kiến thức chuyên ngành dưới sự hướng dẫn của Thạc sỹ Trần Tuấn Vinh.
Các chương trình, những kết luận nghiên cứu được trình bày trong khóa
luận này là trung thực và được ghi rõ nguồn gốc.
Một lần nữa em xin khẳng định về sự trung thực của lời cam đoan trên.
Sinh viên thực hiện

Nguyễn Đức Linh


LỜI CẢM ƠN
Lời đầu tiên em muốn nói là em xin chân thành cảm ơn sự hướng dẫn
tận tình của thầy Trần Tuấn Vinh, khoa Công nghệ thông tin Trường Đại học
sư phạm Hà Nội 2.
Trong suốt thời gian thực hiện khóa luận, mặc dù rất bận rộn với công
việc nhưng thầy vẫn dành rất nhiều thời gian và tâm huyết trong việc hướng
dẫn em. Thầy đã cung cấp cho em rất nhiều hiểu biết về một lĩnh vực mới khi
em mới bắt đầu bước vào thực hiện khóa luận. Trong quá trình thực hiện khóa
luận thầy luôn định hướng, góp ý và sửa chữa những chỗ sai giúp em không
bị lạc lối trong kiến thức mênh mông.
Cho đến hôm nay, khóa luận của em đã được hoàn thành, cũng chính là
nhờ sự nhắc nhở, đôn đốc, sự giúp đỡ nhiệt tình của thầy.
Em cũng xin chân thành cám ơn các thầy cô trong khoa Công nghệ
thông tin, cũng như các thầy cô trong trường đã giảng dạy, giúp đỡ chúng em
trong 4 năm học qua. Chính các thầy cô đã xây dựng cho chúng em những
kiến thức nền tảng và những kiến thức chuyên môn để em có thể hoàn thành
khóa luận này cũng như những công việc của mình sau này.
Em xin chân thành cảm ơn.
Sinh viên thực hiện



Nguyễn Đức Linh


MỤC LỤC
LỜI NÓI ĐẦU ................................................................................................... 1
CHƯƠNG 1: CƠ SỞ MẬT MÃ HỌC ................................................................ 2
1.1. Mật mã khoá bí mật ..................................................................................... 2
1.1.1. Giới thiệu về mật mã khoá bí mật và các khái niệm có liên quan ........ 2
1.1.2. Một vài các thuật toán sử dụng trong mật mã khoá đối xứng .............. 3
1.1.2.1. DES ......................................................................................... 3
1.1.2.2. IDEA ....................................................................................... 3
1.1.2.3. Triple DES ............................................................................... 3
1.1.2.4. CAST-128 ............................................................................... 4
1.1.2.5. AES…………………………………………………… .... ….. 4
1.2. Mật mã khoá công khai ............................................................................... 4
1.2.1. Khái niệm ........................................................................................... 4
1.2.2. Các thuật toán sử dụng trong mật mã khoá công khai ......................... 5
1.2.2.1. RSA ......................................................................................... 5
1.2.2.2. Phương thức trao đổi khoá Diffie Hellman .............................. 6
1.3. Chữ ký điện tử ............................................................................................. 6
1.3.1. Tổng quan về chữ ký điện tử.............................................. ..................7
1.3.2. Quy trình sử dụng chữ ký điện tử....................................... ..... ............8
1.3.3. Một số sơ đồ chữ ký điện tử phổ biến....................................... ... ......11
1.4. Hàm hash............................................................................................ ... ......24
1.4.1. Khái niệm hàm hash....................................................................... ... .24
1.4.2. Tóm lược thông báo........................................................................ ... 24
1.5. Hàm băm và kết hợp hàm băm vào chữ ký điện tử................................ ... ..25
1.6. Cài đặt minh họa sơ đồ ký số RSA kết hợp băm SHA........................... ... ..25
CHƯƠNG 2: TỔNG QUAN VỀ HẠ TẦNG KHÓA CÔNG KHAI - PKI..... ..... .32

2.1. Lịch sử phát triển PKI …………………...……………………………… .... .32
2.2.Tình hình PKI tại Việt Nam........................................................................ 34
2.3. Khái niệm PKI................................................................................................... 36
2.4. Các khái niệm trong PKI ................................................................................... 38
2.4.1. Chứng chỉ ................................................................................................. 38
2.4.2. Kho chứng chỉ.......................................................................................... 40
2.4.3. Thu hồi chứng chỉ .................................................................................... 40
2.4.4. Công bố và gửi thông báo thu hồi chứng chỉ........................................... 41


2.4.5. Sao lưu và dự phòng khóa ....................................................................... 42
2.4.6. Cập nhật khóa tự động ............................................................................. 42
2.4.7. Lịch sử khóa............................................................................................. 43
2.4.8. Chứng thực chéo ...................................................................................... 43
2.4.9. Hỗ trợ chống chối bỏ ............................................................................... 43
2.4.10. Tem thời gian ......................................................................................... 44
2.4.11. Phần mềm phía người dùng ................................................................... 44
2.4.12. Chính sách của chứng chỉ ...................................................................... 45
2.5. Các thành phần của một hệ thống PKI.............................................................. 45
2.5.1. Tổ chức chứng thực (Certification Authority) ........................................ 46
2.5.2. Trung tâm đăng ký (Registration Authorites) ......................................... 47
2.5.3. Thực thể cuối (End entity) ....................................................................... 47
2.5.4. Hệ thống lưu trữ (Repositories)............................................................... 48
2.6. Chức năng cơ bản PKI ...................................................................................... 48
2.6.1. Chứng thực (Certification) ...................................................................... 48
2.6.2. Thẩm tra (Validation) .............................................................................. 49
2.6.3. Một số chức năng khác ........................................................................... 49
2.7. Mục tiêu của PKI .............................................................................................. 53
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG PKI VỚI OPENCA............................... 55
3.1. OpenCA................................................................................................... ... ........55

3.1.1. Giới thiệu về OpenCA ............................................................................. 55
3.1.2. Mô hình hệ thống PKI với OpenCA .................................................... 56
3.1.2.1. RootCA ..................................................................................... 56
3.1.2.2. Khởi tạo CA .............................................................................. 57
3.1.2.3. Khởi tạo chứng chỉ cho người quản trị ...................................... 62
3.1.3. SubCA ................................................................................................. 67
3.1.4. RA ...................................................................................................... 67
3.2. Chữ ký điện tử............................................................................................... 68
KẾT LUẬN ......................................................................................................... 70
TÀI LIỆU THAM KHẢO ................................................................................... 71


LỜI NÓI ĐẦU
Ngày nay, việc giao tiếp qua mạng Internet đang trở thành một nhu cầu
cấp thiết. Các thông tin truyền trên mạng đều rất quan trọng, như mã số tài
khoản, thông tin mật khẩu. Tuy nhiên, với các thủ đoạn tinh vi, nguy cơ bị ăn
cắp thông tin qua mạng ngày càng gia tăng. Hiện giao tiếp qua Internet chủ yếu
dựa vào giao thức TCP/IP. Đây là giao thức cho phép các thông tin được gửi từ
máy tính này tới máy tính khác thông qua một loạt các máy trung gian hoặc
các mạng riêng biệt. Chính điều này đã tạo cơ hội cho những kẻ trộm công
nghệ cao có thể thực hiện các hành động phi pháp. Các thông tin truyền trên
mạng có thể bị nghe trộm (Ravesdropping), giả mạo (Tampering), mạo danh
(Impersonation). Các biện pháp bảo mật hiện nay, chẳng hạn như dùng mật
khẩu, đều không đảm bảo vẫn có thể bị nghe trộm hoặc bị dò ra nhanh chóng.
Do vậy, các thông tin truyền trên Internet ngày nay đều có xu hướng
được mã hóa để bảo mật. Trước khi truyền qua mạng Internet, người gửi mã
hóa thông tin, trong quá trình truyền, dù có “chặn” được các thông tin này, kẻ
trộm cũng không thể đọc được vì đã bị mã hóa. Khi tới đích, người nhận sẽ sử
dụng một công cụ đặc biệt để giải mã. Phương pháp mã hóa và bảo mật phổ
biến nhất đang được thế giới áp dụng là chứng chỉ số (Digital Certificate).

Với chứng chỉ số, người sử dụng có thể mã hóa thông tin một cách hiệu quả,
chống giả mạo, xác thực, chống chối cãi nguồn gốc... Một cách mã hóa dữ
liệu đảm bảo an toàn đó là mã hóa khóa công khai. Do đó, em đã chọn đề tài
nghiên cứu “Tìm hiểu hạ tầng khóa công khai PKI và xây dựng ứng dụng” để
làm rõ vấn đề trên.
Để đạt được thành quả như ngày hôm nay, em xin chân thành cảm ơn
các thầy cô giáo đã luôn dìu dắt và truyền đạt kiến thức cho chúng em, đặc
biệt thầy giáo Trần Tuấn Vinh đã nhiệt tình giúp đỡ để em hoàn thành tốt đề
tài này.
Trong quá trình thực hiện đề tài không tránh khỏi thiếu sót, kính mong
sự chỉ bảo đóng góp nhiệt tình của thầy cô và các bạn để đề tài nghiên cứu
được hoàn thiện tốt hơn.

1


Chương 1
CƠ SỞ MẬT MÃ HỌC
Mật mã đã được sử dụng từ rất lâu đời. Các hình thức mật mã sơ khai
đã được tìm thấy từ khoảng bốn nghìn năm trước trong nền văn minh Ai Cập
cổ đại. Mật mã đã và đang tồn tại hàng nghìn năm lịch sử và hiện vẫn đang
được sử dụng rất rộng rãi để giữ bí mật trong truyền tin đặc biệt trong các lĩnh
vực quân sự, chính trị, an ninh và quốc phòng. Mật mã về cơ bản được chia
thành hai loại chính là mật mã khóa bí mật (hay còn gọi là mật mã đối xứng)
và mật mã khóa công khai (hay còn gọi là mật mã phi đối xứng).
Để có thể truyền tin sử dụng mật mã thì hai bên truyền tin phải có khóa.
Một khóa mã hóa là một mẫu thông tin đặc biệt được kết hợp với một thuật
toán để thi hành mã hóa và giải mã. Mỗi khóa khác nhau có thể tạo ra các văn
bản mã hóa khác nhau và nếu ta không chọn đúng khóa thì không thể nào mở
được dữ liệu đã mã hóa, cho dù biết được mã hóa văn bản dùng thuật toán gì.

Sử dụng khóa càng phức tạp, mã hóa càng mạnh.
Việc chuyển đổi từ bản tin ban đầu thành bản tin mã hoá được gọi là sự
mã hoá, sự chuyển đổi ngược lại từ bản tin mã hoá thành bản tin ban đầu được
gọi là giải mã.
Bản tin ban đầu được gọi là bản rõ, bản tin ban đầu được mã hoá sẽ trở
thành bản mã. Toàn bộ cơ chế bí mật đó được gọi là mật mã.
1.1. Mật mã khoá bí mật
1.1.1. Giới thiệu về mật mã khoá bí mật và các khái niệm có liên quan
Trong mật mã đối xứng các bên tham gia liên lạc sử dụng cùng một
khóa để mã hóa và giải mã. Trước khi truyền tin, hai thực thể A và B cùng
thỏa thuận với nhau một khóa dùng chung (K). Thực thể A dùng khóa đó để
mã hóa bản tin (eK) sau đó gửi cho thực thể B. Thực thể B dùng khóa K, thực

2


hiện phép giải mã (dK) để giải mã mã nhận được. Khóa bí mật phải được giữ
bí mật.
1.1.2. Một vài các thuật toán sử dụng trong mật mã khoá đối xứng
1.1.2.1. DES
Hệ mật DES được xây dựng tại Mỹ trong những năm 70 theo yêu cầu
của Văn phòng Quốc Gia về chuẩn và được sự thẩm định của an ninh quốc
gia. DES kết hợp cả hai phương pháp thay thế và chuyển dịch
DES là một mật mã khối. Độ dài của mỗi khối là 64 bit.
Khoá dùng trong DES có độ dài tổng thể là 64 bit, tuy nhiên chỉ có 56
bit thực sự được dùng, 8 bit còn lại dùng cho việc kiểm tra.
Đây đã từng là thuật toán mật mã được sử dụng rộng rãi nhất .
1.1.2.2. IDEA
IDEA là một thuật toán mã hoá khối.
IDEA tao thác trên từng khối 64 bit, mã khối 64bit plaintext thành khối

64bit ciphertext.
Độ dài khoá khoá dùng trong thuật toán IDEA là 128 bit.
1.1.2.3. Triple DES
3DES (Triple DES), là thuật toán mã hóa khối trong đó khối thông tin
64 bit sẽ được lần lượt mã hóa 3 lần bằng thuật toán mã hóa DES với 3 khoá
khác nhau. Do đó, chiều dài khóa mã sẽ lớn hơn và độ an toàn sẽ cao hơn so
với DES do 3DES dùng 3 khóa khác nhau để mã hóa dữ liệu. Bộ xử lý thực
hiện các bước sau: Khóa đầu tiên dùng để mã hóa dữ liệu. Sau đó, khóa thứ
hai sẽ dùng để giải mã dữ liệu vừa được mã hóa. Cuối cùng, khóa thứ ba sẽ
mã hóa lần thứ hai. Toàn bộ quá trình xử lý của 3DES tạo thành một thuật
giải có độ an toàn cao. Nhưng bởi vì đây là một thuật giải phức tạp nên thời
gian thực hiện sẽ lâu hơn, gấp 3 lần so với phương pháp DES.

3


1.1.2.4. CAST-128
Là một thuật toán mật mã được đặt tên theo tên người phát triển là
Carlisle Adams và Stafford Tavares.
Chiều dài khoá là 128 bit.
1.1.2.5. AES
AES là một thuật toán mã hoá khối.
AES làm việc với khối dữ liệu 128 bít và khóa có độ dài 128, 192 hoặc
256 bit.

Hình 1: Mật mã khoá bí mật

1.2. Mật mã khoá công khai
1.2.1. Khái niệm
Mật mã khóa công khai là một dạng mật mã cho phép người sử dụng

trao đổi các thông tin mật mà không cần phải trao đổi các khóa bí mật trước
đó. Trong mật mã khóa công khai sử dụng một cặp khóa là khóa công khai/
khóa riêng. Khóa công khai dùng để mã hóa còn khóa riêng dùng để giải mã.

4


Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu
chỉ biết khóa công khai.

Hình 2: Mật mã khoá công khai

1.2.2. Các thuật toán sử dụng trong mật mã khoá công khai
1.2.2.1. RSA
Thuật toán RSA được Ron Rivest, Adi Shamir và Len Adleman mô tả
lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT).
RSA là một thuật toán mã hóa khóa công khai.
Thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời
với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã
trong việc sử dụng khóa công khai. RSA đang được sử dụng phổ biến trong
thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa
đủ lớn.

5


Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán
phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA.
RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật
toán mã hóa đối xứng khác. Trên thực tế, người ta sử dụng một thuật toán mã

hóa đối xứng nào đó để mã hóa văn bản cần gửi và chỉ sử dụng RSA để mã
hóa khóa để giải mã (thông thường khóa ngắn hơn nhiều so với văn bản).
1.2.2.2. Phương thức trao đổi khoá Diffie Hellman
Phương thức này được phát minh bởi Whitfield Diffie và Matty
Hellman ở Standford.
Đây là sơ đồ khoá công khai đầu tiên. Tuy nhiên, đó không phải là một
sơ đồ mã hoá khoá công khai thực sự, mà chỉ dùng cho trao đổi khóa.
Các khoá bí mật được trao đổi bằng cách sử dụng các trạm trung gian
riêng tin cậy. Phương pháp này cho phép các khoá bí mật được truyền an toàn
thông qua các môi trường không bảo mật.
Trao đổi khoá Diffie-Hemall dựa trên tính hiệu quả của bài toán logarit
rời rạc.
Tính bảo mật của trao đổi khoá Diffie-Hellman nằm ở chỗ: tính hàm
mũ modulo của một số nguyên tố là khá dễ dàng nhưng tính logarit rời rạc là
rất khó.
1.3. Chữ ký điện tử
1.3.1. Tổng quan về chữ ký điện tử
Trong cuộc sống hàng ngày, ta cần dùng chữ ký để xác nhận các văn
bản tài liệu nào đó và có thể dùng con dấu với giá trị pháp lý cao hơn đi kèm
với chữ ký.
Cùng với sự phát triển nhanh chóng của công nghệ thông tin, các văn
bản tài liệu được lưu dưới dạng số, dễ dàng được sao chép, sửa đổi. Nếu ta sử
dụng hình thức chữ ký truyền thống như trên sẽ rất dễ dàng bị giả mạo chữ
ký. Vậy làm sao để có thể ký vào các văn bản, tài liệu số như vậy?
6


Câu trả lời đó là sử dụng chữ ký điện tử! Chữ ký điện tử đi kèm với các
thông tin chủ sở hữu và một số thông tin cần thiết khác sẽ trở thành Chứng
chỉ điện tử.

Chữ ký điện tử (tiếng Anh: electronic signature) là thông tin đi kèm
theo dữ liệu (văn bản, hình ảnh, video...) nhằm mục đích xác định người chủ
của dữ liệu đó.
Một sơ đồ chữ ký điện tử là bộ 5 (P, A, K, S, V) thoả mãn các điều kiện
dưới đây:
1) P là tập hữu hạn các bức điện (thông điệp, bản rõ) có thể.
2) A là tập hữu hạn các chữ ký có thể.
3) K là tập không gian khoá (tập hữu hạn các khoá có thể).
4) Với mỗi khoá K € k tồn tại một thuật toán ký SigK € S và một thuật toán xác
minh VerK € V. Mỗi Sigk: P → A và verK: P x A → {TRUE, FALSE} là những
hàm sao cho mỗi bức điện x € P và mỗi chữ ký y € A thoả mãn phương trình
dưới đây:
True nếu y = sig(x)
Ver (x, y) =
False nếu y ≠ sig(x).
Với mỗi K € k, hàm SigK và VerK là các hàm đa thức thời gian. Hàm
VerK sẽ là hàm công khai còn hàm SigK là bí mật. Không thể dễ dàng tính toán
để giả mạo chữ ký của B trên bức điện x, nghĩa là với x cho trước chỉ có B
mới có thể tính được y để Ver(x, y) = TRUE. Một sơ đồ chữ ký không thể an
toàn vô điều kiện vì một người C nào đó có thể kiểm tra tất cả chữ số y trên
bức điện x nhờ dùng thuật toán Ver() công khai cho tới khi anh ta tìm thấy
chữ ký đúng. Vì thế, nếu có đủ thời gian, C luôn có thể giả mạo chữ ký của B.
Như vậy mục đích của chúng ta là tìm các sơ đồ chữ ký điện tử an toàn
về mặt tính toán [1 – tr116].

7


Chữ ký điện tử được sử dụng trong các giao dịch điện tử. Xuất phát từ
thực tế, chữ ký điện tử cũng cần đảm bảo các chức năng: Xác định được

người chủ của một dữ liệu nào đó ví dụ văn bản, ảnh, video, ... dữ liệu đó có
bị thay đổi hay không.
Hai khái niệm chữ ký số (digital signature) và chữ ký điện tử thường
được dùng thay thế cho nhau mặc dù chúng không hoàn toàn có cùng nghĩa.
Chữ ký số chỉ là một tập con của chữ ký điện tử (chữ ký điện tử bao hàm chữ
ký số).
Một chữ ký điện tử sẽ là một chữ ký số nếu nó sử dụng một phương
pháp mã hóa nào đó để đảm bảo tính toàn vẹn (thông tin) và tính xác thực. Ví
dụ như một bản dự thảo hợp đồng soạn bởi bên bán hàng gửi bằng email tới
người mua sau khi được ký (điện tử). [1- tr117]
Một văn bản được ký có thể được mã hóa khi gửi nhưng điều này
không bắt buộc. Việc đảm bảo tính bí mật và tính toàn vẹn của dữ liệu có thể
được tiến hành độc lập.
1.3.2. Quy trình sử dụng chữ ký điện tử
Chữ ký điện tử hoạt động dựa trên hệ thống mã hóa khóa công khai. Hệ
thống mã hóa này gồm hai khóa, khóa bí mật và khóa công khai. Mỗi chủ thể
có một cặp khóa như vậy, chủ thể đó sẽ giữ khóa bí mật, còn khóa công khai
của chủ thể sẽ được đưa ra công cộng để bất kỳ ai cũng có thể biết. Nguyên
tắc của hệ thống mã hóa khóa công khai đó là, nếu mã hóa bằng khóa bí mật
thì chỉ khóa công khai mới giải mã đúng thông tin được, và ngược lại, nếu mã
hóa bằng khóa công khai, thì chỉ có khóa bí mật mới giải mã đúng được.
Ngoài ra, chữ ký còn đảm bảo phát giác được bất kỳ sự thay đổi nào
trên dữ liệu đã được “ký”. Để ký lên một văn bản, phần mềm ký sẽ nghiền
(crunch down) dữ liệu để gói gọn bằng một vài dòng, được gọi là thông báo
tóm tắt, bằng một tiến trình được gọi là “kỹ thuật băm”, rồi tạo thành chữ ký
điện tử. Cuối cùng, phần mềm ký tên sẽ gắn chữ ký điện tử này vào văn bản.
8


Ví dụ: Giả sử bên A có tài liệu P cần ký. Bên A sẽ thực hiện băm văn

bản thành một bản tóm lược X, sau đó dùng khóa bí mật của mình ký lên bản
tóm lược X để được văn bản chữ ký điện tử Y, sau đó gửi tài liệu P kèm theo
chữ ký Y cho A.
Giả sử B muốn xác nhận tài liệu P là của A, với chữ ký là bản mã Y.
Bên B sẽ dùng khóa công khai của A để xác nhận chữ ký Y của A ký trên văn
bản P gửi có đúng hay không, nếu xác nhận đúng thì chữ ký Y chính là A ký
trên văn bản P, ngược lại thì không phải hoặc bản ký đã được thay đổi.
Một số trường hợp xảy ra với chữ ký điện tử, cũng giống như các
trường hợp xảy ra với chữ ký truyền thống. Ví dụ: Khi tài liệu TL của A bị
thay đổi (dù chỉ một ký tự, một dấu chấm, hay một ký hiệu bất kỳ), khi B xác
nhận, anh ta sẽ thấy bản giải mã khác với tài liệu TL của anh A. B sẽ kết luận
rằng tài liệu đó đã bị thay đổi, không phải là tài liệu anh A đã ký.
Trường hợp khác, nếu A để lộ khóa bí mật, nghĩa là văn bản tài liệu của
A có thể ký bởi người khác có khóa bí mật của A. Khi một ai đó xác nhận tài
liệu được cho là của A ký, chữ ký vẫn là hợp lệ, mặc dù không phải chính A
ký. Như vậy, chữ ký của A sẽ không còn giá trị pháp lý nữa. Do đó, việc giữ
khóa bí mật là tuyệt đối quan trọng trong hệ thống chữ ký điện tử.
Trong trường hợp ví dụ trên, A có một cặp khóa để có thể ký trên văn
bản, tài liệu số. Tương tự như vậy, B hay bất cứ ai sử dụng chữ ký điện tử,
đều có một cặp khóa như vậy. Khóa bí mật được giữ riêng, còn khóa công
khai được đưa ra công cộng. Vậy vấn đề đặt ra là làm thế nào để biết một
khóa công khai thuộc về A, B hay một người nào đó?
Hơn nữa, giả sử trong môi trường giao dịch trên Internet, cần sự tin cậy
cao, A muốn giao dịch với một nhân vật X. X và A cần trao đổi thông tin cá
nhân cho nhau, các thông tin đó gồm họ tên, địa chỉ, số điện thoại, email…
Vậy làm sao để A có thể chắc chắn rằng mình đang giao dịch với nhân vật X
chứ không phải là ai khác giả mạo X? Chứng chỉ số được tạo ra để giải quyết
9



vấn đề này! Chứng chỉ số có cơ chế để xác nhận thông tin chính xác về các
đối tượng sử dụng chứng chỉ số. Thông tin giữa A và X sẽ được xác nhận
bằng một bên trung gian mà A và X tin tưởng.
Bên trung gian đó là nhà cung cấp chứng chỉ số CA (Certificate
Authority). CA có một chứng chỉ số của riêng mình, CA sẽ cấp chứng chỉ số
cho A và X cũng như những đối tượng khác.
Trở lại vấn đề trên, A và X sẽ có cách kiểm tra thông tin của nhau dựa
trên chứng chỉ số như sau: khi A giao dịch với X, họ sẽ chuyển chứng chỉ số
cho nhau, đồng thời họ cũng có chứng chỉ số của CA, phần mềm tại máy tính
của A có cơ chế để kiểm tra chứng chỉ số của X có hợp lệ không, phần mềm
sẽ kết hợp chứng chỉ số của nhà cung cấp CA và chứng chỉ của X để thông
báo cho A về tính xác thực của đối tượng X.
Nếu phần mềm kiểm tra và thấy chứng chỉ của X là phù hợp với chứng
chỉ CA, thì A có thể tin tưởng vào X.
Cơ chế chữ ký điện tử và chứng chỉ số sử dụng các thuật toán mã hóa
đảm bảo không thể giả mạo CA để cấp chứng chỉ không hợp pháp, mọi chứng
chỉ giả mạo đều có thể dễ dàng bị phát hiện.
Trở lại với việc ký văn bản, tài liệu, khóa bí mật sẽ dùng để ký các văn
bản, tài liệu của chủ sở hữu. Như đã đề cập trong ví dụ ở trên, giả sử A muốn
gửi một văn bản kèm với chữ ký của mình trên văn bản đó, A sẽ dùng khóa bí
mật để mã hóa thu được bản mã văn bản, bản mã đó chính là chữ ký điện tử
của A trên văn bản.
Khi A gửi văn bản và chữ ký, để người khác có thể xác nhận văn bản
của mình với thông tin đầy đủ về chủ sở hữu, A sẽ gửi cả chứng chỉ của mình
đi kèm với văn bản.
Giả sử X nhận được văn bản A gửi kèm với chứng chỉ, khi đó X có thể
dễ dàng xác nhận tính hợp pháp của văn bản đó.

10



1.3.3 Một số sơ đồ chữ ký điện tử phổ biến
a. Rivest Shamir Adleman (RSA)
- Sơ lược về các khái niệm toán học dùng trong RSA.
* Số nguyên tố (prime)
Số nguyên tố là những số nguyên chỉ chia chẵn được cho 1 và cho
chính nó.
Ví dụ : 2, 3, 5, 7, 11, 13, 17, 23...
* Khái niệm nguyên tố cùng nhau (relatively prime or coprime).
Với hai số nguyên dương a và b. Ta ký hiệu UCLN(a,b): Ước chung
lớn nhất của a và b.
Để đơn giản ta ký hiệu UCLN(a,b) = (a,b)
Ví dụ :
(4,6)=2
(5,6)=1
Hai số a và b gọi là nguyên tố cùng nhau khi (a,b)=1
Ví dụ : 9 và 10 nguyên tố cùng nhau vì (9,10)=1
* Khái niệm modulo
Với m là một số nguyên dương. Ta nói hai số nguyên a và b là đồng dư
với nhau:

 modulo m, nếu m chia hết hiệu (a-b) (viết là m|(a-b) )
Ký hiệu a ≡ b (mod m) [5]
Như vậy a ≡ b (mod m ) khi và chỉ khi tồn tại số nguyên k sao cho: a =
b + k*m
Ví dụ: 13 ≡ 3 (mod 10) vì 13= 3 + 1*10
* Phi – Hàm EULER
Định nghĩa: Phi – Hàm Euler Φ(n) có giá trị tại n bằng số các số không
vượt quá n và nguyên tố cùng nhau với n. [5]
Ví dụ : Φ(5) = 4 , Φ(6) = 2 ,Φ(10) = 4

11


* Một số định lý cơ bản
Định lý Euler: Nếu m là số nguyên dương và P nguyên tố cùng nhau
với m thì PΦ(m) ≡ 1 (mod m) [5]
Vậy nếu m và p nguyên tố cùng nhau . Ta đặt s = Φ(m) thì Ps ≡ 1 (mod
m)
Suy ra với: a= 1 + k*s
Ta có : Pa ≡ P*(Ps)k ≡ P*1k (mod m) ≡ P (mod m) Với e là số nguyên
dương nguyên tố cùng nhau với s ,tức là (e,s)=1. Khi đó tồn tại một nghịch
đảo d của e modulo s tức là e*d≡ 1 (mod s) ; e*d = 1 + k*s Đặt E(P) ≡ C ≡
Pe (mod m)
Đặt D(C) ≡ Cd (mod m) Ta thấy D(C) ≡ Cd ≡ (Pe (mod m))d (mod m)≡
Pe*d (mod m) ≡ P(1+k*s) (mod m) ≡ P.(Ps)k (mod m)≡P.(1)k (mod m)≡ P (mod
m)
Ví dụ : m = 10 , P = 9 ta có (10,9)=1, s = Φ(10) = 4, e = 7, ta có (7,4) = 1.
Nghịch đảo của (7 modulo 4) là: d = 3, vì 7*3 =1 + 5*4 Lúc đó ta có:
E(P) ≡ C ≡ Pe ≡ 97 ≡ 4.782.969 ≡ 9 (mod 10) => C=9 D(C) ≡ Cd ≡ 93 ≡ 729 ≡
9 (mod 10) Vậy D chính là hàm ngược của E. Đây là cơ sở cho việc xây dựng
thuật toán RSA.
Tính Φ(m) khi biết m. Chúng ta có định lý sau đây: Giả sử m =
p1a1*p2a2*… *pkak.
Khi đó. Φ(m) =( p1a1– p1(a1-1))* … * (pkak – pk(ak-1))
Ví dụ: m= 10 Ta phân tích 10 =2*5=> Φ(10) =( 21 – 20) *(51 – 50) = 1*4 = 4.
- Cách tạo khóa:
Chúng ta cần tạo ra một cặp khóa Ký và Xác nhận theo các bước sau:
Bước1: Chọn 2 số nguyên tố lớn p và q với (p # q), lựa chọn ngẫu
nhiên và độc lập.
Bước2: Tính số hàm modulo của hệ thống: n= p*q.

Bước3: Tính: Giá trị hàm số Ơle: Φ(n)= (p-1)(q-1).
12


Bước4: Chọn một số tự nhiên khóa mã e sao cho (1 <= e <= Φ(n)) và là
số nguyên tố cùng nhau với Φ(n).
Bước5: Tính khóa giải mã d sao cho: d*e ≡ 1 (mod Φ(n)). Với 0<=d<=
Φ(n)
Khi đó ta phân phát khóa công khai: KU= {e,n}.
Và giữ khóa bí mật: KR= {d,n}.
Một số lưu ý:
 Các số nguyên tố thường được chọn bằng phương pháp thử xác suất.
 Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở
rộng.
 Bước 5 có thể viết cách khác:
Tìm số tự nhiên x sao cho d=(x(p-1)(q-1)+1)/e cũng là số tự nhiên.
Khi đó sử dụng giá trị: d mod (p-1)(q-1).
 Từ bước 3 sử dụng: £=BCNN(p-1)(q-1) thay cho Φ(n)=(p-1)(q-1).
[5]
* Khóa công khai bao gồm:
 n, môđun.
 e, số mũ công khai.
* Khóa bí mật bao gồm:
 n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật.
 d, số mũ bí mật.
- Quy trình thực hiện ký và xác nhận văn bản.
Dựa vào ưu điểm của hệ mã RSA, nếu thiết lập được sơ đồ chữ ký dựa
trên bài toán phân tích ra thừa số nguyên tố thì độ an toàn của chữ ký sẽ rất
cao.
* Ký (Mã hóa).


13


Giả sử có văn bản cần ký M. Đầu tiên chuyển M thành một số mmột hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận
trước.
Lúc này ta muốn ký lên văn bản M với số tương ứng là m. Ta sẽ tính c
là bản ký của m theo công thức:
C = SigK(m) = md mod n. ( Trong đó d là khóa bí mật của người cần ký)
Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo
môđun) bằng (thuật toán bình phương và nhân). Cuối cùng ta có bản ký c hay
bản chữ ký điện tử và gửi cho đối tác.
* Xác nhận (Giải mã).
Sau khi nhận được bản chữ ký điện tử, người nhận cần phải xác nhận
chữ ký trên văn bản là đúng người ký bằng cách xác nhận bản ký với khóa
công khai của người ký với công thức sau.
VerK(m,c) = TRUE  m ≡ ce (mod n) với x, y € Zn.
Quá trình giải mã hoạt động vì ta có:
Ce ≡ (md)e ≡ mde (mod n);
Do: ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ)
nên:
Mde ≡ m (mod p);

mde ≡ m (mod q);
Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý số dư Trung
Quốc, ta có:
Mde ≡ m (mod pq);
hay:
Ce ≡ m (mod n);

Thông thường, chữ ký được kết hợp với hàm mã hoá công khai. Giả sử
A muốn gửi một bức điện đã được mã hoá và đã được ký đến cho B. Với bản
14


rõ x cho trước, A sẽ tính toán chữ ký của mình y = SigA(m) và sau đó mã hoá
cả x và y sử dụng khoá công khai eB của B, kết quả nhận được là z = eB(m, c).
Bản mã z sẽ được gửi tới B, khi B nhận được z, đầu tiên anh ta giải mã với
hàm giải mã dB của mình để nhận được (m, c). Sau đó anh ta dùng hàm xác
minh công khai của A để kiểm tra xem VerA(m,c) = TRUE hay không [1].
Song nếu đầu tiên A mã hoá m, rồi sau đó mới ký lên bản mã nhận
được thì sao? Khi đó, A sẽ tính:
c = SigA(eB(m))
A sẽ truyền cặp (z, c) tới B, B sẽ giải mã z và nhận được m, sau đó xác
minh chữ ký c trên m nhờ dùng VerA. Một vấn đề nảy sinh nếu A truyền (m, c)
kiểu này thì một người thứ ba C có thể thay chữ ký c của A bằng chữ ký của
chính mình.
c’ = SigC(eB(m))
Chú ý rằng, C có thể ký lên bản mã eB(m) ngay cả khi anh ta không biết
bản rõ m. Khi đó nếu C truyền (z, c’) đến B, chữ ký của C được B xác minh
bằng VerC và do đó, B cho rằng bản rõ x xuất phát từ C. Do khó khăn này, hầu
hết người sử dụng được khuyến nghị “ký trước khi mã” [1 – tr103].
- Tính bảo mật.
Bài toán bảo mật của hệ chữ ký RSA là tránh trường hợp người ngoài
có thể tính ra giá trị d bí mật (giá trị ký hay mã hóa) khi biết được giá trị xác
nhận e (công khai).
Độ an toàn của hệ thống ký RSA dựa trên 2 vấn đề của toán học: Bài
toán phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA. Nếu 2
bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì
không thể thực hiện được việc phá mã toàn bộ đối với RSA.

Bài toán RSA là bài toán tính căn bậc e môđun n (với n là hợp số): Tìm
số m sao cho me=c mod n, trong đó (e, n) chính là khóa công khai và c là bản
mã. Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích n ra
15


thừa số nguyên tố. Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ
bí mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuật
toán. Nếu kẻ tấn công tìm được 2 số nguyên tố p và q sao cho: n = pq thì có
thể dễ dàng tìm được giá trị (p-1)(q-1) và qua đó xác định d từ e. Chưa có một
phương pháp nào được tìm ra trên máy tính để giải bài toán này trong thời
gian đa thức (polynomial-time). Tuy nhiên người ta cũng chưa chứng minh
được điều ngược lại (sự không tồn tại của thuật toán).
Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số
nguyên tố có độ dài 663 bit với phương pháp phân tán trong khi khóa của
RSA có độ dài từ 1024 tới 2048 bit. Một số chuyên gia cho rằng khóa 1024
bit có thể sớm bị phá vỡ (cũng có nhiều người phản đối việc này). Với khóa
4096 bit thì hầu như không có khả năng bị phá vỡ trong tương lai gần. Do đó,
người ta thường cho rằng RSA đảm bảo an toàn với điều kiện n được chọn đủ
lớn. Nếu n có độ dài 256 bit hoặc ngắn hơn, nó có thể bị phân tích trong vài
giờ với máy tính cá nhân dùng các phần mềm có sẵn. Nếu n có độ dài 512 bit,
nó có thể bị phân tích bởi vài trăm máy tính tại thời điểm năm 1999. Một thiết
bị lý thuyết có tên là TWIRL do Shamir và Tromer mô tả năm 2003 đã đặt ra
câu hỏi về độ an toàn của khóa 1024 bit. Vì vậy hiện nay người ta khuyến cáo
sử dụng khóa có độ dài tối thiểu 2048 bit.
Năm 1993, Peter Shor công bố thuật toán Shor chỉ ra rằng: Máy tính
lượng tử (trên lý thuyết) có thể giải bài toán phân tích ra thừa số trong thời
gian đa thức. Tuy nhiên, máy tính lượng tử vẫn chưa thể phát triển được tới
mức độ này trong nhiều năm nữa [2 – tr117].
- Các dạng tấn công

* Phân phối khóa
Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa
công khai là một trong những yếu tố quyết định đối với độ an toàn của RSA.
Quá trình phân phối khóa cần chống lại được tấn công đứng giữa (man-in-the16


middle attack). Giả sử kẻ xấu (C) có thể gửi cho. Người gửi thông tin(A) một
khóa bất kỳ và khiến (A) tin rằng đó là khóa (công khai) của Đối tác(B).
Đồng thời (C) có khả năng đọc được thông tin trao đổi giữa (A) và (B). Khi
đó, (C) sẽ gửi cho (A) khóa công khai của chính mình (mà (A) nghĩ rằng đó là
khóa của (B)). Sau đó, (C) đọc tất cả văn bản mã hóa do (A) gửi, giải mã với
khóa bí mật của mình, giữ 1 bản copy đồng thời mã hóa bằng khóa công khai
của (B) và gửi cho (B). Về nguyên tắc, cả (A) và (B) đều không phát hiện ra
sự can thiệp của người thứ ba. Các phương pháp chống lại dạng tấn công này
thường dựa trên các chứng thực khóa công khai (digital certificate) hoặc các
thành phần của hạ tầng khóa công khai (public key infrastructure - PKI). [6]
* Tấn công dựa trên thời gian
Vào năm 1995, Paul Kocher mô tả một dạng tấn công mới lên RSA:
Nếu kẻ tấn công nắm đủ thông tin về phần cứng thực hiện mã hóa và xác định
được thời gian giải mã đối với một số bản mã lựa chọn thì có thể nhanh chóng
tìm ra khóa d. Dạng tấn công này có thể áp dụng đối với hệ thống chữ ký điện
tử sử dụng RSA. Năm 2003, Dan Boneh và David Brumley chứng minh một
dạng tấn công thực tế hơn: Phân tích thừa số RSA dùng mạng máy tính (Máy
chủ web dùng SSL). Tấn công đã khai thác thông tin rò rỉ của việc tối ưu hóa
định lý số dư Trung quốc mà nhiều ứng dụng đã thực hiện.
Để chống lại tấn công dựa trên thời gian là đảm bảo quá trình giải mã
luôn diễn ra trong thời gian không đổi bất kể văn bản mã. Tuy nhiên, cách này
có thể làm giảm hiệu suất tính toán. Thay vào đó, hầu hết các ứng dụng RSA
sử dụng một kỹ thuật gọi là che mắt. Kỹ thuật này dựa trên tính nhân của
RSA: thay vì tính cd mod n, đầu tiên chọn một số ngẫu nhiên r và tính (rec)d

mod n. Kết quả của phép tính này là rm mod n và tác động của r sẽ được loại
bỏ bằng cách nhân kết quả với nghịch đảo của r. Đối với mỗi văn bản mã,
người ta chọn một giá trị của r. Vì vậy, thời gian giải mã sẽ không còn phụ
thuộc vào giá trị của văn bản mã. [6]
17


* Tấn công bằng phương pháp lựa chọn thích nghi bản mã.
Năm 1981, Daniel Bleichenbacher mô tả dạng tấn công lựa chọn thích
nghi bản mã (adaptive chosen ciphertext attack) đầu tiên có thể thực hiện trên
thực tế đối với một văn bản mã hóa bằng RSA. Văn bản này được mã hóa dựa
trên tiêu chuẩn PKCS #1 v1, một tiêu chuẩn chuyển đổi bản rõ có khả năng
kiểm tra tính hợp lệ của văn bản sau khi giải mã.
Do những khiếm khuyết của PKCS #1, Bleichenbacher có thể thực hiện
một tấn công lên bản RSA dùng cho giao thức SSL (tìm được khóa phiên).
Do phát hiện này, các mô hình chuyển đổi an toàn hơn như chuyển đổi mã
hóa bất đối xứng tối ưu (Optimal Asymmetric Encryption Padding) được
khuyến cáo sử dụng. Đồng thời phòng nghiên cứu của RSA cũng đưa ra phiên
bản mới của PKCS #1 có khả năng chống lại dạng tấn công nói trên. [6]
b. Hệ chữ ký ElGammal
Hệ chữ ký ElGammal được đưa ra vào 1985. Một phiên bản sửa đổi hệ
này được Học viện Quốc gia tiêu chuẩn và kỹ thuật (NIST) đưa ra như một
chuẩn của chữ ký điện tử [1 – tr103].
Hệ chữ ký ElGammal được thiết kế riêng biệt cho mục đích chữ ký,
trái ngược với RSA thường được sử dụng cho cả mục đích mã hoá công khai
và chữ ký. Hệ chữ ký ElGammal là không xác định, nghĩa là có rất nhiều giá
trị chữ ký cho cùng một bức điện cho trước. Thuật toán xác minh phải có khả
năng nhận bất kỳ giá trị chữ ký nào như là việc xác thực. Sơ đồ chữ ký
ElGammal được miêu tả như sau:
Cho p là một số nguyên tố như là bài toán logarit rời rạc trong Zp, α €

Zp* là một phần tử nguyên tử và P = Zp*, A = (Zp*)*Zp-1, và định nghĩa:
K = {(p, α, a, β) : β ≡ αa (mod p)}
trong đó giá trị p, α và β là công khai, còn a là bí mật [1 – tr103].
Với K = (p, α, a, β) và chọn một số ngẫu nhiên k € Zp-1*, định nghĩa:
SigK(x, k) = (γ, δ)
18


trong đó: γ = αk mod p
δ = (x - a* γ)k-1 mod (p – 1).
Với x, γ € Zp* và δ € Zp-1, định nghĩa:
Ver(x, γ, δ) = TRUE  β γ γ δ ≡ αx (mod p).
Nếu chữ ký là đúng thì việc xác nhận thành công khi:
β γ γ δ ≡ αaγαkδ (mod p)
≡ αx (mod p).
trong đó: aγ + kδ ≡ x (mod p -1).
B sẽ tính toán chữ ký bằng việc sử dụng cả giá trị bí mật a (một phần
của khoá) và số bí mật ngẫu nhiên k (giá trị để ký bức điện). Việc xác minh
có thể thực hiện được chỉ với các thông tin được công khai:
Ví dụ:
Chúng ta chọn p = 467, α = 2, a = 127. Ta tính: β = αa mod p = 2127
mod 467 = 132.
Bây giờ B muốn ký lên bức điện x = 100 và anh ta chọn một giá trị
ngẫu nhiên k = 213 (chú ý là UCLN(213, 466) = 1 và 213-1 mod 466 = 431).
Sau đó tính:
γ = 2213 mod 467 = 29
δ = (100 – 127*29)431 mod 466 = 51.
Bất cứ ai cũng có thể kiểm tra chữ ký này bằng cách tính:
132292951 ≡ 189 (mod 467)
2100 ≡ 189 (mod 467).

Giả sử kẻ thứ ba C muốn giả mạo chữ ký của B trên bức điện x mà
không biết số bí mật a. Nếu C chọn một giá trị γ và cố gắng tìm δ, anh ta phải
tính một hàm logarit rời rạc logγαxβ-γ. Mặt khác, nếu đầu tiên anh ta chọn δ để
cố gắng tìm γ thì anh ta phải tính αxβγ= αx (mod p). Cả hai việc này đều không
thể thực hiện được [1].
Tuy nhiên có một lý thuyết mà C có thể ký lên một bức điện ngẫu nhiên
19


bằng cách chọn đồng thời γ, δ và x. Cho i, j là số nguyên với 0 ≤ i, j ≤ p - 2,
và UCLN(j, p - 1) = 1. Sau đó tính:
γ = αiβj mod p
δ = - γj-1 (mod p-1)
x = - γij-1 (mod p-1).
Như vậy, ta xem (γ, δ) là giá trị chữ ký cho bức điện x. Việc xác minh
sẽ thực hiện như sau:

Ví dụ:
Như ví dụ trên, ta chọn p = 467, α = 2, β = 132. Kể thứ ba C sẽ chọn i =
99 và j = 179. Anh ta sẽ tính:
γ=

299132179 mod 467 = 117

δ=

-117*151 mod 466 = 41

x=


99*44 mod 466 = 331
Cặp giá trị (117, 41) là giá trị chữ ký cho bức điện 331. Việc xác minh

được thực hiện như sau:
13211711741 ≡ 303 (mod 467)
2331 ≡ 303 (mod 467).
Một phương pháp thứ hai có thể giả mạo chữ ký là sử dụng lại chữ ký
của bức điện trước đó, nghĩa là với cặp (γ, δ) là giá trị chữ ký của bức điện x,
nó sẽ được C ký cho nhiều bức điện khác. Cho h, i và j là các số nguyên,
trong đó 0≤ i, j, h ≤ p-2 và UCLN(hγ-jδ, p-1) = 1.
λ = γhαiβj mod p
μ = δλ(hγ - jδ)-1 mod (p-1)
20


x’ = λ(hx + iδ)(hγ - jδ)-1 mod (p-1).
Ta có thể kiểm tra: βλλμ = αx’ mod p. Và do đó, (λ, μ) là cặp giá trị chữ
ký của bức điện x’.
Điều thứ ba là vấn đề sai lầm của người ký khi sử dụng cùng một giá trị
k trong việc ký hai bức điện khác nhau. Cho (γ, δ1) là chữ ký trên bức điện x1
và (γ, δ2) là chữ ký trên bức điện x2. Việc kiểm tra sẽ thực hiện:
βγγδ1≡ αx1 (mod p)
βγγδ2 ≡ αx2 (mod p).
Do đó: αx1-x2 ≡ γy1-y2 mod p.
Đặt γ = αk, khi đó: x1 - x2 = k(δ1 - δ2) (mod p-1).
Bây giờ đặt d = UCLN(δ1 - δ2, p - 1). Vì d | (δ1 - δ2) và d | (p - 1) nên
nó cũng chia hết cho (x1 - x2). Ta đặt tiếp:
x’ = (x1-x2) /d.
δ’ = (δ1- δ2)/d.
p’ = (p-1)/d.

Cuối cùng, ta được: x’ ≡ kδ’ (mod p’). Vì UCLN(δ’, p’) = 1 nên ta có:
ε = (δ’)-1 mod p’
Như vậy, giá trị k sẽ được xác định như sau:
k = x’ε (mod p’) = x’ε + ip’ (mod p)
Với 0 ≤ i ≤ d-1, ta có thể tìm được giá trị k duy nhất bằng hàm kiểm tra:
γ ≡ αk mod p. [1 – tr104 > tr106]
c. Chuẩn chữ kí số (DSS)
Chuẩn chữ ký điện tử (DSS) được sửa đổi từ hệ chữ ký ElGammal. Nó
được công bố tại hội nghị Tiêu chuẩn xử lý thông tin Liên Bang (FIPS) vào
19/05/1994 và trở thành chuẩn vào 01/12/1994. DSS sử dụng một khoá công
khai để kiểm tra tính toàn vẹn của dữ liệu nhận được và đồng nhất với dữ liệu
của người gửi. DSS cũng có thể sử dụng bởi người thứ ba để xác định tính

21


×