TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG BÀI TẬP LỚN MẠNG MÁY TÍNH ĐỀ TÀI ỨNG DỤNG CỦA SMART CONTRACT BLOCKCHAIN TRONG INTERNET SECURITY VÀ IOT Giảng viên hướng dẫn PGS TS Trần Quang Vi.
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
BÀI TẬP LỚN
MẠNG MÁY TÍNH
ĐỀ TÀI:
ỨNG DỤNG CỦA SMART CONTRACT - BLOCKCHAIN
TRONG INTERNET SECURITY VÀ IOT
Giảng viên hướng dẫn: PGS.TS Trần Quang Vinh
Nhóm sinh viên thực hiện: Nhóm 6
Trang 2LỜI NÓI ĐẦU
Trong thập kỷ vừa qua, việc phát triển và nghiên cứu Công nghệ Blockchain
đã gia tăng theo cấp số nhân Đặc điểm của Blockchain là tính bảo mật, ẩn danh và toàn vẹn mà không phụ thuộc vào các tổ chức bên thứ ba đã thúc đẩy mọi người quan tâm đến nó Ban đầu, Blockchain được tạo ra chỉ để dùng với tiền điện tử, tuy nhiên với sự ra đời của Ethereum giúp hỗ trợ tạo ra và thực hiện các hợp đồng thông minh (là các chương trình máy tính dựa trên Blockchain) thì các ứng dụng ngoài tiền điện tử đã và đang được khám phá và phát triển
Mặc dù đã có những tiến bộ đáng kể trong việc cải thiện công nghệ Blockchain với trọng tâm là các hợp đồng thông minh, tuy nhiên, vẫn còn nhiều thiếu sót trong cách đánh giá mô tả về khả năng ứng dụng của hợp đồng thông minh trong việc bảo mật Internet và IoT
Trong bài báo cáo này, chúng em xác định vào phân tích các tài liệu nghiên cứu đã được công bố sử dụng các hợp đồng thông minh Blockchain trong việc bảo mật Internet nói chung và Internet of Things nói riêng và trình bày bản phân tích hệ thống của các tài liệu đó
Trong quá trình thực hiện tuy có rất nhiều khó khăn nhưng nhờ sự hướng dẫn tận tình của PGS.TS Trần Quang Vinh cũng như nỗ lực của bản thân mà chúng em
đã hoàn thành được đề tài này, nhưng do thời gian cũng như trình độ sinh viên có hạn nên không thể tránh khỏi một vài sai sót Chúng em mong nhận được những lời khuyên của thầy để chúng em có thể hiểu thêm về đề tài này nói riêng và môn học này nói chung Chúng em xin chân thành cảm ơn thầy!
Trang 3MỤC LỤC
MỤC LỤC 3
DANH MỤC HÌNH VẼ 4
CHƯƠNG 1: GIỚI THIỆU 5
CHƯƠNG 2: BLOCKCHAIN 6
1. Khái niệm Blockchain 6
2. Đặc điểm của Blockchain 7
3. Cách hoạt động của Blockchain 7
4. Ứng dụng của Blockchain 10
5. Mô phỏng Blockchain đơn giản 11
CHƯƠNG 3: HỢP ĐỒNG THÔNG MINH 13
1. Ethereum 13
2. Hợp đồng thông minh 13
3. Cách thức hoạt động 13
4. Ứng dụng của hợp đồng thông minh 14
CHƯƠNG 4: ỨNG DỤNG BLOCKCHAIN TRONG HỢP ĐỒNG THÔNG MINH BẢO MẬT MẠNG VÀ IOT 16
1. Các giải pháp bảo mật theo hướng hợp đồng thông minh cho Internet và IoT 16
2. Cách hợp đồng thông minh cải thiện bảo mật trong internet và IoT 20
3. Bằng chứng ủng hộ khả năng sử dụng/tính khả thi của hợp đồng thông minh để giải quyết các vấn đề bảo mật và lỗ hổng bảo mật trên internet và IoT mạnh đến mức nào? 20
CHƯƠNG 5: CÁC VẤN ĐỀ THÁCH THỨC VÀ HƯỚNG NGHIÊN CỨU TRONG TƯƠNG LAI 22
CHƯƠNG 6: KẾT LUẬN 24
TÀI LIỆU THAM KHẢO 25
Trang 4DANH MỤC HÌNH VẼ
Hình 1 Nguyên lý tạo khối
Hình 2 Các giải pháp bảo mật được cung cấp bởi Hợp đồng thông minh cho Internet và
IOT
Hình 3 Tỷ lệ các giải pháp bảo mật mà Hợp đồng thông minh cung cấp cho Internet và
IOT
Trang 5CHƯƠNG 1: GIỚI THIỆU
Internet nói chung và IoT nói riêng đã cách mạng hóa cách chúng ta giao tiếp và cộng tác trong thế giới ngày nay Bảo mật là một trong những thách thức lớn mà IoT đang gặp phải, do tính chất không đồng nhất và tài nguyên bị hạn chế của các thiết bị IoT Hơn nữa, phần lớn các kế hoạch bảo cho hệ thống hiện nay của Internet và IoT đều dựa vào độ tin cậy của các cơ quan quyền lực, khiến chúng dễ bị tấn công bởi nhiều loại tấn công khác nhau, từ điểm lỗi cục bộ (single point of failure) đến giả mạo Khả năng cung cấp bảo mật,
ẩn danh và toàn vẹn của công nghệ Blockchain mà không cần dựa vào các tổ chức bên thứ
ba đáng tin cậy khiến nó trở thành công cụ tốt nhất để đáp ứng các yêu cầu bảo mật của Internet và IoT
Mặc dù khái niệm về Blockchain đã được giới thiệu cùng với sự ra đời của Bitcoin vào năm 2008, nó đã được ứng dụng trong đa dạng các lĩnh vực chỉ sau khi Ethereum ra đời Etherum hỗ trợ việc tạo và thực hiện các hợp đồng thông minh
Hợp đồng thông minh là một đoạn mã máy tính được giới thiệu lần đầu tiên bởi Nick Szabo, được lưu trữ trong mạng Blockchain (trên cơ sở dữ liệu của mỗi nút tham gia) Hợp đồng thông minh xác định các điều kiện và quy tắc mà tất cả các bên sử dụng hợp đồng đồng ý và các hành động được mô tả trong hợp đồng chỉ có thể được thực hiện nếu các điều kiện bắt buộc được đáp ứng và các quy tắc được tuân thủ
Ngày nay, có một số nền tảng Blockchain hỗ trợ thực thi các hợp đồng thông minh bao gồm Hyperledger Fabric, Quorum và nhiều nền tảng khác Với việc hệ thống Hợp đồng thông minh được thực thi trên Blockchain, cho phép phát triển và khám phá các ứng dụng dựa trên Blockchain ngoài tiền điện tử Nhờ đó, hợp đồng thông minh trên nền tảng Blockchains đã được sử dụng trong nhiều lĩnh vực ứng dụng khác nhau, bao gồm cả các thành phố thông minh hỗ trợ IoT
Trang 6CHƯƠNG 2: BLOCKCHAIN
1 Khái niệm Blockchain
Blockchain: là công nghệ chuỗi khối, cho phép dữ liệu chuyền tải một cách an toàn dựa trên hệ thống mã hoá vô cùng phức tạp
Mỗi khối (block) đều chứa thông tin về thời gian khởi tạo và được liên kết với khối trước đó, kèm theo đó là một mã thời gian và dữ liệu giao dịch Dữ liệu khi đã được mạng lưới chấp nhận thì sẽ không có cách nào thay đổi được Blockchain được thiết kế để chống lại việc gian lận, thay đổi của dữ liệu
Công nghệ Blockchain – sự kết hợp giữa 3 loại công nghệ:
• Mật mã học: để đảm bảo tính minh bạch, toàn vẹn và riêng tư thì công nghệ Blockchain đã sử dụng public key và hàm hash function
• Mạng ngang hàng: Mỗi một nút trong mạng được xem như một client và cũng là server để lưu trữ bản sao ứng dụng
• Lý thuyết trò chơi: Tất cả các nút tham gia vào hệ thống đều phải tuân thủ luật chơi đồng thuận (giao thức PoW, PoS, …) và được thúc đẩy bởi động lực kinh tế
Hệ thống Blockchain chia thành 3 loại chính:
• Public: Bất kỳ ai cũng có quyền đọc và ghi dữ liệu trên Blockchain Quá trình xác thực giao dịch trên Blockchain này đòi hỏi phải có rất nhiều nút tham gia Vì vậy, muốn tấn công được vào hệ thống Blockchain này cần chi phí rất lớn và thực sự không khả thi Ví dụ: Bitcoin, Ethereum, …
• Private: Người dùng chỉ được quyền đọc dữ liệu, không có quyền ghi vì điều này thuộc về bên tổ chức thứ ba tuyệt đối tin cậy Vì đây là một Private Blockchain, cho nên thời gian xác nhận giao dịch khá nhanh vì chỉ cần một lượng nhỏ thiết bị tham gia xác thực giao dịch Ví dụ: Ripple là một dạng Private Blockchain, hệ thống này cho phép 20% các nút là gian dối và chỉ cần 80% còn lại hoạt động ổn định là được
• Permissioned (hay còn gọi là Consortium): một dạng của Private nhưng bổ sung thêm 1 số tính năng khác, đây là sự kết hợp giữa Public và Private Ví dụ: Các ngân hàng hay tổ chức tài chính liên doanh sẽ sử dụng Blockchain cho riêng mình
Trang 72 Đặc điểm của Blockchain
• Không thể làm giả, không thể phá hủy các chuỗi Blockchain: theo như lý thuyết thì chỉ có máy tính lượng tử mới có thể giải mã Blockchain và công nghệ Blockchain biến mất khi không còn Internet trên toàn cầu
• Bất biến: dữ liệu trong Blockchain không thể sửa (có thể sửa nhưng sẽ để lại dấu vết) và sẽ lưu trữ mãi mãi
• Bảo mật: Các thông tin, dữ liệu trong Blockchain được phân tán và an toàn tuyệt đối
• Minh bạch: Ai cũng có thể theo dõi dữ liệu Blockchain đi từ địa chỉ này tới địa chỉ khác và có thể thống kê toàn bộ lịch sử trên địa chỉ đó
• Hợp đồng thông minh: là hợp đồng kỹ thuật số được nhúng vào đoạn code then-that (IFTTT), cho phép chúng tự thực thi mà không cần bên thứ ba
if-this-3 Cách hoạt động của Blockchain
Ứng dụng được biết đến và thảo luận nhiều nhất về công nghệ Blockchain chính
là đồng tiền điện tử Bitcoin là một đơn vị tiền tệ kỹ thuật số với mã là BTC, cũng giống như đô la Mỹ bản thân nó không mang giá trị, nó chỉ có giá trị bởi vì có một cộng đồng đồng ý sử dụng nó làm đơn vị giao dịch hàng hóa và dịch vụ
Để theo dõi số lượng Bitcoin mà mỗi người sở hữu trong các tài khoản nhất định
và theo dõi các giao dịch phát sinh từ đó thì chúng ta cần đến một cuốn sổ kế toán, trong trường hợp này nó chính là Blockchain và đây thực tế là một tệp kỹ thuật số theo dõi tất cả các giao dịch Bitcoin
Tệp sổ cái này không được lưu trữ trong một máy chủ trung tâm, như trong một ngân hàng hoặc trong một trung tâm dữ liệu mà ngược lại nó được phân phối trên toàn thế giới thông qua một mạng lưới các máy tính ngang hàng với vai trò lưu trữ dữ liệu
và thực thi các tính toán Mỗi máy tính này đại diện cho một “nút” của mạng lưới Blockchain và mỗi nút đều có một bản sao của tệp sổ cái này
Trên thực tế, cuốn sổ cái luôn được duy trì bởi các máy tính trong mạng ngang hàng được kết nối với nhau Vì thế, nó sẽ có một số điểm khác biệt:
Trang 8• Trong hệ thống ngân hàng, chúng ta chỉ biết các giao dịch và số dư tài khoản của riêng mình thì trên Blockchain của bitcoin chúng ta có thể xem các giao dịch của tất cả mọi người
• Mạng lưới Bitcoin là mạng lưới phân tán không cần bên thứ ba đóng vai trò trung gian xử lý giao dịch
• Hệ thống Blockchain được thiết kế theo cách không yêu cầu sự tin cậy và bảo đảm bởi độ tin cậy có được thông qua các hàm mã hóa toán học đặc biệt
Để có thể thực hiện các giao dịch trên Blockchain, chúng ta cần một phần mềm
sẽ cho phép chúng ta lưu trữ và trao đổi các đồng Bitcoin của mình gọi là ví tiền điện
tử Ví tiền điện tử này sẽ được bảo vệ bằng một phương pháp mã hóa đặc biệt đó là sử dụng một cặp khóa bảo mật duy nhất: khóa riêng tư (private key) và khóa công khai (public key)
Nếu một thông điệp được mã hóa bằng một khóa công khai cụ thể thì chỉ chủ sở hữu của khóa riêng tư là một cặp với khóa công khai này mới có thể giải mã và đọc nội dung thông điệp
Khi mã hóa một yêu cầu giao dịch bằng khóa riêng tư, có nghĩa là chúng ta đang tạo ra một chữ ký điện tử được các máy tính trong mạng lưới Blockchain sử dụng để kiểm tra chủ thể gửi và tính xác thực của giao dịch Chữ ký này là một chuỗi văn bản
và là sự kết hợp của yêu cầu giao dịch và khóa riêng tư của chúng ta
Nếu một ký tự đơn trong thông điệp yêu cầu giao dịch này bị thay đổi thì chữ ký điện tử sẽ thay đổi theo Vì thế, hacker khó có thể thay đổi yêu cầu giao dịch của chúng
ta hoặc thay đổi số lượng Bitcoin mà chúng ta đang gửi
Để gửi Bitcoin (BTC), chúng ta cần chứng minh rằng mình sở hữu khóa riêng tư của một chiếc ví điện tử cụ thể bởi ta cần sử dụng nó để mã hóa thông điệp yêu cầu giao dịch Sau khi tin nhắn của chúng ta đã được gửi đi và được mã hóa thì chúng ta không cần phải tiết lộ khóa riêng tư của mình nữa
Mỗi nút trong Blockchain đều đang lưu giữ một bản sao của sổ kế toán Do vậy, mỗi nút đều biết số dư tài khoản của chúng ta là bao nhiêu Hệ thống Blockchain chỉ ghi lại mỗi giao dịch được yêu cầu chứ không hề theo dõi số dư tài khoản của chúng
Trang 9ta Để biết số dư trên ví điện tử của mình cần xác thực và xác nhận tất cả các giao dịch đã diễn ra trên mạng lưới mà có liên quan tới ví điện tử
Thực tế là các nút sẽ kiểm tra tất cả các giao dịch có liên quan đến ví tiền điện tử chúng ta sử dụng trước đó để gửi Bitcoin (BTC) thông qua việc tham chiếu các lịch
sử giao dịch Có một bản ghi sẽ lưu trữ số BTC chưa được dùng và được các nút mạng lưu giữ giúp đơn giản hóa và tăng tốc quá trình xác minh Vì thế, các ví tiền điện tử tránh được tình trạng chi tiêu đúp giao dịch
Mã nguồn trên mạng lưới Bitcoin là nguồn mở, có nghĩa là bất kỳ ai có máy tính
kết nối được internet đều có thể tham gia vào mạng lưới và thực hiện giao dịch Tuy nhiên, nếu có bất kỳ một lỗi nào trong mã nguồn được sử dụng để phát thông báo yêu cầu giao dịch thì các Bitcoin liên quan sẽ bị mất vĩnh viễn
Nguyên lý tạo khối
Hình 1 Nguyên lý tạo khối
Các giao dịch sau khi được gửi lên trên mạng lưới Blockchain sẽ được nhóm vào các khối và các giao dịch trong cùng 1 khối (block) được coi là đã xảy ra cùng thời điểm Các giao dịch chưa được thực hiện trong 1 khối được coi là chưa được xác nhận
Mỗi nút có thể nhóm các giao dịch với nhau thành một khối và gửi nó vào mạng lưới như một hàm ý cho các khối tiếp theo được gắn vào sau đó Bất kỳ nút nào cũng có
Trang 10thể tạo ra một khối mới Vậy, câu hỏi đặt ra là: hệ thống sẽ đồng thuận với khối nào? khối nào sẽ là khối tiếp theo?
Để được thêm vào Blockchain, mỗi khối phải chứa một đoạn mã đóng vai trò như một đáp án cho một vấn đề toán học phức tạp được tạo ra bằng hàm mã hóa băm không thể đảo ngược
Cách duy nhất để giải quyết vấn đề toán học như vậy là đoán các số ngẫu nhiên, những số khi mà kết hợp với nội dung khối trước tạo ra một kết quả đã được hệ thống định nghĩa Điều này nhiều khi có thể mất khoảng một năm cho một máy tính điển hình với một cấu hình cơ bản có thể đoán đúng các con số đáp án của vấn đề toán học này Mạng lưới quy định mỗi khối được tạo ra sau một quãng thời gian là 10 phút một lần, bởi vì trong mạng lưới luôn có một số lượng lớn các máy tính đều tập trung vào việc đoán ra dãy số này Nút nào giải quyết được vấn đề toán học như vậy sẽ được quyền gắn khối tiếp theo lên trên chuỗi và gửi nó tới toàn bộ mạng lưới
Vậy điều gì sẽ xảy ra nếu hai nút giải quyết cùng một vấn đề cùng một lúc và truyền các khối kết quả của chúng đồng thời lên mạng lưới? Trong trường hợp này, cả hai khối được gửi lên mạng lưới và mỗi nút sẽ xây dựng các khối kế tiếp trên khối mà nó nhận được trước tiên
Tuy nhiên, hệ thống Blockchain luôn yêu cầu mỗi nút phải xây dựng trên chuỗi khối dài nhất mà nó nhận được Vì vậy, nếu có sự mơ hồ về việc block nào là khối cuối cùng thì ngay sau khi khối tiếp theo được giải quyết thì mỗi nút sẽ áp dụng vào chuỗi dài nhất
Do xác suất việc xây dựng các block đồng thời là rất thấp nên hầu như không có trường hợp nhiều khối được giải quyết cùng một lúc và nhiều lần tạo ra các khối nối đuôi khác nhau Do đó, toàn bộ chuỗi-khối sẽ nhanh chóng ổn định và hợp nhất lại khi
mà mọi nút đều đồng thuận
Trang 11✓ Dịch vụ tài chính
✓ Nghệ thuật & Giải trí
✓ Chăm sóc sức khỏe
✓ …
5 Mô phỏng Blockchain đơn giản
Theo như định nghĩa và khái niệm, Blockchain là một chuỗi các Block chứa thông tin của người dùng gửi lên trong hầu hết các giao dịch
Ta có một ví dụ trực quan về Blockchain để hiểu rõ hơn về đặc điểm và các tính chất của nó
Giả sử một khối Block đơn giản bao gồm các thông tin sau:
✓ prevHash (giá trị mã hóa của Block trước đó,) – giả sử với Block đầu tiên được đưa lên Chain thì prevHash là chuỗi ‘0000’
✓ data (thông tin người dùng đưa vào Block để gửi giao dịch) – giả sử trong IoT thì
data là một tin nhắn được vi điều khiển gửi đi với nội dung ‘Hello’
✓ timeCreate (thời gian hiện tại tạo Block) – là một chuỗi có dạng ‘HH:mm:ss
DD/MM/YYYY’ (VD: 12:25:40 06/01/2022)
✓ currentHash (giá trị mã hóa của Block hiện tại) – là một chuỗi được mã hóa từ các thông tin trong Block (prevHash + data + timeCreate) bằng thuật toán SHA256
(VD: ‘abcdefghiklm’)
Mô phỏng trong code thì Block sẽ tồn tại dưới dạng như sau:
✓ Trong Class Block ta sẽ có thêm 1 hàm genarateHash dùng thuật toán SHA256
để mã hóa các thông tin là:
✓ prevHash
✓ data
✓ timeCreate (thời gian thực hiện tại)
Trang 12 Hàm genarateHash sẽ mã hóa 3 thông tin trên và cho ra chuỗi mã hóa sau cùng (currentHash) được cho là thông tin mã hóa của Block hiện tại
VD: Vi điều khiển gửi 1 tin nhắn với nội dung ‘Hello’ vào Block đầu tiên để đưa
lên giao dịch Ta có thể coi Block đầu tiên này có prevHash là một chuỗi có giá
trị ‘0000’, thời gian thực gửi tin nhắn là ’01:19:27 06/01/2022’
Ta được thông tin mã hóa của Block đầu tiên (currentHash) như trên hình:
✓ Và tương tự khi có nhiều con VĐK cùng đẩy thông tin vào trong Block và đưa lên giao dịch, điều đó tạo lên một Blockchain đơn giản với các Block nối tiếp nhau
✓ Tính bất biến và bảo mật an toàn của Blockchain ở việc Block hiện tại sẽ có giá trị prevHash lấy từ giá trị currentHash của Block trước đó
Kiểm tra tính an toàn của Blockchain, ta phải kiểm tra 2 điều kiện:
✓ prevHash của Block hiện tại có bằng với currentHash của Block trước đó
hay không?
✓ Thực hiện mã hóa lại Block hiện tại bằng hàm genarateHash để so sánh với
currentHash của Block hiện tại Từ đó kiểm tra liệu thông tin data người
dùng gửi lên có bị thay đổi bằng dữ liệu giả hay không?