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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS--双向验证原理,证书验证原理,描述文件等相关的知识,希望对你有一定的参考价值。

参考技术A 公钥--我们用公钥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文件内;

双因素身份认证动态口令技术原理及优势

双因素身份认证动态口令技术原理及优势_身份认证

双因素认证技术如今已经广泛应用于C端用户和B端用户,双因素认证类型包含动态口令、生物识别、U盘证书等,由于动态口令的全场景兼容性和使用的便捷性,应用最为广泛,最常见的就是短信验证码,短信验证码就是动态口令的一种。

动态口令除了有短信验证码,还有硬件令牌、软件令牌(APP令牌、微信/企微小程序令牌、钉钉小程序令牌、飞书小程序令牌、H5令牌)等,其中硬件令牌和软件令牌技术原理一样,短信验证码属于消息令牌,消息令牌的技术原理会有所不同,接下来就详细剖析下这两类令牌的技术原理。

硬件令牌和软件令牌

这类令牌通常每60s自动变换1次,令牌端根据加密算法、唯一识别号和当前时间三种要素自动生成6位随机数字(也可以是4位),在服务端,也有同样的加密算法、唯一识别号和时间,以此生成同样的动态口令,验证通过;

双因素身份认证动态口令技术原理及优势_身份认证_02

消息令牌

因为消息令牌需要短信网关,认证逻辑和原理有所不同,需要借助做过的实际案例描述(详细案例可搜索“中科恒伦双因素认证助力青岛双瑞云桌面登录保护”)

部署架构

注:CKEY SERVER指中科恒伦双因素认证系统;

双因素身份认证动态口令技术原理及优势_双因素认证_03

1.Netscaler通过Radius协议访问CKEY 1812端口完成对接;

2.Netscaler通过LDAP协议访问AD同步账号;

3.CKEY通过LDAP协议访问AD 389端口同步账号和对应的手机号;

4.CKEY调用短信网关接口发送短信;

访问流程

双因素身份认证动态口令技术原理及优势_双因素认证_04

1.用户输入用户名、静态密码访问Netscaler;

2.Netscaler将用户名、静态密码转发至CKEY做认证;

3.CKEY将用户名、静态密码转发至AD做认证;

4.AD返回认证结果,同时CKEY生成动态码并向短信网关发送一条指令:请将该动态码发送至指定手机号(此处指定手机号是指该账号对应的手机号,AD同步获得);

5.短信网关收到指令并执行发送;

6.用户的手机号收到短信验证码,输入登录;

7.Netscaler将短信验证码转发至CKEY;

8.CKEY验证动态码正确与否,然后将验证结果和AD的验证结果反馈至Netscaler;

9.Netscaler根据反馈结果允许/禁止用户登录,当且仅当静态密码和动态口令都验证正确的情况下才允许用户登录,否则登录失败;

稍微总结下:

消息令牌是先向服务端申请动态口令,然后服务端生成后通过第三方服务发给用户端,最后再发给服务端申请认证!

而硬件/软件令牌是用户端自己生成动态口令,直接发给服务端认证,这是两者核心认证逻辑的区别;

动态口令本身的优势点是非常多的,如:

1、通常情况下动态口令是6位数,每1位由“0-9”10个数字组成,所以每个动态口令有100万种变化可能;

2、中科恒伦双因素身份认证系统后台可以设置错误尝试次数,比如3次,当错误超过3次,就会锁定当前账号(默认3分钟后自动解锁),此时服务端拒绝验证动态口令,此时被爆破的几率是3/100万;

3、正常动态码1分钟变换1次,所以等3分钟自动解锁后,动态口令已经变成了新的,前面的3次尝试无效,需要从头开始尝试,所以整体被爆破几率维持在3/100万;

4、另外默认情况下同一个动态口令只能使用1次,再次使用是无效的,比如我要登录一个系统,拿出或收到动态口令输入系统登录,此时却不小心被其他人看到了动态口令,他拿着我的动态口令去登录我的账号是无法登录的,这就有效杜绝被偷窥风险;

硬件令牌、软件令牌、消息令牌优劣各有千秋

硬件令牌优劣:

双因素身份认证动态口令技术原理及优势_双因素认证_05

1、完全独立存在,安全性最高;

2、防爆防拆,结实耐用;

3、可随身携带,适用于任何场景(部分严格的机房不让带手机,也没有信号,只有硬件令牌适合);

唯一的缺点就是贵一些!

软件令牌优劣:

双因素身份认证动态口令技术原理及优势_双因子认证_06

1、移动端软件,随身携带;

2、动态码实时离线生成,不受网络信号限制,随时用随时看;

3、纯软件,性价比高!

劣势有二:

1、受手机本身的影响,如果没电就无法使用;

2、部分不让带手机的场合无法使用;

消息令牌优劣:

双因素身份认证动态口令技术原理及优势_双因子认证_07

1、用户无感知使用,使用上最为方便;

劣势也比较明显:

1、同样受手机本身的影响,如果没电无法使用;

2、受手机信号的影响,信号不好无法使用;

3、安全性相对硬件/软件令牌低一些,因为有密码传输,有被拦截的风险;

所以综合来看,硬件令牌适用于安全级别更高的场景,如内部机房、核心系统或高要求的保密单位等,软件令牌适用于普通企业员工日常办公使用,消息令牌适用于C端互联网用户使用。

另外多说一句,国产化大环境下,动态口令算法一定选择SM3!

以上是关于iOS--双向验证原理,证书验证原理,描述文件等的主要内容,如果未能解决你的问题,请参考以下文章

iOS WKWebView 自签名证书单向验证+双向验证

https证书验证原理是什么

https原理:证书传递验证和数据加密解密过程解析

带你使用Nginx实现HTTPS双向验证

ssl证书的工作原理?

如何为通过 SSL 进行双向身份验证的本地测试创建客户端证书?