密码学是什么

密码学可以用下面的话来进行概括

注意是因为有这个第三方的存在,才需要密码学, 也就是说是为了防止第三方搞破坏。

密码体制分类

  • 单钥、私钥、对称密码体制
  • 双钥、公钥、非对称密码体制

密码学的主要研究内容

  • 公钥加密
  • 数字签名
  • 私钥加密:分组密码,流密码
  • Hash函数
  • 伪随机数
  • 安全协议:承诺,零知识证明,多方计算

信息安全的基本要素

  • 信息的保密性 (保证信息不泄漏给未经授权的人)
  • 信息的完整性 (防止信息被未经授权的篡改或破坏)
  • 认证性 (怎么知道是你的信息, 需要认证)对某一实体所声称的身份提供
    证实的行动
  • 不可否认性 (数字签名)
  • 匿名性 (例如智能电表, 信息不能透露给别人)
  • 接入控制
  • 可用性

与区块链相关的密码技术

  • 单向函数;
  • 对称加密:AES;
  • Hash函数;
  • 公钥加密:RSA,ECC
  • 数字签名及其推广;
  • 承诺方案;
  • 零知识证明;(如何不暴露密钥的情况下进行验证)

下面会重点讲几个点

哈希函数

哈希函数定义

Hash函数是将任意长度的消息映射成一个较短的定长输出消息的函数.如下形式: h = H(M), M是变长的消息,h是定长的Hash值.

哈希函数特点

哈希函数的特点就是 变长消息经过哈希处理变成定长哈希值, 也可以这样理解•Hash函数的目的是为文件、消息或其它的分组数据产生
“数字指纹”

哈希函数的需求

  • H能用于任何大小的数据分组;
  • H产生定长输出;
  • 对任意给定的x, H(x)要相对易于计算,使得软硬件实现都实际可行;
  • 对任意给定的码h, 寻求x使得H(x)=h在计算上是不可行的(单向的或原像稳固的);
  • 任意给定分组x, 寻求不等于x的y, 使得H(y)= H(x)在计算上不可行(第二原像或弱抗攻击性);
  • 寻求对任何的(x,y)对使得H(x)=H(y)在计算上不可行(碰撞或强抗攻击性);

零知识证明

交互证明协议
证明但是不能透露密钥
发送者给承诺, 验证者给挑战, 发送者给回应。只要挑战失败就表示不能通过, 这不是正确的发送者。

区块链和密码学联系

区块链是比特币的底层技术, 区块链本质上是一条哈希链。

早期哈希链

哈希链最早是由Leslie Lamport提出, 用于解决如何在不透露密码的情况下让邮箱服务器验证自己的身份

他的解决方案是首先把密码进行哈希,开始会把密码哈希N 次,然后把每次的哈希结果放到邮箱服务器的数据库中,此时数据库存储了N个哈希值分别对应密码的n次哈希值, 这就代表了他的密码, 那么如何验证呢? 验证方法很简单, 客户端将密码哈希A次(A<N), 然后将哈希值传给服务器, 服务器对哈希值再一次进行哈希, 把此时的哈希值与最开始存在数据库中的哈希A+1次的结果进行比对 , 如果相同则表示ok, 不同则表示不是此用户, 一共验证N次都成功,则表示·1是此用户的登陆。

在以上的过程中, 有两个重要的点

  • 传给服务器的没有密码, 只有哈希值
  • 从密码到第一个哈希值,再到第二个哈希值,只要有一个地方的哈希值出现问题,验证都不会成功

哈希链串联数据

当我们把上面的密码换成数据的话, 可以说现在这一条哈希链是一个数据库了

<a rel="nofollow"></a>密码学是什么-LMLPHP
而且这样的数据库 有防止篡改公开验证的特性。

共识机制

那么对于这样一条哈希链, 是由谁来上传和记录数据呢, 换句话说, 谁能把数据哈希然后成为哈希链的新节点?
答案是共识机制,显然不能每个节点都能够记录数据, 因为这样每个节点得到的交易可能不同, 导致哈希链不同,出现分支, 我们使用工作量证明来当做共识机制, 由于哈希函数的随机性, 每次的哈希值的每一位的0/1的概率相同, 当节点找到某个值,其哈希值的前n位为0, 就表示工作完成, 此节点就被加入到哈希链里, 完成这一过程需要2^n次哈希计算

总结

首先明白区块链实质上是一条哈希链, 哈希函数能把变长值变成固定长度的哈希值, 且不可逆。 区块链就是把区块头当做数据进行哈希的哈希链, 此时区块链已经有了哈希链的特性了, 但是不能每个人都能把数据哈希然后成功加入链中,所以加入难度, 想要加入链中哈希值必须满足条件(前n位为0这也就是挖矿的过程。 零知识证明则是节点如何在不透露密钥的情况下,验证身份的理论基础。

03-27 08:48