iOS逆向-day9:签名机制(中)

简介: iOS逆向-day9:签名机制(中)

二、单向散列函数(One-way hash function)



  • 2.1、单向散列函数的简单介绍
    单向散列函数,可以根据根据消息内容计算出散列值。散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值。


image.png


2.2、单向散列函数的特点

  • 根据任意长度的消息,计算出固定长度的散列值
  • 计算速度快,能快速计算出散列值
  • 消息不同,散列值也不同


image.png


具备单向性


image.png


  • 2.3、单向散列函数的分类单向散列函数,又被称为消息摘要函数(message digest function),哈希函数输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint)
  • 常见的几种单向散列函数
  • MD4、MD5
    产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全
    Mac终端上默认可以使用md5命令
  • SHA-1
    产生160bit的散列值,目前已经不安全
  • SHA-2
    SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit
  • SHA-3 全新标准


  • 2.4、如何防止数据被篡改
    对文件进行 单向散列值获取,然后进行对比单向散列值是否一样


image.png


2.5、单向散列函数的应用 – 防止数据被篡改


  • 防止文件被修改


image.png

image.png

查看下载的文件是否是正版,如 https://www.realvnc.com/en/connect/download/vnc/


image.png


image.png


口令加密:服务器只存储用户密码的 单向散列函数的值,保证安全

image.png

2.6、想象以下场景,我们如何验证信息来源的正确性


image.png

  • Alice发的内容有可能是被篡改的,或者有人伪装成Alice发消息,或者就是Alice发的,但她可以否认
    问题来了:Bob如何确定这段消息的真实性?如何识别篡改、伪装、否认?
    解决方案:数字签名


三、数字签名



  • 3.1、数字签名
  • 在数字签名技术中,有以下2种行为
  • 生成签名:由消息的发送者完成,通过签名密钥生成
  • 验证签名:由消息的接收者完成,通过验证密钥验证


image.png


  • 如何能保证这个签名是消息发送者自己签的?
    答案:用消息发送者的私钥进行签名,接收者用工要进行验证签名
  • 3.2、数字签名和公钥密码
    数字签名,其实就是将 公钥密码 反过来使用


image.png

3.3、数字签名的过程

这样会有一个问题:对内容签名会增加其传输内容的大小,后面会做出改进的方案


image.png

3.4、数字签名的过程 – 改进

对发送的内容的单向散列函数值进行一个 数字签名,接收者只需要对内容做一个散列值的对比即可


image.png



  • 3.4、数字签名 – 疑惑
  • 如果有人篡改了文件内容或者签名内容,会是什么结果?
    答:签名验证失败,证明内容会篡改
  • 数字签名不能保证机密性?
    答:数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改
  • 数字签名的作用
    答:确认消息的完整性、识别消息是否被篡改、防止消息发送人否认


  • 3.5、数字签名无法解决的问题
  • 要正确使用签名,前提是
    用于验证签名的公钥必须属于真正的发送者
  • 如果遭遇了中间人攻击,那么
    公钥将是伪造的、数字签名将失效
  • 所以在验证签名之前,首先得先验证公钥的合法性
  • 如何验证公钥的合法性?
    答:证书


image.png


  • 3.6、证书(Certificate)
  • 证书,联想的是驾驶证、毕业证、英语四六级证等等,都是由权威机构认证的
  • 密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似
  • 里面有姓名、邮箱等个人信息,以及此人的公钥
  • 并由认证机构(Certificate Authority,CA)施加数字签名
  • CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织
  • 有国际性组织、政府设立的组织
  • 有通过提供认证服务来盈利的企业
  • 个人也可以成立认证机构
  • 3.7、证书的利用:保证了公钥的正确性,防止中间人攻击,这样数字签名才有意义


image.png

3.8、证书的注册和下载

image.png




目录
相关文章
|
10月前
|
存储
13-iOS消息转发机制以及常用场景
13-iOS消息转发机制以及常用场景
38 0
|
1月前
|
安全 算法 数据安全/隐私保护
探索iOS与Android的隐私保护机制
【6月更文挑战第5天】在数字时代,隐私保护已成为用户最关心的问题之一。iOS和Android作为两大主流操作系统,各自发展出了独特的隐私保护技术。本文将深入探讨这两个平台在隐私保护方面的策略、技术和挑战。
27 3
|
1月前
|
Linux 数据库 iOS开发
超级签名源码/超级签/ios分发/签名端本地linux服务器完成签名
该系统完全在linux下运行,不存在使用第三方收费工具,市面上很多系统都是使用的是第三方收费系统,例如:某心签名工具,某测侠等,不开源而且需要每年交费,这种系统只是在这些工具的基础上套了一层壳。请需要系统的放大你们的眼睛。
17 0
|
API iOS开发
iOS 沙盒机制
iOS 沙盒机制
123 0
|
安全 iOS开发 开发者
ios签名工具永久有效吗?
苹果APP上架难,不用越狱,下载未上架APP!
|
安全 Linux 网络安全
【IOS实用玩机技巧】爱思助手 IPA 签名功能常见问题汇总(iOS上架)
【IOS实用玩机技巧】爱思助手 IPA 签名功能常见问题汇总(iOS上架)
2373 0
【IOS实用玩机技巧】爱思助手 IPA 签名功能常见问题汇总(iOS上架)
|
iOS开发 Python
iOS小技能:lldb打印block参数签名
iOS逆向时经常会遇到参数为block类型,本文介绍一个lldb script,可快速打印出Objective-C方法中block参数的类型。
171 0
iOS小技能:lldb打印block参数签名
|
数据安全/隐私保护 iOS开发
iOS逆向小技能:解锁无密码的设备、判断设备是否锁定、锁定设备、打开某个程序
介绍lua 函数: runApp、closeApp、getScreenSize、getDeviceID、lua_exit、isFrontApp。
218 0
|
算法 安全 Java
IOS 联真机签名解决方案
IOS 联真机签名解决方案
IOS 联真机签名解决方案
|
算法 安全 JavaScript
IOS 某电商App签名算法解析(二) Frida RPC调用
IOS 某电商App签名算法解析(二) Frida RPC调用
IOS 某电商App签名算法解析(二) Frida RPC调用