精华内容
下载资源
问答
  • iOS签名机制

    2018-05-02 22:04:50
    iOS签名机制ppt,主要有加密,解密,单向散列函数,数字签名,证书,iOS签名机制
  • iOS 签名机制流程

    2020-07-03 13:50:56
    iOS签名机制的作用 保证安装到用户手机上的APP都是经过 Apple官方允许的。 iOS签名机制流程 基本介绍 Mac设备有自己的公钥和私钥,Apple后台充当CA机构,有自己的Apple私钥,每一个iOS设备都有对应的App公钥。 流程 ...

    参考

    https://ke.qq.com/course/314070

    iOS签名机制的作用

    保证安装到用户手机上的APP都是经过 Apple官方允许的。

    iOS签名机制流程

    基本介绍

    Mac设备有自己的公钥和私钥,Apple后台充当CA机构,有自己的Apple私钥,每一个iOS设备都有对应的App公钥。

    流程

    1.编译项目,利用Mac的私钥进行签名,生成一个ipa包。
    2.利用钥匙串->证书助理->请求证书,生成Mac的公钥,也就是Certificatesigningrequest.certsigningrequest文件,在苹果官网,选择创建相应的证书,将Mac的公钥上传,苹果后台会用私钥进行签名,生成证书,也就是ios_XXXX.cer文件。
    3.将证书和app id,设备信息,权限等,用苹果私钥再次签名,生成配置文件,也就是XXX.moblleprovision文件。
    4.在安装到手机的过程中,手机上的苹果公钥对XXX.mobileprovision进行验证签名。
    5.XXX.mobileprovision验证通过后会继续对证书进行验证签名,获取到Mac的公钥。
    6.利用Mac的公钥,验证ipa安装包的签名。
    7.以上流程走完,就可以确定安装到用户手机上的APP都是经过 Apple官方允许的。

    image.png

    补充

    1.签名都是对散列值进行加密。
    2.App Store的流程更简单,苹果对项目用苹果私钥签名,手机用苹果公钥验证签名。
    3.本文如有侵犯隐私或其他请联系我,我将在第一时间整改或删除。

    展开全文
  • iOS 签名机制与证书

    千次阅读 2018-05-09 09:20:50
    iOS 签名机制与证书 声明 纯粹就是总结,很多地方跟参考资料一样,就是自己手动打一遍,自己亲自画个图增加理解和加强记忆力,而不只是复制粘贴 iOS 打包流程也不在此叙述,相信很多人已经对照过各种...

    iOS 签名机制与证书

    声明

    纯粹就是总结,很多地方跟参考资料一样,就是自己手动打一遍,自己亲自画个图增加理解和加强记忆力,而不只是复制粘贴

    iOS 打包流程也不在此叙述,相信很多人已经对照过各种图文并茂的文章一一操作过

    数字签名

    非对称加密

    即加密密钥与解密密钥不同,且成对出现
    对外公开的称为公钥,这对密钥生成者才拥有的称为私钥
    通过私钥加密的密文只能通过公钥解密,反之亦然

    例如,RSA算法,非对称加密加解密比较耗时,实际使用中,往往与对称加密和摘要算法结合使用

    经典用法

    • 防止中间攻击:接收方将公钥公布-》发送方通过该公钥将明文加密-》传输给接收方-》接收方使用私钥解密,通常用于交换对称密钥(由于非接收方无私钥,无法截获)

    • 身份验证和防止篡改:私钥加密授权明文-》将明文+加密后的密文+公钥一并发送给接收方-》接收方用公钥解密密文,再与明文对比是否一致,以此判断是否被篡改,用于数字签名

    摘要算法

    将任意长度文本通过一个算法得到一个固定长度的文本。
    源文本不同,计算结果必然不同
    无法从结果反推源

    例如,MD5和SHA算法

    数字签名

    非对称加密与摘要算法的结合
    结合摘要算法是因为非对称加密的原理限制可加密的内容不能太大

    数字签名验证过程

    情景:有一段授权文本,需要发布,要防止中途篡改内容,保证完整性与合法性

    发送方:
    1. 授权文本-》摘要算法-》得到摘要
    2. 私钥加密摘要得到密文
    3. 将源授权文本+密文+公钥一并发布

    验证方:
    1. 用公钥解密密文得到摘要a
    2. 将源授权文本-》摘要算法-》得到摘要b
    3. 对比摘要a与摘要b是否一致

    签名机制与验证

    最简单的签名(App Store 下载的签名机制)

    当App 提交审核通过后,Apple会对App重签名,所以从App Store下载的app都是苹果的官方签名

    App Store 下载的签名机制与验证

    流程如下:

    1. Apple 官方有自己固定的一对公钥和私钥,私钥A存在Apple后台,公钥A存在iOS设备

    2. app审核通过后,Apple后台用私钥A对其进行重签名

    3. app下载到iOS设备后,iOS设备内置的公钥A会对app的签名进行验证
    4. 如果验证通过,则可运行,否则不能

    当然除了这个方式,还有一下三种方式安装一个app:
    1. 开发时,直接通过USB将应用安装到手机进行调试;
    2. In-House 企业内部分发,可直接安装企业证书签名的App;
    3. Ad-Hoc 相当于企业分发的限制版,限制安装设备数量。

    双层签名

    对与开发调试安装app时,有两个需求:
    1. 安装包无需上传到Apple服务器;
    2. 必须经过Apple允许,且不能被滥用导致非开发app也能被安装

    双层签名

    流程如下:

    1. 在Mac上生成一对公私钥,分别为公钥L,私钥L

    2. Apple 官方有自己固定的一对公钥和私钥,私钥A存在Apple后台,公钥A内置在iOS设备

    3. 把公钥L 上传Apple后台,Apple后台用私钥A对公钥L进行签名,将得到的签名+公钥L打包起来,称为证书
    4. 开发时,编译完一个app后,用本地私钥L对app进行签名,然后把3中的证书、app和app签名一起打包安装到手机上。
    5. iOS设备内置的公钥A对证书中签名进行验证
    6. 如果5中验证通过,再用证书中的公钥L对app签名进行验证,从而间接保证app安装是官方允许的

    双层签名+限制

    上述流程只解决了需要Apple允许才能安装,但还未解决避免被滥用的问题。
    在此,苹果加了两个限制,1.限制设备,2.限制签名只针对某一具体app。

    双层签名+限制

    流程基本如上,只是添加了设备IDs和AppID:

    第三步:把公钥L 上传Apple后台,Apple后台用私钥A对(公钥L+设备IDs+AppID)进行签名,将得到的签名+公钥L打包起来,成为证书

    第五步:iOS设备内置的公钥A对证书中签名进行验证,同时将设备IDs判断当前设备是否符合要求,AppID验证App是否一致

    开发者证书签名到认证最终流程

    上述证书有很多额外信息,实际上出了 设备IDs/AppID,还是其他信息,比如iCloud/Push/后台运行等权限,这些权限开关统称为 Entitlements,它也需要通过签名去授权,这些额外信息都塞在证书里是不合适的,所以就有一个叫 Provisioning Profile 的东西。

    • Provisioning Profile = 证书 + 上述额外信息 + 所有信息的签名
      最终流程

    最终流程如下:

    1. 在Mac上生成一对公私钥,分别为公钥L,私钥L

    2. Apple 官方有自己固定的一对公钥和私钥,私钥A存在Apple后台,公钥A内置在iOS设备

    3. 把公钥L 上传Apple后台,Apple后台用私钥A对公钥L进行签名,将得到的签名+公钥L打包起来,称为证书
    4. 在苹果后台申请AppID,配置好设备IDs, Entitlements,这些额外信息+3中的证书组成的数据用私钥A签名,最后证书+额外信息+签名组成 Provisioning Profile 文件,下载到Mac本地
    5. 开发时,编译完一个app后,用本地私钥L对app进行签名,然后把4中的Provisioning Profile文件打包进App里,文件名为embedded.mobileprovision,安装到手机上。
    6. 安装时,iOS设备内置的公钥A对embedded.mobileprovision的数字签名进行验证,同时对里面的证书的签名也会验证
    7. 如果6中验证通过,确保了embedded.mobileprovision的数据是苹果授权后,再取出里面数据做各种验证,包括公钥L对app签名进行验证,验证设备ID,AppID,权限开关

    概念与操作

    上述步骤与平常具体操作与概念如下:

    1. KeyChain 里的“从证书颁发机构请求证书”,本地生成一对公私钥,保存的CertificateSigningRequest(CSR)即公钥L,私钥L保存在电脑本地

    2. 苹果处理

    3. 在Member Center把CertificateSigningRequest上传到苹果后台生成证书,下载到本地(因为私钥是本地Mac持有,所以团队开发时,可在KeyChain导出私钥,存为.p12文件,其他Mac即可导入这个私钥)
    4. 在Member Center配置AppID/设备UUID/Entitlements, 生成对应的 Provisioning Profile 文件,并下载到本地
    5. 打包编译时,Xcode会根据3中的证书,用对应该证书的本地私钥L对app进行签名,并把4中的 Provisioning Profile 文件命名为 embedded.mobileprovision 一起打包进去。这里对App的签名数据分两部分,Mach-O 可执行文件把签名直接写进这个文件,其他资源文件则保存在_CodeSignature目录下

    6. 6到7的打包验证是Xcode和iOS的事

    其他发布方式(In-House和Ad-Hoc)流程与开发包签名验证流程差不多,In-House不限制安装的设备数

    参考

    iOS App 签名的原理 (表白这个作者,写得太好,循序渐进 )

    漫谈iOS程序的证书和签名机制

    iOS开发者证书以及代码签名学习笔记

    展开全文
  • iOS 签名机制

    2018-12-20 10:40:31
    前言补序:本文源于bang's blog的指导,QiShare整理了对iOS签名机制的知识。在此还要感谢bang神的原作。 因为苹果的安全策略,通过签名机制保证手机上的每个App都是经过苹果认证的。 App的安装方式有四种: 通过...

    级别: ★★☆☆☆
    标签:「iOS」「Apple」「签名机制」
    作者: 忆思梦
    审校: QiShare团队


    前言补序:本文源于bang's blog的指导,QiShare整理了对iOS签名机制的知识。在此还要感谢bang神的原作

    因为苹果的安全策略,通过签名机制保证手机上的每个App都是经过苹果认证的。 App的安装方式有四种:

    1. 通过App Store安装。
    2. 开发者可以通过Xcode安装。
    3. Ad-Hoc 测试证书打包的App,数量限制100。
    4. In-House 企业版证书打包App,信任企业证书后可以使用。

    一、 通过App Store安装

    1. 由苹果生成一对公私钥,公钥内置与iOS设备中,私钥由苹果保管。
    2. 开发者上传App给苹果审核后,苹果用私钥对App数据进行签名,发布至App Store。
    3. iOS设备下载App后,用公钥进行验证,若正确,则证明App是由苹果认证过的。

    二、通过Xcode安装(真机调试)

    由于不需要提交苹果审核,所以苹果没办法对App进行签名,因此苹果采用了双重签名的机制。Mac电脑有一对公私钥,苹果还是原来的一对公私钥。

    (图文步骤不一定相同)

    1. 开发时需要真机测试时,需要从钥匙串中的证书中心创建证书请求文件(CSR),并传至苹果服务器。
    2. Apple使用私钥对 CSR 签名,生成一份包含Mac公钥信息及Apple对它的签名,被称为证书(CER:即开发证书,发布证书)。
    3. 编译完一个App后,Mac电脑使用私钥对App进行签名。
    4. 在安装App时,根据当前配置把CER证书一起打包进App。
    5. iOS设备通过内置的Apple的公钥验证CER是否正确,证书验证确保Mac公钥时经过苹果认证的。
    6. 再使用CER文件中Mac的公钥去验证App的签名是否正确,确保安装行为是经过苹果允许的。

    苹果只是确定这里的安装行为是否合法,不会验证App内容是否修改。

    注: 证书请求文件(CertificateSigningRequest.certSigningRequest),用于绑定电脑,文件中应该有Mac电脑的公钥。

    三、通过Ad-Hoc正式打包安装

    Xcode打包App生成ipa文件,通过iTunes或者蒲公英等第三方发布平台,安装到手机上。流程步骤基本和真机调试相同,差别在于第4步:

    1. 开发时需要打包测试或发布时,需要从钥匙串中的证书中心创建证书请求文件(CSR),并传至苹果服务器。
    2. Apple使用私钥对 CSR 签名,生成一份包含Mac公钥信息及Apple对它的签名,被称为证书(CER:即开发证书,发布证书)。
    3. 编译完一个App后,Mac电脑使用私钥对App进行签名。
    4. 编译签名完之后,要导出ipa文件,导出时,需要选择一个保存的方法(App Store/Ad Hoc/Enterprise/Development),就是选择将上一步生成的CER一起打包进App。
    5. iOS设备通过内置的Apple的公钥验证CER是否正确,证书验证确保Mac公钥是经过苹果认证的。
    6. 再使用CER文件中Mac的公钥去验证App的签名是否正确,确保安装行为是经过苹果允许的。

    四、In-House企业版证书打包

    企业版证书签名验证流程和Ad-Hoc差不多。只是企业版不限制设备数,而且需要用户在iOS设备上手动点击信任证书。

    附加一些东西

    通过真机调试安装和证书打包安装,不加限制,可能会导致被滥用(不通过App Store,只通过第三方发布平台就能安装),因此苹果加了两个限制:在苹果注册过的设备才可以安装;签名只针对某一个App。

    在上述第4步,打包证书进App中时,还需要加上允许安装的设备ID和App对应的APPID等数据(Profile文件)。

    根据数字签名的原理,只要数字签名通过验证,第 5 步这里的设备 IDs / AppID / Mac公钥 就都是经过苹果认证的,无法被修改,苹果就可以限制可安装的设备和App,避免滥用。

    苹果还要控制iCloud/push/后台运行等,这些都需要苹果授权签名,苹果把这些权限开关统称为:Entitlements,去让苹果授权。

    因此证书中可能包含很多东西,不符合规定的格式规范,所以有了Provisioning Profile(描述文件),描述中包含了证书以及其他所有的信息及信息的签名。

    四种签名方式的区别

    签名方式说明
    App Store用于发布到App Store。使用的是发布证书(Cer)。
    Ad Hoc安装到指定设备上,用于测试。使用的是发布证书(Cer)。
    Enterprise企业版证书签名。
    Development安装到指定设备,用于测试。使用的是开发证书(Cer)。

    总结一下最终流程

    1. Mac电脑和苹果分别有一套公私钥,苹果的私钥在后台,公钥存放在每个iOS设备,Mac的私钥存放在电脑,公钥后面要发送给苹果服务器。
    2. Mac从钥匙串生成CSR(就是或者包含公钥),上传至苹果服务器。
    3. 苹果服务器使用私钥对CSR进行签名,得到包含Mac公钥以及其签名的数据,称为证书(Cer文件)。
    4. 从苹果后台申请Appid,配置好设备ID列表及App的其他权限信息,使用苹果的私钥进行签名生成描述文件(Provisioning Profile),和第 3 步的证书Cer一并下载到Mac安装,钥匙串会自动将Cer与之前生成CSR文件的私钥关联(公私钥对应)。
    5. 使用Mac编译App后,使用Mac私钥进行签名,并把 描述文件 打包进App,文件名为embedded.mobileprovision
    6. 安装App时,iOS设备取得证书,使用内置的Apple私钥去验证Cer及embedded.mobileprovision文件。
    7. 保证Cer及embedded.mobileprovision是经过苹果认证之后,从Cer中取出Mac公钥,验证App签名,及设备id列表、权限开关是否对应。
    1. 其他人想要编译签名App时应怎么做? 简单就是把私钥给他。私钥也是从 钥匙串 中导出,就是.p12文件,其他Mac导入私钥后就可以正常使用了。
    1. 查看ipa包中注册的设备ID 解压.ipa文件,得到App数据包,显示包内容,找到embedded.mobileprovision文件所在目录,运行命令security cms -D -i embedded.mobileprovision
    名词概念说明
    证书请求文件(CertificateSigningRequest.certSigningRequest)本地公钥。
    证书(Cer)公钥及苹果签名后的信息。
    Entitlements包含了 App 权限开关列表。
    p12本地私钥,可以导入到其他电脑。
    Provisioning Profile包含了 证书 / Entitlements 等数据,并由苹果后台私钥签名的数据包。

    参考文章:

    1. iOS App 签名的原理
    2. bang's blog

    关注我们的途径有:
    QiShare(简书)
    QiShare(掘金)
    QiShare(知乎)
    QiShare(GitHub)
    QiShare(CocoaChina)
    QiShare(StackOverflow)
    QiShare(微信公众号)

    推荐文章:
    iOS 扫描二维码/条形码
    iOS 了解Xcode Bitcode
    iOS 重绘之drawRect
    iOS 编写高质量Objective-C代码(八)
    奇舞周刊

    展开全文
  • 彻底搞懂IOS签名机制

    2020-12-04 17:41:31
    二、数字签名 1、单向散列函数 2、数字签名 三、数字证书 一、加密/解密 常见的加密解密算法分为“对称加密”和“非对称加密”两种。 1、对称加密: 通信双方共享同一个秘钥,发收信双方要想进行加密通信,...
    展开全文
  • IOS签名机制和配置文件、iOS签名机制的作用:保证安装在手机上的应用程序经苹果公式验证和许可。无论是真机调试还是发布App,开发人员都必须经过一些复杂的步骤。以下广州贝壳技术将详细说明。贝壳科技()是内测大师对...
  • iOS app签名机制

    千次阅读 2017-12-21 22:01:23
    前言在移动开发中,iOS系统下的app和andorid系统下的app一个很大的区别是:android系统下,app的安装很方便,可以从多个应用商店下载(小米应用商店、华为应用商店),也可以直接下载apk的包安装。而在iOS系统下,对...
  • iOS签名机制解析

    2019-10-01 09:45:18
    最近遇到一个签名的问题,借机把iOS签名相关知识点研究了一下。现总结如下:(研究过程中参考了这位仁兄的博客。很全面,本文也有部分借鉴) 非对称加密 这个是签名机制的算法基础。所谓非对称加密的是相对于对称...
  • 想要了解iOS的签名机制,需要先对加密解密有个简单的了解,再是单向散列函数,然后是数字签名,再是证书,最后就是iOS签名机制了 加密解密 加密主要分为: 1.对称加密:加密用的密钥和解密用的密钥是相同的 2.非对称...
  • 下面切入正题,以前对ios签名机制不太了解,只知道配置个开发者证书用于调试和打个企业包什么的,遂花了点时间去学习一下ios的打包签名机制,由于初学,本文的不足或是错误之处,还望多多批评指教。
  • ios签名机制的理解

    千次阅读 2016-03-01 11:54:12
    一、非对称算法和数字签名区别之前的对称加密算法(加密解密用的是同一个秘钥),非对称加密算法需要两个秘钥,即公钥和私钥来进行加密和解密,它俩是成对出现的,如果用公钥加密的内容,只有对应的私钥才能解密,...
  • iOS出来之前,主流的操作系统(MacOS/Windows)软件随便从哪里下载都能运行,系统安全存在隐患,盗版软件、病毒入侵、静默安装等等,苹果希望解决类似的问题,保证在iPhone iOS上的APP都是经过苹果官方允许的,...
  • iOS RSA的网络安全模型、iOS签名机制总结
  • 通常我们说的签名就是数字签名,它是基于非对称加密算法实现的。 对称加密是通过同一份密钥加密和解密数据,而非对称加密则有两份密钥,分别是公钥和私钥,用公钥加密的数据,要用私钥才能解密,用私钥加密的数据,...
  • 摘要 ...登录机制 ...登录机制大概分为以下三个阶段: 1.登录验证: 是指客户端提供用户名和密码, 向服务器提出登录请求,服务器判断客户端是否可以登录并向客户端确认. 2.登录保持:是指客户端
  • iOS签名校验那些事儿

    2021-10-15 10:46:39
    导读:iOS签名校验机制是苹果生态安全的基础,日常工作中无论是开发阶段还是测试阶段常常会遇到很多需要通过签名机制解决的问题,了解iOS签名机制的原理有助于提高我们解决相关问题的成本和效率。本文首先介绍数字...
  • 由浅到深理解iOS签名机制

    千次阅读 2017-06-20 15:44:56
    一直以来,针对iOS开发者,特别是刚入行的开发者,apple的签名机制是一个理解的难点,多种证书、描述文件、证书签名请求(CSR)等等,都是一些专业名词,加上apple签名机制的复杂性,难以理出头绪。本文将由浅入深解析...
  • 摘要 最近公司准备做一个安全级别比较高的项目:技术总监给我们提出...经过一番思考,觉得支付宝的签名完全符合这样子的需求。但是之前自己对签名、RSA等知识也是知道的很少,所以花了一番功夫学习了一下。... 一....登录机制
  • iOSApp签名的原理

    2021-02-25 19:00:47
    iOS签名机制挺复杂,各种证书,ProvisioningProfile,entitlements,CertificateSigningRequest,p12,AppID,概念一堆,也很容易出错,本文尝试从原理出发,一步步推出为什么会有这么多概念,希望能有助于理解iOS...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,794
精华内容 4,317
关键字:

ios签名机制