(国网安徽省电力有限公司电力科学研究院 安徽 合肥 230601)
摘要:在移动通信技术飞速发展的今天,各种Android和IOS的智能终端设备己经普遍进入了人们的工作与生活中。但是由于无线网络的开放性特点,使得移动客户端与服务器之间数据传输的安全面临更多的挑战,存在敏感信息的窃听与干扰、敏感信息的截取与篡改等问题。本研究通过分析内、外网移动终端应用安全性,发现了其中存在的敏感数据泄露问题和不安全加密问题,提出一种电力移动终端应用的敏感数据安全防护方案,解决了移动终端应用的安全性问题,建立了数据的统一标准和日志标准。
关键字:移动应用;敏感数据;保护技术
1.引言
在移动通信技术飞速发展的今天,各种Android和IOS的智能终端设备己经普遍进入了人们的工作与生活中。移动客户端丰富多样的应用程序给人们的工作与生活带来了前所未有的便利,比如电网公司推出的企信APP等。但是由于无线网络的开放性特点,使得移动客户端与服务器之间数据传输的安全面临更多的挑战,存在敏感信息的窃听与干扰、敏感信息的截取与篡改等问题,给数据安全传输构成较大威胁。移动互联网中很多业务系统涉及到移动客户端的登录账号、密码、财务往来等敏感数据,例如在企信中,就涉及到非常多的个人隐私信息等。这些数据信息一旦被恶意截取、破译、篡改,将会给移动客户端用户带来很多不必要的麻烦和损失。
本研究通过分析内、外网移动终端应用安全性,发现了其中存在的敏感数据泄露问题和不安全加密问题,提出一种电力移动终端应用的敏感数据安全防护方案,解决了移动终端应用的安全性问题,建立了数据的统一标准和日志标准。
2.现状分析
通过对安徽省现有的电力移动应用展开调研分析,目前移动应用主要存在以下几点问题:
(1)SQL注入:APP中有多处代码直接使用字符串拼装SQL,然后调用数据库接口执行该SQL。一旦在输入的参数中含有恶意的输入,可以导致SQL注入攻击的发生。SQL注入攻击根据当前SQL用户的权限,可以对数据库中的数据进行篡改,使得数据的完整性无法保证,严重者甚至可以破坏数据库,影响系统的使用。
(2)不正确地使用加密算法:加密是保护敏感数据的一道屏障,它可以做到即使让攻击者劫持也猜不出原始信息,但是,加密的关键是要选择安全的加密算法和密钥管理。在APP中发现,不仅使用了不安全的加密算法(DES和AES的ECB模式),还将加密的密钥直接当作常量写在代码里。这就使得加密的作用大大降低,甚至化为乌有。因为表面上数据是加密的,只要分析APP的apk文件,就能够得到加密的密钥和加密的算法,再通过工具或者脚本就可以将加密的内容解密,得到原始的信息。
(3)不安全的通讯机制:APP中虽然使用了HTTPS,但是,在使用HTTPS时,却忽略了证书的验证。攻击者可以利用此漏洞发起中间人攻击,而且APP的使用者也不会得到任何提醒,更不知道已经遭受到中间人攻击,这样攻击这可以在用户不知道的情况下,以获取用户网络的活动,包括账户、密码等敏感信息。
3.保护技术
(1)内部存储中敏感数据的保护
一般的应用都会在系统上存储一些信息,可能存储在文件或者数据库,存储的信息中难免会有一些敏感的信息,在非必要的前提下,尽量避免存储敏感信息。
期刊文章分类查询,尽在期刊图书馆对于内部存储中敏感数据建议尽量避免将MODE_WORLD_WRITEABLE或 MODE_WORLD_READABLE模式用于 IPC 文件,因为在这两种模式下,系统不提供针对特定应用限制数据访问的功能,也不会对数据格式进行任何控制。如果想与其他应用进程共享数据,不妨考虑使用内容提供(Content-Provider)程序,它可以为其他应用提供读取和写入权限,还能针对各种具体情况授予动态权限。
(2)外部存储空间敏感数据的保护
在外部存储设备(例如 SD 卡)上创建的文件不受任何读取和写入权限的限制。对于外部存储设备中的内容,不仅用户可以将其移除,而且任何应用都可以对其进行修改,因此最好不要使用外部存储设备来存储敏感信息。
当程序从外部设备读取数据时,需要将其视为不信任的数据,对外部存储设备中的数据执行严格的输入验证。
(3)通讯层数据机密性
a.网络层通讯
由于移动应用本身的计算能力有限,绝大部分移动应用都会和后台服务器连接获取相应的资源。在此过程中,传输对用户而言可能比较敏感的数据,因此本质上就存在安全风险。不建议在通讯过程中使用未加密的协议(HTTP),建议使用HTTPS协议。如果使用TLS/SSL协议,可以使用SSLSocket接口,不过使用SSLScket时,需要注意的是:SSLSocket 不会执行主机名验证。由应用执行自己的主机名验证,最好通过使用预期的主机名调用 getDefaultHostnameVerifier进行验证;另外,出现错误时,HostnameVerifier.verify不会引发异常,而是返回一个布尔结果,必须明确地检查该结果。
b.进程间通讯
建议使用Android针对IPC提供的功能,Android的IPC机制可以让应用验证连接到IPC的应用的身份,并且为每种IPC机制设置了安全策略,例如:Service 的 Intent、Binder 或 Messenger,以及 BroadcastReceiver。
需要注意的是许多安全元素在各种 IPC 机制之间是共享的。如果应用的 IPC 机制并不打算让其他应用使用,需要在该组件的属性元素中将 android:exported 属性设置为 "false"。如果应用的 IPC 预期供其他应用访问,可以使用 <permission> 元素应用安全策略。如果 IPC 是在一个公司或者单位的不同应用(以同一密钥登录)之间使用,建议将android:protectionLevel 中设置为 "signature" 级别权限。
(4)预防log、报错相关的数据泄露
日志和报错对于应用开发者分析应用逻辑过程和调查应用中的问题来说很重要的,因此,需要向日志或者报错的信息中提供足够的信息。
为了更好地管理日志,建议制定一个日志规范,规定记录日志的格式,可以写入日志的信息和不可以写入日志的信息。这样既有利于分析日志(可以使用统一的工具进行分析),也可以避免一些不必要的信息泄漏。
4.结语
通过分析内、外网移动终端应用安全性,发现了其中存在的敏感数据泄露问题和不安全加密问题,提出一种电力移动终端应用的敏感数据安全防护方案,解决了移动终端应用的安全性问题,建立了数据的统一标准和日志标准。
论文作者:王潇,王鑫,张淑娟,钱光超,孙建,丁全,朱颖
论文发表刊物:《科技新时代》2018年11期
论文发表时间:2019/1/11
标签:终端论文; 信息论文; 数据论文; 敏感数据论文; 敏感论文; 日志论文; 密钥论文; 《科技新时代》2018年11期论文;