1.2.3.1 Định nghĩa
Một chữ ký số hoặc lược đồ chữ ký số [12] là một lược đồ toán học để chứng minh định danh người gửi của một thông báo hoặc tài liệu số. Một chữ ký số hợp lệ cho phép bên gửi chứng minh với bên nhận rằng tin nhắn do chính mình tạo ra, gửi đến và không bị thay đổi nội dung trong quá trình truyền. Chữ ký số được sử dụng phổ biến để phân phối phần mềm, giao dịch tài chính, và trong trường hợp khác, nơi mà điều quan trọng là để phát hiện giả mạo và sự can thiệp.
18
Chữ ký số thường được sử dụng để thực hiện chữ ký điện tử, một thuật ngữ rộng hơn mà đề cập đến bất kỳ dữ liệu điện tử, trong đó mang đến ý nghĩa của một chữ ký, nhưng không phải tất cả chữ ký điện tử sử dụng chữ ký số. Trong một số quốc gia, bao gồm Hoa Kỳ, và các thành viên của Liên minh châu Âu, chữ ký điện tử có ý nghĩa pháp lý. Tuy nhiên, pháp luật liên quan đến chữ ký điện tử luôn luôn không rõ ràng cho dù đó là mật mã số chữ ký theo nghĩa được sử dụng ở đây, để định nghĩa pháp lý, và như vậy tầm quan trọng của chúng.
Chữ ký số là một ứng dụngcủa mật mã không đối xứng. Đối với thông tin được
gửi thông qua một kênh không bảo mật, việc triển khai chữ ký số một cách đúng đắn làm cho người nhận tin rằng tin nhắn được gửi bởi người gửi. Chữ ký số tương đương với chữ ký viết tay truyền thống ở nhiều khía cạnh; việc triển khai chữ ký số làm cho việc giả mạo khó hơn so với kiểu viết tay. Đề án chữ ký số theo nghĩa được sử dụng ở đây là dựa vào mã hóa, và phải được thực hiện có hiệu quả. Chữ ký số cũng có thể cung cấp không thể thoái thác, nghĩa là người ký không phải bồi thường những thông báo họ không ký vào, trong khi cũng đòi khóa riêng của họ vẫn còn bí mật; hơn nữa, một số đề án chống thoái thác đưa ra một nhãn thời gian cho chữ ký số, do đó ngay cả khi khoá bí mật bị lộ, chữ ký là vẫn hợp lệ. Những thông báo điện tử được ký là bất cứ điều gì có thể được biểu diễn như một xâu bit: ví dụ bao gồm thư điện tử, hợp đồng, hoặc một tin nhắn được gửi qua một số giao thức mật mã khác.
1.2.3.2 Giải thuật chữ ký số
Giải thuật chữ ký số [13] (Digital Signature Algorithm, viết tắt DSA) là chuẩn của chính phủ Mỹ hoặc FIPS cho các chữ ký số. Giải thuật này được đề nghị bởi Viện các tiêu chuẩn và công nghệ quốc gia (NIST) vào tháng 8/1991 để sử dụng trong chuẩn chữ ký số (DSS), được chỉ ra trong FIPS 186, được chấp nhận năm 1993. Một sửa đổi nhỏ được đưa ra năm 1996 trong FIPS 186-1, chuẩn được mở rộng hơn năm 2000, được xem như FIPS 186-2.
Giải thuật chữ ký số gồm ba giải thuật chính là :
- Giải thuật tạo khóa bằng việc lựa chọn khóa bí mật gần ngẫu nhiên nhất từ
một tập có thể của các khóa bí mật. Giải thuật cho ra khóa bí mật và khóa công khai tương ứng.
- Giải thuật ký, đưa vào thông báo và khóa bí mật, tạo ra chữ ký.
- Giải thuật xác thực chữ ký: đưa vào thông báo, khóa công khai và chữ ký,
19
Hình 11 Quá trình ký và xác thực chữ ký số
Hai thuật toán đầu là bắt buộc. Đầu tiên, một chữ ký được tạo ra từ một thông báo cố định và khóa riêng cố định nên xác minh tính xác thực của thông báo bằng cách sử dụng khóa công khai tương ứng. Thứ hai, không thể thực hiện việc tính toán để tạo ra một chữ ký hợp lệ cho bên không có khóa riêng.
Trong hệ thống gán nhãn thời gian đơn giản [4], chữ ký số được TSA sử dụng để ký vào chứng nhận mà nó gửi cho người dùng. Nhờ việc sử dụng chữ ký số, người dùng có thể xác định được chứng nhận là do TSA cấp .
Trong thực tế, Electronic Time-Stamping (e-TS) [10] và e-timestamp [11] của Digistamp Inc là sự kết hợp giữa kỹ thuật băm và kiến trúc khóa công khai (Public Key Infastructure – PKI). Như hình dưới, client sử dụng hàm băm SHA-256 để tạo ra dấu văn tay (fingerprint) và gửi nó đến TSA. Digistamp sử dụng chương trình tạo timestamp bảo mật để thêm thời gian và ký vào bản ghi sử dụng khóa bí mật của nó. Đề án này có thể trả lời rõ ràng cho câu hỏi “ai” và “cái gì” của quá trình xác thực nhưng câu trả lời “khi nào” không được chấp nhận vì phụ thuộc vào mức độ bảo mật của khóa.
20
Hình 12 Sử dụng chữ ký số trong hệ thống e-timestamp
Giao thức liên kết có thể giải quyết vấn đề này bằng việc kiểm tra chắc chắn rằng một yêu cầu nhãn thời gian đã được liên kết với các nhãn khác đến trước và sau nó, do đó yêu cầu hay thậm chí là fingerprint gửi đến từ client được nối và được băm với đối tượng bên cạnh nó theo thứ tự mà các yêu cầu đến.
1.2.4 Nguồn thời gian – Time Source
Để hữu ích thì hệ thống gãn nhãn phải có thời gian được công nhận bởi tất cả mọi dùng. Để thực hiện việc này, [3] đưa ra giao thức NTP (Network Time Protocol)để đồng bộ hóa các đồng hồ của mỗi máy tính. Belnet cung cấp dịch vụ NTP.
Giao thức thời gian mạng - Network Time Protocol ( NTP version 3, RFC 1305) ,là một giao thức phức tạp cho phép hệ thống có thể liên tục đồng bộ đồng hồ của nó chống lại thời gian của nhiều server ( bảo vệ chống lại sự hỏng hóc của server trong thời gian ngắn), với sự điều chỉnh cho độ trễ của mạng và sự xê dịch của đồng hồ. Mục đích của nó là đồng bộ hóa các máy tính với nhau và với tham chiếu chung – Universal Time, Coordinated – thông qua Internet.
NTP cho phép máy tính kết nối với mạng Internet có thể biết với độ chính xác đo được thời điểm hiện tại là mấy giờ. Dịch vụ thời gian này được cung cấp trên mạng Internet bởi các trạm làm việc và các router trên khắp thế giới.
21
Chƣơng 2. MỘT VÀI HỆ THỐNG GÁN NHÃN THỜI GIAN
2.1 Hệ thống trên lý thuyết 2.1.1 Hệ thống đơn giản 2.1.1 Hệ thống đơn giản
Thiết kế này được trình bày trong [4]. Giải pháp đơn giản nhất cho hệ thống timestamp là sử dụng bên tin cậy thứ ba, đó là Time Stamp Authority (TSA) . TSA mở rộng mỗi yêu cầu với ngày và thời gian hiện tại và ký vào kết quả để tạo ra timestamp.Thiết kế này sử dụng hàm băm để nén văn bản gửi tới TSA. Việc này cho phép lưu trữ bản gốc dữ liệu một cách bảo mật, làm giảm băng thông và nơi lưu giữ cần thiết, làm tăng hiệu quả. Hệ thống này được xây dựng sử dụng hàm băm mật mã và nguồn thời gian đã được giới thiệu ở các chương trước .
Quá trình gán nhãn hoạt động như sau:
- Client C gửi định danh và giá trị băm của văn bản (X) cần gán nhãn lên
Server TSA ( Time-Stamping Authority) : client gửi IDc , h(X).
- TSA gửi lại chứng nhận timestamp T=SK(IDC, h(X) , n , t), trong đó n là số
thứ tự của chứng nhận, t là ngày và thời gian hiện tại, SK là chữ ký điện tử
của TSA.
- Client nhận được chứng nhận và kiểm tra xem nó có phải được ký bởi TSA
hay không, chứng nhận đó bao gồm giá trị băm của văn bản client muốn gán nhãn và thời gian chính xác.
Quá trình xác thực tương tự như quá trình gán nhãn, văn bản cũng được băm ra và kết hợp với time stamp có được từ quá trình gán nhãn để xác thực xem văn bản hợp lệ hay không theo các bước sau:
22
- Kiểm tra chữ ký điện tử của chứng nhận có đúng là của TSA tương ứng hay
không.
- Kiểm tra giá trị băm h(X) có tương ứng với văn bản X hay không.
Ưu điểm:
- Thiết kế đơn giản.
- TSA không phải lưu trữ bản ghi nào về các tài liệu đã được gán nhãn
Nhược điểm:
- Người dùng phải tin tưởng TSA tuyệt đối và không có gì đảm bảo là TSA sẽ
không sản xuất nhãn thời gian giả.
Chính vì vậy tôi tập trung vào nghiên cứu hệ thống gán nhãn dựa trên việc kết nối các nhãn thời gian được cấp bởi TSA lại với nhau. Đó là hệ thống dựa trên gia thức liên kết.
2.1.2 Hệ thống dựa trên giao thức liên kết
Thiết kế này được trình bày trong [3], hệ thống được chia ra làm ba phần: bên client, bên server và bên xác thực.
Bên Client: Người dùng có 1 phần mềm để giúp họ thực hiện nhiệm vụ. Client chọn văn bản mà nó muốn gán nhãn thời gian. Văn bản này bao gồm hầu hết mọi thứ : text file, sound file, image, video, … Phần mềm đó tạo ra 1 luồng dữ liệu tạm thời bao gồm giá trị băm của văn bản với hàm băm SHA-1 được theo sau bởi giá trị băm của các văn bản tương tự với hàm băm RIPEMD-160. Bằng cách tạo ra sự bắt buộc này, chúng ta chắc chắn rằng yêu cầu đủ ngắn và tránh các câu hỏi của việc kiểm tra nội dung chứa bên trong (về mặt riêng tư). Yêu cầu được gửi đến TSA, tại đây nó được thực thi và gửi lại chứng nhận thời gian (time certificate).
Bên server (TSA):
- Server thực thi theo vòng. Tất cả các vòng đều có khoảng thời gian giống
nhau ( bất kì slot time hợp lý nào cũng lên đến 1s) mà được cố định từ trước. Server sẽ bắt đầu thực thi các yêu cầu ngay khi nó nhận được chúng. Nó sẽ đưa ra giá trị cho mỗi vòng và cũng được kết nối với vòng trước. Với khái niệm này, cần thiết cho TSA đợi hết vòng để đưa ra nhãn thời gian cho các văn bản thuộc vòng này. Thời gian lớn nhất cho câu trả lời của TSA và giới hạn thời gian của vòng sẽ được định nghĩa lúc thực hiện. Cho phép TSA có
23
độ trễ trong việc đưa ra timestamp, nhưng nó nhất định phải gán nhãn thời gian cho văn bản ở vòng phù hợp với slot time bao gồm thời gian đến của yêu cầu từ client.
- Server lấy thời gian ở một nguồn đáng tin cậy ( trình bày ở chương 5).
- TSA xây dựng đồng thời hai cây nhị phân khi nó nhận được yêu cầu. Một
cây chứa giá trị băm của văn bản sử dụng hàm băm SHA-1 và cây còn lại chứa giá trị được tạo ra bởi hàm băm RIPEMD-160.
Hình 14 Cây Merkle với 7 yêu cầu đƣợc gửi
- Tiếp đó giá trị gốc (HVi) sẽ được nối với giá trị vòng trước đó (SHVi-1) để
lấy ra giá trị vòng hiện tại (SHVi).
24
- Giá trị SHVi được lưu bởi TSA. TSA sẽ đánh dấu vào chúng và đặt trên
online server. Phải chắc chắn rằng chỉ có TSA mới có thể viết hoặc sửa giá trị trên đó. Các giá trị đã được đánh dấu để ngăn chặn tấn công trong suốt quá trình truyền thông giữa client hoặc verifier với online server. Đối với việc chứng minh, các giá trị vòng sẽ được đánh dấu đơn giản và tồn tại trực tuyến. Nhưng đối với version thực tế tin cậy của dịch vụ timestamping, ít nhất một vòng giá trị phải được xuất bản rộng rãi như là đã được giải thích trước cho mỗi ngày. Mục đích của việc này là cho phép bên xác thực có được giá trị mà TSA không thể sửa đổi sau khi sinh ra. Giá trị này phải được công bố rộng rãi để làm cho nó không thể thay đổi được.
Bên xác thực: hệ thống này sử dụng bên thứ ba để xác thực nhãn thời gian có hợp lệ hay không. Giả sử bên xác minh có thể kiểm tra sự an toàn của chữ ký bên TSA. Khi bên xác minh kiểm tra tính hợp lệ của timestamp ban hành bởi TSA, nó sẽ kiểm tra chứng nhận. Nếu nó hợp lệ, bên xác thực sẽ tiếp xúc với dịch vụ trực tuyến để có được giá trị của vòng phù hợp với thời gian mà chứng nhận được đưa ra và so sánh nó với một trong những chứng nhận. Nếu bên xác thực tin rằng TSA thực sự trung thực , nó có thể kiểm tra giá trị cho vòng của bên thứ ba hoặc hỏi tất cả giá trị của vòng trong khoảng phù hợp giữa hai giá trị được xuất bản và kiểm tra rằng liên kết là hợp lệ.
Các bước thực thi của hệ thống:
25
1. h : SHA-1
h’ :RIPEMD-160
Client gửi yêu cầu (yij
h , yij h’ ) đến STA, với yij h = h(yij).
2. TSA tính cây và các giá trị cho vòng được giải thích trong phần trên.
3. TSA đánh dấu và lưu giá trị HVi, SHVi (phù hợp với h) và HVi’, SHVi’ (phù
hợp với h’) cho vòng ràng buộc bởi số i và thời gian ti của vòng.
4. TSA công bố các giá trị đã đánh dấu HVi, SHVi và HVi’, SHVi’ với nhau và
với các thông tin ràng buộc của chúng cho vòng trên site trực tuyến.
5. TSA gửi chứng nhận C cho client. Trong ví dụ, nếu yêu cầu của client là số
4 trong vòng , chứng nhận có dạng :
S là chữ ký cung cấp bởi TSA, ti là thời gian bắt đầu của vòng i. Có nghĩa là
văn bản đã được đăng ký giữa ti và ti+1. Giá trị y và y không cần thiết trong chứng nhận bởi vì chúng có thể lấy ra từ văn bản đã được chứng nhận nhưng nó hơi thừa, điều đó rất hữu dụng cho việc thực thi.
6. Client kiểm tra chứng nhận của nó. Đầu tiên là kiểm tra chữ ký, sau đó xây
lại hai cây, tính toán vòng giá trị SHVi và SHVi’ và so sánh nó với giá trị chứa trong chứng nhận. Sau đó nó có thể hỏi online server để xác thực vòng giá trị ở trong chứng nhận.
7. Client yêu cầu bên xác thực là anh ta đã tạo ra văn bản này tại thời điểm phù
hợp với vòng i. Bên xác thực (verifier) nói chuyện với client về cái chứng nhận của văn bản.
8. Client gửi yêu cầu chứng nhận tới bên xác thực cũng như nhận dạng của
TSA.
9. Bên xác thực làm việc xác minh như client trong bước 6.
10.Sau đó bên xác thực hỏi online server về các giá trị của vòng i: ti, SHVi,
SHVi’ và tất cả giá trị cần thiết xây lại chuỗi giữa hai giá trị được công bố
26
11.online server gửi vòng các giá trị SHV, SHV’ và giá trị HV, HV’ cần thiết
để xây dựng lại cái chuỗi mà ít nhất giá trị đầu và cuối đã được công bố.
12.Bên xác thực kiểm tra giá trị của vòng i có trùng với các giá trị trong chứng
nhận hay không, và xây dựng lại chuỗi để xác minh tính toàn vẹn của TSA.
13.Cuối cùng, bên xác thực gửi kết quả của việc xác minh cho client.
Bên xác thực nên có lựa chọn cho việc chỉ kiểm tra chứng nhận đối với một hàm băm. Việc chỉ kiểm tra một hàm băm trong hai hàm để nâng cao tốc độ bởi vì nó chỉ cần kiểm tra phần của chứng nhận sử dụng một hàm băm khi cái kia bị phá hoại.
2.1.3 Bảo mật của hệ thống liên kết
Việc sử dụng song song hai hàm băm giúp cho vấn đề an toàn trở nên tốt hơn. Nếu một hàm băm bị hỏng, bất cứ người nào cũng có thể xây cây với các giá trị mà hắn chọn và với giá trị gốc bằng với giá trị của cây trước. Nói cách khác, nếu một hàm băm bị hỏng, bất cứ người nào cũng có thể tạo ra chứng nhận hợp lệ cho giá trị mà chưa bao giờ được ban hành của timestamp. Tuy nhiên kẻ tấn công phải nghiên cứu STA để có được chữ ký của chứng nhận.
Một biến thể khác của tấn công, rất đơn giản để thực hiện, đó là kẻ tấn công tìm kiếm một văn bản với giá trị băm tương tự. Chính vì thế, chứng nhận cho văn bản đầu