Bối cảnh và vấn đề nghiên cứu

Trong hoạt động của các tổ chức tài chính - ngân hàng và hệ thống Quỹ tín dụng nhân dân (QTDND), việc cung ứng các dịch vụ ngân hàng điện tử như SMS Banking, Mobile Banking đóng vai trò thiết yếu nhằm nâng cao năng lực cạnh tranh và duy trì mối liên kết giao dịch với khách hàng. Công ty Cổ phần NGV là đơn vị phát triển giải pháp phần mềm Quỹ tín dụng nhân dân eFund – sản phẩm đạt giải thưởng Sao Khuê năm 2016 và chiếm lĩnh hơn 60% thị phần tại các QTDND trên cả nước.

Mặc dù eFund đã được tích hợp phân hệ SMS Banking, tuy nhiên thực tế triển khai cho thấy chỉ khoảng 1/4 (25%) số lượng QTDND đối tác yêu cầu tích hợp dịch vụ này. Nguyên nhân chính xuất phát từ việc phân hệ SMS Banking hiện hành mới dừng lại ở các tính năng truy vấn thông tin thụ động (truy vấn số dư, lãi suất, hạn mức tín dụng, lịch sử giao dịch) và tin nhắn thông báo chủ động từ hệ thống (biến động số dư, thông báo hạn nộp lãi). Phân hệ chưa cung cấp chức năng giao dịch tài chính mang tính chủ động như chuyển khoản do những lo ngại về mức độ bảo mật thông tin trên đường truyền viễn thông.

Khóa luận xác định các mục tiêu và nhiệm vụ nghiên cứu cụ thể:

  1. Nghiên cứu tổng quan về hệ thống phần mềm eFund và hiện trạng phân hệ SMS Banking tại Công ty Cổ phần NGV.
  2. Nghiên cứu cơ sở lý thuyết về mật khẩu sử dụng một lần (OTP - One Time Password), hàm băm mật mã (SHA-1, SHA-256), mã xác thực thông điệp có khóa (HMAC) và các tiêu chuẩn sinh mã OTP (HOTP, TOTP, COTP).
  3. Phân tích, thiết kế quy trình nghiệp vụ cho chức năng chuyển khoản tích hợp cơ chế xác thực OTP trên phân hệ SMS Banking.
  4. Xây dựng chương trình thử nghiệm mô phỏng quy trình sinh và xác thực mã OTP theo kiến trúc Client/Server.

Đối tượng nghiên cứu của đề tài là cơ chế xác thực mật khẩu một lần OTP và quy trình giao dịch chuyển khoản trong phân hệ SMS Banking. Phạm vi nghiên cứu tập trung vào giải pháp phần mềm eFund của Công ty Cổ phần NGV, thực hiện trong khuôn khổ đợt thực tập tốt nghiệp khóa 2012 - 2016 (hoàn thành vào tháng 05/2016).


Cơ sở lý thuyết và phương pháp

Khóa luận dựa trên các lý thuyết nền tảng về an toàn thông tin và kỹ thuật mật mã học:

  • Mật khẩu sử dụng một lần (OTP / Vernam Cipher): Cơ chế mật khẩu chỉ có giá trị cho một phiên làm việc hoặc một giao dịch xác định nhằm loại bỏ nguy cơ tấn công nghe lén (sniffing), tấn công phát lại (replay attack) và phần mềm ghi nhật ký phím gõ (keylogger).
  • Lý thuyết hàm băm mật mã (Cryptographic Hash Function): Áp dụng ba tính chất cơ bản gồm tính không va chạm yếu, tính không va chạm mạnh và tính hàm một chiều. Văn bản phân tích hai thuật toán băm chính là SHA-1 (FIPS PUB 180-1, kích thước khối 512 bit, giá trị băm 160 bit) và SHA-256 (FIPS PUB 180-2, giá trị băm 256 bit).
  • Mã xác thực thông điệp băm có khóa (HMAC - RFC 2104): Kết hợp hàm băm mật mã $H$ với khóa bí mật $K$, sử dụng hai hằng số đệm $ipad = 0x36$ và $opad = 0x5c$.
  • Các tiêu chuẩn sinh mã OTP:
    • HOTP (HMAC-based One-Time Password - RFC 4226): Thuật toán sinh mã dựa trên bộ đếm gia tăng $C$ và khóa bí mật $K$, sử dụng kỹ thuật cắt ngắn động (Dynamic Truncation - DT) để trích xuất 4 byte (31 bit) tạo mã số từ 6 đến 8 chữ số.
    • TOTP (Time-based One-Time Password - RFC 6238): Thuật toán sinh mã dựa trên nhãn thời gian thực $TC = \lfloor(\text{unixtime}(now) - \text{unixtime}(T0)) / TS\rfloor$ với khoảng thời gian mặc định $TS = 30$ giây và hàm băm SHA-256.
    • COTP (Challenge-Response One-Time Password): Thuật toán dựa trên giao thức thử thách - trả lời để chống lại tấn công phát lại.
    • Cơ chế S/Key (Lamport scheme): Xác thực đầu cuối dựa trên chuỗi băm giảm dần.

Phương pháp nghiên cứu bao gồm:

  • Phương pháp phân tích và tổng hợp tài liệu chuyên ngành về mật mã học và an toàn hệ thống thông tin.
  • Phương pháp phân tích và thiết kế hệ thống hướng đối tượng: Xây dựng lược đồ Use Case, biểu đồ tuần tự (Sequence Diagram), biểu đồ cộng tác (Collaboration Diagram) để mô hình hóa các quy trình xử lý tin nhắn và chuyển khoản.
  • Phương pháp thực nghiệm phần mềm: Thiết kế, lập trình ứng dụng Client/Server mô phỏng quá trình tạo khóa, sinh mã kích hoạt và xác thực OTP trên nền tảng Microsoft Visual Studio 2010.

Nguồn dữ liệu sử dụng trong nghiên cứu bao gồm tài liệu kiến trúc kỹ thuật và quy trình nghiệp vụ phần mềm eFund của Công ty Cổ phần NGV; các tiêu chuẩn kỹ thuật quốc tế RFC 2104, RFC 4226, RFC 6238 do IETF và tổ chức OATH công bố; các văn bản quy phạm kỹ thuật và chế độ kế toán của Ngân hàng Nhà nước Việt Nam (Công văn 1687/NHNN-TCKT ngày 20/03/2015, Công văn 5135/NHNN-DBTKTT ngày 15/08/2012).


Nội dung chính theo từng chương

Chương 1: Giới thiệu tổng quan về phân hệ SMSBanking trong giải pháp phần mềm Efund của công ty cổ phần NGV

Chương 1 trình bày lịch sử hình thành, cơ cấu tổ chức và danh mục sản phẩm của Công ty Cổ phần NGV (thành lập ngày 23/04/2008, ban đầu là NGN). Doanh nghiệp đã triển khai thành công phần mềm eFund cho hơn 400 QTDND tại 33 tỉnh, thành phố; phần mềm tài chính vi mô mFinance; cổng giao tiếp sGateway với NHNN; đối tác của Temenos trong nâng cấp Core Banking T24 cho GPBank.

Giải pháp phần mềm eFund được cấu thành từ 9 phân hệ chức năng: Quản lý khách hàng và thành viên, Kế toán, Tín dụng, Huy động vốn, Tiền gửi TCTD khác, Tiền vay TCTD khác, Ngân quỹ, Báo cáo (gồm hơn 200 báo cáo quản trị) và SMSBanking. Phân hệ SMSBanking hoạt động liên tục 24/7 thông qua kết nối tổng đài tin nhắn với các mạng viễn thông Viettel, Vinaphone, Mobifone. Tác giả đã mô hình hóa và phân tích 8 Use Case nghiệp vụ chính kèm biểu đồ cộng tác:

STT Tên Use Case Tác tử (Actor) Bảng dữ liệu / Thực thể tương tác chính Mục đích nghiệp vụ
1 Hệ thống nhận tin nhắn Khách hàng CuPhap, ĐK_GiaoDich, SMSIn Nhận tin từ tổng đài, phân tích cú pháp, lưu vào SMSIn
2 Hệ thống gửi tin nhắn Hệ thống SMSOut, SMSIn, TK_GiaoDich Quét tin nhắn cần gửi, kiểm tra tính hợp lệ và gửi tin
3 Truy vấn số dư tài khoản Hệ thống SMSIn, TK_GiaoDich, TinNhanMau, SMSOut Cung cấp thông tin số dư tiền gửi, tiết kiệm
4 Xem lãi suất Hệ thống SMSIn, LaiSuat, TinNhanMau, SMSOut Cung cấp thông tin lãi suất VND hiện hành
5 Tra cứu hạn mức tín dụng Hệ thống SMSIn, TT_HanMuc, TinNhanMau, SMSOut Trả về hạn mức vay khả dụng của khách hàng
6 Xem 5 giao dịch gần nhất Hệ thống SMSIn, TT_GiaoDich, TinNhanMau, SMSOut Truy xuất thông tin chi tiết của 5 giao dịch phát sinh gần nhất
7 Thông báo hạn nộp lãi Hệ thống HopDongTinDung, DS_KhachHang, TinNhanMau, SMSOut Tự động quét và báo nợ trước hạn 5 ngày
8 Thông báo biến động số dư Hệ thống TT_GiaoDich, TK_KhachHang, TinNhanMau, SMSOut Gửi tin nhắn tức thời khi có giao dịch thay đổi số dư

Khảo sát hiện trạng chỉ ra phân hệ còn thiếu vắng các tính năng thanh toán, giao dịch do rào cản an toàn thông tin, dẫn tới việc xác định bài toán nâng cấp quy trình chuyển khoản có bảo mật bằng OTP.

Chương 2: Cơ sở phương pháp luận về mật khẩu xác thực một lần OTP

Chương 2 phân tích chuyên sâu lý thuyết mật mã học ứng dụng trong xác thực:

  • Tổng quan OTP: Làm rõ nguyên lý Vernam Cipher, ưu điểm bảo mật hai yếu tố (2FA) và nhược điểm phụ thuộc thiết bị/mạng viễn thông (rủi ro đánh cắp SIM, nghẽn mạng SMS). Trình bày các mô hình ứng dụng gồm xác thực giao dịch (dùng phần cứng Token theo thời gian thực hoặc mô hình phi Token gửi OTP qua SMS/Email), đăng nhập một lần (Single Sign On - SSO) và giao thức S/Key.
  • Hàm băm mật mã và HMAC: Phân tích thuật toán SHA-1 (cấu trúc 80 bước, 4 hàm logic, bộ đệm 160 bit gồm 5 thanh ghi $A, B, C, D, E$) và lý do bị loại bỏ sau năm 2010 do xuất hiện các lỗ hổng va chạm. Trình bày chi tiết thuật toán SHA-256 xử lý khối 512 bit thông qua 64 vòng lặp trên 8 thanh ghi trạng thái ($a, b, c, d, e, f, g, h$) kết hợp các hàm phi tuyến $Ch, Maj, \Sigma_0, \Sigma_1, \sigma_0, \sigma_1$. Phân tích cấu trúc HMAC nhằm ngăn chặn các tấn công mở rộng chiều dài (length extension attack).
  • So sánh các phương pháp sinh OTP:
Tiêu chí HOTP (RFC 4226) TOTP (RFC 6238) COTP (Challenge-Response)
Yếu tố biến đổi Bộ đếm sự kiện ($C$) Nhãn thời gian thực ($TC$) Chuỗi thử thách ngẫu nhiên ($Challenge$)
Cơ chế tính toán $Truncate(HMAC(K, C)) \pmod{10^d}$ $Truncate(HMAC(K, TC)) \pmod{10^d}$ Tính toán trên cặp $(K, Challenge)$
Khoảng thời gian hiệu lực Cho đến khi có sự kiện tiếp theo Cố định theo chu kỳ bước thời gian ($TS = 30$s) Theo từng phiên yêu cầu xác thực
Yêu cầu hệ thống Đồng bộ trạng thái bộ đếm giữa 2 đầu Đồng bộ đồng hồ thời gian thực (RTC) Kênh truyền hỗ trợ trao đổi 2 chiều
Ứng dụng điển hình Thẻ bảo mật Token sự kiện, phần mềm Ứng dụng xác thực phần mềm, SMS Banking Hệ thống xác thực đăng nhập máy trạm

Chương 3: Triển khai chức năng chuyển khoản có sử dụng mật khẩu xác thực một lần OTP

Chương 3 xây dựng thiết kế chi tiết cho chức năng chuyển khoản bổ sung trong phân hệ SMS Banking:

  • Thiết kế Use Case chuyển khoản: Mô tả quy trình nhận yêu cầu chuyển khoản từ khách hàng qua cú pháp tin nhắn, kiểm tra số dư và tài khoản thụ hưởng, khởi tạo phiên giao dịch chờ xác thực, sinh và gửi mã OTP về số điện thoại đăng ký, tiếp nhận mã xác thực từ khách hàng để phê duyệt ghi nợ/ghi có.
  • Mô hình hóa tương tác: Xây dựng Biểu đồ tuần tự (Sequence Diagram) và Biểu đồ cộng tác (Collaboration Diagram) chi tiết hóa quá trình tương tác giữa các thực thể: Khách hàng, Hệ thống nhận/gửi tin nhắn, Module xử lý giao dịch, Module sinh/kiểm tra OTP và Cơ sở dữ liệu tài khoản.

Thiết kế và triển khai

Hệ thống thử nghiệm được thiết kế và hiện thực hóa dựa trên các thông số kỹ thuật được xác định trong văn bản:

  • Mô hình kiến trúc: Kiến trúc Client/Server.
    • Phía Server: Đóng vai trò máy chủ trung tâm của tổ chức tín dụng, chịu trách nhiệm tiếp nhận thông tin khởi tạo, quản lý khóa bí mật $K$, sinh mã kích hoạt ban đầu, sinh mã OTP đồng bộ và thực hiện hàm đối soát xác thực mã do Client gửi lên.
    • Phía Client: Đóng vai trò máy trạm hoặc thiết bị đầu cuối của người dùng, thực hiện tiếp nhận mã kích hoạt, lưu trữ thông số đồng bộ thời gian và sinh mã OTP theo thời gian thực tương ứng để thực hiện giao dịch.
  • Môi trường phát triển: Microsoft Visual Studio 2010.
  • Thuật toán triển khai: TOTP dựa trên hàm băm chuẩn SHA-256 (256-bit), bước thời gian $TS = 30$ giây, định dạng mã xác thực trả về gồm 6 chữ số thập phân.
  • Kết quả giao diện và kiểm thử chương trình:
    • Giao diện Server sinh mã kích hoạt: Thực hiện tạo chuỗi mã kích hoạt ban đầu kèm khóa bí mật cấp phát cho từng tài khoản.
    • Giao diện Client nhận mã kích hoạt: Cho phép máy khách cấu hình và lưu trữ thông tin xác thực ban đầu nhận từ máy chủ.
    • Giao diện Server sinh và đối chiếu OTP: Hiển thị chu kỳ thời gian thực, chuỗi mã OTP tính toán tại máy chủ và kết quả kiểm tra tính hợp lệ của mã xác thực.
    • Giao diện Client sinh mã OTP: Giao diện tính toán và hiển thị chuỗi 6 chữ số OTP cập nhật tự động sau mỗi 30 giây phục vụ người dùng nhập liệu xác nhận chuyển khoản.

Kết quả và đóng góp

Khóa luận đạt được các kết quả cụ thể:

  • Phân tích chi tiết quy trình nghiệp vụ và hệ thống hóa 8 lược đồ Use Case tương tác của phân hệ SMS Banking trong giải pháp eFund đang vận hành tại hơn 400 QTDND.
  • Thiết kế hoàn chỉnh giải pháp nghiệp vụ cho chức năng chuyển khoản qua tin nhắn SMS tích hợp xác thực hai yếu tố sử dụng OTP, khắc phục hạn chế thiếu tính năng giao dịch chủ động của phân hệ cũ.
  • Xây dựng thành công ứng dụng thử nghiệm mô phỏng theo mô hình Client/Server trên Visual Studio 2010, hiện thực hóa thuật toán TOTP sử dụng hàm băm an toàn SHA-256 với chu kỳ cập nhật mã 30 giây.
  • Đóng góp về mặt giải pháp kỹ thuật giúp Công ty Cổ phần NGV có cơ sở khoa học để nâng cấp tính năng cho giải pháp eFund, gia tăng tỷ lệ tiếp cận và sử dụng dịch vụ SMS Banking tại các QTDND từ mức 25% hiện tại.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế: Chương trình phần mềm mới dừng lại ở quy mô ứng dụng mô phỏng độc lập theo kiến trúc Client/Server nhằm kiểm chứng thuật toán sinh và xác thực mã OTP, chưa được nhúng trực tiếp vào mã nguồn phân hệ SMS Banking thực tế của eFund. Quá trình truyền nhận OTP qua mạng viễn thông còn tiềm ẩn độ trễ tin nhắn SMS hoặc nguy cơ lộ lọt trong trường hợp khách hàng bị chiếm đoạt thẻ SIM.
  • Hướng nghiên cứu tiếp: Tiếp tục tích hợp module sinh/xác thực OTP vào hệ thống lõi eFund để thử nghiệm tải thực tế; nghiên cứu giải pháp xử lý sai lệch đồng hồ (clock drift) giữa máy chủ và thiết bị client khi mạng bị trễ; mở rộng phát triển ứng dụng sinh mã OTP chuyên dụng trên điện thoại thông minh (Soft Token / Mobile Banking) để giảm thiểu chi phí cước viễn thông SMS.

Giá trị tham khảo

Tài liệu là nguồn tham khảo phù hợp cho sinh viên, học viên ngành Hệ thống thông tin quản lý, Công nghệ thông tin và Ngân hàng số khi nghiên cứu về:

  • Cấu trúc chức năng nghiệp vụ của một hệ thống phần mềm quản trị Quỹ tín dụng nhân dân (eFund) và các quy chuẩn báo cáo theo công văn của Ngân hàng Nhà nước.
  • Kỹ thuật mô hình hóa quy trình hệ thống xử lý tin nhắn ngân hàng (SMS Banking) bằng lược đồ Use Case và biểu đồ cộng tác.
  • Nguyên lý toán học và phương pháp cài đặt thực tế của các giải thuật hàm băm (SHA-1, SHA-256), chuẩn xác thực mã HMAC và các thuật toán OTP tiêu chuẩn (HOTP RFC 4226, TOTP RFC 6238).

Câu hỏi thường gặp

1. Tỷ lệ các Quỹ tín dụng nhân dân đang sử dụng phân hệ SMS Banking trong eFund là bao nhiêu và lý do tỷ lệ này chưa cao?
Chỉ khoảng 1/4 (25%) số Quỹ tín dụng nhân dân yêu cầu tích hợp phân hệ SMS Banking. Lý do là hệ thống hiện tại mới chỉ hỗ trợ các dịch vụ cơ bản như tra cứu số dư, xem lãi suất, xem 5 giao dịch gần nhất, tra cứu hạn mức tín dụng và gửi tin thông báo biến động, chưa đáp ứng được chức năng giao dịch chuyển khoản trực tiếp do chưa có cơ chế bảo mật xác thực mạnh.

2. Khóa luận sử dụng thuật toán hàm băm và tiêu chuẩn sinh OTP nào cho chương trình thử nghiệm?
Khóa luận sử dụng thuật toán băm an toàn SHA-256 (thay thế cho SHA-1 vốn đã bộc lộ điểm yếu bảo mật từ sau năm 2010) kết hợp với tiêu chuẩn sinh mật khẩu theo thời gian TOTP (RFC 6238) với chu kỳ bước thời gian 30 giây để tạo chuỗi số OTP xác thực 6 chữ số.

3. Khác biệt cơ bản giữa hai thuật toán HOTP (RFC 4226) và TOTP (RFC 6238) được trình bày trong tài liệu là gì?
HOTP tạo mã OTP dựa trên một bộ đếm số lần giao dịch gia tăng tuần tự ($C$) kết hợp khóa bí mật $K$; mã OTP có hiệu lực cho đến khi phát sinh sự kiện giao dịch mới. TOTP kế thừa cấu trúc của HOTP nhưng thay thế bộ đếm $C$ bằng nhãn thời gian thực ($TC$), khiến mã OTP tự động thay đổi và hết hạn sau một khoảng thời gian cố định (mặc định là 30 giây).

4. Phân hệ SMS Banking của eFund gửi tin nhắn thông báo hạn nộp lãi cho khách hàng trước bao nhiêu ngày?
Theo đặc tả Use Case "Xử lý thông báo hạn nộp lãi", hệ thống tự động truy vấn bảng dữ liệu HopDongTinDung để tìm các khách hàng có hợp đồng đến hạn nộp lãi vào thời điểm sau ngày hiện tại 5 ngày, từ đó truy xuất số điện thoại và gửi tin nhắn cảnh báo chủ động.


Kết luận

Khóa luận tốt nghiệp của tác giả Phan Thị Nguyệt đã giải quyết bài toán cấp thiết về nâng cao tính năng và độ an toàn cho phân hệ SMS Banking thuộc phần mềm eFund của Công ty Cổ phần NGV. Đề tài đã hệ thống hóa đầy đủ cơ sở lý thuyết về hàm băm mật mã SHA-256, chuẩn HMAC và các phương pháp sinh OTP (HOTP, TOTP, COTP). Trên cơ sở đó, tác giả đã thiết kế hoàn chỉnh quy trình chuyển khoản có xác thực hai yếu tố và xây dựng thành công phần mềm mô phỏng Client/Server tạo và kiểm tra mã OTP trên nền tảng Visual Studio 2010, tạo tiền đề kỹ thuật vững chắc cho việc triển khai thực tế trên hệ thống eFund.