Biểu đồ hoạt động nạp tiền vào ví điện tử

Một phần của tài liệu BÁO cáo bài tập lớn tìm HIỂU về hệ THỐNG ví THANH TOÁN điện tử (Trang 38 - 63)

Luồng hoạt động:

Bước 1: Đăng nhập và lựa chọn nạp tiền vào Tài khoản ví điện tử của Tổ chức trung gian thanh toán

 Khách hàng đăng nhập vào ứng dụng của Tổ chức trung gian thanh tốn;.  Lựa chọn tính năng nạp tiền vào Tài khoản ví điện tử của Tổ chức trung gian

thanh tốn.

Bước 2: Ví hiển thị màn hình thơng tin nạp tiền vào ví điện tử. Lựa chọn ngân hàng đã liên kết để nạp tiền vào Tài khoản ví điện tử của Tổ chức trung gian thanh tốn.

Bước 3: Nhập thơng tin nạp tiền vào Tài khoản ví điện tử của Tổ chức trung gian thanh toán

 Khách hàng nhập số tiền cần nạp vào Tài khoản ví điện tử của Tổ chức trung gian thanh toán.

 Nhập mật khẩu thanh toán (PIN hoặc xác thực sinh trắc học của khách hàng).

 Thông tin xác thực này lưu tại hệ thống của Tổ chức trung gian thanh tốn. Bước 4: gửi thơng tin nạp tiền: Số tiền cần nạp

 Mật khẩu thanh toán (PIN hoặc xác thực sinh trắc học của khách hàng) Trước khi gửi thơng tin thì xác thực PIN hoặc xác thực sinh trắc học của khách hàng: Mật khẩu được coi là hợp lệ là mật khẩu khách hàng nhập trùng với mật khẩu khách hàng thiết lập và đăng ký với Tổ chức trung gian thanh tốn đang có hiệu lực tại thời điểm thực hiện xác thực mật khẩu.

 Nếu mật khẩu của khách hàng không hợp lệ, ứng dụng của Tổ chức trung gian thanh tốn thơng báo lỗi tới khách hàng.

 Nếu số tiền khách hàng nhập vượt quá số tiền quy định 1 lần nạp hoặc quá số tiền chuyển trong 1 ngày, ứng dụng của Tổ chức trung gian thanh tốn thơng báo lỗi tới khách hàng;

 Nếu Mật khẩu của khách hàng hợp lệ, Hệ thống của Tổ chức trung gian thanh tốn chuyển thơng tin tới ngân hàng. Thông tin gửi tới ngân hàng bao gồm: Thông tin về liên kết thẻ (Mã ID duy nhất đã liên kết giữa Tài khoản ví điện tử của Tổ chức trung gian thanh toán với ngân hàng), Số tiền cần nạp tiền vào Tài khoản ví điện tử của Tổ chức trung gian thanh tốn.

Bước 5: Xác thực thơng tin khách hàng:

 Nếu mã ID duy nhất của khách hàng không tồn tại, ngân hàng trả thông báo lỗi gửi tới Tổ chức trung gian thanh toán, Tổ chức trung gian thanh tốn thơng báo tới Khách hang.

 Nếu trạng thái liên kết là InActive (ví gắn với thẻ ngân hàng ở trạng thái InActive), ứng dụng của Tổ chức trung gian thanh tốn hiển thị thơng báo lỗi tới khách hang.

 Nếu số tiền khách hàng nhập vượt quá hạn mức tối đa hoặc thấp hơn số tiền tối thiểu quy định 1 lần nạp hoặc quá số tiền chuyển trong 1 ngày, ngân hàng trả về kết quả lỗi cho Tổ chức trung gian thanh toán , Tổ chức trung gian thanh tốn thơng báo lỗi tới khách hang.

 Nếu thông tin hợp lệ

o Gửi thông tin sang Tổ chức trung gian thanh toán , ứng dụng của Tổ chức trung gian thanh toán yêu cầu khách hàng nhập mã OTP.

Bước 7: Khách hàng nhập mã OTP:  Nhập mã OTP mà ngân hàng gửi.

 Xác nhận thanh toán trên ứng dụng của Tổ chức trung gian thanh toán.

 Tổ chức trung gian thanh tốn chuyển tiếp thơng tin sang ngân hàng để xác thực OTP

Bước 8 : Xác thực mã OTP. Bước 9 : Hạch toán.

Bước 10: Tổ chức trung gian thanh tốn cộng tiền vào Tài khoản ví điện tử cho khác hàng:

 Nếu Tổ chức trung gian thanh toán cộng tiền thành công, thông báo tới khách hàng.

 Nếu Tổ chức trung gian thanh tốn cộng tiền khơng thành cơng: o Gửi thông báo lỗi tới khách hàng.

o Gửi thông báo lỗi cộng tiền sang ngân hàng, ngân hàng thực hiện hoàn tiền lại cho khách:

2.8. Cơ chế bảo vệ app ví điện tử

SSL Pinning - SSL được pin sẵn vào trong Application

Đầu tiên phải nói về Secure Web Connections:

Khi Client bắt đầu 1 Secure session với Server, có 3 điều hai bên phải thống nhất: - How keys be exchange - Làm sao để trao đổi các key cho nhau?

- How will data be encrypted - Dữ liệu được mã hóa theo cách nào ?

- How will messages be marked as authentic - Như thế nào thì messages được đánh dấu là xác thực ?

Ví dụ Server có thể quyết định rằng sẽ sử dụng RSA để trao đổi keys, dùng AES 256 để encrypt data và SHA-1 để sign messages.

Nếu Client có support các loại trên, nó sẽ request một certificate chain từ Server, khi client đã xác nhận certificate chain, public key sẽ được trích xuất từ certificate.

Theo mặc định, việc triển khai SSL được sử dụng trong các App sẽ tin tưởng bất kỳ Server nào có certificate được tin cậy bởi OS ( như hình trên ). Đó là một danh sách các CA ( certificate authorities ) có sẵn trong OS.

Đây là lúc SSL Pinning phát huy tác dụng. Developers có thể compile (biên dịch) public key vào trong application code, điều này về cơ bản là pinned key vào ứng dụng. Khi máy client nhận được public key từ Server, nó sẽ so sánh key này với key được pinned trong ứng dụng. Nếu key đúng, sẽ khởi tạo sessions.

Hiện nay có 3 loại SSL Pinning: - Certificate Pinning

- Public Key Pinning ( Là loại được đề cập ở phía trên ) - SPKI Pinning

Certificate Pinning: Đây là phương pháp pinning tồn bộ certificate thay vì chỉ pinning public key và cũng là phương pháp dễ thực hiện nhất. Vậy sẽ ra sao khi certificate expires ( hết hạn ) ? Client sẽ phải update application với certificate mới trước khi certificate trên Server được update. Vì vậy đơi khi Public key pinning là phương thức được ưa chuộng hơn.

Public key pinning: Linh hoạt hơn nhưng phức tạp hơn một chút do cần các bước bổ sung để trích xuất public key từ certificate.

SPKI Pinning ( Subject Public Key Information ): là phương thức pinning mới nhất, hash của public key và meta-data được pin vào trong ứng dụng.

Nếu ứng dụng không sử dụng SSL Pinning, sẽ rất dễ bị tấn công Man-in-the-

Middle.

Như vậy SSL Pinning giúp Developers có thêm một lớp bảo mật bổ sung trong ứng dụng của họ và rất dễ thực hiện với các thư viện như AF Networking ( với iOS

Lý do phải bypass cái này vì chúng ta sẽ dựng proxy server để chặn bắt request từ App gửi lên Server, mà Server và App lại chỉ nói chuyện khi có đúng Cert mà thơi...

Anti VM - Khơng cho phép cài đặt / sử dụng trên thiết bị ảo hóa.

Đơn giản thì đây là cách thức để Application phát hiện thiết bị có phải là thiết bị ảo hóa ( emulator ) hay khơng, nếu có thì các tính năng sẽ hạn chế hoặc khơng cho phép cài đặt.

Tại sao việc pentest Application trên emulator vẫn được sử dụng ? Đơn giản vì nó tiện hơn, mọi thiết bị, mọi phiên bản android...chỉ cần chọn và install, sau 5 phút bạn đã có ngay 1 thiết bị android emulator với đầy đủ chức năng. Ứng dụng tạo emulator device được biết đến và sử dụng phổ biến hàng đầu là Genymotion.

Cách Application detect ra thiết bị là emulator cũng mn hình vạn trạng. Đây là một ví dụ:

Code tường minh như thế này thì chẳng có lý do gì khơng bypass được cả, có thể modify string như sau:

Như vậy là function trên đã "vơ hại" và application có thể cài đặt được trên emulator.

Root Detection Techniques

Nếu việc Anti VM khơng có vẻ gì là đau đớn lắm vì có thể dễ dàng dùng thiết bị thật thay thế , thì việc "anti rooted device" lại là một câu chuyện khác. Vì dù là thiết bị thật hay emulator, tất cả đều phải rooted, do có liên quan tới rất nhiều vấn đề khi pentest.

Đây là ví dụ về một đoạn script để detect Root theo 3 cách khác nhau. Đương nhiên vẫn cịn có những cách khác và những binary khác hỗ trợ cho việc này. /** @author Kevin Kowalewski */

public class RootUtil {

public static boolean isDeviceRooted() {

return checkRootMethod1() || checkRootMethod2() || checkRootMethod3();

}

private static boolean checkRootMethod1() { String buildTags = android.os.Build.TAGS;

return buildTags != null && buildTags.contains("test-keys"); }

private static boolean checkRootMethod2() {

String[] paths = { "/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su",

"/data/local/bin/su", "/system/sd/xbin/su",

"/system/bin/failsafe/su", "/data/local/su", "/su/bin/su"}; for (String path : paths) {

if (new File(path).exists()) return true; }

return false; }

Process process = null; try {

process = Runtime.getRuntime().exec(new String[] { "/system/xbin/which", "su" });

BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));

if (in.readLine() != null) return true; return false;

} catch (Throwable t) { return false;

} finally {

if (process != null) process.destroy(); }

} }

Khi tìm hiểu Mobile Device Management (MDM), có rất nhiều cách để detecting thiết bị Android đã root. Những phương thức khá giống nhau và thường liên quan tới việc tìm kiếm package hoặc file cụ thể nào đó, hoặc quyền thư mục và chạy các lệnh nhất định.

Thơng qua việc review source code, pentester có thể modify lại như ví dụ ở trên và nhiều hướng dẫn khác để bypass việc detect root, kể cả khi Safetynet - API chính chủ Google, chuyên để chống người dùng đã root, mở khoá bootloader hoặc cài bản custom ROM sử dụng Android Pay được sử dụng.

Code Obfuscation

Đây là kỹ thuật được thêm vào khi sản phẩm chuẩn bị được publish. Nhằm giữ cho source code không thể đọc hiểu được bởi bên thứ ba. Một ví dụ cơ bản về việc Code Obfuscation của một ứng dụng

Đây là một kỹ thuật cần thiết và quan trọng. Tuy nhiên việc Obfuscation Code có ảnh hưởng đến performance của App và 1 số vấn đề liên quan. Thành ra ở ví dụ thứ 2 kia, dù đây là application in-house của một công ty chuyên về Software nhưng việc Obfuscation Code khơng được áp dụng.

ViettelPay

Tổng quan

ViettelPay là gì?

ViettelPay là ứng dụng thanh toán di động được phát triển bởi Viettel, giúp

cho các thuê bao khi đăng ký dịch vụ có thể thực hiện nạp tiền, chuyển tiền, thanh toán tiền điện nước, mua vé máy bay, tàu hỏa,... một cách nhanh chóng và an tồn. Khách hàng có thể đăng ký sử dụng dịch vụ ViettelPay dù đang sử dụng thuê bao di động của bất kỳ nhà mạng nào tại Việt Nam.

Các tính năng nổi bật của ViettelPay

Thanh tốn ngân hàng

+ Miễn phí 100 triệu đồng/tháng hoặc 30 giao dịch/tháng với các giao dịch chuyển khoản như chuyển tiền qua số tài khoản, số thẻ ngân hàng, số điện thoại (tùy vào điều kiện nào đến trước).

Nếu vượt qua 1 trong 2 điều kiện, mức phí được áp dụng theo cơng thức 0,1%*Giá trị

GD. Để xem thêm các biểu phí giao dịch khác.

+ Nhận được tiền mặt sau 2 giờ chuyển tiền trên tồn quốc.

+ Dễ dàng nạp, rút tiền khi có gần 200.000 điểm giao dịch Viettel trên tồn quốc.

Thanh tốn dịch vụ

+ Hỗ trợ thanh tốn hóa đơn tiền điện trên 63 Tỉnh/Thành phố, tiền nước 17 Tỉnh/Thành phố.

+ Thanh toán bảo hiểm, giáo dục, chi phí tài chính (Home Credit , FE Credit ,...)

Dịch vụ khác

+ Thanh toán các dịch vụ, mua sắm bằng mã QR Code.

+ Hỗ trợ đặt phòng khách sạn, mua vé xem phim, mua vé máy bay, tàu hỏa,...

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

SMS OTP

https://abenla.com/dich-vu-sms-otp-la-gi-tai-sao-can-phai-trien-khai-sms-otp/

Tổng quan

Một công nghệ phổ biến được sử dụng để gửi OTP là nhắn tin văn bản. Bởi vì tin nhắn văn bản là một kênh giao tiếp phổ biến, có sẵn trực tiếp trên hầu hết các thiết bị di động và thông qua chuyển đổi văn bản thành giọng nói, cho bất kỳ điện thoại di động hoặc điện thoại cố định nào, nên nhắn tin văn bản có tiềm năng lớn để tiếp cận tất cả người tiêu dùng với tổng chi phí thấp thực hiện.

SMS OTP (Short Message Service One Time Password) là tin nhắn từ hệ thống gửi về điện thoại mã xác thực, nó là một dãy số hoặc một chuỗi kết hợp cả số với ký tự. Nhưng khác mật khẩu thông thường, mã xác thực OTP được tạo ra ngẫu nhiên không phải từ người dùng, chỉ sử dụng được một lần và sau đó khơng cịn tác dụng. Thậm chí, thời hạn của mật khẩu OTP thường rất ngắn, có thể chỉ sau 30 giây, 60 giây hay một vài phút, nó sẽ vơ tác dụng và lại được thay thế bằng một mã mới.

Dịch vụ SMS OTP được sử dụng nhiều và rất phổ biến. Để chuyển tiền hay thực hiện một giao dịch trực tuyến, người dùng không chỉ dùng tài khoản và mật khẩu để đăng nhập mà còn cần nhập đúng mã xác thực OTP được gửi bằng hình thức SMS mới hồn tất được giao dịch.

Dịch vụ SMS OTP là cách xác thực hai yếu tố bổ sung thêm một lớp bảo mật cho thủ tục đăng nhập, cải thiện đáng kể tính bảo mật của trang web, ứng dụng hoặc phần mềm. Ngay cả khi thông tin email và mật khẩu được truy cập, dữ liệu trực tuyến sẽ vẫn được SMS OTP bảo vệ.

Các thuật toán tạo OTP thường sử dụng tính ngẫu nhiên hoặc ngẫu nhiên giả để tạo khóa chia sẻ hoặc hạt giống và các hàm băm mật mã, có thể được sử dụng để lấy giá trị nhưng rất khó để đảo ngược và do đó kẻ tấn cơng khó lấy được dữ liệu được sử dụng cho băm. Điều này là cần thiết vì nếu khơng, sẽ dễ dàng dự đoán các OTP trong tương lai bằng cách quan sát các OTP trước đó.

Ưu điểm quan trọng nhất của OTP là trái ngược với mật khẩu tĩnh, chúng không dễ bị tấn công phát lại. Điều này có nghĩa là một kẻ xâm nhập tiềm năng quản lý để ghi lại một OTP đã được sử dụng để đăng nhập vào một dịch vụ hoặc để thực hiện một giao dịch sẽ khơng thể sử dụng nó, vì nó sẽ khơng cịn hợp lệ. Ưu điểm chính thứ hai là người dùng sử dụng cùng một mật khẩu (hoặc tương tự) cho nhiều hệ thống sẽ không dễ bị tấn công trên tất cả chúng, nếu mật khẩu của một trong những hệ thống này bị kẻ tấn công lấy được. Một số hệ thống OTP cũng nhằm mục đích đảm bảo rằng một phiên khơng thể dễ dàng bị chặn hoặc bị mạo danh nếu không biết về dữ liệu khơng thể đốn trước được tạo ra trong phiên trước đó, do đó làm giảm bề mặt tấn cơng hơn nữa.

Thuật tốn tạo OTP

Các thuật tốn OTP cụ thể khác nhau rất nhiều về chi tiết của chúng. Các cách tiếp cận khác nhau để tạo OTP bao gồm:

- Dựa trên đồng bộ hóa thời gian giữa máy chủ xác thực và máy khách cung cấp mật khẩu (OTP chỉ có hiệu lực trong một khoảng thời gian ngắn)

- Sử dụng một thuật toán toán học để tạo mật khẩu mới dựa trên mật khẩu trước đó (OTP thực sự là một chuỗi và phải được sử dụng theo thứ tự được xác định trước).

- Sử dụng một thuật tốn tốn học trong đó mật khẩu mới dựa trên một thử thách (ví dụ: một số ngẫu nhiên do máy chủ xác thực hoặc chi tiết giao dịch chọn) và / hoặc bộ đếm.

Luồng hoạt động

1. Người dùng thực hiện gửi credentials đến server

2. Server thực hiện tạo OTP, lưu trữ vào database và gửi về cho phía người dùng.

3. Người dùng nhập OTP vừa nhận từ tin nhắn vào ứng dụng và gửi lên server.

4. Server thực hiện check OTP và xử lí yêu cầu của người dùng.

SMS OTP trong ví điện tử Viettelpay

USSD

Khái niệm USSD

USSD là viết tắt của Unstructured Supplementary Service Data - Dữ liệu dịch vụ bổ sung khơng có cấu trúc, đơi khi được gọi là 'mã nhanh' hoặc 'mã tính năng'. Hiểu đơn giản thì nó là một giao thức nhắn tin, tương tự như SMS mà mọi người sử dụng hàng ngày để gửi và nhận tin nhắn nhưng bị giới hạn ở 182 ký tự.

Cũng giống như SMS, USSD ra đời trước thời đại của smartphone, khi điện thoại cần một phương thức tương tác với nhau mà không cần đến các ứng dụng siêu hiện đại ngày nay.

Và thay vì truyền tải những thơng tin giữa các đối tượng người dùng thì USSD có

Một phần của tài liệu BÁO cáo bài tập lớn tìm HIỂU về hệ THỐNG ví THANH TOÁN điện tử (Trang 38 - 63)

Tải bản đầy đủ (DOCX)

(63 trang)
w