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

NGHIÊN CỨU MỘT SỐ TẤN CÔNG TÌM KHÓA RIÊNG LIÊN QUAN VIỆC THỰC THI GIÁ TRỊ NONCE TRONG CHUẨN KÝ SỐ ECDSA SECP256K1

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 (670.09 KB, 43 trang )

BÀI TẬP LỚN
NGHIÊN CỨU MỘT SỐ TẤN CƠNG TÌM KHĨA RIÊNG LIÊN QUAN
VIỆC THỰC THI GIÁ TRỊ NONCE TRONG CHUẨN KÝ SỐ ECDSA
SECP256K1

Hà Nội, 2021


MỤC LỤC

2


DANH MỤC HÌNH VẼ

Hình 1.1 sơ đồ tạo và kiểm tra chữ ký số……………………………………3
Hình 2.1 lược đồ chữ ký số RSA ( R khơng có nghĩa và khơng bảo mật)…..7
Hình 2.2 lược đồ chữ ký số RSA (R khơng có ý nghĩa và có bảo mật)……..8
Hình 2.3 Lược đồ chữ ký số RSA ( R có ý nghĩa và khơng bảo mật)……….9
Hình 2.4 Lược đồ chữ ký số RSA ( R có ý nghĩa và có bảo mật )…………..10
Hình 2.5 Lược đồ chữ ký số Elgamal ( không bảo mật )…………………….12
Hình 3.1 Bảng 10 giá trị r thường gặp nhất và số lần xuất hiện của chúng….28
Hình 3.2 Số lần xuất hiện của giá trị r trùng lặp nổi bật nhất theo thời gian…29
Hình 3.3 Số Bitcoin có thể đánh cắp và số lượng địa chỉ Bitcoin dễ bị tấn cơng
do ECDSA khơng được sử dụng lại theo thời gian……………………………31
Hình 3.4 Số Bitcoin mà kẻ tấn công đã đánh cắp dựa trên ngưỡng số dư…….32
Hình 3.5 So sánh mức tăng đột biến trong đó Bitcoin có thể đã bị đánh cắp do
sụt giảm đột ngột số Bitcoin có thể ăn cắp (trái) và trường hợp chúng tôi thấy
mức giảm nhẹ cho thấy rằng khơng có đồng xu nào có thể bị đánh cắp (phải).35

3




DANH MỤC CHỮ VIẾT TẮT

KÍ HIỆU
ECDSA
RSA

ĐẦY ĐỦ
Elliptic Curve Digital Signature Algorithm
Ron Rivest, Adi Shamir và Len Adleman

OSINT

Open source intelligence

P2PKH

Pay To Pubkey Hash

RFC

Request for Comments

UTC

Coordinated Universal Time

4



CHƯƠNG 1 TỔNG QUAN VỀ CHỮ KÍ SỐ
Chữ kí số thơng thường (chữ kí tay) là một phần vật lý của tài liệu, là phương
tiện để xác thực nguồn gốc và nột dung của tài liệu đó. Ngồi ra, chữ ký tay cịn có
khả năng chống chối bỏ, tức là người gửi sau khi đã kí vào tài liệu khi khơng thể
chối bỏ chữ ký thì khơng thể thay đổi được nội dung.
Chữ ký tay là đại diện duy nhất cho người ký, khơng ai khác có thể giả mạo
được và dễ dàng được nhận ra khi nhìn thấy.
Việc kiểm tra tính xác thực của chữ kí tay cũng như thực hiện bằng những
phương pháp đơn giản ( so sánh chữ kí tay trên tài liệu với các chữ ký đã đăng ký
trước của người kí ) nhằm khẳng định chữ ký đúng là của người kí và nội dung của
tài liệu không thể bi sửa đổi hoặc thêm bớt.
Đối với tài liệu điện tử, chữ ký tay khơng cịn đảm bảo được tính năng của nó.
Dó đó cần phải có một phương tiện mới để thay thế chữ ký tay. Chữ ký số đã ra đời
và được đưa vào sử dụng một cách hiệu quả
Lịch sử chữ kí số
Con người đã sử dụng các hợp đồng dưới dạng điện tử từ 100 năm nay với việc
sử dụng mã Morse và điện tín. Vào năm 1889, tịa án tối cao bang New Hampshire
( Hoa Kỳ) đã phê chuẩn tính hiệu lực của chữ ký điện tử. Tuy nhiên, chỉ với những
phát triển của khoa học kỹ thuật gần đây thì chữ ký điện tử đi vào cuộc sống một
cách rộng rãi
1.1

Vào thập kỷ 1980, các công ty và một số cá nhân bắt đầu sử dụng máy Fax để
truyền đi các tài liệu quan trọng. Mặc dù chữ ký trên các tài liệu này vẫn thể hiện
trên giấy nhưng quá trình truyền và nhận chúng hồn tồn dựa trên tín hiệu điện tử.
Hiện nay, chữ ký điện tử có thể bao hàm các cam kết gửi bằng email, nhập các số
định dạng cá nhân (PIN) vào các máy ATM, ký bằng bút điện tử với thiết bị màn
hình cảm ứng tại các quầy tính tiền, chấp nhận các điều khoản người dùng khi cài
đặt phần mềm máy tính, ký các hợp đồng điện tử online,…

1.2 Định nghĩa chữ ký số
Chữ ký số là một dãy số, là kết quả của phép biến đổi mật mã trên thông báo
nhằm cung cấp một phương tiện để kiểm tra tính xác thực của nguồn gốc thơng
báo, tính tồn vẹn của thơng báo và tính khơng thể chối bỏ của người kí
5


Thông thường các chữ ký số được biểu diễn dưới dạng một dãy số nhị phân. Nó
được tạo ra trên cở sở sử dụng tập hợp các quy tắc và tập hợp các tham số để xác
định danh tính người ký cũng như kiểm tra tính tồn vẹn của dữ liệu
Phương tiện cơ bản để thực hiện chữ ký số là kỹ thuật mật mã. Mỗi chữ ký số
được tạo và được kiểm tra tính xác thực thơng báo qua các lược đồ chữ ký số mỗi
lược đồ chữ ký số bao gồm thuật toán ký và thuật toán kiểm tra . Mỗi người có
một cặp khóa bao gồm khóa bí mật và khóa cơng khai , trong đó khóa công khai
thường được công bố một cách công khai hoặc phân phối thơng qua chứng thực
khóa cơng khai, cịn khóa bí mật được giữ bí mật tuyệt đối và khơng thể tìm ra
khóa bí mật từ khóa cơng khai.
Trong thực tế sử dụng, các thơng báo thường có độ dài bất kì và nói chung là
dài. Trong khi đó một lược đồ chữ ký số chỉ ký được các thông báo ngắn.
Để ký được các thông báo người ta phải chia các thông báo ra thành nhiều phần
ngắn và ký vào tất cả các phần này rồi gửi đi. Những hạn chế cơ bản của giải pháp
này là:
-

Có quá nhiều chữ ký số cho một thông báo làm giãn tin quá mức.
Do quá trình ký một số chữ ký số cần thực hiện các phép tốn tốn thời gian
do đó thời gian để ký thông báo là không thể chấp nhận được.

Ta mong muốn như trong trường hợp chữ ký viết tay, chữ ký có độ dài ngắn và
hạn chế cho dù thơng báo có độ dài bằng bao nhiêu. Vì chữ ký số được ký cho từng

bit của thơng báo , nếu muốn chữ ký có độ dài hạn chế trên thơng báo có độ dài tùy
ý thì ta phải tìm cách rút gọn độ dài thơng báo. Nhưng bản thân thông báo không
thể rút ngắn được, nên chỉ cịn cách tìm cho mỗi thơng báo một thơng báo thu gọn
có độ dài hạn chế và thay việc ký trên thông báo, ta ký trên thông báo thu gọn. Để
giải quyết vấn đề này ta sử dụng hàm băm mật mã.
1.3 Quá trình tạo và kiểm tra chữ ký số
Trong lược đồ chữ ký số, với đầu vào là thông báo độ dài hữu hạn tùy ý, hàm
băm sẽ biến đổi thông báo này thành một thông báo rút gọn và sau đó sẽ dùng
thuật tốn chữ ký để ký tên thơng báo rút gọn đó. Cụ thể khi người ký cần ký vào
thông báo R anh ta ký bản tóm lược thơng báo z = h(R) như sau: y = (z) và truyền
cặp (R,y) lên kênh truyền thông. Q trình kiểm tra được thực hiện thơng qua việc
tính z = h(R) dùng hàm băm công khai h và kiểm tra xem hàm (z,y) có nhận giá trị
“đúng” khơng.
Cụ thể quá trình tạo và kiểm tra chữ ký số được mơ ta dưới hình sau
6


Hình 1.1 sơ đồ tạo và kiểm tra chữ ký số.
Quá trình tạo chữ ký số : Khi A cần gửi một thơng báo cho B, A sử dụng
thuật tốn hàm băm đẻ thu gọn thông báo ban đầu nhằm tạo ra bản tóm lược của
thơng báo . Tiếp đến A sử dụng thuật toán ký với đầu vào là bản tóm lược của
thơng báo và khóa bí mật của A để tạo ra một chữ ký số. Sau đó chữ ký số và
chứng chỉ cung cấp khóa cơng khai của A được gắn vào thông báo đã được ký rồi
gửi cho B.
Quá trình kiểm tra chữ ký số: B cũng sử dụng thuật toán hàm băm tương tự
như của A để tạo bản tóm lược của thơng báo đã nhận, B sử dụng khóa cơng khai
được cung cấp để giải mã chữ ký và thu được một dãy bit , so sánh kết quả này với
bản tóm lược vừa tạo. Nếu kết quả giống nhau thì thơng báo trên chính là của A gửi
cho B.
Trong trường hợp thơng báo cần giữ bí mật cho A có thể mã hóa dữ liệu

được ký trước khi gửi
1.4 Mơ hình tốn học của lược đồ chữ ký số
Một lược đồ chữ ký số là bộ 5 (R, A , K, S, V ) trong đó:
1.
2.

R là tập hữu hạn các thơng báo cụ thể.
A là tập hữu hạn các chữ ký số cụ thể.
7


3.
4.

K\ khơng gian khóa là tập hữu hạn các khóa có thể.
Với mỗi khóa K € K\ , tồn tại thuật toán ký € S và một thuật toán kiểm tra
chữ ký € V . Mỗi thuật toán ký : R A và thuật toán kiểm tra chữ ký R x A
{đúng ,sai} là những hàm thỏa mãn điều kiện dưới đây :
Với mọi thông báo x € R và mọi chữ ký y €A

Với mỗi khóa K € K\ , các hàm và là các hàm thời gian đa thức , sẽ là hàm
cơng khai cịn là hàm bí mật. Hàm là khó tính được nếu khơng biết khóa bí mật
K , điều này đảm bảo cho tính bí mật của chữ ký và chống việc giả mạo chữ ký.
Nghĩa là cho trước thơng báo x, chỉ có người có khóa bí mật K mới có thể tính
được chữ ký y để = đúng.
1.5 Các tính chất của chữ ký số
1.5.1 Tính xác thực nguồn gốc
Các hệ thống mật mã khóa cơng khai cho phép văn bản được mã hóa bằng
khóa riêng tư mà chỉ người sở hữu khóa mới biết. Để sử dụng chữ ký điện tử, văn
bản cần được mã hóa bằng hàm băm (văn bản được "băm" thành chuỗi, thường có

độ dài cố định và ngắn hơn văn bản) và sau đó sử dụng khóa riêng của người giữ
khóa. để mã hóa, sau đó chúng tơi nhận được chữ ký điện tử. Khi cần kiểm tra, bộ
nhận giải mã (bằng khóa cơng khai) để lấy lại chuỗi gốc (được tạo thông qua hàm
băm ban đầu) và kiểm tra bằng mã băm của văn bản nhận được. Nếu hai giá trị
(chuỗi) này khớp nhau, thì người nhận có thể tin tưởng rằng văn bản đến từ chủ sở
hữu của khóa cá nhân. Tất nhiên, chúng tơi khơng thể đảm bảo 100% rằng văn bản
chưa bị can thiệp vì hệ thống vẫn có thể bị hỏng.
Đặc biệt quan trọng là vấn đề nhận dạng cho chính các giao dịch. Hạn chế
chi nhánh ngân hàng gửi một gói tin đến trung tâm ở dạng (a, b), trong đó a là số
tài khoản và b là số tiền được chuyển đến tài khoản đó. Kẻ lừa đảo có thể gửi một
số tiền đó để lấy một gói nội dung và truyền lại gói đó nhiều lần để kiếm lời
(truyền lại).
1.5.2 Tình tồn vẹn
Cả hai bên tham gia vào q trình giao tiếp đều có thể là văn bản khơng bị
thay đổi khi chuyển tiếp vì nếu văn bản bị thay đổi, trí tưởng tượng cũng sẽ bị thay
đổi và bị phát hiện ngay lập tức. Mã hóa sẽ ẩn nội dung của gói tin khỏi bên thứ 3
nhưng khơng ngăn nội dung của nó bị thay đổi. Một ví dụ cho trường hợp này là
cộng đồng (tấn công đồng nhất): tiếp tục ví dụ trên, kẻ lừa đảo gửi 1.000.000 đồng
8


vào tài khoản của a, chặn gói tin (a, b) nhưng chi nhánh gửi về trung tâm và gửi gói
tin (a, b3) thay vào đó để ngay lập tức trở thành một triệu phú! Nhưng vấn đề bảo
mật cho trung tâm ngân hàng không liên quan đến tất cả thông tin được gửi từ
người gửi đến chi nhánh, vì thơng tin đã được băm và mã hóa để gửi đến đích của
nó.
1.5.3 Tính khơng thể chối bỏ
Trong giao dịch, một bên có thể từ chối nhận một tài liệu nào đó do mình
gửi. Để tránh điều này, người nhận có thể yêu cầu đưa một ký tự vào văn bản. Khi
chấp nhận, bên nhận sẽ sử dụng chữ ký này làm bằng chứng để bên thứ ba giải

quyết. Tuy nhiên, bí mật chính vẫn có thể bị lộ, và khơng thể hồn tồn đạt được
chức năng khơng thể phủ nhận.

9


CHƯƠNG 2 MỘT SỐ LƯỢC ĐỒ CHỮ KÝ SỐ PHỔ BIẾN
HIỆN NAY
2.1 Lược đồ chữ ký số RSA
Bài toán xác thực bằng chữ ký số có thể xem là bài toán “ đối ngẫu” với bài
toán bảo mật bằng mật mã , do đó dùng ngược thuật tốn lặp RSA ta có thể được
một lược đồ chữ ký RSA. Lược đồ chữ ký RSA được xây dựng như sau:
Tạo khóa : mỗi đầu mối trong mạng liên lạc cần tạo một cặp khóa là khóa
cơng khái và khóa riêng bí mật
1.
2.
3.
4.
5.

Tạo 2 số nguyên tố lớn ngẫu nhiên và khác nhau :p,q trong đó p và q có
độ lớn xấp xỉ nhau.
Tính n=p.q và (n) = (p-1)(q-1)
Chọn một số nguyên ngẫu nhiên e, ( 0 < e < (n) ) sao cho gcd (e, (n) )=1
Tính mod(n) bằng cách dùng thuật toán Eclide mở rộng
Đặt = A = , K = {(n,e,d):ed =1 mod(n)} ta có khóa cơng khai làkhóa
riêng bí mật là = d.

Tạo chữ ký số : giả sử A phải tạo một chữ ký số để xác thực cho thơng báo
R gửi cho B, Khi đị A làm như sau :

1.
2.

3.

Biểu diễn bản rõ R dưới dạng một số ngun trong đoạn [0,n-1]
Sử dụng thuật tốn kí với khóa riêng của mình để tạo chữ ký trên thông
báo R:
S = (R) = modn
Gửi thông báo R kèm theo chữ ký S cho B

Kiểm tra chữ ký : với chữ ký S và thông báo R , B có thể kiểm tra chữ ký
số S để xác thực thơng báo R theo các bước sau:
1.
2.

Nhận khóa cơng khai = (e.n) của người ký A.
Sử dụng thuật toán kiểm tra công khai (R,S) của A để kiểm tra chữ ký S
theo công thức sau :
(R,S) = đúng R = modn
10


Sơ đồ hoạt động của lược đồ chữ ký số RSA được mô tả như sau:
1.

Trường hợp thông báo R khơng có nghĩa hoặc khơng cần bí mật (hình
2.1)

Hình 2.1 lược đồ chữ ký số RSA ( R khơng có nghĩa và khơng bảo mật)

Theo hình 2.1, giả sử A muốn gửi cho B thơng báo R có xác thực bằng chữ
ký số của mình. Trước tiên, A ký trên thơng báo R để được chữ ký số.
mod
Sau đó A gửi bộ đôi bao gồm : thông báo và chữ ký số (R, ) cho B
Khi B nhận được (R, ) và kiểm tra điểu kiện R = mod có thỏa mãn khơng.
Nếu thỏa mãn , thì B khẳng định rằng Ver (R, ) nhận giá trị “đúng” và chấp nhận
chữ ký của A trên R.
2.

Trường hợp thông báo R khơng có nghĩa và cần giữ bí mật ( hình 2.2)

11


Hình 2.2 lược đồ chữ ký số RSA (R khơng có ý nghĩa và có bảo mật)
Theo hình 2.2, giả sử A muốn gửi cho B thông báo bảo mật R có xác thức
bằng chữ ký số của mình. Trước tiên, A ký trên thông báo R để được chữ ký số:
mod
Sau đó A dùng khóa mã cơng khai của B để lập bản mã M = mod rồi gửi đến
B
Khi nhận được bản mã M, B dùng khóa bí mật của mình để giải mã M và
thu được R, .
Tiếp theo B dùng thuật toán kiểm tra Ver (R, ) để xác nhận chữ ký của A.
3.

Trường hợp thông báo R có ý nghĩa và khơng cần giữ bí mật ( hình 2.3)

12



Hình 2.3 Lược đồ chữ ký số RSA ( R có ý nghĩa và khơng bảo mật)
Theo hình 2.3, giả sử thơng báo R có ý nghĩa và A muốn gửi cho B thơng
báo R có xác thực bằng chữ ký số của mình. Khi đó, A ký trên thơng R để được
chữ ký số :
mod
Và gửi cho B ( trường hợp này không cần gửi thông báo R kèm theo chữ
ký )
Khi B nhận được chữ ký , B dùng khóa cơng khai để dịch chữ ký và tạo lại
thơng báo R. Nếu R có ý nghĩa B khẳng định rằng R là do A gửi tới.
4.

Trường hợp thông báo R có nghĩa và cần giữ bí mật ( Hình 2.4)

13


Hình 2.4 Lược đồ chữ ký số RSA ( R có ý nghĩa và có bảo mật )
Theo hình 2.4, sau khi tạo chữ ký số mod, A không kết hợp với R để tạo
thành thông báo X mà A chĩ mã bằng khóa cơng khai của B.
Khi nhận được bản mã M, trước tiên B giải mã bản mã M để nhận chữ ký ,
sau đó dùng khóa cơng khai của A để dịch chữ ký và tạo lại thơng báo R. Nếu R có
nghĩa B khẳng định thơng báo từ A và được bảo mật.
Độ an toàn của lược đồ chữ ký số RSA : giả mạo chữ ký đối với lược đồ
chữ ký số RSA là khó như giải bài tốn phân tích số ngun n ra thừa số nguyên
tố , hoặc giải phương trình R = mod n. Bài toán giả mạo chữ ký được hiểu là : cho
trước n, R ,e hãy tạo ra chữ ký số S sao cho R = mod n.
Vì S = (R)= mod n, nên muốn tạo ra được S thì đối phương phải tính được d.
vì d = mod (n) nên để tính d đối phương phải tính được (n). Mà (n) = (p-1)(q-1)
nên để tính (n) đối phương phải biết p và q. Tức là đối phương giải bài tốn phân
tích n thành tích của 2 thừa số nguyên tố q và q.

Tuy nhiên đối phương cũng có thể tìm được S bằng cách giải phương trình
đại số tuyến tính R = mod n. Đây là loại bài tốn khơng giải được trừ khi biết phân
tích n =p.q để đưa bài tốn giải phương trình đại số này về bài tốn trên vành , và
hồn tồn giải được để tìm S nhờ định lý phần dư trung hoa.
Tóm lại, để tính S thì đối phương phải tính được d bằng cách phân tích n =
p.q giống như việc phá hệ mật RSA.

14


Từ lược đồ RSA nguyên thủy, các lược đồ mã hóa và ký số RSA an tồn đã
được xây dựng và thành một chuẩn mật mã được sử dụng rộng rãi trên thế giới.
2.2 Lược đồ chữ ký số Elgamal
Lược đồ chữ ký số Elgamal được đề xuất năm 1985. Đây là một lược đồ chữ
ký số không tất định, có nghĩa là có nhiều chữ số hợp lệ trên thơng báo R cho trước
bất kỳ, và thuật tốn kiểm tra chữ ký phải có khả năng chấp nhận bất kỳ chữ ký
hợp lệ khi xác thực.
Lược đồ chữ ký số Elgamal có độ an tồn dựa trên độ khó của bài toán
logarit rời rạc và được thiết kế với mục đích dành riêng cho chữ ký số. Lược đồ
chữ ký số Elgamal được xây dựng như sau:
Tạo khóa: mỗi đầu mối trong mạng liên lạc cần tạo ra một cặp khóa : khóa
cơng khai và khóa riêng bí mật.
1.
2.
3.

Tạo một số nguyên lớn p và một phần tử sinh g của nhóm nhân
Đặt =, A = x
Chọn một số nguyên ngẫu nhiên , 2p-2 và tính:
y = mod p

Đặt K = {(p,g,a,y): y = mod p} ta có khóa công khai là bộ 3 tham số
= ( p,q,y) , khóa riêng bí mật là = a.

Tạo chữ ký số: giả sử A phải tạo một chữ ký số để xác thực cho thơng báo
R gửi cho B. khi đó A làm như sau:
1.
2.
3.

4.

Biểu diễn thông báo R dưới dạng một số nguyên trong đoạn [1.p-1]
Chọn số nguyên ngẫu nhiên bí mật k, 2p-2
Sử dựng thuật tốn ký vơi khóa riêng của mình để tạo chữ ký số trên
thơng báo R:
S= (R,k) = (u,v), trong đó
u = modp
v = (R- au)mod(p-1)
Gửi thông báo R kèm theo chữ ký số S cho B

Kiểm tra chữ ký: với chữ ký S = (u,v) và thơng báo R, B có thể kiểm tra
chữ ký số S để xác thực thông báo R theo các bước sau:
1.
2.

Nhận khóa cơng khai = (p,g,y) của người ký A.
Sử dụng thuật tốn kiểm tra cơng khai (R,S) của A để kiểm tra chữ ký S
theo công thức sau: (R,u,v)= “đúng”=mod p

15



Chữ ký số S = (u,v) là một cặp hai số trên thông báo R. Ta dễ thấy rằng
lược đồ chữ ký số được xây dựng như trên là thỏa mãn các điều kiện
trong định nghĩa của lược đồ chữ ký số. Thật vậy, nếu (R)= (u,v) thì:
=mod p mod p
Vì kv + au = R mod (p-1). Do đó (R,u,v) nhận giá trị “đúng”
Sơ đồ hoạt động của lược đồ chữ ký số Elgamal được mơ tả như hình vẽ 2.5

Hình 2.5 Lược đồ chữ ký số Elgamal ( khơng bảo mật )
Theo hình 2.5, giả sử A muốn gửi cho B thơng báo R có xác thực bằng chữ
ký số của mình. Trước tiên A ký trên thơng báo R để được chữ ký số :
u = mod
v = (g- u)mod ( -1 )
Sau đó A gửi bộ đôi bao gồm: thông báo và chữ ký số ( R, ) cho B
Khi B nhận được ( R, ) và kiểm tra điều kiện =mod có thỏa mãn khơng.Nếu
thỏa mãn, thì B khẳng định rằng (R,S) của A nhận giá trị “đúng” và chấp nhận ký
của A trên R.
Độ an tồn của lược đồ chữ ký só Elgamal : bài toán giả mạo chữ ký số
Elgamal được hiểu biết là thông báo R và các tham số công khai p,g,y. Hãy tìm cặp
(u,v) sao cho:
=mod p
16


Lược đồ chữ ký số Elgamal đòi hỏi phải gửi kèm theo cả thông báo R và chữ
ký số của nó ( u,v). đối phương khơng biết khóa bí mật = a mà muốn giả mạo chữ
ký số trên R là một việc khó tương đương với việc tính logarit rời rạc.
Giả sử đối phương chọn được giá trị u và cố gắng tìm v, khi đó đối phương
phải tính

v = mod p
thật vậy, ta có v = (R – au ) mod (p-1 )
-

Vì u = mod p nên = g,
v = ((R-au) g)mod(p-1)
Vì y = mod p, nên a = y
Mà R =
Do đó: v = () g

Ngược lại nếu đối phương chọn trước v, sau đó tìm u thì đối phương phải giải
phương trình=mod p. Đây là phương trình khó giải , và để giải hai phương trình
này , đối phương cần phải tính logarit rời rạc trong trường Zp
Như vậy, ta có thể tin rằng khả năng giả mạo chữ ký trên một thông báo cho
trước khi khơng biết khóa bí mật là rất khó. Do đó lược đồ chữ ký số Elgmal là an
tồn
Lược đồ chữ ký số Elgamal có nhược điểm là chữ ký số dài gồm 2 thành phần
là (u,v) và phải gửi đi kèm theo thông báo R . Thật vậy, để lược đồ an tồn thì phải
sử dụng số modulo p lớn, nhiều người cho rằng độ dài tối thiểu của p là 1024 bit.
Khi đó , độ dài của chữ ký số sẽ là 2048 bit. Tuy vật , do đó có nhiều tính chất an
tồn tốt nên lược đồ này được sử dụng rộng rãi hơn lược đồ chữ ký số RSA và đặc
biệt chuẩn chữ ký số được phát triển từ lược đồ chữ ký số Elgamal.
2.3 Lược đồ chữ ký số ECDSA
Lược đồ chữ ký số ECDSA là phiên bản sử dụng đường cong elliptic của thuật
toán chữ ký số quen thuộc DSA. Nó là lược đồ chữ ký số dựa trên đường cong
elliptic chuẩn phổ biến nhất, đã được công bố trong các chuẩn ANSI X9.62, FIPS
186-2, IEEE 13632000 và ISO/IEC 15946-2.
Sinh khóa trên đường cong elliptic
Một đường cong elliptic E trên trường nguyên tố Fp với p nguyên tố, điểm P
thuộc E(Fp) có cấp nguyên tố n, G= (p) là nhóm sinh bởi điểm P cũng có cấp

nguyên tố. Một cặp khóa trên đường cong elliptic tương ứng với một tập tham số
miền D= (p,F,R,S,a,b,P,n,h) theo chuẩn ISO/IEC 15946-2.
17


Khóa cơng khai là một điểm được chọn ngẫu nhiên Q trong nhóm (p) được sinh
bởi P. khóa bí mật tương ứng sẽ là d = logPQ Thuật toán sinh cặp khóa trên đường
cong elliptic như sau.
1.
2.
3.

Chọn ngẫu nhiên một số nguyên d thuộc [1,n-1]
Tính Q= dP
Trả về (Q,d)

Sinh chữ ký ECDSA
Để ký một thông báo m, thực thể A với cặp khóa bí mật và khóa cơng khai
(x,Q) thực hiện theo thuật toán dưới đây
1.
2.
3.
4.
5.
6.

Chọn ngẫu nhiên một số nguyên k [1,n-1]
Tính kP= () và chuyển thành một số nguyên
Tính r = mod n . nếu r = 0 thì quay lại bước 1
Tính e = H(m)

Tính s = (e + dr) mod n . Nếu s= 0 thì quay lại bước 1
Chữ ký (r,s)
Kiểm tra chữ ký ECDSA

Để kiểm tra tính hợp lệ của chữ ký (r,s) của A trên thông báo m, thực thể B nhận
một bản rõ có xác thực các tham số chung và khóa cơng khai Q của A . Sau đó B
thực hiện theo thuật toán dưới đây
1.
2.
3.
4.
5.
6.
7.
8.

Kiểm tra r,s là các số trong khoảng [1,2]. Nếu lỗi thì “chữ ký khơng hợp lệ”
Tính e = H(m)
Tính = mod n
Tính = e mod n và = r mod n
Tính X = P + Q=()
Nếu X = thì “ chữ ký khơng hợp lệ “
Chuyển thành một số nguyên ; tính v = mod n
Nếu v=r thì “ chữ ký hợp lệ”, ngược lại “ chữ ký không hợp lệ”

Việc kiểm tra chữ ký cho ta khẳng định chính xác về tính hợp lệ của chữ ký
bởi vì nếu chữ ký thực sự là do A tạo ra thì khi đó s = (e+dr) mod n. Điều này
dẫn đến : k (e+xr) + d(modn)
Do đó X = kP nên v = r.
Độ an tồn của lược đồ chữ ký số ECDSA: phụ thuộc vào xác định số

ngẫu nhiên bí mật k từ các giá trị kP và P. Bài toán này được gọi là bài toán
logarit rời rạc trên đường cong elliptic. Hiện nay chưa có thuật tốn nào được
18


xem là hiệu quả để giải bài toán này, thuật toán nhanh nhất để giải bài toán này
là thuật toán Pollard-rho.
Do có kích thước nhỏ và khả năng phát sinh khóa nhanh nên lược đồ chữ ký
số ECDSA rất được quan tâm để áp dụng cho các ứng dụng trên môi trường
giới hạn về thông lượng truyền dữ liệu,giới hạn về khả năng tính tốn, khả năng
lưu trữ. Tuy nhiên vẫn còn hạn chế lớn nhất hiện nay là việc chọn sử dụng các
tham số đường cong Elliptic và các điểm cơ sở chung như thể nào để đạt được
độ bảo mật cần thiết.

19


CHƯƠNG 3 CÁC TẤN CONG CHỮ KÝ SỐ SECP256K1
LIÊN QUAN GIÁ TRỊ NONCE TRONG LƯỢC ĐỒ CHỮ
KÝ SỐ ECDSA

3.1 Giới thiệu về các rị rỉ khóa của người dùng Bitcoin
Tiền điện tử đã trở thành thực thể phổ biến trên thị trường tài chính tồn cầu.
Ví dụ điển hình của một loại tiền tệ như vậy là Bitcoin với vốn hóa thị trường hiện
tại là hơn 135 tỷ đơ la hoặc Ethereum với vốn hóa thị trường hiện tại trên 44 tỷ đơ
la . Do đó, khơng có gì ngạc nhiên khi các kẻ xấu liên tục cố gắng ăn cắp các loại
tiền tệ đó, tức là thay đổi quyền sở hữu tài sản tiền điện tử mà khơng có sự đồng ý
của chủ sở hữu hợp pháp. Bản chất phi tập trung và ẩn danh (hoặc ít nhất là bút
danh) của những loại tiền tệ đó làm cho các hoạt động độc hại như vậy trở nên hấp
dẫn hơn, vì việc truy tìm và truy tố bởi các cơ quan thực thi pháp luật khó hơn

đáng kể so với các loại tiền tệ truyền thống.
Về việc đánh cắp tài sản tiền điện tử, có một số khả năng. Tiền điện tử
thường dựa trên một giao thức mật mã, sử dụng một số gốc mật mã như đường
cong elliptic hoặc chữ ký số , mà người ta có thể cố gắng tấn công. Tuy nhiên, cả
giao thức và nguyên tắc thường được nghiên cứu kỹ lưỡng và được chứng minh là
an toàn trên lý thuyết hoặc đã được các chuyên gia trong lĩnh vực này thực hiện
quy trình kiểm tra. Do đó, những kẻ tấn cơng tốt nhất có thể hy vọng trong cài đặt
này là các lỗi triển khai, thường tồn tại trong thời gian ngắn do bản chất nguồn mở
của việc triển khai tiền điện tử. Sự cố nổi bật nhất của một lỗ hổng triển khai như
vậy xảy ra vào tháng 2 năm 2014, khi những kẻ tấn cơng tìm thấy một lỗ hổng
trong sàn giao dịch Bitcoin Mt. Gox, cho phép chúng đánh cắp 850.000 BTC trị
giá khoảng 450 triệu đơ la vào thời điểm đó. Mặc dù cuộc tấn công không ảnh
hưởng đến bản thân giao thức Bitcoin, nhưng nó đã khai thác tính linh hoạt giao
dịch vốn có của các giao dịch Bitcoin để phá vỡ một số giả định của hệ thống kế
toán nội bộ của Mt. Gox.
Mặc dù những sự cố quy mô lớn như vậy rất hiếm, nhưng một loại tấn cơng
phổ biến hơn và do đó cũng nghiêm trọng hơn chống lại tiền điện tử nhằm mục
đích làm rị rỉ các khóa mật mã. Tài sản tiền điện tử được bảo vệ bằng mật mã bởi
một tập hợp các khóa bí mật, được gọi là ví. Nếu ví này được lưu trữ theo cách
khơng an tồn, tức là trên đĩa đơn thuần mà khơng có bất kỳ biện pháp bảo vệ bổ
20


sung nào, thì phần mềm độc hại có thể chỉ cần qt đĩa để tìm các ví đó và báo cáo
chúng cho kẻ tấn cơng, từ đó có thể sử dụng chúng để đánh cắp tài sản. Do sự phổ
biến của tiền điện tử, những kẻ tấn công đã triển khai ồ ạt phần mềm độc hại nhằm
mục đích làm rị rỉ các khóa bí mật như vậy. Một trường hợp nổi tiếng về phần
mềm độc hại đó là Pony Botnet, hoạt động từ tháng 9 năm 2013 đến tháng 1 năm
2014 . Phần mềm độc hại đã quét máy của nạn nhân để tìm các thơng tin đăng nhập
bí mật khác nhau, bao gồm cả các khóa tiền điện tử, dẫn đến thiệt hại tài chính là

220.000 đơ la. Các ví hiện đại ngày nay sử dụng các phương tiện quản lý khóa
phức tạp hơn như mã hóa bổ sung bằng mật khẩu, xác thực hai yếu tố hoặc bảo mật
dựa trên phần cứng , nhằm bảo vệ chống lại các cuộc tấn công cục bộ như vậy.
Trong bài báo này, chúng tơi có một góc nhìn khác và nghiên cứu xem liệu
các vectơ tấn cơng từ xa có cho phép rị rỉ khóa mật mã từ người dùng hay không.
Đầu tiên, chúng tôi nghiên cứu xem liệu người dùng (vơ tình hoặc cố ý) có làm rị
rỉ khóa mật mã một cách rõ ràng hay không, tức là đăng chúng công khai. Để đạt
được mục tiêu này, chúng tơi tận dụng khái niệm trí tuệ nguồn mở (OSINT) liên
quan đến rò rỉ tiền điện tử. Như một nghiên cứu điển hình, chúng tơi coi Bitcoin là
loại tiền điện tử phổ biến nhất được sử dụng hiện nay, nhưng bất kỳ loại tiền điện
tử nào khác cũng sẽ phù hợp. Là một nền tảng OSINT, chúng tôi coi Pastebin [3],
là một ứng dụng web chia sẻ thông tin phổ biến trên Internet và đã được chứng
minh là làm rò rỉ các loại thông tin khác nhau liên quan đến quyền riêng tư [16].
Tuy nhiên, các nền tảng OSINT khác như Twitter, Reddit, Facebook hoặc GitHub
cũng sẽ hoạt động. Chúng tơi hình dung một tình huống trong đó nạn nhân sử dụng
Pastebin để chia sẻ một phần thông tin bao gồm các bí mật của Bitcoin, chẳng hạn
như đoạn mã thực hiện một giao dịch hoặc đầu ra gỡ lỗi của phần mềm ví. Nạn
nhân tạo ra tệp dán này để chia sẻ thông tin một cách riêng tư, mà khơng biết rằng
thơng tin đó sẽ được cơng bố cơng khai trong nguồn cấp dữ liệu Pastebin. Sau đó,
kẻ tấn cơng giám sát nguồn cấp dữ liệu này có thể qt từng miếng dán mới để tìm
các khóa Bitcoin, chẳng hạn như sử dụng định dạng nổi tiếng của chúng và sử
dụng các khóa đó để đánh cắp Bitcoin. Để mô phỏng điều này, chúng tôi đã theo
dõi nguồn cấp dữ liệu Pastebin kể từ tháng 9 năm 2017 để biết các bí mật về
Bitcoin. Kết quả của chúng tơi cho thấy kẻ tấn cơng có thể đã đánh cắp 22,40 BTC
trong khoảng thời gian này.
Sau đó, chúng tơi cũng nghiên cứu khả năng rị rỉ khóa ngầm, vì người dùng
tiền điện tử (hoặc nhà phát triển phần mềm) có thể áp dụng sai các nguyên tắc mật
mã. Đặc biệt, khi tập trung vào Bitcoin, chúng tôi nghiên cứu việc sử dụng khơng
chính xác Thuật tốn chữ ký kỹ thuật số đường cong Elliptic (ECDSA), tuy nhiên,
21



thuật toán này cũng áp dụng cho các loại tiền điện tử khác dựa trên nguyên thủy
này. Để ký một tin nhắn bằng ECDSA với một khóa bí mật, người ta phải tính tốn
một chữ ký, bao gồm một ký tự k được chọn ngẫu nhiên. Ai cũng biết rằng ngồi
khóa bí mật, nonce cũng phải được giữ bí mật, vì kẻ tấn cơng có thể sử dụng chữ
ký và k để lấy sk. Tương tự, nếu một người ký hai thông điệp khác nhau m1 và m2
bằng cách sử dụng cùng một k và cùng một sk, thì kẻ tấn cơng có thể tính tốn lại
sk dựa trên cấu trúc của chữ ký và biết rằng cả khóa và nonce đã được sử dụng lại.
Mặc dù sự xuất hiện trùng lặp như vậy không nên xảy ra trong thực tế, vì tập hợp
các nonces có thể đủ lớn, tức là gần như 2256 trong trường hợp của Bitcoin, các
bản sao như vậy vẫn có thể xuất hiện vì các lý do khác. Một trong những lý do như
vậy có thể là việc sử dụng các trình tạo số ngẫu nhiên yếu hoặc phần mềm dễ bị tấn
công không nhận thức được tác động của việc sử dụng lại liên tục. Một tình huống
khác cũng có thể chịu trách nhiệm cho những lần xuất hiện trùng lặp như vậy là
sao chép hoặc đặt lại một máy ảo, điều này có thể dẫn đến việc sử dụng lại cùng
một hạt giống cho trình tạo số ngẫu nhiên. Mặc dù có bằng chứng giai thoại về việc
trùng lặp các ký hiệu trong chuỗi khối Bitcoin, nhưng khơng có nghiên cứu hệ
thống nào về tác động thực tế hoặc mức độ phổ biến của hiện tượng này, tức là
thiệt hại tài chính tiềm ẩn có thể gây ra. Để lấp đầy khoảng trống này, chúng tơi
qt chuỗi khối Bitcoin để tìm các mã không trùng lặp và mô phỏng một kịch bản
tấn công trong đó một kẻ độc hại chủ động theo dõi các giao dịch đến để tìm kiếm
các lần xuất hiện trùng lặp để làm rị rỉ khóa và đánh cắp Bitcoin. Đặc biệt, chúng
tơi phác thảo một cách có hệ thống cách kẻ tấn cơng có thể sử dụng các liên kết
trùng lặp để làm rị rỉ bí mật, điều mà trước đây chưa được thể hiện chi tiết như
vậy. Điều này vượt xa những trường hợp ngây thơ khi cùng một cặp key và nonce
được sử dụng hai lần để ký hai thông điệp khác nhau. Trên thực tế, chúng tơi cho
thấy rằng cũng có thể bị rị rỉ bí mật bằng cách khai thác sự phụ thuộc tuần hồn
giữa các khóa và các ký tự trùng lặp. Kết quả của chúng tơi cho thấy kẻ tấn cơng
có thể đã sử dụng phương pháp này để đánh cắp 412,80 BTC.

Tóm lại, những đóng góp của chúng tơi như sau: Chúng tơi đánh giá mối đe
dọa rị rỉ khóa Bitcoin rõ ràng bằng cách sử dụng OSINT. Chúng tôi khởi tạo ý
tưởng này bằng cách theo dõi nguồn cấp dữ liệu cơng khai của Pastebin để tìm các
khóa bí mật bị rị rỉ. Kết quả của chúng tơi chứng minh cách kẻ tấn cơng làm điều
này có thể đã đánh cắp 22,40 BTC. Chúng tơi chứng minh một cách có hệ thống
cách những kẻ tấn cơng có thể giám sát các giao dịch Bitcoin để quét tìm các lỗ
hổng bảo mật. Chúng tơi phát triển một phương pháp có thể ánh xạ các chữ ký với
các số không trùng lặp với các hệ phương trình tuyến tính bằng cách sử dụng biểu
diễn đồ thị lưỡng phân. Chúng tôi đánh giá tác động của việc rị rỉ khóa ngầm trong
22


bối cảnh của Bitcoin. Đó là, chúng tơi phân tích mức độ phổ biến của chúng và số
lượng Bitcoin mà kẻ tấn cơng có thể đã đánh cắp bằng cách khai thác chúng. Cuối
cùng, chúng tôi nghiên cứu xem việc khai thác như vậy đã từng xảy ra trong quá
khứ hay chưa. Kết quả của chúng tôi cho thấy kẻ tấn cơng có thể đã đánh cắp
412,80 BTC và những kẻ tấn công đã không ngừng khai thác sử dụng lại trong quá
khứ để đánh cắp Bitcoin.
3.2 Nền
Trong phần này, chúng tôi phác thảo các sơ bộ cần thiết cho phạm vi của bài
báo này để nắm bắt các ý tưởng của chúng tôi bằng cách sử dụng công nghệ
Bitcoin.
Blockchain và Khai thác. Thành phần trung tâm của giao thức Bitcoin là
chuỗi khối Bitcoin, là một bản ghi chỉ dành cho phần phụ phân tán, còn được gọi là
sổ cái. Ý tưởng của sổ cái này là để theo dõi tất cả các giao dịch đã từng xảy ra
trong mạng Bitcoin. Sổ cái bao gồm một chuỗi các khối, mỗi khối bao gồm một
tập hợp các giao dịch. Việc thêm một khối như vậy vào chuỗi khối đòi hỏi phải giải
một câu đố tính tốn bằng cách sử dụng hệ thống bằng chứng cơng việc Hashcash .
Q trình thêm các khối vào blockchain được gọi là khai thác và được thưởng bằng
Bitcoin. Các giao dịch và khối được tạo và phân phối bởi các đồng nghiệp của

mạng. Trước khi các giao dịch được khai thác, chúng được đặt trong một bộ đệm
tạm thời được gọi là mempool. Các thợ đào, tức là những người đồng nghiệp khai
thác khối, sau đó sẽ nhận các giao dịch từ mempool để xây dựng và khai thác một
khối và cuối cùng, thông báo một khối mới được khai thác vào mạng.
Giao dịch. Một giao dịch Bitcoin T bao gồm một chuỗi đầu vào = [,…, im]
và chuỗi đầu ra = [,…, ] và được xác định duy nhất bởi một ID giao dịch, được tạo
ra bằng cách tính tốn một hàm băm của sự giao dịch. Do đó, đầu vào và đầu ra
được xác định duy nhất bởi ID của giao dịch chứa chúng và chỉ mục của chúng
trong danh sách đầu vào và danh sách đầu ra, tương ứng. Một đầu ra ∈ mang một
giá trị, là số satoshi mà đầu ra này có giá trị. Một satoshi được định nghĩa sao cho
một Bitcoin (BTC) bằng 108 satoshi. Mục đích của một giao dịch là chi tiêu đầu ra
bằng cách tạo ra những đầu ra mới, đại diện cho dòng tiền. Để thực hiện điều này,
mọi đầu vào ∈ tham chiếu duy nhất một đầu ra của một giao dịch trước đó khác,
tức là những đầu vào sẽ được chi tiêu và tạo ra các đầu ra mới có thể được sử dụng
cho các giao dịch trong tương lai. Một đầu ra chỉ có thể được tham chiếu một lần
và các đầu ra trong chuỗi khối chưa được tham chiếu tại bất kỳ thời điểm nhất định
nào được gọi là tập hợp các đầu ra chưa sử dụng. Mọi giao dịch đều mang một
khoản phí giao dịch ngầm, là chênh lệch giữa tổng giá trị của các đầu ra và tổng
23


giá trị của các đầu ra được tham chiếu. Phí giao dịch sẽ được trả cho các thợ đào,
do đó ưu tiên các giao dịch dựa trên phí của họ, tức là phí càng cao, giao dịch sẽ
được khai thác càng nhanh. Vì một khối chỉ có thể có kích thước 1 MiB, các thợ
đào thường sẽ coi phí giao dịch là một hàm của satoshi trên mỗi byte của giao dịch,
tức là giao dịch càng lớn thì giá trị danh nghĩa của phí càng lớn. Phí giao dịch là
một yếu tố kinh tế thiết yếu của mạng Bitcoin và thay đổi liên tục tùy thuộc vào số
lượng giao dịch trong mempool và số tiền mà các đồng nghiệp sẵn sàng trả cho các
thợ đào. Các giao dịch đặc biệt mà khơng có bất kỳ đầu vào nào tham chiếu đến
các đầu ra khác được gọi là giao dịch coinbase và được tạo khi một khối được khai

thác để thưởng cho người khai thác, đó là cách Bitcoin được tạo ban đầu. Nghĩa là,
trước khi thợ đào khai thác một khối, trước tiên họ sẽ tạo một giao dịch coinbase sẽ
được đưa vào khối và thưởng cho họ bằng Bitcoin. Phần thưởng này là một số tiền
cố định, được giảm một nửa sau mỗi 210.000 khối, cộng với phí của tất cả các giao
dịch trong khối.
Tập lệnh. Các giao dịch trong mạng Bitcoin được xác minh bằng cách sử
dụng một ngơn ngữ dựa trên ngăn xếp nhỏ, các chương trình được gọi là tập lệnh.
Mọi đầu vào và đầu ra đều chứa một tập lệnh, thường được gọi là scriptSig và
scriptPubKey, tương ứng. Các tập lệnh này có thể thực hiện số học, mật mã, điều
khiển luồng, v.v. Để một giao dịch hợp lệ, người ta phải nối scriptSig của mỗi đầu
vào với scriptPubKey của đầu ra được tham chiếu của nó, điều này tạo ra một bộ
tập lệnh mới, tức là một tập lệnh cho mỗi đầu vào. Tất cả các tập lệnh này sau đó
được đánh giá và để giao dịch hợp lệ, chỉ có một phần tử trên ngăn xếp sau khi
đánh giá và phần tử này phải bằng true. Do đó, scriptPubKey có thể được coi là
một phương tiện bảo vệ, tức là người ta chỉ có thể mua lại một đầu ra nếu họ có thể
cung cấp một scriptSig chính xác. Ngơn ngữ kịch bản chứa các lệnh đặc biệt cho
mật mã đường cong elliptic, được sử dụng trong khuôn khổ kịch bản này để các
giao dịch an toàn bằng mật mã. Trong bối cảnh này, mọi người dùng đều có sk
khóa bí mật và pk khóa cơng khai. Loại giao dịch phổ biến nhất được gọi là giao
dịch Pay To Pubkey Hash (P2PKH). Đầu ra của các giao dịch như vậy có một
scriptPubKey xác minh rằng người gửi giao dịch sở hữu khóa cơng khai chính xác
bằng cách so sánh nó với một hàm băm. Ngồi ra, script xác minh chữ ký, có nghĩa
là scriptSig đang hoạt động phải cung cấp cả khóa cơng khai pk cũng như chữ ký
hợp lệ có thể được xác minh bằng pk, có nghĩa là người gửi phải biết sk.
Địa chỉ Bitcoin. Địa chỉ Bitcoin là một mã băm pk được tuần tự hóa, được
tạo ra bằng cách băm khóa cơng khai với hàm băm SHA-256 và RIPMED-160 và
thêm vào và thêm một byte phiên bản và byte tổng kiểm tra. Sau đó, mã băm được
24



tuần tự hóa bằng cách sử dụng mã hóa base58, đây là phiên bản mã hóa base64
thân thiện với con người hơn và dễ đọc hơn và loại bỏ các ký tự trơng khơng rõ
ràng (ví dụ: số 0 (“0”) và chữ o (“O”))). Ví dụ về địa chỉ như vậy là
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM. Trước khi băm, pk phải được tuần
tự hóa, có hai tùy chọn, đó là khóa cơng khai nén và khóa cơng khai khơng nén.
Chúng tơi bỏ qua các chi tiết kỹ thuật ở đây vì chúng khơng bắt buộc đối với phạm
vi của bài báo này. Điều quan trọng là cả hai tùy chọn tuần tự hóa đều mang lại các
địa chỉ khác nhau, có nghĩa là mọi pk khóa cơng khai tương ứng với hai địa chỉ, có
thể được sử dụng độc lập với nhau. Điều này có nghĩa là nếu kẻ tấn cơng làm rị rỉ
khóa bí mật, chúng sẽ giành được quyền kiểm sốt số dư của hai địa chỉ. Chúng tơi
có thể xác định số dư của một địa chỉ P2PKH bằng cách sử dụng các tập lệnh đã đề
cập trước đó. Ví dụ: chúng tôi xác định rằng số dư của một địa chỉ P2PKH mã hóa
một hàm băm h, là tổng các giá trị của tất cả các đầu ra chưa được sử dụng có thể
được đổi bằng khóa cơng khai pk mà h là một hàm băm.
3.3 Rị rỉ chính rõ ràng: Open Source Wisdom

Trong phần này, chúng tôi sẽ phác thảo phương pháp mà chúng tôi sử dụng
để phát hiện ra các vụ rị rỉ khóa Bitcoin rõ ràng, tức là các trường hợp người dùng
(cố ý hoặc không cố ý) tiết lộ trực tiếp tài liệu khóa Bitcoin nhạy cảm cho cơng
chúng. Để đạt được mục đích này, chúng tơi tn theo ý tưởng chung về trí thơng
minh nguồn mở (OSINT), trong đó kẻ tấn cơng thu thập thơng tin có sẵn cơng khai
để lấy thơng tin nhạy cảm. Để đánh giá ý tưởng này trong bối cảnh bí mật của
Bitcoin, chúng tôi đã chọn Pastebin làm nền tảng OSINT. Với sự phổ biến của nó,
chúng tơi cho rằng người dùng Bitcoin đã vơ tình làm rị rỉ thơng tin bí mật ở đó.
Ví dụ về những rị rỉ như vậy sẽ là người dùng xuất bản các đoạn mã thực hiện các
giao dịch Bitcoin hoặc đầu ra gỡ lỗi của một số phần mềm ví mà người dùng muốn
chia sẻ một cách riêng tư, mà không biết rằng những đoạn mã này sau đó được
hiển thị cơng khai trong nguồn cấp dữ liệu Pastebin. Chúng tôi đã theo dõi tất cả
các lần dán bắt đầu từ tháng 9 năm 2017 và qt từng miếng dán để tìm bí mật
Bitcoin, tức là khóa bí mật.

3.3.1 Tìm kiếm bí mật về Bitcoin
Để qt hồ sơ cho các khóa Bitcoin bí mật, chúng tơi tận dụng quan sát rằng
các khóa Bitcoin được tuần tự hóa bằng cách sử dụng một định dạng nổi tiếng.
Khóa bí mật là một số ngun sk, chúng tôi sẽ mô tả kỹ hơn trong Sect. 4.1. Định
dạng được thỏa thuận để tuần tự hóa các khóa đó là Định dạng Nhập Ví (WIF). Để
chuyển một sk khóa bí mật sang định dạng này, quy trình sau được áp dụng. Đầu
tiên, sk được chuyển đổi thành biểu diễn big-endian dài 32 byte, chúng ta gọi là b.
25


×