Tải bản đầy đủ (.docx) (28 trang)

Bitcoin và Blockchain

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.08 MB, 28 trang )

Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Mục lục

Mật mã học nâng cao – Nhóm 1


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Phần I: Giới thiệu về đồng tiền điện tử Bitcoin
1. Bitcoin là gì?

Bitcoin (ký hiệu: BTC) là đồng tiền điện tử đầu tiên trên thế giới do một người
tên là Satoshi Nakamoto tạo ra vào năm 2008. Khi mới được tạo ra, giá trị của
Bitcoin (BTC) là rất bé so với USD.
Bitcoin có cách hoạt động khác hẳn so với các loại tiền tệ điển hình: không có
một ngân hàng trung ương nào quản lý nó và hệ thống hoạt động dựa trên một giao
thức mạng ngang hàng (Peer-to-peer – P2P) trên Internet. Sự cung ứng Bitcoin là tự
động, hạn chế, được phân chia theo lịch trình định sẵn dựa trên các thuật toán.

2. Mục đích của việc tạo ra Bitcoin:

Bitcoin được thiết kế ra với mục đích trở thành đồng tiền chung cho cả thế giới.
Giúp mọi cá nhân có thể gửi tiền xuyên quốc ra với chi phí thấp, thời gian nhanh. Hơn
nữa, mọi người đều có thể xem được giao dịch, những không biết được thông tin
người gửi và nhận. Bitcoin sử dụng công nghệ Blockchain giúp giao dịch trở nên an
toàn hơn.
3. Lịch sử phát triển:

Mật mã học nâng cao – Nhóm 1



Bài tập lớn: Nghiên cứu hệ thống Bitcoin


















Tháng 8/2008: Neal Kin, Vladimir Oksman và Charles Bry cùng nhau nộp
đơn xin cấp bằng sáng chế cho một ứng dụng được mã hóa. Sau đó, 3 người
này đã gặp phải một cáo buộc từ Satoshi Nakamoto về việc ông mới chính là
người đưa ra khái niệm Bitcoin. Mặc dù vậy bộ 3 trên đã phủ nhận những điều
này.
Tháng 10/2008: Satoshi Nakamoto công bố một số giấy tờ quan trọng cho
thấy một ý tưởng về một phiên bản điện tử peer-to-peer của những đồng tiền
thực tế. Đây chính là nền tảng quan trọng của Bitcoin, một đồng tiền không thể
bị làm giả.
Tháng 1/2009: Ứng dụng đầu tiên trợ giúp việc khai thác Bitcoin ra đời, với

cái tên Genesis. Cuối tháng đó, Satoshi Nakamoto tiến hành giao dịch đầu
tiên với Hal Finney - một chuyên viên mật mã.
Tháng 10/2009: The New Liberty Standard đưa ra giá trị quy đổi 1 USD
tương đương 1,309 Bitcoin. Lần đầu tiền một đồng tiền ảo được sự công nhận
có giá trị về mặt thực tế trên thị trường tiền tệ thế giới.
Tháng 2/2010: Thị trường Bitcoin đầu tiên của thế giới được thành lập.
Tháng 8/2010: Lần đầu tiên Bitcoin bị hacker hỏi thăm, trong tích tắc xuất
hiện thêm 184 tỷ Bitcoin trên thị trường làm giá trị quy đổi Bitcoin ra USD chỉ
còn là vài cent.
Tháng 10/2010: Sau hàng loạt vụ xâm phạm an ninh, Bitcoin dần lùi về hậu
trường cùng với những cáo buộc của nhiều chính phủ về những hoạt động rửa
tiền và tài trợ cho khủng bố. Mặc dù vậy sau đó 1 tháng vẫn có báo cáo về việc
tổng giá trị của thị trường Bitcoin đạt 1 triệu USD.
Năm 2013: Đã có rất nhiều quốc gia chấp nhận mua bán đồng bitcoin với các
giá trị của nó nhưng bên cạnh đó cũng có một vài quốc gia cấm sừ dụng nó, ví
dụ như Thái Lan đã cấm không sử dụng bitcoin.
Năm 2014: Nhiều các hoạt động diễn ra nhằm thúc đẩy các dịch vụ hoặc các
ngân hàng sử dụng bitcoin, ví dụ như có dịch vụ bảo hiểm bitcoin, một vài
quốc gia còn tính thuế đối với giao dịch bitcoin. Nhưng bên cạnh đó cũng có

Mật mã học nâng cao – Nhóm 1


Bài tập lớn: Nghiên cứu hệ thống Bitcoin















những sự nghi ngờ và có nhiều công ty phá sản về đồng bitcoin như các công
ty của Nhật.
Tháng 1/2015: Thị trường chứng khoán New York báo cáo về việc có tới 75
triệu USD từ các nhà đầu tư đã đổ vào Bitcoin. Một tín hiệu tín cực sau quãng
thời gian thăng trầm của đồng tiền ảo này.
Tháng 11 năm 2015: ký hiệu Bitcoin đã được chính thức đưa vào bộ mã
Unicode tại vị trí U+20BF trong bảng mã này.
Ngày 5 tháng 6 năm 2016: chiếc máy Bitcoin ATM đầu tiên tại Việt Nam bắt
đầu được đưa vào thử nghiệm .Chiếc máy này được sản xuất bởi BitAccess,
điều hành bởi Bitcoin Vietnam và Bspend và được kết nối trực tiếp tới sàn giao
dịch VBTC để mua và bán Bitcoin ra tiền Đồng.Sau đó, chiếc Bitcoin ATM thứ
2 được đưa vào sử dụng tại quán cafe Bitcoin tại 74 Bùi Viện, thành phố Hồ
Chí Minh vào tháng 12/2016.
Ngày 2 tháng 3 năm 2017: giá Bitcoin lần đầu vượt giá 1 ounce vàng (1242 đô
la Mỹ)
Ngày 1 tháng 4 năm 2017: Nhật Bản đã công nhận Bitcoin là một phương
thức thanh toán chính thức.Sau đó, ngày 9/5/2017, Úc đã bãi bỏ việc thu thuế
đối với Bitcoin và nó được đối xử như một loại tiền tệ cho mục đích thuế.
Ngày 25 tháng 7 năm 2017: chính phủ Mỹ đã đánh sập sàn giao dịch BTC-e
thông qua việc bắt giữ người điều hành Alexander Vinnik.
Ngày 15 tháng 8 năm 2017: công ty Blockstream bắt đầu sử dụng các vệ tinh
để truyền tải dữ liệu chuỗi khối Bitcoin tới người dùng toàn cầu, kể cả việc họ

không có Internet.
Ngày 26 tháng 10 năm 2017: trường Đại học FPT là trường Đại học đầu tiên
tại Việt Nam chấp nhận thanh toán bằng Bitcoin.

Hiện tại, giá Bitcoin đang ở mức 7.275 đô la Mỹ cho mỗi bitcoin vào thời điểm
ngày 3 tháng 11 năm 2017.

Mật mã học nâng cao – Nhóm 1


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Phần II: Cách thức hoạt động của hệ thống
Bitcoin
1. Giới thiệu về Blockchain:

Blockchain là một cơ sở dữ liệu phân cấp lưu trữ thông tin trong
các khối thông tin được liên kết với nhau bằng mã hoá và mở rộng
theo thời gian. Mỗi khối đề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 đó thông qua giá trị băm, kèm một mã
thời gian và dữ liệu giao dịch. Blockchain được thiết kế để chống lại
việc thay đổi của dữ liệu. Một khi đã được mạng lưới chấp nhận thì
sẽ không có cách nào thay đổi được nó.

Vì vậy, Blockchain có ứng dụng rất lớn ví dụ như ghi lại những
sự kiện, hồ sơ y tế, xử lý giao dịch, công chứng, danh tính và chứng
minh nguồn gốc. Việc này có tiềm năng xoá bỏ các hậu quả lớn khi
dữ liệu bị thay đổi trong bối cảnh thương mại toàn cầu.
Blockchain được phát minh và thiết kế bởi Satoshi Nakamoto
vào năm 2008 và được hiện thực hoá vào năm 2009 trong việc sử

dụng và phát hành Bitcoin – khi Blockchain đóng vai trò như là một
sổ cái ghi lại tất các giao dịch. Qua việc sử dụng mạng lưới ngang
hàng và một hệ thống dữ liệu phân cấp, Bitcoin Blockchain được
quản lý tự động. Việc phát minh ra Blockchain giúp Bitcoin trở thành
loại tiền tệ kỹ thuật số đầu tiên giải quyết được vấn đề double
spending (chi tiêu gian lận khi 1 lượng tiền được dùng 2 lần).

Mật mã học nâng cao – Nhóm 1


Bài tập lớn: Nghiên cứu hệ thống Bitcoin
2. Giải thuật chữ ký số trên đường cong Elliptic:
 Thuật toán tạo chữ kí:
o Chuẩn bị:

Giả sử Alice muốn gửi một thông báo đã ký đến Bob. Ban đầu, họ phải thống
nhất các tham số đường cong ,
Tham số
Đường cong E
G
N

Mô tả
Trường đường cong elliptic Fq và phương trình được sử dung
Điểm cơ sở thuộc đường cong
Bậc của G(nG = O), với O là điểm ở vô cùng

Tạo khóa:
1.
Chọn số ngẫu nhiên d∈ [1, n – 1] làm khóa bí mật.

2.
Tính Q(xQ, yQ) = dG làm khóa công khai.
o Kí số trên bản rõ m:
1.
1.Tính toán e = HASH(m), hash là hàm băm mật mã như sha-1,2
2.
Chọn một số ngẫu nhiên k ∈ [1, n – 1]
3.
Tính điểm kG = (x1, y1)
4.
Tính r = x1 mod n. Nếu r = 0, quay lại bước 2
5.
Tính k-1 (theo mod n)
6.
Tính s = [k-1 (e + dr)] mod n. Nếu s = 0 quay lại bước 2
 Thuật toán xác minh chữ kí:
Để Bob chứng thực chữ ký của Alice, anh ta phải có một bản sao của điểm cong
chính QA :
1.
Tọa độ của QA và O là khác nhau
2.
Kiểm tra QA có nằm trên đường cong
3.
Kiểm tra n QA = O
o

Sau đó Bob thực hiên các bước sau:
4.
Kiểm tra r và s có là các số tự nhiên ∈ [1, n – 1] không?
5.

Tính toán e = hash(m), hash là hàm băm sử dụng cho kí sô
6.
Tính w = s-1 (theo mod n)
7.
Tính u1 = ew mod n và u2 = rw mod n
8.
Tính điểm đường cong X = u1G + u2Q = (xx, yx)
9.
Nếu X = O chữ kí không hợp lệ, Ngược lại tính v = xx mod n.
10. Chữ ký chỉ được chấp nhận nếu v = r.
Quá trình kiểm tra chữ ký được thực hiện như trên bởi: nếu chữ ký (r, s) trên m
là đúng thì s = [k-1 (e + dr)] mod n. k ≡ s -1 (e + dr) ≡ s -1e + s-1 rd ≡ we + wrd ≡ u1 +
u2d (mod n). Vì vậy, u1G + u2Q = (u1 + u2d)G = kG, và vì vậy v = r.
 Ví dụ minh họa:
Chọn đường cong elliptic E: y2 = x 3 + x + 1 trên trường Z23, điểm ở vô cùng
O, điểm cơ sở G(17, 3).
Tính bậc n của G:
Ta có 2G = (13, 16); 4G = (5, 19); 6G = (17, 20) = -G; 7G = G + (-G) = O
Suy ra n = 7 là bậc của G.

Mật mã học nâng cao – Nhóm 1


Bài tập lớn: Nghiên cứu hệ thống Bitcoin
Tạo khóa
1.
Chọn số ngẫu nhiên d = 6 làm khóa bí mật.
2.
Tính Q(xQ, yQ) = 6G = (17, 20) làm khóa công khai
Kí trên bản rõ m

1.
Tính toán e=hash(m), tính e là số nguyên e=4
2.
Chọn một số ngẫu nhiên 2 ∈ [2, 6]
3.
Tính điểm 2G = (13, 16)
4.
Tính r = 13 mod 7 = 6.
5.
Tính 2-1 (mod 7) = 4 vì 2*4 mod 7 = 1
6.
Tính s = 4 (5 + 6*6) mod 7 = 3 ≠ 0
Vậy chữ kí trên bản rõ m là (6, 3)
Kiểm tra chữ ký
1.
2.
3.
4.
5.
6.
7.

r = 6 và s = 3 trong khoảng [2, 6].
Tính hàm băm e=hash(m) = 4
Tính w = 3-1 (mod 7) = 5 vì 3*5 mod 7 = 1
Tính u1 = 5*5 mod 7 = 4 và u2 = 6*5 mod 7 = 2
Tính X = 4G + 2Q = (5, 19) + 2 (17, 20) = (5, 19) + (13, 7) = (13, 16)
Vì X ≠ O nên tính v = 13 mod 7 = 6.
v = r nên chữ ký là đúng!


3. Cách thức giao dịch trong hệ thống Bitcoin:

Về cơ bản, có thể hiểu các giao dịch trong hệ thống Bitcoin được
tập hợp thành một tập tin kỹ thuật số, trong đó lưu trữ danh sách
các tài khoản và số tiền như một sổ cái (ledger). Tập tin này có thể
được duy trì trên bất cứ máy tính nào trong hệ thống. Tuy nhiên, tập
tin này chỉ cần thiết với những người muốn góp phần duy trì hệ
thống, người dùng thông thường (chỉ sử dụng Bitcoin để gửi và nhận
tiền) không cần thiết phải lưu trữ nó.

Mật mã học nâng cao – Nhóm 1


Bài tập lớn: Nghiên cứu hệ thống Bitcoin
Để thực hiện một cuộc giao dịch chuyển tiền, người dùng phát
tán tới mạng lưới Bitcoin một thông điệp thông báo số tiền của mình
giảm xuống và số tiền mà những người khác nhận được như là kết
quả của một giao dịch (transaction). Các máy tính (hay điểm nút –
node) trong mạng lưới sẽ lưu giao dịch này vào bản sao sổ cái của
mình, sau đó tiếp tục gửi giao dịch đó đến các máy khác. Bằng cách
sử dụng các tính chất bảo mật dựa trên toán học, hệ thống cho phép
mạng lưới duy trì chung một sổ cái duy nhất mà không bị bất đồng
bộ giữa các nút điểm.
Trên thực tế, các giao dịch được phát tán tới mạng lưới được thu
thập vào các khối (block). Các khối này được tạo ra và liên kết theo
cơ chế Blockchain và lưu vào sổ cái. Mỗi khối có thể gồm một hoặc
nhiều giao dịch và mỗi giao dịch lại gồm một hoặc nhiều đầu vào –
input (là đầu ra trong giao dịch trước), một hoặc nhiều đầu ra –
output (chứa thông tin giao dịch và một đoạn script chứa các điều
kiện giao dịch). Một giao dịch chỉ được mạng lưới coi là hợp lệ khi

tổng giá trị đầu ra không cao hơn tổng giá rị đầu vào và đồng thời
thỏa mãn các điều kiện kiểm tra trong đoạn mã script.
Cấu trúc chung của một giao dịch:

Cấu trúc chung mỗi đầu vào của một giao dịch:

Cấu trúc chung mỗi đầu ra của một giao dịch:

Mật mã học nâng cao – Nhóm 1


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Ví dụ về một giao dịch đơn giản (một đầu vào và một đầu ra):

Trong giao dịch trên, đầu vào (input) lấy ra 50 BTC từ đầu ra
(output) thứ 0 của giao dịch có mã băm là f5d8ee39… b9a6 và đầu
ra gửi 50 BTC đến địa chỉ (address) 40437170…549d. Khi người nhận
muốn sử dụng số tiền này, anh ta phải tham chiếu đến output thứ 0
của giao dịch này vào input trong giao dịch mới của anh ta.
Khi thực hiện giao dịch cần xử lý các thành phần:
• Inputs (các đầu vào):
o Một input là một tham chiếu một output từ một giao
dịch trước đó và phải là một output chưa được sử
dụng (unspent). Mỗi giao dịch có thể có nhiều đầu
vào. Tất cả các giá trị input của một giao dịch mới
(tức là tất cả số tiền của các output từ các giao dịch
trước được tham chiếu đến) được cộng lại thành tổng
và tổng này (sau khi trừ đi phí giao dịch – transaction
fee) sẽ được sử dụng toàn bộ vào các output.

o Previous tx: mã băm của giao dịch trước.
o Index: xác định output trong giao dịch được tham
chiếu đến.
o ScriptSig: nửa đầu của đoạn mã script, bao gồm 2
thành phần là chữ ký (signature) và khóa công khai
(public key). Chữ ký được sinh ra dựa trên thuật toán
ECDSA khi ký vào mã băm của một phiên bản đơn
giản của chính giao dịch mới. Khóa công khai phải
thỏa mãn sự tương ứng với mã băm địa chỉ ở output
trong giao dịch trước, từ đó xác thực được chữ ký,

Mật mã học nâng cao – Nhóm 1


Bài tập lớn: Nghiên cứu hệ thống Bitcoin
chứng minh giao dịch thực sự được tạo bởi chủ sở
hữu của địa chỉ trên.
• Output (các đầu ra):
o Một output chỉ ra những thông tin chuyển giao tiền
trong giao dịch và có thể có nhiều hơn một output
mỗi giao dịch.
o Value: số lượng tiền theo đơn vị Satoshi (1 BTC =
100,000,000 Satoshi) ứng với mỗi output.
o ScriptPubKey: nửa sau của đoạn mã script chứa địa
chỉ Bitcoin của người nhận thường có dạng “OP_DUP
OP_HASH160
<địa
chỉ>
OP_EQUALVERIFY
OP_CHECKSIG”, với các lệnh để xác thực tính hợp lệ

khi dùng ouput này trong các giao dịch sau.
o VÌ mỗi output chỉ có thể được tham chiếu đến bởi
một input trong các giao dịch sau này, toàn bộ số
tiền trong input phải chuyển thành các output. Trong
trường hợp số tiền input là 50 BTC nhưng người gửi
chỉ muốn gửi 30 BTC, hệ thống sẽ tạo thêm một
output giá trị 20 BTC (được gọi là tiền thừa – change)
và gửi lại cho chính người gửi.
o Ngoài ra, số tiền trong input không được chuyển
thành output được coi là phí giao dịch (transaction
fee), được chuyển tới tài khoản người tạo ra block
chứa giao dịch.
• Verification (xác minh tính hợp lệ):
o Để xác minh tính hợp lệ của các output được tham
chiếu đến trong phần input, Bitcoin sử dụng một hệ
thống các mã script tương tự ngôn ngữ Forth.
o Đầu vào của một quá trình xác thực cơ bản bao gồm
có ScriptSig của input và ScriptPubKey của output
được tham chiếu đến trong giao dịch trước, từ đó xác
định được số tiền trong input là thuộc quyền sở hữu
của người gửi chứ không ai khác.
Hình ảnh một giao dịch trong thực tế (có tổng số Amount trong
Inputs và Outputs là bằng nhau):

Mật mã học nâng cao – Nhóm 1

10


Bài tập lớn: Nghiên cứu hệ thống Bitcoin


Lưu ý: Trong một giao dịch, số tiền trong input có thể không
phải là toàn bộ số tiền trong tài khoản của người thực hiện giao dịch,
mà chỉ cần không ít hơn số lượng cần thiết cho các output. Ví dụ:
Alice muốn chuyển cho Bob 10 BTC. Trong tài khoản Alice hiện
có các output chưa được sử dụng (unspent) gồm 4 BTC, 7 BTC, 8
BTC. Khi đó giao dịch sẽ được thực hiện như sau:
Inputs:
- 4 BTC.
- 7 BTC.
• Outputs:
- 10 BTC (đến địa chỉ của Bob).
- 1 BTC (khoản tiền thừa được chuyển về địa chỉ của
Alice)


Sau giao dịch, số tiền trong tài khoản của Alice còn lại gồm 2
output: 8 BTC ban đầu và 1 BTC là số tiền thừa được trả lại trong
output của giao dịch vừa thực hiện.
Do mỗi giao dịch có thể có nhiều input và output, việc liên kết
giữa các output giao dịch trước và các input giao dịch sau tạo nên
một chuỗi các giao dịch (Transaction Chain), thể hiện quyền sở hữu
đồng tiền và có thể lần theo để xác thực tới cả những giao dịch đầu
Mật mã học nâng cao – Nhóm 1

11


Bài tập lớn: Nghiên cứu hệ thống Bitcoin
tiên (History of Ownership). Cần chú ý là Transaction Chain và

Blockchain là 2 khái niệm hoàn toàn khác nhau: Blockchain để sắp
xếp các giao dịch theo thứ tự, còn Transaction Chain để theo dõi sự
thay đổi quyền sở hữu như thế nào.

Sau khi được xác minh tính hợp lệ, các giao dịch được sắp xếp
vào một block mới và đưa vào Blockchain. Mỗi block trong
Blockchain tham chiếu đến một block phía trước nó và cứ thế tham
chiếu đến tận block chứa các giao dịch đầu tiên được tạo. Các giao
dịch trong cùng một block được coi là thực hiện vào cùng một thời
điểm, còn các giao dịch chưa được đưa vào block gọi là các giao dịch
chưa
được
xác
minh
hay
chưa
được
sắp
thứ
tự
(unconfirmed/unordered).

Mật mã học nâng cao – Nhóm 1

12


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Bất kỳ một máy tính nào trong hệ thống cũng có thể thu thập

các giao dịch chưa được xác nhận vào một block và phát tán khối đó
lên mạng lưới như là một gợi ý cho block tiếp theo trong chuỗi, từ đó
duy trì hệ thống.
Cấu trúc của một block:

Trong đó Blockheader là gồm các trường về Version (phiên bản),
hashPrevBlock (256 bit mã băm block trước), hashMerkleRoot
(256 bit mã băm của tất cả các giao dịch trong block), Time (dấu
thời gian), Bits (số 256 bit thể hiện mục tiêu – target) và Nonce (số
32 bit).
Để phòng tránh việc xảy ra bất đồng bộ do sai lệch về thời gian,
vị trí địa lý, thứ tự các khối… có thể dẫn đến sụp đổ toàn bộ hệ
thống, Bitcoin sử dụng một phép toán mã hóa áp dụng hàm băm
SHA256 với đầu vào là nội dung của Blockheader và một số ngẫu
nhiên (số Nonce) sao cho đầu ra thỏa mãn điều kiện tạo ra một số
nhỏ hơn target. Một block muốn được mạng lưới chấp nhận thì phải
thỏa mãn điều kiện trên (proof of work). Việc tạo ra một block mới
hợp lệ tương đương với việc giải bài toán tìm số nonce ngẫu nhiên,
và quá trình giải bài toán được gọi là đào bitcoin (Mining).

Mật mã học nâng cao – Nhóm 1

13


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Hình minh họa cho điều kiện thuật toán băm
Mỗi máy tính khi giải block phải sinh ra số nonce liên tục cho
đến khi tìm được số thỏa mãn điều kiện nêu trên. Độ phức tạp của

bài toán difficulty phụ thuộc vào số target: số target càng nhỏ thì
độ khó càng cao, và target cũng được thay đổi sau mỗi 2016 khối
được tạo. Độ phức tạp này khiến cho tất cả các máy tính trong mạng
lưới Bitcoin cùng lúc liên tục thử các số nonce ngẫu nhiên cũng phải
mất khoảng 10 phút để tìm ra số hợp lệ, và với một máy tính đơn lẻ
thông thường thì phải mất đến vài năm.
Ví dụ khi băm một block sau khi đã giải được số Nonce có nội
dung Blockheader như sau:
- Version: 01000000.
- hashPrevBlock:
81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a3
08000000000000.
- hashMerkleRoot:
e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc88
92b0f1fc122b.
- Time: c7f5d74d.
- Bits: f2b9441a.
- Nonce: 42a14695.
Khi đó, kết quả băm thu được sẽ được tính như sau:

Mật mã học nâng cao – Nhóm 1

14


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Do ngày càng có nhiều người tham gia vào mạng lưới hoạt động
Bitcoin, số máy trong hệ thống ngày càng nhiều vậy nên để đảm
bảo thời gian đào một block không bị quá ngắn dễ bị tấn công, độ

khó bài toán phải được tăng dần theo thời gian. Dưới đay là biểu đồ
thể hiện độ khó difficulty qua từng thời kỳ:

Từ những ngày đầu tiên (năm 2009) đến nay.

Trong vòng 1 năm trở lại đây (từ 12/2016 đến 11/2017)

Mật mã học nâng cao – Nhóm 1

15


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Phần III: Các đặc tính an toàn của hệ thống
1. Tính bí mật (confidentiality):

Khác với hệ thống các ngân hàng trên thế giới, các giao dịch
được thực hiện trong mạng lưới Bitcoin thường là với người lạ vô
danh. Hệ thống bitcoin được thiết kế với mục đích không cần đến sự
tin tưởng, không cần quan tâm đến người nhận và người gửi mà chỉ
quan tâm đến các địa chỉ. Các tính năng dựa trên mật mã học và
toán học đã đủ để bảo vệ mọi khía cạnh của hệ thống.
Ngoài ra, nếu người dùng truy cập Bitcoin thông qua mạng ẩn
danh như TOR để giấu địa chỉ IP, họ có thể sử dụng Bitcoin mà
không để lộ bất cứ điều gì khác ngoài khóa công khai của họ. Mặt
khác, khóa công khai có thể được sinh ra mới mỗi lần thực hiện giao
dịch, việc liên kết các giao dịch là không thể.

Việc lần theo địa chỉ nhận tiền trong giao dịch cũng là điều bất

khả thi, do địa chỉ này hoàn toàn có thể sinh ra mà không cần đến
mạng, và có tất cả tới 1.46 x 10^48 hay 2^160 địa chỉ có thể.
2. Tính toàn vẹn (integrity):

Khi thực hiện đào bitcoin, người đầu tiên giải được bài toán tìm
số nonce sẽ công bố block của mình tới mạng lưới, và những người
khác sẽ chấp nhận đó là mắt xích tiếp theo trong Blockchain. Tuy
nhiên, có trường hợp có tới nhiều block cùng được giải xong trong
cùng một thời điểm, dẫn đến việc chuỗi trong Blockchain bị chia
thành nhiều nhánh khác nhau (branches).

Mật mã học nâng cao – Nhóm 1

16


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Trong trường hợp này, người dùng chỉ đơn giản tiếp tục đào
bitcoin trên nhánh của mình, những người dùng khác nhận được các
block theo thứ tự khác cũng tiếp tục đào trên nhánh của họ.

Sự cân bằng này sẽ ngay lập tức bị phá vỡ khi một người dùng
nào đó giải được block tiếp theo. Nguyên tắc chung là khi cập nhật
chuỗi các block, hệ thống luôn tự động chuyển sang nhánh dài nhất
có thể, và các người dùng khác sẽ cập nhật theo nhanh mới. Độ
phức tạp của bài toán giải số nonce khiến cho việc giải các block mới
cùng một thời điểm là rất hiếm, và càng hiếm hơn để điều này xảy
ra nhiều lần liên tiếp. Kết quả là chuỗi các khối trong Blockchain
nhanh chóng được ổn định lại, đảm bảo tính toàn vẹn cho các dữ liệu

giao dịch trong hệ thống.
3. Tính sẵn sàng (availability):

Hệ thống Bitcoin cung cấp một cơ chế bảo mật chắc chắn, có thể tránh
được những rủi ro cả về phần cứng, phần mềm và tránh được các cuộc tấn công của
tin tặc do tính chất phi tập trung (decentralized): bất cứ người nào trong mạng lưới
cũng có thể lưu trữ một bản sổ cái trên máy của mình. Mỗi khi có một block mới được
sinh ra, để khối này được mạng lưới chấp nhận thì Blockchain chứa block này phải
chiếm đa số trên tổng số tất cả các sổ cái trong mạng lưới, hay nói cách khác là sẽ xảy

Mật mã học nâng cao – Nhóm 1

17


Bài tập lớn: Nghiên cứu hệ thống Bitcoin
ra một cuộc đua giữa các máy tính trong hệ thống và máy giải ra block phải phát tán
tới hơn 50% số máy tính trên toàn thế giới.

Để một tin tặc có thể tấn công vào mạng lưới thành công, hắn phải có khả năng
tính toán được một chuỗi các block (vào khoảng 6 block) nhanh hơn trong cuộc đua
với toàn bộ hệ thống và phát tán tới mạng lưới nhằm xóa bỏ các block khác đã được
xác nhận (double spend attack, xem đến ở phần sau). Tỉ lệ thành công của tấn công
này trong trường hợp kẻ tấn công nắm quyền kiểm soát 10% các máy trong mạng lưới
chỉ chiếm 0.1%, và để chắn chắn thành công (100%) thì hợp kẻ tấn công phải nắm
quyền kiểm soát ít nhất trên 50% các máy trong mạng lưới.
4. Tính xác thực (authentication):

Trong hệ thống Bitcoin, bất cứ ai cũng có thể xác thực được số
tiền trong các giao dịch có thực sự thuộc quyền sở hữu của người gửi

hay không. Để thực hiện điều này, người dùng chỉ cần đọc ra các
input trong giao dịch và các output mà nó tham chiếu đến và thực
hiện quá trình xác thực như sau:
• Đầu vào của một quá trình xác thực cơ bản:



Quá trình xác thực được xử lý theo stack:

Mật mã học nâng cao – Nhóm 1

18


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Lệnh OP_HASH160 thực hiện việc băm 2 lần, lần đầu với SHA256 và lần thứ hai với RIPEMD-160. Có thể tham khảo thêm về các
lệnh
khác
theo

Script
theo
đường
link
sau:
/>Như vậy, sau khi xử lý dữ liệu theo stack như trên, nếu kết quả
trả về sau quá trình xác thực là true, điều này có nghĩa số tiền trong
các input của giao dịch thực sự thuộc quyền sở hữu của người gửi.
Bên cạnh đó, sig là đoạn mã băm của giao dịch theo một phiên bản

đơn giản (chỉ gồm số tiền của các input output, số phiên bản,…)
được dùng để kiểm tra các dữ liệu trong giao dịch có bị thay đổi hay
không (tăng/giảm số tiền trong giao dịch để gian lận,…).
5. Tính chống chối bỏ (non – repudiation):

Giả thuyết về một cuộc tấn công chi tiêu đôi (double spend
attack) trong hệ thống Bitcoin sau ra như sau:
Một kẻ lừa đảo tên Alice gửi tiền cho Bob để mua một món
hàng. Bob sẽ đợi cho giao dịch được xác nhận vào chuỗi block
trong Blockchain, sau đó chuyển kiện hàng cho Alice.
Tuy nhiên, vì hệ thống luôn tự động chuyển sang nhánh có số
block dài hơn, nếu Alice có thể tạo ra một nhánh đủ dài và
đồng thời thay thế giao dịch chuyển tiền cho Bob thành một
giao dịch chuyển cho người khác, số tiền của Bob sẽ ngay lập
tức bị xóa mất.

Mật mã học nâng cao – Nhóm 1

19


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Vì giao dịch chuyển tiền cho Bob bị đưa trở lại vùng các giao
dịch chưa được xác nhận, nhưng Alice đã kịp thay thế nó
bằng giao dịch khác có cùng input, giao dịch chuyển tiền cho
Bob sẽ bị coi là không hợp lệ vì nó đang cố dùng một input
tham chiếu đến một output đã được sử dụng (spent).

Để thực hiện tấn công này, Alice bắt buộc phải tính toán trước

được một chuỗi các block và phát tán nó lên mạng vào đúng thời
điểm. Tuy nhiên, các phép toán trong mật mã học đã làm cho điều
này trở nên bất khả thi: khi tính toán một block mới, kết quả hàm
băm của block sẽ giốn như một dấu vân tay để định danh block,
khiến nó không thể bị trùng lặp. Do tính chất của hàm băm, việc
thay đổi dù chỉ một bit trong đầu vào cũng khiến cho đầu ra bị thay
đổi hoàn toàn. Mặt khác, đầu vào của hàm băm này lại bao gồm mã
băm của block trước, vì vậy Alice bắt buộc phải kịp thời phát tán
chuỗi mà mình tính toán trước khi có người tạo nên block mới nhưng
phải sau khi Bob chuyển kiện hàng. Điều này đã được chứng minh là
bất khả thi do tính sẵn của hệ thống.

Mật mã học nâng cao – Nhóm 1

20


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Phần IV: Ưu điểm và nhược điểm
 Ưu điểm:
• Thuận tiện trong giao dịch:

Hệ thống Bitcoin xây dựng trên mô hình phi tập trung, không dựa vào bất cứ
ngân hàng, chính phủ nào như các đồng tiền thật. Với bất cứ trung gian giao dịch nào,
với đồng tiền thật thường có 1 giới hạn về chuyển và nhận tiền trong ngày. Nhưng với
bitcoin thì không, bạn có thể gửi 1 số lượng không giới hạn bitcoin cho bất cứ ai, đến
bất cứ nơi nào, bất cứ thời gian nào và không ai có thể quản lý được số tiền bạn gửi.
An toàn và bảo mật:
Mỗi giao dịch bitcoin có thể được thực hiện và hoàn thành mà không cần bất cứ

thông tin cá nhân nào. Thông tin giao dịch được hiển thị nhưng danh tính của bạn
được bảo mật hoàn toàn.


Không thể bị làm giả:
Chi phí kiểm định chất lượng vàng rất cao, còn kiểm định bitcoin không hề tốn
chi phí nào và có một sự thật là bitcoin không thể làm giả được vì nó không hiện hữu
dưới dạng vật chất.


Chi phí giao dịch cực thấp:
Transaction fee được tính dựa trên khối lượng tính toán mà giao dịch đó phải
thực hiện (các input, output, các điều kiện kiểm tra,…). Tuy nhiên, chi phí này thường
rất ít hoặc không có . Ngoài ra không có bất cứ chí phí trung gian giao dịch nào khác.


Bảo vệ môi trường:
Không phải dùng hóa chất in giấy hay khai thác. Hệ thống máy tính xử lí giao
dịch Bitcoin tốn ít điện hơn nhiều so với hệ thống tài chính hiện tại.


Tiềm năng thương mại điện tử:
Mọi giao dịch của Bitcoin hoàn toàn ẩn danh và không thể bị hoàn trả, đảo
ngược lại, vì vậy đối với người bán hàng, họ có thể yên tâm hơn với tình trạng gian
lận.


 Nhược điểm:
• Vấn đề thời gian và năng lượng:


Do mỗi khối trong Blockchain rất tốn thời gian để giải (trung
bình khoảng 10’), việc phải chờ để giao dịch được thực hiện khá lâu
và đôi khi bị vùi lấp trong vùng các giao dịch chưa được xác nhận và
phải thực hiện lại từ đầu. Bên cạnh đó, việc giải các khối cũng yêu
cầu một nguồn năng lượng điện đáng kể.
Chưa có nhiều người sử dụng:
Thực tế là người dân đặc biệt là quốc gia không phát triển nhiều như Việt Nam
thì đã quen với việc sử dụng tiền tệ, vàng bạc, không am hiểu về đồng tiền điện tử.


Mật mã học nâng cao – Nhóm 1

21


Bài tập lớn: Nghiên cứu hệ thống Bitcoin
Cùng với đó nhiều trang báo nổi tiếng lại có những bài viết khá tiêu cực về đồng tiền
này => người dân e dè và lo ngại sử dụng Bitcoin.
Khó sử dụng:
Để sử dụng Bitcoin thì bạn cần phải tạo một ví lưu trữ Bitcoin, các thao tác thực
hiện trên máy tính. Đối với những người mù về công nghệ mà không được ai chỉ dẫn
thì họ sẽ khó mà có thể tự làm các thao tác này và có nguy cơ bị lừa đảo.


Tội phạm, tin tặc, rửa tiền lộng hành:
Vì tính ẩn danh của Bitcoin và không ai kiểm soát, tội phạm có thể sử dụng đồng
tiền này như 1 phương thức giao dịch. Hacker có thể đang tìm cách tấn công nhiều sàn
Bitcoin để đánh cắp Bitcoin số lượng lớn và nạn rửa tiền có thể xảy ra một cách dễ
dàng.



Giá Bitcoin thường biến động:
Cũng giống như dollar, euro, vàng hay thị trường chững khoán Bitcoin cũng biến
động theo thời gian thực, lúc tăng mạnh, lúc thì giảm mạnh, hầu hết các biến động
trên thế giới có ảnh hưởng đến đồng tiền điện tử đều có thể làm giá bitcoin biến động.


Các vấn đề kĩ thuật:
Nếu ngày càng nhiều người tham gia hệ thống, lượng lưu trữ sẽ ngày càng lớn
khiến hệ thống chậm lại và khó khắc phục bởi nó đòi hỏi người dùng phải nâng cấp ví
Bitcoin và phần mềm “đào” tiền.


 Một số loại đồng tiền điện tử khác:

Ethereum:
Ethereum là một nền tảng tiền ảo dựa trên các hợp đồng thông minh – cho phép
theo dõi tất cả các giao dịch và thỏa thuận liên quan thông qua một cuốn sổ cái.
Ethereum được chia làm 2 loại Ethereum và Ethereum Classic.
Được tạo ra bởi Vitalik Buterin và đưa vào thị trường giữa năm 2015, nó được
quảng cáo là loại tiền ảo có tiềm năng hơn cả Bitcoin với giá trị thị trường khoảng 1,1
tỷ USD.
Litecoin:
Litecoin ra mắt tháng 9/2011 bởi cựu nhân viên Google là Charles Lee như một
sản phẩm thay thế Bitcoin. Người dùng có thể khai thác, sử dụng nó để trao đổi lấy
sản phẩm và dịch vụ. Ở thời điểm tháng 7/2016, giá trị của nó đạt 180 triệu USD, thấp
hơn nhiều so với mức đỉnh 1,2 tỷ USD năm 2013.
Monero:
Monero được biết đến như một loại tiền ảo bí mật – sử dụng công nghệ chữ ký
nhóm, tạo sự an toàn, bảo mật và không để lại dấu tích. Với giá trị thường khoảng 138


Mật mã học nâng cao – Nhóm 1

22


Bài tập lớn: Nghiên cứu hệ thống Bitcoin
triệu USD, Moreno chủ yếu được sử dụng bởi các cá nhân muốn ẩn danh trên mạng
Internet.
Ripple:
Ripple là một hệ thống thanh toán tổng thể theo thời gian thực, chuyển đổi tiền
tệ. Ra mắt năm 2012 và có giá trị khoảng 243 triệu USD, Ripple đã được tích hợp vào
một số ngân hàng và hệ thống thanh toán để giảm chi phí phát sinh.
Dogecoin:
Dogecoin ban đầu được biết đến như một loại tiền tệ trò đùa nhưng vẫn thu hút
sự quan tâm lớn. Chữ Doge trong tên gọi của nó là phát âm lại từ chữ Dog (nghĩa là
con chó). Nó thường được sử dụng trên forum hoặc quyên góp cho một tổ chức. Giá
trị thị trường của Dogecoin khoảng 25 triệu USD.
Dash:
Dash (viết tắt của digital cash – tiền kĩ thuật số) có điểm mạnh là sự bảo mật và
tốc độ thanh toán. Nó được đổi tên từ Darkcoin để tránh sự liên quan đến dark web.
Dash có giá trị thị trường khoảng 77 triệu USD.Người ta có thể sử dụng nó để thanh
toán tại hàng loạt cửa hàng và hệ thống lớn.
MaidSafeCoin:
MaidSafeCoin còn gọi là Safecoin là tiền ảo dành cho các mạng lưới sử dụng
nền tảng an ninh. Hiện nay có hàng loạt các ứng dụng sử dụng mạng lưới này để bảo
vệ dữ liệu. Giá trị thì trường của loại tiền ảo này là 39 triệu USD.
Lisk:
Không giống phần lớn loại tiền ảo trong danh sách này (trừ Ethereum) bất cứ ai
cũng có thể sử dụng hệ thống của Lisk để tạo ra các ứng dụng phân tán (dapp) bằng

ngôn ngữ lập trình Javascript.
Như vậy, loại tiền tệ này có giá trị ứng dụng thực tế và sử dụng để tạo ra nhiều
loại dapp, gồm nền tảng mạng xã hội, cửa hàng thương mại điện tử. Giá trị thị trường
của nó là 25 triệu USD.
Storjcoin X:
Storjcoin X ra mắt tháng 7/2014. Storjcoin – công ty tạo ra nó - khai thác một
mạng lưới mã hóa dữ liệu trên mã nguồn mở và dùng Storjcoin để cấp quyền truy
nhập và sử dụng dịch vụ. Giá trị thị trường của loại tiền ảo này thời điểm tháng
9/2016 là 8 triệu USD.

Mật mã học nâng cao – Nhóm 1

23


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

Phần V: Demo chương trình
1. Tạo Public Key, Private key, Address

Kết quả nhận được:

2. Thực hiện gửi 1 BTC vào địa chỉ mr7Qf41bkvFYWQjPfw5Y5J1SJb4JbVx6TC

3. Sau khi thực hiện giao dịch ta có 1 transaction id

4. Thông tin Block đã được confirm ( xác nhận ) bởi 10 người trong hệ thống bitcoin và giao
dịch đã được thực hiện thành công

Mật mã học nâng cao – Nhóm 1


24


Bài tập lớn: Nghiên cứu hệ thống Bitcoin

4. Check số dư BTC có trong tài khoản theo địa chỉ

Có 3 BTC vì được nhận từ 2 giao dịch: 1 giao dịch nhận 1BTC, 1 giao dịch nhận 2 BTC

Giao dịch được nhận 1 BTC

Mật mã học nâng cao – Nhóm 1

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×