Người dùng chọn file cần xác thực nhãn và file chứng nhận. Xảy ra hai trường hợp: xác thực khi chưa kết thúc vòng và xác thực sau khi kết thúc vòng.
Hình 19 Giao diện của client khi xác thực 3.1.2.1 Khi chƣa kết thúc vòng
Client sẽ băm file cần xác thực và so sánh giá trị băm này với giá trị băm được lưu trong file chứng nhận tạm thời. Nếu hợp lệ thì client gửi lên server file này để xác thực.
32
Server nhận được thông tin về file chứng nhận thì đối chiếu thông tin của file này với các bản ghi được lưu của vòng. Nếu thông tin trùng khớp thì gửi thông báo hợp lệ cho client.
3.1.2.2 Sau khi kết thúc vòng
Khi kết thúc vòng thì file chứng nhận tạm thời được cấp lúc trước không còn sử dụng được nữa. Server sẽ gửi email cho người dùng kèm theo chứng nhận mới ( sẽ trình bày ở phần sau). Người dùng sử dụng chứng nhận mới này để xác thực file được gán nhãn khi cần. Quá trình xác thực cũng tương tự như trước khi kết thúc vòng.
3.1.3 Server thực thi theo vòng
Khi kết thúc vòng, server sử dụng file xml lưu thông tin về các timestamp đã được cấp trong vòng để xây dựng cây merkle với mỗi timestamp là một node lá. Chính vì thực thi theo vòng nên phải tính toán khoảng thời gian phù hợp cho một vòng. Nếu thời gian của vòng quá ngắn thì số lượng node của cây sẽ ít và có thể còn không có node nào cả. Ngược lại nếu vòng quá lâu thì số lượng node sẽ quá nhiều, quá trình dựng cây và duyệt cây sẽ tốn tài nguyên, đường dẫn xác thực xây dựng sẽ dài. Chính vì những lý do trên nên thông thường ta chọn thời gian của một vòng là một tuần lễ.
Cây xây dựng được (tham khảo chương 1) dùng để tạo file chứng thực mới. Mỗi một lá của cây sẽ khởi tạo một file và được gửi đến người dùng thông qua email. Phần đầu file này là ProofRecord chứa thông tin bao gồm: hàm băm, id, giá trị băm, timestamp.
Hình 20 Proof record
Phần tiếp theo là Evidentiary Path, phần này chứa đường dẫn để xác thực timestamp. Đường dẫn này được xây dựng dựa trên cây merkle.
33
Hình 21 Cây Merkle và đƣờng dẫn xác thực
Như hình trên, đường dẫn xác thực cùa node n0 là tập {Auth0, Auth1, Auth2} và
Evidentiary Path có dạng như sau: <EvidentiaryPath> <Link> <DigestValue>Auth0</DigestValue> <Position>Right</Position> </Link> <Link> <DigestValue>Auth1</DigestValue> <Position>Right</Position> </Link> <Link> <DigestValue>Auth2</DigestValue> <Position>Right</Position> </Link> </EvidentiaryPath>
Phần cuối cùng là witness record chứa giá trị băm của vòng, chính là node gốc của cây merkle trong vòng, và các thông tin khác về công bố giá trị này: số thứ tự của
34
vòng, ngày được công bố. Server cùng lưu các thông tin về vòng tại server để phục vụ cho quá trình xác thực.
Hình 22 Witness Record
Bây giờ tôi sẽ trình bày quá trình thực thi khi người dùng sử dụng file này để xác thực:
- Client băm file cần xác thực, đem giá trị băm nhận được so sánh với các
thông tin trong trường proofRecord. Nếu trùng khớp thì quá trình tiếp tục.
- Sử dụng tất cả giá trị trong trường proofRecord kết hợp với giá trị băm của
file ban đầu tạo ra giá trị băm đầu tiên. Sử dụng EvidentiaryParth để tính giá trị băm cuối cùng, nếu đường dẫn có vị trí là “right” thì kết hợp như sau “giá trị băm đưa vào” || “giá trị băm của đường dẫn”. Ngược lại nếu đường dẫn có vị trí là “left” thì kết hợp như sau “giá trị băm của đường dẫn” ||”giá trị băm đưa vào”. Băm giá trị nhận được sau khi kết hợp và sử dụng nó cho đường dẫn tiếp theo. Lặp lại quá trình này cho đến khi hết đường dẫn ta nhận được giá trị băm cuối cùng.
- So sánh giá trị băm cuối cùng với WitnessRecord, nếu trùng khớp thì gửi
thông tin về vòng và giá trị băm này lên server để kiểm chứng. Nếu server xác nhận giá trị vòng là hợp lệ thì qua trình xác thực kết thúc.
3.1.4 Định dạng XML sử dụng trong hệ thống cài đặt
XML (viết tắt từ tiếng Anh eXtensible Markup Language, "Ngôn ngữ Đánh dấu
Mở rộng") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác. Đây là một tập con đơn giản của SGML, có khả năng mô tả nhiều loại dữ liệu khác nhau. Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với Internet. Các ngôn ngữ dựa trên XML (thí dụ: RDF, RSS, MathML, XHTML, SVG, GML và cXML) được định nghĩa theo cách thông thường, cho phép các chương trình sửa đổi và kiểm tra hợp lệ bằng các ngôn ngữ này mà không cần có hiểu biết trước về hình thức của chúng.[15]
35 Cú pháp XML cơ bản cho một phần tử là
<tên thuộc_tính="giá trị">nội dung</tên>
Dưới đây là ví dụ về một công thức nấu ăn viết bằng XML: <?xml version="1.0" encoding="UTF-8"?>
<công_thức_nấu_ăn tên="bánh mì" thời_gian_chuẩn_bị="5 phút"
thời_gian_nấu="3 tiếng">
<title>Bánh mì cơ bản</title>
<nguyên_liệu lượng="3" đơn_vị="ca">Bột mì</nguyên_liệu> <nguyên_liệu lượng="7" đơn_vị="gram">Men</nguyên_liệu>
<nguyên_liệu lượng="1.5" đơn_vị="ca"
trạng_thái="ấm">Nước</nguyên_liệu>
<nguyên_liệu lượng="1" đơn_vị="thìa cà phê">Muối</nguyên_liệu> <chỉ_dẫn>
<bước>Trộn tất cả các nguyên liệu với nhau và nhào kĩ</bước>
<bước>Phủ một mảnh vải, ủ một tiếng đồng hồ trong phòng
ấm.</bước>
<bước>Nhào lại, đổ vào khuôn, cho vào lò nướng.</bước> </chỉ_dẫn>
</công_thức_nấu_ăn>
3.2. Kết quả đạt đƣợc và đánh giá 3.2.1 Kết quả đạt đƣợc
Qua toàn bộ quá trình nghiên cứu, tôi đã đạt được một số kết quả có ý nghĩa. Trước hết, tôi đã có những hiểu biết tổng thể về các hệ thống gán nhãn thời gian: nguyên tắc hoạt động, các quy trình và công nghệ được sử dụng trong hệ thống gán nhãn …
Tôi đã xây dựng thành công hệ thống gán nhãn thời gian dựa trên giao thức liên kết sử dụng cây merkle. Hệ thống thực hiện được các yêu cầu cơ bản đặt ra: gán nhãn thời gian cho file (Hình 18), xác thực nhãn thời gian của file (Hình 19), xem các giá trị đã được công bố (Hình 23).
36
Hình 23 Các giá trị của vòng đƣợc công bố 3.2.2 Đánh giá
Hệ thống gán nhãn mà tôi xây dựng đã đáp ứng một số chức năng cơ bản như gán nhãn thời gian cho file bất kỳ, xác thực file khi chưa kết thúc vòng, tạo chứng nhận mới và cuối cùng là xác thực chứng nhận khi kết thúc vòng.
Hiện tại, bên cạnh những việc đã làm được, hệ thống vẫn còn một vài khiếm khuyết như sau: đường truyền giữa client với server chưa bảo mật nên dễ bị tấn công, các file chứng nhận chưa được mã hóa,việc gửi email mất khá nhiều thời gian và tài nguyên, cơ sở dữ liệu là file xml nên khó quản lý…
3.2.3 Hƣớng nghiên cứu
Trong tương lai, tôi mong muốn xây dựng một hệ thống gán nhãn thời gian hoàn chỉnh, làm tăng mức độ an toàn của hệ thống trước các loại hình tấn công đang phổ biến đối với hệ thống gán nhãn, cải tiến giao diện cho thân thiện hơn với người sử dụng, cải tiến cơ sở dữ liệu nhằm đáp ứng việc thực thi yêu cầu đến máy chủ với số lượng lớn.
Do thời gian có hạn nên các chức năng của chương trình còn khá hạn hẹp, nhưng hướng nghiên cứu cải tiến chương trình khá đa dạng, phong phú. Đó là điều tôi mong muốn thực hiện trong tương lai.
37
KẾT LUẬN
Xây dựng hệ thống gán nhãn thời gian là một đề tài nghiên cứu khá mới ở Việt Nam nhưng không còn xa lạ đối với thế giới. Các hệ thống gán nhãn thời gian trên thế giới ngày càng được hoàn thiện và đáng tin cậy hơn. Những hệ thống này đều dựa trên ba thiết kế cơ bản là đơn giản, liên kết và phân tán. Mỗi thiết kế đều có những ưu điểm riêng, song tôi nhận thấy việc sử dụng giao thức liên kết bằng cây Merkle có ưu điểm vượt hơn các phương pháp khác. Chính vì vậy tôi đã chọn thiết kế hệ thống gán nhãn dựa trên giao thức liên kết sử dụng cây Merkle.
Trong khóa luận này, tôi đã trình bày tổng quan về hệ thống gán nhãn thời gian,các phương thức kỹ thuật và các thuật toán được sử dụng trong hệ thống, giới thiệu về các hệ thống trên lý thuyết cũng như trong thực tế… Nhờ nghiên cứu về cơ sở lý thuyết này mà bước đầu tôi đã xây dựng được một hệ thống gán nhãn thời gian dựa trên gia thức liên kết sử dụng cây Merkle.
Trên đây là những kết quả bước đầu mà nghiên cứu của tôi đã đạt được. Trong tương lai, tôi mong muốn xây dựng một hệ thống gán nhãn hoàn thiện hơn, nâng cao độ tin cậy cũng như bảo mật của hệ thống.
38
CÁC TÀI LIỆU THAM KHẢO
[1] Duc-Phong LE, Université de Pau et des Pays de l’Adour. A Secure Round-based Timestamping Scheme with Absolute Timestamps, page 1.
[2] Boris Ederov. Merkle Tree Traversal Techniques. Bachelor Thesis, Darmstadt
University of Technology, April 2007 ,pages 12- 15.
[3] B. Preneel, B. Van Rompay, J.-J. Quisquater, H. Massias, J. Serret Avila. Design of a TimeStamping System, WP3, Technical Report, pages 4-12.
[4] Bart Van Rompay, Bart Preneely, Joos Vandewalle .The Digital TimeStamping Problem, 1999, page2-3
[5] Bart Van Rompay. Analysis and Desigbn of Cryptographic Hash Functions, MAC
Algorithms and Block Ciphers, Juni 2004, page 26, pages 61, 114.
[6] Cristian Marinescu , Nicolae T¸ ˘apus. A Survey of The Problems of Time- Stamping or Why It Is Necessary to Have Another Time-Stamping Scheme,
Procceedings of the 25th IASTED International Multi-Conference Software
Engineering, Feb 13-15, 2007, Innsbruck, Austria. Pages 2-3.
[7] Michael Thimblin, NagaSree Chandu Kamisetty, Padmanabhan Raman, Anupama
Paila. Implementation of an Evidentiary Record Validation Utility and Security
Analysis for Surety’s AbsoluteProofSM .
[8] Michael T. Goodrich, Roberto Tamassia, Andrew Schwerin. Implementation of an Authenticated Dictionary with Skip Lists and Commutative Hashing, 2001, pages 1-8.
[9] Ralph Merkle, “Secrecy, Authentication and Public Key Systems/ A certified
digital signature”, Ph.D. dissertation, Dept. of Electrical Engineering, Stanford University, 1979, page 47.
[10] Electronic Time-Stamping (e-TS) homepage
http://www.e-timestamping.com/eng/about/depth/about.html
[11] e-timestamp homepage http://www.digistamp.com/timestamp.htm
[12] Wikipedia, Digital Signature http://en.wikipedia.org/wiki/Digital_signature
[13]Wikipedia, Digital Signature Algorithm
http://vi.wikipedia.org/wiki/Gi%E1%BA%A3i_thu%E1%BA%ADt_k%C3%BD_s%E 1%BB%91
39
[14] wikipedia, Hàm Băm http://vi.wikipedia.org/wiki/H%C3%A0m_b%C4%83m