美文网首页
[iOS逆向]2、HASH&AED、DES&双向验证

[iOS逆向]2、HASH&AED、DES&双向验证

作者: 史记_d5da | 来源:发表于2021-12-19 13:44 被阅读0次

1、HASH定义

把任意长度的输入通过散列算法变成固定长度的输出,该输出就是散列值

1.1、相关命令

1、32个字符的MD5散列字符串
md5 -s "string"
2、40个字符的SHA1散列字符串
echo -n "string" | openssl sha1
3、64个字符的SHA256散列字符串
echo -n "string" | openssl sha256
4、128个字符的SHA 512散列字符串
echo -n "string" | openssl sha512
5、32个字符的HMAC MD5散列字符串
echo -n "string" | openssl dgst -md5 -hmac "key"
6、40个字符的HMAC SHA1散列字符串
echo -n "string" | openssl sha1 -hmac "key"
7、64个字符的HMAC SHA256散列字符串
echo -n "string" | openssl sha256 -hmac "key"
8、128个字符的HMAC SHA512散列字符串
echo -n "string" | openssl sha512 -hmac "key"
9、32个字符的MD5散列字符串
md5 file.dat

2、HMAC加密

散列运算消息认证码;运算使用散列算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出
如下:
1、用户登录,使用md5(pwd+salt)加密获得一个字符串,也叫pwd_md5。
2、客户端有了pwd_md5,如果每次都以这个字符串上传,黑客就不需要你的pwd,直接截取到这个字符串,然后就能模拟你的登录。
3、客户端需要在pwd_md5的基础上,在加入一个随机的字符串的md5,这个随机字符串得是服务器返回 , 有效时间为2分钟 。校验规则md5(pwd_md5+随机串) , 然后md5(pwd_md5+随机串)+账号 上传给服务器。
4、服务器拿到了客户端的账号和md5(pwd_md5+随机串)后,从数据库取出此账号注册时的pwd_md5,也用同样的规则 md5(数据库的pwd_md5+随机串)生成一个字符串, 如果是时间戳的话,校验当前分钟和前一分钟 , 最后本地生成的字符串和客户端上传的字符串进行校验,如果匹配成功,则登陆成功。


HMAC加密

3、对称加密

3.1、常见的加密方式

1、DES
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
1)、DES(ECB)加密
echo -n hello | openssl enc -des-ecb -K 616263 -nosalt | base64
DES(ECB)解密
echo -n HQr0Oij2kbo= | base64 -D | openssl enc -des-ecb -K 616263 -nosalt -d
2)、DES(CBC)加密
echo -n hello | openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt | base64
DES(CBC)解密
echo -n alvrvb3Gz88= | base64 -D | openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt -d
2、3DES
DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。
3、AES
1)、ECB:电子密码本模式。每一块数据,独立加密。
加密:
openssl enc -des-ecb -K 616263 -nosalt -in abc.txt -out msg1.bin
查看二进制文件:
xxd msg1.bin
解密:
echo -n d1QG4T2tivoi0Kiu3NEmZQ== | base64 -D | openssl enc -aes-128-ecb -K 616263 -nosalt -d
2)、CBC:密码分组链接模式。使用一个密钥和一个初始化向量对数据执行加密
明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同密文加密后会形成不同的密文。
加密:
openssl enc -des-cbc -K 616263 -iv 0102030405060708 -nosalt -in abc.txt -out msg2.bin
解密:
echo -n u3W/N816uzFpcg6pZ+kbdg== | base64 -D | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt -d

4、苹果的双向验证

4.1、苹果签名认证

1、Mac电脑的公钥+开发者信息发送给苹果服务器(电脑上的私钥相当于p12证书)
2、苹果服务器对公钥+开发者信息进行签名颁发证书返回给苹果电脑
3、Mac电脑通过私钥(p12)对App包进行签名+证书通过Xcode安装到苹果手机
4、苹果手机的公钥在验证证书


苹果双向验证
4.2、苹果权限管理

1、描述文件
描述文件一般包括三样东西:证书、AppID、设备。当我们在真机运行或者打包一个项目的时候,证书用来证明我们程序的安全性和合法性
2、苹果为了解决应用滥用的问题,所有苹果又加了两个限制
1)、苹果后台注册过的设备才可以安装
2)、签名只能针对某一个具体的App

  • 苹果还控制App里面的iCloud/PUSH/后台运行/调试器附加这些权限,所以苹果把这些权限开关统一称为Entitlements(授权文件).并将这个文件放在叫做Provisioning Profile(描述文件)文件中
  • 描述文件是在AppleDevelop网站创建的(在Xcode中填上AppleID它会代办创建),Xcode运行时会打包进入APP内.所以我们使用CSR申请证书时,我们还要申请一个东西!! 就是描述文件!
  • 在开发时,编译完一个 APP 后,用本地的私钥M对这个APP进行签名,同时把从苹果服务器得到的 Provisioning Profile 文件打包进APP里,文件名为embedded.mobileprovision,把 APP 安装到手机上.最后系统进行验证。


    双向验证+权限管理

相关文章

网友评论

      本文标题:[iOS逆向]2、HASH&AED、DES&双向验证

      本文链接:https://www.haomeiwen.com/subject/rxcnfrtx.html