行业资讯

App安全与加密

易单科技 2018-07-05

加密算法分类

  • 对称加密:加密和解密都是使用一个密钥,密钥的保密工作就非常重要.
  • 非对称加密:用公钥加密,私钥解密; 用私钥加密,公钥解密.

对称加密

常见对称加密算法

  • DES 数据加密标准
  • 3DES
  • AES "高级"加密标准
  • ECB 电子代码本,每个块都是独立加密的
  • CBC 密码块链:使用一个密钥和一个初始化向量 (IV)对数据执行加密转换,可以有效地保证密文的完整性。

ECB 终端测试命令

$ openssl enc -des-ecb -K 616263 -nosalt -in msg1.txt -out msg1.bin //加密$ openssl enc -des-ecb -K 616263 -nosalt -in msg1.bin -out msg1.txt -d //解密$ xxd msg1.bin // 查看加密之后的二进制文件

CBC终端测试命令

$ openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in a.txt -out msg1.bin //加密$ openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in msg1.bin -out msg4.txt -d //解密$ xxd msg1.bin //查看加密之后的二进制文件

非对称加密算法

概要

1.加密解密方法: 用公钥解密然后用私钥解密;或者私钥加密然后用公钥解密

2.优缺点,优点是安全 缺点是速度慢

App安全与加密

RSA原理

OpenSSL 终端命令

openssl genrsa -out private.pem 512 //生成强度是 512 的 RSA 私钥openssl rsa -in private.pem -text -out private.txt //以明文输出私钥内容openssl rsa -in private.pem -check //校验私钥文件openssl rsa -in private.pem -out public.pem -outform PEM -pubout //从私钥中提取公钥$ openssl rsa -in public.pem -out public.txt -pubin -pubout -text //以明文输出公钥内容openssl rsautl -encrypt -pubin -inkey public.pem -in msg.txt -out msg.bin //使用公钥加密小文件openssl rsautl -decrypt -inkey private.pem -in msg.bin -out a.txt //使用私钥解密小文件openssl rsa -in private.pem -out private.der -outform der //将私钥转换成 DER 格式openssl rsa -in public.pem -out public.der -pubin -outform der //将公钥转换成 DER 格式

iOS 相关证书生成命令

openssl genrsa -out ca.key 1024 //生成私钥openssl req -new -key ca.key -out rsacert.csr //创建证书请求openssl x509 -req -days 3650 -in rsacert.csr -signkey ca.key -out rsacert.crt //生成证书并签名,有效期10年openssl x509 -outform der -in rsacert.crt -out rsacert.der //将 PEM 格式文件转换成 DER 格式openssl pkcs12 -export -out p.p12 -inkey ca.key -in rsacert.crt //入P12文件

安全之签名

MD5

Hash 散列函数不可逆的特点,是“加密”的另一种应用,可实现对安全信息的签名验证和标志文件。【不是正真的加密算法】

RSA

RSA算法有两个作用一个是加密一个是数字签名

数字签名

发送方

"报文" HASH 得到 "报文摘要"

"报文摘要" 用公钥加密(数字签名) + 报文

发送给接收方

接收方

"报文" HASH 得到 "报文摘要"

"数字签名" 用私钥解密 判断是否与 "报文摘要" 相同

iOS 安全特有功能

1.手机指纹、密码登录

1 判断是否有使用指纹或密码验证: - (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error attribute((swift_error(none)));

policy 分为: LAPolicyDeviceOwnerAuthenticationWithBiometrics 和 LAPolicyDeviceOwnerAuthentication, 前者只使用指纹,后者在指纹失败后会弹出密码验正。

2 请求验证,弹出验证界面 - (void)evaluatePolicy:(LAPolicy)policy localizedReason:(NSString *)localizedReason reply:(void(^)(BOOL success, NSError * error))reply;

3 验证结果,如果 success 是YES标志验证成功,NO标志不成功。 当验证不成共时,error 有:

3.1 LAErrorAuthenticationFailed - 指纹无法识别

3.2 LAErrorUserCancel --用户点击了取消

3.3 LAErrorUserFallback --用户点击了输入密码

3.4 LAErrorSystemCancel --系统取消

3.5 LAErrorPasscodeNotSet --因为你设备上没有设置密码

3.6 LAErrorTouchIDNotAvailable --设备没有Touch ID

3.7 LAErrorTouchIDNotEnrolled --因为你的用户没有输入指纹

3.8 LAErrorTouchIDLockout --多次输入,密码锁定

3.9 LAErrorAppCancel-- 比如电话进入,用户不可控的

2.钥匙串:保存安全性很高的小数据,他还具有一次保存,长久保留【删除应用后还存在】的特点

iOS 中重要的函数

1.非对称加密函数

SecKeyEncrypt 使用公钥对数据加密

SecKeyDecrypt 使用私钥对数据解密

SecKeyRawVerify 使用公钥对数字签名进行验证

SecKeyRawSign 使用私钥生成数字签名


郑州易单信息科技有限公司(简称“易单科技”)是一家专门从事软件设计、开发、运维服务的互联网软件技术服务公司。

目前公司业务主要涵盖:APP开发、小程序开发、APP对接小程序、微信公众号开发、高端企业网站建设等。

TOP