Luận văn Nghiên cứu và xây dựng một hệ thống gán nhãn thời gian

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.

pdf48 trang | Chia sẻ: lylyngoc | Lượt xem: 2763 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu và xây dựng một hệ thống gán nhãn thời gian, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
. Chữ ký số được sử dụng trong hệ thống để ký vào nhãn thời gian cấp phát cho người dùng. Việc sử dụng chữ ký số làm tăng tính an toàn, tránh việc làm giả nhãn thời gian. 4 Nguồn thời gian dùng để đồng bộ hóa thời gian của các yêu cầu gán nhãn được gửi đến TSA, dùng trong việc liên kết các nhãn thời gian đã được cấp phát theo thứ tự thời gian. 1.2 Các công nghệ sử dụng trong hệ thống gán nhãn thời gian 1.2.1 Hàm băm mật mã học – cryptographic hash function 1.2.1.1 Định nghĩa hàm băm Là hàm sinh ra các giá trị băm tương ứng với mỗi khối dữ liệu (có thể là một chuỗi kí tự, một đối tượng, v.v...). Giá trị băm đóng vai gần như một khóa để phân biệt các khối dữ liệu, tuy nhiên, người ta chấp hiện tượng trùng khóa hay còn gọi là đụng độ và cố gắng tìm cách 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) [14]. 1.2.1.2 Định nghĩa hàm băm mật mã học – cryptographic hash function Là một hàm băm với yêu cầu là giá trị băm nhận được là duy nhất với mỗi thông điệp đầu vào. Điều đó có nghĩa là không khả thi khi tìm những thông điệp mà khi băm chúng, ta nhận được cùng kết quả [5]. 1.2.1.3 Tính chất hay yêu cầu đối với hàm băm mật mã - Có thể áp dụng đối với thông báo M có độ dài bất kỳ, kết quả H(M) có độ dài cố định. - H(M) tính được dễ dàng với bất kỳ M nào. - Tính một chiều : từ h rất khó để tính được M sao cho H(M) = h. 1.2.1.4 Giới thiệu về các hàm băm chuyên dụng trong lớp MDx Các hàm băm trong nhóm này đều có ý tưởng thiết kế tương tự nhau [5]. Hàm băm đầu tiên trong nhóm là giải thuật MD4, được đề xuất bởi R.Rivest vào năm 1990. Mặc dù MD4 không phải là một hàm băm an ninh nhưng có một số giải thuật khác có nguồn gốc từ MD4 với sự cải thiện về sức mạnh, người ta gọi đó là MDx-class. Trong MDx-class bao gồm giải thuật MD5 ( một thiết kế khác của Rivest), giải thuật HAVAL ( được đề xuất bởi một nhóm các nhà nghiên cứu ở Australia), giải thuật SHA ( hàm băm chuẩn U.S của NIST ), và giải thuật RIPEMD ( ban đầu được phát 5 triển trong framework của dự án European RIPE ). Các hàm băm này được sử dụng rỗng rãi nhất hiện nay. Hình 1 Lịch sử của MDx-class 1.2.1.5 Giải thuật MD5 Giải thuật MD4 và MD5 [5] đều được thiết kế bởi Rivest. Giải thuật MD5 được thiết kế như là một biến thể tăng cường của MD4. Giải thuật này tính ra giá trị băm dài 128 bit , vì vậy loạt các biến được chia thành 4 thanh ghi (A, B, C, D) 32 bit mỗi thanh. Thiết kế của MD5 tương tự như MD4 nhưng có một số thay đổi: - Hàm nén bao gồm 64 bước liên tiếp, chia ra thành 4 vòng ( MD4 chỉ có 48 bước và 3 vòng). - Việc thực hiện bước chỉ khác nhau nhỏ : mỗi bước bây giờ được thêm vào kết quả của bước trước. - Sự sắp xếp được áp dụng tại vòng 2 và vòng 3 khác với MD4. - Hàm Boolean ở vòng 2 được chuyển từ hàm đa số sang hàm lựa chọn ( khác với hàm lựa chọn dùng ở vòng 1). Một hàm Boolean mới được giới thiệu cho vòng 4. 6 - Mỗi bước bây giờ sử dụng hằng số thêm vào duy nhất (như vậy là có 64 hằng số). - Hắng số quay được thay đổi, các vòng khác nhau không bao giờ sử dụng cùng giá trị hằng số quay. Việc thực hiện bước của MD5 theo mẫu sau: A ←( A + fr(B, C, D) + Wj + Ur) << vs + B Hình 2 Thực thi bƣớc của MD5 Bốn bước liên tiếp cập nhật giá trị của thanh ghi A, D, C, B tương ứng, và việc này được lặp lại 4 lần trong một vòng. Mỗi thanh ghi được cập nhật 16 lần bởi hàm nén. 7 Tuy nhiên sau khi thực hiện 64 bước, hàm nén sử dụng các giá trị của thanh ghi ban đầu để thêm vào giá trị cuối cùng ( sau 64 bước). Kết quả là một loạt các biến đầu ra từ hàm nén. Tùy thuộc vào các giá trị ban đầu, hàm nén không thể đảo ngược . 1.2.1.6 Mô tả giải thuật SHA-1 Giải thuật SHA [5] được thiết kế bởi NSA và được công bố bởi NIST như là tiêu chuẩn liên bang FIPS 180 vào năm 1993. SHA là một hàm băm khác lấy cảm hứng tư MD4. Thiết kế của giới thiệu một thủ tục đặc biệt cho việc mở rộng khối thong điệp 16 từ đầu vào của hàm nén để tạo ra khối 80 từ. Nguyên tắc thiết kế của SHA không được công bố , tuy nhiên năm 1994 NIST công bố rằng lỗ hổng kỹ thuật được tìm ra ở SHA làm cho giải thuật kém an toàn hơn suy nghĩ ban đầu. Không có thêm chi tiết nào được công bố nữa, nhưng có một sự thay đổi nhỏ trong hàm băm SHA-, và tiêu chuẩn tương ứng FIPS 180-1. Vào năm 1998, F. ChaBaud và A. Joux tìm ra lý thuyết tấn công đụng độ đối với phiên bản ban đầu của SHA ( giải thuật này thường được gọi là SHA- 0). Phân tích của họ giúp thay đổi hàm băm SHA-1. Vào năm 2002, NIST cập nhật hàm băm tiêu chuẩn đến FIPS 180-2. Tiêu chuẩn mới này xác định, bên cạnh SHA-1, 3 hàm băm mới là SHA-256, SHA-384 và SHA- 512. Chúng có đầu ra có độ dài lớn hơn để cung cấp mức độ an ninh chống lại tấn công ngày sinh, tương tự như mức độ an ninh của thuật toán mã hóa khối AES với 128 bit, 192 bit và 256 bit độ dài khóa tương ứng. Vào năm 2004, một thong báo thay đổi được đưa vào trong tiêu chuẩn, xác định hàm băm SHA-224. Giải thuật SHA-1 tính toán kết quả băm dài 160 bit đối với thông điệp có độ dài nhỏ hơn 264 bit. Giải thuật có độ dài của từ là 32 bit, chính vì vậy chuỗi biến được chia thành 5 thanh ghi ( A, B, C, D, E) 32 bit mỗi thanh. Hàm nén làm việc với khối thông điệp 512 bit, khối được chia thành 16 từ 32 bit biểu diễn bởi Wj với j = 1, .., 15. Bên trong, hàm nén chia thành 80 bước liên tiếp. Một sự phân biệt nữa là việc chia vòng: nó có 4 vòng, mỗi vòng gồm 20 bước. Phép tính bước của SHA-1 theo mẫu sau: E ← E + fr(B, C, D) + A <<5 + Wj + Ur B ← B<<30 Mỗi bước tính giá trị mới cho 2 trong 5 thanh ghi. Trong trường hợp này ta xét đến bước cập nhật giá trị cho thanh ghi E và cũng quay giá trị của thanh ghi B một khoảng 30 bit về bên trái. Phép tính cập nhật giá trị cho thanh ghi E phụ thuộc vào 4 thanh ghi còn lại và theo : 8 - Từ mang thông điệp Wj với j ={0,1,..,79} - Hàm Boolean fr phụ thuộc vào vòng. - Hằng số thêm vào Ur phụ thuộc vào vòng. Hàm Boolean được sử dụng ở các vòng khác nhau trong hàm nén là hàm lựa chọn, đa số và exor. Hàm exor được sử dụng trong vòng 2 và 4. 16 từ đầu tiên Wj ( j = 0,1,…,15) bằng với khối thông điệp đầu vào của hàm nén. 64 từ còn lại Wj ( j = 16, …, 79) được tính bằng thủ tục sau cho thông điệp mở rộng: Wj = ( Wj-3 xor Wj-8 xor Wj-14 xor Wj-16) <<1 Sự khác biệt duy nhất giữa SHA-1 và SHA-0 trong công thức trên. SHA-0 không có quay 1 bit về bên trái. Hình sau biểu diễn việc tính bước trong SHA-1. 5 bước liên tiếp cập nhật giá trị cho thanh ghi E, D, C, B, A tương ứng và cung quay giá trị của thanh ghi B, A, E, D, C đi 30 bit vị trí sang bên trái. Sau 5 bước chuỗi biến được cập nhật hoàn chỉnh. Một vòng của hàm nén bao gồm bốn chuỗi của 5 bước. Mỗi thanh ghi được cập nhật 4 lân trong mỗi vòng và 16 lần trong hàm nén. Hình 3 Thực thi bƣớc của SHA-1 9 Tuy nhiên sau 80 bước , hàm nén sử dụng phép toán feed-forward để thêm các giá trị khởi tạo vào giá trị cuối. Kết quả là chuỗi biến đầu ra của hàm nén. Vì vậy hàm nén không bị nghịch đảo . 1.2.1.7 So sánh các hàm băm MD5 và SHA-1 trong lớp MDx Hàm băm MD5 cho kết quả băm là xâu 128 bit nên nó thực thi nhanh hơn hàm băm SHA-1 ( 160 bit kết quả) nhưng cũng chính vì thế nên nó yếu hơn SHA-1 khi bị tấn công brute force và tấn công nghịch đảo. Một đội nghiên cứu của Trung Quốc đã công bố tài liệu về các phương thức mà họ dùng để phá vỡ giải thuật băm SHA-1 và MD5 sử dụng hình thức tấn công tìm kiếm sự va chạm. Một dạng tấn công va chạm đòi hỏi phải tìm hai thông báo mà có cùng giá trị băm. Kiểu tấn công này thực sự tốn kém nhưng mà nó chỉ ra các điểm yếu của các giải thuật trên [7]. 1.2.2 Từ điển xác thực - Authenticated Dictionary 1.2.2.1 Giới thiệu Từ điển xác thực ( authenticated dictionary) là cấu trúc dữ liệu được sử dụng để duy trì tập các phần tử S, nó cho phép truy vấn và cập nhật tập S [8]. Trong hệ thống timestamp, từ điển xác thực gồm ba phần : nguồn đáng tin, đường dẫn đáng tin và người sử dụng. Nguồn (source) định nghĩa là một tập S hữu hạn phần tử tăng lên theo thời gian trong suốt quá trình chèn và xóa. Đường dẫn ( directory) duy trì một bản sao chép của tập S. Nó nhận nhãn thời gian cập nhật từ nguồn đồng thời với cập nhật thông tin xác thực, như việc đăng báo về việc cập nhật và những phần tử của tập hợp hiện tại. Người dùng thực hiện các truy vấn của thành viên trên tập S dưới dạng ”phần tử e có trong tập S không?”, nhưng thay vì liên hệ trực tiếp với nguồn, nó truy vấn đường dẫn. Đường dẫn cung cấp cho người dùng với câu trả lời đúng/sai để truy vấn đồng thời câu trả lời thông tin xác thực, để tiến hành chứng thực câu trả lời được lắp ráp bằng cách kết hợp các tài liệu được ký bởi nguồn. Người dùng sau đó xác minh chứng thực bằng cách duy nhất là tin vào nguồn và các thông tin được công bố về nguồn cho phép kiểm tra chữ ký của nguồn [8]. 10 Hình 4 Từ điển xác thực Có hai loại từ điển được dùng trong hệ thống gán nhãn là: - Sử dụng Merkle tree. - Sử dụng skip list. 1.2.2.2 Mục tiêu của thiết kế Thiết kế của từ điển xác thực hướng tới những mục tiêu sau: - Chi phí tính toán thấp: việc tính toán trong mỗi phần ( nguồn, đường dẫn, người sử dụng) nên đơn giản và nhanh. Việc sử dụng bộ nhớ bởi cấu trúc dữ liệu hỗ trợ cho việc tính toán phải nhỏ nhất có thể. - Hạn chế việc giao tiếp giữa các tầng: việc giao tiếp giữa nguồn và danh mục ( cập nhật thông tin xác thực) và giao tiếp giữa đường dẫn với người dùng ( trả lời thông tin xác thực) nên giữ nhỏ nhất có thể. - Mức độ an ninh cao: việc xác thực dữ liệu cung cấp bởi đường dẫn nên được kiểm chứng với mức độ tin cậy cao. 1.2.2.3 Từ điển xác thực sử dụng Merkle tree 1.2.2.3.1 Định nghĩa Merkle tree Trong [9] Merkle giới thiệu việc sử dụng cây nhị phân trong việc xác thực một lượng lớn khóa công khai với một giá trị đơn lẻ, cụ thể là giá trị gốc của cây. Đó là cách mà định nghĩa của cây Merkle được đưa vào sử dụng. Nó là một cây nhị phân hoàn chỉnh với k-bit giá trị liên quan đến mỗi node như giá trị của node là hàm băm của giá trị các node con của nó. 11 P là phép gán, nó gán tập của các node với tập xâu của chúng có độ dài k. Giá trị N cần được xác thực là ở lá thứ N của cây. Ta có thể chọn giá trị của lá tùy thích, nhưng thông thường là các giá trị của hàm băm mật mã học cần được xác thực. Trong trường hợp này các giá trị đó được gọi là tiền ảnh lá. Một lá có thể được chứng nhận với một giá trị root công khai được biết đến và đường dẫn xác thực của nó [2]. Hình 5 Cây merkle với 8 node lá 1.2.2.3.2 Đƣờng dẫn xác thực Gọi Authh là giá trị của node anh em có độ cao h trên đường từ lá đến root. Mỗi lá có độ cao 0 và hàm băm của 2 lá có độ cao 1, … Trong cách này, root có độ cao H khi cây có 2 H = N lá. Với mỗi lá thì đường dẫn xác thực là tập {Authh|0 ≤h≤H}. Vì vậy lá có thể được xác thực bằng cách: đầu tiên áp dụng hàm băm f cho lá và anh em Auth0, sau đó áp dụng f cho kết quả và Auth1, vì vậy tất cả đường đi đều tới root. Nếu tính được giá trị của root bằng với giá trị đã được công khai thì giá trị của lá được chấp nhận [2]. 1.2.2.3.3 Giải thuật tạo cây Khi xây dựng, mỗi giá trị node được xác định bằng giá trị của các lá bên dưới nó. Giải thuật này được gọi là TREEHASH . Khi thực hiện 2h+1 – 1 bước, nó chứa được tối đa h+1 giá trị băm. Giải thuật TREEHASH hợp nhất các giá trị của node ở cùng độ cao trước khi tính toán lá mới. Giải thuật TREEHASH(start,maxheight) [2] 1. Leaf = start; 12 Stack = empty; 2. Hợp nhất: nếu 2 node trên cùng của Stack có cùng độ cao Pop P( nright ) và P( nleft ) ra khỏi Stack Tính P( nparent ) = f ( P( nleft ) || P( nright ) ) Nếu độ cao của P( nparent ) = maxheight, đưa ra P( nparent ) Push P( nparent ) vào Stack và dừng lại. 3. Lá mới: Tính P( nl ) = LEAFCALC(leaf) Push P( nl ) vào Stack Tăng leaf 4. Quay lại bước 2. 1.2.2.3.4 Sử dụng Merkle tree trong hệ thống gán nhãn Trong hệ thống Surety [7], hai cây merkle được sử dụng để lưu trữ các giá trị băm của văn bản và xây dựng đường dẫn xác thực cho mỗi văn bản đó. Cây Merkle thứ nhất được sử dụng khi mà hệ thống nhận được giá trị băm của văn bản, nó lưu giá trị băm này và nhãn thời gian tương ứng vào Surety’s Universal Registry. Xảy ra trường hợp nhiều văn bản có cùng nhãn thời gian, Surety giải quyết vấn đề này bằng cách sử dụng Merkle tree. Trong ví dụ này, các giá trị băm của văn bản ở các node dưới cùng được gán cùng timestamp. Việc tính toán giá trị băm trung gian được kết hợp với nhau cho đến khi đạt tới node root . 13 Hình 6 Merkle tree của các tài liệu cùng nhãn thời gian Giá trị của node root sau đó được kết hợp với giá trị cuối cùng của SHV (Summery Hash Value) trong chuỗi băm. Hình 7 Chuỗi các giá trị băm đƣợc kết nối với nhau Việc tính toán AHV (Aggregate Hash Value) để công bố cũng bằng cách tạo Merkle Tree thứ hai sử dụng tất cả các bản ghi SHV trong chuỗi. Từng cặp của bản ghi được kết hợp với nhau cho đến khi kết quả cuối cùng được tính ra. Để cho giá trị này được sử dụng để xác nhận bất kỳ một file gốc điện tử nào, thành phần của đường dẫn được sử dụng trong việc tính toàn cần được biết đến. Như việc đã nói đến ở trên, giá trị băm của một vài file điện tử được gửi trong cùng cửa sổ trong suốt quá trình tính toán của SHV. Các giá trị này được kết hợp với nhau vào chuỗi băm. Cây nhị phân của tất cả các SHV được tạo ra và tính toán giá trị AHV. 14 Hình 8 Cây Merkle tổng hợp giá trị AHV 1.2.2.4 Từ điển xác thực sử dụng SkipList 1.2.2.4.1 SkipList Cấu trúc dữ liệu Skiplist [8] lưu trữ hiệu quả tập S các phần tử từ tập hợp yêu cầu. Nó hỗ trợ các phép toán sau: - Find(x) : xác định xem phần tử x có trong S hay không. - Insert(x): chèn thêm x vào S. - Delete(x): xóa phần tử x khỏi S. 15 Hình 9 Ví dụ Skiplist Một skip list lưu một tập S các phần tử của một loạt danh sách liên kết S0,S1,…, St. Danh sách cơ sở S0 lưu tất cả các phần tử của S theo thứ tự, cũng như liên kết với các phần tử đặc biệt -∞ và +∞ . Mỗi danh sách kế tiếp Si, với i ≥ 1, lưu một ví dụ của phần tử trong Si-1. Để định nghĩa ví dụ từ một mức này đến mức kết tiếp, chọn mỗi phần tử của Si-1 một cách ngẫu nhiên với xác suất ½ là vào trong Si. Các phần tử đầu cuối -∞ và +∞ luôn luôn được đưa vào trong mức lên tiếp theo, và ở mức cao nhất,t, nó được duy trì để luôn là O(log n). Mức cao nhất được đảm bảo là chỉ có đầu cuối. Vì thế phân biệt node ở trên cùng danh sách St lưu giá trị -∞ như là node bắt đầu s. Phần tử tồn tại trong Si-1 nhưng không ở trong Si phần tử cao nguyên của tập Si-1. Phần tử mà ở cả Si và Si-1 được gọi là phẩn tử tháp ở Si-1. Giữa hai phần tử tháp nào cũng có vài phần tử cao nguyên. Tronsg xác định skiplist, số lượng của phần tử cao nguyên giữa hai tháp ít nhất là một và nhiều nhất là ba. Số lượng mong đợi của phần tử cao nguyên giữa hai phần tử tháp là một. Đối với mỗi node v thuộc Si, biểu diễn phần tử được lưu tại v là elem(v). Bên cạnh đó, biểu diễn node trong Si-1 bên dưới v là down(v), node này lưu phần tử tương tự như v, khi i = 0 thì down(v)=null. Tương tự, biểu diễn right(v) là node trong Si ngay ở bên phải của v, khi v là phần tử cuối lưu +∞ thì right(v)= null. Để thực hiện việc tìm kiếm phần tử x trong skiplist, bắt đầu với node bắt đầu s. Lấy v biểu diễn node hiện tại trong quá trình tìm kiếm( khởi tạo v = s). Quá trình tìm kiếm sử dụng hai hành động, hop forward và drop down, được lặp đi lặp lại cho đến khi kết thúc tìm kiếm. - Hop forward: tiến về bên phải của danh sách hiện tại cho đến khi tìm thấy node của danh sách hiện tại với phần tử lớn nhất mà bé hoặc bằng với x. Trong khi elem(right(v)) < x, cập nhật v = right(v). 16 - Drop down: nếu down(v) = null, việc tìm kiếm kết thúc: node v lưu phần tử lớn nhất trong skiplist mà nhỏ hơn hoặc bằng x. Nếu không thì cập nhật v = down(v). Vòng lặp ngoài của quá trình tìm kiếm vẫn tiếp tục khi mà down(p) ≠ null, chạy bên trong vòng lặp một hop forward được theo sau bởi một drop down. Sau khi hoàn thành một chuỗi các bước forward và drop down, cuối cùng gặp node v với down(v) = null. Nếu tại điểm này, elem(v) = x thì đã tìm ra phần tử x. Nếu không v là node của danh sách cơ sở với phần tử lớn nhất nhỏ hơn x; cũng như vậy, trong trường hợp này, right(v) là node của danh sách cơ sở với phần tử nhỏ nhất lớn hơn x, là elem(v)<x<elem(right(v)). Hình 10 Tìm kiếm giá trị 39 trong skiplist Tiến trình tìm kiếm trên chạy trong khoảng thời gian mong đợi là O(log n), vì vậy, với xác suất cao, độ cao t của skiplist ngẫu nhiên là O(log n) và số lượng mong muốn của node được thăm ở bất kỳ mức nào là ba. Hơn nữa, các nghiên cứu thực nghiệm thường tốt hơn 2-3 cây, cây đỏ-đen, và các kiến trúc cây tìm kiếm khác. Để chèn thêm một phần tử x, ta phải xác định danh sách nào chứa phần tử mới x bằng một chuỗi các mô phỏng tung đồng xu. Bắt đầu với i = 0, khi đồng xu là mặt ngửa, sử dụng stack A để lần vết đường quay lại vị trí của danh sách Si+1 nơi mà x nên đến, thêm node mới lưu x vào danh sách này, đặt i = i +1. Tiếp tục quá trình chèn cho đến khi đồng xu là mặt sấp. Nếu mà đạt tới mức cao nhất với quá trình chèn này thì thêm mức cao nhất mới vào đỉnh của mức hiện tại. Thời gian của phương thức chèn này là O(log n) với xác suất cao. Để xóa phần tử đã tồn tại x, loại bỏ tất cả các phần tử chứa x. Độ phức tạp của giải thuật này là O(log n) với xác suất cao. 17 1.2.2.4.2 Sử dụng skiplist trong hệ thống gán nhãn Từ điển xác thực bao gồm một skiplist trong đó mỗi node v lưu nhãn được tính ra từ các phần tử của tập hợp bằng hàm băn mật mã giao hoán h [8]. Đối với mỗi node v, định nghĩa nhãn f(v) trong giá trị tương ứng tại node w=right(v) và u = down(v). Nếu right(v) = null, định nghĩa f(v) = 0. Định nghĩa của f(v) theo cách thông thường phụ thuộc vào u tồn tại hay không đối với node v. 1. u = null, v ở mức cơ sở: (a) Nếu w là node tháp, f(v) = h(elem(v),elem(w)) (b) Nếu w là node cao nguyên thì f(v) = h(elem(v),f(w)) 2. u ≠ null, v không ở mức cơ sở: (a) Nếu w là node tháp thì f(v) = f(u) (b) Nếu w là node cao nguyên thì f(v) = h(f(u),f(w)) Sau khi thực hiện việc cập nhật trong skiplist, các giá trị băm phải được thay đổi để phản ánh sự thay đổi đã xảy ra. Phần thời gian tính toán tăng lên cho việc cập nhật tất cả các giá trị này được dự kiến là O(log n). Việc xác minh câu trả lời cho các truy vấn khá đơn giản, do tính hữu dụng của hàm băm giao hoán. Nhắc lại mục đích là tạo ra việc xác minh trong cả trường hợp một vài phần tử x có hoặc không có trong skiplist. Trong trường hợp câu trả lời là có, ta xác minh sự hiện diện của nó. Nếu không ta xác minh sự hiện diện của hai phần tử x’ và x” được lưu ở hai node liên tiếp tại mức đáy S0 với x’<x<x”. Trong trường hợp còn lại, câu trả lời thông tin xác thực là một chuỗi đơn các giá trị, cùng với chữ ký, timestamp, nhãn f(s) của node bắt đầu s. 1.2.3 Chữ ký số - Digital signature 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ụng củ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ý, có thể chấp nhận hoặc không yêu cầu xác thực của thông báo. 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 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: Hình 13 Hoạt động của hệ thống gán nhãn đơn giản 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). Hình 15 Giá trị các vòng đƣợc liên kết với nhau 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: Hình 16 Thực thi hệ thống dựa trên giao thức liên kết 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ố mà chứa vòng i. 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 tiên luôn hợp lệ đối với cái thứ hai. Nếu trong thực tế không sử dụng hai hàm băm SHA-1 và RIPEMD-160, người dùng không trung thực có thể sử dụng hàm băm yếu và tìm sự xung đột trong tương lai mà hắn muốn. Nếu một hàm băm bị phá vỡ, việc sử dụng hàm băm đó sẽ bị loại bỏ. Sẽ an toàn hơn nếu sử dụng hai hàm băm song song để có thời gian thay thế cái bị phá vỡ. Vấn đề khác của an ninh là sự bảo mật của key bí mật của STA. Nếu key của chữ ký của STA bị hỏng, bên xác thực sẽ không tin bất kỳ chữ ký của chứng nhận nào, nhưng nó luôn có thể kiểm tra tính sự nhất quán của các chứng thực mà nó chứng nhận trước đó. Trong trường hợp một hàm băm bị phá vỡ, việc sử dụng hàm băm khác phải được thực hiện. Để duy trì sự hợp lệ của các chứng nhận, chúng cần được gán nhãn lại với hàm băm mới trước khi cả hai hàm băm đều bị phá vỡ. Trong trường hợp key của chữ ký của STA bị hỏng hoặc hết hạn, một key mới phải được tạo ra. 27 2.2 Hệ thống trên thực tế 2.2.1 Hệ thống Electronic TimeStamping (e-TS) Hệ thống e-TS [10] là một hệ thống công chứng an toàn trên mạng, nó chứng nhận cho các dữ liệu đã tồn tại và chưa bị thay đổi ở một thời điểm cụ thể nào đó. Nó được coi là bên thứ ba đáng tin chứng thực cho sự tồn tại và chi tiết của các tài liệu điện tử. Hệ thống này có thể gán nhãn cho bất cứ dữ liệu điện tử nào bất kể định dạng và nội dung. E-TS có thể được áp dụng cho các giao dịch kinh doanh trực tuyến, email, nhắn tin an toàn, bảo vệ sở hữu trí tuệ và các dịch vụ nhạy cảm về thời gian khác. Hình 17 Hệ thống e-TS Hệ thống này hoạt động như sau: 1. Một người dự định gán nhãn thời gian cho một phần của dữ liệu điện tử mà ông ta có. 2. Người này ký vào dữ liệu sử dụng khóa bí mật của ông ấy và tạo ra chữ ký số. 3. Một dấu vân tay (về mặt kỹ thuật, là một giá trị băm) cho chữ ký số được tạo ra trên máy của người đó. 28 4. Dấu vân tay được gửi đến TSA. 5. TSA tạo ra nhãn thời gian sử dụng dấu vân tay đó, ngày và thời gian thu được từ nguồn thời gian chính xác và chữ ký số của TSA. 6. Nhãn thời gian được gửi lại cho người dùng. 7. TSA giữ một bản ghi của nhãn thời gian để cho việc xác thực và thu hồi trong tương lai. Hệ thống e-TS có thiết kế của một hệ thống đơn giản, nó không sử dụng bất kỳ một cấu trúc dữ liệu nào để liên kết các nhãn thời gian lại với nhau mà đơn giản, hệ thống này chỉ sử dụng kiến trúc khóa công khai để xác thực và thu hồi nhãn thời gian. 2.2.2 Hệ thống Surety Hệ thống Surety [7] là một phần mềm đảm bảo thông tin được thành lập vào năm 1994 bởi Bellcore. Đây là dịch vụ số gán nhãn thời gian sử dụng bên tin cậy thứ ba. Nó cung cấp cho khách hàng sự đảm bảo về thời gian mà các tập tin điện tử được tạo ra và các tập tin này không bị sửa đổi sau thời gian đó. Quá trình công chứng: - Ứng dụng trên máy khách sẽ tính toán giá trị băm của hồ sơ điện tử bằng cách băm hai lần riêng biệt sử dụng MD5 và SHA-1, sau đó nối chúng lại với nhau. - Khi giá trị băm đã được tính, nó được gửi tới Surety Digital Notary Server, nơi mà nó được liên kết với một nhãn thời gian. - Giá trị băm và nhãn thời gian của nó được lưu giữ tại Surety’ s Universal Registry. - Surety Digital Notary Server tạo ra Notary Record (hồ sơ chứng thực) bao gồm giá trị băm và nhãn thời gian, nó được gửi cho máy khách. - Tài liệu và Notary Record của nó được lưu tại máy khách. Quá trình xác thực: - Tập tin điện tử và Notary Record của nó được lấy từ nơi lưu trữ của ứng dụng trên máy khách. Giá trị băm của tập tin điện tử được tính và so sánh với giá trị được lưu trong Notary Record. Nêu chúng giống nhau thì có nghĩa là tập tin đó chưa bị sửa đổi từ khi nó được công chứng. 29 - Bước tiếp theo là xác minh Notary Record được đăng ký trên Surety’s Universal Registry. Xác minh được thực hiện bằng cách gửi Notary Record tới Surety Digital Notary Server. - Digital Notary Server xác minh rằng thông tin về giá trị băm và nhãn thời gian là trùng khớp với dữ liệu được lưu trên Universal Registry. - Kết quả của việc xác thực được gửi trả lại cho ứng dụng trên máy khách. Khi mà các bản ghi được lưu ở Universal Registry thì việc bảo đảm toàn vẹn của dữ liệu là rất quan trọng. Sự toàn vẹn của dự liệu trong các bản ghi này phải được đảm bảo. Surety sử dụng kết hợp nhiều phương thức để chắc chắn rằng sự toàn vẹn của dữ liệu được đảm bảo. Việc băm bản ghi được đưa vào đăng ký được liên kết sử dụng hàm băm giống nhau, hàm băm mà được sử dụng để tính giá trị thành phần cho các file đơn lẻ. Không chỉ các bản ghi độc lập được kết nối, mà cả AHV (Aggregate Hash Value) cũng được công bố rộng rãi trên phần thông báo công cộng của báo The New York Times (Việc tính toán AHV được trình bày ở 1.2.2.3.4). Giá trị băm tổng hợp này được coi là giá trị chứng minh rộng rãi. AHV được tính toán vào mỗi thứ 3 hàng tuần và là kết quả của mỗi bản ghi trên Universal Registry. Việc công bố được thực hiện vào chủ nhật kế tiếp. Sự liên kết của mỗi bản ghi trong việc đăng ký là chìa khóa trong việc không cho phép bất kỳ ai sửa bản ghi nào đã tồn tại trên đăng ký. Hệ thống Surety có vẻ như chưa gặp vấn đề nào lớn từ trước cho tới nay. Trong cách tiếp cận thông thường để thiết kế ra hệ thống gán nhãn an toàn hơn, Surety cần phải có một phương thức truyền các thông tin của giá trị băm cuối được tạo ra ngay lập tức để cho việc xác nhận giá trị băm của văn bản được thực hiện trong vòng chưa đầy một tuần và đề nghị được đưa ra là xuất bản các giá trị băm tổng hợp hàng ngày. 30 Chƣơng 3. HỆ THỐNG GÁN NHÃN DỰA TRÊN GIAO THỨC LIÊN KẾT Chương này sẽ giới thiệu về hệ thống gán nhãn tôi cài đặt dựa trên giao thức liên kết sử dụng cây merkle. Thiết kế của hệ thống này hướng tới việc không cần sử dụng bên thứ ba để xác thực nhãn thời gian như hệ thống trong phần 2.1.2. Chương trình được viết bằng ngôn ngữ java, chia thành hai phần là client và server, sử dụng socket để truyền dữ liệu trong khi thực thi. Hàm băm sử dụng trong chương trình là SHA-1. Đầu vào của chương trình là một tài liệu điện tử, đầu ra là nhãn thời gian của tài liệu đó. 3.1 Mô tả hệ thống cài đặt 3.1.1 Quá trình gán nhãn Hình 18 Giao diện của client khi gán nhãn Người dùng chọn tài liệu cần gán nhãn và nhập địa chỉ email vào giao diện phần gán nhãn file, sau đó ấn nút TimeStamp. Client sẽ băm file cần gán nhãn sử dụng hàm băm SHA-1, sau đó gửi yêu cầu gán nhãn cùng với giá trị băm của file và email của người dùng lên server. 31 Server nhận được yêu cầu, xử lý yêu cầu bằng cách đưa các thông tin về file và lấy thời gian từ nguồn đưavào cơ sở dữ liệu ( là file xml lưu tất cả dữ liệu về tất cả các yêu cầu gán nhãn trong cùng vòng hiện tại). Server khởi tạo file chứng nhận tạm thời rồi gửi cho client file này. Client sẽ lưu giữ file chứng nhận tạm thời này tại máy người dùng, người dùng sử dụng file chứng nhận tạm thời này để chứng thực file ban đầu chưa bị thay đổi nếu cần. File chứng nhận còn hiệu lực khi chưa kết thúc vòng. Khi kết thúc vòng thì server sẽ gửi chứng nhận mới thay cho chứng nhận tạm thời. Chứng nhận tạm thời sẽ hết hạn và không được sử dụng trong quá trình chứng thực. 3.1.2 Quá trình xác thực 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: Auth0 Right Auth1 Right Auth2 Right 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à nội dung Dưới đây là ví dụ về một công thức nấu ăn viết bằng XML: <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"> Bánh mì cơ bản Bột mì Men <nguyên_liệu lượng="1.5" đơn_vị="ca" trạng_thái="ấm">Nước Muối Trộn tất cả các nguyên liệu với nhau và nhào kĩ Phủ một mảnh vải, ủ một tiếng đồng hồ trong phòng ấm. Nhào lại, đổ vào khuôn, cho vào lò nướng. 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 25 th 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 [11] e-timestamp homepage [12] Wikipedia, Digital Signature [13]Wikipedia, Digital Signature Algorithm 1%BB%91 39 [14] wikipedia, Hàm Băm [15] wikipedia, XML

Các file đính kèm theo tài liệu này:

  • pdfLUẬN VĂN-NGHIÊN CỨU VÀ XÂY DỰNG MỘT HỆ THỐNG GÁNNHÃN THỜI GIAN.pdf