区块链-私钥和公钥简介

目录:https://blog.csdn.net/qq_40452317/article/details/89646633

密码学在希腊语中是“秘密写作”的意思,但密码学这门科学不仅只包含被称之为秘密写作的加密学。 密码学也可以用来证明秘密的知识,而不会泄露秘密(数字签名),或证明数据的真实性(数字指纹)。 这些类型的加密证明是比特币中关 键的数学工具并在比特币应用程序中被广泛使用。具有讽刺意味的是,加密不是比特币的重要组成部分,因为它的通信和交易数据没有加密,也 不需要加密来保护资金。 在本章中,我们将介绍一些在比特币中用来控制资金的 所有权的密码学,包括密钥,地址和钱包。

比特币的所有权是通过数字密钥、比特币地址和数字签名来确定的。数字密钥实际上并不存储在网络中,而是由用户生成之后,存储在一个叫做钱包的文件或简单的数据库中。存储在用户钱包中的数字密钥完全独立于比特币协议,可由用户 的钱包软件生成并管理,而无需参照区块链或访问网络。密钥实现了比特币的许多有趣特性,包括去中心化信任和控制、所有权认证和基于密码学证明的安全模型。

大多数比特币交易都需要一个有效的签名才会被存储在区块链。只有有效的密钥才能产生有效的数字签名,因此拥有~密钥副本就拥有了对该帐户的比特币的控制 权。用于支出资金的数字签名也称为见证(witness),密码术中使用的术语。 比 特币交易中的见证数据证明了所用资金的真正归谁所有。

密钥是成对出现的,由一个私钥和一个公钥所组成。公钥就像银行的帐号,而私 钥就像控制账户的 PIN 码或支票的签名。比特币的用户很少会直接看到数字密钥。 一般情况下,它们被存储在钱包文件内,由比特币钱包软件进行管理。

在比特币交易的支付环节,收件人的公钥是通过其数字指纹代表的,称为比特币地址,就像支票上的支付对象的名字 (即“收款方”)。一般情况下,比特币地址 由一个公钥生成并对应于这个公钥。然而,并非所有比特币地址都是公钥; 他们 也可以代表其他支付对象,譬如脚本,我们将在本章后面提及。这样一来,比特 币地址把收款方抽象起来了,使得 交易的目的地更灵活,就像支票一样:这个支 付工具可支付到个人账户、公司账户,进行账单支付或现金支付。比特币地址是 用户经常看到的密钥的唯一代表,他们只需要把比特币地址告诉其他人即可。

首先,我们将介绍密码学并解释在比特币中使用的数学知识。然后我们将了解密 钥如何被产生、存储和管理。我们将回顾用于代表私钥和公 钥、地址和脚本地址 的各种编码格式。最后,我们将讲解密钥和地址的高级用途:比特币靓号,多重 签名以及脚本地址和纸钱包。

公钥私钥是成对出现的,私钥是一个一个随机产生的数字,在通过椭圆曲线乘法单向加密函数产生一个公钥。有了公钥就可以通过加密哈希函数生成比特币地址。其关系如下:

私钥

私钥就是一个随机选出来的数字。比特币地址中的资金取决于对私钥的控制,你拥有私钥就相当于你用这个私钥下的地址的所有的比特币。所以必须对私钥保密以及防止丢失(难以复原),一旦丢失,其地址下的比特币也相当于没了。

一个随机数生成一个私钥是最重要的一步,需要找到足够的熵源,即随机性来源。比特币私钥本质上是与从1到2^256之间选一个数字无异,只要选取的结果是不可预测或者不可重复即可。比特币是通过操作系统底层产生256位随机数

私钥可以是1和n-1之间的任何数字,其中n是一个常数(n=1.158 *10^77,略小于 2^256)。要生成这样的一个私钥,要随机选择一个256位的数字, 并检查它是否小于n-1。从编程的角度来看,一般是通过在一个密码学安全的随机源中取出一长串随机字节,对其使用SHA256哈希算法进行运算,这样就可以方便地产生一个256位的数字。如果运算结果小于n-1,我们就有了一个合适的私钥。否则,就用另一个随机数再重复一次。

警告:不要自己写代码或使用你的编程语言提供的简易随机数生成器来获得一个随机数。使用密码学安全的伪随机数生成器(CSPRNG),并且需要有一个来自具有足够熵值的源的种子。使用随机数发生器的程序库时,需仔细研读其文档,以 确保它是加密安全的。正确实施CSPRNG是密钥安全性的关键所在。

以下是一个随机生成的私钥(k),以十六进制格式表示(256位的二进制数,以64位十六进制数显示,每个十六进制数占 4 位):

 1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD

提示比特币私钥空间的大小是 2^256,这是一个非常大的数字。用十进制表示的 话,大约是 10^77,而可见宇宙被估计只含有 10^80 个原子。

公钥

通过椭圆曲线乘法可以从私钥计算得到公钥,这是不可逆转的过程:K=k*G 。 其中k是私钥,G是被称为生成点的常数点,而K是所得公钥。其反向运算,被称为“寻找离散对数”——已知公钥K来求出私钥k——是非常困难的,就像去试验所有可能的k值,即暴力搜索。

提示:椭圆曲线乘法是密码学家称之为“陷阱门”功能的一种函数:在一个方向(乘 法)很容易做,而不可能在相反的方向(除法)做。 私钥的所有者可以容易地创 建公钥,然后与世界共享,知道没有人可以从公钥中反转函数并计算出私钥。 这 个数学技巧成为证明比特币资金所有权的不可伪造和安全的数字签名的基础。

猜你喜欢

转载自blog.csdn.net/qq_40452317/article/details/90046068