LÝ LỊCH KHOA HỌC I. LÝ LỊCH SƠ LƯỢC
Họ và tên: NGUYỄN QUANG THẮNG Giới tính: NAM
Ngày, tháng, năm sinh: 17/11/10978 Nơi sinh: HÀ NỘI
Quê quán:CỔ NHUẾ - TỪ LIÊM – HÀ NỘI Dân tộc: KINH
Học vị cao nhất: ðẠI HỌC Năm, nước nhận học vị: 2007,VIỆT NAM
Chức danh khoa học cao nhất: Năm bổ nhiệm:
Chức vụ (hiện tại hoặc trước khi nghỉ hưu):
ðơn vị công tác (hiện tại hoặc trước khi nghỉ hưu):
Chỗ ở riêng hoặc ñịa chỉ liên lạc:Nhà 52, ngõ 15, phố Phương Mai, quận ðống ða, HN.
ðiện thoại liên hệ: NR (04)38525399, Dð: 0945369369
E-mail:[email protected]
II. QUÁ TRÌNH ðÀO TẠO
1. ðại học:
Hệ ñào tạo: ðẠI HỌC
Nơi ñào tạo: TRƯỜNG ðẠI HỌC QUỐC GIA HÀ NỘI
Ngành học: KHOA ðIỆN TỬ VIỄN THÔNG
Nước ñào tạo: VIỆT NAM Năm tốt nghiệp: 2001 Loại: Trung Bình-Khá
Thời gian ñào tạo Nơi ñào tạo Tốt nghiệp hệ, loại,
năm cấp bằng
Năm 1997 ñến năm 2001
TRƯỜNG ðẠI HỌC QUỐC GIA HÀ NỘI
Ngành học: ðIỆN TỬ VIỄN THÔNG
Hệ: ðại học
Loại: Trung bình- Khá
Năm: 2001
tin – Ngân hàng Xăng dầu
PGBANK
Trưởng bộ phận Bảo mật và Quản
trị hệ thống
7-2011 ñến nay Công ty PLANEX Trưởng dự án – Quản trị hệ thống
công nghệ thông tin
IV. QUÁ TRÌNH NGHIÊN CỨU KHOA HỌC
1. Các ñề tài nghiên cứu khoa học ñã tham gia:
TT Tên ñề tài nghiên cứu/
Lĩnh vực ứng dụng
Năm
hoàn
thành
ðề tài cấp
(NN, Bộ,
ngành,
trường)
Trách nhiệm tham gia
trong ñề tài
2. Các công trình khoa học ñã công bố: (tên công trình, năm công bố, nơi công bố )
Hà nội, ngày 30 tháng 09 năm 2011
Xác nhận của cơ quan Người khai kí tên
(Ghi rõ chức danh, học vị) NGUYỄN QUANG THẮNG
MỤC LỤC
LỜI CẢM ƠN 3
TÓM TẮT ðỀ TÀI 7
DANH MỤC TỪ VIẾT TẮT 7
DANH MỤC HÌNH VẼ VÀ BẢNG 9
LỜI MỞ ðẦU 9
2.1.4.2.Chuẩn băm an toàn SHS 22
2.2. Mã hóa thông tin 23
2.3. Chữ ký số 23
2.3.1. Chữ ký số 23
2.3.2. Tạo và kiểm tra chữ ký số 24
2.3.2.1.Các thuật toán chữ ký số thông dụng 24
2.3.2.2.Thuật toán chữ ký số RSA 24
2.3.2.3.Thuật toán chữ ký số DSA 24
2.4. Chứng thực số 28
2.4.1 Giới thiệu 29
2.4.2 Chứng chỉ khoá công khai X.509 30
2.4.3 Thu hồi chứng chỉ 33
2.4.4 Chính sách của chứng chỉ 34
2.4.5 Công bố và gửi thông báo thu hồi chứng chỉ 34
2.5. Cấu trúc hệ thống PKI 36
2.5.1. Tổng quan về PKI 36
2.5.2. Các thành phần của PKI 37
2.5.2.1.Tổ chức chứng thực (Certification Authority) 37
2.5.2.2 Trung tâm ñăng ký (Registration Authorities) 38
2.5.2.3 Thực thể cuối ( Người giữ chứng chỉ và Clients) 38
2.5.2.4 Hệ thống lưu trữ (Repositories) 38
2.5.3 Chức năng cơ bản của PKI 39
2.5.3.1 Chứng thực (certification) 39
2.5.3.2 Thẩm tra (validation) 39
2.5.3.3 Một số chức năng khác 39
2.6. Ứng dụng của hạ tầng khóa công khai và cấp phát chứng thực 42
2.6.1. Mã hóa 42
2.6.2. Chống giả mạo 42
2.6.3. Xác thực 43
2.6.4. Chống chối bỏ nguồn gốc 43
khai và vai trò của chứng thực số trong các giao dịch trực tuyến.
Người sử dụng, ngoài
hình thức bảo mật thông thường như mật khẩu, cũng phải dùng một chứng thực số cá nhân
ñể khẳng ñịnh danh tính của mình, xác nhận các hoạt ñộng giao dịch của mình với dịch vụ
ngân hàng, thương mại ñiện tử, dao dịch chứng khoán Chứng thực số sẽ giúp nhà quản lý
ñảm bảo rằng khách hàng không thể chối cãi các giao dịch của mình, khi họ ñã dùng
chứng thực số. Từ ñó ñặt ra các vấn ñề quản lý (cấp phát,xác thực) thu hồi và cấp phát lại
chứng thực số.
Trong ñề tài tôi sẽ trình bày về các vấn ñề chính xoay quanh vấn ñề hạ tầng khóa
công khai (PKI).
Chương I sẽ giới thiệu vấn ñề và cách tiếp cận giải quyết vấn ñề sẽ trình bày khái
quát về một vài khái niệm cơ bản về mật mã học khóa công khai, hạ tầng khóa công khai,
các khái niệm cơ bản về thuật toán và lý thuyết ñộ phức tạp, một vài công cụ nền tảng của
mật mã học khóa công khai (mã hóa thông tin, hàm băm, chữ ký số).
Chương II của khóa luận sẽ làm rõ hơn các khái niệm, các vấn ñề cơ bản bên trong
một hạ tầng khóa công khai (chứng thực số, các dịch vụ ñăng ký, cấp phát, xác thực, thu
hồi, … khóa công khai); ứng dụng của hạ tầng khóa công khai trong giao dịch ñiện tử ngày
nay, và một vài hệ thống hạ tầng khóa công khai trong thực tế.
Chương III ñặc tả quá trình triển khai và ứng dụng hạ tầng khóa công khai ñơn giản
trong một số giao dịch ñiện tử.
Phần cuối cùng là các kết luận và ñịnh hướng phát triển ñề tài.
Hình 2.4 : Thời gian tạo chữ ký của RSA và DSA
Hình 2.5 : Thời gian xác nhận chữ ký của RSA và DSA
Hình 2.6 : Chứng chỉ số
Hình 2.7: Khuôn dạng chứng chỉ X.509
Hình 2.8: Nội dung chi tiết của chứng chỉ
Hình 2.9: Khuôn dạng danh sách chứng chỉ bị thu hồi
Hình 2.10: Dịch vụ kiểm tra online
Hình 2.11: Các thành phần PKI
Hình 2.12: ðường dẫn chứng chỉ chéo
Hình 2.13: Mô hình CA ñơn
Hình 2.14: Mô hình phân cấp
Hình 2.15: Mô hình mắt lưới
Hình 2.16: Mô hình Hub và Spoke (Bridge CA)
Hình 2.17: Danh sách các CA tin cậy trong Microsoft
LỜI MỞ ðẦU
Trong kỷ nguyên của công nghệ thông tin, tính phổ biến rộng rãi của Internet một
mặt ñem lại nhiều ứng dụng tiện lợi, thú vị và dần thay thế các hoạt ñộng truyền thống
trong thế giớ thực; mặt khác nó ñặt ra các vấn ñề về sự an toàn, tính tin cậy của những giao
dịch trên Internet. Cơ sở hạ tầng khóa công khai (PKI) có thể ñáp ứng, giải quyết những
vấn ñề cơ bản nhất cho những yêu cầu trên. Dựa trên các dịch vụ cơ bản về chứng thực số
và chữ ký số, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã
hóa, ñáp ứng nhu cầu bảo mật của người sử dụng.
Không chỉ nằm trong lĩnh vực thương mại ñiện tử, chứng thực số hiện còn ñược sử
(PUBLISH KEY INFRASTRUCTURE - PKI)
1.1. Giới thiệu chung về hạ tầng khóa công khai
1.1.1. Khái niệm
Trong mật mã học, hạ tầng khóa công khai (tiếng Anh: Public key infrastructure,
viết tắt PKI) là một cơ chế ñể cho một bên thứ 3 (thường là nhà cung cấp chứng thực số)
cung cấp và xác thực ñịnh danh các bên tham gia vào quá trình trao ñổi thông tin. Cơ chế
này cũng cho phép gán cho mỗi người sử dụng trong hệ thống một cặp khóa công
khai/khóa bí mật. Các quá trình này thường ñược thực hiện bởi một phần mềm ñặt tại trung
tâm và các phần mềm phối hợp khác tại các ñịa ñiểm của người dùng. Khóa công khai
thường ñược phân phối trong chứng thực khóa công khai.
Khái niệm hạ tầng khóa công khai (PKI) thường ñược dùng ñể chỉ toàn bộ hệ
thống bao gồm nhà cung cấp chứng thực số (CA) cùng các cơ chế liên quan ñồng thời với
toàn bộ việc sử dụng các thuật toán mật mã hóa khóa công khai trong trao ñổi thông tin.
Tuy nhiên phần sau ñược bao gồm không hoàn toàn chính xác bởi vì các cơ chế trong PKI
không nhất thiết sử dụng các thuật toán mã hóa khóa công khai.
1.1.2. Lịch sử hình thành
Việc Diffie, Hellman, Rivest, Shamir, và Adleman công bố công trình nghiên cứu
về trao ñổi khóa an toàn và thuật toán mật mã hóa khóa công khai vào năm 1976 ñã làm
thay ñổi hoàn toàn cách thức trao ñổi thông tin mật. Cùng với sự phát triển của các hệ
thống truyền thông ñiện tử tốc ñộ cao (Internet và các hệ thống trước nó), nhu cầu về trao
ñổi thông tin bí mật trở nên cấp thiết. Thêm vào ñó một yêu cầu nữa phát sinh là việc xác
ñịnh ñịnh dạng của những người tham gia vào quá trình thông tin. Vì vậy ý tưởng về việc
gắn ñịnh dạng người dùng với chứng thực ñược bảo vệ bằng các kỹ thuật mật mã ñã ñược
phát triển một cách mạnh mẽ.
Nhiều giao thức sử dụng các kỹ thuật mật mã mới ñã ñược phát triển và phân tích.
Cùng với sự ra ñời và phổ biến của World Wide Web, những nhu cầu về thông tin an toàn
và nhận thực người sử dụng càng trở nên cấp thiết. Chỉ tính riêng các nhu cầu ứng dụng
cho thương mại (như giao dịch ñiện tử hay truy cập những cơ sở dữ liệu bằng trình duyệt
mật từ trước.
1.1.4. Mô hình tiêu biểu
Hầu hết các hệ thống PKI quy mô doanh nghiệp ñều dựa trên các chuỗi chứng thực
ñể xác thực các thực thể. Chứng thực của người dùng sẽ ñược một nhà cung cấp chứng
thực số cấp, ñến lượt nhà cung cấp này lại có chứng thực ñược một nhà cung cấp khác ở
cấp cao hơn tạo ra Hệ thống sẽ bao gồm nhiều máy tính thuộc nhiều tổ chức khác nhau
với các gói phần mềm tương thích từ nhiều nguồn khác nhau. Vì vậy, các tiêu chuẩn là yếu
tố rất quan trọng ñối với hoạt ñộng của các PKI. Hầu hết các tiêu chuẩn về PKI hiện tại
ñược soạn thảo bởi nhóm làm việc PKIX của IETF.
Các hệ thống PKI doanh nghiệp thường ñược tổ chức theo mô hình danh bạ trong ñó
khóa công khai của mỗi người dùng ñược lưu trữ (bên trong các chứng thực số) kèm với
các thông tin cá nhân (số ñiện thoại, email, ñịa chỉ, nơi làm việc ). Hiện nay, công nghệ
danh bạ tiên tiến nhất là LDAP và ñịnh dạng chứng thực phổ biến nhất (X.509) cũng ñược
phát triển từ mô hình tiền nhiệm của LDAP (X.500).
1.2. Tìm hiểu mật mã học khoá công khai
1.2.1. Mật mã học khoá công khai
1.2.1.1.
Mật mã học khóa công khai (Phi ñối xứng) là gì
- Là một chuyên ngành của mật mã học 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 chung bí mật trước ñó.
ðiều này ñược thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học
với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật).
- Trong mật mã học khóa công khai, khóa cá nhân phải ñược giữ bí mật trong
khi khóa công khai ñược phổ biến công khai. Trong 2 khóa, một dùng ñể mã
hóa và khóa còn lại dùng ñể giải mã. ð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.[1]
1.2.1.2. Mục ñích của hệ thống mã hoá công khai :
- Cấp phát khoá riêng và khoá công khai :
- Một người sử dụng có thể mã hóa văn bản với khóa bí mật của mình. Nếu một
người khác có thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn
bản thực sự xuất phát từ người gắn với khóa công khai ñó (ðây là nguyên lý sinh &
xác thực chữ ký số, người gửi sử dụng khóa bí mật của mình ñể sinh ra 1 chữ ký số
cho 1 tin nhắn, tài liệu. Bên nhận có thể xác thực tính ñúng ñắn của chữ ký số ñó nhờ
vào khóa công khai của người gửi).
- Các ñặc ñiểm trên còn có ích cho nhiều ứng dụng khác như: tiền ñiện tử, thỏa
thuận khóa
1.3. Thuật toán và ñộ phức tạp thuật toán
1.3.1. Thuật toán
Thuật toán ñược hiểu là sự ñặc tả chính xác của một dãy các bước có thể
ñược thực hiện một cách máy móc ñể giải quyết một vấn ñề. Cần nhấn mạnh rằng,
mỗi thuật toán có một dữ liệu vào (Input) và dữ liệu ra (Output); khi thực hiện thuật
toán (thực hiện các bước ñã mô tả) , thuật toán cần cho ra các kiểu dữ liệu ra tương
ứng với các dữ liệu vào.[2]
1.3.2. Phân tích thuật toán
1.3.2.1. Tính hiệu quả của thuật toán
- Khi giải một vấn ñề, chúng ta cần chọn trong số các thuật toán, một thuật toán
mà chúng ta cho là “tốt” nhất. Cơ sở ñánh chọn lựa thuật toán :
Thuật toán ñơn giản, dễ hiểu, dễ cài ñặt(dễ viết chương trình)
Thuật toán sử dụng tiết kiệm nhất các nguồn tài nguyên của máy tính và
ñặc biệt chạy nhanh nhất có thể ñược.
- Tính hiệu quả của thuật toán bao gồm 2 nhân tố cơ bản :
• Dung lượng không gian nhớ cần thiết ñể lưu giữ các dữ liệu vào, các kết
quả tính toán trung gian và các kết quả của thuật toán
• Thời gian cần thiết ñể thực hiện thuật toán(hay thời gian chạy)
dụng trong hệ thống một cặp khóa công khai/khóa bí mật.
• Trong kỷ nguyên bùng nổ của công nghệ thông tin, mọi giao dịch từ xa
có thể thông qua internet. Tuy nhiên, mặt khác khó mà bảo ñảm rằng
những giao dịch trên Internet luôn an toàn. Cơ sở hạ tầng khóa công khai
(PKI) ñã ñáp ứng những yêu cầu cấp thiết ñó. Dựa trên cách sử dụng của
chìa khóa mật mã công cộng và chữ ký ñiện tử, một PKI chính là bộ
khung của các chính sách, dịch vụ và phần mềm mã hóa, ñáp ứng nhu cầu
bảo mật của người sử dụng.
1.4.2. Cở sở hạ tầng khóa công khai
Hình 1.4 : Mô hình xây dựng PKI cơ bản
- PKI cung cấp một cặp chìa khóa, trong ñó có một chìa là chìa khóa công khai
(Public key) ñể có thể sử dụng dịch vụ, chìa còn lại là chìa khóa bí mật (Private
key) mà người sử dụng phải giữ bí mật. Hai chìa khóa này có liên quan mật thiết
ñến nhau, sao cho một thông ñiệp ñược mã hóa bởi một chìa khóa mật mã công
khai thì chỉ giải mã ñược bởi một chìa khóa bí mật tương ứng.
- Ví dụ về mô hình xử dụng xác thực :
Giả sử có 2 người dùng Bob và Alice muốn chuyển thư ñiện tử cho nhau ñể ñảm
bảo tính xác thực và bảo mật họ dùng 1 phần mềm PKI
Một vài kiến trúc và công nghệ PKI hiện hành
1.5.1 Một số ứng dụng
- Mục tiêu chính của PKI là cung cấp khóa công khai và xác ñịnh mối liên hệ
giữa khóa và ñịnh dạng người dùng. Nhờ vậy người dùng có thể sử dụng trong
một số ứng dụng như:
Mã hoá Email hoặc xác thực người gửi Email (OpenPGP hay S/MIME).
Mã hóa hoặc nhận thực văn bản (Các tiêu chuẩn Chữ ký XML* hoặc mã hoá
XML* khi văn bản ñược thể hiện dưới dạng XML).
Xác thực người dùng ứng dụng (ðăng nhập bằng thẻ thông minh - smartcard,
nhận thực người dùng trong SSL).
Các giao thức truyền thông an toàn dùng kỹ thuật Bootstrapping (IKE, SSL):
trao ñổi khóa bằng khóa bất ñối xứng, còn mã hóa bằng khóa ñối xứng. 1.5.2. Một số hệ thống PKI
- Dưới ñây là danh sách một số hệ thống PKI, trong ñó một số nhà cung cấp
chứng thực số hàng ñầu (ví dụ VeriSign) không ñược liệt kê vì các phần mềm của
họ không ñược công bố công khai :
•
••
•
Hệ thống quản lý chứng thực Red Hat
•
phpki
•
••
•
GenCerti
•
••
•
ejbca
•
••
•
newpki
•
••
•
Papyrus CA Software
•
••
•
pyCA
•
••
•
IDX-PKI
•
••
•
EuropePKI (not available)
chấp nhận hiện tượng trùng khóa hay còn gọi là ñụng ñộ và cố gắng cải thiện giải
thuật ñể giảm thiểu sự ñụng ñộ ñó. Hàm băm thường ñược dùng trong bảng băm
nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc
so sánh các giá trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thước
lớn).
2.1.2. Hàm băm mật mã học
-
Trong ngành mật mã học, một hàm băm mật mã học (tiếng Anh: Cryptographic
hash function) là một hàm băm với một số tính chất bảo mật nhất ñịnh ñể phù hợp
việc sử dụng trong nhiều ứng dụng bảo mật thông tin ña dạng, chẳng hạn như
chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông ñiệp (message
integrity). Một hàm băm nhận ñầu vào là một xâu ký tự dài (hay thông ñiệp) có ñộ
dài tùy ý và tạo ra kết quả là một xâu ký tự có ñộ dài cố ñịnh, ñôi khi ñược gọi là
tóm tắt thông ñiệp (message digest) hoặc chữ ký số (digital fingerprint).[4]
2.1.3. ðảm bảo tính toàn vẹn dữ liệu
-
Hàm băm mật mã học là hàm bam và có tính chất là hàm 1 chiều. Từ khối dữ liệu
hay giá trị băm ñầu vào chỉ có thể ñưa ra 1 giá trị băm duy nhất. Như chúng ta ñã
biết ñối với tính chất của hàm 1 chiều. Một người nào ñó dù bắt ñược giá trị băm
họ cũng không thể suy ngược lại giá trị, ñoạn tin nhắn băm khởi ñiểm.
-
Hàm băm thường ñược dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm
một khối dữ liệu trong một tập hợp. Giá trị băm ñóng vai trò gần như một khóa ñể
phân biệt các khối dữ liệu
-
Giá trị ñầu vào(tin nhắn, dữ liệu ) bị thay ñổi tương ứng giá trị băm cũng bị thay
ñổi. Do vậy nếu 1 kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biết
ngay lập tức.
2.1.4. Một số hàm băm thông dụng
2.1.4.1. Thuật toán hàm băm MD5
Y)
∨
(Y
Z
Λ
)) ñược
thay thế bằng G(X,Y,Z) = (X
Λ
Z)
∨
(Y
Λ
(
Z
¬
)) ñể giảm tính ñối xứng.
-
Mỗi bước biến ñổi trong từng chu kỳ chịu ảnh hưởng kết quả của bước biến
ñổi trước, vì vậy làm tăng nhanh tốc ñộ của hiệu ứng lan truyền (avalanche).
-
Các hệ số dịch chuyển xoay vòng trong mỗi chu kỳ ñược tối ưu hóa nhằm tăng
tốc ñộ hiệu ứng lan truyền. Ngoài ra, mỗi chu kỳ sử dụng 4 hệ số dịch chuyển
khác nhau.
-
Lý do MD5 ñược thiết kế thay thế cho MD4 là vì các phân tích chỉ ra rằng
phương pháp MD4 có vẻ không an toàn. Den Boer và Bosselaers ñã chỉ ra các
ñiểm yếu trong MD4 trong một bài báo ñược ñăng vào năm 1991và một tấn
công xung ñột ñầu tiên ñược tìm thấy bởi Han Dobbertin vào năm 1996 .
-
Tuy nhiên, các nỗ lực tấn công, phân tích của các nhà nghiên cứu cho thấy
kỳ thứ 2.
Trong SHA-1, 20 bước biến ñổi trong cùng một chu kỳ sử dụng cùng một
hàng số K[t] . Trong khi ñó, mỗi bước biến ñổi trong cùng một chu kỳ
của MD5 sử dụng các hằng số khác nhau.
So với MD4, hàm G trong MD5 ñược thay thế thành hàm mới ñể làm
giảm tính ñối xứng. Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại
hàm G của MD4.
Cả MD5 và SHA-1, mỗi bước biến ñổi trong từng chu kỳ chịu ảnh hưởng
kết quả của biến ñổi trước, vì vậy làm tăng nhanh tốc ñộ của hiệu ứng lan
truyền.
Hình 2.1: ðặc ñiểm của các thuật toán băm SHA
2.2. Mã hóa thông tin
-
Có rất nhiều thông tin mà chúng ta không muốn người khác biết khi gửi ñi như: thông
tin về Credit-Card, thông tin về kinh doanh của công ty, thông tin về tài khoản cá
nhân, thông tin về cá nhân như số chứng minh thư, số thẻ
-
Các thông tin bí mật ñược cung cấp cho các máy tính quan mạng Internet bằng nhiều
phương thức khác nhau ví dụ : Một cách bảo mật ñơn giản nhưng minh bạch
nhất là lưu các thông tin bí mật trên các bộ nhớ có thể xoá ñược (Removable Storage)
như ñĩa mềm. Tuy nhiên dạng bảo mật phổ biến nhất vẫn là dựa vào quá trình mã hoá
dữ liệu (Encryption).
-
Các hệ thống mã hoá trong máy tính phổ biến nhất thuộc một trong hai loại sau:
Mã hoá với khoá ñối xứng (Symmetric-key Encryption) : Trong phương pháp
mã hoá với khoá ñối xứng, mỗi máy tính có một khoá bí mật (dạng mã) dùng ñể
mã hoá các gói thông tin trước khi chúng ñược gửi qua mạng tới các máy tính
khác. Phương pháp mã hoá với khoá ñối xứng ñòi hỏi người sử dụng phải xác
2.3.2.1. Các thuật toán chữ ký số thông dụng
-
Chữ ký số giúp xác ñịnh ñược người tạo ra hay chịu trách nhiệm ñối với một
thông ñiệp ñược ký. Một phương pháp chữ ký số phải bao gồm ít nhất 3 thuật
toán chính, ñó là thuật toán dùng ñể tạo khóa, thuật toán dùng ñể tạo ra chữ
ký số và thuật toán tương ứng ñể xác nhận chữ ký số.
2.3.2.2. Thuật toán chữ ký số RSA
- Phương pháp chữ ký số RSA ñược xây dựng dựa trên thuật toán mã hóa khóa
công khai RSA. ðể tạo một cặp khóa, RSA thực hiện các bước sau:
Chọn 2 số nguyên tố lớn ngẫu nhiên p, q. Nhằm có sự an toàn tối ña nên
chọn p và q có ñộ dài bằng nhau.
Tính n=pq và φ=(p−1)(q−1).
Chọn ngẫu nhiên một số nguyên e (1<e<φ) sao cho gcd(e, φ)=1 với gcd
là ước số chung lớn nhất.
Tính: d=e−1 mod φ.
- Kết quả là ta có ñược cặp khóa: khóa công khai (n,e) và khóa bí mật (n,d).
Hai người sẽ sử dụng chung một hàm băm ℋ an toàn trước hiện tượng xung
ñột. ðể ký một thông ñiệp m, người ký thực hiện các bước sau:
Dùng hàm băm ℋ ñể băm thông ñiệp m: h=ℋ
ℋℋ
ℋ(m).
Tạo chữ ký số sử dụng khóa bí mật (n,d) ñể tính:
s=h
d
mod n.
- Chữ ký của m là s và ñược gửi kèm với thông ñiệp m ñến người nhận. ðể xác
nhận chữ ký, người nhận thực hiện các bước sau:
Sử dụng khóa công khai (n,e) của người ký ñể giải mã chữ ký:
mod p với h bất kỳ (1<h<p–1), và chọn lại nếu kết quả
là 1. Hầu hết cách chọn h ñều nhận ñược g có thể sử dụng, thông
thường chọn h=2.
- Các tham số thuật toán (p,q,g) có thể chia sẻ giữa những người khác nhau
trong hệ thống. Bước thứ hai tính các khóa bí mật và khóa công khai của từng
người :
Chọn x ngẫu nhiên sao cho 0<x<q.
Tính y=g
x
mod p.
Khóa công khai là (p,q,g,y), khóa bí mật là x.
- Phiên bản FIPS 186-3 sắp tới sử dụng SHA-224/256/384/512 là các hàm băm,
kích thước của q là 224 (hoặc 256 bit), và L bằng 2048 (hoặc 3072).
- ðể ký một thông ñiệp m, người ký thực hiện các bước sau:
Phát sinh một số ngẫu nhiêu k (0<k<q) cho mỗi thông ñiệp.
Tính r=(g
k
mod p) mod q.
Tính s = k
1−
(ℋ(m) + xr)) mod q.
Tính toán lại chữ ký trong trường hợp không chắc chắn r=0 hoặc s=0.
Chữ ký là (r,s).
- ðể xác nhận chữ ký, người nhận thực hiện các bước sau:
Loại bỏ chữ ký nếu 0<r<q hoặc 0<s<q không thỏa mãn.
Tính w=s
1−
mod q.
Tính u
1