「区块链入门笔记」 1.密码学基础

概述

  • 1.古典密码学
  • 2.现代密码学
  • 3.公钥密码学
  • 4.哈希算法
  • 5.比特币加密使用的函数的额外特征
  • 6.区块链中的密码学

1.古典密码学

1949 年以前的密码学统称为古典密码学,安全基于加密算法的保密性。

2.现代密码学

以 1949 年香农的信息论的诞生为标志。
加密算法、解密算法同时用一套密钥。因此也叫「对称加密算法」

3.公钥密码学

需要两个密钥「公钥(Publickey」「私钥(Privatekey)」
用公钥进行加密后,只有对应的私钥能解密,
用私钥加密,只有对应公钥萌解密。

4.哈希算法

Hash Function 也称为散列函数,能计算出一个数字消息所对应的、长度固定的字符串(又称消息摘要)的算法。

主要特征

  • 输入的 x 可以是任意长度的字符串
  • 输出结果 H(x) 长度固定
  • 计算 H(x) 的过程高效,对于长度为 n 的字符串,时间复杂度为 O(n)

    5.比特币加密使用的函数的额外特征

  • 免碰撞,当 x≠y 时,不会出现 H(x)=H(y)
  • 隐匿性,不可能根据 H(x) 推算出 x
  • 不存在比穷举更好的方法

    6.区块链中的密码学

  • (1) 椭圆曲线算法
    比特币使用了基于 secp256k1 椭圆曲线数学的公钥密码学算法。它包含私钥与公钥,交易发出方私钥进行签名,并将签名与原始数据发送给整个比特币网络,网络中的所有节点则用公钥对交易有效性进行验证。签名算法保证了交易是由拥有对应私钥的人所发出的
    数据签名算法的核心在于证明数据是签名者发出的、不可抵赖的,而不是待签名数据本身的保密性。
  • (2) SHA-256哈希算法
    SHA(Secure Hash Algorithm)是一个密码散列函数家族。
    包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512五种变体,主要适用于数字签名标准。后4个哈希函数又并称为SHA-2。
  • (3) 对称加密算法
    AES(Advanced Encryption Standard)是一个对称分组密码算法,是美国新的数据加密标准而被广泛应用在各个领域。其大致运作原理和前文的对称加密算法的流程相同。
  • (4) Base58编码
    编码算法的目的不是为了保护数据的安全性,而是为了可读性。
    可读性编码不改变信息内容,只改变信息内容的表现形式,部分编码算法还加入了容错校验功能,以保证传输过程中数据的准确性和完整性。
    Base58 主要用于产生比特币的钱包地址。相比 Base64 , Base58 不使用数字“0”、大写字母“O”、大写字母“I”和小写字母“l”,以及“+”和“/”符号。
    设计Base58的主要目的是:
    1)避免混淆。在某些字体下,数字0和大写字母O,以及大写字母I和小写字母l非常相似。
    2)不使用“+”和“/”的原因是,非字母或数字的字符串作为账号的一部分被接受。
    3)没有标点符号,通常不会被从中间分行。
    4)大部分的软件支持双击选择整个字符串。
    比特币使用了 Base58 算法来对公钥的 Hash160 及私钥进行编码,从而生成以 1 或 3 开头的比特币地址及WIF(Wallet Import Format)格式的私钥。