美文网首页
数字签名及证书

数字签名及证书

作者: 咖咖嘻 | 来源:发表于2018-04-28 00:03 被阅读10次

1. 加密:

对称加密:
用对称密钥及算法进行加密。对称密钥,加解密使用相同的密钥。

非对称加密:
用非对称密钥及算法进行加密。非对称密钥,加解密使用不同的密钥。

2. MD5:

(Message Digest Algorithm)消息摘要加密算法,即将原始数据运算为固定长度的值。

作用:确保信息传输过程中完整一致。

特点:压缩性,任意长度的数据,算出的MD5值长度都是固定的;容易计算,从原始数据计算出MD5值很容易;抗修改性,对原始数据做任何修改,计算的MD5值都是不一样的;强抗碰撞,已知原始数据和MD5值,找出具有相同MD5值的数据是很困难的。

3. 数字签名:

首先,生成一对非对称密钥(公私钥),私钥自己保留,公钥公布出去;

计算出原始数据的MD5值(摘要),然后利用私钥对MD5进行签名(加密),然后将原始数据和签名一起发送给用户;

用户用公钥对签名进行解密得到摘要,然后再计算原始数据MD5值并与解密得到的摘要进行比较,得到原始数据是否被修改;

sign0.png

4. iOS 数字签名及证书:

主要有两对非对称密钥,Mac本地一对(local),Apple自己有一对(apple);Mac本地一对是通过keychain.app "从证书颁发机构获取证书" 获得的,私钥保存在本地 keychain.app 中,公钥为 certificateSigningRequest。

将certificateSigningRequest文件(公钥local)上传给apple后台,会用apple私钥对其进行签名,签名和公钥local组成证书,下载到本地,就会与本地私钥local关联起来,在Xcode中选中证书,就会用私钥local对App进行签名。

Apple后台会利用私钥apple对上述生成的证书及device IDs、AppID、entitlement组成的数据进行签名,然后与数据组成provisioning prpfile文件,下载到本地。

编译完app,会用私钥local对app进行签名,然后将provisioning profile打包到app中,在iOS设备中安装时,就会用iOS设备中的公钥apple对provisioning profile文件中的两个私钥apple的签名进行验证,如果验证通过就从provisioning profile取出AppID等信息进行验证,如果都通过,就可以安装了。

sign1.png

5. 涉及的相关概念:

证书:包含公钥或者私钥及其他机构对其的签名。

Entitlements:App的权限列表(推送、内购、后台运行等)。

CertificateSigningRequest:本地公钥。

p12文件:本地私钥。可以导入其他电脑对App进行签名。

Provisioning profile:包含证书、Entitlements等数据及苹果私钥签名的数据包。

6. iOS 生成证书、签名整个流程:

  1. 在 Mac 上通过 keychain.app 生成一对公私钥: Local_Public、Local_Private,保存的 CertificateSigningRequest 文件就是公钥,私钥自动保存在 keychain.app 中;
  2. 将 Local_Public 上传到苹果后台,苹果利用 Apple_Private 对其进行签名,然后签名和 Local_Public 组成证书 cer,下载到本地,双击安装就会 cer 与 Local_Private 关联起来;
  3. 创建 Provisioning Profile,在苹果后台利用 Apple_Private 私钥对 AppId、DeviceIds、第2步创建的证书 cer 和 Entitlements(在 Apple 后台创建 AppId 指定的)等信息进行数字签名,然后签名与上述信息组成 Provisioning Profile 文件,下载到本地,双击安装,与证书进行关联;
  4. 在 Xcode 中设置打包证书,编译完后,会用证书对应的 Local_Private 私钥对 App 进行签名,并将证书对应的 Provisioning Profile 一起打入包中;
  5. 在 iOS 设备中安装 App,每一个 iOS 设备中都内置了一个 Apple_Public 公钥,使用 Apple_Public 公钥进行验证即可;

参考

相关文章

  • 数字签名及证书

    1. 加密: 对称加密:用对称密钥及算法进行加密。对称密钥,加解密使用相同的密钥。 非对称加密:用非对称密钥及算法...

  • 什么是数字证书及不同格式的证书

    证书专题目录 1. 什么是数字证书及不同格式的证书 2. 如何查看和获取证书 什么是证书 什么是数字证书和数字签名...

  • Android HTTPS 证书内容简介

    证书概要 证书是一个包含公钥、持有者(申请人、公司)相关信息及证书颁发者(传说中的CA)数字签名的数字文件。这可以...

  • 常用的Java Keytool Keystore命令

    Java keytool是密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自...

  • 命令行生成Android jks签名文件并获取jks信息

    Java keytool是密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自...

  • CA、数字证书、数字签名

    本文介绍 CA、数字证书和数字签名的概念和原理。 目录 相关概念 数字签名 数字证书 公钥基础设施 数字证书认证机...

  • Https 编程

    目录 数字签名 数字证书 Https 编程 数字签名 数字签名是非对称加密与数字摘要的组合应用 应用场景 校验用户...

  • 数字签名是什么?

    数字签名是什么? 它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(di...

  • SSL+socket 详解-概念

    一、 SSL概述 SSL协议采用数字证书及数字签名进行双端实体认证,用非对称加密算法进行密钥协商,用...

  • 图解密码技术学习-第十章 证书

    证书介绍 什么是证书 先来回顾一下数字签名技术。数字签名就是将消息的散列值用自己的私钥进行加密,然后接收端用对应的...

网友评论

      本文标题:数字签名及证书

      本文链接:https://www.haomeiwen.com/subject/aalwlftx.html