certificate - 带证书的签名
问题描述
我试图了解它是如何使用证书来处理文件签名的。
我已经了解它是如何为文件的“基本”签名工作的:
- Bob 想向 Alice 发送“我已签名”
- Bob 散列“我已签名”,返回“ABCDEF”
- Bob 用他的私钥加密哈希,返回“101010”
- Bob 将加密部分“101010”发送给 Alice,并发送消息“我已签名”
- Alice 对文件进行哈希处理,返回“ABCDEF”
- Alice 用 Bob 的公钥解密加密部分“101010”,返回“ABCDEF”
- Alice 匹配这两个值,这意味着消息确实来自 Bob
我今天与在一家处理身份验证产品、令牌、手机应用程序、卡片等的公司工作的人讨论过。
关键是,该公司正在提供两种或多或少具有强大价值的证书(取决于他们在多大程度上成功地识别了流程之上的用户)。
正如以一种非常模糊的方式向我解释的那样,“每个用户都需要一个证书来允许他签署他的文件”,“我们用公钥加密”(我认为这点可能不是真的),“证书包含公众钥匙”。
我试图通过寻找方案来达到目的:维基百科方案
但我越来越迷失了。
我认为数字签名是使用我上面描述的第一种方法进行管理,而电子签名是将证书添加到流程中的事实。
但是怎么做?有人可以描述一下步骤吗?
解决方案
我们用公钥加密
这是真的,因为它被称为非对称加密。每个人(可能)都拥有公钥,因此可以加密发送给持有私钥的人的消息。
可能让您感到困惑的是混淆的事情:签名和加密
- Bob 想向 Alice 发送“我已签名”
- 鲍勃散列“我已签名”
- Bob 需要证书才能执行后续步骤
- Bob 生成一个私钥和一个公钥
- Bob 生成包含公钥的证书请求并使用私钥对其进行签名
- Bob 向 CA 提交请求
- CA颁发证书(用 CA 私钥签署 Bob 的公钥)
- Bob用他的私钥对哈希进行签名
- Bob 需要 Alice 的证书才能进行后续步骤
- Bob 向 Alice 索要她的公钥(证书)
- Alice 生成一个私钥和一个公钥
- Alice 生成包含公钥的证书请求并使用私钥对其进行签名
- Alice 向 CA 提交请求
- CA颁发证书(用 CA 私钥签署 Alice 的公钥)
- 爱丽丝向鲍勃发送她的公钥(证书)
- Bob用 Alice 的公钥加密消息、散列和签名”
- Bob 将加密数据发送给 Alice
- 爱丽丝用她的私钥解密数据
- Alice 散列“我已签名”并使用 Bobs公钥验证签名
关键是
- 爱丽丝是唯一能够阅读该消息的人,因为她是唯一持有用于加密数据的私钥的人。
- Alice 可以确定该消息来自 Bob,因为他是唯一持有生成签名的密钥的人。
推荐阅读
- elasticsearch - 考虑 ES 用于以下用例
- html - 添加边框后无法向我的 h1 添加边距
- excel - 如果范围在任何单元格中显示“失败”,我如何转移到工作表?
- oracle - 如何使Oracle不是由SYS而是由过程的所有者执行回调过程
- android - 如何将背景图像设置为形状?
- sql - 即使一个查询参数总是计算为假,是否也会处理行
- php - 如何在 codeigniter 中 update_batch 和 insert_batch 新条目?
- azure - Azure Functions 2 的 Azure 服务总线触发器输入/输出的共享访问签名支持
- python - 为什么此代码的 Python (NumPy) 比 MATLAB 慢 100 倍以上?
- django - 如何在 django rest 中保存文件