HIỆN THỰC HÓA MÔ HÌNH

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Bộ khung điều tra số hỗ trợ lưu trữ và quản lí chuyển giao bằng chứng số dựa trên Blockchain (Trang 57 - 86)

5.1. Tổng quan công nghệ và hạ tầng

5.1.1. Công nghệ

5.1.1.1. Blockchain Hyperledger Fabric

Do có liên quan đến các van dé bao mật và người dùng, công nghệ Blockchain

sử dụng cần phải riêng tư, yêu cầu các quyền han và phải hỗ trợ hợp đồng thông minh. Với những điều kiện đặt ra như vậy, những công nghệ Blockchain công khai (Public

blockchain) như EtherumỶ không phù hợp trong trường hợp này. Trong khi đó,

Hyperledger Fabric‘ là đủ điều kiện vì công nghệ blockchain được sử dụng là riêng

tư, cho phép định nghĩa và hạn chế các quyền cũng như hỗ trợ xử lý logic các hợp

đồng thông minh. Cụ thé, các hệ thống blockchain công khai là các hệ thống mở, bat

kỳ ai cũng có thể tham gia vào mạng. Ngược lại, các peer trong một mạng Hyperledger Fabric được thống nhất thông qua một nhà cung cấp dịch vụ thành viên

(Membership Identity Service). Dich vụ này được định nghĩa trong chính sách chứng

thực; chức năng chính là quản lý định danh (ID) của người dùng và xác thực người

tham gia vào mạng. Khác với những mạng blockchain truyền thống không thê hỗ trợ các giao dịch riêng tư và các hợp đồng bí mật, Hyperledger Fabric có khả năng cung cấp một hệ thống dam bảo tính minh bạch, xác thực, bảo mật và sở hữu kha năng kiêm toán cho những thành phần của bằng chứng số. Ngoài ra, các khối (blocks) mới trong công nghệ Blockchain Hyperledger Fabric được thống nhất thông qua một cơ chế đồng thuận thay vì sử dụng các giao thức như bằng chứng công việc (Proof of Work) hay băng chứng cô phan (Proof of Stake). Điều này giúp gia tăng hiệu năng

và giảm lượng năng lượng tiêu thụ.

3 Tham khảo: https://ethereum.org/en/developers/

* Tham khảo: https://hyperledger-fabric.readthedocs.io/en/release-2.2/

5.1.1.2. InterPlanetary File System (IPFS) Cluster

InterPlanetary File System° (IPFS) là một giao thức và mang ngang hang dé lưu trữ và chia sẻ dữ liệu trong một hệ thống tệp phân tán. Các File trong IPFS được lưu

trữ địa chỉ dựa trên nội dung thay vì vị trí. Khi một file được thêm vào mạng, IPFS

tạo một địa chỉ đa băm của file dựa trên nội dung của file và mã băm của khóa công

khai của một Node dé dam bảo rằng file được lưu trên mạng là duy nhất. IPFS tìm kiếm files thông qua định danh nội dung (Content Identifier - CID) thay vì tìm kiếm theo vị trí file được lưu trữ. IPFS loại bỏ việc trùng nội dung files bằng cách đảm bảo rằng các file có cùng nội dung sẽ chỉ được lưu một lần và chỉ có thê tìm kiếm thông

qua CID.

Có 2 loại mang IPFS là mạng công khai và mạng riêng tư. Tắt cả các files trong mạng IPFS công khai đều có thé truy cập bởi tat cả mọi người. Tuy nhiên bởi vì yêu cầu bài toán cần sự riêng tư cho các tô chức nên việc sử dụng mạng riêng tư thay vì mạng công khai được sử dụng để giới hạn mạng đối với một số thực thể nhất định. Mạng IPFS riêng tu (Private IPFS) bao gồm các peer node chia sẻ chung với nhau một khóa bí mật và chỉ giao tiếp với các node trong mạng đồng thời cũng không phản hồi với bat kỳ yêu cầu nào từ các node bên ngoài.

Bởi vì bản thân IPFS không cung cấp kha năng sao chép dữ liệu (data replication) giữa các node trong mạng nên chúng tôi sử dụng một ứng dụng giúp hỗ

trợ sao chép dữ liệu trong IPFS được gọi là IPFS-Cluster. IPFS-Cluster® là một ứng

dụng độc lập cùng với một ứng dụng khách CLI chịu trách nhiệm phân bổ, sao chép

va theo dõi các dữ liệu được ghim trên một cụm IPFS daemon. IPFS-Cluster sử dụng

thuật toán đồng thuận RAFT để điều phối, lưu trữ và phân phối các tập dữ liệu trên

các nodes tham gia.

> Tham khảo: https://docs.ipfs.io/

5 Tham khảo: https://cluster.ipfs.io/

47

5.1.2. Hạ tầng

Hạ tầng chính của hệ thống sẽ bao gồm 02 máy vận hành chính hạ tầng của hệ thống BbF và 01 máy giả lập hệ thống mạng SDN của tô chức.

Bảng 5-1 miêu tả tổng quan về vai trò và cấu hình của từng máy trong hệ thống.

Bảng 5-1: Cầu hình và vai trò của các máy

Cấu hình Vai trò Máy số 1 e 4CPU e Vận hành hệ thống mạng

Máy số 2 °

Máy số 3 °

se 8GB RAM

e 60GB Hard disk

e Hệ điều hành: Ubuntu

20.04 64-bit

2CPU

e 8GB RAM

e 30GB Hard disk

e Hệ điều hành: Ubuntu

20.04 64-bit

4 CPU

e 8GB RAM

e 40GB Hard disk

e Hé điều hành: Ubuntu

20.04 64-bit

e Xây dựng mang Blockchain.

Blockchain

Vận hành hệ thống lưu trữ File

phân tán IPFS Vận hành chương trình Blockcham API tương tác với blockchain và IPFS

Vận hành dịch vụ Web dựa trên MERN Stack

Gia lập môi trường mang SDN,

kiểm thử tan công nhằm tao bằng chứng số tự động trong bồi cảnh thực tế

Quy trình hiện thực hệ thống được trình bày theo thứ tự như sau:

e Xây dựng và triển khai hợp đồng thông minh.

e Xây dựng hệ thống lưu trữ File phân tán.

e Xây dựng lớp API tương tác với hệ thong mạng blockchain.

e Xây dựng dịch vụ Web.

e Xay dựng giao diện người dùng.

5.2. Xây dựng mạng Blockchain

Organization 1 - CA Organization 2 - CA

TLS-CA Identity-CA TLS-CA Identity-CA

Hình 5-1: Sơ đồ các thành phan mang Blockchain

Vì muốn thé hiện khả năng lưu trữ phân tán giữa các peer node và các tô chức khác nhau nên chúng tôi chọn xây dựng một mô hình đơn giản hai t6 chức (Orgl và Org2); mỗi tổ chức bao gồm là hai peer node (Hình 5-1). Tương ứng đối với các Peer Node là các số cái lưu trữ riêng biệt sử dung image của couchDB. Đây là cơ sở dữ liệu trạng thái của số cái. CouchDB là một kho lưu trữ đối tượng dưới dạng tài liệu;

49

CouchDB cho phép lưu trữ dữ liệu ở định dạng JSON, tạo ra các truy van JSON tới

dữ liệu và hỗ trợ truy van dựa vào chỉ mục (index).

Bên cạnh các Peer Node còn có các máy đóng vai trò là nhà cung cấp chứng chỉ CA cho các tổ chức. Nhà cung cấp chứng chỉ (CA) cho mỗi tô chức được tách

thành hai container riêng biệt. TLS-CA và Identity-CA. TLS-CA sẽ chịu trách nhiệm

phát hành các chứng chỉ TLS nhằm mục đích đảm bảo giao tiếp an toàn và bảo mật giữa các node trong tô chức (mạng Hyperledger Fabric riêng tư yêu cầu mọi giao tiếp trong mạng đều cần được mã hóa). Trong khi đó, Identity-CA được sử dụng để tạo ra các chứng chỉ làm định danh cho các thực thể trong tô chức như các peer node, quản

trị viên và người tham gia. Việc tách riêng một máy chủ TLS riêng biệt cho phép bảo

mật thông tin liên lạc bằng một chuỗi tin cậy (Chain of Trust) độc lập.

Các luồng giao dịch trong Hyperledger Fabric bình thường sẽ cần chữ ký của 3 thành phần trước khi thực hiện giao dịch. Đầu tiên là người gửi hay người dùng, đây

là những người thực hiện việc yêu cầu chứng thực, tạo các giao dịch và gửi cho

ordering. Thứ hai là các Peer, bên sẽ thực thi các giao dịch và tạo ra kết quả khi thực

hiện giao dịch. Các Peer ký vào kết quả thực thi dé chứng thực rang logic nghiệp vu

đã được thực thi chính xác. Cuối cùng là các Orderers với công việc sắp xếp các giao dịch, đặt các giao dịch vào trong các khối, sau đó ký để chứng thực răng đã đạt được

sự đồng thuận và cũng cho các peer có thể coi lệnh giao dịch này là lệnh cuối cùng

để các peer có thé cập nhật chính xác trạng thái số cái kip thời nhất. Nếu một định danh của một thực thê trong mạng thỏa mãn yêu cầu cho cả 3 vai trò trên thì sẽ có nguy cơ gây ra cuộc tan công Double Spend. Vì lý do đó, các node thực hiện vai trò Orderer sẽ được có riêng hai CA dé cấp chứng chỉ TLS và định danh đồng thời cũng

sẽ được tách riêng biệt ra một tổ chức khác với hai tổ chức còn lại.

5.2.1. Cài đặt môi trường

Các thành phần trong mạng Blockchain đều được vận hành và khởi chạy trên nên tảng Docker container. Docker container là một runtime environment cho phép đóng gói toàn bộ mã nguồn và chạy một ứng dụng độc lập dé triển khai sản phẩm

được nhanh chóng và đáng tin cậy. Docker container được khởi chạy từ docker

container image là một gói phần mềm nhẹ, độc lập, bao gồm tat cả mọi thứ cần thiết

để chạy một ứng dụng như: code, runtime, system tools, system libraries và settings.

Các máy của mạng Blockchain sử dụng công nghệ Docker container để chạy các image của các thành phần trong mạng. Công việc cấu hình và thiết lập các biến

môi trường và nơi lưu trữ cho các container trước khi chạy được thực hiện trong một

file cầu hình docker-compose.yaml. Trong đó mạng giao tiếp giữa các container sẽ

có tên là “forennet.com”. Danh sách các container được trình bày tại Bang 5-2.

Bang 5-2: Danh sách container trong mạng Blockchain Hyperledger Fabric

Tén container Vai tro Image Port

tls-ca.orderer TLS-CA cho các orderer hyperledger/fabric- 7052

Node ca

fls-ca.org1 TLS-CA cho các node hyperledger/fabric- 7053

thuộc tổ chức 1 ca

tls-ca.org2 TLS-CA cho các node hyperledger/fabric- 7054

thuộc tổ chức 2 ca

rca.orderer Identity/Root-CA cho các hyperledger/fabric- 7062

thực thể của Orderers ca

rca.orgl Identity/Root-CA cho các hyperledger/fabric- 7063

thực thé của tô chức 1 ca

rca.org2 Identity/Root-CA cho các hyperledger/fabric- 7064

thực thé của tổ chức 2 ca couchdb_peerl.orgl Số cái lưu trữ cho Peer 1 hyperledger/fabric- 5984

thuộc tô chức 1 couchdb couchdb_peer2.orgl Số cái lưu trữ cho Peer 2 hyperledger/fabric- 6984

thuộc tô chức 1 couchdb couchdb_peerl.org2 Số cái lưu trữ cho Peer 1 hyperledger/fabric- 7986

thuộc tô chức 2 couchdb

51

couchdb_peer2.org2 Số cái lưu trữ cho Peer 2 hyperledger/fabric- 8984

thuộc tô chức 2 couchdb peerl.org1 Peer Node 1 của tổ chức 1 hyperledger/fabric- 7082

peer

peer2.org1 Peer Node 2 của tổ chức 1 hyperledger/fabric- 7084

peer

peerl.org2 Peer Node 1 của tổ chức2 hyperledger/fabric- 7092

peer

peer2.org2 Peer Node 2 của tổ chức 2 hyperledger/fabric- 7094

peer

ordererl.orderers Orderer Node 1 của tô chức hyperledger/fabric- 7072

Orderers orderer

orderer2.orderers Orderer Node 2 của tô chức hyperledger/fabric- 7073

Orderers orderer

orderer3.orderers Orderer Node 3 của tô chức hyperledger/fabric- 7074

Orderers orderer

5.2.2. Xây dựng các máy CA, Peer Node và Orderer Node trong mang

Công việc đầu tiên khi bắt đầu xây dựng mạng là khởi chạy các container CA

dé thực hiện việc khởi tạo các chứng chỉ TLS, các chứng chỉ định danh cần thiết cho các node Peer và Orderer. Việc tạo chứng chỉ cần thông qua 2 bước là đăng ký thông tin định danh với CA và ghi danh dé CA cấp phát chứng chỉ. Có tat cả 6 CA tương ứng với 3 tô chức (Org1, Org2 và Orderer). Những chứng chỉ được CA cấp được liệt

kê như sau:

e tls-ca.orderer: cung cấp chứng chi TLS cho Orderer Node 1, Orderer

Node 2, Orderer Node 3.

e tls-ca.orgl: cung cấp chứng chi TLS cho Peer Node 1, Peer Node 2

thuộc tô chức 1.

e tls-ca.org2: cung cấp chứng chi TLS cho Peer Node 1, Peer Node 2

thuộc tổ chức 2.

e_ rca.orderer: cung cấp chứng chỉ định danh (Identity) cho Orderer Node

1, Orderer Node 2, Orderer Node 3 và Admin cho tô chức Orderer.

e rca.orgl: cung cấp chứng chỉ định danh (Identity) cho Peer Node 1, Peer

Node 2 và Admin thuộc tổ chức 1.

e rca.org2: cung cấp chứng chỉ định danh (Identity) cho Peer Node 1, Peer

Node 2 va Admin thuộc tổ chức 2.

Sau khi đã có được các chứng chỉ cần thiết từ CA, các Peer node sẽ được triển khai và cho khởi chạy. Bời vì mỗi peer đều cần có một số cái riêng nên trước khi vận hành các Peer node thì phải cho khởi chạy các container số cái trước. Container chạy

số cái cho các Peer node được chọn là CouchDB vì đây là cơ sở dữ liệu cho phép lập

mô hình dữ liệu trên số cái dưới dạng JSON và đưa ra cac truy vấn dựa trên giá tri của di liệu giúp cho việc truy van hiệu quả hơn và cho phép truy van tập dữ liệu lớn. Các container của Peer node sẽ được định nghĩa các biến môi trường để cài đặt như cau hình kết nối với cho số cái, cau hình sử dung chứng chi TLS, các thuật toán sử dụng cũng như địa chỉ và port lắng nghe yêu cầu.

Thành phần cuối cùng trong mạng Blockchain cần được khởi chạy là các Orderer Node. Các orderer node đều yêu cầu một khối đặc biệt gọi là khối khởi nguyên (genesis block) của các Orderer. Đây là khối đầu tiên của kênh hệ thống (system channel) bởi vì nó là khối chứa các cấu hình cơ bản cho mạng. Kênh hệ thống

là một kênh đặc biệt do quản trị viên của các orderer quản lý. Khối khởi nguyên chứa các thông tin về hệ thống mạng như các tổ chức tham gia, các chính sách và cài đặt

cho dich vu Ordering. Khối khởi nguyên của hệ thống được tạo ra bằng công cụ configtxgen và một file câu hình tên là configtx.yaml chứa tat cả các cài đặt về kênh

hệ thống, kênh riêng tư, danh sách tô chức được phép tạo kênh, chính sách kiểm soát truy cập,... Sau khi đã có được khối khởi nguyên thì các container cho các Orderer

node sẽ được khởi chạy va sẵn sang hoạt động.

53

5.2.3. Xây dựng kênh riêng tư

Sau khi đã xây dựng được các thành phan trong mạng, dé các node trong mạng giao tiếp với nhau an toàn, bí mật và riêng từ thì một kênh riêng tư cần được tạo ra

và cho phép các node tham gia vào kênh. Các cài đặt cho kênh riêng tư cũng được

thực hiện tai file configtx.yaml. Cu thé, file configtx.yaml chứa những thông tin sẽ

được dùng khi cải đặt kênh như sau

e Tên của kênh: Forensic Channel.

e Các tô chức tham gia vào kênh: Org] và Org2.

e Dich vụ Ordering: bao gom 3 Orderer node (ordererl.orderers

orderer2.orderers, orderer3.orderers) và thuật toán đồng thuận sử dụng

là thuật toán RAFT. RAFT là một dịch vụ CFT (Crash Fault Tolerant)

ordering dựa trên việc trién khai giao thức Raft. RAFT tuân theo mô hình

“Leader and Follower” khi một trong số các orderer node được chọn làm leader và những quyết định của leaders được sao chép bởi các orderer

node còn lại trong kênh.

e Chính sách của kênh: sử dụng chính sách mặc định của Hyperledger

Fabric.

Việc xây dựng kênh Forensic Channel cũng cần một genesis block. Việc tạo kênh sẽ do một peer (thuộc một tô chức trong danh sách các tô chức được cho phép tạo kênh) thực hiện. Peer node | từ tổ chức 1 sẽ sinh ra một giao dịch tạo kênh từ file configtx.yaml. Peer node 1 sau đó sẽ gửi giao dịch này đến cho dich vụ Ordering. Những thông tin khởi tạo ban đầu cho kênh có trong giao dịch này được dịch vụ Ordering sử dụng dé tạo ra genesis block cho kênh. Sau khi đã có genesis block, kênh

Forensic Channel sẽ tự động được tạo. Tuy nhiên, lúc này chưa có peer node nào

tham gia vào kênh. Các peer node từ các tổ chức muốn tham gia vào kênh thì cần phải được cung cấp genesis block từ peer node 1 thuộc tô chức 1.

Sau khi đã cho cả cả 4 peer từ 2 tổ chức tham gia vào kênh, quá trình tạo kênh riêng tư hoàn tat. Lúc này quá trình hiện thực hệ thống bước sang giai đoạn tiếp theo: Xây dựng các hợp đồng thông minh.

5.3. Xây dựng và triển khai hop đồng thông minh

Trong hợp đồng thông minh có 3 đối tượng được lưu trữ chính trong sô cái đó

là đối tượng người tham gia (Participant), đối tượng vụ án (Case) và đối tượng bằng chứng (Evidence). Các hợp đồng thông minh (hay còn gọi chaincode đối với Hyperledger Fabric) sẽ được viết trên ngôn ngữ Golang.

5.3.1. Xây dựng cấu trúc dữ liệu và phương thức của đối tượng người

tham gia

Participant

ParticipantiD string Email string FullName string Affiliation string

Gender string

Birthday string

Case List [Istring

CaseAdminList [Istring

OwningEvidenceList [string MyAttributes Ostring

Hình 5-2: Cấu trúc dit liệu người tham gia

Đối tượng người tham gia chính là dữ liệu của người dùng tham gia vào mạng (Hình 5-2). Người dùng được lưu trong số cái với chỉ mục là ParticipantID. Bên cạnh những thông tin cá nhân như tên, email hay tổ chức mà người đó tham gia (Affiliation), đối tượng người tham gia còn có các giá trị liên quan đến các đối tượng

khác như danh sách vụ án mà người đó tham gia (CaseList), danh sách vu án ma

người đó đang quản trị (CaseAdminList) và danh sách bằng chứng mà người đó sở

hữu (OwningEvidenceList). Ngoài ra còn có tập các thuộc tinh trong chứng chỉ hiện

tại của người dùng cũng sẽ được lưu vào đối tượng dé dé dàng kiểm tra tại đặc tính

55

Một phần của tài liệu Khóa luận tốt nghiệp An toàn thông tin: Bộ khung điều tra số hỗ trợ lưu trữ và quản lí chuyển giao bằng chứng số dựa trên Blockchain (Trang 57 - 86)

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

(107 trang)