1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo môn học an toàn thông tin tìm hiểu về blockchain

17 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Về Blockchain
Tác giả Đăng Hữu Ngọc, Võ Thanh Huy
Người hướng dẫn Nguyễn Thị Lệ Quyên
Trường học Trường Đại Học Sư Phạm Đà Nẵng
Chuyên ngành An Toàn Thông Tin
Thể loại báo cáo
Định dạng
Số trang 17
Dung lượng 784,69 KB

Nội dung

Với tiềm năng vượt trội trong việc cung câp một môi trường giám sát, bảo mật và minh bạch cho các giao dịch trực tuyến, blockchain đã thu hút được sự quan tâm và sự quyết tâm trong việc

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHAM ĐÀ NANG

KHOA TIN HOC

-000 - BAO CAO MON HOC

AN TOAN THONG TIN TIM HIEU VE BLOCKCHAIN

Giáo viên hướng dẫn : Nguyễn Thị Lệ Quyên

Sinh viên thực hiện : Đăng Hữu Ngọc

: Võ Thanh Huy

Trang 2

LỜI NÓI ĐẦU

Blockcham là một công nghệ đang trở thành xu hướng và thu hút được sự quan tâm của nhiêu người trong thời gian gân đây Với tiềm năng vượt trội trong việc cung câp

một môi trường giám sát, bảo mật và minh bạch cho các giao dịch trực tuyến, blockchain

đã thu hút được sự quan tâm và sự quyết tâm trong việc tìm hiệu và nghiên cứu về công nghệ này

Bài báo cáo này sẽ tập trung vào việc giới thiệu và nghiên cứu về lĩnh vực blockchain Dau tiên, chúng tôi sẽ cung câp một cái nhìn tông quan về công nghệ blockchain, bao gồm cách hoạt động cơ bán và các thành phân chính của nó Sau đó, chúng tôi sẽ đi vào chi tiết về những ứng dụng tiểm năng của blockchamn trong các lĩnh vực công nghệ thông tmn, tài chính, y tê và những ngành công nghiệp khác

Bên cạnh đó, chúng tôi cũng sẽ xem xét các thách thức và rủi ro có thê phát sinh trong quá trình triển khai và sử dụng blockchain, cũng như những giải pháp tiêm năng đề vượt qua những rào can nay

Qua báo cáo này, chúng tôi hy vọng sẽ giúp độc giả có một cái nhìn tổng quan và sâu sắc về công nghệ blockchain, đồng thời cung câp một nên tảng co bản để tiếp cận và

nghiên cứu về lĩnh vực này

Trang 3

MỤC LỤC

1 Dinh nghiia Blockchain 0 0000000 ccc cccecceececeseeeeeseecessesensseeestssensseeenees 4

1.2 Cấu trúc của Blockchain ¿22+ 21 2212212221211211121121121122211 xe 4.5

1.3 Các hoạt động cơ bản Q1 Q1 H112 112 11119111121 nn H2 kg 5

1.4 Những sự phát triển từ Bitcoim - 5c St TH HH HH HH He 5.6

1.1 Hashmg ĂẶ 2.02220122111122 1111511111111 cr 2111 HH ky 6.7 II na 4 8.9

TỎNG KẾT 55<<< 2 HH HH HHHT 100E71011E.10 E40 E1 ni, 16

1 Kếtluận nh HH HH He gu eo l6

Trang 4

I Tên đề tài : Tìm biểu về lĩnh vực Blockchain

II Các khái niệm cơ bản trong Blockchain

1 Định nghĩa Blockchain

1.1

12

Bitcoin va Blockchain

© Bitcoin 1a mot loai déng tiền ảo với hai đóng góp lớn: một hệ thông tiền

tệ kỹ thuật số hoạt động liên tục và một mô hình cho công nghệ ứng dụng phi tập trung tự động được gọi là blockcham Mặc dù trọng tâm

của báo cáo là về một blockchain nói chung, nhưng ta phải hiểu hoạt động của công nghệ đẳng sau Bitcoin đề đánh giá đầy đủ sự đổi mới của blockchain

Bitcoin duge mét ngudi hoac nhiéu người bí ấn tự xung la Satoshi

Nakamoto vao khoang nam 2008, 2009 Bitcoin tao nén mét nén tang

sáng tạo để giao dịch ngang hàng mà không cần đến một cơ quan thâm định trung ương nào Như vậy thì làm thể nào đề Bitcoin có được sự tin tưởng và bảo mật trong giao địch? Bằng cách cài đặt các chương trình phần mềm dành cho kiêm chứng, xác thực, đồng thuận trong một cơ sở

hạ tầng mới gọi là Blockcham

Blockchain (chuỗi khối) là một chuỗi các block, có cầu trúc tương tự như một danh sách liên kết (linked list), mỗi block chứa thông tin của nhiều giao dịch Khác với những phương pháp truyền thống, khi mà 2 người giao dịch với nhau phải thông qua các bên trung gian như ngân hàng, đại lý thẻ tín dụng, thì Blockchain cho phép 2 người giao dich ngang hang (peer-to-peer) nhimg loại tai san kỹ thuật số mà không cần tới các bên trung gian này

Các hoạt động cơ bản

Các hoạt động trong một mạng phi tập trung là trách nhiệm của

những người tham gia ngang hàng và nút tính toán tương ứng của họ - ví dụ như laptop, máy tính bàn và các máy chủ Những hoạt động này bao gồm kiêm chứng giao dich, thu thập các giao dịch cho một khối, truyền ổi giao

Trang 5

dịch được bầu chọn trong khối, và đồng thuận trong việc tạo khối nào để

thêm tiếp vào chuỗi tạo thành một bản ghi bất biến

Đầu tiên ta tìm hiệu về phương diện những người tham gia Có 2 vai trò chính cho những người này Đầu tiên là những người khởi tạo việc truyền giao giá trị bằng cách tạo giao dịch, và tiếp đến là những người gọi

là thợ đào - họ thực hiện công việc tính toán bé sung để xác minh giao dịch,

truyền phát giao dịch, cạnh tranh đề yêu cầu quyền tạo khối, làm việc đề

cùng đạt được sự đồng thuận bằng cách xác thực khối, phát khối mới được tạo và xác nhận giao dịch Những người thợ đào sẽ được thưởng bitcoIn dé khuyén khích họ trong việc quản ly blockchain

Việc kiểm chứng giao dịch được thực hiện độc lập bởi tất cả các thợ

đào Quá trình này liên quan đến việc thâm định bằng hơn 20 tiêu chí, bao gồm kích thước, cú pháp, v.v Một số tiêu chí sau đây là: UTXO hợp lệ, UTXO đầu ra tham chiếu là chính xác, lượng đầu vào tham chiếu và lượng

đầu ra khớp đủ Giao địch không hợp lệ sẽ bị từ chối và sẽ không được phát

sóng Tắt cả các giao dịch hợp lệ được thêm vào một nhóm giao dịch Các

thợ đào chọn một tập hợp các giao dịch từ nhóm này đề tạo một khối

Bitcoin blockchain la ma nguồn mở và toàn bộ code có trên Github

Vào những năm ban đầu quanh 2009, mã nguồn mở này được phát trién dé

tạo ra nhiều đồng tiền ảo khác Bitcoin hỗ trợ một tính năng đặc biệt và tùy

chọn gọi la scripts dé chuyén giao giá trị có điều kiện Ethereum

Blockchain đã mở rộng tính năng scripting này thành một nền tàng thực thi

9 code mạnh mẽ gọi là Smart Contracts - Hợp đồng thông minh Một hợp đồng thông minh cung cấp khả năng chạy code cho logic kinh doanh nhúng

trên Blockcham cực kỳ mạnh mẽ Dựa trên những khả năng đó, 3 loại chính

của Blockchain đã phát triển từ nền tảng Bitcoin:

- Loại một xử lý đông tiên trong chuối tiền tệ ảo, ví dụ: Bicoimn

Trang 6

- Loại hai hỗ trợ tiền ảo và một lớp logic kinh đoanh được hỗ trợ bởi

việc thực thi code, ví dụ: Ethereum

- Loại ba không liên quan tới tiền ảo nhưng có hỗ trợ thực thi phan mềm cho logic kinh doanh, vi dy: Linux Foundation’s Hyperleger

1 Proof of Work

Một trong những ý tưởng cốt lõi của blockchain đó là bất kì ai cũng phải bỏ ra

nhiều công sức tính toán thì mới có thể thêm đữ liệu vào blockchain Sự an toàn và đồng

nhất của blockchain là nhờ thiết kế này Thêm vào đó, khi bỏ công sức ra để thêm đữ liệu vào blockchain thì người tham gia đó sẽ được trao một phân thưởng (đây là lý do mọi người tham gia đào com)

Cơ chế này tương tự trong đời thực: mỗi người bỏ công sức ra làm việc thì sẽ kiếm được tiền dé chu cấp cho cuộc sông Trong hệ thống blockchain, một số người tham gia dao coin (miners) phải liên tục tính toán dé giúp hệ thống tiếp tục hoạt động, thêm block vào chuỗi và nhận phần thưởng (là coin đào được) Kết quả của việc đào coin (mining) là mỗi block được thêm vào blockchain sẽ càng thêm an toàn, giúp toàn bộ đữ liệu blockchain được ổn định và khó bị giá mạo Nhưng đáng chú ý là những miners này phải chứng minh là họ đã bỏ công sức ra để mining

Việc "bỏ công sức tính toán và chứng minh mình đã làm” này được gọi là proof- of-work Việc này rất khó và thậm chí nhiều máy tính tốc độ cao cũng không thể thực

hiện nhanh chóng Thêm nữa, độ khó của công việc còn được tăng theo thời gian nhằm

đảm bảo chỉ có 6 block được đào trong mỗi giờ Trong Bitcoin, công việc là tìm ra một

mã hash thoả mãn một số điều kiện Mã hash thoả mãn đó được gọi là proof

Một chú ý nữa, thuật toán Proof-of-work phải thoả mãn một điều kiện: tìm ra proof thì khó, nhưng xác nhận proof đó là đúng (verify) thì phải nhanh và đễ Khi một người tìm ra proof đó và đưa cho những người trong mạng lưới kiểm tra thì họ có thể dé dàng verify là đúng

1I Hashing

Mục này chúng ta sẽ tìm hiểu về hàm băm (Hashing) Nếu bạn đã quen thuộc thì có thê

bỏ qua

Trang 7

Hashing là tiến trình đề lấy mã băm (hash) của một dữ liệu nhất định Mỗi hash đối với

một đữ liệu (data) là duy nhất Hàm băm (hash function) là một hàm với đầu vào là đữ

liệu có độ lớn tuỳ ý, đầu ra là một hash có kích thước cô định Sau đây là những tính chất

của hàm băm:

1 Dữ liệu gốc không thê tái tạo lại chỉ dựa vào hash của dữ liệu đó Vì thế hash

không phải là mã hoá

2 Một đữ liệu cô định thì chỉ sinh ra một hash có định và không trùng lặp với hash

của đữ liệu khác

3 Thay đôi thậm chí 1 bit dữ liệu nhỏ trong data cũng sinh ra một hash tương ứng hoàn toàn khác ban đầu

“| like donuts”

SHA256( )

{8086 7f6efd4484c23b0e7 184e53fe4af6ab49b9715293fcd50d5b2bfa73a4d0

Ham băm được sử dụng nhiều đề kiểm tra tính toàn vẹn của đữ liệu Ví dụ một số

phần mềm sẽ có mã hash đi kèm đề kiểm tra gói phần mềm chưa qua chỉnh sửa Khi tải gói phần mềm về bạn có thê tinh lai hash của nó đó đề so sánh với mã hash mà nhà phát trién phan mém cung cấp

Trong hé thong blockchain, Hashing được sử dụng dé dam bảo tính toàn vẹn của các block Đầu vào của hàm băm lại có thêm mã hash của block liền kề trước, khiến cho

việc thay đôi một block trong toàn bộ chuỗi là không thê (hoặc gần như không thể): Một

khi một block thay đôi thì phải tính toán lại toàn bộ hash của block đó và các block liên

tiếp phía sau

12 Hashcash

Bitcom sử dụng [lashcash, một thuật toán Proof-o£-Work vốn dùng dé ngăn chặn thư rác Thuật toán được chia làm các bước:

Trang 8

1 Lấy các dữ liệu đã biết (trong email thì là dia chỉ người nhận, trong Bitcoin thì là block headers)

2 Thêm một biến đếm (counter) vào đữ liệu đó, khỏi đầu bằng 0

._ Tính hash của data + counter

4 Kiểm tra xem hash tính được có thoả mãn điều kiện không:

- _ Nếu thoả mãn thì hash đó là kết qua

- _ Nếu không thoả mãn, tăng biến đếm counter lên và tiếp tục làm lại bước 3, 4

Việc lặp lại tính toán với biến đêm counter cho đến khi tìm được hash thoả mãn nay là một quá trình tính toán với khôi lượng lớn

Bây giờ hãy xem điều kiện hash thoả mãn là gì Trong phiên bản gốc của Hashcash, điều kiện một hash được chấp nhận là "20 bit đầu tiên của hash phải bằng 0"

Ở Bitcoin, điều kiện này lại được thay đổi theo thời gian, bởi, theo thiết kế, mỗi block

phải được tạo ra trong 10 phút, dù cho kha năng tính toán càng ngày càng lớn theo thời

gian và 36 lượng miners

Ví dụ với thuật toán này, data ban dau la (“I like donuts”) khi kết hợp với counter là ca07ca thì kết quả hash thu được có 3 bytes bằng 0:

“| like donutsca07ca”

SHA256( )

0000002f7c1fe31cb82acdc082cfec47620b7e4ab94f2bí9e096c436fc8cee06

ca07ca là giá trị counter trong hé s6 16, trong hé co s6 10 nó tương đương

13240266

Trang 9

Như vậy vòng lặp thuật toán phải chạy tới counter = 13240266 mới tìm ra một hash có 3 byte bang 0 Diéu do cho thay bạn phải tốn nhiều công sức tính toán thì mới tìm đc một

hash thoả mãn điều kiện

IV Xây dựng phan code

Đầu tiên chúng ta định nghĩa độ khó

const targetBits = 24

O Bitcoin thi targetBits la m6t bién nam trong block header, thể hiện độ khó của

block đó khi được đào Chúng ta không xây dựng phần thay đổi độ khó cho blockchain

đơn giản này, nên targetBits được thê hiện là một hằng số

24 cũng là một hằng số được chọn ngẫu nhiên, mục đích của chúng ta là chọn một

độ khó bé hơn 256 bifs, không nhỏ quá va cũng không quá lớn vì targetBIts càng lớn thi

độ khó càng tăng thêm nhiều lần

type ProofOfWork struct {

block *Block

target *big.Int

func NewProofOfW ork(b *Block) *ProofOfWork {

target := big NewInt(1)

target.Lsh(target, uint(256-targetBits))

pow := &ProofOfWork {b, target}

return pow

}

Ở đây ProofOfWork là một struct chứa pomter tới | block và một target Biến

target này chính là độ khó Chúng ta sử dụng big.Int để so sánh hash với target: chuyên hash thành big.Int và kiểm tra xem hash có bé hơn target hay không

Trang 10

Trong hàm NewProofOfWork chúng ta khởi tạo target bang 1 và shift left (dich

trái) 256 - targetBifs bits 256 là độ dài của một hash sinh ra bởi thuật toán băm SHA-

256 Biêu diễn của target trong hệ 16 là:

0x0000010000000000000000000000000000000000000000000000000000000000

So sánh với 2 mã hash trong 2 ví dụ trước:

0fac49 1ó Iaf82ed938add1d8725835cc123a1Ia87b1b196488360e58d4bfb5Ie3

0000010000000000000000000000000000000000000000000000000000000000 0000008b0£1 Lec78bab747864db66bcb9fb89920eec75f£43fdaaeb5544f7f76ca

Mã hash đầu tiên sinh ra từ đata (“I like đonuts”) lớn hon target, do vay khong thoả mãn điều kiện Mã hash thứ 2 sinh ra từ data (“I like donutsca07ca”) nhỏ hơn target,

vì vậy nó thoả mãn điều kiện

Có thê hình dung target là chặn trên, nếu hash bé hơn chặn trên nay thì thoả mãn,

ngược lại thì không Khi chặn trên này ngày càng hạ xuống, thì số lượng hash thoả mãn

sẽ giảm xuống, đồng nghĩa với việc độ khó tăng lên và cần nhiều tính toán hơn đề tìm hash

Hàm dưới đây chuan bi data dé tim hash:

func (pow *ProofOfWork) prepareData(nonce int) []byte {

data := bytes Join(

[[]byte{

pow block PrevBlockHash,

pow block Data,

IntToHex(pow block Timestamp),

IntToHex(int64(targetBits)),

IntToHex(int64(nonce)),

Trang 11

}

[Ibyte{7

)

return data

Chúng ta đơn giản chỉ nhập phần block với targetBits va nonce thành một mảng bytes, hàm hash sẽ thực hiện trên mảng bytes này

func (pow *ProofOfWork) Run() (int, []byte) {

var hashInt big Int

var hash [32]byte

nonce := 0

fmt.Printf("Mining the block containing \"%s\"\n", pow.block.Data) for nonce <maxNonce {

data := pow.prepareData(nonce)

hash = sha256.Sum256(data)

fmt.Printf("\r%x", hash)

hashInt.SetBytes(hash[:])

if hashInt.Cmp(pow.target) == -1 {

break } else {

noncet+

Ngày đăng: 11/01/2025, 22:14