区块链及其加密技术

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 区块链及其加密技术

在现在非常火爆的区块链技术关键部分就是加密技术,这节通过区块链来了解一下密码学。


1. 对称加密与非对称加密


      中使用的加密算法都是非对称加密。在此给大家简单介绍一下对称加密与非对称加密。图1是一个典型的加解密过程。

image.png

1 加解密过程

      如果加密密钥与解密密钥相同则为对称加密,否则为非对称加密。图2是一个对称加密过程。

image.png

2 对称加密过程


      这里明文为数字,加密算法与解密算法互为逆运算(×和÷),加解密密钥均为3。一般而言加密密钥为私有的,而解密密钥为共有的,由于对称加密加解密密钥相同,所以安全性是比较差的。图3是一个非对称加密过程。

image.png

3 非对称加密过程


      这里明文为小于1000的整数,加密算法与解密算法均为×,机密密钥为91,解密密钥为11。小学生都可知道一个形如ABC三位整数,乘以10011001=91×11),得到的结果为ABCABC。(二位整数:AB可以标记为0AB,乘以1001,得到的结果为:0AB0AB->AB0AB;一位整数:A可以标记为00A,乘以1001,得到的结果为:00A00->A00A)。如图4所示。从来可知一个小于1000的整数乘以1001的结果是包含原元素和0的组合。


image.png

4 小于1000的整数乘以100过程图


      当然,区块链的非对称加密没有那么简单,这里主要便于大家理解。


2区块链的私钥、公钥和地址


      区块链是通过私钥生成公钥,然后通过公钥来生成地址的。并且要保证逆向是不可行的,即不可通过地址获得公钥,然后通过公钥获得私钥。如图5所示。

image.png

5 区块链的私钥、公钥与地址


      区块链的私钥是一个随机字符串进行SHA-256运算后生成的具有256位数的随机支付串。比如:1100010101000110101110000100101100101010101010010100000000011011010101010010101111010101010101000101010100110101010000111110001100011110011010100100001100011000100011001000101000101001010000110010100010000100011000001100101000001000101001001010001010010001010000101101011101010101001000001001010111001001010010010100010100101010010011001101001001101001001010010001000100100010,转换成16进制为:c546b84b2aa9401b552bd554553543e31e6a43188c8a2943288460ca08a4a29142d7552095c949452a4cd269291122


区块链是通过一种叫做ECDSA椭圆曲线来进行公钥和私钥换算的,下面节点介绍一下ECDSA椭圆曲线。


ECDSA椭圆曲线指的是满足表达式y2=x3+ax+b,且这里-16(4a3+27b2)0。假设a=-1,b=+1,这是表达式y2=x3+ax+b变为y2=x3-x+1。在[-1.32,3.75]上的曲线如图6所示。

image.png

6 y2=x3-x+1曲线图


      现在定义曲线上两个点ABA+B如下定义。

  • 连接AB,并延伸与曲线相接与C
  • C对应于X轴为C’

C’点即为A+B,如图7所示。A+A如下定义。

  • A处找到切线延长与曲线交于B点。
  • B对应于X轴为B’

B’点即为A+A,如图8所示。


区块链根据给定的G点,假设G的坐标为(x,y,那么公钥P即为KxKy的一种组合,标记为P=GKK为私钥,P为公钥)。Kx表示x+x+x+…+x(k次相加)Ky表示y+y+y+…+y(k次相加)

image.png

7 C’=A+B


image.png

8 B’=A+A


在实际区块链中椭圆函数不是连续的,而是有一组符合ECDSA椭圆曲线的点组成的集合点组合的,并且限制在一个很大的质数区间之内,由于比较复杂在这里不进行展开。


区块链以Secp256k1标准定义,即:

  • a=0
  • b=7
  •  相加的基点G坐标为(79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8)


因此区块链的椭圆函数为y2=x3+7,如图9所示。


image.png

9 区块链椭圆曲线函数图


假设AB两个人,A具有私钥Ka和公钥PaB具有私钥Kb和公钥PbA的加密文件f,它可以通过自己的私钥和B的公钥加密,即f KaPb。同样B的加密文件g,它也可以通过自己的私钥和A的公钥加密,即gKbPa。由于f KaPb= fKa(KbG)=fKaKbG; gKbPa=gKbGKa,W=KbGKa,那么f KaPb=fW, gKbGKa=gw,这样虽然他们都不知道对方的私钥,但是都可以通过自己的私钥与对方的公钥之乘积获得W来进行加解密。


利用私钥与公钥处理加解密以外还可以进行数字签名。比如我写的一段文字M,我可以通过M与自己的私钥之积N=MK对外公布N。大众可以用他的内容M与公钥P的积,即MP=MGK=NG。由于G是固定的值。所以很容易验证内容是不是篡改过。


最后来介绍下区块链地址。区块链地址是由公钥经过一次SHA-256哈希运算后然后再进行一次RIPEND160运算,最后进行Base58编码得到的,即区块链地址= Base58(RIPEND160(SHA-256(P)))


HASH,一般翻译为散列、杂凑,或音译为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。常见的HASH函数有MD4MD5SHA-1SHA-256。由于HASH函数对于任意的输入产生一个固定长度的字符串,所以必定存在两个不同的输入得到相同的HASH值,这个叫做HASH碰撞。现在发现MD4MD5SHA-1都存在高概率的HASH碰撞,而SHA-256概率很低,所以目前为止使用最安全的散列函数为SHA-256,这也就是为什么区块链采用SHA-256的原因。


总结一下,私钥K= SHA-256(大的随机字符串),公钥P=私钥KG,地址= Base58(RIPEND160(SHA-256(公钥P)))


3区块链的组成


现在简单介绍区块链,区块链是由多个区块组成的一个链表,每个区块分为块头(BlockHead)与块体(BlockBody)。块头包含以下内容。

  • Version:当前版本号。
  • Pre_hash:前一个表头的HASH值。
  • Time:时间戳。
  • Mekle_rootMekle树的Root信息。
  • 难度系数:决定算法的难度
  • Nonce:一个随机数。


块体记录记账信息,长度为1M。当发生交易后记账信息放入交易池中,由挖矿矿工找到满足条件的区块后加入区块链中。


      首先对块头中的Pre_hashMekle_root、难度系数、Nonce做个介绍。


1Pre_hash

为前一个区块头的HASH值,Pre_hash=SHA_256(SHA_256(Pre_Head))。也就是对前一区块的头信息进行两次SHA_256运算的值。由Pre_hash使各个离散的区块形成一个链式结构,即区块链,如图10所示。

image.png

10 区块链的链式结构


2Mekle_root

在介绍Mekle_root前必须介绍Mekle_Tree,什么叫做Mekle_Tree呢,假设现在区块内存入8个交易,每个交易的信息用SHA_256处理后得到的结果分别为:H1H2H3H4H5H6H7H8H12=SHA-256(H1+H2)H34=SHA-256 (H3+H4)H56=SHA-256 (H56+H4)H78=SHA-256 (H7+H8),然后H1234=SHA-256 (H12+H34)H5678=SHA-256 (H56+H78),最后H12345678= SHA-256 (H1234+H5678)。可见这是一个树状的结构,这个树叫Mekle_Tree,根H12345678Mekle_root,如图11所示。

image.png

11 Mekle_Tree

3Nonce

是一个随机数。对于一个256位数,比如:c546b84b2aa9401b552bd554553543e31e6a43188c8a2943288460ca08a4a29142d7552095c949452a4cd269291122,要求头第1位为0的概率为1/16,要求头第2位为0的概率为1/162要求头第n位为0的概率为1/16n。由于区块链的个数是有限的,要求平均产生一个区块的时间大约为10分钟,所以通过要求调整Nonce值,使当前区块HASH值(即SHA_256(SHA_256(Head其他部分+ Nonce)))为前面几位为0(也可以认为这个随机数小于100..0)的要求的过程即为挖矿。


4难度系数。

要求当前区块前几位为0决定了当前区块的难度,这个标记了难度系数。难度系数通过某个函数控制,维持产生一个区块的时间控制在10分钟之内。

目录
相关文章
|
6月前
|
安全 物联网 网络安全
网络安全的屏障与密钥:揭秘网络漏洞、加密技术与安全意识的重要性新技术趋势与应用:区块链、物联网与虚拟现实的未来展望
【8月更文挑战第27天】在数字时代的浪潮中,网络安全成为了我们不可忽视的话题。本文将深入浅出地探讨网络安全中的漏洞问题、加密技术的应用及其重要性,以及提升个人和组织的安全意识的必要性。通过分析常见的网络攻击手段和防御策略,我们将了解到保护信息资产的紧迫性,并掌握一些基础的防护措施。文章还将分享几个实用的代码示例,帮助读者更好地理解加密技术在实际应用中的作用。
|
6月前
|
安全 物联网 区块链
未来已来:探索区块链、物联网与虚拟现实的融合趋势网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【8月更文挑战第30天】本文将带领读者穿梭于新兴技术如区块链、物联网(IoT)和虚拟现实(VR)的发展浪潮之中,揭示这些技术如何相互交织,共同塑造我们的未来。我们将从技术的基本原理出发,逐步深入到它们的应用场景,并探讨它们如何在未来形成一股不可逆转的融合趋势。通过深入浅出的分析,本文旨在为读者提供一个关于这些技术发展趋势的全景视图,同时激发思考它们将如何影响我们的生活和工作方式。
|
6月前
|
安全 物联网 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享未来技术浪潮中的领航者:区块链、物联网与虚拟现实
【8月更文挑战第30天】在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的知识,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和建议来保护个人信息和数据安全。
|
6月前
|
安全 物联网 网络安全
揭秘网络防御:安全漏洞、加密技术与意识提升新兴技术浪潮下的未来社会:区块链、物联网与虚拟现实的融合与创新
【8月更文挑战第27天】在数字时代的浪潮中,网络安全已成为保护个人隐私和企业资产的盾牌。本文深入探讨了网络安全的核心要素:安全漏洞、加密技术和用户安全意识。我们将通过实际案例分析常见的安全威胁,并解释如何利用最新的加密算法来保护数据不被窃取。此外,我们还将揭示提升用户安全意识的重要性,并提供实用的策略,以增强个人和组织在网络空间的防御能力。
|
8月前
|
供应链 安全 算法
加密技术与区块链:守护数字世界的双重保障
加密技术和区块链携手打造数字安全。加密通过算法和密钥保护数据,区块链以其分布式、不可篡改的特性增强数据安全。两者结合,应用于数字签名、密钥对、哈希函数,保障信息传输与存储的安全。未来,它们将在物联网、供应链和金融等领域深化数据保护,促进数字经济创新。
|
9月前
|
存储 区块链 数据安全/隐私保护
《区块链简易速速上手小册》第4章:区块链与加密货币(2024 最新版)
《区块链简易速速上手小册》第4章:区块链与加密货币(2024 最新版)
110 1
|
9月前
|
供应链 安全 物联网
深度剖析:区块链技术掌握必备知识,加密货币与智能合约应用解析
深度剖析:区块链技术掌握必备知识,加密货币与智能合约应用解析
365 0
|
存储 供应链 安全
区块链技术:超越加密货币的无限可能
区块链技术已经远远超越了加密货币的应用,它正在引领着各个领域的变革。从金融到供应链,从数字身份认证到选举,区块链都为我们带来了更安全、更透明、更高效的解决方案。
220 1
区块链技术:超越加密货币的无限可能
|
4天前
|
存储 安全 算法
深入探讨区块链技术的安全性
深入探讨区块链技术的安全性
140 101
|
1月前
|
供应链 算法 安全
探索区块链技术中的隐私保护机制
探索区块链技术中的隐私保护机制
79 27