[终端安全]-6 移动终端之应用程序安全

笔者在终端安全专题前面的文章中介绍了移动终端硬件安全和操作系统安全,本文主要介绍移动终端应用安全。在本文最前面,笔者想先解答一位朋友的疑问,为什么需要费心打造一个完整的面面俱到的安全体系?

1 移动终端安全的重要性

移动终端尤其手机终端的安全重要性可以归为两大类:对个人的安全和对企业的安全。

1)对个人的安全

1.1)财产安全

- 移动支付:手机作为支付工具,涉及个人银行账户、支付密码、金融交易等财产安全。

- 电子钱包和虚拟货币:涉及数字资产的安全保护。

1.2)隐私数据安全

- 个人数据:短信、通话记录、照片、视频、地理位置等。

- 社交媒体:个人社交活动、联系人信息、聊天记录等。

- 应用数据:包括健康数据、日历、记事本等个人隐私数据。

- 用户行为分析:防止基于用户行为数据的分析结果被滥用或泄露;防止广告商通过追踪用户行为侵犯隐私。

1.3)身份认证安全

- eID和生物信息:电子身份证、指纹、面部识别、虹膜识别等生物信息。

- 多因素认证:通过结合密码、生物特征和其他认证手段防止身份盗用。

2)对企业的安全

2.1)业务数据安全

- 企业应用数据:移动办公应用中的敏感业务数据。

- 客户信息:包括客户的个人信息和交易记录等。

2.2)企业信息安全

- 企业内部通信:通过邮件、即时通讯工具进行的企业内部信息交流。

- 战略信息:企业战略、研发计划等敏感信息的保护。

3)安全的木桶效应

安全的木桶效应是指在一个系统中,整体安全水平往往取决于最薄弱的环节,这个概念来源于“木桶理论”即一个木桶的盛水能力取决于最短的那块木板。在安全领域,这意味着即使系统的其他部分非常安全,但只要存在一个薄弱环节,攻击者就可以利用这个漏洞破坏整个系统的安全性。

3.1)系统最弱环节决定整体安全

系统的安全性由最薄弱的部分决定,如果某个组件的安全性较低,那么攻击者可以利用这个漏洞突破系统的防线。

3.2)综合考虑所有安全因素

构建安全系统时,需要综合考虑所有可能的安全威胁,不能忽视任何一个环节。

3.3)持续改进与评估

安全威胁和攻击手段不断演变,需要定期对系统进行评估和改进,确保每个环节的安全性达到标准。

2 应用安全

移动终端针对应用程序的安全涵盖了多个方面,包括应用程序的开发、安全性测试、分发、运行环境、权限管理、数据保护等。此外应用程序本身是针对业务场景安全应用话,还需要重点进行业务层安全设计,例如手机钱包应用中:公交卡应用、银行卡移动支付、数字车钥匙解锁控车、家门钥匙小区门禁解闭锁等场景下安全交易技术。

1)应用开发阶段的安全技术

- 安全编码规范:在应用开发过程中,开发人员应遵循安全编码规范,避免常见的安全漏洞,如SQL注入、缓冲区溢出、跨站脚本(XSS)攻击等。

- 静态代码分析:使用静态代码分析工具对代码进行审查,检测潜在的安全漏洞和不良编程实践。

2)应用安全测试技术

- 动态应用安全测试(DAST):通过模拟攻击者的行为,对运行中的应用进行安全测试,发现和修复潜在的安全漏洞。

- 渗透测试:专业的安全测试人员通过渗透测试评估应用的安全性,发现可能被攻击者利用的漏洞。

- 模糊测试:通过向应用程序输入随机数据,检测应用的异常行为和潜在的安全漏洞。

3)应用分发和安装阶段的安全技术

- 数字签名:开发者对应用程序进行数字签名,确保应用在分发过程中未被篡改。用户在安装应用时可以验证签名的有效性。

- 应用商店审核:应用在发布到应用商店之前需要经过严格的安全审核,确保没有恶意代码或安全漏洞。

- 安全依赖管理:确保应用程序中使用的第三方库和依赖项是最新的,并且没有已知的安全漏洞;定期审计应用程序的依赖项,确保没有使用存在安全问题的第三方库。

4)应用运行环境的安全技术

- 沙箱技术:移动终端操作系统使用沙箱技术隔离应用程序,防止应用之间相互影响或访问系统资源。

- 权限管理:应用只能在用户授权的情况下访问特定的系统资源和数据。用户可以在安装时或运行过程中授予或撤销应用的权限。

- 应用容器化:通过容器技术将应用隔离在独立的环境中,进一步增强安全性。

5)数据保护技术

- 数据加密:对应用程序的数据进行加密,保护数据在存储和传输过程中的安全,包括对数据库、文件、网络通信等的加密。

- 安全存储:利用移动操作系统提供的安全存储机制(如iOS的Keychain和Android的Keystore)存储敏感数据,如密码、密钥等。

- 安全通信:使用HTTPS、TLS等安全通信协议保护数据在网络传输中的安全,防止中间人攻击。

6)代码混淆和防反编译技术

- 代码混淆:通过混淆代码,使得逆向工程难度加大,防止攻击者分析和篡改应用程序代码。

- 反调试技术:在应用程序中加入反调试技术,检测并防止调试器对应用进行调试和分析。

7)运行时保护技术

- 行为监控:实时监控应用程序的行为,检测和阻止异常或恶意行为。

- 入侵检测和防御:在移动终端上部署入侵检测和防御系统,实时检测和响应潜在的安全威胁。

8)安全更新机制

- 自动更新:通过应用商店或开发者提供的更新渠道,及时为应用程序推送安全补丁和更新,修复已知的安全漏洞。

- 差分更新:使用差分更新技术,仅更新应用程序中有变动的部分,减少更新包的大小和更新时间。

3 业务层安全设计实例

1)公交卡业务安全设计

1.1)用户身份认证

- 多因素认证:结合密码和生物识别(如指纹、面部识别)进行用户身份验证,确保用户身份的唯一性和真实性。

- 动态口令:使用动态口令(如短信验证码、TOTP)作为额外的身份验证手段,增强安全性。

1.2)业务数据保护

- 数据加密:对公交卡数据进行加密存储确保数据的机密性,例如使用强加密算法AES保护用户的公交卡信息。

- 安全存储:利用手机操作系统提供的安全存储机制(如iOS的Keychain、Android的Keystore)存储加密密钥和其他敏感信息。

- 安全通信:所有与服务器的通信都使用HTTPS协议,并启用TLS(传输层安全协议)进行鉴权加密,防止中间人攻击。

1.3)安全交易处理

- 交易协议:需符合当地交通卡公司安全标准,执行与闸机安全认证交易支付。

- 双重确认:每次交易操作(如充值、支付)需要双重确认(如输入密码+短信验证码),防止误操作和恶意交易。

- 交易限额设置:用户可以设置每日交易限额,防止大额交易风险。

1.4)审计和监控

- 日志记录:记录所有关键操作的日志(如充值、支付、余额查询等),便于审计和追踪。

- 异常检测:实时监控用户行为,检测异常活动(如异常登录、频繁充值等),并触发安全警报。

- 反欺诈系统:利用大数据和人工智能技术实时分析交易行为,检测并预防欺诈行为。

2)数字钥匙业务安全设计

2.1)用户身份认证

- 多因素认证:结合密码和生物识别(如指纹、面部识别)进行用户身份验证,确保用户身份的唯一性和真实性。

- 动态口令:使用动态口令(如短信验证码、TOTP)作为额外的身份验证手段,增强安全性。

2.2)业务数据保护

- 数据加密:对数字钥匙证书、权限等数据进行加密存储确保数据的机密性。

- 安全存储:利用手机SE安全存储数字钥匙密钥和其他敏感信息。

- 安全通信:所有与服务器的通信都使用HTTPS协议,并启用TLS(传输层安全协议)进行鉴权加密,防止中间人攻击。

2.3)安全交易处理

- 交易协议:手机与汽车基于数字钥匙进行双向身份认证,协商会话密钥,加密具体的车控指令。需符合行业协议,例如CCC、ICCE、ICCOA数字钥匙标准。

- 双重确认:每次交易操作(如解锁、启动)需启用指纹或人脸认证,防止误操作恶意交易。

- 交易限额设置:用户可以设置离线情况下数字钥匙控车次数限额,防止遗失手机风险。


2.4)安全授权管理

- 权限分级管理:支持不同级别的授权(如一次性授权、时间段授权等),满足不同场景的数字钥匙分享需求。

- 撤销与追踪:用户可以随时撤销已授权的数字钥匙,并追踪钥匙的使用情况,确保安全性。

2.5)审计和监控

- 日志记录:记录所有关键操作的日志(如解锁、分享、注销等),便于审计和追踪。

- 异常检测:实时监控用户行为,检测异常活动(如异常登录、频繁解锁等),并触发安全警报。

- 反欺诈系统:利用大数据和人工智能技术实时分析交易行为,检测并预防欺诈行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cesium中实现全球体积云效果的一种方案

原生 Cesium 提供了一种积云的效果,云的物理特征和渲染性能都还不错,这种方案适合表达小范围相对离散的云朵,但是用来实现全球范围下相对连续、柔和渐变的云层比较困难。本文在体渲染的基础上,参考了开源社区中 shadertoy 和 thre…

c#调用c++ dll库报错System.BadImageFormatException

System.BadImageFormatException:“试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)” 1. dll需要选择release模式进行编译 2.选择相同位数,比如x64平台,c#也需要x64 3.不要设置c#不支持的函数供调用 比如: c可以输出到控制台…

Meta发布Llama 2驱动的AI代码生成器:Code Llama,开源来袭!

Meta 刚刚了号称是编程领域 “最先进的大语言模型”—— Code Llama ,可根据 代码和自然语言提示 生成代码和有关代码的自然语言,支持多种主流编程语言, 包括 Python、C、Java、PHP、Typescript (Javascript)、C# 和 Bash 。 Code Llama 完全…

人话学Python-基础篇-输入输出,数据类型转换,注释

##以下内容均为自我学习的理解,大多数是本人学习的经验。 一:输入输出 Python的输出并不像其他语言一样那么复杂,有一大堆的标识符、占位符等。只需要一个简单易懂的单词就可以完成变量的输入。 print("Python is the best language i…

拆分盘究竟是什么?一篇文章带你了解!

拆分盘是一种特殊的理财产品或投资模式,它通常被描述为“只涨不跌”的投资方式,多指股票,但实质上与传统股市中的股票有本质区别。以下是对拆分盘的详细解析: 一、拆分盘的定义 拆分盘可以理解为一种只涨不跌的理财股票。其特点在…

EtherCAT主站IGH-- 12 -- IGH之foe_request.h/c文件解析

EtherCAT主站IGH-- 12 -- IGH之foe_request.h/c文件解析 0 预览一 该文件功能`foe_request.c` 文件功能函数预览二 函数功能介绍1. `ec_foe_request_init`2. `ec_foe_request_clear`3. `ec_foe_request_alloc`4. `ec_foe_request_copy_data`5. `ec_foe_request_timed_out`6. `e…

Nikola Tesla Quotes * 3

“If you only knew the magnificence of 3, 6 and 9, you would have a key to the universe”. “If you want to find the secrets of the universe, think in terms of energy, frequency and vibration”. “My brain is only a receiver, in the Universe there is a cor…

OpenGL3.3_C++_Windows(29)

Demo exposure 0.1f exposure 5.0f HDR色调映射 问题:有多个亮光源使这些数值总和超过了1.0,颜色值会被约束在1.0,从而导致场景混成一片,难以分辨:色调映射:用更大范围的颜色值渲染从而获取大范围的黑暗…

java数组的扩容与缩容

一、java扩容缩容的说明 我们前面学过,创建java数组会在内存中开辟一块连续的空间,该空间固定不允许扩大和缩小。那么一个java数组要怎么实现扩容和缩容操作呢? 也许你会想到。再创建一个大容量的数组,将旧数组中的元素拷贝到新数…

怎么将3张照片合并成一张?这几种拼接方法很实用!

怎么将3张照片合并成一张?在我们丰富多彩的日常生活里,是否总爱捕捉那些稍纵即逝的美好瞬间,将它们定格为一张张珍贵的图片?然而,随着时间的推移,这些满载回忆的宝藏却可能逐渐演变成一项管理挑战&#xff…

LeetCode 981, 219, 78

目录 981. 基于时间的键值存储题目链接标签思路代码 219. 存在重复元素 II题目链接标签思路代码 78. 子集题目链接标签思路代码 981. 基于时间的键值存储 题目链接 981. 基于时间的键值存储 标签 数组 二分查找 排序 思路 时间戳根据时间生成,时间越早&#x…

鸿蒙语言基础类库:【@ohos.util (util工具函数)】

util工具函数 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 该模块…

Linux系统之lscpu命令的基本使用

Linux系统之lscpu命令的基本使用 一、lscpu命令介绍二、lscpu命令的使用帮助2.1 命令格式2.2 命令选项2.3 使用帮助 三、lscpu命令的基本使用3.1 查看lscpu版本3.2 直接使用lspcu命令3.3 可解析的格式打印cpu信息3.4 可扩展格式打印cpu信息 四、lscpu命令使用注意事项 一、lscp…

【题目/算法训练】:单调队列单调栈

🚀 前言: 【算法】单调队列&&单调栈 可以在看完这篇文章后,再来写下面的题目 一、绝对差不超过限制的最长连续子数组 思路: 1) 就相当于滑动窗口,维护滑动窗口内的两个值,一个是最大值…

Linux常用选项和指令

目录 Linux指令使用注意 用户创建与删除 ls指令 ls指令介绍 ls常见选项 ls选项组合使用 pwd指令 Linux文件系统结构 多叉树结构文件系统介绍 多叉树结构文件系统的特点 cd指令 绝对路径 相对路径 cd指令介绍 家户目录 最近访问的目录 touch指令 ​编辑mkdir指…

3D模型格式转换工具HOOPS Exchange如何访问产品制造信息(PMI)?

在当今的制造和设计领域,产品制造信息(PMI)在确保零件和产品满足精确规格方面发挥着至关重要的作用。PMI,特别是几何尺寸和公差(GD&T),提供了制造过程中必须遵循的详细指导。 随着技术的进…

保持边界感

人与人相处,如同刺猬抱团取暖:靠得太近,会刺痛对方;离得太远,又无法御寒。很多时候,我们与人相处,不是不懂得亲近,而是不懂得疏远。人与人交往,拥有边界感真的很重要。 …

Grind 75 | 3. merge two sorted lists

Leetcode 21. 合并两个有序链表 题目链接 思路: 和归并排序中 merge 部分一致 两个指针分别指向 2 个链表头每次选小的那个加入 res 中,对应指针后移一位;重复步骤2,直至一个指针到链表末尾将另一个剩余的全部 copy 到 res 中,链…

js ES6 part2

forEach遍历 forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数 主要使用场景: 遍历数组的每个元素 语法 被遍历的数组.forEach(function(当前数组元素,当前元素索引号){ //函数体 }) 1. forEach 主要是遍历数组 2. 参数当前…

Milvus核心组件(1)- Architecture

目录 cluster 模式 数据请求处理流程 总流程 逻辑channel 到物理channel 数据维护流程 cluster 模式 上一篇其实已经说过 standalone 模式,其实集群模式大同小异,只是在不同机子间使用Kafka或者其他消息中间件保证数据及逻辑的一致性。 Log Broker…