当前位置: 北京软件外包公司 » 资讯中心 » 新闻动态 » 软件外包公司如何保证数据的安全性

软件外包公司如何保证数据的安全性

发表于:2015-08-31 11:04 来源:北京软件开发公司宜天信达 点击:
 
软件外包公司如何保证数据的安全性而开发的移动应用程序照片。
 
如果你不使用手机安全在日常生活中,你可能会感到困的时候,如何应用你的工作需要处理敏感数据,不能暴露给第三方。谷歌”移动安全实践“可能会吓到你更但,实际上,在大多数情况下,没有必要跑渗透测试或使用复杂的安全性测试技术。一些简单的步骤会做的很好。
 
我们先前发布的关于一般安全移动开发指南,今天我们将重点放在具体的,保护数据的实用技巧。
 
下面的步骤是我们在azoft保证我们自己的移动数据的做法。它们可应用于各种安全要求的项目,从高层次的如医疗应用的存储病人的病历,对中、低层次的需要,例如,游戏将社交网络帐户的凭据。
 
任务概述
这里的重点是限制恶意访问用户的机密信息的丢失或被盗的设备以及在互联网上传送数据时。在这篇文章中我们主要包含三大主题: 
 
数据加密
潜在的安全弱点
有用的工具和库
数据加密
数据加密是最明显的,你也可以做为第一道防线的最好的事情。即使恶意黑客获得访问设备的硬盘,仍会有一个数据保持安全的机会。
 
我们的目标是有效地提高开发商的机会。我们建议做以下:
 
步骤1。安装阶段
需要一个应用程序的用户密码(plainpassword)在安装过程中。
就在密码设置,使用基于密码的密钥派生函数2(PBKDF2)计算passwordhash 。
在一个相当长的PBKDF2 -约64点盐(passwordsalt)产生。PBKDF2迭代次数取决于设备的性能和处理器能力:应用程序选择的迭代可能的最大数量的同时保持平稳运行。
 
当安装完成后,应用程序有一个passwordsalt和passwordhash在本地存储装置。
 
步骤2。认证程序
安全的用户认证的实现如下: 
 
使用输入密码并保存passwordsalt,哈希计算。 
哈希是相对于保存passwordhash。
笔记:用户输入的密码存储加密的高速缓存。
 
步骤3。数据存储和加密
当一个应用程序保存数据的第一时间,一个随机的主密钥和初始化向量(IV)的产生。我们将使用它们后加密数据。
一个mastersalt生成并保存在本地。
使用plainpassword和mastersalt,哈希(PBKDF2)计算。
使用AES256算法,计算出的哈希是用来加密万能钥匙和IV。
加密主密钥和IV本地保存。
解密主密钥和IV使用plainpassword和mastersalt哈希(PBKDF2)。
现在,我们已经准备好与主密钥和IV采用AES256算法加密数据。
 
步骤4。解密数据
解密的数据需要两个步骤:
 
解密的万能钥匙和IV使用plainpassword和mastersalt哈希(PBKDF2)。
使用主密钥和IV解密数据。
5。数据传输
如果你打算把机密数据到服务器或其他设备分享,一些额外的措施应加:
 
随着mastersalt发送加密和加密的主密钥和数据
使用安全信道传送数据时通过互联网:安全套接字层(SSL)或HTTPS。
在这种方式中,只有以下密钥和散列存储在设备本地:
 
passwordsalt和passwordhash -认证;
对数据的加密和解密和加密的主密钥和IV mastersalt。
加强潜在的薄弱点
1。隐藏加密算法
在移动安全的潜在的薄弱点,一是密码可以破解如果保存的passwordhash和passwordsalt已知恶意攻击者。但这是唯一可能的黑客也知道加密算法的使用。所以,第一种保护措施是把这些算法。
 
既然你自己开发一个算法是一个复杂的任务,在绝大多数情况下,我们可以从中选择现有的,并保持独特的选择如何组合它们。
 
2。增加密码的组合数
如果所使用的算法的继承是已知的恶意的黑客,他们可以继续使用蛮力的方法来破解密码。但暴力破解密码的哈希需要时间,即在表演:
 
N×T
 
其中“N”是密码变异数量和“T”是一个生成的哈希值的平均时间。
 
方法很简单:更可能的变体,更好。你可以通过增加密码的增加变异数量:
 
增加长度的多个字符的更好
使用特征上和小写字母,数字,特殊符号等, 
这些因素都应串联使用,因为有一系列的周边人物一qwerty123长密码可能被黑客入侵很快。另外,你可以增加需要用大量的加密函数迭代生成哈希 时间。
 
例如,极端的GPU bruteforcer状态可以暴力破解密码哈希SHA-256时附加速度80000000000(8×10 ^ 7)在NVIDIA显卡每秒GTX650Ti变种。对含有字符以及数字和特殊符号和大写字母的混合密码下变异数为4.6×10 ^ 10粗略计算。因此,黑客6-character密码将不会超过10分钟;一个7个字符的密码需要60倍的时间在10小时;和一个字符的密码会花上一个月。
 
如果你增加一个几千年的Hash函数迭代的次数,然后要求黑客甚至6-character密码将会急剧增加的时间,足以阻止甚至最恶意的黑客在解密数据的任何利益。
 
你也可以尝试复杂的黑客的生活用passwordsalt与彩虹表时。
 
3。防止逆向工程
为了实现某些反调试措施使任何试图使用逆向工程尽可能的困难是很重要的。例如,一个恶意的黑客可以尝试检查以发现薄弱环节,利用目标应用程序的方案和工作方法。同时,黑客可以尝试创建一个内存转储在一个用户正在为应用程序获取用户的密码哈希加密,mastersalt,万能钥匙和IV,可能,加密数据的一部分。
 
为了避免这种情况,你应该实现所有缓存数据与应用程序的活动的任何变化,自动结算,无论是发送一个应用程序为背景模式或睡眠模式的激活,等等。
 
此外,我们建议使用各种保护的模糊处理程序,可以隐藏应用程序的实际代码,不仅检测调试器工具也注意到一个应用程序本身正在调试的发生。
 
选择数据加密算法
对数据加密上述我们建议使用毒蛇,河豚和Twofish算法的选择,以及他们的瀑布。为hash-to-pbkdf2-encoding功能建议RIPEMD-160,惠而浦,和SHA-2。
 
开发者工具
这是开发人员的必备工具,安全的移动应用程序:
 
SQLite-本地数据存储
看到
wxsqlite一个wxWidgets风格的C++封装,还实现了SQLite的加密
SQLCipher使用OpenSSL的libcrypto实施
sqlitecrypt自定义实现,修改API
botansqlite3- botansqlite3是一种可以在任何使用sqlite3加密算法加密编码植物
你总是可以结合以上解决方案与对方或自己的算法。作为编程语言,软件外包公司强烈建议选择C++作为主要语言,和升压,Crypto++库。