Nghiên cứu mã xác thực và ứng dụng mã xác thực trong thanh toán điện tử

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 59

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI

BÁO CÁO TỔNG KẾT


ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
NĂM HỌC 2021-2022

NGHIÊN CỨU QUY TRÌNH THIẾT KẾ CÁC BỘ LỌC FABRY –


PEROT CHẾ TẠO BẰNG CÔNG NGHỆ IN 3D Ở VÙNG BƯỚC
SÓNG 1400 nm

Sinh viên thực hiện


Nguyễn Thành Đạt Lớp: KTTT & TT K61 Khoa: Điện – Điện tử
Từ Phương Uyên Lớp: KTTT & TT K61 Khoa: Điện – Điện tử

Lê Xuân Hồng Lớp: KTTT & TT K61 Khoa: Điện – Điện tử

Khuất Hùng Cường Lớp: KTTT & TT K61 Khoa: Điện – Điện tử

Nguyễn Khắc Tuấn Lớp: KTTT & TT K61 Khoa: Điện – Điện tử

Người hướng dẫn: TS. Nguyễn Đức Toàn

HÀ NỘI, 2022
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI

BÁO CÁO TỔNG KẾT


ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
NĂM 2022

Nghiên cứu mã xác thực và ứng dụng mã xác thực


trong thanh toán điện tử

Sinh viên thực hiện


Trần Danh Thái Nam, Nữ: Nam Dân tộc: Kinh
Lớp: KTTT & TT K60 Khoa: Điện – Điện tử Năm thứ: 3/4,5
Ngành học: Kỹ thuật Thông Tin và Truyền Thông
Nguyễn Thị Nga Nam, Nữ: Nữ Dân tộc: Kinh
Ngành học: Kỹ thuật Thông Tin và Truyền Thông
Lớp: KTTT & TT K60 Khoa: Điện – Điện tử Năm thứ: 3/4,5
Cao Thị Ngọc Oanh Nam, Nữ: Nữ Dân tộc: Kinh
Ngành học: Kỹ thuật Thông Tin và Truyền Thông
Lớp: KTTT & TT K60 Khoa: Điện – Điện tử Năm thứ: 3/4,5
Nguyễn Trung Hải Nam, Nữ: Nam Dân tộc: Kinh
Ngành học: Kỹ thuật Thông Tin và Truyền Thông
Lớp: KTTT & TT K60 Khoa: Điện – Điện tử Năm thứ: 3/4,5
Người hướng dẫn: ThS. Phạm Hồng Quân

HÀ NỘI, 2022
MỤC LỤC
DANH MỤC VIẾT TẮT.............................................................................................4
DANH MỤC HÌNH ẢNH............................................................................................6
MỞ ĐẦU.....................................................................................................................1
CHƯƠNG 1: TỔNG QUAN VỀ AN TOÀN THÔNG TIN VÀ CÁC VẤN ĐỀ XÁC
THỰC ĐIỆN TỬ.........................................................................................................3
1.1. Khái quát về an toàn thông tin ( information security )......................................3
1.2. Vấn đề xác thực.................................................................................................4
1.2.1. Khái niệm xác thực.....................................................................................4
1.2.2. Phân loại xác thực.......................................................................................5
1.2.3. Một số phương pháp xác thực.....................................................................5
1.3. Chữ ký số........................................................................................................13
1.3.1. Khái quát về chữ ký điện tử......................................................................13
1.3.2. Đặc điểm của chữ ký điện tử.....................................................................15
1.3.4. Ứng dụng của chữ ký số...........................................................................16
1.4. Vấn đề mã hóa.................................................................................................17
1.4.1. Một số khái niệm về mã hóa.....................................................................17
1.4.2. Các phương pháp mã hóa..........................................................................18
CHƯƠNG 2: THANH TOÁN ĐIỆN TỬ...................................................................21
2.1. Tổng quan về thanh toán điện tử......................................................................21
2.1.1. Khái niệm.................................................................................................21
2.1.2. Các phương pháp thanh toán điện tử.........................................................22
2.1.3. Vấn đề an ninh trong thanh toán điện tử...................................................25
CHƯƠNG 3: MÃ XÁC THỰC OTP VÀ ỨNG DỤNG TRONG THANH TOÁN
ĐIỆN TỬ...................................................................................................................27
3.1. Giới thiệu về mã xác thực OTP.......................................................................27
3.2. Nguyên lý hoạt động của mã xác thực OTP.....................................................28
3.3. Các loại mã OTP.............................................................................................28
3.4. Các thuật toán sinh mật khẩu OTP...................................................................29
3.5. Các ưu điểm và nhược điểm của mã OTP........................................................35
3.6. Ứng dụng trong thanh toán điện tử..................................................................35
CHƯƠNG 4: MÔ PHỎNG.........................................................................................39
4.1. Giới thiệu phần nềm mô phỏng........................................................................39
4.2. Giao diện khi sử dụng......................................................................................39
KẾT LUẬN................................................................................................................42
TÀI LIỆU KHAM KHẢO............................................................................................1
DANH MỤC VIẾT TẮT
Từ viết tắt Nghĩa tiếng anh Nghĩa tiếng việt

OTP One - Time - Password Mật khẩu sử dụng một lần

CIA Confidentiality - Integrity -Availability Tính bảo mật – Tính toàn


vẹn – Tính khả dụng

RFID Radio Frequency Identification Công nghệ nhận dạng qua


tần số vô tuyến

PIN Personal Identification Number Số nhận dạng cá nhân

CPU Central Processing Unit Bộ xử lý trung tâm

MFA Multi-Factor Authentication Xác thực đa yếu tố

GPS Global Positioning System Hệ thống định vị toàn cầu

ATM Automated Teller Machine Máy rút tiền tự động

3FA Three-Factor Authentication Xác thực 3 yếu tố

2FA Two-Factor Authentication Xác thực 2 yếu tố

PKI Public Key Infrastructure Hạ tầng mã hóa công khai

DES Data Encryption Standard Mã hóa dữ liệu

AES Advanced Encryption Standard Mã hóa cấp cao

SET Secure Electronic Transaction Giao dịch điện tử an toàn

ID Identification Nhận dạng

HMAC Hashed Message Authentication Code Hàm băm

HOTP HMAC-Based One-Time Password Xác thực dựa trên hàm băm

COUTER Counter Bộ đếm

SHA Secure Hash Algorithm Thuật toán hàm băm an


toàn

TOTP Time-Based One-Time Password Xác thực dựa trên thời gian
TOKEN Token Mã thông báo

STS Spring Tool Suite Bộ công cụ


DANH MỤC HÌNH ẢNH
Hình 1.1: Tam giác bảo mật CIA…………………………………………………….4

Hình 1.2: Xác thực dựa trên mật khẩu …………………………………………………6

Hình 1.3: Thẻ thông minh có tiếp xúc …………………………………………………6

Hình 1.4: Thẻ thông minh không tiếp xúc……………………………………………..7

Hình 1.5: Một số thẻ bài (Tokens) …………………………………………………….8

Hình 1.6 : Mô hình xác thực sinh trắc học …………………………………………….8

Hình 1.7: Máy quét vân tay ……………………………………………………………9

Hình 1.8: Nhận dạng khuôn mặt……………………………………………………….9

Hình 1.9: Nhận dạng giọng nói……………………………………………………….10

Hình 1.10: Nhận dạng mắt…………………………………………………………….10

Hình 1.11: Xác thực đa yếu tố………………………………………………………...12

Hình 1.12: Chữ ký số trên hóa đơn điện tử…………………………………………...12

Hình 1.13: Quá trình ký và kiểm tra chữ ký…………………………………………..14

Hình 1.14: Mô hình hệ mã hóa đối xứng……………………………………………...17

Hình 1.15: Mã hóa bất đối xứng………………………………………………………18

Hình 2.1: Thanh toán điện tử là gì? ………………………………………………….19

Hình 2.2: Thanh toán bằng thẻ………………………………………………………..21

Hình 2.3:Thanh toán trực tuyến……………………………………………………….21

Hình 2.4: Thanh toán bằng ví điện tử…………………………………………………22

Hình 2.5: Thanh toán bằng điện thoại thông minh……………………………………23

Hình 2.6: Thanh toán bằng cách chuyển khoản ngân hàng…………………………..23

Hình 3.1: Mã xác thực OTP………………………………………………………….25

Hình 3.2: Mô hình hoạt động của OTP………………………………………………26


Hình 3.3: Trình tạo OTP sử dụng HOTP……………………………………………..27

Hình 3.4: Mô tả về thuật toán HOTP ………………………………………………...28

Hình 3.5: Thuật toán HOTP…………………………………………………………..29

Hình 3.6: Trình tạo OTP sử dụng TOTP……………………………………………...30

Hình 3.7: Minh họa mô hình sinh mã OTP theo thời gian……………………………31

Hình 3.8: Web Thương mại điện tử …………………………………………………..32

Hình 3.9: Cổng thanh toán sử dụng mã OTP…………………………………………33

Hình 4.1: Spring Tool Suite…………………………………………………………...36

Hình 4.2: Giao diện khi khởi động mô phỏng………………………………………...36

Hình 4.3: Nhập key bất kỳ…………………………………………………………….36

Hình 4.4: Tạo mã OTP thành công và gửi cho bên xác thực…………………………37

Hình 4.5: Sau khi nhập mã OTP đúng và xác thực thành
công……………………….37

Hình 4.6: Khi nhập mã OTP sau thời gian quy định, mã OTP sẽ hết hạn và xác thực
thất bại………………………………………………………………………………...37

Hình 4.7: Lưu đồ thuật toán bên tạo mã………………………………………………38

Hình 4.8: Lưu đồ thuật toán xác thực…………………………………………………38


MỞ ĐẦU
Thời gian qua, cùng với xu thế phát triển mạnh mẽ của các phương thức thanh
toán điện tử thông qua mạng Internet và mạng điện thoại di động trên thế giới, hoạt
động thanh toán tại Việt Nam cũng đã có những bước phát triển vượt bậc với hàng loạt
loại hình dịch vụ thanh toán không dùng tiền mặt mới ra đời đáp ứng nhu cầu ngày
càng tăng của các tổ chức và cá nhân trong nền kinh tế tương đồng với công nghệ
thanh toán trong khu vực và trên thế giới.

Cùng với sự phát triển của công nghệ thông tin và viễn thông, các phương thức
thanh toán đã thay đổi nhanh chóng và đa dạng từ thanh toán tiền mặt là chủ yếu sang
các phương tiện thanh toán không dùng tiền mặt truyền thống hiện diện dưới hình thức
vật chất (như séc, ủy nhiệm chi, ủy nhiệm thu…) rồi đến thanh toán điện tử và thanh
toán thẻ ngân hàng nay đã chuyển qua các phương thức thanh toán hiện đại sử dụng
hoàn toàn công nghệ tồn tại trên môi trường mạng như ví điện tử, Internet banking,
mobile banking hay thẻ phi vật lý…

Tuy nhiên, bên cạnh những ưu điểm vượt bậc như nhanh chóng, thuận tiện và
tiết kiệm chi phí, các dịch vụ thanh toán điện tử hay thanh toán thẻ nói chung, cũng
tiềm ẩn rủi ro cho ngân hàng và cho khách hàng trong quá trình sử dụng dịch vụ khi
phải đối mặt với các loại hình tội phạm công nghệ cao cùng phương thức và thủ đoạn
ngày càng tinh vi hơn.

Lý do chọn đề tài

Trong bối cảnh hiện nay, tấn công mạng đã trở thành vấn đề an ninh phi truyền
thống mang tính toàn cầu và là mối quan tâm chung của các quốc gia trên thế giới. Hệ
thống tài chính, ngân hàng, trong đó xương sống là hệ thống thanh toán - rất quan
trọng và nhạy cảm của nền kinh tế, đã và đang là “đích ngắm” hàng đầu của các đối
tượng phạm tội công nghệ cao trên toàn thế giới, trong đó có cả ở Việt Nam. Do đó,
bài nghiên cứu khoa học này sẽ trình bày về đề tài “Nghiên cứu mã xác thực và ứng
dụng mã xác thực trong thanh toán điện tử”.

Mục tiêu, nội dung

Mục tiêu
- Tìm hiểu về mã xác thực OTP và ứng dụng của mã xác thực trong thanh toán điện tử.

- Lập trình mô phỏng

Nội dung

Chương 1: Tổng quan về an toàn thông tin và các xác thực điện tử

Chương 2: Thanh toán điện tử

Chương 3: Mã xác thực OTP và ứng dụng mã xác thực trong thanh toán điện tử

Chương 4: Mô phỏng

Đối tượng phạm vi nghiên cứu

- Mã xác thực

- Ứng dụng của mã xác thực trong thanh toán điện tử


CHƯƠNG 1: TỔNG QUAN VỀ AN TOÀN THÔNG TIN VÀ
CÁC VẤN ĐỀ XÁC THỰC ĐIỆN TỬ
1.1. Khái quát về an toàn thông tin ( information security )

Ngày nay, với sự phát triển vũ bão của công nghệ, cả thế giới đang đứng trước
nhiều mối đe dọa đến từ môi trường mạng. Chúng ta phải luôn đối mặt với sự cố của
hệ thống thông tin quản lý của doanh nghiệp và nguy cơ đánh mất những dữ liệu cực
kỳ quan trọng. Đó có thể là những dữ liệu riêng tư, thông tin về tài khoản ngân hàng,
những hình ảnh cá nhân, … Đặc biệt trong hoàn cảnh an ninh mạng phức tạp, khả
năng bị mất/ lộ thông tin là hoàn toàn có thể xảy ra. Điều này sẽ ảnh hưởng nghiêm
trọng đến đời sống cá nhân.

An toàn nghĩa là thông tin được bảo vệ, các hệ thống và những dịch vụ có khả
năng chống lại những tai hoạ, lỗi và sự tác động không mong đợi, các thay đổi tác
động đến độ an toàn của hệ thống là nhỏ nhất. Hệ thống có một trong các đặc điểm sau
là không an toàn: Các thông tin dữ liệu trong hệ thống bị người không được quyền
truy nhập tìm cách lấy và sử dụng (thông tin bị rò rỉ). Các thông tin trong hệ thống bị
thay thế hoặc sửa đổi làm sai lệch nội dung (thông tin bị xáo trộn)...

Thông tin chỉ có giá trị cao khi đảm bảo tính chính xác và kịp thời, hệ thống chỉ
có thể cung cấp các thông tin có giá trị thực sự khi các chức năng của hệ thống đảm
bảo hoạt động đúng đắn. Mục tiêu của an toàn bảo mật trong công nghệ thông tin là
đưa ra một số tiêu chuẩn an toàn. Ứng dụng các tiêu chuẩn an toàn này để loại trừ
hoặc giảm bớt các nguy hiểm. Do kỹ thuật truyền nhận và xử lý thông tin ngày càng
phát triển đáp ứng các yêu cầu ngày càng cao nên hệ thống chỉ có thể đạt tới độ an
toàn nào đó. Quản lý an toàn và sự rủi ro được gắn chặt với quản lý chất lượng. Khi
đánh giá độ an toàn thông tin cần phải dựa trên phân tích các rủi ro, tăng sự an toàn
bằng cách giảm tối thiểu rủi ro. Các đánh giá cần hài hoà với đặc tính, cấu trúc hệ
thống và quá trình kiểm tra chất lượng.

An toàn thông tin là bảo vệ thông tin và hệ thống thông tin nói chung khỏi các
truy cập trái phép, sử dụng, làm lộ, làm hỏng, chỉnh sửa, ghi chép không được phép…
Theo tổ chức CIA, an toàn thông tin mạng gồm các nội dung sau :

⮚ Tính bí mật(Confidentiality): Tính kín đáo riêng tư của thông tin.

⮚ Tính xác thực(Authentication): Bao gồm xác thực đối tác (bài toán nhận danh), xác

thực thông tin mà mình gửi.

⮚ Tính trách nhiệm(Availability): Đảm bảo người gửi thông tin không thể thoái thác

trách nhiệm về thông tin mà mình đã gửi.

Hình 1.1: Tam giác bảo mật CIA


1.2. Vấn đề xác thực

1.2.1. Khái niệm xác thực

Xác thực(Authentication) là một chứng thực một cái gì đó (hoặc một người nào
đó) đáng tin cậy, có nghĩa là, những lời khai báo do người đó đưa ra hoặc về vật đó là
sự thật.

Xác thực trong an ninh máy tính là một quy trình nhằm cố gắng xác minh nhận
dạng số (digital identity) của phần truyền gửi thông tin (sender) trong giao thông liên
lạc chẳng hạn như một yêu cầu đăng nhập. Phần gửi cần phải xác thực có thể là một
người dùng một máy tính, bản thân một máy tính hoặc một chương trình máy tính
(computer program).

Ngược lại sự tin cậy mù quáng (blind credential) hoàn toàn không thiết lập sự
đòi hỏi nhận dạng, song chỉ thiết lập quyền hoặc địa vị hẹp hòi của người dùng hoặc
của chương trình ứng dụng mà thôi.

Trong một mạng lưới tín nhiệm, việc "xác thực" là một cách để đảm bảo rằng
người dùng chính là người mà họ nói họ là, và người dùng hiện đang thi hành những
chức năng trong một hệ thống, trên thực tế, chính là người đã được ủy quyền để làm
những việc đó.

1.2.2. Phân loại xác thực

Xác thực thực thể (Entity Authentication) Xác thực thực thể là xác thực định
danh của một đối tượng tham gia giao thức truyền tin. Thực thể hay đối tượng có thể
là người dùng, thiết bị đầu cuối. Tức là một thực thể được xác thực bằng định danh
của nó đối với thực thể thứ hai trong một giao thức, và bên thứ hai đã thực sự tham gia
vào giao thức.

Xác thực dữ liệu (Data Authentication) Xác thực dữ liệu là một kiểu xác thực
đảm bảo một thực thể được chứng thực là nguồn gốc thực sự tạo ra dữ liệu này ở một
thời điểm nào đó, đảm bảo tính toàn vẹn dữ liệu.
1.2.3. Một số phương pháp xác thực

Xác thực dựa trên mật khẩu (Password)

Xác thực dựa trên định danh người dùng là một loại xác thực sử dụng từ lâu và
vẫn đang sử dụng rộng rãi do tính dễ dàng và rẻ tiền. Thông thường, mỗi người dùng
được cấp một tài khoản (Account) để truy cập vào hệ thống. Mỗi tài khoản người dùng
thường gồm 2 thành tố: tên người dùng (UserName) và mật khẩu (Password), trong đó
mật khẩu cần được giữ bí mật. Trong một số hệ thống, tên người dùng có thể được
thay thế bằng địa chỉ email, số điện thoại,…. Mật khẩu có thể lưu trong hệ thống ở
rạng rõ (plaintext) hoặc dạng mã hóa (encrypted text – thường dưới dạng hàm băm).

Tính bảo mật của xác thực dựa sử dụng mật khẩu dựa trên 2 yếu tố:

Độ khó đoán của mật khẩu


Tuổi thọ của mật khẩu

Độ khó đoán của mật khẩu lại phụ thuộc vào số bộ ký tự sử dụng trong mật
khẩu và độ dài của mật khẩu. Nhìn chung, mật khẩu càng an toàn nếu càng nhiều bộ
ký tự được sử dụng và có kích thước đủ lớn. Với các tài khoản của ứng dụng thông
thường, khuyến nghị nên sử dụng cả ký tự in thường, ký tự in hoa, chữ số và ký tự đặc
biệt trong mật khẩu với độ dài 8 ký tự trở lên.

Theo tuổi thọ, mật khẩu gồm 3 loại: Không hết hạn, có thời hạn sống và mật
khẩu sử dụng 1 lần. Để đảm bảo an toàn, khuyến nghị định kỳ đổi mật khẩu. Khoảng
thời gian sống của mật khẩu có thể được thiết lập từ 3 đến 6 tháng phụ thuộc chính
sách an toàn thông tin của cơ quan, tổ chức.

Nhìn chung, điều khiển truy nhập dựa trên mật khẩu có độ an toàn thấp do
người dùng có xu hướng chọn các từ đơn giản, dễ nhớ làm mật khẩu. Ngoài ra, mật
khẩu có thể bị nghe lén khi được truyền trên môi trường mạng mở như Internet. Do
vậy, để đảm bảo an toàn, cần có chính sách quản lý tài khoản và sử dụng mật khẩu phù
hợp với từng hệ thống cụ thể.
Hình 1.2: Xác thực dựa trên mật khẩu

Xác thực dựa trên thẻ thông minh(Smartcard)


Thẻ thông minh (Smartcard) là các thẻ nhựa có gắn các chip điện tử với khả
năng tính toán và các thông tin lưu trong thẻ được mã hóa . Điều khiển truy nhập dựa
trên thẻ thông minh là phương pháp có độ an toàn cao do smartcard sử dụng hai nhân
tố ( two – factors) để xác thực và nhận dạng chủ thể : (1) cái bạn có (what you have )
– thẻ smartcard và (2) cái bạn biết ( what you know ) – số PIN.
Dựa vào cách thức giao tiếp với thiết bị đọc mà có thể chia sẻ thông minh thành
2 loại là thẻ thông minh có tiếp xúc (Contact Smartcard) và thẻ thông minh không tiếp
xúc (Contactless Smartcard).
+)Thẻ thông minh có tiếp xúc (Contact Smartcard)
Loại thẻ này có một diện tích tiếp xúc, trong đó có một số tiếp điểm được mạ
vàng , diện tích khoảng 1 cm vuông. Thẻ thông minh có tiếp xúc sẽ hoạt động khi
được đưa vào máy đọc. Tại đây, con chip trên thẻ sẽ giao tiếp với các tiếp điểm và cho
phép máy đọc nhận thông tin từ chip và viết thông tin lên nó. Tuy không có pin nhưng
thẻ thông minh có tiếp xúc vẫn nhận được năng lượng do máy đọc cung cấp.
Hình 1.3: Thẻ thông minh có tiếp xúc
+)Thẻ thông minh không tiếp xúc (Contactless Smartcard)
Thẻ thông minh không tiếp xúc thực hiện quá trình truyền và nhận dữ liệu khi
được đặt gần một anten. Loại thẻ này thường được dùng trong các trường hợp muốn
truyền nhận dữ liệu thật nhanh hoặc khi bạn không muốn tiếp xúc trực tiếp với thẻ.
Đây là loại thẻ mà chip gắn trên nó liên lạc với máy đọc thông qua công nghệ cảm ứng
RFID. Nhờ vậy, thẻ thông minh không tiếp xúc có thể liên lạc với máy đọc trong
phạm vi lên đến 10 cm .

Hình 1.4: Thẻ thông minh không tiếp xúc


Loại thẻ này cũng không có pin và được nạp năng lượng bằng cuộn cảm tích
bên trong thẻ. Từ việc dò tìm tín hiệu vô tuyến và chỉnh lưu tín hiệu mà cuộn cảm này
có khả năng cung cấp năng lượng cho thẻ thông minh không tiếp xúc.

Xác thực dựa trên dựa trên thẻ bài (Tokens)


Các thẻ bài thường là các thiết bị cầm tay được thiết kế bị cầm tay được thiết kế
nhỏ gọn để có thể dễ dàng mang theo. Khác với thẻ thông minh, thẻ bài được tích hợp
pin cung cấp nguồn nuôi. Thẻ bài có thể được sử dụng để lưu mật khẩu, các thông tin
cá nhân và các thông tin quan trọng khác. Tương tự thẻ thông minh, thẻ bài thường
được trang bị cơ chế xác thực 2 nhân tố, gồm thẻ bài và mật khẩu, hoặc PIN(thường
dùng một lần). Ưu điểm của thẻ bài là có cơ chế xác thực mạnh hơn thẻ thông minh do
thẻ bài có CPU với năng lực xử lý cao hơn và bộ nhớ lưu trữ lớn hơn.

Hình 1.5: Một số thẻ bài (Tokens)

Xác thực bằng phương pháp nhận dạng sinh trắc học (Biometric)

Đây là mô hình xác thực có tính bảo mật cao dựa trên đặc điểm sinh học của
từng cá nhân, trong đó sử dụng các thủ tục như:

+ Quét dấu vân tay (fingerprint scanner)

+ Quét võng mạc mắt (retinal scanner)

+ Nhận dạng giọng nói (voice - recognition)

+ Nhận dạng khuôn mặt (facerecogniton)


Hình 1.6: Mô hình xác thực sinh trắc học

+ Máy quét dấu vân tay

Máy quét dấu vân tay phiên bản kỹ thuật số của dấu vân tay trên giấy và mực
kiểu cũ dựa vào việc ghi lại các kiểu xoáy và đường gờ độc đáo tạo nên dấu vân tay
của một cá nhân. Máy quét vân tay là một trong những phương thức xác thực sinh trắc
học phổ biến và dễ tiếp cận nhất, mặc dù các phiên bản dành cho người tiêu dùng,
chẳng hạn như trên điện thoại thông minh, vẫn có khả năng dương tính giả. Các phiên
bản mới hơn của quét vân tay vượt ra ngoài các đường vân tay và bên dưới da để đánh
giá các mô hình mạch máu trên ngón tay của mọi người và có thể chứng minh độ tin
cậy cao hơn. Mặc dù đôi khi không chính xác, máy quét vân tay là một trong những
công nghệ sinh trắc học phổ biến và được sử dụng nhiều nhất cho người tiêu dùng
hàng ngày.

Hình 1.7: Máy quét vân tay


+ Nhận dạng khuôn mặt

Công nghệ nhận dạng khuôn mặt dựa trên việc so khớp hàng chục phép đo khác
nhau từ khuôn mặt đã được phê duyệt với khuôn mặt của người dùng đang cố gắng
truy cập, tạo ra cái được gọi là khuôn mặt. Tương tự như máy quét vân tay, nếu đủ số
lượng phép đo từ người dùng khớp với khuôn mặt đã được phê duyệt, quyền truy cập
sẽ được cấp. Tính năng nhận dạng khuôn mặt đã được thêm vào một số điện thoại
thông minh và các thiết bị phổ biến khác, mặc dù nó có thể không nhất quán khi so
sánh các khuôn mặt khi nhìn từ các góc độ khác nhau hoặc khi cố gắng phân biệt giữa
những người trông giống nhau, chẳng hạn như họ hàng gần.

Hình 1.8: Nhận dạng khuôn mặt

+ Nhận dạng giọng nói

Các công nghệ nhận dạng giọng hát đo lường các đặc điểm của giọng hát để
phân biệt giữa các cá nhân. Giống như máy quét khuôn mặt, chúng kết hợp một số
điểm dữ liệu và tạo hồ sơ dấu vết giọng nói để so sánh với cơ sở dữ liệu. Thay vì &
quot; nghe" giọng nói, công nghệ nhận dạng giọng nói tập trung vào việc đo
lường và kiểm tra miệng và cổ họng của người nói để hình thành các hình dạng và
chất lượng âm thanh cụ thể. Quy trình này tránh các vấn đề bảo mật có thể gây ra do
cố gắng ngụy trang hoặc bắt chước giọng nói hoặc do các tình trạng phổ biến như ốm
đau hoặc thời gian trong ngày có thể thay đổi chất lượng âm thanh của giọng nói đối
với tai người. Những từ người dùng nói để truy cập vào một thiết bị được bảo vệ bằng
giọng nói cũng có thể được tiêu chuẩn hóa một chút, đóng vai trò như một loại mật
khẩu và thực hiện so sánh các bàn ghi âm được phê duyệt với người dùng .

Hình 1.9: Nhận dạng giọng nói

+ Máy quét mắt

Một số loại máy quét mắt được bán trên thị trường , bao gồm máy quét võng
mạc và nhận dạng mống mắt. Máy quét võng mạc hoạt động bằng cách chiếu một
luồng sáng về phía mắt để tạo ra các mẫu mạch máu có thể nhìn thấy được, sau đó
máy quét có thể đọc được và so sánh với thông tin đã được phê duyệt được lưu trong
cơ sở dữ liệu. Máy quét mống mắt hoạt động tương tự, lần này tìm kiếm các mẫu độc
đáo trong vòng màu xung quanh con ngươi của mắt. Ảnh cũng đã được sử dụng để
đánh lừa máy quét mắt, mặc dù phương pháp này có khả năng trở nên kém khả thi hơn
khi máy quét ngày càng tinh vi hơn và kết hợp các yếu tố như chuyển động của mắt
vào kế hoạch xác minh của chúng.

Hình 1.10: Nhận dạng mắt


Xác thực đa yếu tố

Xác thực đa yếu tố MFA (Multi-Factor Authentication) là phương thức xác


thực dựa trên nhiều yếu tố xác thực kết hợp, là mô hình xác thực yêu cầu kiểm chứng
ít nhất là hai yếu tố xác thực. Phương thức này là sự kết hợp của bất cứ yếu tố xác
thực nào, ví dụ như yếu tố đặc tính sinh trắc của người dùng hoặc những gì người
dùng biết để xác thực trong hệ thống.

Các yếu tố xác thực của một sơ đồ xác thực đa yếu tố có thể bao gồm:

• Thứ mà người dùng có: Một số đối tượng vật lý mà người dùng sở hữu, chẳng
hạn như mã thông báo bảo mật (thẻ USB), thẻ ngân hàng, chìa khóa, v.v.

• Điều người dùng biết: Một số kiến thức nhất định chỉ người dùng mới biết,
chẳng hạn như mật khẩu, mã PIN, TAN, v.v.

• Thông tin về người dùng là: Một số đặc điểm vật lý của người dùng (sinh trắc
học), chẳng hạn như vân tay, mống mắt, giọng nói, tốc độ nhập, kiểu trong khoảng
thời gian nhấn phím, v.v.

• Người dùng đang ở đâu đó: Một số kết nối với mạng máy tính cụ thể hoặc sử
dụng tín hiệu GPS để xác định vị trí.

Với xác thực đa yếu tố, ngân hàng có thể tăng mức độ an toàn, bảo mật cho
giao dịch trực tuyến lên rất nhiều nhờ việc kiểm chứng nhiều yếu tố xác thực. Ví dụ
như xác thực chủ thẻ trong giao dịch ATM, yếu tố xác thực đầu tiên của khách hàng là
thẻ ATM (cái khách hàng có), sau khi đưa thẻ vào máy, khách hàng sẽ phải đưa tiếp
yếu tố xác thực thứ hai là số PIN (cái khách hàng biết). Một ví dụ khác là xác thực
người sử dụng dịch vụ giao dịch Internet Banking: khách hàng đăng nhập với
Username và Password sau đó còn phải cung cấp tiếp OTP (One - Time - Password)
được sinh ra trên token của riêng khách hàng.

An toàn, bảo mật trong giao dịch trực tuyến là hết sức quan trọng, trong đó xác
thực người sử dụng là một trong những khâu cốt lõi. Với xác thực đa yếu tố, ta có thể
tăng mức độ an toàn, bảo mật nhờ việc kiểm chứng nhiều yếu tố xác thực. Mức độ an
toàn bảo mật sẽ càng cao khi số yếu tố xác thực càng nhiều. Khi số yếu tố xác thực lớn
thì hệ thống càng phức tạp, kéo theo chi phí đầu tư và duy trì vận hành tốn kém, đồng
thời lại bất tiện cho người sử dụng. Do vậy, trên thực tế để cân bằng giữa an toàn, bảo
mật và tính tiện dụng, người ta thường áp dụng xác thực hai yếu tố và xác thực ba yếu
tố (three-factor authentication - 3FA).

Xác thực đa yếu tố dù có mức độ an toàn, bảo mật cao hơn, nhưng cũng cần các
biện pháp nghiệp vụ khác để bảo đảm tuyệt đối an toàn trong các hoạt động giao dịch
trực tuyến.

Hình 1.11: Xác thực đa yếu tố

1.3. Chữ ký số

1.3.1. Khái quát về chữ ký điện tử

Mục đích chữ ký điện tử (chữ ký số) là đảm bảo tính chất chống chối bỏ trách
nhiệm và xác nhận nguồn gốc thông tin. Chữ ký điện tử tương tự chữ ký viết tay có
tính năng đảm bảo nguồn gốc cho thông tin và xác nhận nội dung cũng như trách
nhiệm trên nội dung của thông tin. Chữ ký điện tử sử dụng mã hóa khóa công khai để
mã hóa và giải mã thông điệp rút gọn của dữ liệu nhằm xác thực dữ liệu được trao đổi.
Hình 1.12: Chữ ký số trên hóa đơn điện tử

Một trong các lợi điểm chính của mã hóa khóa công khai chính là việc cung cấp
một phương pháp để tạo chữ ký điện tử. Đối với văn bản trên giấy, người dùng có thể
sử dụng chữ ký tay để xác nhận nội dung và nguồn gốc của thông tin trong văn bản.
Tuy nhiên đối với các văn bản điện tử rất dễ dàng sửa đổi nội dung thông tin văn bản
mà không để lại dấu vết. Nhờ vào việc áp dụng các tính chất của mã hóa khóa công
khai, chữ ký số ra đời để đáp ứng nhu cầu xác nhận tính trung thực của nội dung văn
bản điện tử. Chữ ký số là một chuỗi nhị phân có khả năng xác thực nguồn gốc dữ liệu,
tính toàn vẹn dữ liệu và tránh sự phủ nhận trách nhiệm của người gửi. Một chữ ký số
đóng vai trò tương tự như chữ ký viết tay trên các văn bản. Tuy nhiên, một chữ ký viết
tay có thể bị giả mạo trong khi chữ ký số gần như không thể giả mạo.

Cách thức để tạo chữ ký số dựa trên việc mã hóa thông tin xác nhận bằng khóa
riêng của người dùng. Nếu người nhận giải mã chính xác thông tin bằng khóa công
khai của người gởi thì nội dung thông tin của văn bản được chứng thực.

Các văn bản cần được xác nhận thông thường có kích thước khá lớn trong khi
việc mã hóa bằng các thuật toán mã hóa khóa công khai lại có tốc độ khá chậm. Để
tăng tốc độ ký nhận và xác nhận chữ ký số đồng thời giảm khối lượng truyền tải, chữ
ký điện tử được thực hiện trên message digest (thông điệp rút gọn) của văn bản.
Message digest thu được bằng cách sử dụng các hàm băm.

Chữ ký số có ý nghĩa rất lớn trong thương mại điện tử do khả năng xác nhận sự
toàn vẹn và nguồn gốc của thông tin được trao đổi qua mạng. Đặc biệt, chữ ký số đóng
vai trò rất quan trọng trong việc thanh toán trực tuyến và tạo các chứng nhận điện tử
để giao dịch.

Chữ ký điện tử (electronic signature) là một dạng thông tin được đi kèm theo
dữ liệu (bao gồm văn bản, hình ảnh, video,…) nhằm mục đích xác định người chủ của
dữ liệu đó.

Chữ ký điện tử được sử dụng trong các giao dịch điện tử. Xuất phát từ thực tế,
chữ ký điện tử cũng cần đảm bảo các chức năng: xác định được người chủ của một dữ
liệu nào đó: văn bản, ảnh, video, ... dữ liệu đó có bị thay đổi hay không.

Hình 1.13: Quá trình ký và kiểm tra chữ ký

Trong giao dịch điện tử hiện nay trên thế giới, chữ ký số là hình thức chữ ký
điện tử phổ dụng nhất. Chữ ký số bao gồm một cặp mã khoá, gồm khoá bí mật và
khóa công khai. Trong đó, khoá bí mật được người gửi sử dụng để ký (hay mã hoá)
một dữ liệu điện tử, còn khoá công khai được người nhận sử dụng để mở dữ liệu điện
tử và xác thực danh tính người gửi.

1.3.2. Đặc điểm của chữ ký điện tử

Khả năng xác định nguồn gốc


Các hệ thống mật mã hóa khóa công khai cho phép mật mã hóa văn bản với
khóa bí mật mà chỉ có người chủ của khóa biết. Để sử dụng Chữ ký số thì văn bản cần
phải được mã hóa hàm băm (giải thuật nhằm sinh ra các giá trị băm tương ứng với
mỗi khối dữ liệu). Sau đó dùng khoá bí mật của người chủ khóa để mã hóa, khi đó ta
được Chữ ký số. Khi cần kiểm tra, bên nhận giải mã với khóa công khai để lấy lại hàm
băm và kiểm tra với hàm băm của văn bản nhận được. Nếu hai giá trị này khớp nhau
thì bên nhận có thể tin tưởng rằng văn bản đó xuất phát từ người sở hữu khóa bí mật.

Tính không thể phủ nhận

Trong giao dịch, một bên có thể từ chối nhận một văn bản nào đó là do mình
gửi. Để ngăn ngừa khả năng này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ
ký số với văn bản. Khi có tranh chấp, bên nhận sẽ dùng chữ ký này như một chứng cứ
để bên thứ ba giải quyết.

Tính toàn vẹn

Cả hai bên tham gia vào quá trình thông tin đều có thể tin tưởng là văn bản
không bị sửa đổi trong khi truyền vì nếu văn bản bị thay đổi thì hàm băm cũng sẽ thay
đổi và lập tức bị phát hiện. Quy trình mã hóa sẽ ẩn nội dung đối với bên thứ ba.

Tính bảo mật

Về kỹ thuật công nghệ của chữ ký số là dựa trên hạ tầng mã hóa công khai
(PKI), trong đó phần quan trọng nhất là thuật toán mã hóa công khai RSA. Công nghệ
này đảm bảo chữ ký số khi được một người dùng nào đó tạo ra là duy nhất, không thể
giả mạo được và chỉ có người sở hữu khóa bí mật mới có thể tạo ra được chữ ký số đó
(đã được chứng minh về mặt kỹ thuật mã hóa).
1.3.4. Ứng dụng của chữ ký số

Có thể ứng dụng trong các giao dịch điện tử, e-mail, để có thể dễ dàng mua
hàng trực tuyến, chuyển tiền ngân hàng, đầu tư chứng khoán trực tuyến, thanh toán
trực tuyến mà không lo bị đánh cắp tiền so với việc dùng các tài khoản Visa, Master.

Ngoài ra, chữ ký điện tử còn dùng để nộp thuế trực tuyến, khai báo hải quan và
thông qua online. Giúp các đối tác có thể ký hợp đồng với nhau hoàn toàn trực tuyến
không cần gặp trực tiếp nhau, chỉ cần ký vào file hợp đồng và gửi file qua e-mail.

Mặc dù khá là mới mẻ đối với nhiều doanh nghiệp ở Việt Nam, nhưng chữ ký
số lại còn đóng vai trò rất quan trọng đối với tương lai của ngành TMĐT và CPDT
trong bối cảnh đất nước hội nhập kinh tế thế giới như hiện nay. Chữ ký điện tử mang
lại cho doanh nghiệp, tổ chức nhiều lợi ích như: tiết kiệm được chi phí văn bản giấy
tờ, thời gian luân chuyển hoạt động quản lý công văn thư, thư điện tử. Đồng thời, còn
góp phần xây dựng các giao dịch qua mạng mà vẫn đảm bảo độ an toàn và bảo mật
thông tin tuyệt đối.

Tóm lại, chữ ký điện tử không những là công nghệ xác thực, đảm bảo an ninh
mà còn an toàn cho giao dịch trên mỗi trường Internet. Giải quyết vấn đề toàn vẹn dữ
liệu và cũng là bằng chứng để chống chối bỏ trách nhiệm trên nội dung đã ký kết, giúp
doanh nghiệp, tổ chức và cá nhân sử dụng dịch vụ hoàn toàn yên tâm về mặt pháp lý
với các giao dịch điện tử của mình.

1.4. Vấn đề mã hóa

1.4.1. Một số khái niệm về mã hóa

Khái niệm mật mã

Mật mã là một ngành khoa học chuyên nghiên cứu các phương pháp truyền tin
bí mật. Mật mã bao gồm: Lập mã và phá mã. Lập mã bao gồm hai quá trình là mã hóa
và giải mã.

Để bảo vệ thông tin trên đường truyền người ta thường biến đổi nó từ dạng
nhận thức được sang dạng không nhận thức được trước khi truyền đi trên mạng, quá
trình này được gọi là mã hóa thông tin (encryption), ở nơi nhận phải thực hiện quá
trình ngược lại, tức là biển đổi thông tin từ dạng không nhận thức được (dữ liệu đã
được mã hóa) sang dạng nhận thức được (dạng gốc), quá trình này gọi là quá trình
giải mã.

Khái niệm mã hóa (Encryption)

Mã hóa: là quá trình chuyển thông tin có thể đọc được (gọi là bản rõ) thành
thông tin “khó” thể đọc được theo cách thông thường (gọi là bản mã). Đó là một trong
những kỹ thuật để bảo mật thông tin.

Giải mã: là quá trình chuyển thông tin ngược lại từ bản mã thành bản rõ.

Thuật toán mã hóa hay giải mã là thủ tục để thực hiện mã hóa hay giải mã.

Khóa mã hóa là một giá trị làm cho thuật toán mã hóa thực hiện theo cách
riêng biệt và sinh ra bản rõ riêng. Thông thường khóa càng lớn thì bản mã càng an
toàn. Phạm vi các giá trị có thể có của khóa được gọi là Không gian khóa.

Hệ mã hóa là tập các thuật toán, các khóa nhằm che giấu thông tin, cũng như
làm rõ nó.

Khái niệm hệ mật mã

Một sơ đồ hệ thống mật mã là bộ năm S = (P, C, K, E, D) thỏa mãn các điều


kiện:

P: Tập hợp hữu hạn các bản rõ. P được gọi là không gian của bản rõ

C: Tập hợp hữu hạn các bản mã (Crypto), C được gọi là không gian của bản mã. Mỗi

phần tử của C có thể nhận được bằng cách áp dụng phép mã hóa lên một phần tử

của P , với k

K: Tập hợp hưu hạn các khóa hay còn gọi là không gian khóa. Tập hợp không gian
khóa các khóa này phải đủ lớn sao cho “kẻ địch” không đủ thời gian để thử mọi khóa
thông qua phương pháp vét cạn.

E: Là thuật toán để mã hóa:

D: Là thuật toán để giải mã:


1.4.2. Các phương pháp mã hóa

Hệ mã hóa khóa đối xứng (hay còn gọi là hệ mã hóa bí mật)

Là những hệ mật mã sự dụng chung một khóa cho cả quá trình mã hóa và giải
mã dữ liệu. Do đó khóa phải được giữ bí mật tuyệt đối.

Hình 1.14: Mô hình hệ mã hóa đối xứng

Mô hình của mã hóa này, ban đầu phải thống nhất được về khóa dùng chung
cho mã hóa và giải mã trước khi truyền dữ liệu 2 bên gửi và nhận, bộ phận sinh khóa
đưa ra khóa. Tiếp theo là bên gửi mã hóa Plaintext bằng khóa bí mật rồi gửi thông điệp
được mã hóa cho bên nhận. Công việc của bên nhận là dùng khóa bí mật trên giải mã
và lấy ra Plaintext.

Trên đây là quá trình trao đổi thông tin của bên gửi và nhận đã sử dụng mã hóa
đối xứng. Quá trình này diễn ra điểm trọng tâm cần đảm bảo là khóa. Ở đây bước thỏa
thuận về khóa trong việc mã hóa và giải mã một cách bí mật. Thỏa thuận về khóa bởi
lý do sau:

Ngay từ đầu hai bên làm chung trên một mã hóa, nhưng người gửi gửi thông
điệp đã mã hóa lại không cho biết khóa đã sử dụng với người nhận trong quá trình
thực hiện. Thì người nhận sẽ không biết được nội dung tài liệu đã gửi, vì thế song
song trao đổi về thuật toán là việc trao đổi về khóa.
Quá trình trao đổi khóa phải theo một kênh bí mật, có thể trao đổi trực tiếp hoặc
gián tiếp. Điều quan trọng là thực hiện trên kênh tuyệt đối bí mật và hai bên tin tưởng
lẫn nhau tránh để bên thứ 3 biết được.

Một số hệ mật mã khóa đối xứng hiện đại mà mình thấy hay được sử dụng
là DES, AES, RC4, RC5,...

Hệ mã hóa khóa phi đối xứng (hay còn gọi hệ mã hóa khóa công khai)

Các hệ mật khóa này dùng một khóa để mã hóa sau đó dùng một khóa khác để
giải mã, nghĩa là khóa để mã hóa và giải mã là khác nhau. Các khóa này tạo nên từng
cặp chuyển đổi ngược nhau và không có khóa nào có thể suy được ra khóa kia. Khóa
dùng để mã hóa có thể công khai nhưng khóa dùng để giải mã phải giữ bí mật.

Hình 1.15: Mã hóa bất đối xứng

Trong hệ mã khóa này thì một người sử dụng khi tham gia đều được cấp 2
khóa: một khóa để mã hóa dữ liệu (Public key) một dùng để giải mã (Private key). Khi
đó Public key được nhiều người biết còn khóa còn lại chỉ duy nhất một người biết. Để
truyền tin cho nhau sử dụng mã hóa công khai được thực hiện như sau:

Sender yêu cầu cung cấp hay tự tìm khóa công khai của Receiver trên một
Server quản lý khóa đó

Khi hai phía thống nhất thuật toán để mã hóa dữ liệu xong, Sender sử dụng
khóa công khai của Receiver cùng với thuật toán trên để mã hóa thông tin bí mật.

Mã hóa thông tin xong sẽ gửi đến Receiver, nhưng Sender cũng không thể nào
giải mã được thông tin đã mã hóa (khác với mã hóa khóa riêng).
Nhận được thông tin đã mã hóa, Receiver dùng khóa bí mật của mình để giải
mã và lấy thông tin ban đầu.

CHƯƠNG 2: THANH TOÁN ĐIỆN TỬ


2.1. Tổng quan về thanh toán điện tử

2.1.1. Khái niệm

Hình 2.1: Thanh toán điện tử là gì?

Trong hai thập kỷ qua, hệ thống thanh toán điện tử đã thu hút nhiều sự chú ý từ
các nhà nghiên cứu và thiết kế hệ thống thông tin do vai trò quan trọng của nó trong
thương mại điện tử hiện đại. Điều này dẫn đến các nghiên cứu và có những quan điểm
khác nhau về định nghĩa thanh toán điện tử của một số các nhà nghiên cứu. Các khái
niệm này chủ yếu là nhìn từ những góc độ khác nhau, từ các học giả trong lĩnh vực kế
toán và tài chính, công nghệ kinh doanh, viễn thông và hệ thống thông tin. Ví dụ,
Dennis (2004) định nghĩa hệ thống thanh toán điện tử như một hình thức cam kết tài
chính có liên quan đến người mua và người bán thông qua việc sử dụng các thông tin
liên lạc điện tử. Briggs và Brooks (2011) cho rằng, thanh toán điện tử là một hình thức
liên kết giữa các tổ chức, cá nhân được hỗ trợ bởi các ngân hàng cho phép trao đổi tiền
điện tử. Ở góc độ khác, Peter và Babatunde (2012) xem hệ thống thanh toán điện tử là
một phương thức chuyển khoản qua Internet. Theo Adeoti và Osotimehin (2012), hệ
thống thanh toán điện tử dùng để chỉ một phương tiện điện tử thực hiện thanh toán cho
hàng hóa và dịch vụ mua sắm trực tuyến tại các siêu thị và trung tâm mua sắm. Một
định nghĩa khác cho thấy rằng, thanh toán điện tử là các khoản thanh toán trong môi
trường thương mại điện tử với hình thức trao đổi tiền thông qua các phương tiện điện
tử (Kaur và Pathak, 2015). Thanh toán điện tử là một cách trả tiền điện tử cho hàng
hóa hoặc dịch vụ khi mua sắm, thay vì sử dụng tiền mặt hoặc séc, trực tiếp hoặc qua
đường bưu điện. Hệ thống thanh toán điện tử thường được phân loại thành bốn loại:
Thẻ tín dụng, thẻ ghi nợ, tiền điện tử, hệ thống micropayment (Maiyo, 2013).

Ngoài ra, Teoh, Chong, Lin, và Chua (2013) xem thanh toán điện tử như bất kỳ
chuyển giao của một giá trị thanh toán điện tử của người nộp để thụ hưởng thông qua
một kênh thanh toán điện tử cho phép người tiêu dùng truy cập từ xa và quản lý tài
khoản ngân hàng và giao dịch qua mạng điện tử.

Tóm lại, theo các định nghĩa trên, hệ thống thanh toán điện tử có thể chỉ đơn
giản là một tập hợp các thành phần và quy trình cho phép hai hoặc nhiều bên tham gia
giao dịch và giá trị tiền trao đổi thông qua phương tiện điện tử.

2.1.2. Các phương pháp thanh toán điện tử

Thanh toán trực tuyến trong thương mại điện tửlà một khái niệm không còn xa
lạ với người dùng Internet. Thanh toán là một trong những vấn đề cần quan tâm nhất
của kinh doanh thương mại điện tử. Các loại hình thanh toán được các công ty kinh
doanh thương mại điện tử áp dụng là:

Thanh toán bằng thẻ

Là hình thức thanh toán đặc trưng nhất của giao dịch thương mại trực tuyến
trên Internet. Thanh toán bằng thẻ tín dụng chiếm tới 90% trong tổng số các giao dịch
thương mại điện tử. Với cách thanh toán này giúp cho người mua hàng trực tuyến có
thể dễ dàng thực hiện các giao dịch với nhà cung cấp ở mọi nơi mọi lúc một cách
nhanh chóng nhất.

Thanh toán trực tuyến bằng thẻ có hai loại sau:

Thanh toán bằng thẻ tín dụng hoặc ghi nợ quốc tế: Với hình thức thanh toán
này, người tiêu dùng sở hữu các loại thẻ mang thương hiệu Visa, Master, American
Express, JCB có thể thanh toán hơn 60 website đã kết nối với cổng thanh toán
OnePay.

Thanh toán bằng thẻ ghi nợ nội địa: Đây là hình thức chưa thực sự phổ biến tại
Việt Nam nhưng lại rất phổ biến ở nước ngoài, là thẻ được giới hạn trong phạm vi một
quốc gia, do các ngân hàng, tổ chức trong nước phát hành, đồng tiền giao dịch phải là
bản tệ của nước đó. Với cách thanh toán này, các chủ thẻ đa năng tại Đông Á và chủ
thẻ tại Connect 24 của Vietcombank đã có thể thực hiện thanh toán trực tuyến tại các
website đã kết nối với Ngân hàng Đông Á và cổng thanh toán OnePay.

Hình 2.2:Thanh toán bằng thẻ

Thanh toán trực tuyến

Đây là một dịch vụ trung gian, giúp chuyển tiền thật từ tài khoản ngân hàng
thành một loại tiền ảo trên mạng nhưng vẫn có khả năng sử dụng như tiền thật để mua
sắm và sử dụng thanh toán trực tuyến. Hình thức thanh toán này bảo mật hơn so với
hình thức thanh toán truyền thống. Để sử dụng thanh toán trực tuyến, người tiêu dùng
cần có một tài khoản trên một dịch vụ trung gian nào đó và liên kết tài khoản đó với
ngân hàng, hiện nay có một số cổng thanh toán tốt như: OnePay, VTC…
Hình 2.3:Thanh toán trực tuyến

Thanh toán bằng Ví điện tử

Với hình thức thanh toán này, người tiêu dùng phải sở hữu ví điện tử của
Mobivi, Payoo, VnMart, NetCash, từ đó có thể thanh toán trực tuyến trên một số
website đã chấp nhận ví điện tử này. Ví điện tử có thể được gắn kết với tài khoản ngân
hàng để chuyển tiền giữa ví điện tử và tài khoản. Ngoài ra, người tiêu dùng có thể nạp
tiền vào ví bằng cách nộp tiền mặt, chuyển khoản. Chi phí phải trả cho hình thức này
tương đối thấp, chi phí đăng ký dịch vụ thường được miễn phí.

Hình 2.4: Thanh toán bằng ví điện tử

Thanh toán bằng thiết bị di động thông minh


Đây là một hình thức thanh toán ra đời trong nền kinh tế số hóa, khá phổ biến
và có tiềm năng phát triển mạnh trong tương lai với đại đa số người tiêu dùng bây giờ
ai cũng đã quá quen thuộc và sử dụng thành thạo Smartphone. Với dịch vụ này khi đi
mua sắm, người tiêu dùng không cần phải mang theo tiền mặt mà thay vào đó là thanh
toán trực tuyến thông qua điện thoại di động thông minh với dịch vụ Mobile Banking.

Hệ thống thanh toán qua điện thoại được xây dựng trên mô hình liên kết giữa
các nhà cung cấp dịch vụ: Ngân hàng, các nhà cung cấp viễn thông, hệ thống tiêu
dùng, người tiêu dùng.

Hiện nay trên thị trường hình thức thanh toán này có một số nhà cung cấp như:
Samsung, Apple, Androi, tuy nhiên có một hạn chế hình thức thanh toán này chỉ thực
hiện trên các thiết bị di động đời mới Smartphone.

Hình 2.5: Thanh toán bằng điện thoại thông minh

Thanh toán qua chuyển khoản ngân hàng

Thông qua ATM hoặc giao dịch trực tiếp tại ngân hàng, người mua hàng
chuyển tiền của mình sang tài khoản của người bán một số tiền nhất định hoặc có giá
trị bằng hàng hóa đặt mua trước khi nhận được hàng. Hình thức thanh toán này chỉ nên
thực hiện khi mua hàng tại các website lớn và có uy tín hoặc hai bên là khách quen
của nhau. Bên cạnh lợi ích nó mang lại là người mua và người bán có thể thanh toán
tiền cho nhau khi ở xa nhau thì cũng có những rủi ro cho người mua, khi người bán
không giao hàng hoặc giao hàng kém chất lượng, không như cam kết khi rao bán,
quảng cáo và khó có thể đổi lại được hàng hóa nếu không ưng ý.

Hình 2.6: Thanh toán bằng cách chuyển khoản ngân hàng

2.1.3. Vấn đề an ninh trong thanh toán điện tử

Thời gian qua, cùng với xu thế phát triển mạnh mẽ của các phương thức thanh
toán điện tử thông qua mạng Internet và mạng điện thoại di động trên thế giới, hoạt
động thanh toán tại Việt Nam cũng đã có những bước phát triển vượt bậc với hàng loạt
loại hình dịch vụ thanh toán không dùng tiền mặt mới ra đời đáp ứng nhu cầu ngày
càng tăng của các tổ chức và cá nhân trong nền kinh tế tương đồng với công nghệ
thanh toán trong khu vực và trên thế giới.

Cùng với sự phát triển của công nghệ thông tin và viễn thông, các phương thức
thanh toán đã thay đổi nhanh chóng và đa dạng từ thanh toán tiền mặt là chủ yếu sang
các phương tiện thanh toán không dùng tiền mặt truyền thống hiện diện dưới hình thức
vật chất (như séc, ủy nhiệm chi, ủy nhiệm thu…) rồi đến thanh toán điện tử và thanh
toán thẻ ngân hàng nay đã chuyển qua các phương thức thanh toán hiện đại sử dụng
hoàn toàn công nghệ tồn tại trên môi trường mạng như ví điện tử, Internet banking,
mobile banking hay thẻ phi vật lý…

Trong bối cảnh hiện nay, tấn công mạng đã trở thành vấn đề an ninh phi truyền
thống mang tính toàn cầu và là mối quan tâm chung của các quốc gia trên thế giới. Hệ
thống tài chính, ngân hàng, trong đó xương sống là hệ thống thanh toán - rất quan
trọng và nhạy cảm của nền kinh tế, đã và đang là “đích ngắm” hàng đầu của các đối
tượng phạm tội công nghệ cao trên toàn thế giới, trong đó có cả ở Việt Nam.

Trên thế giới, gian lận rủi ro trong hoạt động thanh toán có thể xảy ra ở bất cứ
quốc gia nào, kể cả những quốc gia có nền kinh tế, khoa học - công nghệ phát triển
như Mỹ, Anh, Đức, Nhật Bản... Đối với các tổ chức thẻ quốc tế lớn như Visa hay
MasterCard..., vấn đề an ninh, an toàn bảo mật nhằm hạn chế gian lận trong giao dịch
thẻ cũng được đặt lên hàng đầu trong quá trình nghiên cứu, phát triển và cung ứng các
sản phẩm, dịch vụ thẻ. Tuy vậy, tổng kết hàng năm về tình hình gian lận thẻ vẫn là vấn
đề nổi cộm đối với các tổ chức này khi xu hướng phạm tội tiếp tục phát sinh, bất chấp
việc áp dụng các giải pháp công nghệ bảo mật mới nhất.

Để bảo vệ quyền lợi của khách hàng của mình, các ngân hàng cùng các công ty
bảo mật đã đưa ra nhiều giải pháp bảo mật khác nhau trong việc TTĐT trên mạng như:
ma trận ngẫu nhiên, One time-One password token và tiêu chuẩn mới nhất trong
TTĐT SET (Secure Electronic Transaction),... nhằm đảm bảo các phiên giao dịch của
người sử dụng.

CHƯƠNG 3: MÃ XÁC THỰC OTP VÀ ỨNG DỤNG TRONG


THANH TOÁN ĐIỆN TỬ
3.1. Giới thiệu về mã xác thực OTP

Bảo mật thông tin là điều các doanh nghiệp, các cá nhân luôn đặt lên hàng đầu.
Đặc biệt trong bối cảnh công nghệ hiện đại như ngày nay, tội phạm công nghệ cao
tăng lên nhanh chóng vấn đề bảo mật thông tin càng được quan tâm nhiều hơn. Từ đó
OTP ra đời đã giải quyết những lo lắng bảo mật thông tin này.

OTP là viết tắt của One-Time Password, có nghĩa là mật khẩu dùng 1 lần. Mật
khẩu một lần (OTP) có thể bảo vệ hoàn toàn cơ chế xác thực thời gian đăng nhập khỏi
các cuộc tấn công của bên ngoài. Nó được xem là một phương pháp bảo mật đơn giản
hiệu quả tạo ra một mật mã duy nhất cho mỗi lần sử dụng. Thông qua việc sử dụng các
phép tính cả dấu thời gian và số thứ tự để cung cấp một mã OTP duy nhất tại thời
điểm đó.

Mật khẩu dùng một lần (OTP) có thể hoạt động để tăng cường ID người dùng
và mật khẩu hiện có với một lớp xác thực bổ sung để tăng cường bảo mật cho tất cả
ứng dụng đã xác thực. Lý do là nếu mật khẩu bị xâm phạm, thì vẫn phải cần một mật
khẩu OTP đó để có quyền truy cập. Loại xác thực này được gọi là xác thực hai yếu tố,
hay xác thực mạnh hơn.
Thông thường, OTP là dãy gồm các ký tự hoặc chữ số được tạo ra và gửi đến
thiết của người dùng để xác thực. Mã xác thực thường dùng chỉ một lần duy nhất cà
không sử dụng mã này ở bất kì đâu. Mã OTP thường có hiệu lực trong thời gian ngắn
khoảng 30 giây đến 60 giây.

Hình 3.1: Mã xác thực OTP

3.2. Nguyên lý hoạt động của mã xác thực OTP

Sau khi đã đăng ký dịch vụ, mỗi lần muốn đăng nhập (log in), sau khi người
dùng đăng nhập thành công bởi tài khoản (account name) và mật khẩu chính (primary
application password) của ứng dụng thành công thì bước kế tiếp người dùng sẽ được
cung cấp một mật khẩu thứ hai, còn gọi là mật khẩu một lần (OTP) được tạo ra bởi
thiết bị tạo mật khẩu (OTP hardware token) hoặc phần mềm tạo mật khẩu 1 lần trên
điện thoại di động (OTP Software token) hoặc được gửi từ hệ thống đến tin nhắn điện
thoại (SMS OTP token). Mật khẩu một lần này sẽ tự mất hiệu lực trong vòng 30 đến
60 giây hoặc sau khi người dùng đăng xuất (log out) ra khỏi hệ thống ứng dụng. Như
vậy, nếu trường hợp người dùng bị lộ mật khẩu chính (Primary application password)
thì người có được mật khẩu chính đó cũng không thể đăng nhập vào ứng dụng được vì
họ không có mật khẩu thứ hai và do đó giải pháp OTP có tính bảo mật cao.
Hình 3.2: Mô hình hoạt động của OTP

3.3. Các loại mã OTP

Hiện nay, mã xác thực OTP gồm 3 loại phổ biến:

SMS OTP: Đây là loại OTP phổ biến của nhiều ngân hàng tại Việt Nam. Bạn sẽ nhận
được tin nhắn gửi mã OTP của ngân hàng gửi đến số điện thoại mà bạn đã đăng ký
trước đó.

Ví dụ: Khi bạn xác nhận giao dịch thanh toán trực tuyến qua thẻ ATM nội địa,
bạn cần phải nhập mã OTP được gửi đến điện thoại để hoàn tất.

Token: Là một thiết bị điện tử mà bạn sẽ được cấp khi mở tài khoản thanh toán tại
ngân hàng. Khác với SMS OTP, bạn vẫn có thể dùng mã Token trong khi không có
kết nối mạng. Hiện nay rất nhiều dịch vụ ngân hàng cung cấp bảo mật Token, tuy
nhiên để sử dụng dịch vụ này, bạn phải trả thêm phí làm máy Token.

Smart OTP: Là ứng dụng tạo mã OTP được cài trên cả 2 hệ điều hành android và
iOS. Để sử dụng, bạn cần đăng ký và kích hoạt tài khoản, Smart OTP có hoạt động
tương tự như Token.

3.4. Các thuật toán sinh mật khẩu OTP

Sinh OTP dựa trên việc đồng bộ bộ đếm (HOTP)

“H” trong HOTP là viết tắt của Mã xác thực tin nhắn dựa trên hàm băm
(HMAC). Nói cách khác, thuật toán Mật khẩu dùng một lần dựa trên HMAC (HOTP)
là một OTP dựa trên sự kiện trong đó yếu tố di chuyển trong mỗi mã dựa trên một bộ
đếm.

Mỗi khi HOTP được yêu cầu và xác thực, hệ số di chuyển sẽ tăng lên dựa trên
bộ đếm. Mã được tạo hợp lệ cho đến khi bạn chủ động yêu cầu một mã khác và mã đó
được xác thực bởi máy chủ xác thực. Trình tạo OTP và máy chủ được đồng bộ hóa
mỗi khi mã được xác thực và người dùng có quyền truy cập.

Hình 3.3: Trình tạo OTP sử dụng HOTP

Mô tả về thuật toán HOTP:

1. HOTP Client phải lưu trữ Master Key để mã hóa bằng quy trình Mã hóa
khóa đối xứng.

2. HOTP Client tạo một bộ đếm (Counter) để tạo ra dữ liệu luôn thay đổi, Bộ
đếm này luôn được tăng dần nên dữ liệu được sử dụng sẽ luôn thay đổi từ Bộ đếm.

3. Mang Key lấy được từ bước 1 để mã hóa dữ liệu bộ đếm , lúc này sẽ hiện ra
thông báo, tin nhắn nhận được mỗi lần sẽ luôn là thông tin mới. Nếu xét từ bước 2 và

4. Mang thông báo đã vào Hàm băm SHA-1 sẽ nhận được Thông báo thông báo
(MD) với tổng đầu ra là 20 byte theo tiêu chuẩn SHA-1.

5. Message Digest (MD) đã vào hàm HOTP Truncate là một hàm cần giảm số
lượng Bit đầu ra từ 20 Byte xuống chỉ còn 4 Byte để chuyển kết quả đầu ra thành OTP
6 ký tự

6. Khi Máy chủ nhận OTP từ Máy khách , phía Máy chủ sẽ có quy trình giống
với Máy khách về mọi mặt, đó là sử dụng cùng một Khóa và Bộ đếm như Máy khách .
Bộ đếm sẽ tăng lên mỗi khi có yêu cầu đối với xác minh bản thân so sánh dữ liệu thu
được từ Máy khách với dữ liệu do máy chủ tạo ra.
Hình 3.4: Mô tả về thuật toán HOTP

Về cách sinh mật khẩu OTP sử dụng thuật toán:

HOTP: HOTP (K, C) = Truncate (HMAC_SHA-1(K, C)) (2.1.4.1.1)

Trong đó:

K: là khóa bí mật

C: là một bộ đếm (có độ dài là 8 bytes)

Truncate (): Là hàm tách chuỗi, thực hiện việc trích xuất kết quả từ hàm Hash
để có được mật khẩu OTP.

Phương pháp tách chuỗi như sau:

HMAC_SHA-1(K, C) = SHA-1(K⊕C1… ∥ SHA-1(K⊕ C2… ∥ C)) (2.1.4.1.2)

Trong đó:

C1 = 0x36 (36 trong hệ thập lục phân).

C2 = 0x5c (5C trong hệ thập lục phân).

HMAC_SHA-1(K, C) là một hàm tính toán dựa trên thuật toán HMAC kết hợp với
hàm băm SHA-1 của giá trị K và bộ đếm C.

Kết quả đầu ra của hàm HMAC_SHA-1(K,C) cho ta một giá trị có độ dài là
160 bits = 20 bytes, chúng ta dùng hàm tách chuỗi (Truncate) để tách từ chuỗi 160 bits
thành một chuỗi mới có độ dài 32 bit, sau đó tính modulo để được mật khẩu OTP. Cụ
thể như sau:

Từ kết quả đầu ra 160 bit của hàm HMAC_SHA1(K,C), ta lấy 4 bit thấp của
byte cuối cùng chuyển sang cơ số 10 để tìm vị trí offset, sau đó ta được chuỗi 4 bytes
= 32 bit tính từ vị trí offset.

Giá trị mật khẩu được tính theo công thức sau:

HOTPvalue = HOTP (K, C) mod

Trong đó: d là số chữ số của OTP, thông thường một mật khẩu OTP sinh ra có
độ dài từ 6 đến 8 chữ số.

Hình 3.5: Thuật toán HOTP

Ở hình 3.5, giá trị bí mật K được chia sẻ giữa server và người dùng qua một
kênh liên lạc. Sau đó server sử dụng giá trị bí mật K và bộ đếm C để tạo mật khẩu
OTP, phía người dùng sử dụng thiết bị sinh mật khẩu như Token để sinh mật khẩu
OTP (có lưu giá trị khóa bí mật K và bộ đếm C). Để xác thực, phía server sẽ so sánh
mật khẩu OTP ở phía server với mật khẩu OTP phía người dùng. Nếu giống nhau,
người dùng xác thực thành công.

Trong trường hợp, vấn đề xác thực giữa server và phía người dùng xảy ra qua
trình bất đồng bộ, muốn người dùng có thể xác thực thành công, chúng ta có thể phân
tích quá trình bất đồng bộ giá trị sinh mật khẩu OTP qua thuật toán HOTP.

Ví dụ: về sinh mật khẩu OTP theo thuật toán HOTP

Giả sử tính được:

HMAC_SHA-1(K,C)
=(5D,23,61,C6,0D,CD,12,AB,CC,5B,EF,7B,14,16,45,11,8A,BC,C7,2D)
Giá trị được tạo ra khi sử dụng HMAC-SHA-1 có độ dài 160 bits = 20 bytes

Tiếp tục, ta sử dụng hàm HOTP (K, C) = Truncate (HMAC_SHA-1(K, C)) để


tách chuỗi.

Ta lấy bytes cuối cùng có giá trị là 2D (0010 1101 theo cơ số 2) => ta lấy 4 bít
cuối cùng là 1101 tương ứng 13 (trong hệ cơ số 10)

=> Vị trí offset là vị trí thứ 13

Ta lấy 4 bytes từ vị trí offset 13 ta được: 16, 45, 11, 8A

=> Giá trị có được là: 0x1645118A, đổi sang hệ cơ số 10 ta được giá trị:
373,625,226

Vậy HOTP (K, C) =373,625,226

Ta chọn mật khẩu OTP có độ dài là 6 chữ số

=> HOTP = HOTP (K, C) mod = 373,625,226 mod 625226

Vậy mã OTP 6 digit = 625226

Sinh OTP dựa trên việc đồng bộ thời gian (TOTP)

Thuật toán đồng bộ thời gian (TOTP) là một thuật toán tạo mật khẩu một lần
(OTP) sử dụng thời gian hiện tại làm nguồn duy nhất. Là một phần mở rộng của thuật
toán HOTP nhưng dựa trên thời gian T (time).

Hình 3.6: Trình tạo OTP sử dụng TOTP

Theo phương pháp sinh OTP theo thời gian, người dùng sẽ được cấp một thiết
bị sinh mã được gọi là token. Token gồm có ba thành phần chính: một mã seedcode,
một đồng hồ đếm thời gian, và một thuật toán mã hóa một chiều. Mã seedcode là mã
được nhà sản xuất cài đặt sẵn trong token. Mỗi token có một mã seedcode khác nhau.
Và mã seedcode này cũng được lưu lại trong hệ thống của nhà cung cấp dịch vụ tương
ứng với tên truy nhập của người dùng. Đồng hồ đếm thời gian là đồng hồ của token,
nó được đồng bộ với đồng hồ của hệ thống trước khi giao cho người dùng.Mỗi khi
người dùng bấm nút sinh mã, token sẽ lấy biến thời gian của đồng hồ. Biến thời gian
được lấy chi tiết đến từng phút, hoặc 30 giây.

Thuật toán mã hóa được sử dụng là thuật toán băm SHA-1.Sau đây là phần mô
tả về thuật toán:

Thiết lập:

- Đưa ra một số nguyên bí mật K được chia sẻ giữa bên xác thực và người sử dụng.

- Thống nhất một giá trị bước nhảy thời gian X và thời gian ban đầu T0.

Xác thực:

- Người sử dụng tính giá trị T =

Trong đó: : thời gian hiện tại

: thời gian ban đầu (thường chọn = 0)

X: là bước thời gian, đây là tham số quyết định thời gian hợp lệ của mật khẩu
OTP

- Với thuật toán TOTP thì thời gian chuẩn hợp lệ của mật khẩu OTP là 30 giây (X= 30),
thời gian có hiệu lực của mỗi lần sử dụng mật khẩu OTP là 30 giây được chọn phù
hợp với yêu cầu về bảo mật và khả năng sử dụng.

- Người sử dụng gửi cho bên xác thực HOTP (K, T) trong đó HOTP là thuật toán sinh
OTP dựa trên các hàm băm.

TOTP (K, T) = HOTP (K, T)

- Đối với thuật toán TOTP, mật khẩu OTP được tính như sau :

TOTP = TOTP (K, T) mod

Trong đó d là số chữ số của OTP, thông thường một mật khẩu OTP sinh ra có
độ dài từ 6 đến 8 chữ số.
Bên xác thực có thể xác nhận mật khẩu đó hợp lệ hay không, vì bất kỳ mật
khẩu nào được sinh ra bên ngoài khoảng thời gian từ T0 đến thời gian hiện tại đều
khác nhau. Và vì có một khóa được dung chung nên nhà xác thực có thể chắc chắn
rằng mật khẩu được sinh ra bởi một người đang đang sở hữu khóa chia sẻ đó.

Hình 3.7: Minh họa mô hình sinh mã OTP theo thời gian

3.5. Các ưu điểm và nhược điểm của mã OTP

Ưu điểm:

An toàn: Giải quyết tốt các vấn đề giả mạo, đánh cắp, Key logger. Đối với hai yếu tố
xác thực, thiết bị này có thể được kết hợp với một mã PIN hoặc mật khẩu.

Dễ dàng sử dụng: Việc nhận dạng và xác thực được thực hiện trong vài giây tránh
được nguy cơ bị lỗi khi gõ các mã OTP dài qua các mã từ một thiết bị chứng thực vào
một máy tính (Ví dụ OTP Token sử dụng màn hình hiển thị). Nó hoạt động với tài
nguyên và đăng nhập được trên tất cả các nền tảng máy tính, và trình duyệt không cần
phần mềm cài đặt Client. Nhanh chóng và tích hợp dễ dàng vào bất kỳ ứng dụng web
nào (Windows, Linux, Mac, Internet Explorer, Firefox, ... ).

Linh hoạt: Người dùng dễ dàng sử dụng cho các máy tính khác nhau và dễ mang theo
bên mình.

Mã nguồn mở: Sẵn sàng tích hợp với nhiều ứng dụng mã nguồn mở.

Nhược điểm:
Mã OTP có thể bị lộ nếu chủ tài khoản không giữ thông tin cẩn thận

Giao dịch thông qua hệ thống internet có thể bị hacker tấn công

Với hình thức OTP Token, bảo mật hơn nhưng phải trả thêm chi phí làm máy Token.

3.6. Ứng dụng trong thanh toán điện tử


Hiện nay, ngoài việc ứng dụng trong giao dịch ngân hang Internet Banking thì
mã xác thực OTP còn được sử dụng trong các lĩnh vực khác nhau như thanh toán điện
tử trong thương mại điện tử, trong giao dịch chứng khoáng,….

Thương mại điện tử là hình thức mua bán hàng hóa và dịch vụ thông qua mạng
máy tính toán cầu đã phát triển để đáp ứng được nhu cầu của người mua hàng. Theo
nghĩa hẹp, thương mại điện tử đơn giản là việc tiến hành các hoạt động mua bán hàng
hóa, dịch vụ thông qua các phương tiện điện tử, mạng viễn thông như điện thoại, máy
tính, mạng internet, mạng truyền hình,….

Hình 3.8. Web Thương mại điện tử

Phương pháp xác thực trước đây mà các Website thương mại điện tử sử dụng
là xác thực người dùng bằng Username/Password , là một phương pháp xác thực một
nhân tố. Khi các hành vi lừa đảo ngày càng tinh vi, phức tạp , các nguy cơ mất an toàn
trên mạng Internet gia tăng thì hệ thống xác thực sử dụng Username/Password không
còn đủ mạnh để bảo vệ được thông tin của khách hàng. Trên thực tế hiện nay có nhiều
công nghệ và phương pháp để xác thực danh tính trong giao dịch trực tuyến. Những
phương pháp đó là sử dụng mật khẩu, số định danh cá nhân, chứng thư số , các thiết bị
bảo mật vật lý như Smart Card, thiết bị phần cứng sinh mật khẩu OTP, sử dụng đặc
điểm sinh trắc học để bảo vệ danh tính. Với mỗi phương pháp thì mức độ bảo mật
khác nhau, phụ thuộc vào môi trường sử dụng, công nghệ triển khai như xác thực sử
dụng sinh trắc học thường sử dụng trong điều kiện đòi hỏi bảo mật rất cao, nhưng chi
phí triển khai lại khá tốn kém .
Phương pháp xác thực đa nhân tố sẽ đảm bảo an toàn hơn phương pháp xác
thực đơn nhân tố để hạn chế chống lại các nguy cơ lừa đảo, giả mạo. Các Website
thương mại điện tử đều lựa chọn nhà cung cấp dịch vụ thanh toán( cổng thanh toán)
tin cậy để tránh được rủi ro mất an toàn từ Internet khi không có một bên thứ ba đảm
bảo giao dịch trực tuyến . Những cổng thanh toán trực tuyến Paypal, Onepal,… đều sử
dụng cơ chế xác thực động đa nhân tố, kết hợp với thông tin giao dịch được mã hóa
theo giao thức SSL là giao thức bảo mật phổ biến hiện nay trong các hoạt động thương
mại điện tử .

Hình 3.9: Cổng thanh toán sử dụng mã OTP

Trên các Website thương mại điện tử hiện nay, để xác thực danh tính khách
hàng thanh toán giao dịch khi mua hàng thường sử dụng phương pháp xác thực 2 nhân
tố là mật khẩu OTP. Một số dịch vụ xác thực 2 nhân tố sử dụng nền tảng xác thực thẻ
thông minh Smart Card, nhưng phổ biến là sử dụng mật khẩu một lần OTP được gửi
tới điện thoại di động hay Email đã được đăng kí từ trước của khách hàng . Việc khách
hàng sử dụng e-Banking hay Internet Banking, Mobile Banking sẽ rất thuận tiện và an
toàn khi sử dụng xác thực 2 nhân tố , chỉ cần sử dụng mật khẩu OTP có giá trị nhất
định trong một phiên giao dịch là có thể đảm bảo an toàn cho khách hàng bởi vì nó
được kết hợp giữa Username/Password hoặc mã PIN của chủ tài khoản với mật khẩu
OTP cùng quyền sở hữu thiết bị di động nhận OTP hay các thiết bị phần cứng Token
sinh OTP.

Ứng dụng SMS OTP cho website thương mại điện tử


Trong thương mại điện tử, SMS OTP mang lại lợi ích cho cả khách hàng lẫn chủ
website thương mại điện tử.

Về phía người mua, họ sẽ có thể xác nhận cẩn thận giỏ hàng của mình trước khi tiến
hành checkout. Việc này mang lại trải nghiệm mua sắm online tốt hơn cho người
dùng.

Còn về phía doanh nghiệp e-commerce, việc tối ưu quá trình checkout khiến hình ảnh
doanh nghiệp trở nên chuyên nghiệp hơn. Đồng thời, việc bảo vệ thông tin khách hàng
an toàn cũng góp phần nâng cao uy tín cho doanh nghiệp.

Ứng dụng SMS OTP cho App mobile

SMS OTP cũng rất cần thiết để tăng mức độ bảo mật cho các ứng dụng trên điện thoại
di động của bạn. Nó giúp hạn chế khả năng bạn bị hack vì lộ thông tin cá nhân.

Ứng dụng SMS OTP cho cổng thanh toán

Chắc hẳn mỗi người trong chúng ta đều mong muốn bảo vệ tài khoản cá nhân và tránh
sai sót khi chuyển tiền trực tuyến. Và SMS OTP có thể gia tăng mức độ an toàn cho
quá trình giao dịch của bạn, bằng cách yêu cầu bạn nhập từ vài chữ số để xác nhận lại
việc chuyển tiền của mình.

Ứng dụng Token OTP cho ngân hàng

Đối với lĩnh vực ngân hàng, thiết bị Token và mã Token vô cùng quan trọng. Khi
khách hang giao dịch online, đề đảm bảo rằng thông tin khách hàng không bị trộm
hoặc dù có bị trộm thì giao dịch cũng không thể thành công nếu không có mã OTP.
Tại các ngân hang, Mã OTP thường được cung cấp qua SMS hoặc máy Token do ngân
hàng cấp.

Ứng dụng SMART OTP cho giao dịch trực tuyến

Hiện nay, hầu hết các ngân hàng ở Việt Nam,.. đều đang sử dụng hình thức xác thực
bằng Smart OTP và dần thay thế cho việc sử dụng SMS OTP. Cần sử dụng người
dùng cần phải đăng kí với ngân hang. Smart OTP được đánh giá là phương thức bảo
mật có độ an toàn cao, dễ dàng sử dụng,…
CHƯƠNG 4: MÔ PHỎNG
4.1. Giới thiệu phần nềm mô phỏng

Spring tool suite (STS) là một extension mở rộng cho eclipse, chuyên dùng để
hỗ trợ phát triển các ứng dụng bằng Spring Framework.

Hình 4.1: Spring Tool Suite


Phần mềm được viết bằng ngôn ngữ Java trong môi trường phát triển Spring Tool
Suite 4.

4.2. Giao diện khi sử dụng

Hình 4.2: Giao diện khi khởi động mô phỏng


Hình 4.3: Nhập key bất kỳ

Hình 4.4: Tạo mã OTP thành công và gửi cho bên xác thực
Hình 4.5: Sau khi nhập mã OTP đúng và xác thực thành công

Hình 4.6: Khi nhập mã OTP sau thời gian quy định, mã OTP sẽ hết hạn và xác
thực thất bại

Bên thiết lập

Hình 4.7: Lưu đồ thuật toán bên tạo mã

Bên xác thực

Hình 4.8: Lưu đồ thuật toán xác thực


KẾT LUẬN
Trong thời đại công nghê số sẽ có rất nhiều phát minh mới, hiện đại được ứng
dụng vào cuộc sống con người nhằm nâng cao sự tiện lời. Vậy trên đây, thông qua
việc tìm hiểu về an toàn thông tin , các phương pháp xác thực , mã xác thực và ứng
dụng của mã xác thực trong thanh toán điện tử, chúng em đã có những kiến thức cơ về
mã xác thực, cách thức thực hiện, các các yêu cầu và vấn đề bảo mật an toàn. Việc sự
dụng và phát triển mã xác thực OTP mạng lại lợi ích rất lớn trong công cuộc phát triển
kinh tế của thế giới nói chung, đặc biệt trong giao dịch điện tử nói riêng.

Một lần nữa xin chân thành cảm ơn các thầy cô, đặc biệt là ThS. Phạm Hồng
Quân đã tận tình hướng dẫn và giúp đỡ em trong suốt quá trình thực hiện và hoàn
thành đề tài nghiên cứu khoa học này.
TÀI LIỆU KHAM KHẢO
1. “Bài giảng an toàn mạng thông tin” – Vũ Hoàng Hoa, Phạm Hồng Quân –
Trường Đại Học Giao Thông Vận Tải – 2022

2. “Bài giảng cơ sở an toàn thông tin” - Hoàng Xuân Dậu, Nguyễn Thị Thanh Thủy
– Học Viện Bưu Chính Viễn Thông

3. https://thuonghieucongluan.com.vn/dam-bao-an-ninh-an-toan-trong-thanh-toan-
dien-tu-va-thanh-toan-the-a29254.html

4. https://datatracker.ietf.org/doc/html/rfc6238

5. http://laichau.gov.vn/tin-tuc-su-kien/chuyen-de/an-toan-thong-tin/chu-ky-so-va-
van-de-an-toan-thong-tin.html

6. https://www.dienmayxanh.com/kinh-nghiem-hay/chu-ky-dien-tu-la-gi-su-khac-
nhau-giua-chu-ky-dien-1385689

7. https://en.wikipedia.org/wiki/One-time_password#:~:text=A%20one%2Dtime
%20password%20(OTP,system%20or%20other%20digital%20device.

8. https://www.tabnine.com/code/java/packages/org.jboss.security.otp

9. http://amp.tapchicongthuong.vn/bai-viet/ung-dung-chu-ky-so-trong-thuong-mai-
dien-tu-86815.htm

PHỤ LỤC
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class Clock {


private final int interval;
private Calendar calendar;

public Clock() {
interval = 30;
}

public Clock(int interval) {


this.interval = interval;
}

public long getCurrent() {


calendar = GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));
long currentTimeSeconds = calendar.getTimeInMillis() / 1000;
return currentTimeSeconds ;
}
}
//

import java.math.BigInteger;

public class hex {


// chuyển hex sang byte[]
public static byte[] hexStr2Bytes(String hex){

byte[] bArray = new BigInteger("10" + hex,16).toByteArray();

byte[] bs = new byte[bArray.length - 1];


for (int i = 0; i < bs.length; i++)
bs[i] = bArray[i+1];
return bs;
}
}
//

import java.lang.reflect.UndeclaredThrowableException;
import java.nio.ByteBuffer;
import java.security.GeneralSecurityException;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

public class Hmac_sha {


public static byte[] hmac_sha(String crypto, byte[] keyBytes,Long
currentInterval) {
try {
Mac hmac;
hmac = Mac.getInstance(crypto);
SecretKeySpec macKey =new SecretKeySpec(keyBytes, "RAW");
hmac.init(macKey);
byte[] challenge = ByteBuffer.allocate(8).putLong(currentInterval).array();
return hmac.doFinal(challenge);
} catch (GeneralSecurityException gse) {
throw new UndeclaredThrowableException(gse);
}

}
}

//

import javax.swing.JOptionPane;

public class Verify {

public boolean verify(String otp,String key) {

String code = otp;


System.out.println("key =" + key);
System.out.println(code);

Clock clock = new Clock();


GenerateOTP generateOTP = new GenerateOTP();
long currentInterval = clock.getCurrent();
long T = ( clock.getCurrent() - 0 ) / 30 ;
System.out.println("currentInterval =" + T);

String candidate =
generateOTP.generateTOTP(key,T,"6","HmacSHA1") ;
System.out.println(candidate);
if (candidate.equals(code)) {
System.out.println("oke");
JOptionPane.showMessageDialog(null, "Xác thực thành công");
return true;
}else {
JOptionPane.showMessageDialog(null, "Xác thực thất bại!");
}
return false;
}
}
//
import javax.swing.JOptionPane;

public class GenerateOTP {

private static final int[] DIGITS_POWER


// 0 1 2 3 4 5 6 7 8
= {1,10,100,1000,10000,100000,1000000,10000000,100000000 };

public String generateTOTP(String key,Long time,String returnDigits,String


crypto){
Hmac_sha hmac_sha1 = new Hmac_sha();
hex hex1 = new hex();
int codeDigits = Integer.decode(returnDigits).intValue();
String result = null;

byte[] k = hex1.hexStr2Bytes(key);
byte[] hash = hmac_sha1.hmac_sha(crypto, k, time);

// put selected bytes into result int


int offset = hash[hash.length - 1] & 0xf;

int binary =
((hash[offset] & 0x7f) << 24) |
((hash[offset + 1] & 0xff) << 16) |
((hash[offset + 2] & 0xff) << 8) |
(hash[offset + 3] & 0xff);

int otp = binary % DIGITS_POWER[codeDigits];

result = Integer.toString(otp);
while (result.length() < codeDigits) {
result = "0" + result;
}
return result;
}

}
//
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.text.MessageFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
import java.awt.event.ActionEvent;
import javax.swing.border.TitledBorder;
import java.awt.Color;
import javax.swing.JComboBox;
import javax.swing.SwingConstants;
import javax.swing.border.EtchedBorder;
import java.awt.SystemColor;
import java.awt.Font;
import javax.swing.ImageIcon;
import java.awt.Dimension;
import java.awt.Toolkit;

public class Totp extends JFrame {

private String digal;


private JPanel contentPane;
private JTextField textField;
private JLabel lblNewLabel_1;
private JTextField textField_1;
private JTextField textField_2;
private JPanel panel_1;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Totp frame = new Totp();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Totp() {
setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\Nam
Nguyen\\Downloads\\
282234568_362595735964483_4107076652793216333_n.png"));
setTitle("Chương trình tạo và xác thực OTP");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 813, 552);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JPanel panel = new JPanel();


panel.setBackground(SystemColor.activeCaption);
panel.setBorder(new TitledBorder(new
EtchedBorder(EtchedBorder.LOWERED, new Color(255, 255, 255), new Color(160,
160, 160)), "", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
panel.setBounds(0, 11, 797, 502);
contentPane.add(panel);
panel.setLayout(null);

panel_1 = new JPanel();


panel_1.setBounds(44, 175, 699, 288);
panel_1.setFont(new Font("Tahoma", Font.BOLD, 15));
panel_1.setBorder(new TitledBorder(new
EtchedBorder(EtchedBorder.LOWERED, new Color(255, 255, 255), new Color(160,
160, 160)), "M\u00E3 OTP", TitledBorder.LEADING, TitledBorder.ABOVE_TOP,
null, new Color(0, 0, 0)));
panel.add(panel_1);
panel_1.setLayout(null);

textField = new JTextField();


textField.setBounds(290, 34, 127, 20);
panel_1.add(textField);
textField.setColumns(10);

JLabel lblNewLabel = new JLabel("Nhập Key bất kỳ :");


lblNewLabel.setBounds(188, 37, 138, 14);
panel_1.add(lblNewLabel);

JPanel panel_2 = new JPanel();


panel_2.setBackground(new Color(255, 255, 224));
panel_2.setFont(new Font("Tahoma", Font.BOLD, 20));
panel_2.setBorder(new TitledBorder(null, "T\u1EA1o m\u00E3 OTP",
TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 128, 0)));
panel_2.setBounds(25, 110, 246, 167);
panel_1.add(panel_2);
panel_2.setLayout(null);

JButton btnNewButton = new JButton("T\u1EA1o OTP");


btnNewButton.setForeground(new Color(255, 0, 0));
btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 15));
btnNewButton.setBounds(71, 133, 100, 23);
panel_2.add(btnNewButton);

lblNewLabel_1 = new JLabel("");


lblNewLabel_1.setBounds(44, 42, 156, 62);
panel_2.add(lblNewLabel_1);
lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel_1.setBorder(new TitledBorder(null, "M\u00E3 OTP",
TitledBorder.LEADING, TitledBorder.TOP, null, Color.RED));

textField_1 = new JTextField();


textField_1.setBounds(63, 61, 119, 30);
panel_2.add(textField_1);
textField_1.setColumns(10);

JPanel panel_3 = new JPanel();


panel_3.setBackground(new Color(255, 255, 204));
panel_3.setForeground(Color.BLACK);
panel_3.setBorder(new TitledBorder(null, "B\u00EAn nh\u1EADn x\
u00E1c th\u1EF1c", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0,
128, 0)));
panel_3.setBounds(404, 110, 246, 167);
panel_1.add(panel_3);
panel_3.setLayout(null);

JButton btnNewButton_1 = new JButton("Xác thực");


btnNewButton_1.setForeground(new Color(255, 0, 51));
btnNewButton_1.setFont(new Font("Tahoma", Font.BOLD, 15));
btnNewButton_1.setBounds(74, 133, 100, 23);
panel_3.add(btnNewButton_1);

JLabel lblNewLabel_3 = new JLabel("");


lblNewLabel_3.setBounds(60, 46, 135, 54);
panel_3.add(lblNewLabel_3);
lblNewLabel_3.setBorder(new TitledBorder(new
EtchedBorder(EtchedBorder.LOWERED, new Color(255, 255, 255), new Color(160,
160, 160)), "Nh\u1EADp m\u00E3 OTP", TitledBorder.LEFT, TitledBorder.TOP,
null, new Color(255, 0, 0)));
textField_2 = new JTextField();
textField_2.setBounds(74, 64, 108, 23);
panel_3.add(textField_2);
textField_2.setColumns(10);
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_btnNewButton_1_actionPerformed(e);
}
});
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_btnNewButton_actionPerformed(e);
}
});

JLabel lblXhuon = new JLabel(" CHƯƠNG TRÌNH DEMO MÃ


XÁC THỰC OTP");
lblXhuon.setBounds(216, 63, 556, 58);
lblXhuon.setFont(new Font("Tahoma", Font.BOLD, 20));
panel.add(lblXhuon);

JLabel lblNewLabel_2 = new JLabel("LỚP KỸ THUẬT THÔNG TIN


VÀ TRUYỀN THÔNG K60");
lblNewLabel_2.setBounds(202, 11, 644, 31);
lblNewLabel_2.setForeground(new Color(0, 0, 0));
lblNewLabel_2.setFont(new Font("Tahoma", Font.BOLD, 20));
panel.add(lblNewLabel_2);

JLabel label = new JLabel("");


label.setBounds(10, 11, 156, 153);
label.setIgnoreRepaint(true);
label.setIcon(new ImageIcon("C:\\Users\\Nam Nguyen\\Downloads\\
282234568_362595735964483_4107076652793216333_n.png"));
panel.add(label);

JButton btnNewButton_2 = new JButton("RESET");


btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textField.setText(null);
textField_2.setText(null);
textField_1.setText(null);
}
});
btnNewButton_2.setBounds(674, 474, 89, 23);
panel.add(btnNewButton_2);
}
protected void do_btnNewButton_actionPerformed(ActionEvent e) {

long T0 = 0;
long X = 30;
Clock clock = new Clock();
GenerateOTP generateOTP =new GenerateOTP();

String steps = "0";

System.out.println( clock.getCurrent());

String s1 ="Thời gian: " + String.valueOf(clock.getCurrent());


long T = ( clock.getCurrent() - T0 ) / X ;

System.out.println(T);

steps = Long.toHexString( T ).toUpperCase(Locale.ENGLISH);


System.out.println(steps);
String key = textField.getText();

String otp = generateOTP.generateTOTP(key,T,"6","HmacSHA1");


digal = otp;

textField_1.setText(otp);
if( textField_1.getText() != null) {
JOptionPane.showMessageDialog(null, "Tạo mã xác thực thành công.\n"
+ " Mã xác thực của bạn là :" +
textField_1.getText());
}
}

protected void do_btnNewButton_1_actionPerformed(ActionEvent e) {

String key1 = textField.getText();


String otp = textField_2.getText();
Verify verify = new Verify();
verify.verify(otp, key1);

You might also like