iOS应用签名原理

什么是数字签名

数字签名介绍

通信双方A,B,A拥有RSA(非对称加密)的私钥,B拥有RSA的公钥,现在A要发送一个文件给B,但是这个文件又比较大,RSA一般适用于小文件的加密,所以直接采用RSA不太合适,所以A通过Hash函数,生成文件的摘要(digest)(进行签名),然后使用私钥对这个文件摘要加密,然后将这个加密后的摘要文件和要发送的文件一起发送给B,B接受到文件后,通过公钥对摘要文件进行解密,然后B对发送来的文件通过Hash 函数,生成摘要,用这个摘要和解密好的摘要文件内容进行对比,如果相同,就说明文件没有被修改,如果不同就说明文件已经被串改了。

这个过程中A生成的摘要文件就是对要发送文件的数字签名。

代码签名: 是对可执行文件或脚本进行签名。用来确认软件签名会未被修改或者损坏的措施。和数字签名的原理一样,只不过签名的数据是代码而已

为什么要今行代码签名

在iOS出来之前,以前的主流操作系统(MACOS,Windows)的软件,随便从哪里下载的都能运行,系统的安全存在隐患,盗版软件,病毒入侵,静默安装等待。要想保证下载的APP都是经过苹果官方认可的,那么就要使用代码签名。

苹果采用的代码签名方式-双层代码签名

截屏2020-11-03 上午11.03.15.png
  1. 我们的Mac电脑中包含了一对公私钥 ,公钥M,私钥M,向苹果申请证书,我们首先要生成csr文件,csr文件中包括了公钥M。在钥匙串->证书助理->从证书颁发机构请求证书, 填写相关信息后会生成一个CertificateSigningRequest.certSigningRequest 证书,然后在开发者网站上上传这个文件,就可以生成这证书。然后下载这个证书,双击安装到钥匙串。这个证书中包含了公钥M,还有用私钥A对公钥M签名文件进行RSA加密后的文件。

  2. 在开发这网站上选择bundleID生成相应的测试,上架描述文件,当然,也可以在xcode中生成。然后项目中选择这个bundleID对应的描述文件进行运行。描述文件中包含了苹果后端注册的设备列表,APPID,还有权限文件。

  3. Xocde 在运行的过程中会使用电脑中的私钥(也可以是我们导出来的p12文件),将描述文件和从开发者网站下载的证书一起打包进ipa文件中。也是说ipa文件中包含了MachO文件,MachO文件的签名,描述文件还有从苹果开发者网站上下载下来的证书。

  4. iOS手机在安装的过程中,首先是通过公钥A对证书中的公钥M的签名文件进行解密,解密完成和公钥M Hash后的值对比,相同则说明公钥M是有效的,不相同就拒绝安装。然后使用有效的公钥M对MachO签名文件文件进行解密,解密完成和MachO Hash后的值对比,相同则说明MachO是有效的进行安装,不相同就拒绝安装。这整个过程中当然还包含了对描述文件中信息的验证。

描述文件的作用

苹果为了解决应用滥用的问题,加了一些限制,限制只有苹果后台注册的设备才能安装(development描述文件),并且只能安装特定的APP,还有对APP的推送和iCloud,后台运行等功能进行了限制,苹果对这些权限的开关统一称为授权文件(Entitlements),并将这个授权文件放在了一个叫做Provisioning Profle(描述文件)中,这个文件本质就是一个plist文件,里面包含各种权限信息。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353