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
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
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
Trang 3LỜI CAM ĐOAN Tôi tên là: Vũ Duy Hiến
Ngày sinh: 04 tháng 09 năm 1989
Học viên cao học khóa: 2012-2014
Chuyên ngành: Cơ sở Toán cho Tin học
Trường Đại học Khoa học Tự nhiên – Đại học Quốc gia Hà Nội
Tên đề tài luận văn: Về tiền điện tử, CryptoCurrency và Bitcoin
Cán bộ hướng dẫn khoa học: TS Tôn Quốc Bình
Tôi xin cam đoan luận văn này là công trình nghiên cứu của riêng tôi, các kết quả nghiên cứu độc lập, không sao chép và chưa được công bố nội dung này bất kỳ
ở đâu; các số liệu, các trích dẫn trong luận văn được chú thích có nguồn gốc rõ ràng, minh bạch
Tôi xin chịu hoàn toàn trách nhiệm về lời cam đoan của tôi
Hà Nội, ngày 11 tháng 11 năm 2015
Học viên
Vũ Duy Hiến
Trang 4LỜI CẢM ƠN
Lời đầu tiên, em xin được gửi lời cảm ơn sâu sắc tới TS Tôn Quốc Bình- người thầy đã luôn tận tình giúp đỡ em định hướng nghiên cứu trong suốt quá trình làm luận văn Đồng thời, thầy cũng là người truyền đạt cho em rất nhiều những kiến thức bổ ích về các lĩnh vực ngân hàng, tiền tệ, an toàn thông tin
Em xin được cảm ơn các thầy, cô đang công tác giảng dạy tại Bộ môn Tin học – Khoa Toán-Cơ-Tin học của trường Đại học Khoa học Tự nhiên Hà Nội Trong suốt quá trình học tập từ bậc đại học cho tới bậc cao học, em đã được các thầy, cô truyền đạt rất nhiều tri thức quí báu
Em cũng xin được cảm ơn gia đình, người thân và bạn bè của em đã giúp đỡ
và hỗ trợ cho em rất nhiều trong suốt thời gian qua
Hà Nội, ngày 11 tháng 11 năm 2015
Học viên
Vũ Duy Hiến
Trang 5
MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
MỤC LỤC iii
DANH MỤC HÌNH VẼ, BẢNG BIỂU v
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ TIỀN ĐIỆN TỬ, CRYPTOCURRENCY VÀ BITCOIN 3
1.1 Giới thiệu về tiền điện tử, Cryptocurrency và Bitcoin 3
1.2 Các vấn đề của tiền điện tử Bitcoin 6
CHƯƠNG 2: CƠ SỞ MẬT MÃ HỌC CỦA TIỀN ĐIỆN TỬ BITCOIN 8
2.1 Chữ ký số trên hệ mật đường cong Eliptic (ECSDA) 8
2.1.1 Đường cong Elliptic 8
2.1.2 Chữ ký số trên hệ mật đường cong Elliptic 12
2.2 Hàm băm 15
2.2.1 Tổng quan về hàm băm 15
2.2.2 Hàm băm SHA-256 17
2.2.3 Hàm băm RIPEMD-160 21
2.3 Cây băm Merkle 24
2.3.1 Bài toán xác thực dữ liệu 24
2.3.2 Cây băm Merkle và xác thực dữ liệu trên cây băm Merkle 25
2.4 Hashcash 27
2.4.1 Khái niệm 27
2.4.2 Hashcash ngăn chặn thư rác 28
2.4.3 Hashcash chống lại tấn công từ chối dịch vụ 29
Trang 62.4.4 Đánh giá chi phí tính toán của Hashcash 30
2.5 TimeStamp 31
2.6 Base 58 32
CHƯƠNG 3: NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ THỐNG TIỀN ĐIỆN TỬ NGANG HÀNG BITCOIN 34
3.1 Mô tả hoạt động của hệ thống tiền điện tử ngang hàng Bitcoin 34
3.1.1 Định nghĩa các thành phần của hệ thống 34
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 34
3.2 Những giải pháp cho các vấn đề của tiền điện tử Bitcoin 35
3.2.1 Vấn đề tạo ra đồng tiền điện tử Bitcoin 35
3.2.2 Vấn đề xác định quyền sở hữu đồng tiền điện tử Bitcoin 37
3.2.3 Vấn đề chuyển quyền sở hữu đồng tiền điện tử Bitcoin 40
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 46
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 47
KẾT LUẬN 52
TÀI LIỆU THAM KHẢO 55
PHỤ LỤC 57
Trang 7DANH MỤC HÌNH VẼ, BẢNG BIỂU
Hình 2.1-Phép cộng trên đường cong Elliptic 9
Hình 2.2-Phép nhân đôi trên đường cong Elliptic 10
Hình 2.3-Cây băm Merkle 8 node lá 26
Hình 2.4-Xác thực dữ liệu sử dụng cây băm Merkle 8 node lá 27
Hình 3.1-Node gốc của cây băm Merkle lưu trữ thông tin các giao dịch mới 36
Hình 3.2-Cấu trúc cây băm Merkle lưu trữ thông tin n giao dịch mới 42
Hình 3.3-Cấu trúc của TimeStamp sử dụng kỹ thuật băm 42
Hình 3.4-Cấu trúc một khối Block của TimeStamp 43
Hình 3.5-Cơ chế ghi nhận lịch sử giao dịch 44
Hình 3.6-Cơ chế thực hiện giao dịch sử dụng Bitcoin 46
Bảng 1.1-Một số tiền điện tử Cryptocurrency điển hình 4
Bảng 2.1-Bảng mã Base58 32
Bảng 3.2-Một số loại Version byte phổ biến 37
Trang 8MỞ ĐẦ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
Trang 9Vớ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
Trang 10CHƯƠ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
Trang 11dị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 xuất hiện
Giá trị thị trường (tỷ USD)
Số lượng đã phát hành /Tổng số (triệu)
Thuật toán hình thành
Trang 12Tên gọi Viết tắt
Năm xuất hiện
Giá trị thị trường (tỷ USD)
Số lượng đã phát hành /Tổng số (triệu)
Thuật toán hình thành
(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
Trang 13như 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
Trang 14ché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
Trang 15CHƯƠ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 (aiK 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
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
Trang 16Hì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:
- Đ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
Trang 17Ví dụ: xét đường cong Elliptic: y2 = x3 - x trên trường số thực, P(2, 6) E thì điểm đối xứng của P là -P(2, − 6) 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 = (3𝑥𝑃
2 + a 2𝑦𝑃 )2 – 2xP
yR = (3𝑥𝑃
2 + a 2𝑦 𝑃 )( xP – xR) – yP
Trang 18Ví dụ: xét đường cong Elliptic: y2 = x3 - x trên trường số thực, P(2, 6) E thì 2P = R E với xR = 25
24 và yR = 35
48 6
- 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
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]
- Đ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
Trang 19Ví 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
= (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
Trang 205 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)
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
Trang 21Tí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
Trang 222.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)
Trang 23b 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ũ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
Trang 24- 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
Rn : phép dịch chuỗi sang phải (Shift Right) n bit
Sn : phép xoay vòng phải n bit
Trang 25b 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ị
Trang 26d 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
// Tính toán các giá trị băm H j (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);
}
Trang 27Kết quả: H (N) = (H 1 (N) ,…,H 8 (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)
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)
Trang 282.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, AntoonBosselaers và Bart Preneel thuộc nhóm nghiên cứu COSIC tại Katholieke UniversiteitLeuven 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ố
Trang 30s(j) = 11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8(0 ≤j≤ 15) s(j) = 7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12(16 ≤j≤ 31) s(j) = 11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5(32 ≤j≤ 47) s(j) = 11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12(48 ≤j≤ 63) s(j) = 9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6(64 ≤j≤ 79) s’(j)= 8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6(0 ≤j≤ 15) s’(j)= 9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11(16 ≤j≤ 31) s’(j)= 9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5(32 ≤j≤ 47) s’(j)= 15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8(48 ≤j≤ 63) s’(j)= 8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11(64 ≤j≤ 79)
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 ở 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 M0, M1,…, MN-1
c Mô tả thuật toán bằng mã giả
Trang 31- Input: thông điệp M được chia ra thành N khối 16 words (512 bits) là Mi
A’ E’; E’ D’; D’ rol’10(C’);C’ B’; B’T; }
T h1 + C + D’; h1 h2 + D + E’;
h2 h3 + E + A’; h3 h4 + A + B’; h0 T;
}
H = (h 0 , h 1 , h 2 , h 3 , h 4 ) là giá trị băm.
2.3 Cây băm Merkle
2.3.1 Bài toán xác thực dữ liệu
A nắm giữ dữ liệu Y được chia bí mật thành n thành phần: Y1, Y2,…, Yn A giao cho B thành phần Yp Thiết kế một thuật toán để B xác thực xem Yp có thuộc Y hay không với thời gian xác thực nhanh nhất và dữ liệu trao đổi giữa A và B là công khai và ít nhất
Trang 322.3.2 Cây băm Merkle và xác thực dữ liệu trên cây băm Merkle
2.3.2.1 Đặt vấn đề
- Dữ liệu đầu vào: dữ liệu Y được chia thành n thành phần Y1, Y2,…, Yn (với
n có dạng 2m
) và phân phối cho n đối tượng khác nhau và hàm băm H cho trước
- Yêu cầu bài toán: xây dựng một cấu trúc dữ liệu lưu trữ n thành phần trên
mà mỗi đối tượng có thể xác thực thành phần Yi do mình giữ dựa trên cấu trúc dữ liệu này
- Hướng giải quyết: xây dựng cây nhị phân kết hợp hàm băm H lưu trữ n
thành phần trên và cơ chế giúp mỗi đối tượng có thể xác thực thành phần Yi do mình giữ
2.3.2.2 Xây dựng cây băm Merkle [9]
a Xây dựng cây nhị phân với n node lá
Xây dựng cây nhị phân với cách đánh số thứ tự các node trong cây như các bước sau đây:
- Bước 1: Node gốc của cây được ký hiệu (1,n,Y) Xét node (1,n,Y)
- Bước 2: Với node đang xét (i,j,Y)
+ Nếu i ≠ j thì ký hiệu hai node con của node là (i,k,Y) và (k+1,j,Y) trong
đó k = (i+j)/2 Thực hiện bước 2 đối với hai node: (i,k,Y) và (k+1,j,Y)
+ Nếu i = j thì dừng lại
b Cây băm Merkle
Xây dựng cây băm Merkle bằng cách gán giá trị cho các node (i,j,Y) của cây
nhị phân trên sử dụng hàm F(i,j,Y) được định nghĩa như sau:
- Nếu i = j thì F(i,j,Y) = H(Y i )
- Nếu i ≠ j thì F(i,j,Y) = H(F(i,k,Y) || F(k+1,j,Y)) (*) trong đó k = (i+j)/2
- Giá trị của hàm F(i,j,Y) được lưu trữ tại node (i,j,Y) của cây nhị phân
- Giá trị của F(1,n,Y) là công khai
Trang 33c Ví dụ: cây băm Merkle với 8 node lá Y1, Y2,…, Y8
Hình 2.3-Cây băm Merkle 8 node lá
2.3.2.3 Xác thực dữ liệu với cây băm Merkle
B biết node gốc F(1,n,Y) và giữ giá trị Yp Giả sử B muốn xác thực node lá Yp
có thuộc cây băm Merkle hay không, A sẽ giúp B xây dựng đường đi từ gốc cây xuống đến node lá Yp và xác thực từng node trên đường đi ấy cho tới node cuối cùng là Yp Thuật toán này được trình bày như sau:
- Bước 1: Xuất phát từ node gốc F(1,n,Y)
- Bước 2: A sử dụng công thức (*) xác định hai node con của node đang xét F(i,j,Y) là F(i,k,Y), F(k+1,j,Y) trong đó k = (i+j)/2 rồi gửi hai giá trị này cho B
để B xác thực node đang xét bằng cách tính H(F(i,k,Y) || F(k+1,j,Y)) rồi so sánh với giá trị của node đang xét
- Bước 3: Lựa chọn node kế tiếp theo nguyên tắc
+ Nếu p [i,k] thì A xét tiếp node F(i,k,Y)
+ Nếu p [k+1,j] thì xét tiếp node F(k+1,j,Y)
- Bước 4: Tiếp tục Bước 2 cho tới khi xét node F(p,p,Y) B sẽ xác thực node
cuối cùng này bằng cách tính H(Yp) và so sánh giá trị này với F(p,p,Y)
Ví dụ minh họa xác thực thành phần Y 5 của cây băm Merkle 8 node lá:
Trang 34- A gửi giá trị của F(1,8,Y) cho B Nếu giá trị của F(1,8,Y) bằng giá trị công khai mà B biết thì B tiếp tục xác thực
- A gửi F(1,4,Y) và F(5,8,Y) cho B để B tính H(F(1,4,Y), F(5,8,Y)), nếu giá trị này bằng F(1,8,Y) thì B xét tiếp F(5,8,Y)
- A gửi F(5,6,Y) và F(7,8,Y) cho B để B tính H(F(5,6,Y), F(7,8,Y)), nếu giá trị này bằng F(5,8,Y) thì B xét tiếp F(5,6,Y)
- A gửi F(5,5,Y) và F(6,6,Y) cho B để B tính H(F(5,5,Y), F(6,6,Y)), nếu giá trị này bằng F(5,6,Y) thì B xét tiếp F(5,5,Y)
- B tự tính H(Y5), nếu F(5,5,Y) = H(Y5) thì quá trình xác thực hoàn tất
Hình 2.4-Xác thực dữ liệu sử dụng cây băm Merkle 8 node lá