Tổ chức hồ sơ người theo cấu trúc Merkle

Một phần của tài liệu Ứng dụng blockchain vaf merkle tree để tăng cường bảo mật dữ liệu trong mô hình xác thực dựa trên thuộc tính người dùng (Trang 67 - 72)

• Cần cải tiến quy trình xác thực để người dùng chỉ cần cung cấp một lượng rất nhỏ thông tin nhưng vẫn chứng minh được tính đúng đắn của toàn bộ dữ liệu xác thực người dùng.

Với mục tiêu giải quyết những điểm yếu trên của mô hình xác thực dựa trên hồ sơ người dùng. Tác giả đã đưa ra một số phương pháp tiếp cận hữu ích trong các phần tiếp theo nhằm cải thiện cấu trúc tổ chức cũng như phương pháp lưu trữ hồ sơ người dùng, bên cạnh đó là một tiến trình xác thực nhằm duy trì sự minh bạch và chính xác ở mức độ cao.

4.2 Tổ chức hồ sơ người theo cấu trúc Merkle Tree

Hồ sơ cũng như dữ liệu cá nhân của người dùng lã những dữ liệu cần được đảm bảo tính bí mật và toàn vẹn để nâng cao mức độ uy tín của hệ thống. Bên cạnh đó, với hướng tiếp cận sử dụng phương pháp xác thực dựa trên thuộc tính người dùng, hồ sơ cá nhân của người dùng đóng vai trò quan trọng hơn bao giờ hết. Vì vậy cấu trúc dữ liệu để tổ chức lưu trữ và sử dụng trong tiến trình xác thực một cách hiệu quả là nhu cầu cần thiết.

Với những yêu cầu khắc khe về khả năng mở rộng, cập nhật liên tục, yêu tốc độ truy xuất dữ liệu nhanh, đảm bảo tính toàn vẹn của hồ sơ và đặt biệt là giải quyết được vấn đề Zero-knowledge với dữ liệu được sử dụng để xác thực, cấu trúc dữ liệu cây Merkle là hướng tiếp cận phù hợp cho cấu trúc dữ liệu tổ chức hồ sơ người dùng.

Ngoài những thao tác như thêm nút, xóa nút, tìm kiếm, duyệt cây như những cấu trúc cây khác Merkle Tree còn hỗ trợ thao tác chứng minh bao gồm (Proving Inclusion) dữ liệu. Với cây Merkle chúng ta có thể sử dụng giá trị gốc của cây (Merkle root) và bằng chứng merkle (merkle proof) để chứng minh rằng một số nội dung thực sự là một phần của cây này.

Ví dụ, hãy để chứng minh rằng Alà một phần của cây trên, tất cả những gì chúng ta cần làm là cung cấp siblings của A trên đường đi lên nút gốc, tính toán lại cây và đảm bảo mọi thứ đều khớp. Điều này được trực quan hóa như Hình 4.2,

4.2. Tổ chức hồ sơ người theo cấu trúc Merkle Tree

Root Hash hash(HAB+HCD) HAB

hash(HA+HB) HA

hash(A) A

HB hash(B)

B

HCD hash(HC+HD)

HC hash(C)

C

HD hash(D)

D Hình 4.2: Audit Path (Merkle Proof)

Root Hash hash(HÀ+HỉD) HAB

hash(HA+Hỉ) HA

hash(A) A

Hỉ hash(ỉ)

HCD hash(Hỉ+HD) Hỉ

hash(ỉ) ỉ

HD hash(D)

D Hình 4.3: Cây Merkle thưa

các giá trị được in đậm là các giá trị cần thiết cho việc chứng minh A thuộc MT tương ứng. Chỉ với A,H(B) và H(H(C) +H(D)), chúng ta có thể tính toán lại hàm băm gốc. Đây là một cách hiệu quả để chỉ ra rằng Alà một phần của cây này mà không phải cung cấp toàn bộ cây.

Giả sử rằng chúng ta có một cây Merkle để lưu trữ bốn thành phần dữ liệu hồ sơ, nhưng người dùng chỉ có hai dữ liệu hồ sơ trên tổng số bốn. Khi đó với những nút lá không có dữ liệu chúng ta chỉ để trống hay nói một cách chính xác hơn, chúng ta đặt một giá trị đặc biệt (như null) thay vì dữ liệu. Cây cuối cùng sẽ trông như Hình 4.3, và được gọi với tên cây Merkle thưa (Sparse Merkle Tree).

4.2. Tổ chức hồ sơ người theo cấu trúc Merkle Tree

Tuy nhiên, điều này cũng có nghĩa là cấu trúc này đang lãng phí không gian lưu trữ vì trong một cấu trúc hồ sơ lớn không phải người dùng nào cũng lưu trữ đầy đủ thông tin, trong thực tế hồ sơ của người dùng chỉ là một tập con rất nhỏ so với một bộ hồ sơ đầy đủ của hệ thống. Điều đó chỉ ra rằng cần quá nhiều chỉ số để tạo một cây theo cách thủ công, chi phí cho việc tính toán quá cao làm giảm hiệu năng của hệ thống cũng như không đáp ứng được trải nghiệm người dùng.

Một cách tiếp cận mới được gọi là thuật toán đường dẫn khoảng cách tối thiểu (minimum distance path algorithm) để mô phỏng kích thước có thể thu gọn được của cây Merkle này, cho phép chúng ta đánh đổi thời gian không gian hiệu quả được gọi là cây Merkle thưa nhỏ gọn (Compact Sparse Merkle Tree). CSMT cung cấp các thuật toán để chèn, xóa và bằng chứng bao gồm (không bao gồm) cho một nút lá trong cây Merkle.

Để đạt được cấu trúc CSMT này, chúng ta cần mỗi nút trong cây chứa thêm tham số gọi là khóa lớn nhất (max-key). Vì vậy, đối với mỗi nút không phải là nút lá, khi đó nó có hai con và mỗi nút con sẽ có các giá trị khóa tối đa đại diện cho khóa tối đa trong cây con tương ứng của chúng. Một khóa mới được chèn trong CSMT này sẽ được đặt trong cây con mà khoảng cách nhị phân của nó là gần nhất. Và nó sẽ đệ quy đi xuống cây theo cách tiếp cận này cho đến khi nó chạm tới một nút lá. Khóa được chèn ở cấp độ này và giá trị băm và khóa tối đa được điều chỉnh khi chúng tôi lặp lại. Đường dẫn mà khóa đi theo cây được gọi là đường dẫn khoảng cách tối thiểu (minimum distance path) và phương pháp để chèn khóa này được gọi với tên là thuật toán đường dẫn khoảng cách tối thiểu (Minimum distance path algorithm). Để dễ hình dung, chúng ta có thể quan sát Hình 4.4 mô phỏng một cây Merkle thưa nhỏ gọn gồm ba nút lá.

Tổng kết lại, chúng ta có hai khái niệm chính cần lưu ý đối với cây Merkle thưa nhỏ gọn [57]:

• Khóa tối đa (max-key): Mỗi nút không phải là nút lá chứa khóa tối đa dưới các cây con của nó được gọi là maxkey.

• Khoảng cách (distance): Khoảng cách được định nghĩa là khoảng cách nhị phân giữa hai khóa. Nó được tính bằng cách lấy XOR bitwise và sau đó tính toán nhật ký. Tham số khoảng cách giúp xác định cây con nào gần hơn.

4.2. Tổ chức hồ sơ người theo cấu trúc Merkle Tree

Hình 4.4: Cây Merkle thưa nhỏ gọn với ba nút lá

a) Phép toán:

Thêm vào một khoá: Thuật toán chèn đệ quy đi xuống cây dọc theo đường dẫn khoảng cách tối thiểu cho đến khi một nút lá. Khóa được chèn được tạo thành anh chị em bên trái hoặc bên phải tùy thuộc vào thời điểm khóa phím lá hiện tại lớn hơn hoặc nhỏ hơn khóa được chèn. Khi đệ quy trở lại, trên đường lên tất cả các giá trị băm và khóa tối đa dọc theo đường dẫn khoảng cách tối thiểu được điều chỉnh lại.

Xóa một khóa: Thuật toán xóa đệ quy đi xuống cây cho đến khi nó chạm tới nút lá với khóa bị hủy. Khi đệ quy trở lại, nó đính kèm anh chị em của nút bị xóa với anh chị em cha mẹ và băm cây được cập nhật.

Chứng minh bao gồm (-không bao gồm) của một khoá: Phần chứng minh thành viên của thuật toán này tương tự như thuật toán chèn được đề cập ở trên.

Thuật toán đệ quy đi theo một đường dẫn khoảng cách tối thiểu cho khóa. Nếu chúng ta tiếp cận thành công nút lá, bằng chứng thành viên được đưa ra bằng cách đệ quy trở lại và thêm anh chị em của nút hiện tại vào bằng chứng. Nếu chúng ta không thể tiếp cận nút lá hoặc tại nút lá, khóa không khớp với khóa lá , sau đó phần chứng minh không phải là thành viên của thuật toán sẽ tiếp quản. Mấu chốt của thuật toán này là cung cấp bằng chứng về hai khóa gần nhất ràng buộc khóa mà bằng chứng không phải là thành viên sẽ được đưa ra.

4.2. Tổ chức hồ sơ người theo cấu trúc Merkle Tree

b) Tính chất: Với hướng tiệp cận này, SMT sẽ có những đặc điểm nổi bật như sau:

Cấu trúc: SMT gần như cân bằng. Nếu cây có n phần tử, chúng ta có thể tiếp cận bất cứ phần tử thành phần nào trong cây với log2(n) bước.

Không gian: Không gian cho SMT được giới hạn bởi hai lần số lượng khóa trong cây. N-khóa được lưu trữ tại n-lá và mỗi cặp lá có nút cha.

dlog2(n)e X

i=0

2i =2dlog2(n)e+1−1<2n [57]

Kích thước tối đa của bằng chứng dữ liệu: Vì SMT gần như cân bằng, nên kích thước tối đa của"bằng chứng" sẽ là 2×256×log2(n)(khi sử dụngSHA−256).

Với hướng tiếp cận CSMT, chúng ta có một cấu trúc cây rõ ràng, đã được sắp xếp do thuật toán minimum distance được sử dụng. Ưu điểm của phương pháp này là chúng ta có thể có một cấu trúc cây rõ ràng và tối ưu về mặt không gian vì không gian tối đa cần thiết là khoảng 2n. Chúng ta sẽ không cần bộ nhớ đệm vì có thể thêm vào cây trong thời gian logarit. Kích thước của bằng chứng không chứa các giá trị băm nhỏ nên nó trở nên nhỏ gọn và chỉ có độ dài log2(n).

Những ưu điểm của cấu trúc dữ liệu Merkle Tree khi được dùng để tổ chức hồ sơ người dùng

Tóm lại, việc sử dụng cấu trúc Merkle Tree có thể làm giảm đáng kể lượng dữ liệu cần thiết phải duy trì cho mục đích xác minh dữ liệu người dùng hoặc xem xét tính toàn vẹn của từng nội dung trong dữ liệu. Tổ chức hồ sơ người dùng theo cấu trúc Merkle Tree có những lợi ích chính sau:

• Merkle Tree cung cấp một phương tiện để chứng minh tính toàn vẹn và hợp lệ của dữ liệu. Cấu trúc của cây cho phép xác định những thay đổi dù là nhỏ nhất đối với dữ liệu một cách dễ dàng.

• Đòi hỏi ít bộ nhớ hoặc dung lượng lưu vì các bằng chứng được tính toán dễ dàng và nhanh chóng. Nếu chúng ta muốn biết sự thay đổi dữ liệu đã xảy ra ở đâu thì chúng ta có thể kiểm tra xem dữ liệu có phù hợp với Hash Root

Một phần của tài liệu Ứng dụng blockchain vaf merkle tree để tăng cường bảo mật dữ liệu trong mô hình xác thực dựa trên thuộc tính người dùng (Trang 67 - 72)

Tải bản đầy đủ (PDF)

(122 trang)