一种iOS下移动APP安全防护系统及方法技术方案

技术编号:19058312 阅读:23 留言:0更新日期:2018-09-29 12:27
本发明专利技术公开了一种iOS下移动APP安全防护系统及方法。本发明专利技术包括安全键盘模块、用户数据安全保存模块、App敏感信息保存模块、源代码保护模块、安全热更新模块的五大安全防护模块对于现有的iOS移动APP存在缺陷和问题进行安全防护。本发明专利技术将现存iOS‑App开发过程中常遇到的五个安全问题的解决方案集成到一种安全防护框架方法当中,开发者只需要将安全防护方法运用到App中,正确部署即可对App做出有效的安全防护,方便开发者解决App安全问题,减少开发时间,提高App的安全性。

【技术实现步骤摘要】
一种iOS下移动APP安全防护系统及方法
本专利技术属于移动安全的
,具体为一种iOS下移动APP安全防护方法。技术背景iOS和Android是用户使用率最高的移动操作系统,其中iOS系统源码不公开,以及严格统一的App应用上架审核机制,比Android具有较高的安全性;另外,苹果公司为iOS系统设计了一系列安全机制,如:代码签名、沙盒机制、ASLP、加密保护等。虽然iOS有较完善的安全机制,但是因为开发者对应用安全的疏忽,还是存在一些常见的安全威胁。本方法主要针对开发中常遇到的五个安全威胁进行防护:(1)系统键盘安全威胁,用户在使用App时,经常会遇到账户密码输入等敏感信息输入问题,特别是针对金融类App,防止键盘输入内容被监听,对用户数据的保护非常重要。(2)用户数据本地保存安全威胁,用户在使用App时会产生许多用户信息,一部分数据采用数据库的形式进行保存,另外一部分数据以word,PDF等大文件的形式保存在本地App中,这些数据如果没有防护措施,易造成数据泄露。(3)App敏感信息保存安全威胁,在日常开发过程中,避免不了对一些App敏感信息的处理例如App加密密钥,多数开发者采用硬编码形式或plist文件进行保存,但是其存在巨大的安全隐患,一旦App被逆向,以上信息都会遭到泄露。(4)App源代码泄露威胁,在日常开中,因为苹果现有的安全加固技术,开发者容易忽视对App源代码进行保护,攻击者可以通过逆向的方法从源代码中得到通信协议或者代码逻辑,对App进行攻击。(5)热更新脚本篡改威胁,为了满足快速变化的需求,热更新技术已经被众多App使用,但是热更新脚本代码的获取与保存还存在一些安全问题。
技术实现思路
本专利技术的目的是针对现有技术的不足,提供一种iOS下移动APP安全防护系统及方法。本专利技术解决其技术问题所采用的技术方案如下:一种iOS下移动APP安全防护系统,包括安全键盘模块、用户数据安全保存模块、App敏感信息保存模块、源代码保护模块、安全热更新模块;安全键盘模块:具有防通过坐标获取键盘输入信息、去缓存和防录屏的功能,将自定义的安全键盘模块代替原系统键盘,并通过runtime机制对录屏进程的监听,有效阻止用户输入信息的泄露。安全键盘模块启动实现过程如下:①监听用户输入事件。②拦截系统键盘弹出。③检测是否在录屏的进程,若发现正在录屏,则弹出警告并收回安全键盘模块;否则启动安全键盘模块,产生一组随机数,将键盘中的键位随机布局。④键盘根据布局模板进行显示,点击键盘按键显示输入信息。用户数据安全保存模块:对用户数据进行分类保存,根据不同数据类型以及大小不同给出不同的加密方案。将用户数据分为以下两类:①用户字段信息,例如用户名,密码等,该类型数据量小,并有数据处理的需求:例如排序,取最大数等,该类数据一般使用SQLite数据进行保存,大部分SQLite文件会保存Document当中。②用户处理的文件数据,例如word,PPT,视频文件等,该类数据因为内存大,直接保存在Documents或Library当中,针对这两类数据提出相应地安全保存的方法。针对SQLite数据库中用户字段信息的安全存储,提供两种加密方案:①对数据进行加密,加密以后再保存到数据库当中。②将数据库sqlite文件转换成二进制,对sqlite的二进制文件进行加密,开发者可以根据需求进行调用。针对文件安全存储加密方案如下:首先将用户文件根据文件内存大小,分成小文件和大文件;对于小文件,因为其内存小可直接使用对称密钥进行加密。对于视频、音频等大文件,由于移动端计算能力不高,如果直接转成NSData后加解密,不仅需要等待较多时间,而且消耗大量CPU和内存进行计算。因此本专利技术首先使用压缩方法对文件进行压缩,然后选择文件对应编码方式使用dataUsingEncoding方法将文件转化成NSData,最后使用base64编码进行加密。App敏感信息保存模块:实现了SSkeychain安全存储容器,并对plist文件进行加密,具体如下:首先,安全plist文件保存App中的plist文件分成两类,一类为系统自带的info.Plist文件,其中包含了一些应用配置信息,例如应用名,应用版本号等等,另一类则是开发者自己创建的plist文件。对于第一类文件,因为含有系统信息,如果对其加密,系统则无法识别内容而导致App崩溃,所以不能直接对inof.plist进行加密,该过程可以直接使用用户数据安全保存模块中的用户字段信息加密API进行加密。对于第二类文件,因为plist是以XML明文的形式进行保存,可直接转为字符串进行加密处理。其次,使用SSkeychain保存信息KeychainServices是OSX和iOS都提供的一种安全地存储敏感信息的工具,比如:存储用户ID、密码和证书等。由于keychain方法的代码冗余度高,可读性差,因此在keychain的基础上设计了SSKeychain,对keychain的方法类进行封装,大大方便开发者对keychain的使用。本专利技术设计对于keychain源代码进行封装,创建了SSKeychain工具类,头文件定义了三个方法:keychain保存、读取和删除数据;然后在实现文件中将定义的三个方法抽成一个方法类;以存储方法为例,每一个存储方法唯一不同的是存储的键key和键值value不一样,而其他的调用查看是否已存在,更新键值,创建新键值对的方法都是一样的。所述的敏感信息包含用户数据安全保存模块中加密使用的密钥、集成第三方SDK的AppId和AppSecret,以及应用的网络接口等信息。源代码保护模块:对App应用源码中的文件名、方法名和类名等进行混淆,分为关键字提取、创建数据库和混淆,具体如下:首先,关键字提取在iOS应用编写过程中,对存在的文件名、类名、协议名和函数名四类关键字进行准确提取。其次,创建数据库本专利技术采用SQLite数据库来保存关键字,SQLite具有支持多个主流的操作系统;其核心引擎本身不依赖第三方软件;不需要安装;所有信息(例如表,视图,触发器等)都包含在一个文件内等优点。创建对应表的字段如下4-1表,src保存原关键字,des保存混淆后名字。表4-1混淆数据库表src原关键字des混淆后的关键字然后,对关键字进行混淆本专利技术采用MD5算法对原关键字进行混淆,该算法具有压缩性、计算效率高、抗修改性、强抗碰撞的特点,符合混淆不可逆且安全的需求。其实现过程如下:首先提取数据库中的src字段内容,调用shell命中的md5sum函数对src中的内容进行MD5计算,完成后将MD5值存入des字段。安全热更新模块:热更新脚本使用https协议进行传输,本地执行的热更新脚本代码使用哈希算法验证其完整性,具体实现如下:首先,热更新脚本安全下发本专利技术热更新脚本安全传输过程如下:①使用一个会话秘钥key对脚本文件进行加密,得到加密脚本。②对脚本文件进行一次MD5运算,得到脚本文件的信息摘要。③使用服务器的私钥对会话秘钥key进行加密,得到加密key。④同时也用私钥对过程②的MD5值进行加密,得到加密MD5。⑤将加密key、加密脚本以及加密MD5发送至客户端。⑥客户端使用服务器公钥对加密key进行解密,得到k本文档来自技高网
...

【技术保护点】
1.一种iOS下移动APP安全防护系统,其特征在于包括安全键盘模块、用户数据安全保存模块、App敏感信息保存模块、源代码保护模块、安全热更新模块;安全键盘模块:具有防通过坐标获取键盘输入信息、去缓存和防录屏的功能,将自定义的安全键盘模块代替原系统键盘,并通过runtime机制对录屏进程的监听,有效阻止用户输入信息的泄露;安全键盘模块启动实现过程如下:①监听用户输入事件;②拦截系统键盘弹出;③检测是否在录屏的进程,若发现正在录屏,则弹出警告并收回安全键盘模块;否则启动安全键盘模块,产生一组随机数,将键盘中的键位随机布局;④键盘根据布局模板进行显示,点击键盘按键显示输入信息;用户数据安全保存模块:对用户数据进行分类保存,根据不同数据类型以及大小不同给出不同的加密方案;将用户数据分为以下两类:①用户字段信息,该类型数据量小,并有数据处理的需求,该类数据使用SQLite数据进行保存,大部分SQLite文件会保存Document当中;②用户处理的文件数据,该类数据因为内存大,直接保存在Documents或Library当中;针对这两类数据提出相应地安全保存的方法,针对SQLite数据库中用户字段信息的安全存储,提供两种加密方案:①对数据进行加密,加密以后再保存到数据库当中;②将数据库sqlite文件转换成二进制,对sqlite的二进制文件进行加密,开发者可以根据需求进行调用;针对文件安全存储加密方案如下:首先将用户文件根据文件内存大小,分成小文件和大文件;对于小文件,因为其内存小直接使用对称密钥进行加密;对于视频、音频的大文件,首先使用压缩方法对文件进行压缩,然后选择文件对应编码方式使用dataUsingEncoding方法将文件转化成NSData,最后使用base64编码进行加密;App敏感信息保存模块:实现了SSkeychain安全存储容器,并对plist文件进行加密,具体如下:首先,安全plist文件保存;App中的plist文件分成两类,一类为系统自带的info.Plist文件,其中包含了一些应用配置信息,另一类则是开发者自己创建的plist文件;对于第一类文件直接使用用户数据安全保存模块中的用户字段信息加密API进行加密;对于第二类文件,因为plist是以XML明文的形式进行保存,直接转为字符串进行加密处理;其次,使用SSkeychain保存信息;Keychain Services是OSX和iOS都提供的一种安全地存储敏感信息的工具,对于keychain源代码进行封装,创建了SSKeychain工具类,头文件定义了三个方法:keychain保存、读取和删除数据;然后在实现文件中将定义的三个方法抽成一个方法类;所述的敏感信息包含用户数据安全保存模块中加密使用的密钥、集成第三方SDK的AppId和AppSecret,以及应用的网络接口信息;源代码保护模块:对App应用源码中的文件名、方法名和类名进行混淆,分为关键字提取、创建数据库和关键字混淆,具体如下:首先,关键字提取在iOS应用编写过程中,对存在的文件名、类名、协议名和函数名四类关键字进行准确提取;其次,创建数据库采用SQLite数据库来保存关键字,创建对应表的字段表,字段表包括src和des;src保存原关键字,des保存混淆后名字;然后,对关键字进行混淆采用MD5算法对原关键字进行混淆,实现过程如下:首先提取数据库中的src字段内容,调用shell命中的md5sum函数对src中的内容进行MD5计算,完成后将MD5值存入des字段;安全热更新模块:热更新脚本使用https协议进行传输,本地执行的热更新脚本代码使用哈希算法验证其完整性,具体实现如下:首先,热更新脚本安全下发本专利技术热更新脚本安全传输过程如下:①使用一个会话秘钥key对脚本文件进行加密,得到加密脚本;②对脚本文件进行一次MD5运算,得到脚本文件的信息摘要;③使用服务器的私钥对会话秘钥key进行加密,得到加密key;④同时也用私钥对过程②的MD5值进行加密,得到加密MD5;⑤将加密key、加密脚本以及加密MD5发送至客户端;⑥客户端使用服务器公钥对加密key进行解密,得到key;⑦客户端使用服务器公钥加密MD5解密,得到MD5;⑧使用key解密得到脚本文件;⑨客户端对脚本文件进行一次MD5操作;⑩对比过程⑦和过程⑨中的MD5,判断脚本在传输过程中是否遭到修改;其次,热更新脚本本地安全当本地客户端调用脚本文件时,首先对脚本文件进行一次MD5计算,然后将计算结果发送至服务器进行验证,即在热更新脚本安全下发过程⑤加入脚本安全验证的过程,只有服务器验证通过,才可以执行脚本文件中的内容。...

【技术特征摘要】
1.一种iOS下移动APP安全防护系统,其特征在于包括安全键盘模块、用户数据安全保存模块、App敏感信息保存模块、源代码保护模块、安全热更新模块;安全键盘模块:具有防通过坐标获取键盘输入信息、去缓存和防录屏的功能,将自定义的安全键盘模块代替原系统键盘,并通过runtime机制对录屏进程的监听,有效阻止用户输入信息的泄露;安全键盘模块启动实现过程如下:①监听用户输入事件;②拦截系统键盘弹出;③检测是否在录屏的进程,若发现正在录屏,则弹出警告并收回安全键盘模块;否则启动安全键盘模块,产生一组随机数,将键盘中的键位随机布局;④键盘根据布局模板进行显示,点击键盘按键显示输入信息;用户数据安全保存模块:对用户数据进行分类保存,根据不同数据类型以及大小不同给出不同的加密方案;将用户数据分为以下两类:①用户字段信息,该类型数据量小,并有数据处理的需求,该类数据使用SQLite数据进行保存,大部分SQLite文件会保存Document当中;②用户处理的文件数据,该类数据因为内存大,直接保存在Documents或Library当中;针对这两类数据提出相应地安全保存的方法,针对SQLite数据库中用户字段信息的安全存储,提供两种加密方案:①对数据进行加密,加密以后再保存到数据库当中;②将数据库sqlite文件转换成二进制,对sqlite的二进制文件进行加密,开发者可以根据需求进行调用;针对文件安全存储加密方案如下:首先将用户文件根据文件内存大小,分成小文件和大文件;对于小文件,因为其内存小直接使用对称密钥进行加密;对于视频、音频的大文件,首先使用压缩方法对文件进行压缩,然后选择文件对应编码方式使用dataUsingEncoding方法将文件转化成NSData,最后使用base64编码进行加密;App敏感信息保存模块:实现了SSkeychain安全存储容器,并对plist文件进行加密,具体如下:首先,安全plist文件保存;App中的plist文件分成两类,一类为系统自带的info.Plist文件,其中包含了一些应用配置信息,另一类则是开发者自己创建的plist文件;对于第一类文件直接使用用户数据安全保存模块中的用户字段信息加密API进行加密;对于第二类文件,因为plist是以XML明文的形式进行保存,直接转为字符串进行加密处理;其次,使用SSkeychain保存信息;KeychainServices是OSX和iOS都提供的一种安全地存储敏感信息的工具,对于keychain源代码进行封装,创建了SSKeychain工具类,头文件定义了三个方法:keychain保存、读取和删除数据;然后在实现文件中将定义的三个方法抽成一个方法类;所述的敏感信息包含用户数据安全保存模块中加密使用的密钥、集成第三方SDK的AppId和AppSecret,以及应用的网络接口信息;源代码保护模块:对App应用源码中的文件名、方法名和类名进行混淆,分为关键字提取、创建数据库和关键字混淆,具体如下:首先,关键字提取在iOS应用编写过程中,对存在的文件名、类名、协议名和函数名四类关键字进行准确提取;其次,创建数据库采用SQLite数据库来保存关键字,创建对应表的字段表,字段表包括src和des;src保存原关键字,des保存混淆后名字;然后,对关键字进行混淆采用MD5算法对原关键字进行混淆,实现过程如下:首先提取数据库中的src字段内容,调用shell命中的md5sum函数对src中的内容进行MD5计算,完成后将MD5值存入des字段;安全热更新模块:热更新脚本使用https协议进行传输,本地执行的热更新脚本代码使用哈希算法验证其完整性,具体实现如下:首先,热更新脚本安全下发本发明热更新脚本安全传输过程如下:①使用一个会话秘钥key对脚本文件进行加密,得到加密脚本;②对脚本文件进行一次MD5运算,得到脚本文件的信息摘要;③使用服务器的私钥对会话秘钥key进行加密,得到加密key;④同时也用私钥对过程②的MD5值进行加密,得到加密MD5;⑤将加密key、加密脚本以及加密MD5发送至客户端;⑥客户端使用服务器公钥对加密key进行解密,得到key;⑦客户端使用服务器公钥加密MD5解密,得到MD5;⑧使用key解密得到脚本文件;⑨客户端对脚本文件进行一次MD5操作;⑩对比过程⑦和过程⑨中的MD5,判断脚本在传输过程中是否遭到修改;其次,热更新脚本本地安全当本地客户端调用脚本文件时,首先对脚本文件进行一次MD5计算,然后将计算结果发送至服务器进行验证,即在热更新脚本安全下发过程⑤加入脚本安全验证的过程,只有服务器验证通过,才可以执行脚本文件中的内容。2.根据权利要求1所述的一种iOS下移动APP安全防护系统的实现方法,其特征在于包括如下步骤:步骤1.启动安全键盘模块,具体实现如图2:1-1监听用户输入事件该过程为当用户使用UITextfield控件输入信息时,监听键盘的弹出事件,其主要实现方法是使用KVO技术监听键盘弹出;其实现过程如下:首先创建一个观察者,;然后给观察者添加观察内容,键盘的监听事件有四种状态:UIKeyboardWillShowNotification键盘即将显示;UIKeyboardDidShowNotifition键盘已经显示;UIKeyboardWillHideNotification键盘即将隐藏;UIKeyboardDidHideNotification键盘完全隐藏;需要监听UIKeyboardWillShowNotification键盘即将显示事件,添加完成后,即完成了对键盘输入的监听;在控制器viewDidLoad方法中使用addObserver添加观察者,@selector代表观察者触发事件后回调后方法,name代表观察者的触发事件,过程中主要对键盘即将显示事件进行观察;1-2拦截系统键盘显示当UIKeyboardWillShowNotification键盘即将显示事件触发时,系统会直接调用系统keyboard进行显示,为了能够显示本文设计的安全键盘,需要对系统键盘进行拦截,并替换成安全键盘,在步骤1-1中的keyboardWillShow方法中添加拦截代码即可实现系统键盘的拦截;其具体实现过程如下:在iOS系统中支持键盘输入的控件有UITextfield和UITextView,在这两个控件中有FirstResponder(第一响应者)的属性,当用户点击输入框时,系统先调用resignFirstResponder方法取消UITextField第一次响应者的属性,当该属性被取消,系统键盘便会隐藏,达到阻止系统键盘弹出目的;1-3检测是否存在录屏进程该过程检测是否存在录屏进程的调用,如果存在则停止安全键盘启动,并通知用户存在恶意录屏;检测App是否存在录屏进程的实现方法有以下两种:①.遍历App应用的所有framework,检测是否包含了ReplayKit框架;在iOS系统中,App的可执行文件以m...

【专利技术属性】
技术研发人员:吕秋云祁伊祯俞祥祥王秋华欧阳潇琴詹佳程刘昊
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1