PKI (cơ sở hạ tầng khóa công khai) là một trong những hệ thống điển hình về bảo vệ thông tin một cách toàn diện nhất. Tuy nhiên PKI không phải không có những nhược điểm cần phải khắc phục, ví dụ như các vấn đề về bảo vệ khóa bí mật (private key), vấn đề về các mật khẩu, bảo vệ truy nhập hệ thống…. Trên thế giới, các nhà xây dựng và phát triển PKI đã đưa ra rất nhiều các giải pháp để xây dựng các hệ thống PKI an toàn hơn. Nắm bắt được tình hình đó một hệ thống có tên gọi là Time Stamp Authority đã ra đời để đáp ứng và hỗ trợ thêm quá trình chống chối bỏ của hệ thống PKI.
Trang 1MỤC LỤC
LỜI NÓI ĐẦU -1
CHƯƠNG I: TỔNG QUAN VỀ PKI -24
I Hạ Tầng Khóa Công Khai-PKI -24
1 Khái niệm PKI -24
2 Các thành phần của một hệ thống PKI -33
3 Chức Năng Cơ Bản Của PKI -36
3.1 Chứng thực (certification) -36
3.2 Thẩm tra (validation) -37
CHƯƠNG II: DỊCH VỤ CẤP DẤU THỜI GIAN -42
I Giới thiệu -42
1 Khái niệm dịch vụ cấp dấu thời gian -42
2 Tại sao phải sử dụng dịch vụ cấp dấu thời gian -42
2.1 Gia tăng tính tin tưởng trong thương mại điện tử -42
2.2 Ngăn chặn đánh cắp quyền sở hữu trí tuệ -43
2.3 Hỗ trợ cho chữ ký số của một hệ thống PKI -44
II Dịch vụ cấp dấu thời gian (TSA) -44
2.1 Các yêu cầu của một hệ thống TSA -44
2.2 Giao dịch của TSA (TSA Transaction) -44
3 Khuôn dạng gói tin yêu cầu và phúc đáp của TSA -45
3.1 Khuôn dạng gói tin yêu cầu của TSA (Request Format) -45
3.2 Khuôn dạng của gói tin phúc đáp -47
4 Các phương thức truyền tải dấu thời gian -49
4.1 Dấu thời giantruyền tải qua E-mail -49
4.2 Giao thức chuyền tại bằng file -50
4.3 Socket Base Protocol -51
4.4 Giao thức cấp dấu thời gian thông qua HTTP -51
5 Nguyên tắc hoạt động của TSA -51
5.1 Quá trình yêu cầu và kiểm tra một TSA -51
5.2 Quy trình kiểm tra một chữ ký có dấu thời gian -52
Trang 26 Các vấn đề bảo mật liên quan tới sử dụng dấu thời gian. -53
CHƯƠNG III: XÂY DỰNG DỊCH VỤ CẤP DẤU THỜI GIAN DỰA TRÊN HỆ THỐNG OPENCA -55
I Mô hình triển khai -55
II Các công việc cần phải làm -56
III Quá trình cài đặt -58
3.1 Cài đặt RootCA -58
3.2 Cài đặt SubCA -64
3.3 Tạo và cài đặt một certification cho web site -65
3.4 RA -71
3.5 OCSP -71
3.6 Repositores -75
3.7 Quản lý hệ thống PKI -79
3.8 Xây dựng hệ thống cấp dấu thời gian -79
IV Kiểm thử và thử nghiệm mô hình cấp dấu thời gian trong thực tế 83 6.1 Xây dựng chương trình Visual basic Demo timestamp -83
6.2 Dùng Adobe Pro để kiểm tra dấu thời gian. -84
KẾT LUẬN -95
TÀI LIỆU THAM KHẢO -96
Trang 3CÁC THUẬT NGỮ VIẾT TẮT Thuật ngữ - từ viết tắt Giải thích
3DES(Triple DES) Thuật toán mã hóa dữ liệu được cải
tiến từ DES bằng cách thêm cácvòng mã hóa
AES (Advanced Encryption
Standard)
Chuẩn mã hóa dữ liệu nâng caođược phát triển nhằm thay thế DES.Thuật toán này có ưu điểm nhanh
và độ mật cao hơn so với DES
CA(Certification Authority) Hệ thống cấp phát chứng thư số
CP(Certificate Policy) Chính sách chứng thư số
DC (Digital Certificate) Chứng thư số
DES (Data Encription
để tạo, lưu trữ và bảo vệ các khóa
sử dụng trong mã hóa Trong hệthống PKI, HSM thường đượcdùng để bảo vệ các cặp khóa quantrọng như các cặp khóa củaRootCA, SubCA
LDAP (Lightweight Directory
Access Protocol)
Giao thức chuyển truy cập thư mục
CA (Certification Authority) Cơ quan chứng thực
Infrastructure)
Hạ tâng khóa công khai
OCSP (Online Certificate
status Protocol)
Giao thức kiểm tra trạng thái chứngthực số trực tuyến
RA (Registration Authority) Cơ quan đăng ký
RootCA (Root Certification
Authority)
Hệ thống cấp phát chứng thực sốmức gốc
Trang 4RSA, dùng để sinh cặp khóa
Certification Authority)
Hệ thống cấp phát chứng thư sốmức con
TSA ( Time Stamp Authority) Trung tâm cấp dấu thời gian
USB Token Thiết bị bảo vệ khóa của người
dùng trong hệ thống PKI
Trang 5LỜI NÓI ĐẦU
Thế giới phẳng – đó là một lời giới thiệu chuẩn xác về thế giới côngnghệ thông tin hiện nay, ranh giới giữa các quốc gia, các vùng bị phá vỡ bởi
sự liên kết ngày càng mở rộng của các mạng máy tính Giá trị thông tin giaodịch trên mạng ngày càng tăng, ngay cả các chính phủ cũng điều hành quamạng – chính phủ điện tử, hoạt động thương mại trên mạng – thương mạiđiện tử phát triển Các hoạt động tội phạm trên mạng cũng ngày càng tănggây ra những tổn thất thông tin, tài chính, quân sự… nghiêm trọng Do vậynhu cầu về bảo vệ thông tin cũng tăng theo Rất nhiều các mô hình, phươngpháp, hệ thống bảo vệ thông tin ra đời đã đáp ứng tốt những nhu cầu về bảo
vệ thông tin
PKI (cơ sở hạ tầng khóa công khai) là một trong những hệ thống điểnhình về bảo vệ thông tin một cách toàn diện nhất Tuy nhiên PKI không phảikhông có những nhược điểm cần phải khắc phục, ví dụ như các vấn đề về bảo
vệ khóa bí mật (private key), vấn đề về các mật khẩu, bảo vệ truy nhập hệthống… Trên thế giới, các nhà xây dựng và phát triển PKI đã đưa ra rất nhiềucác giải pháp để xây dựng các hệ thống PKI an toàn hơn Nắm bắt được tìnhhình đó một hệ thống có tên gọi là Time Stamp Authority đã ra đời để đápứng và hỗ trợ thêm quá trình chống chối bỏ của hệ thống PKI
Đối với nước ta, PKI vẫn còn rất mới mẻ, chúng ta mới chỉ ở nhữngbước đầu nghiên cứu và xây dựng các hệ thống PKI Vấn đề kết hợp hệ thốngPKI và hệ thống Time Stamp vẫn chưa được quan tâm nhiều Chính vì vậy đểgóp phần việc phát triển hệ thống tích hợp, kết hợp giữa hai hệ thống, em đãxây dựng đồ án tốt nghiệp chuyên ngành An toàn thông tin: “Nghiên cứu vàxây dựng hệ thống tem thời gian cho PKI dựa trên bộ phần mềm mã mởTSA”, mục tiêu của đồ án tập trung nghiên cứu và xây dựng hệ thống timestamp dựa trên bộ phần mềm OpenTSA và ứng dụng cho việc cấp stamp-timecho các hệ thống PKI hỗ trợ việc chống chối bỏ dữ liệu ký mã Về bố cục,luận văn được trình bày trong 3 chương chính, nội dung cụ thể như sau:
Chương 1: Tổng quan về PKI
Trang 6Chương này của đồ án giới thiệu khái quát về trung tâm chứng thực vàchứng thư số, các thành phần:CA, RA, SubCA, OCSP, Temp thời gian… vàcách thức thu hồi hủy bỏ một chứng thư số.
Chương 2: Dịch vụ cấp dấu thời gian
Chương này giới thiệu tổng quan về hệ thống TimeStamp các khái niệm,yêu cầu của một hệ thống time stamp, miêu tả các gói tin time stamp, phươngthức truyền dẫn gói tin, nguyên tắc hoạt động Cuối cùng là các vấn đề bảomật với một hệ thống time stamp
Chương 3: Xây dựng hệ thống cấu dấu thời gian dựa trên hệ thống OpenCAĐầu chương là miêu tả hoạt động của hệ thống cấp dấu thời gian, môhình và chi tiết hoạt động, sơ đồ mạng khi triển khai Miêu tả quá trình xâydựng hệ thống PKI dựa trên openca Cuối chương là xây dựng hệ thống cấpdấu thời gian dựa trên hệ thống PKI đã xây dựng ở trước
Trang 7Chương I: TỔNG QUAN VỀ PKI
I Hạ Tầng Khóa Công Khai-PKI
Khả năng bảo mật (Secure): Đạt tiêu chuẩn quốc tế về bảo mật EAL4+,đáp ứng hầu hết các thiết bị HSM và Smartcard
Khả năng mở rộng (Scalable): Dựa trên kiến trúc PKI hiện đại, đượcthiết kế theo mô hình có độ sẵn sàng cao, có khả năng mở rộng để cấpphát số lượng lớn chứng thư số một cách dễ dàng
Khả năng sẵn sàng (Available): Tất cả chính sách, log, dữ liệu vềchứng thư số và CRL được lưu trữ trên cơ sở dữ liệu tin cậy và bảo mật
ví dụ: Oracle hệ cơ sở dữ liệu lớn nhất và đáng tin cậy nhất trên thếgiới
Khả năng mở, tương thích (Open): Được thiết kế để tuân thủ các tiêuchuẩn mở quốc tế như X509, PKIX, LDAP
Khả năng kiểm soát bằng chính sách (Policy Driven): Hệ thống có khảnăng áp dụng các chính sách khác nhau với việc đăng ký các loại chứngthư số khác nhau
Khả năng linh động (Flexible): Có thể hỗ trợ nhiều phương thức đăng
ký chứng thư số khác nhau: Web, Email, Face-to-face, CMP, SCEP
Trong mật mã học, hạ tầng khóa công khai (Public Key Infracstructure –PKI) là một cơ chế để cho một bên thứ 3 (thường là nhà cung cấp chứng thựcsố) cung cấp và xác thực định danh các bên tham gia vào quá trình trao đổithô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 và khóa bí mật Các quá trình này thường đượcthự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ợpkhá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ốitrong chứng thực khóa công khai
1.Khái niệm
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ố (Chứng thư số Authority)
Trang 8cù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ã hóa khóa công khai trong trao đổi thông tin
PKI bản chất là một hệ thống công nghệ vừa mang tính tiêu chuẩn, vừamang tính ứng dụng được sử dụng để khởi tạo, lưu trữ và quản lý các chứngthực điện tử (digital chứng thư số) cũng như các mã khoá công cộng và cánhân
Tới nay, những nỗ lực hoàn thiện PKI vẫn đang được đầu tư và thúc đẩy
Và để hiện thực hoá ý tưởng này, các tiêu chuẩn cần phải được nghiên cứuphát triển ở các mức độ khác nhau bao gồm: mã hoá, truyền thông và liên kết,xác thực, cấp phép và quản lý Nhiều chuẩn bảo mật trên mạng Internet,chẳng hạn Secure Sockets Layer/Transport Layer Security (SSL/TLS) vàVirtual Private Network (VPN), chính là kết quả của sáng kiến PKI
Quá trình nghiên cứu và phát triển PKI là một quá trình lâu dài và cùngvới nó, mức độ chấp nhận của người dùng cũng tăng lên một cách khá chậmchạp PKI có thể đảm bảo một cơ chế bảo mật và tổng hợp để lưu trữ và chia
sẻ các tài sản trí tuệ cả trong và ngoài phạm vi công ty Tuy nhiên, chi phí và/hoặc sự phức tạp của nó có thể gây ra những rào cản nhất định đối với khảnăng ứng dụng
Đa phần các giao dịch truyền thông của doanh nghiệp với khách hàng,chính quyền và các đối tác khác đều được diễn ra một cách điện tử Ngày nay,một giải pháp an ninh toàn diện cạnh tranh với PKI thực sự chưa được tìmthấy Từ góc độ giải pháp công nghệ, điều này làm cho việc chọn lựa trở nênđơn giản hơn Nhiều hãng khác cũng cung cấp các giải pháp PKI Những tínhnăng này, cùng khả năng quản lý và liên kết PKI, đã được tích hợp vào hệđiều hành và các ứng dụng có liên quan
PKI là công nghệ xác thực đầu tiên và hoàn thiện nhất sử dụng phươngpháp mã hoá dựa trên khoá bí mật và khoá công cộng Tuy nhiên, PKI cũngbao gồm cả việc ứng dụng rộng rãi các dịch vụ bảo mật khác, bao gồm dịch
vụ dữ liệu tin cậy, thống nhất dữ liệu về tổng thể và quản lý mã khoá
Trang 91 Các loại kiến trúc của một trung tâm chứng thực CA
Lợi ích của việc có một CA là: bất kỳ người sử dụng nào biết được khóacông khai của CA có thể lấy được khóa công khai của những người sử dụngkhác đã được CA xác thực Như vậy để lấy được khóa công khai của nhữngngười sử dụng một cách tin cậy thì cần phải biết được khóa công khai của
CA Vấn đề nảy sinh là làm cách nào để cung cấp cho những người sử dụngkhóa công khai của CA theo một phương thức an toàn? Điều này có thể đượcgiải quyết theo những phương pháp sau:
1 Khóa công khai của CA được truyền an toàn tới những thực thể tham giatrong hệ PKI Điều này được thực hiện bằng cách sử dụng một chứng chỉđược ký bởi chính CA đó, trường hợp này gọi là chứng chỉ tự ký (self-signed chứng thư số) Để tạo ra một chứng chỉ tự ký tin cậy, điều cần thiết
là phải truyền chứng chỉ này tới những người sử dụng theo một phươngthức an toàn (tính toàn vẹn thông tin), chẳng hạn như gửi một mã hash
(băm thông điệp) trên kênh truyền Trường hợp này được gọi là hệ thống
CA một cấp.
2 Trong hệ thống CA nhiều cấp, CA gốc (root CA) xác thực những CA cấpdưới, và mỗi CA cấp dưới có thể phát hành các chứng chỉ trên các CA trựcthuộc…Điều này có nghĩa rằng bất kỳ ai biết được khóa công khai củaroot CA có thể xác thực tất cả chứng chỉ được phát hành bởi hệ thống
những CA cấp dưới Trường hợp này được gọi là hệ thống CA phân cấp.
3 Thay vì cấu trúc CA phân cấp, hai CA có thể xác thực lẫn nhau Trongtrường hợp này bất kỳ ai có khóa công khai của một trong hai CA này (thư
số tự ký) có thể dựa vào đó mà xác thực chứng thư sô được phát hành bởi
CA còn lại Trường hợp này được gọi là hệ thống CA ngang cấp.
Trong thực tế sự kết hợp giữa 3 kiểu CA có thể được sử dụng
4 Các thành phần của một hệ thống PKI
Một hệ thống PKI gồm các thành phần sau:
Chứng thư số Authorites (CA): cấp và thu hồi chứng chỉ
Registration Authorites (RA): gắn kết giữa khóa công khai và định danh của người giữ chứng chỉ
Clients: Người sử dụng cuối hoặc hệ thống là chủ thể của chứng chỉ
Trang 10 Repositories: Hệ thống lưu trữ chứng chỉ và danh sách các chứng chỉ bị thu hồi Cung cấp cơ chế phân phối chứng chỉ và CRLs đến các thực thể cuối
Các thành phần PKI và các mối quan hệ giữa chúng được chỉ ra như tronghình sau Đây là mô hình kiến trúc PKI do PKIX đưa ra
Hình 1: Các thành phần hệ thống PKI
5 Chức Năng Cơ Bản Của PKI
Hệ thống PKI có những chức năng khác nhau Nhưng nhìn chung có haichức năng chính là: chứng thực và thẩm tra
5.1.Chứng thực (certification)
Chứng thực là chức năng quan trọng nhất của hệ thống PKI Đây là quátrình ràng buộc khoá công khai với định danh của thực thể CA là thực thểPKI thực hiện chức năng chứng thực Có hai phương pháp chứng thực:
Tổ chức chứng thực (CA) tạo ra cặp khoá công khai, khoá bí mật vàtạo ra chứng chỉ cho phần khoá công của cặp khoá
Người sử dụng tự tạo cặp khoá và đưa khoá công cho CA để CA tạochứng chỉ cho khoá công đó Chứng chỉ đảm bảo tính toàn vẹn củakhoá công khai và các thông tin gắn cùng
Trang 115.2.Thẩm tra (validation)
Quá trình xác định liệu chứng chỉ đã đưa ra có thể được sử dụng đúngmục đích thích hợp hay không được xem như là quá trình kiểm tra tính hiệulực của chứng chỉ Quá trình này bao gồm một số bước sau:
Kiểm tra xem liệu có đúng là CA được tin tưởng đã ký số lên chứngchỉ hay không (xử lý theo đường dẫn chứng chỉ)
Kiểm tra chữ ký số của CA trên chứng chỉ để kiểm tra tính toàn vẹn
Xác định xem chứng chỉ còn ở trong thời gian có hiệu lực haykhông
Xác định xem chứng chỉ đã bị thu hồi hay chưa
Xác định xem chứng chỉ đang được sử dụng có đúng mục đích,chính sách, giới hạn hay không (bằng cách kiểm tra những trường
mở rộng cụ thể như mở rộng chính sách chứng chỉ hay mở rộng việc
sử dụng khoá)
Trang 12Chương III: DỊCH VỤ CẤP DẤU THỜI GIAN
I Giới thiệu
1 Khái niệm dịch vụ cấp dấu thời gian
Dịch vụ cấp dấu thời gian là một cơ quan công chứng an toàn trực tuyến,một bên thứ ba mà người dùng có thể tin cậy vào việc xác thực trong quátrình truyền thông của mình Nó bao gồm rất nhiều các công nghệ (mật mã)khác nhaunhằm xác định một tài liệu đã tồn tại và không bị thay đổi từ mộtthời điểm cụ thể
Bất kể định dạng hay nội dung dữ liệu nào nguyễn là nó ở dạng điện tửthì đều có thể sử dụng dịch vụ cấp dấu stamp thời gian Dịch vụ cấp dấu thờigian có thể được ứng dụng cho các dịch vụ: giao dịch trực tuyến, email, nhắntin an toàn, bảo hộ sở hữu trí tuyệ và các dịch vụ thời gian nhạy cảm khác
Hình 2: Mô hình dịch vụ TSA
2 Tại sao phải sử dụng dịch vụ cấp dấu thời gian
2.1.Gia tăng tính tin tưởng trong thương mại điện tử
Trong thương mại điện tử để biết chính xác thời gian và nội dung giaodịch là rất quan trọng Tuy nhiên, người mua và người bán hiện tại thường sửdụng nguồn thời gian trên máy tính cá nhân thực hiện giao dịch làm thời gian
Trang 13trong giao dịch Thời gian này không phải là thời gian tin cậy bởi thời giannày có thể bị thay đổi hoặc bị sai lệch Ngoài ra các nội dung giao dịch, nộidung email, các tài liệu công văn tham gia vào hoạt động thương mại rất dễ bịthay đổi Tất cả các thứ đó tạo cho quá trình thương mại điện tử không cònđược tin cậy nữa, và rất nguy hiểm trong vấn đề an ninh an toàn thông tin.Một giao dịch thương mại điện tử không cho phép những yếu tố này Mộtgiao dịch thương mại điện tử phải thực sự an toàn cho cả người bán lẫn kháchhàng
Dịch vụ cấp dấu thời gian có thể cung cấp một con dấu trên đó có gắnnhãn thời gian ký và giao hàng, chứng minh cơ quan tổ chức trên chữ ký vàchứng minh nguồn gốc của dữ liệu Bên cạnh đó nó không sử dụng thời giantồn tại trên máy người gửi và nhận để làm nguồn thời gian chuẩn khi ký Mà
nó lấy nguồn thời gian chuẩn từ một trung tâm thời gian uy tín trên thế giới cóthể lấy theo hệ thống UTC … Và với sự hỗ trợ này thì hệ thống thương mạiđiện tử đã tăng tính tin tưởng trong mỗi giao dịch
2.2.Ngăn chặn đánh cắp quyền sở hữu trí tuệ
Hiện nay hệ thống mạng Internet đã trở nên quá phổ biến và mở rộng.Hiện tượng chia sẻ thông tin và thu thập thông tin từ các tài liệu và công trìnhnghiên cứu của người khác rất nhiều Đó là các quá trình trao đổi thông tin và
ý tưởng đó là quá trình hết sức bình thường của mạng internet Nhưng thậtkhông may chính điều này đã làm tăng tệ nạn đánh cắp thông tin của ngườikhác, đánh cắp quyền sở hữu trí tuệ, quyền sáng chế sản phầm của ngườikhác
Một con dấu thời gian được cung cấp từ hệ thống cấp dấu thời gian stamp có thể ngăn cản việc đó Nó có thể xác minh nguồn gốc của tài liệu,video, ảnh, mã nguồn chương trình… Nếu sản phẩm trí tuệ bị xâm phạm vàđưa ra pháp luật nó có thể xác nhận được nguồn gốc và thời gian sản phẩm trítuệ đó được tạo ra, tác giả của nó là ai
time-2.3.Hỗ trợ cho chữ ký số của một hệ thống PKI
Trong cơ sở hạ tầng khóa công khai một chữ ký số được cung cấp choviệc ký lên các tài liệu điện tử có thể bị hủy bỏ thời gian ký lên các tài liệu
Trang 14hệ thống cấp dấu thời gian được gắn trên chữ ký đó, và thời gian được ký lêncác tài liệu văn bản điện tử sẽ được lấy thời gian từ hệ thống cấp dấu thờigian Một chứ ký đi kèm con dấu như thế sẽ hỗ trợ chống chối bỏ trong quátrình ký mã
II Dịch vụ cấp dấu thời gian (TSA)
2.1 Các yêu cầu của một hệ thống TSA
TSA phải lấy thời gian từ một nguồn thời gian tin cậy để tạo dấu thời gian
Mỗi một thẻ thời gian được gán một số nguyên và là duy nhất trong tất cảcác thẻ dấu thời gian sinh trước
Khi có một yêu cầu hợp lệ tới thì phải đáp ứng ngay một dấu thời gian
Mỗi một dấu thời gian được tạo ra nó phải xác định là duy nhất và đượcgắn bên dưới một chính sách an ninh
Với mỗi một dấu thời gian được gán cho một dữ liệu, ví dụ một dữ liệudấu ấn (data imprint) sẽ được gán duy nhất một hàm băm (hash-function)được xác định bởi một OID
Độ dài của thuật toán băm và loại thuật toán băm phải phù hợp với OID
Mỗi một chữ ký trên dấu thời gian được sinh ra từ một loại khóa dànhriêng cho mục đích cấp dấu thời gian mục đích này được quy định trênchứng thư số cấp cho máy chủ cấp dấu thời gian
Phần thông tin mở rộng của một thẻ thời gianphải được thêm vào khi cómột yêu cầu đòi hỏi dấu thời gian phải có trường mở rộng
2.2 Giao dịch của TSA (TSA Transaction)
Đầu tiên, người dùng yêu cầu một dấu thời gian bằng cách gửi yêu cầutới trung tâm cấp dấu thời gian Trong thông điệp này người dùng gắn trườngTimestampReq và hàng loạt các trường khác (được định nghĩa bên dưới) vàogói tin Thông điệp thứ hai trả về từ hệ thống trung tâm cấp dấu thời gian baogồm một TimeStampResp được định nghĩa bên dưới đáp trả lần lượt các yêucầu trong gói tin đầu tiên của người dùng
Khi nhận được một phản hồi cho gói tin mà dấu thời gian (TST) đã trảlời các yêu cầu từ người dùng Điều đó có nghĩa là trong gói tin trả lời đó cóthể xảy ra các trường hợp sau: gói tin trả lời có lỗi, thời gian trả về cho gói tinyêu cầu bị sai, OID không tương thích với thuật toán băm và kích cỡ của
Trang 15thuật toán băm đó, client không hiểu một trường nào đó trong gói tin trả lời,hoặc một yêu cầu có lỗi và bắt buộc TSA phải gửi lại một gói tin thông báolỗi…
Hình 3: Yêu cầu và Phúc đáp time-stamp
3 Khuôn dạng gói tin yêu cầu và phúc đáp của TSA
Một hệ thống TSA gồm hai thành phần Client và Server Client thực hiệntính toán giá trị tóm lược của tài liệu điện tử sau đó gửi lên Server TSA chấpnhận yêu cầu và đính kèm thời gian lên giá trị tóm lược mà client gửi lênserver, đồng thời ký các giá trị đó và gửi về client kèm theochứng thư số của
nó Vì vậy, Client có thể kiểm tra chữ ký trên dấu thời gianbằng cách sử dụngchứng thư số được TSA gửi kèm đi
3.1 Khuôn dạng gói tin yêu cầu của TSA (Request Format)
Client sẽ yêu cầu một dấu thời gian tới TSA Gói tin yêu cầu được gọi làTimestampReq và nó phải có các thành phần sau:
Trang 16Hình 4: Thành phần của một gói tin yêu cầu time stamp
Trường version (hiện tại là v1) xác định phiên bản của gói tin yêu cầu dấuthời gian
Trường messageImprint là trường chứa giá trị băm của dấu thời gian Nó làmột chuỗi OCTET (OCTET STRING) Và độ dài của nó phải tương ứng vớigiá trị của thuật toán băm (ví dụ: 20 bytes cho SHA-1 hoặc 16 bytes choMD5)
MessageImprint ::= SEQUNECE {
hashAlgorithm AlgorithmIdentifier,
hashedMessage OCTET STRING}
Trường hashAlgorithm chỉ ra thuật toán băm được sử dụng: MD5, SHA1 Nếu TSA không nhận ra thuật toán băm hoạc hiểu thuật toán băm này làmột thuật toán yếu TSA sẽ hủy cung cấp một time-stamp token bằng cáchđặt thông tin của trường pkiStatusInfo về ‘bad_alg’
Trường reqPolicy định nghĩa chính sách yêu cầu TSA cung cấp theo một thẻdấu thời gian TSAPolicyID được định nghĩa như sau:
TSAPolicyID ::= OBJECT IDENTIFIERNếu trường này được đặt giá trị về nonce thì client sẽ cho phép kiểm trathời gian mà gói tin trả về khi thời gian đó không trùng khớp với thời giantrên máy cục bộ Nonce là một số ngẫu nhiên rất lớn được client sinh ra nó cóthể là một số nguyên 64 bit Có nhiều trường hợp giá trị nonce phải thêm vào
vì nếu không gói tin đáp ứng sẽ bị hủy bỏ
Trang 17Trường certReq định nghĩa trong gói tin trả về TSA có đính kèm chứng thư
số của nó vào đó không Nếu trường này được đặt là TRUE thì TSA sẽ trả
về một gói tin có gắn chứng thư số của TSA trên đó Mục đích của trườngnày là có chứng thư số của TSA ngay lập tức khi nhận được yêu cầu vàdùng nó trong quá trình kiểm tra chữ ký đã được ký bởi TSA
Nếu trường certReq không được xác định hoặc nó được đặt về giá trịfalse thì trường chứng thư số sẽ không tồn tại trong gói tin phúc đáp từ TSA
Trường mở rộng (Extensions) đây là cách thêm các thông số mở rộng chocác thuộc tính của gói tin yêu cầu trường mở rộng được định nghĩa rõ trongRFC 2459 Nếu một trường mở rộng được thiết lập là kiểm tra hoặc khôngkiểm tra được sử dụng bởi người gử yêu cầu nhưng time-satmping serverkhông nhận ra, thì server sẽ không công bố một token và trả về giá trị là lỗi(unacceptedExtension)
3.2.Khuôn dạng của gói tin phúc đáp
Một dấu thời gian phúc đáp có khuôn dạng sau:
TimeStampResp ::= SEQUENCE {
timeStampToken TimeStampToken OPTIONAL }
Trạng thái được định nghĩa như sau:
PKIStatusInfo ::= SEQUENCE {
Status PKIStatus,
statusString PKIFreeText OPTIONAL,
failInfo PKIFailureInfo OPTIONAL }
Trường Status chỉ ra trạng thái của một thẻ stamp time và nó thường nhậnhai giá trị là 0 hoặc1 0 có nghĩa là thẻ dấu thời gian đó đã được yêu cầutrước rồi 1 nghĩa là thẻ stamp time đó sẽ được sửa đổi lại Ý nghĩa của mỗigiá trị trong trạng thái:
Trường statusString của PKIStatusInfo dùng để cung cấp thông tin vềtrường mesageImprint
Một TimeStampToken phải được định dạng như bên dưới và sẽ ký cùng vớinội dung dữ liệu
Trang 18TimeStampToken ::= ContentInfo
contentType là id-signedData ([CMS])
Nội dung là signedData ([CMS])
TimeStampTokenkhông nên lưu chứa bất cứ thông tin của một TSA nàokhác ngoài thông tin về hệ thống TSA đã ký lên nó Định danh chứng chư sốcủa TSA nên bao gồm thuộc tính signerInfo bên dưới thuộc tínhSigningChứng thư số
Phải xuất hiện tương ứng với các trường xuất hiện trong TimeStampReq Trong trường hợp này nó phải có giá trị trùng nhau
extensions [1] IMPLICIT Extensions OPTIONAL}
Version: Thông thường máy chủ thời gian sẽ cung cấp thẻ thời gian tokenphiên bản 1.Các trường có thể tùy chọn có, chỉ có trường nonce là phảiđược hỗ trợ.Thường bên yêu cầu dấu thời gian phải nhận ra phiên bản 1của time-stamp tokens với tất cả các trường có trong đó, nhưng nó khôngbắt buộc phải hiểu các trường trong phần mở rộng
Policy: Một trường chính sách phải được cung cấp để xác định được cácchính sách của TSA bên dưới gói tin trả lời cho yêu cầu Nếu các trường
Trang 19xuất hiện trong TimeStampReq có cùng giá trị thì nó phải trả về một thôngbáo lỗi Chính sách phải yêu cầu bao gồm các kiểu thông tin sau:
+ Các điều kiện khi time-stamp token được sử dụng
+log của time-stamp token phải có giá trị khi cho phép kiểm tra lại tính xácthực của time-stamp token
messageImprint phải có cùng giá trị cùngtrường này trong timeStampReq,cung cấp kích cỡ của giá trị thuật toán băm kiểm xác định chính xác kích
cỡ của thuật toán băm trong hashAlgorithm
Trường serialNumber là một số nguyên được gán bởi TSA cho mỗi mộtTimeStampToken Nó phải là duy nhất cho mỗi TimeStampToken mỗi khiđược TSA ký lên Nó cần được bảo vệ kể cả sau khi dịch vụ bị tạm ngưnghoặc bị carsh đột ngột
genTime là thời gian mà time-stamp token được tạo bởi TSA Nó sửdụng chuẩn giờ UTC nó không sử dụng giờ trong time zone UTC là mộtchuẩn thời gian khá mạnh mẽ thời gian cơ bản được tính tới giây theo hệ đếmchuẩn SI
Giá trị GeneralizedTime phải tính tới mức giây Tuy nhiên khi không cầnthiết tới mức giây chính xác thì GeneralizedTime sẽ tự giới hạn tới số giấychính xác nhất
Câu trúc: YYYYMMDDhhmmss[.s…]z
Ví dụ: 20110601052123.34352z
4 Các phương thức truyền tải dấu thời gian
4.1.Dấu thời giantruyền tải qua E-mail
Đây là phần miêu tả giao thức cấp dấu thời gian sử dụng email để thựchiện giao dịch Khuôn dạng của dấu thời gian sử dụng 2 đối tượng MIME nhưsau:
Content-Type: application/timestamp-query
Content-Transfer-Encoding: base64
<<the ASN.1 DER-encoded Time-Stamp message,
base64-encoded>>
Trang 20MIME Type File
4.2.Giao thức chuyền tại bằng file
Một tệp chứa thông tin dấu thời gian nên được đóng gói ở dạng DER Nókhông có định dạng mở rộng thêm ở phần đầu hoặc các thông tin trong tệp
Nó giống như trường hợp vận chuyển dấu thời gian thông qua dịch vụ FTP.Một yêu cầu dấu thời gian nên có phần mở rộng của file là tsq (Time-Stamp Query) Và một yêu cầu dấu thời gian nên có phần đuôi mở rộng là tsr(Time-Stamp Reply)
4.3.Socket Base Protocol
Dựa trên nền tảng của giao thức TCP nó sử dụng để vận chuyển TSAmessages Đây là bộ giao thức có thể sử dụng trong trường hợp khởi tạo mộtgiao dịch và trả về một kết quả cho phiên khởi tạo đó Giao thức này sử dụngcổng giao dịch là 318 để thực hiện nắng nghe và phúc đáp các yêu cầu cần xử
lý TSA
Trang 214.4.Giao thức cấp dấu thời gian thông qua HTTP
Đây là trường hợp sử dụng HTTP để gửi các dấu thời gian chứa trongđối tượng MIME Đơn giản ta chỉ hiểu nó dùng HTTP để gửi các gói tinMIME đã đóng gói dấu thời gian vào trong nội dung của nó
5 Nguyên tắc hoạt động của TSA
5.1.Quá trình yêu cầu và kiểm tra một TSA
Hình 5: Mô hình yêu cầu và kiểm tra của TSA
Một bản tài liệu được ký lên từ client và gửi yêu cầu tới TSA server.TSA Server lấy đồng hồ thời gian làm thời gian chuẩn để trả lời các yêu cầu
từ client TSA server nhận yêu cầu kiểm tra yêu cầu đó có hợp lệ không Nếuhợp lệ nó phúc đáp lại client ngược lại gửi lại thông tin lỗi Ở phía client sẽkiểm tra lại thông tin và lưu trên dấu thời gian vào cùng với bản tài liệu
Trang 225.2.Quy trình kiểm tra một chữ ký có dấu thời gian
Hình 6: Quá trình kiểm tra chữ ký có dấu thời gian
Tại client, từ dấu thời gian, client kiểm tra thông tin và ngày giờ ký Sosánh với thời gian trên Document đã được ký từ trước Nếu hai thông tin nàykhớp nhau thì tài liệu này hợp lệ Ngược lại tài liệu vô giá trị và không cònhợp lệ để thấy rõ hơn hãy xem hình sau:
Hình 7: Quy trình kiểm tra dấu thời gian
Trang 236 Các vấn đề bảo mật liên quan tới sử dụng dấu thời gian.
Trường hợp một TSA không được sử dụng nữa, nhưng khóa riêng củaTSA đã không được thỏa hiệp vì tổ chức xác thực đó có thể đã thu hồi.Khi đó trường mở rộng reasonCode kéo theo một chứng thư bị thu hồi
từ TSA trong mục mở rộng của CRL, Nó cỏ thể bị coi là unspecified(0), affiliationChanged (3) superseded (4) hoặc cessationofOperation(5) Trong trường hợp này mọi khó được ký bởi tokens này sẽ khônghợp lệ, nhưng những tkens sinh ra trước khi hủy bỏ vẫn được coi là hợp
lệ Khi trường mở rộng reasonCode tạo ra từ chứng thư bị hủy bỏ từmột TSA nó sẽ không hiện bất cứ phần mở rộng trong CRL Và vì thếtất cả các tokens được ký bởi key lỗi sẽ bị coi là không hợp lệ Đó là lý
do nên sử dụng trường mở rộng reasonCode
Khi khóa riêng của TSA bị mất an toàn, thì một chứng thư của nó sẽ bịhủy bỏ trong trường hợp này reasonCode kéo theo các chứng thư củaTSA có thể hoặc không được hiển thị trong phần mở rộng ở mục CRL.Nếu nó hiển thị thì nó sẽ hiển thị giá trị keyCompromise Bất kỳ tokennào được ký bởi TSA mà đang dùng khóa riêng đó sẽ không được tintưởng Lý do là nó có thể mát an toàn về bảo mật nếu TSA sử dụng mộtkhóa không đảm bảo Trong trường hợp khóa riêng bị mất an toàn, mộtquá trình kiểm tra lại tất cả các thẻ được sinh ra bởi TSA sẽ được xemxét lại và kiểm tra lại tính đúng đắn của nó Hai thẻ time-stamp từ haiTSA khác nhau sẽ có địa chỉ khác nhau
Khóa dùng để ký của TSA phải có chiều dài cho phải đủ kích cỡ củamột vòng đời(lifetime) rất dài Tất nhiên ngay cả khi mục này cho phép
đủ kích cỡ cho vòng đời, thì vòng đời cũng phải ở trong một giới hạncho phép Vì vậy, tất cả các thẻ đã được ký bởi TSA nên ký lại time-stamp (nếu quá trình xác thực sao chép từ một CRL cũ không còn giátrị) hoặc đã bị hủy cập nhập tại thời điểm sau khi tạo mới lại từ một chữ
ký TSA đã tồn tại và được tin tưởng
Một ứng dụng client chỉ sử dụng giá trị nonce và không bao giờ sửdụng giá trị thời gian trên local để làm thời gian cho thông tin trả lời.Một dạng tấn công ‘man-in-the-middle’ có thể là nguyên nhân gâytrễ
Trang 24quá giá trị cho phép nên nghi ngờ đang có thể bị tấn công Mỗi mộtphương thức vận chuyển dấu thời gianđều mất một khoảng thời giannhưng nó sẽ nằm trong khuôn khổ thời gian cho phép trễ của phươngthức ngoài ra thì sẽ bị coi là bất thường.
Nếu thực time-stamp khác nhau có cùng một đối tượng dữ liệu sử dụngcùng một thuật toán băm, hoặc một thuộc tính đơn cho rất nhiều thẻtime-stamp trên cùng một đối tượng, thẻ time-stamp sinh ra sẽ bao gồmmột đoạn định danh cho thông điệp in dấu; như là trả về một kết quả,một người truy cập tới thẻ time-stamp có thể tham chiếu tới một dữ liệudấu thời giangiống nhau
Trang 25Chương IV: XÂY DỰNG DỊCH VỤ CẤP DẤU THỜI GIAN DỪA
TRÊN HỆ THỐNG OPENCA
I Mô hình triển khai
I.1 Mô hình tổng quát
Hình 8: Mô hình tổng quát hệ thống cấp dấu thời gian
Trang 26Sau đây là mô hình mạng khi triển khai
Hình 9: Mô hình mạng hệ thống cấp dấu thời gian
II Các công việc cần phải làm
II.1 Việt hóa gói phần mềm OpenCA
Trong đề tài nghiên cứu khoa học báo cáo cho khoa trước em cũng đã tiến hành việt hóa nhưng vẫn còn một số lỗi căn bản về chính tả và cách dịch Trong đồ án này em việt hóa lại và có chỉnh sửa thêm trong
Trang 27mã nguồn của chương trình OpenCA, đóng gói lại thành một gói riêng Việt hóa và công bố cho cộng đồng mã nguồn mở Tất cả công việc đónhằm hướng tới một hệ thống an toàn và thân thiện với người Việt Nam nhất.
II.2 Cài đặt RootCA
RootCA của trường học viện kỹ thuật Mật Mã trong mô hình được xây dựng
từ gói OpenCA phiên bản 1.1.1 đã được em việt hóa RootCA chạy trên hệđiều hành CentOS 5.5 Nó được cấp một tên miền là hvktmm.vn Máy chủRootCA cần đảm bảo tính an toàn cao do vậy nó được để offline và cách lyvơi môi trường internet
II.3 Cài đặt SubCA1, SubCA2
SubCA1 và SubCA2 là hai CA chính chịu trách nhiệm cung cấp chứng thư
số cho người dùng ngoài mạng Nó được cài trên hệ điều hành CentOS5.5,phần mềm OpenCA phiên bản 1.1.1 đã được việt hóa giống như RootCA.Trong bài labs này em dùng subca1 để cấp chứng thư số cho user1 và cấpchứng thư số cho Trung tâm cấp dấu thời gian Hai CA này được để onlinevới mạng bên ngoài Chúng được cấp hai tên miền tương ứng làsubca1.hvktmm.vn và subca2.hvktmm.vn
II.4 Cài đặt dịch vụ kiểm tra chứng thư số trực tuyến
Dịch vụ kiểm tra chứng thư số được xây dựng trên hệ điều hành CentOS 5.5
Sử dụng phần mềm Openca-OCSPD phiên bản 2.1 để quản lý quá trình kiểmtra chứng thư số trực tuyến Nó được cấp tên miền là ocsp.hvktmm.vn
II.5 Cài đặt dịch vụ công bố chứng thư số theo thư mục – Repositores
Dịch vụ công bố chứng thư số trực tuyến theo cây thư mục xây dựng trên hệđiều hành CentOS5.5 cùng với bộ phần mềm OpenLDAP phiên bản 3.2 Hệthống này được cấp tên truy cập là ocsp.hvktmm.vn
II.6 Cấp một chứng thư số cho web site để tạo https.
Web site yêu cầu một chứng thư số tới SubCA1 để sử dụng giao thức httpscủa website Trang web gửi yêu cầu là http://hvktmm.vn đang sử dụngApache làm web server cho nó
Trang 28II.7 Cài đặt dịch vụ cấp dấu thời gian.
Máy chủ cấp dấu thời gian được đặt ở một mạng khác ngoài mạng của hệthống PKI Có tên miền truy cập là http://tsa.hvktmm.vn Sử dụng hệ điềuhành CentOS 5.5 và bộ phần mềm OpenTSA để cung cấp dịch vụ timestamp
Do mô hình giả lập xây dựng trong Vmware do vậy không lấy được giờ từ vệtinh nên mặc định dấu thời gian sẽ lấy giờ trên chính máy local của TSA
III Quá trình cài đặt
III.1 Cài đặt RootCA
RootCA được xây dựng trên hệ điều hành CentOS, với các thành phầncần thiết như: apache, perl, openca-tools, openca-base, và một số thư viện cầnthiết cho việc cài đặt Khi cài đặt gói openca-base chúng ta sẽ chỉ thực hiệnchế độ install-offline Sau đây là các bước cài đặt OpenCA cho RootCA:B1: Cài các gói cần thiết
B2: Tiến hành xả nén và cài openca-tool
B3: Trước khi cài OpenCA ta phải tạo một cơ sở dữ liệu và tài khoản để làm nơi lưu dữ liệu cho các chứng thư và khóa sẽ lưu vào đó sau này
Trang 29Tiếp theo ta phải tạo một tài khoản để gán quyền quản lý dịch vụ pki sau này chạy Đây là bước cần thiết để thắt chặt an ninh cho RootCA Nó giúp cho hệ thống ít bị ảnh hưởng khi kẻ tấn công có được quyền điều khiển.
Ta phải patch lại biến môi trường đề cho phép câu lệnh configure có thể tìm được câu lệnh của openca-tool trong đường dẫn tuyệt đối
/opt/openca-tool/bin
B4: Tiến hành cài OpenCA
Vì phiên bản hiện tại vẫn còn lỗi nên phải patch lại Tải các file sau về:
Trang 30Tiếp theo là copy các file đó vào nơi vừa cài OpenCA sau đó restart lại dịch vụ.
Đến đây đã hoàn thành xong bước cài đặt OpenCA Bây giờ sẽ phải cấu hình cho nó Truy cập vào https://rootca.hvktmm.vn/pki/ca để vào mục quản trị của nó
Hình 10: Trang quản lý PKI
Trong mục PKI Init & Config chúng ta thực hiện việc khởi tạo cơ sở dữ liệu, khởi tạo khóa riêng cho CA, tạo chứng chỉ CA , …
Hình 11: Khởi tạo chứng thư số
Trang 31Hình 12: Khởi tạo cơ sở dữ liệu
Khởi tạo cơ sở dữ liệu: Bước này sẽ tạo ra cơ sở dữ liệu dựa vào các
tham số đã thiết lập trong quá trình cài đặt openca Nếu đã có 1 cơ sở dữliệu trước đó thì ta có thể chọn Upgrade Database để nâng cấp cơ sở dữliệu, hoặc Re-init Database để khởi tạo lại cơ sở dữ liệu ( lưu ý: nếu chọnthiết lập này sẽ làm mất cơ sở dữ liệu hiện có )
Tạo khóa bí mật cho CA: Bước này thực hiện sinh khóa bí mật cho CA.
Để thực hiện việc sinh khóa bí mật chúng ta phải chọn thuật toán khóa,thuật toán mã hóa khóa và độ dài của khóa
Hình 13: Thiết lập chế độ khóa
Sau khi chọn xong các thuật toán và độ dài khóa, hệ thống sẽ sinh ra 1
Trang 32khóa bí mật cho CA như hình dưới đây Hoặc có thể xem lại khóa được
/opt/pki/var/openca/crypto/keys/cakey.pem ( /opt/pki/ là thư mục càiđặt OpenCA được thiết lập trong quá trình cài đặt )
Hình 14: Kết quả khóa riêng
Tạo yêu cầu cấp chứng chỉ cho CA: Sau khi tạo khóa bí mật cho CA
xong, chúng ta tạo 1 yêu cầu xin cấp chứng chỉ cho CA
Hình 15: Thiết lập thông tin về hệ thống rootCA
Trang 33Hình 16: Khuôn dạng chứng thư của RootCA
Hình 17: Tự ký lên chữ ký số tạo RootCA
Serial Number: số seri của chứng chỉ Do đây là chứng chỉ đầu tiên cấp
cho CA nên chúng ta để Serial Number là 00
Chứng thư số Validity: Thời hạn sử dụng chứng chỉ, mặc định là 730
ngày (2 năm) Chúng ta có thể thay đổi giá trị này tùy theo nhu cầu sửdụng hệ thống
Extensions: Phần mở rộng, để ký chứng chỉ cho CA, chúng ta lựa chọn
Self Signed CA Với lựa chọn này hệ thống sẽ tự ký vào yêu cầu này đểtạo ra chứng chỉ CA cho nó
Sau khi lựa chọn xong hệ thống sẽ tạo chứng chỉ như hình dưới đây.Chúng ta cũng có thể xem lại chứng chỉ tại/opt/pki/var/openca/crypto/certs/00.pem