Làm thế nào chúng tôi bảo vệ ứng dụng khỏi các mối đe dọa

Chúng tôi tập trung vào các lĩnh vực chính sau đây khi triển khai bảo mật theo chuẩn ngân hàng:

Xác thực hai yếu tố cho người dùng

Chúng tôi cần đảm bảo chỉ chủ sở hữu của ví mới có quyền truy cập vào dữ liệu nhạy cảm. Xác thực hai yếu tố là một kỹ thuật phổ biến rất được ưa chuộng. Bạn chỉ cần nhập mã ngắn đặc biệt này kèm theo mật khẩu. Mã ngắn này tồn tại trong một khoảng thời gian rất ngắn và chỉ có giá trị trong vài phút. Người dùng nhận mã thông qua tin nhắn SMS hoặc ứng dụng xác thực đặc biệt. Chúng tôi xây dựng ứng dụng đặc biệt này và đặt tên là ENum (tương tự Google Authenticator).

Chúng tôi cũng cần đảm bảo người dùng nhận được thông báo ưu tiên cao khi số điện thoại, mật khẩu, tên hoặc thiết bị của họ bị thay đổi. Ngay cả khi một hacker thực hiện một hành động nào đó, người dùng sẽ biết ngay lập tức.

Một mối đe dọa bảo mật khác mà chúng tôi cần bảo vệ ứng dụng khỏi là cuộc tấn công chiếm phiên. Khi người dùng đã đăng nhập và thực hiện các cuộc gọi API, mã thông báo truy cập vẫn hoạt động. Tuy nhiên, sau 10 phút không hoạt động, mã thông báo sẽ hết hạn. Điều này làm cho việc tấn công mã thông báo để truy cập trái phép vào phía máy chủ trở nên khó khăn.

Trong các phiên bản sau đó, chúng tôi đã thêm xác thực bằng dấu ngón tay cho ứng dụng iOS.

Mã hóa lưu trữ dữ liệu

Đối với iOS, nơi an toàn duy nhất để lưu trữ bất kỳ loại mã thông báo nào là bộ nhớ khóa của Apple, một lưu trữ đặc biệt với các giá trị khóa-giá trị. Hiện tại, không có cách nào để xâm nhập nó, ít nhất là cho đến nay. Tuy nhiên, tiếc thay, chúng tôi không thể lưu trữ một lượng lớn dữ liệu trong khóa-giá trị. Chúng tôi đã sử dụng CoreData với cơ sở dữ liệu lưu trữ SQLite.

iOS là hệ điều hành được bảo vệ rất kỹ. Mỗi ứng dụng hoạt động trong ít nhất một vùng đệm riêng của nó. Ứng dụng không thể đọc dữ liệu của các ứng dụng khác. Tuy nhiên, nếu bạn kết nối thiết bị iOS của bạn với máy tính, bạn có thể truy cập vào dữ liệu không được bảo vệ trong hệ thống tệp bằng cách sử dụng giao thức kết nối iTunes.

Giao thức này là riêng tư, nhưng đã bị đảo ngược một thời gian dài. Rất nhiều công cụ đã được hacker tạo ra để giúp truy cập dữ liệu người dùng dễ dàng. Để ngăn chặn điều đó, chúng tôi đã mã hóa cơ sở dữ liệu bằng khuôn khổ mã hóa Apple. Tuy nhiên, vì một số điểm yếu của khuôn khổ này, chúng tôi cũng đã mã hóa dữ liệu nội bộ trong cơ sở dữ liệu bằng cách lưu trữ hai cấp mã hóa dữ liệu: cấp hệ thống và cấp ứng dụng.

Bảo mật mạng

Bảo mật truyền dữ liệu là một lĩnh vực rất lớn trong bảo mật công nghệ thông tin. Để duy trì mức độ bảo mật cao nhất, chúng tôi tuân thủ hai nguyên tắc đơn giản sau:

  • Luôn theo dõi những cách tấn công gần đây nhất vào giao thức mạng.
  • Thêm cách chặn ứng dụng nếu giao thức mạng chúng tôi đang sử dụng bị tấn công.

Lúc đó, chúng tôi sử dụng giao thức SSL với phiên bản TLS 1.1. Giao thức này bảo vệ tất cả dữ liệu trên mạng với chứng chỉ SSL. Tuy nhiên, điều đó chưa đủ. Nó không bảo vệ khỏi cuộc tấn công đơn giản từ giữa hai bên (MITM).

Một kẻ tấn công có thể flash router bằng phần mềm MITM và đánh cắp dữ liệu (một cuộc tấn công lớn vào các thiết bị định tuyến xảy ra một năm sau phiên bản phát hành đầu tiên của chúng tôi). Kỹ thuật này được sử dụng phổ biến và thậm chí có nhiều nền tảng phần cứng trên thị trường để thực hiện các cuộc tấn công MITM phức tạp.

Để bảo vệ khỏi cuộc tấn công MITM, chúng tôi đã sử dụng việc ghim chứng chỉ. Ý tưởng của phương pháp này là mã hóa chứng chỉ SSL của máy chủ cơ sở dữ liệu vào ứng dụng để từ chối tất cả các máy chủ sử dụng chứng chỉ khác nhau. Ghim chứng chỉ đảm bảo rằng ứng dụng iOS đang trò chuyện với máy chủ đúng.

Biện pháp bảo mật khác mà chúng tôi đã thực hiện là sử dụng máy chủ DNS tùy chỉnh bên cạnh máy chủ hệ thống để bảo vệ khỏi các cuộc tấn công DNS. Nếu hệ thống phát hiện rằng máy chủ đã bị tấn công (dù là tùy chỉnh hoặc công cộng), nó sẽ chặn thông tin liên lạc.

Lúc đó, điều này có vẻ khá mất tỉnh táo. Nhưng sau một vài năm, TLS 1.1 đã bị đánh cắp. WebMoney đã sẵn sàng cho điều đó. Tất cả các ứng dụng đã bị chặn từ xa. Ba ngày sau đó, chúng tôi phát hành một phiên bản mới với TLS 1.2. Hiện nay, ứng dụng triển khai TLS 1.3.

Đây không phải là tất cả

“Mọi thứ, được tạo ra bởi con người, đều có thể bị đánh cắp,” đó là quy tắc số một trong an ninh thông tin. Chúng tôi đã triển khai một loạt các kỹ thuật bảo mật khác, bao gồm:

  • Giải thuật băm tùy chỉnh
  • Phân tích hành vi người dùng
  • Chặn ứng dụng trên các thiết bị jailbroken
  • Loại bỏ xóa dữ liệu
  • Xác thực hai yếu tố cho mỗi giao dịch

Triển khai các biện pháp bảo mật cho ứng dụng WebMoney là thách thức chính của chúng tôi. Tuy nhiên, đây cũng là dự án đầy thách thức về trải nghiệm người dùng.

Nhìn giống web, hoạt động giống điện thoại: thách thức giao diện người dùng

Ứng dụng phải cung cấp giao diện người dùng nhất quán trên tất cả các nền tảng, bao gồm iOS, Android, Windows Mobile, Symbian và web. Điều này có nghĩa là 90% các thành phần giao diện người dùng phải được tùy chỉnh.

Các thành phần giao diện người dùng phải trông giống các thành phần web. Nhưng lướt, nhấn và giữ, độ nhạy với áp lực, điều hướng – tất cả những tính năng này phải cảm thấy tự nhiên. Kết quả, chúng tôi đã tạo ra hơn 30 thành phần giao diện người dùng tùy chỉnh dựa trên UIComponent.

EzCash.vn

  • Nguồn ảnh: EzCash.vn

By Thai Anh

Hỗ trợ bạn đọc có thêm nhiều kiến thức vay vốn. Giúp mọi người có thể giải quyết các vấn đề tài chính trong cuộc sống thường ngày.