SSH & Https & Github中的使用 & iOS证书中的使用

0 First Principle 第一性原理

0-1 SSH是干什么的

用服务器公钥加密自己的登录信息(有对方的公钥,通过自己的用户名密码,可以安全的让对方验证你的身份)

0-2 HTTPS为了解决什么问题

验证对方身份、加密通信内容

0-3 Github,在账号中设置我们自己的公钥干什么

通过git协议,用你的公钥替代登录信息(对方有你的公钥,也可以安全的验证你的身份)

0-4 苹果通过iOS证书,希望做到什么

二次验证:
手机需要知道App的来源、决定是否安装。
服务器知道是谁在提交App、内容有没有被修改。
方式:
手机内置Apple公钥,可以解开证书中的App公钥。App公钥可以解开MachO。这样说明证书、MachoO都没有被篡改过。
提交还不是关键,因为毕竟提交是在登录状态下进行的。

1 SSH的用途

SSH主要用于安全的远程登录

  1. 目的:输入的用户名/密码只希望服务器看到。

  2. 解决:使用服务器的publicKey加密

  3. 问题&解决:防止伪装(即中间人攻击),要对照服务器的公钥(太长,所以都是对照公钥的MD5,对照过程是去官网查看)

1-1 SSH的概念

SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。

OpenSSH是一个开源实现。

1-2 SSH细节

SSH原理与运用(一):远程登录

2 HTTPS

  1. 目的:防止窃听、修改、伪装。(HTTP协议下,Charles、路由器都可以做到)

  2. 解决:彼此确认身份 + 内容加密。

确认身份的方法:签名 + 验证。

签名:用自己的私钥对摘要(如MD5/SHA)加密。

验证:用对方的公钥解密,能解开说明是对方发的,内容不会是被篡改了的。

内容加密:用对方的公钥加密,对方用自己的私钥解密。

3 Github中的使用

github提供两种方式的命令行登录

  1. git@github.com:AFNetworking/AFNetworking.git //必须配置SSH公钥
  2. https://github.com/AFNetworking/AFNetworking.git

第二种在commit代码的时候,都必须配置 邮箱/密码(git的使用,第11条)

第一种方式,自己必须是仓库管理员才可以,设置后,commit/push等就不需要密码了。(需要设置git config --global user.name,不用设置email/password)

这里ssh的原理,是服务器有了你的公钥,就可以验证你的身份了。所以不需要走用户名/密码的验证流程。

4 苹果中的使用

image.png

图片是Hank的图。

4.1 目的:互相确认身份。

  1. 苹果知道是谁提交的App,有没有被修改。(通过开发者本地的密钥对M)//因为有如FastLane等工具可以做提交。

  2. 苹果手机知道App的来源。(通过苹果服务器的密钥对A)

AppStore下载的可以直接安装。

未付款开发者/企业开发者需要用户信任。

付费开发者需要验证是否为测试机

4.2 创建描述文件流程:Mac电脑 <-> 苹果服务器

登录状态下(第一重验证),提交csr文件(包括开发者相关信息、公钥M)。

苹果返回描述文件Provisioning profile.mobileprovision文件),包含了

1. 苹果私钥加密过的`cer`证书文件(包括了`公钥M`)。(经过私钥A处理的Hash,应该只是用于校验的)

2. AppID/测试设备ID/权限文件(`Entitlements`)

4.3 Mac电脑 打包App 流程

  • 对于Distribute版本的App,会用客户端私钥(p12文件),对MachO文件(可执行二进制文件)签名,防止修改。
    a. 签名的过程:首先对APP进行一次SHA256加密,获得APP的HASH值,在用私钥M 对HASH值进行加密就生成了一个APP签名
    b. 因为签名必须有私钥(p12文件),所以如果希望在其他电脑上进行签名,就必须把p12文件传到那台电脑
  • 对于Distribute/Develop版本的App,都会有MachO/描述文件

4.4 iPhone设备 验证App 流程

  • 对于Develop版本的App,会验证测试设备ID
  • 对于Distribute版本的App,iPhone会用公钥A解密描述文件中的公钥M(同时验证了证书是由私钥A签名的),然后用公钥M校验MachO(验证证书是由私钥M签名的)。
  • 此外,当使用企业证书/未付费个人证书安装App时,会要求用户信任一个证书,这个证书的作用等同于密钥对A(但就不是AppStore认证的了,但也是苹果服务器的密钥对)。

4.5 小结

  1. 提交中的文件:

p12文件,用于MachO签名。 -> 该签名用于appstore验证开发者身份,并验证MachO没有被修改。

provisioning profile,用于手机检测要不要安装App,主要是通过cer中的公钥/其他配置文件。

  1. 申请中的文件:

csr文件,用于制作cer证书。

  1. 注意:这里没有涉及开发者对服务器的验证:我怎么知道我提交的是真正的AppStore,因为这个需要自己去保证。

4.6 企业证书

在苹果手机中安装了一个企业证书的公钥,并且在手机中信任。
整个流程中就是,把用Apple公钥解密App的证书,改成了用企业证书解密特定的app。

4.7 越狱后安装盗版app

猜想:越狱应该是,让整个打包和验证过程绕开了Apple公钥,这样整个验证流程就全在自己的掌控中了。

4.8 思考:为什么苹果不把app签名文件用苹果私钥加密(放在描述文件中),这样就不用二次验证了啊?

因为这样不符合单一功能原则。
比如,按现有方案,app更新提交,描述文件无需修改。而如果按照标题中的方案,就需要修改描述文件。

5 Socket与TCP、UDP

5.1 TCP、UDP底层实现都是通过Socket实现的。

主要涉及接口监听(接收数据)、建立socket套接字、发送数据。

5.2 TCP协议中的三次握手和四次握手

TCP协议中的三次握手和四次握手

  1. TCP协议是有连接的双工的通信,即两条连接
  2. 建立连接三次握手
    发起连接A请求 -> 确认连接A请求/发起连接B请求 -> 确认连接请求B
  3. 中断连接四次握手
    发起中断A请求 -> 确认中断A请求、继续发送B的数据 -> B数据发送完成后,发起中断B请求 -> 确认中断B请求。
屏幕快照 2019-05-09 上午10.02.18.png
屏幕快照 2019-05-09 上午10.06.08.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341