iOS逆向基础04-密码学

一. 加密常识

1.1 对称加密和非对称加密

对称加密

  • DES:加密标准
  • 3DES:加强版DES
  • AES:现在的加密标准iOS系统的加密方式

非对称加密

  • ECC(椭圆加密算法,Elliptic Curve Cryptography)推荐
  • RSA
  • Elgamal

1.2 密钥配送问题

  • 事先共享密钥
  • 公钥密码(rsa等非对称加密)

1.3 加密方式

  • ECB:将每一个数据块单独加密
  • CBC:加密每一个数据块,都会与上一个数据块之间有联系.能够保证密文的完整性,任何一个数据块改变了,都会对后面的数据造成破坏.(推荐)

1.4 单向散列函数(hash函数)

  • MD5 ---------- 128bit,不安全
  • SHA-1---------160bit,不安全
  • SHA-2
  • SHA-256 -------256bit,安全推荐
  • SHA-384 ,,,,,,SHA-512
  • 在具体算法的选取上,你只需要记住:对称加密用 AES-CTR、非对称加密用 ECC、散列算法用 SHA256 加盐。这些算法就能够满足大部分的使用场景了,并且在未来很长一段时间内,都可以保持一个较高的安全强度。

二. 证书

  • CA机构 : 证书授权中心,是电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
  • 证书 : 是CA机构用自己的私钥将用户的公钥进行签名,保证用户的公钥不被篡改.
  • CA的数字签名,主要是为了证明你拿到的CA证书确实是CA机构颁发的.
  1. 服务器申请一个CA证书.
  2. CA机构拿到服务器的公钥、信息,用hash算法得到一个信息摘要并用自己的私钥进行签名.然后把服务器的公钥、信息签名组合成一个证书给服务器.
  3. 客户端发送请求到服务器,服务器会将自己的公钥、信息返回给客户端,客户端拿到服务器的公钥、信息,用hash算法得到一个信息摘要;
    然后在CA机构拿到公钥解密CA的证书可以拿到CA认证的服务器的公钥、信息进行hash算法也会得到一个信息摘要.
  4. 如果两个信息摘要是一样的,就说明信息却是来自于真正的服务器,没有中间人攻击.

三. SSL/TLS

3.1 SSL(Secure Sockets Layer 安全套接字协议)的作用

  • 机密性:SSL协议使用密钥加密通信数据。
  • 可靠性:服务器和客户都会被认证,客户的认证是可选的。
  • 完整性:SSL协议会对传送的数据进行完整性检查。

3.2 SSL 基本原理

  1. 客户端向服务器发送Client Hello 消息,包含随机数、加密方法等参数
  2. 服务端收到ClientHello消息后,再发送ServerHello消息回应客户端
  3. 服务器将公钥发送给客户端,客户端通过证书验证服务器的真假性单向认证完成
  4. (可选):服务器如果开启了双向认证,那么就需要客户端将自己的证书发送给服务器
  5. 两端使用协商好的加密算法进行通讯

四. HTTPS

HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。

五. 中间人攻击

5.1 公钥私钥问题

私钥只有自己知道,公钥可以分发给其他人

  • 公钥加密,私钥解密,可以用来传递消息(加密).(任何人都可以用公钥加密东西发给alice,因为只有alice有私钥,所以只有alice能解密)
  • 私钥加密,公钥解密,可以用来验证(签名).(alice用私钥加密东西,有alice公钥的就可以解密.如果bob想冒充alice,因为bob不知道alice的私钥,那么bob只能用自己的私钥进行加密,但是别人还是用alice的公钥进行解密,就会出错)
  • 传递消息验证签名 是相反的.

5.2 安全隐患

alice要给bob发消息.
需要拿到bob的公钥,加密消息然后发给bob.
bob再用自己的私钥进行解密.
-----warning------
如果alice拿到的公钥不是bob的,而是中间人的呢?
所以,确定拿到的公钥必须是bob的,才是安全的.
这时候就需要CA机构的证书来做安全保障.

六.charles

平时我们总会用charles抓包,只要给手机设置了代理,就能在电脑端看到charles拦击的app和服务器的通讯包,下面就围绕charles来看看iOS逆向相关的东西.

charles官网介绍:
Charles can be used as a man-in-the-middle HTTPS proxy, enabling you to view in plain text the communication between web browser and SSL web server.

Charles does this by becoming a man-in-the-middle. Instead of your browser seeing the server’s certificate, Charles dynamically generates a certificate for the server and signs it with its own root certificate (the Charles CA Certificate). Charles receives the server’s certificate, while your browser receives Charles’s certificate. Therefore you will see a security warning, indicating that the root authority is not trusted. If you add the Charles CA Certificate to your trusted certificates you will no longer see any warnings – see below for how to do this.

6.1 charles的使用

  1. mac端下载一个charles作为手机的代理使用
  2. 选择安装一个手机或者远端浏览器的证书
安装证书.png
  1. 手机和电脑连接同一个wifi,点击该wift的设置,配置代理,服务器为电脑的IP地址,端口号为8888
设置代理
  1. 打开safari输入chls.pro/ssl下载charles的证书,打开设置,安装该证书.
  2. 打开charles,就可以看到你app的所有网络请求了.

6.2 charles的原理

为啥charels能拦截app的网络请求呢?
很多人听说https是安全的,自己公司用了https后为啥还能被charles拦截明文请求呢?

  • 😂其实是概念用混了.
  • https确实是安全的,app和charles通信是安全的,charles和服务器通讯也是安全的.
  • 但是app到服务器不是安全的,因为有了man-in-the-middle身份的charles这个代理.

简单看下charles的工作过程吧.

  1. 客户端向服务器发起HELLO WORLD的HTTPS请求,客户端使用charles的公钥加密HELLO WORLD
  2. 因为客户端设置了代理,所以charles接收到请求
  3. charles使用自己的私钥解密HELLO WORLD
  4. 如果服务器没有对客户端做双向认证,那么charles就可以拿着客户端的请求向服务器发送请求
  5. 服务器将公钥发送给charles
  6. charles作为中间人,解密服务器的数据然后用自己的私钥加密发送给客户端,客户端使用charles的公钥进行解密.

N. 答疑

  • MD5绝对安全吗?
    答案是NO,md5为32位,也就是说它能表示的最多的可能为36(26个字母加10个数字)的32次方,而地球上有那么多的东西可以加密.所以有可能不同的东西的MD5值是一样的
  • base64是加密方式吗?
    base64只是对二进制进行编码解码的方式,不能用来加密. base64依次截取6bit然后用64种字符表示,如果最后为000 000,那么用=表示. 所以base64其实共有65种字符.
  • 使用https就安全了吗
    https本身是安全的,因为https内置了SSL协议,可以使得两端通讯完全使用的是密文传输.
    但是https只是整个通讯环节的一部分,如果没有设置好可能会受到中间人攻击,所以还需要进行单向认证或者双向认证设置,才能更为安全.

1.如果客户端没有做认证
黑客可以直接抓包,可以修改通信内容

2.如果客户端做了单向认证
黑客可以逆向客户端,并修改客户端的认证方式,然后就可以进行上步的操作

所以为了更加的安全,我们可以给传输的数据自己加一次密.这样的话就算有中间人攻击,拿到的却是我们加密过的东西,那么中间人还得再破解一次,相当难了.

  • 我们在使用md5的时候,可以自己加盐.(通过服务器下发不同的盐,不同的用户不同的盐)
  • hmac: MD5升级版,通过加盐来增强密码强度,盐在用户注册的时候下发,并把每个用户不同的盐存在服务器.(加时间戳,服务器向前验证1分钟,这样黑客破解就只有1分钟)
  • 为了防止加密方式被破解,服务器可以用当前时间往前推1分钟然后在本地MD5,判断是否和客户端传过来的一样?如果一样则说明是客户端传过来的值,而不是中间人.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容