Tải bản đầy đủ (.pdf) (58 trang)

Về tiền điện tử, cryptocurrency và bitcoin (luận văn thạc sĩ)

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.18 MB, 58 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
---------------------

VŨ DUY HIẾN

VỀ TIỀN ĐIỆN TỬ, CRYPTOCURRENCY VÀ
BITCOIN

Chuyên ngành: Cơ sở Toán cho Tin học
Mã số: 60460110
LUẬN VĂN THẠC SĨ KHOA HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. TÔN QUỐC BÌNH

XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
CHỦ TỊCH HỘI ĐỒNG CHẤM LUẬN
VĂN THẠC SĨ KHOA HỌC
(Ký và ghi rõ họ tên)

CÁN BỘ HƢỚNG DẪN KHOA HỌC

PGS. TS. Nguyễn Hữu Ngự

Hà Nội – Năm 2015

(Ký và ghi rõ họ tên)

TS. Tôn Quốc Bình


MỤC LỤC


LỜI CAM ĐOAN .................................................... Error! Bookmark not defined.
LỜI CẢM ƠN .......................................................... Error! Bookmark not defined.
MỤC LỤC ..................................................................................................................1
DANH MỤC HÌNH VẼ, BẢNG BIỂU .................. Error! Bookmark not defined.
MỞ ĐẦU ....................................................................................................................3
CHƢƠNG 1: TỔNG QUAN VỀ TIỀN ĐIỆN TỬ, CRYPTOCURRENCY VÀ
BITCOIN ...................................................................................................................5
1.1. Giới thiệu về tiền điện tử, Cryptocurrency và Bitcoin .........................................5
1.2. Các vấn đề của tiền điện tử Bitcoin .....................................................................8
CHƢƠNG 2: CƠ SỞ MẬT MÃ HỌC CỦA TIỀN ĐIỆN TỬ BITCOIN ..........10
2.1. Chữ ký số trên hệ mật đường cong Eliptic (ECSDA) ........................................10
2.1.1. Đường cong Elliptic .................................................................................10
2.1.2. Chữ ký số trên hệ mật đường cong Elliptic ..............................................14
2.2. Hàm băm ............................................................................................................17
2.2.1. Tổng quan về hàm băm ............................................................................17
2.2.2. Hàm băm SHA-256 ..................................................................................19
2.2.3. Hàm băm RIPEMD-160 ...........................................................................23
2.3. Cây băm Merkle .................................................................................................26
2.3.1. Bài toán xác thực dữ liệu ..........................................................................26
2.3.2. Cây băm Merkle và xác thực dữ liệu trên cây băm Merkle .....................27
2.4. Hashcash ............................................................................................................29
2.4.1. Khái niệm .................................................................................................29
2.4.2. Hashcash ngăn chặn thư rác .....................................................................30
2.4.3. Hashcash chống lại tấn công từ chối dịch vụ ...........................................31
1


2.4.4. Đánh giá chi phí tính toán của Hashcash..................................................32
2.5. TimeStamp .........................................................................................................33
2.6. Base 58 ...............................................................................................................34

CHƢƠNG 3: NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ THỐNG TIỀN ĐIỆN TỬ
NGANG HÀNG BITCOIN.....................................................................................36
3.1. Mô tả hoạt động của hệ thống tiền điện tử ngang hàng Bitcoin ........................36
3.1.1. Định nghĩa các thành phần của hệ thống ..................................................36
3.1.2. Quy trình thực hiện thanh toán trong hệ thống tiền điện tử ngang hàng
Bitcoin ................................................................................................................36
3.2. Những giải pháp cho các vấn đề của tiền điện tử Bitcoin..................................37
3.2.1. Vấn đề tạo ra đồng tiền điện tử Bitcoin ....................................................37
3.2.2. Vấn đề xác định quyền sở hữu đồng tiền điện tử Bitcoin ........................39
3.2.3. Vấn đề chuyển quyền sở hữu đồng tiền điện tử Bitcoin ..........................42
3.2.4. Vấn đề chia nhỏ giá trị của một đồng tiền Bitcoin và một giao dịch sử
dụng nhiều đồng tiền Bitcoin .............................................................................48
3.2.5. Vấn đề an toàn bảo mật của hệ thống tiền điện tử ngang hàng Bitcoin ...49
KẾT LUẬN ..............................................................................................................54
TÀI LIỆU THAM KHẢO ......................................................................................57
PHỤ LỤC ................................................................. Error! Bookmark not defined.

2


MỞ ĐẦU
Tiền tệ ra đời đã giúp cho hoạt động trao đổi, sản xuất và lưu thông hàng hoá
trong xã hội được phát triển. Tất cả các đồng tiền chính thức từ trước tới nay, dù là
tiền giấy hay tiền điện tử đều được nhà nước hoặc tổ chức uy tín phát hành và quản
lý. Lý do của vấn đề này là chỉ có nhà nước, chính phủ và tổ chức uy tín mới có thể
đứng ra đảm bảo giá trị cho những đồng tiền phát hành và tạo niềm tin cho người sử
dụng chúng. Tuy nhiên, quan điểm đã bị thay đổi hoàn toàn khi tiền điện tử Bitcoin
ra đời.
Bitcoin hoạt động dựa trên cơ sở lý thuyết mật mã và giao thức mạng ngang
hàng (Peer-to-Peer); tất cả các node mạng đều có thể tạo ra được đồng tiền mới chứ

không có bất kỳ tổ chức, chính phủ hay nhà nước nào phát hành và quản lý; các
giao dịch sử dụng Bitcoin cũng không cần đến bên thứ ba tin cậy làm trung tâm xác
thực. Mặc dù vậy, Bitcoin vẫn mang đầy đủ tính chất quan trọng của tiền tệ: có thể
sử dụng để mua bán hàng hóa dịch vụ và thực hiện giao dịch thanh toán, không lưu
vết thông tin định danh của sự sở hữu trên đồng tiền, có thể chuyển đổi giá trị dễ
dàng trong cộng đồng chấp nhận Bitcoin.
Trên thế giới, có một số quốc gia: Đức, Hy Lạp, Venezuela và một số tổ chức,
doanh nghiệp chấp nhận tiền điện tử Bitcoin làm phương tiện thanh toán bởi các đặc
điểm ưu việt của nó. Bên cạnh đó, cũng có một số quốc gia như Việt Nam, Thái
Lan, Iceland…không chấp nhận Bitcoin là đồng tiền hợp pháp. Điều này cũng hoàn
toàn tự nhiên bởi cũng giống như các loại tiền tệ thông thường, Bitcoin chỉ được
chấp nhận và có giá trị đối với cộng đồng tin tưởng và sử dụng chúng. Tại các quốc
gia không chấp nhận Bitcoin, chính phủ đang dừng lại ở mức khuyến nghị người
dân không nên đầu cơ, nắm giữ và sử dụng Bitcoin chứ chưa đưa ra cơ sở khoa học
làm căn cứ cho những khuyến nghị này.
Cơ sở khoa học đầu tiên của hệ thống tiền điện tử ngang hàng Bitcoin được
Satoshi (một hoặc một nhóm nhà phát triển ẩn danh) công bố vào năm 2009 trong
một tài liệu cùng tên, tuy nhiên tài liệu này chỉ đưa ra ý tưởng hoàn toàn cơ bản.
3


Với mong muốn nghiên cứu làm rõ cơ sở khoa học hình thành nên đồng tiền điện tử
Bitcoin và nguyên lý hoạt động của hệ thống tiền điện tử ngang hàng Bitcoin, tôi đã
lựa chọn đề tài: “Về tiền điện tử, Cryptocurrency và Bitcoin” cho luận văn của
mình.
Bố cục của luận bao gồm phần mở đầu, ba chương chính, phần kết luận, phụ
lục và tài liệu tham khảo. Nội dung của ba chương được tổ chức như sau:
Chương I: Tổng quan về tiền điện tử, Cryptocurrency và Bitcoin.
Chương II: Cơ sở mật mã học của tiền điện tử Bitcoin.
Chương III: Nguyên lý hoạt động của hệ thống tiền điện tử ngang hàng

Bitcoin.
Sau đây là phần trình bày nội dung của từng chương.

4


CHƢƠNG 1: TỔNG QUAN VỀ TIỀN ĐIỆN TỬ, CRYPTOCURRENCY VÀ
BITCOIN
1.1. Giới thiệu về tiền điện tử, Cryptocurrency và Bitcoin
Theo quan điểm của chủ nghĩa Mác-Lênin, tiền tệ là hàng hoá đặc biệt, dùng
làm vật ngang giá chung thống nhất cho các hàng hoá khác, là sự thể hiện chung
của giá trị và thể hiện lao động xã hội; đồng thời tiền tệ biểu hiện quan hệ sản xuất
giữa những người sản xuất hàng hoá, do quá trình phát triển lâu dài của trao đổi
hàng hoá tạo ra. Còn theo các nhà kinh tế hiện đại: Tiền được định nghĩa là bất cứ
cái gì được chấp nhận chung trong việc thanh toán để nhận hàng hoá, dịch vụ hoặc
trong việc trả nợ.
Bản chất của tiền tệ được thể hiện rõ hơn qua hai thuộc tính của nó là giá trị và
giá trị sử dụng. Trong đó:
- Giá trị của tiền theo quan điểm triết học Mác-Lênin là công sức lao động tích
tụ tạo ra nó đã được kết tinh vào trong bản thân đồng tiền.
- Khác với vật chất thông thường, giá trị sử dụng của tiền nằm ở khả năng thỏa
mãn nhu cầu trao đổi hàng hóa của xã hội, nhu cầu sử dụng làm vật trung gian trong
trao đổi. Giá trị sử dụng của một loại tiền tệ là do xã hội quy định: chừng nào xã hội
còn thừa nhận vai trò làm vật trung gian trao đổi của loại tiền tệ đó thì chừng đó giá
trị sử dụng của nó với tư cách là tiền tệ còn tồn tại [1].
Tiền tệ đã trải qua rất nhiều hình thái đa dạng khác nhau trong lịch sử hình
thành và phát triển. Trước khi những đồng tiền kim loại và tiền giấy xuất hiện, con
người đã sử dụng nhiều thứ khác nhau với vai trò như một loại tiền để trao đổi hàng
hóa. Chẳng hạn, ở một số nơi trên thế giới, người ta sử dụng răng cá mập như là
tiền. Ở nhiều nơi khác, tiền có thể là những chiếc lông chim sặc sỡ và những chiếc

vỏ sò quý hiếm; có nơi người ta còn dùng cọng lông trên đuôi voi để làm tiền. Với
sự phát triển nhanh của xã hội hiện đại ngày nay cùng với sự bùng nổ mạnh mẽ của
lĩnh vực Công nghệ thông tin, tiền đã được sử dụng dưới dạng những giá trị số được
lưu trữ trên máy tính hoặc thiết bị điện tử. Người sử dụng có thể thực hiện các giao
5


dịch điện tử bằng cách truyền các giá trị số từ máy tính (hoặc thiết bị điện tử) này
tới máy tính (hoặc thiết bị điện tử) khác. Loại tiền như này được gọi là tiền điện tử.
Trong vài năm trở lại đây, loại tiền điện tử phát triển mạnh mẽ nổi bật nhất là
Cryptocurrency. Cho đến nay, chưa có một thuật ngữ tiếng Việt chính thống nào mô
tả chính xác và đầy đủ ý nghĩa của Cryptocurrency. Chúng ta tạm dịch
Cryptocurrency là tiền điện tử mật mã bởi đây là một hình thức tiền điện tử được
xây dựng dựa trên cơ sở lý thuyết mật mã nhằm đảm bảo an toàn cho các giao dịch
điện tử. Khác tiền tệ thông thường, tiền điện tử Cyptocurrency không được phát
hành bởi bất kỳ tổ chức, chính phủ hay nhà nước. Tính đến tháng 5 năm 2014, đã có
trên 275 loại Cryptocurrency được lưu hành trên thị trường,…Có thể kể đến điển
hình một số loại phổ biến như:
Bảng 1.1-Một số tiền điện tử Cryptocurrency điển hình

Tên gọi

Viết tắt

Năm

Giá trị

xuất


thị trƣờng

hiện

(tỷ USD)

Số lƣợng đã
phát hành

Thuật toán

/Tổng số

hình thành

(triệu)

Bitcoin

BTC/XBT

2009

~5.813-8.332

~12,63/21

SHA-256

Litecoin


LTC

2011

~266-310

~27.37/84

Scryt

Peercoin

PPC

2012

~30-48

~21,3/ ∞

SHA-256

Ripple

XRP

2013

~20-41


~100/100

ECDSA

Darkcoin

DRK

2014

~6-39

~4,37/22

X11

Dogecoin

DOGE/XDG

2013

~22-38

~69,131/100

Namecoin

NMC


2011

~16-10

~8,48/21

SHA-256

Mastercoin

MSC

2013

~9-21

~0,6/0,6

SHA-256

6

Scrypt


Tên gọi

Viết tắt


Năm

Giá trị

xuất

thị trƣờng

hiện

(tỷ USD)

Số lƣợng đã
phát hành

Thuật toán

/Tổng số

hình thành

(triệu)

Primecoin

XPM

2013

~2-4


~5,18/∞

ICC/2CC/TƯN

Vertcoin

VTC

2014

~2-4

~3,36/84

Scrypt

Aroracoin

AUR

2014

~0,2-0,7

~10,68/21

Scrypt

MazaCoin


MZC

2014

~0,1 ~226,98/2419

SHA-256

(Số liệu tính đến cuối năm 2014, Nguồn: Wikipedia)
Gần đây nhất, vào đầu năm 2015, một hình thức Cryptocurrency mới được ra
đời là Onecoin. Người sáng lập ra Onecoin là Tiến sĩ, luật sư Dr. Ruja Ignotava nổi
tiếng trong giới tài chính. Bà là người đã tư vấn chiến lược trong quá trình xây dựng
hệ thống tiền điện tử Bitcoin và nhiều tập đoàn tài chính khác ở châu Âu.
Trong tất cả các loại tiền Cryptocurrency, Bitcoin là loại điển hình nhất, ra đời
sớm nhất và cũng là loại tiền Cryptocurrency được sử dụng rộng rãi nhất. Bitcoin
mang những đặc điểm nổi bật như sau:
- Bitcoin không được phát hành và quản lý bởi bất kỳ một ngân hàng trung
ương nào, không một ai hay công ty nào điều hành Bitcoin, nó được vận hành bởi
tất cả những người dùng trong hệ thống.
- Người dùng Bitcoin cũng không cần phải đăng ký tài khoản, không cần tới
ngân hàng, không cần thẻ tín dụng, không cần những thông tin định danh để nhận
hay gửi Bitcoin.
- Hệ thống tiền điện tử Bitcoin còn là một mạng lưới phân bố ngang hàng, bất
kỳ ai đều có thể gửi Bitcoin trực tiếp cho một người khác mà không cần qua một
trung gian, bất kể thời gian, bất chấp không gian, với một lệ phí cực kì thấp, gần
7


như bằng 0 hoặc thậm chí bằng 0. Bởi vậy, các giao dịch của Bitcoin không phải

chịu những loại phí giao dịch trung gian.
- Người sở hữu Bitcoin có thể mua bán đồng tiền này và qui đổi ra một vài
đồng tiền khác trong cộng đồng chấp nhận.
1.2. Các vấn đề của tiền điện tử Bitcoin
Như đã đề cập ở trên, trong xã hội hiện đại ngày nay con người đã sử dụng
những giá trị số để thay thế cho đồng tiền truyền thống. Tuy nhiên để những giá trị
số ấy trở thành đồng tiền thì bản thân chúng phải thoải mãn những điều kiện cần và
điều kiện đủ. Điều kiện đủ ở đây đó chính là những giá trị số phải được một cộng
đồng chấp nhận và coi chúng như đồng tiền để thực hiện các giao dịch hoặc mua
bán hàng hóa, dịch vụ. Những giá trị số này muốn được cộng đồng chấp nhận thì
chúng phải có giá trị sử dụng và tạo được niềm tin đối với cộng đồng đó. Ngược lại,
đối với những người ngoài cộng đồng trên thì những giá trị số đó có thể không có
giá trị. Tuy nhiên, trong khuôn khổ luận văn này, chúng ta không bàn luận về điều
kiện đủ rằng liệu những giá trị số thay thế cho tiền tệ thông thường ấy có được cộng
đồng chấp nhận hay không mà chúng ta chỉ xem xét những điều kiện cần trên góc
nhìn về khía cạnh công nghệ để tiền điện tử CryptoCurrency mà cụ thể là Bitcoin có
thể trở thành một đồng tiền đúng nghĩa được sử dụng để giao dịch hoặc trao đổi
hàng hóa dịch vụ. Những điều kiện cần này bao gồm:
- Thứ nhất, cũng giống như đồng tiền truyền thống được phát hành và tạo ra
dựa trên chi phí tiêu tốn để tạo ra sản phẩm hàng hóa và dịch vụ, việc tạo ra tiền
điện tử Bitcoin phải gắn với việc tiêu tốn tài nguyên nhất định để sinh ra một giá trị
nào đó.
- Thứ hai, tiền điện tử Bitcoin được sử dụng trong các giao dịch phải xác định
được chủ sở hữu. Đối với tiền tệ thông thường, quy tắc sở hữu là bất kỳ ai nắm giữ
đồng tiền hợp pháp thì sẽ là người sở hữu đồng tiền đó. Điều này được xác định nhờ
tính duy nhất và tính khó làm giả mạo của đồng tiền. Tuy nhiên, bản chất tiền điện
tử nói chung và Bitcoin nói riêng là các giá trị số vì thế chúng có thể dễ dàng bị sao
8



chép. Do đó, cần phải có cơ chế xác định ai là người chủ sở hữu đồng tiền điện tử
Bitcoin.
- Thứ ba, tiền điện tử Bitcoin phải phù hợp với đặc điểm nổi bật nhất của tiền
tệ thông thường là có thể dễ dàng chuyển nhượng quyền sở hữu. Đối với tiền tệ
thông thường, việc chuyển giao sở hữu bằng cách chuyển tiền hay mua bán trao đổi
hàng hóa dịch vụ được diễn ra rất đơn giản: tiền được chuyển “tay trao tay” hoặc
thông qua bên thứ ba tin cậy (Ngân hàng, tổ chức tín dụng,…) làm trung gian cho
các giao dịch. Với tiền điện tử Bitcoin, đồng tiền không thể được chuyển theo kiểu
“tay trao tay” và cũng không có một bên thứ ba đáng tin cậy nào làm trung gian cho
các giao dịch, vì vậy cũng cần cơ chế để chuyển giao quyền sở hữu và đảm bảo rằng
mỗi đồng tiền không thể bị sao chép để tiêu hai lần (double spending).
- Thứ tư, trong quá trình phát hành tiền tệ thông thường, ngân hàng trung ương
tính toán đưa ra các mệnh giá đồng tiền khác nhau để phù hợp với nhu cầu thực tế:
tiền có mệnh giá thấp để dễ dàng thực hiện các giao dịch có giá trị thấp hoặc sử
dụng để trả lại và một giao dịch có thể sử dụng nhiều đồng tiền khác nhau. Vì vậy
tiền điện tử Bitcoin cũng cần có khả năng chia nhỏ hoặc gộp giá trị lại để đáp ứng
yêu cầu này.
- Thứ năm, bản chất tiền điện tử là các giá trị số, các giao dịch được thực hiện
trên mạng công khai. Bên cạnh đó, tiền điện tử Bitcoin lại không do chính phủ hoặc
tổ chức nào phát hành và quản lý vì vậy cần đảm bảo các giao dịch sử dụng Bitcoin
được an toàn và thông tin người dùng được bảo mật.
Trong năm điều kiện cần kể trên, ba điều kiện đầu tiên được coi là quan trọng
nhất bởi chúng quyết định mức độ khả dụng của một đồng tiền bất kỳ. Chúng ta có
thể coi năm điều kiện ở trên là năm vấn đề mà Satoshi cần phải giải quyết để đưa
Bitcoin trở thành một đồng tiền khả dụng. Mục tiêu nghiên cứu chính của luận văn
là tập trung làm rõ cơ sở khoa học và các giải pháp mà Satoshi đưa ra để giải quyết
được năm vấn đề trên đối với đồng tiền điện tử Bitcoin.

9



CHƢƠNG 2: CƠ SỞ MẬT MÃ HỌC CỦA TIỀN ĐIỆN TỬ BITCOIN
2.1. Chữ ký số trên hệ mật đƣờng cong Eliptic (ECSDA)
2.1.1. Đƣờng cong Elliptic
2.1.1.1. Định nghĩa đường cong Elliptic theo công thức Weierstrass
Đường cong elliptic E trên trường K là tập hợp các điểm (x, y)  KxK thỏa
mãn phương trình:
y2 + a1xy + a3y = x3+ a2x2 + a4x + a6 (ai K và 4a43+27a62≠0)
Với một điểm O gọi là điểm tại vô cùng [18].
2.1.1.2. Đường cong Elliptic trên trường số thực R
a. Định nghĩa
Đường cong elliptic E trên trường số thực R là tập hợp các điểm (x,y)  R2
thỏa mãn phương trình:
y2 = x3 + ax + b (a, b R và 4a3 + 27b2 ≠ 0)
Với một điểm O gọi là điểm tại vô cùng.
b. Phép cộng
- Về khía cạnh hình học, để xác định điểm R = P+Q (P≠O, Q≠O, P≠Q), ta nối
P và Q bằng đường thẳng L. Đường thẳng L cắt đường E tại ba điểm P, Q và –R(x,
y). Điểm R(x, –y) sẽ có tung độ là giá trị đối của y.

10


Hình 2.1-Phép cộng trên đƣờng cong Elliptic
- Về khía cạnh đại số, để xác định điểm R(xR, yR) = P(xP, yP) + Q (xQ, yQ) với
P≠O, Q≠O, P≠Q, ta tính xR và yR như sau:
= (yQ - yP)/ (xQ - xP)
xR =

2


– xP – xQ

yR = – yP + (xP – xR)
Ví dụ: xét đường cong Elliptic: y2 = x3 - x trên trường số thực, P(-1, 0)  E và
Q(0,0)  E. Tính theo công thức trên ta có:
; xR = 1 và yR = 0. Vậy P + Q = R(1, 0)  E
- Điểm tại vô cùng O là điểm cộng với bất kỳ điểm nào cũng sẽ ra chính điểm
đó. Nghĩa là: P  E, P+O = O+P = P
- Điểm đối xứng của P(xP, yP)  E là -P(xP, -yP)  E và P+ (-P) = O.

11


Ví dụ: xét đường cong Elliptic: y2 = x3 - x trên trường số thực, P(2, √ )  E
thì điểm đối xứng của P là -P(2,

√ )  E.

c. Phép nhân đôi
- Về khía cạnh hình học, để xác định điểm R= 2P = P+P, ta vẽ tiếp tuyến L của
đường cong elliptic tại điểm P, điểm –R là giao điểm còn lại của L với E và R = 2P
= P+P.

Hình 2.2-Phép nhân đôi trên đƣờng cong Elliptic
- Về khía cạnh đại số, để xác định điểm R(xR, yR) = 2P(xP, yP) với yP ≠ 0, ta
tính xR và yR như sau:
xR = (

)2 – 2xP


yR = (

)( xP – xR) – yP
12


Ví dụ: xét đường cong Elliptic: y2 = x3 - x trên trường số thực, P(2, √ )  E
thì 2P = R E với xR =

và yR =



- Mở rộng ra, phép nhân kP thực hiện bằng cách lặp k lần phép cộng.
2.1.1.3. Đường cong Elliptic trên trường Zp với p là số nguyên tố
a. Định nghĩa
Cho p là số nguyên tố (p > 3), đường cong elliptic E trên trường Zp là tập hợp
các điểm (x,y) Zp x Zp thỏa mãn phương trình:
y2 mod p = (x3 + ax + b) mod p (a, b  Zp và 4a3 + 27b2 mod p ≠ 0)
Với một điểm O gọi là điểm tại vô cùng [18].
b. Phép cộng
- Để xác định điểm R(xR, yR) = P(xP, yP) + Q (xQ, yQ), ta tính xR và yR như sau:
=

mod p

xR = (2 – xP – xQ) mod p
yR = (( xP – xR) – yP) mod p
Ví dụ: xét đường cong Elliptic: y2 mod 23 = (x3+x+1) mod 23 trên trường Z23

với P(3, 10)  E và Q(9, 7)  E. Tính theo công thức trên ta có:
= [(7-10)/(9-6)] mod 23 = (-1/2) mod 23 = 11 do 2*11 -1 (mod 23)
xR = (121-12) mod 23 = 17 và yR = -164 mod 23 = 20
Vậy P+Q = R(17, 20)  E
- Điểm tại vô cùng O là điểm cộng với bất kỳ điểm nào cũng sẽ ra chính điểm
đó. Nghĩa là: P  E, P+O = O+P = P.
- Điểm đối xứng của P(xP, yP)  E là -P(xP, yP’)  E thỏa mãn các điều kiện:
yP’ ZP sao cho (yP’ + yP) mod p = 0; P+ (-P) = O.
13


Ví dụ: xét đường cong Elliptic: y2 mod 23 = (x3+x+1) mod 23 trên trường Z23,
P(13, 7)  E. Điểm đối xứng của P là –P(13, 16)  E vì 16 Z23 và (16+7)
mod 23 = 0.
c. Phép nhân đôi
- Để xác định điểm R(xR, yR) = 2P(xP, yP) với yP ≠ 0, ta tính xR và yR như sau:
=

mod p

xR = (2 – 2xP) mod p
yR = (( xP – xR) – yP) mod p
Ví dụ: xét đường cong Elliptic: y2 mod 23 = (x3+x+1) mod 23 trên trường Z23
với P(3, 10)  E. Tính theo công thức trên ta có:
 = (28/20) mod 23 = (5/20) mod 23 = (1/4) mod 23 = 6 do 6*4  1 (mod 23)
xR = (36-6) mod 23 = 7 và yR = -34 mod 23 = 12. Vậy 2P = R(7,12)  E
- Mở rộng ra, phép nhân kP nhận được bằng cách thực hiện k lần phép cộng.
2.1.2. Chữ ký số trên hệ mật đƣờng cong Elliptic
2.1.2.1. Chuẩn bị tham số
Để thiết lập sơ đồ chữ ký ECDSA, ta chọn đường cong elliptic E trên trường

Fq với O là điểm ở vô cùng, điểm cơ sở G  E và n là bậc của G (nG = O).
2.1.2.2. Tạo khóa
1. Chọn số ngẫu nhiên d  [2, n – 1] làm khóa bí mật.
2. Tính Q(xQ, yQ) = dG làm khóa công khai.

14


2.1.2.3. Ký số trên bản rõ m
1. Chọn một số ngẫu nhiên k  [2, n – 1]
2. Tính điểm kG = (x1, y1)
3. Tính r = x1 mod n. Nếu r = 0, quay lại bước 1.
4. Tính k-1 (theo mod n)
5. Tính s = [k-1 (m + dr)] mod n. Nếu s = 0 quay lại bước 1.
6. Chữ ký trên thông điệp m là (r, s)
2.1.2.4. Kiểm tra chữ ký
1. Kiểm tra r và s có là các số tự nhiên  [2, n – 1] không.
2. Tính w = s-1 (theo mod n)
3. Tính u1 = mw mod n và u2 = rw mod n
4. Tính X = u1G + u2Q = (xX, yX)
5. Nếu X = O thì phủ nhận chữ ký. Ngược lại tính v = xX mod n.
6. 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 (m + dr)] mod n.
k  s-1 (m + dr)  s-1m + s-1 rd  wm + wrd  u1 + u2d (mod n).
Vì vậy, u1G + u2Q = (u1 + u2d)G = kG, và vì vậy v = r.
2.1.2.5. Ví dụ minh họa
a. Chuẩn bị tham số
Chọn đường cong elliptic E: y2 = x3 + x + 1 trên trường Z23, điểm ở vô cùng O,
điểm cơ sở G(17, 3).


15


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.
b. 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.
c. Ký số trên bản rõ m
1. Chọn một số ngẫu nhiên 2  [2, 6]
2. Tính điểm 2G = (13, 16)
3. Tính r = 13 mod 7 = 6.
4. Tính 2-1 (mod 7) = 4 vì 2*4 mod 7 = 1
5. Tính s = 4 (5 + 6*6) mod 7 = 3 ≠ 0
6. Chữ ký trên thông điệp m là (6, 3)
d. Kiểm tra chữ ký
1. r = 6 và s = 3 trong khoảng [2, 6].
2. Tính w = 3-1 (mod 7) = 5 vì 3*5 mod 7 = 1
3. Tính u1 = 5*5 mod 7 = 4 và u2 = 6*5 mod 7 = 2
4. Tính X = 4G + 2Q = (5, 19) + 2 (17, 20) = (5, 19) + (13, 7) = (13, 16)
5. Vì X ≠ O nên tính v = 13 mod 7 = 6.
6. v = r nên chữ ký là đúng!

16


2.1.2.6. Độ an toàn của sơ đồ chữ ký ECSDA
Độ an toàn của sơ đồ chữ ký ECDSA tương ứng với độ phức tạp của bài toán

logarit rời rạc trên đường cong elliptic: cho trước hai điểm Q và G nằm trên đường
cong elliptic E, tìm số tự nhiên d sao cho Q = dG.
Cho đến nay sơ đồ chữ ký ECDSA đã được chỉ ra là rất an toàn và hiệu quả.
Đối với bài toán logarit rời rạc đường cong elliptic thì có nhiều thuật toán giải nó,
tuy nhiên chưa có thuật toán nào có độ phức tạp tính toán trong thời gian đa thức.
Thuật toán giải bài toán logarit rời rạc đường cong elliptic tốt nhất hiện nay là
thuật toán Pollard’s Rho, phiên bản thiết kế theo hướng tính toán song song. Theo
đó với nhóm đường cong elliptic cấp n và có r máy tính tính toán cùng lúc thì phải
mất √

/2r phép toán.
Mặt khác người ta đã phân tích và chỉ ra rằng với cùng độ an toàn, hệ mã hoá

dựa trên bài toán logarit rời rạc đường cong elliptic có độ dài khoá ngắn hơn rất
nhiều so với hệ mã hoá dựa trên bài toán phân tích số nguyên thành các thừa số
nguyên tố (như RSA). Ví dụ với hệ mã hoá RSA có chiều dài khoá là 1024 bit thì hệ
mật đường cong elliptic chỉ cần độ dài khoá 163 bit sẽ có độ an toàn tương đương.
2.2. Hàm băm
2.2.1. Tổng quan về hàm băm
2.2.1.1. Khái niệm Hàm băm
Hàm băm là thuật toán dùng để “tóm tắt” (băm) tài liệu, bản tin hoặc thông
điệp và cho kết quả là một giá trị “băm” có kích thước cố định. Giá trị băm này còn
được gọi là “đại diện tài liệu”, “đại diện bản tin” hay “đại diện thông điệp” [2].
2.2.1.2. Các tính chất của Hàm băm
a. Tính chất 1: Hàm băm h là không va chạm yếu.
Hàm băm h được gọi là không va chạm yếu, nếu cho trước thông điệp x,
“khó” thể tính toán để tìm ra x’  x mà h(x’) = h(x)
17



b. Tính chất 2: Hàm băm h là không va chạm mạnh.
Hàm băm h được gọi là không va chạm mạnh nếu “khó” thể tính toán để tìm
ra hai thông điệp khác nhau x’ và x (x’  x) mà có h(x’) = h(x)
c. Tính chất 3: Hàm băm h là hàm một chiều.
Hàm băm h được gọi là hàm một chiều, nếu khi cho trước một bản tóm lược
thông báo z thì “khó thể” tính toán để tìm ra thông điệp ban đầu x sao cho h(x) = z.
Với tài liệu đầu vào (bản tin gốc) x, chỉ thu được giá trị băm duy nhất z = h(x).
Nếu dữ liệu trong bản tin x bị thay đổi hay bị xóa để thành bản tin x’ thì giá trị
băm h(x’)  h(x). Cho dù chỉ là một sự thay đổi nhỏ thì giá trị băm h(x) của nó
cũng vẫn thay đổi. Điều này có nghĩa là: hai thông điệp khác nhau thì giá trị băm
của chúng cũng khác nhau.
Nội dung của bản tin gốc “rất khó” suy ra từ giá trị hàm băm của nó. Nghĩa là:
với thông điệp x thì “dễ” tính được z = h(x) nhưng lại gần như không thể tính
ngược lại được x nếu chỉ biết giá trị băm h(x) (Kể cả khi biết hàm băm h). Tuy
nhiên, nếu chúng ta giảm yêu cầu bài toán xuống, nghĩa là tìm x sao cho giá trị băm
h(x) thỏa mãn khuôn dạng nhất định (Ví dụ: bắt đầu với một số cố định các bit 0)
thì bài toán này vẫn có thể giải quyết được nhưng đó vẫn là một bài toán khó cần
phải tiêu tốn chi phí tài nguyên tính toán.
2.2.3. Ứng dụng của hàm băm
- Với bản tin dài x thì chữ ký trên x cũng sẽ dài, như vậy tốn thời gian “ký”,
tốn bộ nhớ lưu giữ “chữ ký”, tốn thời gian truyền “chữ ký” trên mạng.
Người ta dùng hàm băm h để tạo đại diện bản tin z = h(x), nó có độ dài ngắn
(VD: 128 bit). Sau đó ký trên z, như vậy chữ ký trên z sẽ nhỏ hơn rất nhiều so với
chữ ký trên bản tin gốc x.
- Hàm băm dùng để xác định tính toàn vẹn dữ liệu.

18


- Hàm băm dùng để bảo mật một số dữ liệu đặc biệt, ví dụ bảo vệ mật khẩu,

bảo vệ khóa mật,…
- Một số hàm băm thông dụng: MD2, MD4, MD5, các hàm băm SHA, các
hàm băm RIPEMD,…
2.2.2. Hàm băm SHA-256
2.2.2.1. Giới thiệu
Secure Hash Algorithm (SHA) được công bố trong Hồ sơ Liên bang năm 1992
và được chấp nhận làm tiêu chuẩn vào năm 1993 do Viện Tiêu Chuẩn và Công
Nghệ Quốc Gia (NIST).
Ý tưởng thuật toán băm SHA-256 được thực hiện trong các bước sau:
- Bƣớc 1: Thông điệp ban đầu được tiền xử lý thành thông điệp M rồi được
chia nhỏ thành N khối 512 bits: M(1), M(2), …, M(N).
- Bƣớc 2: Khởi tạo giá trị cho mỗi Hj(0) (1≤j≤8) tính toán tuần tự các giá trị
Hj(i) (1≤i≤N) theo công thức:
H(i) = H(i-1) + CM(i) (H(i-1)) với C là hàm nén SHA-256 và phép + là phép cộng
theo modulo 232.
H(N) = (H1(N),…, H8(N)) là giá trị băm của M.
2.2.2.2. Mô tả thuật toán
a. Các phép toán cơ bản
 : phép XOR
 : phép AND
 : phép OR
¬ : phép NOT
+ : phép cộng modulo 232
Rn : phép dịch chuỗi sang phải (Shift Right) n bit
Sn : phép xoay vòng phải n bit
19


b. Tiền xử lý dữ liệu
Bƣớc 1: nhồi thêm dữ liệu

- Thông điệp ban đầu có độ dài l, thông điệp này được nhồi thêm k bit (k là số
nguyên nhỏ nhất) sao cho (l + k) ≡ 448 mod 512
hay (l + k) = n * 512 + 448 (n, k, l nguyên).
- Số bit k nằm trong khoảng [1, 511]
- Trong k bit nhồi thêm bao gồm: một bit 1 đầu tiên và theo sau là (k-1) bit 0
Bƣớc 2:
- Độ dài của khối dữ liệu ban đầu l được biểu diễn sang dạng nhị phân 64-bit
và được thêm vào cuối chuỗi nhị phân kết quả của bƣớc 1 để thành thông điệp
M
- Thông điệp M có độ dài là bội số của 512.
- Chia thông điệp M thành N khối 512 bits M(1), M(2), …, M(N). Mỗi khối M(i)
lại được chia thành 16 phần bằng nhau 32 bits là Mj(i) (j=0,1,..15)
c. Khởi tạo các giá trị
H1(0) = 0x6A09E667
H2(0) = 0xBB67AE85
H3(0) = 0x3C6EF372
H4(0) = 0xA54FF53A
H5(0) = 0x510E527F
H6(0) = 0x9B05688C
H7(0) = 0x1F83D9AB
H8(0) = 0x5BE0CD19

20


d. Mã giả
- Input: thông điệp M được chia thành N khối.
- Output: giá trị băm của thông điệp M có độ dài cố định 256 bits
- Mã giả:
For i = 1 to N

{
//Khởi tạo các thanh ghi a, b, c, d, e, f, g, h
a  H1(i-1); b  H2(i-1); c  H3(i-1); d  H4(i-1);
e  H5(i-1); f  H6(i-1); g  H7(i-1); h  H8(i-1);
// Cập nhật giá trị cho các thanh ghi trên
For j = 0 to 63
{
T1  h + ∑1(e)+ Ch(e,f,g) + Kj + Wj;
T2  ∑0(a)+ Maj(a,b,c);
h  g;
g  f;
f  e;
e  d + T1;
d  c;
c  b;
b  a;
a  T1 + T2;
}
// Tính toán các giá trị băm Hj(i)
H1(i)  a + H1(i-1); H2(i)  b + H2(i-1);
H3(i)  c + H3(i-1); H4(i)  d + H4(i-1);
H5(i)  e + H5(i-1); H6(i)  f + H6(i-1);
H7(i)  g + H7(i-1); H8(i)  h + H8(i-1);
}

21


Kết quả: H(N) = (H1(N),…,H8(N)) là giá trị băm.
Trong đó:

Ch(x,y,z) = (x  y)  (¬x  z)
Maj(x,y,z)= (x  y)  (x  z)  (y  z)
∑0(x) = S(2)(x)  S(13)(x)  S(22)(x)
∑1(x) = S(6)(x)  S(11)(x)  S(25)(x)
Tính Wj bằng cách:
For j = 0 to 15
Wj = Mj(i);
For j = 16 to 63
Wj  1(Wj-2) + Wj-7 + 0(Wj-15) + Wj-16;
Với 0(x)= S(7)(x)  S(18)(x)  R(3)(x)
1(x)= S(17)(x)  S(19)(x)  R(10)(x)

22


2.2.3. Hàm băm RIPEMD-160
2.2.3.1. Giới thiệu
RIPEMD (RACE Integrity Primitives Evaluation Message Digest) là một họ
của hàm băm mật mã được phát triển ở Leuven-Bỉ bởi Hans Dobbertin, Antoon
Bosselaers và Bart Preneel thuộc nhóm nghiên cứu COSIC tại Katholieke
Universiteit Leuven và lần đầu tiên được xuất bản vào năm 1996.
RIPEMD-160 là một phiên bản được tăng cường của RIPEMD với một kết
quả băm 160-bit được thiết kế thiết kế để sử dụng như là một thay thế an toàn cho
các hàm băm 128-bit MD4, MD5 và RIPEMD. RIPEMD-160 dự kiến sẽ được an
toàn trong mười năm tới hoặc hơn.
Ý tưởng thuật toán này như sau:
- Bƣớc 1: Thông điệp ban đầu được tiền xử lý thành thông điệp M rồi được
chia nhỏ thành các khối 512 bits.
- Bƣớc 2: Khởi tạo giá trị cho mỗi hj (0≤j≤4), tính toán N lần các giá trị hj sử
dụng hàm nén RIPEMD-160. H = (h0, h1, h2, h3, h4) là giá trị băm.

2.2.3.2. Mô tả thuật toán băm RIPEMD-160
a. Định nghĩa các phép toán, hàm logic và các hằng số
 : phép XOR
 : phép AND
 : phép OR
¬ : phép NOT
+ : phép cộng theo modulo 232
rols là phép xoay vòng trái s vị trí
f(j, x, y, z)

= x  y  z

(0 ≤ j ≤ 15)

f(j, x, y, z)

= (xy)  (¬xz)

(16 ≤ j ≤ 31)

23


f(j, x, y, z)

= (x¬y)  z

(32 ≤ j ≤ 47)

f(j, x, y, z)


= (xz)  (y¬z)

(48 ≤ j ≤ 63)

f(j, x, y, z)

= x  (y¬z)

(64 ≤ j ≤ 79)

K(j)

= 0x00000000

(0 ≤ j ≤ 15)

K(j)

= 0x5A827999

(16 ≤ j ≤ 31)

K(j)

= 0x6ED9EBA1

(32 ≤ j ≤ 47)

K(j)


= 0x8F1BBCDC

(48 ≤ j ≤ 63)

K(j)

= 0XA953FD4E

(64 ≤ j ≤ 79)

K’(j)

= 0x50A28BE6

(0 ≤ j ≤ 15)

K’(j)

= 0x5C4DD124

(16 ≤ j ≤ 31)

K’(j)

= 0x6D703EF3

(32 ≤ j ≤ 47)

K’(j)


= 0x7A6D76E9

(48 ≤ j ≤ 63)

K’(j)

= 0x00000000

(64 ≤ j ≤ 79)

r(j) = j

(0 ≤j≤ 15)

r(j) = 7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8 (16 ≤j≤ 31)
r(j) = 3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12 (32 ≤j≤ 47)
r(j) = 1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2 (48 ≤j≤ 63)
r(j) = 4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13 (64 ≤j≤ 79)
r’(j)= 5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12 (0 ≤j≤ 15)
r’(j)= 6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2 (16 ≤j≤ 31)
r’(j)= 15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13 (32 ≤j≤ 47)
r’(j)= 8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14 (48 ≤j≤ 63)
r’(j)= 12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11 (64 ≤j≤ 79)

24


×