iOS--双向验证原理,证书验证原理,描述文件等

iOS--双向验证原理,证书验证原理,描述文件等,第1张

公钥--我们用公钥M表示,(M就表示Mac电脑,为了好区分,所以用公钥M表示)

私钥--公钥和私钥成对出现,私钥M表示

私钥A--(A就表示Apple,为了好区分,所以用私钥A表示)

公钥A-- (与服务器私钥A成对)

(本地创建了csr文件以后,可以通过命令查看该文件信息:“$openssl asn1parse -i -in 文件名.certSigningRequest” )

a.设备ID;

b.appID;

c.权限文件;

d.证书文件;

其中d,证书文件包含以下内容:

a.公钥M;

b.公钥M的HASH值;

c.公钥M的签名信息(用私钥A签名的信息);

前往文件夹,可以查看电脑里面的描述文件:~/资源库/MobileDevice/Provisioning Profiles/

cd到文件目录下,可以通过命令查看描述文件:$security cms -D -i 文件名.mobileprovision

a.MachO 文件(一种可执行文件);

b.利用私钥M对MachO签名的文件;

c.描述文件--证书文件;

1.首先验证文件夹里面的证书文件,利用手机里面的公钥A,对证书进行验证(证书包含公钥M签名,所以公钥A可以验证证),验证了证书是否被调包;

2.iPhone手机取出证书里面的公钥M,对app进行验证(因为app是用私钥M进行签名的);

这样的验证过程,验证了APP是否是苹果官方允许的应用,原因如下:

1.苹果允许你的行为,才会给你返回证书文件,给你电脑的公钥M配发证书;

2.有了这个证书,你才能打包APP,将APP安装到手机;

3.利用手机里面的公钥M,验证证书,就侧面的验证了安装行为是否非法;iPhone对app内容,并不做验证;

双向验证,其实,就是两对公私钥的验证!

1.限定设备(只能安装到注册过的手机上);

2.对APP进行限定,只能对某一个app进行签名;

3.还会针对性的进行推送,NFC等等进行限定;

苹果公司,把这一系列限定 *** 作,统称为:授权文件(Entitlements文件),并将这个文件放在了一个叫做Provisioning Profile(描述文件)文件中;

描述文件是在appleDevelop网站创建的,(Xcode登陆appleID以后,它会代替网页自动创建),Xcode打包的时候,会打包进APP文件内

这个文件是开发者签证的文件。

比如说,开发了一个苹果应用程序,那么,要通过这个文件验证之后,才能安装在iPhone手机上。

技术开发者,对这个文件再陌生不过了。

步骤如下:

(1)在主屏幕上找到“设置”图标并打开它。

(2)在设置的列表下,轻按选择“通用”按钮。

(3)然后,向上拖曳屏幕,以显示到屏幕的底部。

轻按“描述文件”按钮。

(4)接着,就就可以查看到“描述文件”的信息。

总结:

其实,iPhone里边的描述文件,有没有关系不大。

而且,这个文件可以在MAC上,需要时进行安装。

如果说没有这个文件,则无法将开发者应用程序,安装到iPhone手机上。

一般用户,可以不用理会这个描述文件。

接着上一篇双向签名之后

有了上面那个流程后,看似安全了,可是他真的完美了吗?其实还是有一个缺陷的,开发者完全可以拿到证书后直接给手机安装上,这样做不是就绕开Appstore了吗,那怎么才能让开发者在调试的时候可以直接安装在手机上,而发布的时候必须在Appstore上呢?答案只有一个:描述文件.

还记得咱们在申请证书之后想要成功的真机调试,还有一个重要步骤吧,就是分别配置开发模式、发布模式的描述文件吧"AAA.mobileprovision".你必须要在描述文件内部指定你的设备号,才能调试你对应的app吧。

描述文件是什么?其实就是一组权限控制的文件,它里面记录了可以被运行的设备、你的应用的appid、等其他权限类控制。口说无凭,我这里打开一个开发者模式的描述文件看一看。

我们挑重要的看,它里面就直接记录了指定运行的手机设备号、这个证书日期、还有你开发者的相关信息,当然,你不要尝试着你手动更改他就能够绕过监控,看到那个<key>UIDI<key>了吗?这个描述文件也自带一组唯一编码的,也是会经过效验的,你想要更改信息,只能从苹果服务器去申请,他会随着你xocode打包的时候一起放入App。

hash值 = 数据(100元)进行一次hash,然后用私钥加密, 服务器用公钥解开这个hash值,自己把数据hash意思,和这个hash进行比较。 这个值只有客户端的私钥可以修改。

举一个小小的例子。你消费了100元,并将此消息发送到服务器执行对应 *** 作。这个时候完全有可能出现一个第三方截获这个信息,将100元改为1000元再发给服务器啊。这时候,服务器只要将这个1000元进行一下hash,然后和你发过来的hash比较一下就知道了,因为你发过来的是对100元的hash。

hash是什么?消息摘要,签名是什么?就是对你的app的消息摘要!

还是口说无凭,下面我来看一看。

解压你的app后这个文件夹里面就是你的签名,里面记录的是对你的资源类文件的签名:比如图片、音视频等。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/6033532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存