Kịch bản thử nghiệm

Một phần của tài liệu Blockchain và ứng dụng trong định danh số (Trang 50)

3 Mô phỏng và thử nghiệm hệ thống định danh số

3.3Kịch bản thử nghiệm

Để thuận lợi cho mục đích nghiên cứu, tác giả sẽ mô phỏng trên một máy tính. Trong máy tính này sẽ chứa toàn bộ node xử lý, các thực thể, đồng thời là nơi diễn ra toàn bộ xử lý tương tác giữa các thực thể.

3.3.1. Chuẩn bị

Máy tính sử dụng có thông số như bảng 3.2.

STT Yêu cầu Mô tả

1 Hệ điều hành Ubuntu phiên bản 16.04 trở lên. 2 CPU Chip xử lý corei5 trở lên có ít nhất

2 nhân 3 RAM 8GB trở lên 4 Phần cứng 64GB trở lên 5 Thư viện, phần mềm

chần chuẩn bị python3, docker, git, postgresql

Bảng 3.2:Yêu cầu phần cứng cho môi trường thử nghiệm

3.3.2. Tổng quan kịch bản

Kịch bản được thiết kế cho Alice, một người tốt nghiệp đại học Faber và đang hoàn thành hồ sơ để ứng tuyển công việc tại tập đoàn ACME. Xét trong hệ thống, các thực thể đại diện

Hình 3.3:Tương tác giữa các thực thể.

3.3.3. Đặc tả chức năng

Chức năng các thực thể trong hệ thống được trình bày trong bảng 3.3.

3.3.4. Cài đặt hệ thống giả lập 3.3.4.1. Kéo mã nguồn bằng git Chạy lệnh:

$ g i t c l o n e h t t p s : / / g i t h u b . com/ d u c t r i n h h o a n g / H y p e r l e d g e r −Indy−Education−L o c a l

3.3.4.2. Cấu hình nội dung tệp cài đặt:

Tệp cấu hìnhindy-material/nodejs/pool.dockerfile chứa các thao tác cần thiết để cài đặt hệ thống mô phỏng thông qua docker

Thực thể Đường dẫn web Chức năng Dữ liệu riêng tư Dữ liệu công khai Hệ thống chung localhost:9000

Điều phối các node

trong hệ thống. Không có

Alice localhost:3000

Yêu cầu chứng chỉ từ Faber, cấp quyền xem cho ACME Chứng chỉ học thuật Khóa công khai DID Đại học Faber localhost:3001 Tạo và cấp mẫu chứng chỉ Khóa công khai DID Tập đoàn ACME localhost:3002

Yêu cầu xem mẫu chứng chỉ từ Faber và yêu cầu xem chứng chỉ từ Alice.

Khóa công khai DID

Bảng 3.3:Đặc tả chức năng của hệ thống

Nền tảng, thư viện cần sử dụng bao gồm: • python phiên bản 3.5 • setuptools phiên bản 38.6.0 • aiosqlite phiên bản 0.6.0 Lệnh thực thi: RUN p i p i n s t a l l s e t u p t o o l s −−upgrade RUN p i p i n s t a l l s e t u p t o o l s ==38.6.0 RUN p i p i n s t a l l −−no−cache−d i r a i o s q l i t e ==0.6.0

Sau khi cài đặt các thư viện cần thiết, ta cần tạo môi trường docker tên là RUST_LOG và tạo các thư mục để chuẩn bị cài đặt:

• /ledger/sandbox/data • /log • /.indy-cli/networks • /.indy-client/wallet Lệnh thực thi: RUN mkdir −p \

Tiếp theo đó, ta tiến hành cấp quyền đọc, ghi đến các thư mục định tạo bằng lệnh "CHMOD -R ug+rw [tên thư mục]"

Lệnh thực thi:

chmod −R ug+rw $HOME/ l o g $HOME/ l e d g e r \ $HOME/ . indy−c l i $HOME/ . i n d y _ c l i e n t

Ta cần thêm đường dẫn tệp lệnh indy_config.py vừa tạo hệ thống thực thi lệnh trên terminal.

Lệnh thực thi:

ADD −−chown=i n d y : i n d y i n d y _ c o n f i g . py / e t c / i n d y / ADD −−chown=i n d y : i n d y . $HOME

Nội dung tệp indy-material/nodejs/pool.dockerfile hoàn chỉnh:

FROM b c g o v i m a g e s / von−image : py35−1.6−8 USER i n d y

RUN p i p i n s t a l l s e t u p t o o l s −−upgrade RUN p i p i n s t a l l s e t u p t o o l s ==38.6.0

RUN p i p i n s t a l l −−no−cache−d i r a i o s q l i t e ==0.6.0 ENV RUST_LOG $ {RUST_LOG:−warning }

RUN mkdir −p \

$HOME/ l e d g e r / sandbox / d a t a \ $HOME/ l o g \

$HOME/ . indy−c l i / n e t w o r k s \ $HOME/ . i n d y _ c l i e n t / w a l l e t && \

chmod −R ug+rw $HOME/ l o g $HOME/ l e d g e r \ $HOME/ . indy−c l i $HOME/ . i n d y _ c l i e n t

ADD −−chown=i n d y : i n d y i n d y _ c o n f i g . py / e t c / i n d y / ADD −−chown=i n d y : i n d y . $HOME

RUN chmod uga+x s c r i p t s /∗ b i n /∗

3.3.4.3. Khởi động hệ thống Chạy lệnh:

$ . / manage b u i l d $ . / manage up

Sau khi chạy lệnh hoàn tất, lúc này ta có thể truy cập vào đường dẫn web của hệ thống thông qua trình duyệt để xem giao diện của các tác nhân trong kịch bản đề ra ban đầu.

• Người dùng Alice: Đường dẫn https://localhost:3000. • Đại học Faber: Đường dẫn https://localhost:3002. • Tập đoàn ACME: Đường dẫn https://localhost:3003. • Sổ cái blockchain: Đường dẫn https://localhost:9000.

Hình 3.4 thể hiện giao diện của Alice lúc mới khởi tạo (truy cập vào địa chỉ https://localhost:3000). Ở phía trên giao diện có các trang con:

• Relationships: Các thực thể đã kết nối cùng Alice.

• Credentials: Thông tin đăng nhập của Alice và chỉ Alice được quyền quản lý.

• Proof Requests: Các yêu cầu gửi đi về chứng chỉ của Alice mà cần một bên khác cung cấp.

• Issuing: Trang con mà ở đó Alice cấp chứng chỉ số cho các thực thể khác. Ở phần sau, tác nhân Faber (đại học nơi Alice theo học) sẽ có quyền cấp chứng chỉ này cho Alice.

• Messages: Nơi Alice có thể nhắn tin, trao đổi với các tác nhân khác đã kết nối trong hệ thống.

Hình 3.4:Trang thông tin của Alice lúc khởi tạo

Ở phía dưới cùng trong hình 3.4, ta có DID (Decentralize-ID) - địa chỉ công khai mà tác nhân khác có thể đùng để tương tác, kết nối với Alice.

Để theo dõi tiến trình xử lý cũng của các Node trong hệ thống mô phỏng, ta truy cập đường dẫn https://localhost:9000. Thông tin khởi tạo được xem ở hình 3.5. Ở đó, mỗi Node có 4 trường thông tin cơ bản:

• DID: ID của Node.

• Uptime: Thời gian tính từ ngày cài đặt • Transaction: Thông tin xử lý các block.

Các thuộc tính cần có:

• name: Họ và tên người học. • degree: Chuyên ngành học.

• status: Tình trạng học (tốt nghiệp hay chưa). • year:Năm bắt đầu học.

• average: Thời gian học.

• ssn: Dùng như mã số sinh viên tại đại học bách khoa Hà Nội (viết tắt của Social Security Number).

Bước 2: Tạo kết nối giữa Faber và Alice

Ta truy cập vào trang quản lý của Faber tại đia chỉ https://localhost:3002. Giao diện hiển thị sẽ như hình 3.7.

Ở giao diện của Faber, ta chọn nút "Send New Connection Request" và nhập DID của Alice vào ô địa chỉ. Cuối cùng, ta chọn nút "Send Connection Request" như hình 3.8 để gửi yêu cầu.

Tiếp sau đó, ta vào trang Messages của Alice. Ở đây, ta sẽ thấy một thư yêu cầu được kết nối từ phía Faber như hình 3.9.

Chú ý: Alice cần chắc chắn rằng DID trong yêu cầu là của Faber.

Sau khi đã chắc chắn, ta chọn nút "Accept"có trong thư ở hình 3.9 và quay lại trang Credentials của Alice sẽ thấy có tài khoản được Faber cấp. Điều này có nghĩa rằng Alice kết nối thành công với đại học Faber. Kết quả được thể hiện ở hình 3.10.

Bước 3: Alice nhận thông tin chứng chỉ tốt nghiệp từ Faber

Ta vào trang Issuing của Faber từ địa chỉ https://localhost:3002. Ở phần Relationship, hãy chắc chắn rằng địa chỉ DID là của Alice và mẫu chứng chỉ

Hình 3.7:Giao diện quản lý của đại học Faber

Hình 3.9:Thư yêu cầu được kết nối với Alice gửi từ Faber

Hình 3.11:Faber cấp chứng chỉ học thuật cho Alice

Để kiểm tra xem Alice đã nhận được chứng chỉ học thuật chưa, ta vào trang Credential của Alice từ địa chỉ https://localhost:3000. Ở đây, ta sẽ nhìn thấy thông tin chứng chỉ như trong hình 3.12.

Bước 4: Alice gửi yêu cầu ứng tuyển đến tập đoàn ACME

Từ địa chỉ https://localhost:3000 của Alice, ta chọn yêu cầu kết nối đến tập đoàn ACME. Hành động này tương tự như hành động ở hình 3.8 khi Faber muốn kết nối với Alice. Hoạt động kết nối từ phía Alice này được thể hiện ở hình 3.13.

Để tập đoàn ACME có thể kết nối được với với Alice, ta vào trang Messages từ địa chỉ https://localhost:3003 của ACME và chọn nút "Accept" như trong hình 3.14.

Ở bước này, ta coi như Alice đã gửi thành công yêu cầu ứng tuyển đến làm việc của tập đoàn ACME. Tập đoàn ACME cũng đã biết Alice từng học tại đại học Faber. Giờ đây, ACME cần biết thông tin học thuật của Faber. Ta cần vào trang Proof-Request từ địa chỉ https://localhost:3001 của Faber để xem mẫu yêu cầu xem chứng chỉ học thuật như hình 3.15. Mẫu yêu cầu xem chứng chỉ được hiển thị ở bên phải của hình 3.15.

Hình 3.12:Alice kiểm tra hòm thư xác nhận từ Faber

Hình 3.14:Tập đoàn ACME chấp nhận yêu cầu kết nối từ Alice

Tiếp theo, tập đoàn ACME sẽ tiến hành kiểm tra chứng chỉ học thuật của Alice. Ta truy cập vào trang Proof-Request từ địa chỉ https://localhost:3001 của ACME. Ở bên trái màn hình, hãy chắc chắn địa chỉ DID là thuộc về Alice ở ôEndpoint DID. Tiếp theo đó, ta chọn chứng chỉ Other và dán mẫu yêu cầu xem chứng chỉ sang bên phải của màn hình. Cuối cùng, ta chọn nút "Submit Query" ở bên trái màn hình. Quá trình này được thể hiện trong hình 3.16.

Hình 3.16:ACME gửi yêu cầu xem chứng chỉ của Alice

Hãy luôn ghi nhớ rằng Alice là tác nhân duy nhất quản lý những thông tin cá nhân của họ, kể cả Faber cũng không được quyền giữ những thông tin này. Vì thế, tập đoàn ACME vẫn phải chờ Alice chấp thuận mới có thể xem chứng chỉ học thuật. Ta sẽ chấp thuận yêu cầu từ tập đoàn ACME bằng các vào trang Message của Alice để mở thư và chọn "Accept" như hình 3.17.

Hình 3.17:Alice cho phép tập đoàn ACME xem chứng chỉ

Ở bước cuối cùng này, tập đoàn ACME nơi Alice xin ứng tuyển công việc đã có thể xem chứng chỉ học thuật của Alice. Ta vào trang Relationships từ địa chỉ https://localhost:3003 của ACME để xem những thông tin này như hình 3.18.

cung cấp dịch vụ).

Ở thời điểm bắt đầu, các thực thể là riêng rẽ và chưa hề có sự liên kết tương tác nào cả. Qua quá trình tương tác lẫn nhau, các thao tác được thực hiện mô phỏng quá trình thực tế những tương tác trong môi trường Internet (tạo tài khoản, cung cấp thông tin định danh, sử dụng dịch vụ được cung cấp). Các thông tin trao đổi qua thư luôn được dùng dưới một khóa gọi là DID, nhằm đảm bảo tính bảo mật. Các thông tin trao đổi cũng hạn chế tối đa thông tin cần thiết.

Kết quả cuối cùng, các thực thể đều có đã nhận được thông tin cần thiết để phục vụ nhiệm vụ của mình. Quá trình xác thực, lưu trữ các thông tin này được thực hiện nhờ các Node chạy ẩn trong blockchain của Indy.

Trong luận văn này, tác giả đã nghiên cứu tìm hiểu về hệ thống định danh tự chủ bằng blockchain. Hệ thống định danh tự chủ cho phép cải thiện đáng kể những hạn chế còn tồn tại ở hệ thống định danh truyền thống: tính bảo mật, khả năng cho phép người dùng tự quản lý thông tin của mình, tính toàn vẹn dữ liệu và cho phép các thực thể tham gia hệ thống có thể chia sẻ những thông tin vừa nhanh chóng vừa đáng tin cậy.

Về nội dung, ở chương 1, tác giả đã trình bày những nội dung cơ bản về Blockchain và Hệ thống định danh. Blockchain được xây dựng dựa trên ý tưởng xác thực các hoạt động trao đổi thông tin cùng các nền tảng công nghệ gồm Bảo mật, Lý thuyết trò chơi và Cấu trúc dữ liệu trong Khoa học máy tính. Bên cạnh đó, tác giả cũng trình bày kiến trúc chung của một hệ thống định danh số cùng những phiên bản của Định danh số hiện đang được dùng trong thực tế.

Tiếp nối đến chương 2, tác giả tập trung hơn vào Hệ thống định danh tự chủ. Hệ thống định danh tự chủ có những ưu điểm vượt trội giúp cải thiện những hạn chế còn tồn tại ở Hệ thống định danh truyền thống. Ở chương hai, tác giả tập trung trình bày về cách sử dụng Blockchain giúp hỗ trợ hệ định danh tự chủ như thế nào.

Ở chương cuối cùng, tác giả đi sâu vào hệ thống Hyperledger Indy - một hệ thống định danh tự chủ dựa trên nền tảng Blockchain được phát triển bởi Hyperledger. Hyperledger-Indy cung cấp cho người dùng tham gia hệ thống kể cả ở dạng node hay ứng dụng, giúp các tổ chức có thể ứng dụng để xây dựng hệ thống cho mình để kết nối tốt hơn trên môi trường Internet.

[3] Fiona Carmichael (2008), Nhập môn Lý thuyết trò chơi, NXB Hồng Đức, Hà Nội, pp. 4-10.

[4] Paul A. Grassi, Digital Identity Guidelines (2017), NIST Special Publication 800-63-3, pp. 9-18.

[5] Allende López, Marcos, Self-Sovereign Identity: The Future of Identity: Self- Sovereignity, Digital Wallets, and Blockchain (2020), LACChain Global Al- liance digital identity working group, pp. 25-36.

[6] Gilani, Komal, Bertin, Emmanuel, Hatin, Julien, Crespi, Noel. (2020). A Survey on Blockchain-based Identity Management and Decentralized Pri- vacy for Personal Data. 97-101. 10.1109/BRAINS49436.2020.9223312, pp. 2-5.

[7] Zwitter AJ, Gstrein OJ and Yap E (2020) Digital Identity and the Blockchain: Universal Identity Management and the Concept of the “Self- Sovereign” Individual. Front. Blockchain 3:26. doi: 10.3389/fbloc.2020.00026, pp. 14-18.

[8] R.Dhamija and Dusseault (2008), "The Seven Flaws of Identity Manage- ment: Usability and Security Challenges", IEEE Secur. Priv., vol. 6, no. 2, pp. 24-29.

[9] A.Abraham (2017), Self-Sovereign Identity management, Styria: E- Government Innovationszentrum; Graz University of Technology, pp. 6-14.

[10] S.El Haddouti, M. Kettani (2019), "Analysis of Identity Management Sys- tem Using Blockchain Technology", 1-7.10.1109/COMMNET, pp. 1-3.

[11] G. Zyskind, O. Nathan, A.Pentland (2015), "Decentralizing Privacy: Us- ing Blockchain to Protect Personal Data", 2015 IEEE Security and Privacy Workshops, Sand Jone, CA, pp. 180-184.

[12] Muhle, A. Gruner, T. Gayvoronskaya, C. Meinel (2018), "A survey on en- sential components of self-soverign identity", Computer Science Review, vol. 30, pp. 80-86.

[13] F. Paci, E.Bertino, A. Squicciarini, J. Woo (2009), "An Overview of VeryIDX - A Privacy-Preserving Digital Identity Management System for Mobile De- vices", Journal of Software, 4(7), pp. 1-11.

[14] Stokkink, Quinten and Pouwelse, J.A (2018), "Deployment of a Blockchain-Based Self-Sovereign Identity", 1336-1342, 10.1109/Cybermatics_2018.2018.00230, pp. 2-4.

[15] LifeID project (2018), "An open-source, blockchain-based platform for self- sovereign identity", LifeID, Tech. Rep., Mar. 2018, pp. 11-14.

[16] M.Ali, J.C.Nelson, R.Sea, M.J.Freedman (2015), "Blockstack: Design and Implementation of a Global Naming System with Blockchains", pp. 184-185.

[17] P. Dunphy, F. Peticolas (2018), "A First Look at Identity Management Schemes on the Blockchain", IEEE Security & Privacy, vol. 16, no. 4, pp. 20-29.

[18] Finck, M. (2018), Blockchains and Data Protection in the European Union. European Data Protection Law, pp. 17-35.

[19] Hyperledger Foundation, Hyperledger Architecture, Volume 1: Introduc- tion to Hyperledger Business Blockchain Design Philosophy and Consensus (2017), pp. 23-24.

[20] Hyperledger Foundation, Hyperledger Architecture, Volume 2: Smart Con- tracts (2018), pp. 9-10.

11

CSP, 16–18, 22

Các tướng quân Byzantine, 11 Cân bằng Nash, 10 Cây Merkle, 13, 14 Danh tính số, 15, 16 Hàm băm, 9, 10, 12, 13 Hệ thống phi tập trung, 6, 7 Lý thuyết trò chơi, 7–11

Mã hóa công khai, 9

Người dùng hợp lệ, 17, 18 Người đăng ký, 16, 17 Người đăng nhập, 17 RP, 18, 22 Xác thực số, 15 Định danh số, 17

Một phần của tài liệu Blockchain và ứng dụng trong định danh số (Trang 50)