Cách bảo mật cho ứng dụng mobile?

  1. An ninh mạng

  2. Nguyễn Mạnh Hùng

Bảo mật cho ứng dụng mobile như thế nào thì tốt?

Từ khóa: 

an ninh mạng

,

chuyên gia bảo mật - an toàn thông tin

Thân chào anh Jimmy,

Khác với ứng dụng chạy phía back-end như ứng dụng Web, ứng dụng mobile app chạy phía front-end với code hoàn toàn mở (có thể dịch ngược). Nhà phát triển phần mềm có rất nhiều vấn đề khác cần quan tâm so với bảo vệ ứng dụng Web thông thường.

Tùy vào mức độ quan trọng khác nhau có nhiều mức độ bảo mật khác nhau khi bảo vệ ứng dụng mobile. Mức độ cơ bản, nhà phát triển phần mềm chưa quan tâm đến mobile security và dựa trên tính năng bảo mật sẵn có của các hệ điều hành mobile như chạy trong các tiến trình độc lập, ứng dụng này không can thiệp được vào ứng dụng khác nếu không được cấp quyền. Đồng thời ở mức độ cơ bản, khi xuất bản ứng dụng trên các nền tảng Apple Appstore hoặc Google Playstore, các ứng dụng đều được Apple và Google phê duyệt và kiểm tra bảo mật cơ bản. Mức độ thứ hai là khi các nhà phát triển đã bắt đầu quan tâm đến mobile security. Ở mức độ này các nhà phát triển sẽ quan tâm đến vấn đề security coding, triển khai các tính năng cơ bản của mobile security như cert pinning, anti root, anti jailbreak, anti emulator... Việc triển khai các giải pháp bảo mật thường do các nhà phát triển mobile app tự triển khai hoặc sử dụng các giải pháp opensource được chia sẻ trên mạng.

Mức độ cao nhất mà tôi muốn đề cập chính đến trong phần này là mức độ dành cho các ứng dụng mobile quan trọng như ứng dụng mobile tài chính, ngân hàng. Ở mức độ này các ứng dụng mobile sẽ qua một quy trình phát triển đầy đủ bao gồm security coding, security testing theo 1 số tiêu chuẩn Mobile security được thế giới công nhận ví dụ:

tiêu chuẩn mobile security của OWASP
. Không chỉ vậy, đối với các ứng dụng rất quan trọng như Ebanking - etoken cho phép lưu trữ key giao dịch phía mobile, các ngân hàng còn áp dụng nhiều biện pháp bảo mật nghiêm ngặt như: chống dịch ngược, White box encryption, chống can thiệp ... để đảm bảo dù người dùng có bị mất điện thoại, kẻ xấu có thể mở khóa điện thoại cũng không thể lấy được key giao dịch của khách hàng.

Tóm lại, ứng dụng mobile là ứng dụng code mở (có thể dịch ngược). Về lý thuyết, dù ứng dụng có được bảo mật bằng biện pháp nào thì kẻ xấu khi đầu tư nhiều nguồn lực, thời gian cũng đều có thể "hack" được. Bởi vậy, nguyên tắc thiết kế an toàn của các ứng dụng ngân hàng thường cố gắng hạn chế tối đa có thể việc lưu thông tin mật hoặc xử lý logic phía mobile app, thông tin mật hoặc logic nên được lưu trữ, xử lý phía server backend.

Regards.

Trả lời

Thân chào anh Jimmy,

Khác với ứng dụng chạy phía back-end như ứng dụng Web, ứng dụng mobile app chạy phía front-end với code hoàn toàn mở (có thể dịch ngược). Nhà phát triển phần mềm có rất nhiều vấn đề khác cần quan tâm so với bảo vệ ứng dụng Web thông thường.

Tùy vào mức độ quan trọng khác nhau có nhiều mức độ bảo mật khác nhau khi bảo vệ ứng dụng mobile. Mức độ cơ bản, nhà phát triển phần mềm chưa quan tâm đến mobile security và dựa trên tính năng bảo mật sẵn có của các hệ điều hành mobile như chạy trong các tiến trình độc lập, ứng dụng này không can thiệp được vào ứng dụng khác nếu không được cấp quyền. Đồng thời ở mức độ cơ bản, khi xuất bản ứng dụng trên các nền tảng Apple Appstore hoặc Google Playstore, các ứng dụng đều được Apple và Google phê duyệt và kiểm tra bảo mật cơ bản. Mức độ thứ hai là khi các nhà phát triển đã bắt đầu quan tâm đến mobile security. Ở mức độ này các nhà phát triển sẽ quan tâm đến vấn đề security coding, triển khai các tính năng cơ bản của mobile security như cert pinning, anti root, anti jailbreak, anti emulator... Việc triển khai các giải pháp bảo mật thường do các nhà phát triển mobile app tự triển khai hoặc sử dụng các giải pháp opensource được chia sẻ trên mạng.

Mức độ cao nhất mà tôi muốn đề cập chính đến trong phần này là mức độ dành cho các ứng dụng mobile quan trọng như ứng dụng mobile tài chính, ngân hàng. Ở mức độ này các ứng dụng mobile sẽ qua một quy trình phát triển đầy đủ bao gồm security coding, security testing theo 1 số tiêu chuẩn Mobile security được thế giới công nhận ví dụ:

tiêu chuẩn mobile security của OWASP
. Không chỉ vậy, đối với các ứng dụng rất quan trọng như Ebanking - etoken cho phép lưu trữ key giao dịch phía mobile, các ngân hàng còn áp dụng nhiều biện pháp bảo mật nghiêm ngặt như: chống dịch ngược, White box encryption, chống can thiệp ... để đảm bảo dù người dùng có bị mất điện thoại, kẻ xấu có thể mở khóa điện thoại cũng không thể lấy được key giao dịch của khách hàng.

Tóm lại, ứng dụng mobile là ứng dụng code mở (có thể dịch ngược). Về lý thuyết, dù ứng dụng có được bảo mật bằng biện pháp nào thì kẻ xấu khi đầu tư nhiều nguồn lực, thời gian cũng đều có thể "hack" được. Bởi vậy, nguyên tắc thiết kế an toàn của các ứng dụng ngân hàng thường cố gắng hạn chế tối đa có thể việc lưu thông tin mật hoặc xử lý logic phía mobile app, thông tin mật hoặc logic nên được lưu trữ, xử lý phía server backend.

Regards.