PHẠM VĂN TUẤN
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
CÔNG NGHỆ THÔNG TIN
NGHIÊN CỨU, ỨNG DỤNG BLOCKCHAIN
TRONG QUẢN LÝ THÔNG TIN HỌC TẬP VÀ RÈN
LUYỆN CỦA SINH VIÊN TRƯỜNG ĐẠI HỌC MỞ
HÀ NỘI
PHẠM VĂN TUẤN
KHÓA HỌC 2017
HÀ NỘI - 2021
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
NGHIÊN CỨU, ỨNG DỤNG BLOCKCHAIN TRONG QUẢN LÝ
THÔNG TIN HỌC TẬP VÀ RÈN LUYỆN CỦA SINH VIÊN
TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
PHẠM VĂN TUẤN
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 8.48.02.01
NGƯỜI HƯỚNG DẪN KHOA HỌC: ĐINH TUẤN LONG
HÀ NỘI - 2021
LỜI CAM ĐOAN
Tên tôi là: Phạm Văn Tuấn
Sinh ngày: 04/10/1977
Là học viên lớp cao học: 17M-CT5 - Trường Đại học Mở Hà Nội
Nơi công tác: Trường Đại học Mở Hà Nội
Tôi xin cam đoan:
1. Tôi xin cam đoan “Nghiên cứu, ứng dụng Blockchain trong quản lý
thông tin học tập và rèn luyện của sinh viên Trường Đại học Mở Hà Nội”
là công trình nghiên cứu khoa học của tôi dưới sự hướng dẫn khoa học trực
tiếp của TS. Đinh Tuấn Long. Các nội dung nghiên cứu, kết quả nghiên
cứu được trình bày trong luận văn hoàn toàn là trung thực, không vi phạm
bất cứ điều gì trong luật sở hữu trí tuệ và pháp luật của Việt Nam.
2. Mọi tham khảo dùng trong khóa luận đều được trích dẫn rõ ràng tên tác
giả, tên công trình, thời gian, địa điểm công bố.
3. Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi
xin chịu hoàn toàn trách nhiệm.
Hà Nội , ngày tháng năm 2022
Học viên thực hiện
Phạm Văn Tuấn
i
LỜI CẢM ƠN
Lời đầu tiên tôi xin gửi lời cảm ơn và lòng biết ơn sâu sắc đến thầy
giáo TS Đinh Tuấn Long - Giám đốc Trung tâm Công nghệ học liệu Trường Đại học Mở Hà Nội, người thầy đã giúp tôi chọn đề tài và định
hình hướng nghiên cứu, trân trọng cảm ơn các thầy cô của Trung tâm công
nghệ học liệu đã tạo điều kiện giúp đỡ những thông tin cần thiết về công
nghệ đào tạo của nhà trường và tận tình hướng dẫn, chỉ bảo tôi trong quá
trình thực hiện luận văn tốt nghiệp.
Tôi cũng xin gửi lời cảm ơn các thầy, cô giáo trong Khoa Công nghệ
thông tin - Trường Đại học Mở Hà Nội. Các thầy, cô giáo đã dạy bảo và
truyền đạt cho tôi rất nhiều kiến thức, giúp tôi có được một nền tảng kiến
thức vững chắc sau những năm học tập tại Trường Đại học Mở Hà Nội.
Tôi xin gửi lời cảm ơn chân thành tới các bạn khóa 17M-CT5 và các bạn
đồng nghiệp Khoa Kinh tế đã luôn luôn ở bên cạnh, động viên và chia sẻ
tôi trong suốt quá trình học tập tại trường.
Cuối cùng, tôi muốn gửi lời cảm ơn sâu sắc nhất đến gia đình và bạn
bè, đặc biệt là vợ và các con - những người thân yêu luôn kịp thời động
viên và giúp đỡ tôi vượt qua những khó khăn trong học tập cũng như trong
cuộc sống.
Hà Nội, ngày tháng năm 2022
Học viên
Phạm Văn Tuấn
ii
iii
MỤC LỤC
LỜI CAM ĐOAN .............................................................................................. i
LỜI CẢM ƠN ................................................................................................... ii
NHIỆM VỤ CỦA LUẬN VĂN....................................................................... iii
MỤC LỤC ........................................................................................................ iv
DANH MỤC CÁC TỪ VIẾT TẮT ................................................................. vi
DANH MỤC CÁC BẢNG BIỂU – HÌNH VẼ ............................................... vii
MỞ ĐẦU ........................................................................................................... 1
CHƯƠNG 1: CƠ SỞ LÝ LUẬN VỀ BLOCKCHAIN .................................... 3
1.1.Tìm hiều Blockchain ................................................................................... 3
1.2.Nền tảng lý thuyết ....................................................................................... 5
1.2.1.Hàm băm .................................................................................................. 5
1.2.2.Các kỹ thuật chính .................................................................................. 13
1.2.3.Cấu trúc phi tập trung ............................................................................ 13
1.2.4.Tính toán tin cậy…………………….. ...................................................... 16
1.3.Nghiên cứu công nghệ Blockchain ........................................................... 16
1.3.1.Chuỗi khối block bên trong Blockchain ................................................. 16
1.3.2.Cách thức hoạt động của công nghệ Blockchain................................... 17
1.3.2.1.Các đặc trưng của Blockchain ............................................................ 18
1.3.2.2.Ưu điểm của Blockchain ..................................................................... 20
1.3.2.3.Nhược điểm, hạn chế và thách thức với Blockchain ........................... 21
1.3.2.4.Giải pháp ứng dụng với Blockchain ................................................... 26
1.3.3.Các loại Blockchain ............................................................................... 26
1.3.4.Một số ứng dụng phổ biến của Blockchain ........................................... 28
1.4.Quản lý thông tin học tập và rèn luyện trong trường Đại học .................. 33
1.4.1.Khái niệm……………………………………………………………..............33
1.4.2.Các mô hình quản lý học tập và rèn luyện tại các trường đại học hiện
nay ................................................................................................................... 33
1.5.Kinh nghiệm triển khai Blockchain .......................................................... 34
1.5.1.Kinh nghiệm triển khai trên thế giới ...................................................... 34
1.5.2.Kinh nghiệm triển khai tại Việt Nam ..................................................... 39
iv
1.5.3.Kinh nghiệm triển khai trong giáo dục và đào tạo ................................ 42
Kết luận chương 1 ........................................................................................... 43
CHƯƠNG 2: THỰC TRẠNG VIỆC QUẢN LÝ THÔNG TIN QUÁ TRÌNH
HỌC TẬP VÀ RÈN LUYỆN CỦA SINH VIÊN TẠI ................................... 44
2.1.Giới thiệu về các hoạt động sinh viên ....................................................... 44
2.1.1.Chức năng và nhiệm vụ của các phòng ban .......................................... 45
2.1.2.Công tác quản lý học tập sinh viên ........................................................ 52
2.1.3.Công tác đánh giá rèn luyện sinh viên ................................................... 56
2.2.Quản lý và lưu trữ kết quả học tập và rèn luyện ....................................... 58
Kết luận chương 2……. .................................................................................. 58
CHƯƠNG 3: ỨNG DỤNG CÔNG NGHỆ BLOCKCHAIN TRONG VIỆC
QUẢN LÝ THÔNG TIN QUÁ TRÌNH HỌC TẬP VÀ RÈN LUYỆN CỦA
SINH VIÊN TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI ........................................... 60
3.1. Đặt vấn đề bài toán ................................................................................... 60
3.1.1. Bài toán đặt ra ...................................................................................... 60
3.1.2. Cách tiếp cận và giải pháp ................................................................... 62
3.2. Đề xuất mô hình ứng dụng công nghệ blockchain trong việc quản lý
thông tin quá trình học tập và rèn luyện sinh viên tại Trường Đại học Mở Hà
Nội ................................................................................................................... 64
3.3. Xây dựng và thử nghiệm .......................................................................... 67
3.3.1. Phân tích, thiết kế hệ thống ................................................................... 67
3.3.2. Xây dựng hệ thống ................................................................................ 67
3.3.3. Chức năng để truy xuất thông tin của người học qua mã QR .............. 70
3.3.4. Triển khai thử nghiệm, đánh giá ........................................................... 74
3.3.5. Kịch bản triển khai ................................................................................ 78
Kết luận chương 3 …………………………………………………………...58
KẾT LUẬN CHUNG ...................................................................................... 80
TÀI LIỆU THAM KHẢO ............................................................................... 81
v
DANH MỤC CÁC TỪ VIẾT TẮT
STT
Tên viết
Tên đầy đủ
tắt
1
ATTT
An toàn thông tin
2
CNTT
Công nghệ thông tin
3
CSDL
Cơ sở dữ liệu
4
LMS
Learning Management System
Dịch ra Tiếng Việt
Hệ thống quản lý
thông tin học tập
5
SV
Sinh viên
6
HV-SV
Học viên - Sinh viên
7
API
Application Programming
Giao diện lập trình
Interface
ứng dụng
vi
DANH MỤC CÁC BẢNG BIỂU - HÌNH VẼ
Hình 1.1: Ví dụ về hàm băm (Nguồn: Tài liệu tham khảo [3]) ....................... 8
Hình 1.2: Cấu trúc dữ liệu của Blockchain ..................................................... 13
Hình 1.3: Cấu trúc của block gốc trong blockchain........................................ 14
Hình 1.4: Một Block trong một Blockchain (Nguồn tài liệu tham khảo [3]) 17
Hình 1.5: Mô hình hoạt động của Blockchain ................................................ 18
Hình 1.6: Cơ chế hoạt động của giao dịch trên Blockchain .......................... 24
Hình 1.7: Cơ sở dữ liệu phân tán ................................................................... 24
Hình 1.8: Mạng các nút .................................................................................. 25
Hình 1.9: Phân loại Blockchain (Tham khảo IBM) ........................................ 27
Hình 1.10: Tiền điện tử Bitcoin ..................................................................... 28
Hình 1.11: Hợp đồng thông minh Smart Contracts ....................................... 29
Hình 1.12: Điện toán đám mây phi tập trung (Nguồn: Internet) ................... 30
Hình 2.1 - Hệ thống đánh giá giảng dạy ........................................................ 51
Hình 2.2. - Phần mềm Quản lý học tập (CTMS) ............................................ 55
Hình 2.3. - Phần mềm Quản lý học tập (TMAS) ............................................ 55
Hình 2.4 - Hệ thống quản lý đánh giá rèn luyện ............................................. 57
Hình 3.1 - Lưu thông tin bằng cấp lên blockchain ......................................... 61
Hình 3.2 - Giải pháp quản lý bằng cấp, chứng chỉ trên blockchain ................ 62
Hình 3.3 - Các huy hiệu .................................................................................. 66
Hình 3.4 - Sơ đồ kiến trúc hệ thống ................................................................ 68
Hình 3.5 Open badge (Nguồn tài liệu tham khảo [10]) .................................. 69
Hình 3.6 - Cấu trúc mã nguồn ......................................................................... 70
vii
MỞ ĐẦU
1. Tính cấp thiết của đề tài
Việc lưu trữ và tra cứu toàn bộ quá trình học tập, nghiên cứu của sinh
viên nếu được triển khai thành công sẽ mang lại rất nhiều lợi ích cho sinh
viên cũng như nhà trường mỗi khi cần tới các thông tin này. Tuy nhiên để
thực hiện được công việc này là rất khó vì hiện nay các trường chủ yếu chỉ
lưu trữ các thông tin về điểm chứ không có các thông tin khác của sinh viên.
Vì vậy, đề tài hướng tới việc sử dụng công nghệ blockchain.
- Công nghệ Blockchain hỗ trợ lưu trữ và truyền tải thông tin bằng các khối
(block) được liên kết với nhau và mở rộng theo thời gian. Các khối này
chứa đựng các thông tin về thời gian khởi tạo và được liên kết với các khối
trước đó, được thiết kế để chống lại sự thay đổi dữ liệu.
- Sử dụng blockchain để lưu trữ sẽ có tính an toàn, minh bạch, chuẩn xác và
vô thời hạn tất cả các dữ liệu thông tin của toàn bộ thời gian sinh viên học
tập tại trường.
- Các thông tin của sinh viên sẽ phục vụ trong quá trình đang học tập tại
trường cũng như khi sinh viên tốt nghiệp: Các nghiệp vụ quản lý của nhà
trường, Xác minh thông tin học tập của sinh viên khi có nhu cầu cần nhà
trường xác nhận để xin ứng tuyển việc làm, Công nhận kết quả học tập
giữa các trường, Kiểm định văn bằng chứng chỉ.
Vì vậy, tác giả nghiên cứu Công nghệ Blockchain ứng dụng trong việc
quản lý thông tin quá trình học tập và rèn luyện của sinh viên tại Trường Đại
học Mở Hà Nội.
2. Mục tiêu nghiên cứu
- Nghiên cứu công nghệ Blockchain
- Giới thiệu một số giải pháp ứng dụng trong quản lý học tập và rèn luyện
sinh viên.
- Nghiên cứu cách thức để triển khai ứng dụng blockchain trong quản lý
1
thông tin quá trình học tập và rèn luyện của sinh viên tại Trường Đại học Mở
Hà Nội
3. Đối tượng nghiên cứu
- Nghiên cứu ứng dụng blockchain trong việc quản lý thông tin quá
trình học tập và rèn luyện của sinh viên.
- Trong luận văn, tác giả sẽ trình bày việc ứng dụng blockchain trong
việc quản lý thông tin quá trình học tập và rèn luyện của sinh viên Hệ Chính
quy đang theo học tại Trường Đại học Mở Hà Nội.
4. Phạm vi nghiên cứu
- Nghiên cứu công nghệ blockchain
- Nghiên cứu thực trạng công tác quản lý quá trình học tập và rèn luyện của
sinh viên tại Trường Đại học Mở Hà Nội
- Nghiên cứu ứng dụng blockchain trong việc quản lý quá trình học tập và rèn
luyện của sinh viên tại Trường Đại học Mở Hà Nội
- Xây dựng hệ thống thử nghiệm tại Trường Đại học Mở Hà Nội
5. Phương pháp nghiên cứu
- Đề tài sử dụng các phương pháp nghiên cứu đặc thù của khoa học kỹ thuật
và công nghệ là phương pháp thực nghiệm – thử sai. Bên cạnh đó, các
phương pháp nghiên cứu tài liệu, phân tích, tổng hợp, quy nạp, diễn dịch, suy
luận logic, thống kê cũng được sử dụng theo các giai đoạn khác nhau.
- Các phương pháp nghiên cứu tài liệu, phương pháp phân tích, so sánh, tổng
hợp, quy nạp, diễn dịch được vận dụng kết hợp trong việc làm rõ những vấn
đề lý luận, trọng tâm, những yếu tố quan trọng về kỹ thuật công nghệ cũng
như các phương pháp luận trong việc ứng dụng công nghệ blockchain trong
quản lý quá trình học tập và rèn luyện của sinh viên
- Các phương pháp thống kê, nghiên cứu được vận dụng để tìm hiểu làm rõ
thực trạng việc quản lý thông tin quá trình học tập và rèn luyện của sinh viên,
những đặc trưng của quá trình quản lý thông tin quá trình sinh viên tại trường.
2
CHƯƠNG 1: CƠ SỞ LÝ LUẬN VỀ BLOCKCHAIN
1.1.
Tìm hiều Blockchain
Blockchain là chủ đề đang vô cùng nóng trên toàn cầu hiện nay. Nó
cùng với Bitcoin và tiền kỹ thuật số trở thành đề tài bàn luận trên rất nhiều
mặt báo và trong những cuộc trò chuyện của mọi người. Tuy nhiên, khi nói về
blockchain vẫn còn nhiều tranh cãi. Các nhà chuyên gia đánh giá rằng Bitcoin
có thể chỉ là bong bóng, nhiều người cho rằng công nghệ phía sau nó là một
sự đột phá và công nghệ này sẽ tiếp tục con đường của mình cho đến khi
được chấp nhận và tích hợp với Internet.
Blockchain là một sổ cái kỹ thuật số được phân chia hay dễ hiểu hơn là
cơ sở dữ liệu trong một mạng. Sổ cái được chia sẻ cho những người tham gia
vào mạng lưới. Điều này cho thấy rằng trong toàn bộ hệ thống không phải chỉ
có một vị trí duy nhất, một tài liệu có thể làm căn cứ đáng tin (Authority) duy
nhất, vì những lần sao chép cùng một phiên bản sổ cái được đặt ở nhiều nơi.
Tất cả các bản sao này được cập nhật khi dữ liệu hoặc giao dịch mới
được ghi vào blockchain thông qua sự đồng thuận của tất cả mọi người tham
gia. Người đào có trách nhiệm phê duyệt các giao dịch và giám sát mạng bằng
cách giải quyết các công thức tinh vi với sự trợ giúp của máy tính. Nó là một
hệ thống ngang hàng P2P, loại bỏ tất cả mọi khâu trung gian, làm tăng cường
an ninh, minh bạch và sự ổn định cũng như giảm thiểu chi phí và lỗi do con
người gây ra.
Blockchain là công nghệ cốt lõi của tiền điện tử kỹ thuật số BitCoin.
Blockchain là một cơ sở dữ liệu phân tán các hồ sơ của tất cả các giao dịch
hoặc sự kiện kỹ thuật số đã được thực hiện và chia sẻ giữa các bên tham gia.
Mỗi giao dịch được xác minh bởi phần lớn những người tham gia hệ thống.
Nó chứa mọi bản ghi duy nhất của mỗi giao dịch. BitCoin là một ví dụ về
Blockchain, đồng thời nó cũng là loại tiền điện tử phổ biến nhất hiện nay.
Công nghệ Blockchain lần đầu tiên được công bố khi một người hoặc một tổ
3
chức ẩn danh có tên 'Satoshi Nakamoto' đã sáng tạo ra Bitcoin và đã khởi tạo
ra phần mềm mã nguồn mở Bitcoin Core để công chúng sử dụng được
Bitcoin. Bitcoin bắt đầu được Satoshi thiết kế từ 2007 khi ông tin rằng có thể
thiết kế được một hệ thống giao dịch mà các thành viên không cần tin tưởng
nhau. Bất kỳ thứ gì có giá trị như tài sản đất đai, ô tô... đều có thể được ghi lại
trên Blockchain dưới dạng giao dịch.
Một số trích dẫn đáng chú ý về công nghệ này được liệt kê dưới đây:
- “Thế hệ đầu tiên của cuộc cách mạng kỹ thuật số mang lại cho chúng ta
thông tin của Internet. Thế hệ thứ hai - được hỗ trợ bởi công nghệ
blockchain - mang lại cho chúng ta giá trị của Internet: một nền tảng
mới để định hình lại thế giới kinh doanh và biến đổi thứ tự công việc của
con người trở nên tốt hơn.” [3]
- “Blockchain là một kho lưu trữ, cơ sở dữ liệu phân tán toàn cầu, chạy
trên hàng triệu thiết bị và mở cho mọi người, không chỉ đơn thuần là
thông tin mà còn cả những thứ có giá trị, cả danh hiệu, hành vi, danh
tính, thậm chí cả phiếu bầu - có thể được di chuyển, lưu trữ và quản lý
một cách an toàn và tư nhân. Sự tin tưởng được thiết lập thông qua hợp
tác giữa số đông và mã thông minh chứ không phải bởi các nhà trung
gian mạnh mẽ như các chính phủ và ngân hàng.” [3]
Với khả năng chia sẻ thông tin dữ liệu minh bạch theo thời gian thực, tiết
kiệm không gian lưu trữ và bảo mật cao, công nghệ blockchain (chuỗi khối)
là một trong những xu hướng công nghệ đột phá, có khả năng ứng dụng rộng
rãi ở nhiều ngành nghề, lĩnh vực.
4
1.2.
Nền tảng lý thuyết
Công nghệ Blockchain được phát triển dựa trên hai nền tảng kỹ thuật
chính là hàm băm và chữ ký số. Mỗi người dùng sẽ sở hữu một cặp khóa gồm
khóa bí mật và khóa công khai. Khóa bí mật được lưu trữ bí mật và sử dụng
để ký kết các giao dịch.
1.2.1. Hàm băm
Hàm băm [6] dùng để chuyển đổi từ một thông tin sang một đoạn mã.
Bất kỳ nỗ lực gian lận nào để thay đổi bất kỳ phần nào của blockchain sẽ bị
phát hiện ngay lập tức vì giá trị băm mới sẽ không phù hợp với thông tin cũ
trên blockchain. Bằng cách này, ngành khoa học bảo mật thông tin (cần thiết
cho việc mã hóa thông tin và mua sắm trực tuyến, ngân hàng) đã trở thành
một công cụ hiệu quả để giao dịch mở.
1.2.1.1. Khái niệm hàm băm
Để lấy một bộ phận nhỏ của một thông điệp
[6] thì
cần phải sử dụng một
phương pháp toán học gọi là phương pháp hàm băm (Hash function) là một
giải thuật toán học (một ánh xạ một - một (một chiều)) cho ứng với một khối
dữ liệu (một dãy bit hay một đối tượng trong lập trình hướng đối tượng của
thông điệp gốc) một giá trị băm duy nhất. Chú ý ở đây tính một chiều có
nghĩa là: Mỗi khối dữ liệu gốc qua một hàm băm sẽ cho một giá trị băm duy
nhất, tuy vậy có thể có một giá trị băm ứng với hai khối dữ liệu gốc khác nhau
vì vậy không thể từ giá trị băm tìm ngược lại khối dữ liệu đã sinh ra nó.
Trường hợp qua một hàm băm H nếu có hai khối dữ liệu gốc nào đó cho cùng
một giá trị băm thì ta gọi đấy là một sự đụng độ.
Tuy nhiên điều quan trọng là: Nếu hai giá trị băm khác nhau thì chắc
chắn hai khối dữ liệu tạo ra chúng là khác nhau. Vì vậy người nhận có thể
tính lại giá trị băm của thông điệp nhận được rồi so sánh với giá trị tính được
khi giải mã chữ ký điện tử để kiểm tra: Nếu hai giá trị khác nhau thì có thể
5
khẳng định nội dung thông điệp đã bị thay đổi.
Một hàm băm được đánh giá là tốt nếu số đụng độ xảy ra rất nhỏ (xác
suất rất thấp và hầu như không thể xảy ra).
1.2.1.2. Các phương pháp tạo hàm băm
Một hàm băm tốt [6] phải thỏa mãn các điều kiện sau:
- Tính toán nhanh
- Các khóa được phân bố đều trong bảng
- Ít xảy ra đụng độ
- Xử lý được các loại khoa có kiểu dữ liệu khác nhau
Các hàm băm được xác định theo cách tạo ra giá trị băm từ một dữ liệu. Có
hai phương pháp chính để tạo hàm băm thường dùng là phương pháp cộng và
nhân, phương pháp quay vòng.
Phương pháp băm kiểu cộng và nhân
Theo phương pháp này giá trị băm được tạo ra bằng cách duyệt dọc
theo chuỗi dữ liệu và liên tục cộng thêm vào một giá trị xuất phát từ một giá
trị được tính cho mỗi phần tử trong dữ liệu. Giá trị tăng thêm ứng với mỗi
phần tử thường được tính dưới dạng nhân với một số nguyên tố nào đó.
Phương pháp băm bằng cách quay vòng
Đối với phương pháp này cũng cộng thêm vào mỗi phần tử trong dãy một giá
trị giống như phương pháp băm kiểu cộng nhưng ở đây giá trị cộng thêm
được xét từ cả hai phía bên trái và bên phải, tính toán để cộng thêm vào tại
mỗi phần tử.
Các dạng băm thông dụng
Trong “Thư viện hàm băm tổng quát” (The General Hash function Library)
có nêu lên một số hàm băm hỗn hợp cộng và quay vòng chẳng hạn như các
thuật toán sau đây:
RS Hash Function: Một số hàm băm đơn giản từ thuật toán Robert
6
Sedgwicks.
JS Hash Function: Hàm băm tính từ hai phía do Justin Sobel đề xuất.
PJW Hash Function: Thuật toán bâm dựa trên công trình của Peter
J.Weinberger thuộc Phòng thí nghiệm AT&T Bell.
BKDR Hash Function: Hàm băm này được mô tả trong tác phẩm của Brian
Kernighan và Dennis Ritchie’s “The C Programming Language” (Ngôn ngữ
lập trình C).
SDBM Hash Function: Đây là dạng hàm băm được chọn sử dụng trong các
dự án mã nguồn mở SDBM.
DJB Hash Function do GS. Daniel J. Berstein xây dựng và giời thiệu lần đầu
tiên trên Newsgroup comp.lang.c. Có lẽ đây là một trong những hàm băm
hiệu quả nhất từ trước đến nay đã được công bố.
Message Digest (MD) algorithms: Những dãy thuật toán hướng byte, sản sinh
ra một giá trị băm 128 bit cho các thông điệp có độ dài bất kỳ.
- MD2 (RFC 1319): Được thiết kế cho những hệ thống có bộ nhớ hạn
chế chẳng hạn như các thẻ thông minh.
- MD4 (RFC 1320): Do Rivest phát triển, tương tự như MD2 nhưng
được thiết kế đặc biệt cho những quá trình xử lý nhanh trong phần
mềm.
- MD5 (RFC 1321): Do Rivest phát triển sau khi phát hiện một số
nhược điểm của MD4; Sơ đồ này tương tự như MD4 nhưng hoạt động
chậm hơn do phải xử lý nhiều trên dữ liệu gốc. MD5 được tích hợp
vào nhiều sản phẩm dù rằng vẫn còn một số nhược điểm mà nhà mật
mã học người Đức Hans Dobbdertin đã chỉ ra năm 1996.
Secure Hash Alogorithm (SHA): Thuật toán của chuẩn hàm băm an toàn của
NIST.NIST’s Secure Hash Standard (SHS). SHA-1 tạo ra một giá trị băm 160
bit ban đầu được công bố với tên gọi là FIPS 180-1 và RFC 3174. FIPS 180-2
7
(tức là SHA-2) mô tả 5 thuật toán trong chuẩn SHS: SHA-1 cùng với SHA224, SHA-256, SHA-384 và SHA-512 có thể tạo ra giá trị băm có độ dài 224,
256, 384 hoặc 512 bit.
1.2.1.3. Công dụng của hàm băm
Hàm
[6]
thường được dùng để xây dựng các bảng băm tức là bảng ghi
các giá trị băm ứng với một số khôi dữ liệu mẫu: khi cần so sánh hai khối dữ
liệu nào đó (thường có kích thước rất lớn), ta chỉ cần so sánh các giá trị băm
có kích thước rất nhỏ của chúng.
Ví dụ về hoạt động của một hàm băm:
Hai chuỗi dữ liệu gốc chỉ khác nhau một từ (runs và walks nhưng qua
hàm băm cho ra hia giá trị băm hoàn toàn khác nhau. So sánh hai giá trị băm
thấy khác nhau, từ đó kết luận hai chuỗi dữ liệu gốc là khác nhau (dù không
thể biết chúng khác nhau ở đâu).
Đầu vào
Giá trị băm
Fox
Hàm băm
DFCD3454
The red fox runs
across the ice
Hàm băm
52ED879E
The red fox
walks across the
ice
Hàm băm
46042841
Hình 1.1: Ví dụ về hàm băm (Nguồn: Tài liệu tham khảo [3])
Vì tính thông dụng của hàm băm. Ngày nay đa số ngôn ngữ lập trình đều
cung cấp thư viện ứng dụng bảng băm, trong đó có các vấn đề như: Bộ sưu
tập (Collection), các danh sách (List), các bảng (Table), các ánh xạ
(mapping), các từ điển (dictionary).
Thông thường, các lập trình viên chỉ cần viết hàm băm cho các đối tượng
nhằm tích hợp với thư viện bảng băm đã được xây dựng sẵn. Bảng băm là
8
một ứng dụng quan trọng của các hàm băm, cho phép tra cứu nhanh một bản
ghi dữ liệu nếu cho trước khóa mã của bản ghi đó.
Các hàm băm dành cho việc phát hiện và sửa lỗi tập trung phân biệt các
trường hợp mà dữ liệu đã bị làm nhiễu trong quá trình truyền tin, giá trị băm
tương đối nhỏ có thể được dùng để kiểm chứng rằng một tệp dữ liệu có kích
thước tùy ý đã bị sửa lỗi hay không. Hàm băm được dùng để phát hiện lỗi
truyền dữ liệu như sau: Phía bên gửi, hàm băm được tính cho dữ liệu được
gửi, giá trị băm này được gửi cùng dữ liệu. Phía bên nhận, hàm băm lại được
tính lần nữa, nếu các giá trị băm không trùng nhau thì lỗi đã xảy ra ở đâu đó
trong quá trình truyền.
Việc này gọi là kiểm tra thặng dư (Redundancy check).
-
Giả sử An có thông điệp V cần gửi cho Bình. An lấy giá trị băm H(V),
mã hóa bằng khóa K đã trao đổi với Bình: K[H(V)] = H’ gắn với V và gửi tất
cả cho Bình. H’ chính là chữ ký điện tử của An trong thông điệp.
-
Bình nhận được thông điệp, trước hết giải mã H’ tìm ra một giá trị băm
H. Tiếp đó dùng hàm băm chung tính lại giá trị băm của thông điệp nhận
được. Nếu giá trị băm đó trùng với giá trị H nói trên thì Bình có hai kết luận:
1. Thông điệp chính do An gửi (qua kiểm tra khóa K)
2. Thông điệp không bị thay đổi trong quá trình truyền tin (giá trị băm
trùng nhau). Trường hợp hai giá trị tìm được khác nhau thì:
Hoặc không phải là thông điệp do An gửi
Nội dung thông điệp đã sai lạc trong quá trình truyền
Vì vậy, sử dụng chữ ký điện tử (có chứng thực) gắn kèm vào thông điệp,
có thể đảm bảo các yêu cầu sau:
- Nhận diện định danh người phát hành thông điệp
- Người phát hành thông điệp không thể chối bỏ
- Đảm bảo tính vẹn toàn thông tin, phát hiện trường hợp thông điệp
9
bị can thiệp trên đường chuyển vận.
1.2.1.4. Ý nghĩa của băm trong Blockchain
Xương sống của một loại tiền điện tử là blockchain của nó, là một sổ
cái toàn cầu được hình thành bằng cách liên kết các khối dữ liệu giao dịch
riêng lẻ với nhau. Blockchain chỉ chứa các giao dịch được xác thực, giúp
ngăn chặn các giao dịch gian lận và chi tiêu gấp đôi tiền tệ. Quá trình xác
nhận dựa trên dữ liệu được mã hóa bằng cách sử dụng băm thuật toán. Giá trị
được mã hóa kết quả là một chuỗi các số và chữ cái không giống với dữ liệu
gốc và được gọi là hàm băm. Khai thác tiền điện tử liên quan đến việc làm
việc với hàm băm này.
Băm yêu cầu xử lý dữ liệu từ một khối thông qua hàm toán học, dẫn
đến kết quả đầu ra có độ dài cố định. Sử dụng đầu ra có độ dài cố định sẽ tăng
tính bảo mật, vì bất kỳ ai đang cố gắng giải mã hàm băm không thể cho biết
đầu vào dài hay ngắn chỉ bằng cách nhìn vào độ dài của đầu ra. Ví dụ, băm từ
chữ “Công nghệ thông tin” sẽ tạo ra một đầu ra có cùng độ dài với hàm băm
“Công nghệ Blockchain”. Hàm được sử dụng để tạo hàm băm có tính xác
định, nghĩa là nó sẽ tạo ra cùng một kết quả mỗi lần sử dụng cùng một đầu
vào; có thể tạo ra một đầu vào băm hiệu quả; làm cho việc xác định đầu vào
khó khăn (dẫn đến khai thác); và thực hiện các thay đổi nhỏ đối với kết quả
đầu vào trong hàm băm rất khác nhau.
Việc xử lý các hàm băm cần thiết để mã hóa các khối mới đòi hỏi sức
mạnh xử lý đáng kể của máy tính, có thể tốn kém. Để lôi kéo các cá nhân và
công ty, được gọi là người khai thác, đầu tư vào công nghệ cần thiết, các
mạng tiền điện tử thưởng cho họ cả token tiền điện tử mới và phí giao dịch.
Công cụ khai thác chỉ được bù nếu chúng là người đầu tiên tạo ra hàm băm
đáp ứng các yêu cầu được đặt ra trong hàm băm đích.
Giải quyết hàm băm về cơ bản là giải quyết một vấn đề toán học phức
tạp và bắt đầu với dữ liệu có sẵn trong tiêu đề khối. Mỗi tiêu đề khối chứa
10
một số phiên bản, dấu thời gian, hàm băm được sử dụng trong khối trước đó,
hàm băm của Merkle Root, nonce và băm đích. Công cụ khai thác tập trung
vào nonce, một chuỗi số. Số này được gắn vào nội dung được băm của khối
trước đó, sau đó chính nó được băm. Nếu hàm băm mới này nhỏ hơn hoặc
bằng hàm băm mục tiêu, thì nó được chấp nhận làm giải pháp, người khai
thác được trao phần thưởng và khối được thêm vào blockchain.
Việc giải hàm băm yêu cầu người khai thác xác định chuỗi nào sẽ sử dụng
làm chuỗi không, chính nó yêu cầu một số lượng đáng kể thử và sai. Điều này
là do nonce là một chuỗi ngẫu nhiên. Rất khó có khả năng một người khai
thác sẽ thành công với lần đầu tiên chính xác trong lần thử đầu tiên, có nghĩa
là người khai thác có thể kiểm tra một số lượng lớn các tùy chọn nonce trước
khi thực hiện đúng. Độ khó càng lớn - thước đo mức độ khó để tạo ra một
hàm băm đáp ứng yêu cầu của hàm băm mục tiêu - càng mất nhiều thời gian
để tạo ra một giải pháp.
1.2.1.5. Chữ ký số
Việc tạo chữ ký điện tử
[6] qua
mã hóa giá trị băm của mỗi thông điệp không
dễ dàng thục hiên với cá nhân, tổ chức khi điều kiện chưa trang bị tốt về công
nghệ thông tin. Nếu chỉ nhằm mục đích nhận biết và không chối bỏ, người ta
thường dùng một phương pháp đơn giản hơn: đó là chữ ký số (digital
signature).
Chữ ký số có thể xem là một lớp con của chữ ký điện tử. Sau khi hai đối tác
đã trao đổi khóa mã K, An dùng khóa K để mã hóa một nội dung dữ liệu cố
định S nào đó: K(S)=S’ và sẽ gắn S’ vào mọi thông điệp của mình phát hành.
Khi An nhận được một thông điệp có gắn S’, dùng K để giải mã được S thì
nhận ra thông điệp là do An phát hành. S’ là chữ ký số của An. Nội dung chữ
ký số rất phong phú: có thể là một đoạn văn bản (họ và tên, chữ ký thật scan
lên máy tính, chữ ký vẽ lên máy tính và lưu trữ lại…), một hình ảnh, một câu
nói hoặc một đoạn video và cũng có thể sử dụng hàm băm để lấy giá trị băm
11
- Xem thêm -