当前位置: 首页 > news >正文

网站设计制作报价国外网站A

网站设计制作报价,国外网站A,wordpress页面模板链接,wordpress自动回复插件Alice的公私钥#xff0c; 签名和验证签名仅仅确定了Alice对数字资产A所有权的宣言. 之后, Bob也可以用自己的私钥对资产A进行签名宣誓所有权。区块链中叫双花#xff0c;即重复宣称所有权#xff0c; 也称重复花费交易。这时候需要共识算法(集体成员pow或委员会代表pos监督…Alice的公私钥 签名和验证签名仅仅确定了Alice对数字资产A所有权的宣言. 之后, Bob也可以用自己的私钥对资产A进行签名宣誓所有权。区块链中叫双花即重复宣称所有权 也称重复花费交易。这时候需要共识算法(集体成员pow或委员会代表pos监督数据的变化,达成一致意见即共识)去确保数据的唯一性和不可逆。 大话密码技术五数字签名与数字证书原理 - 知乎 证书是为了解决公钥派送过程中被拦截的问题. 即保证公钥在传递过程中没有被替换. 数字签名流程中接收者需要用公钥验签发送者的签名若中间人用自己的公钥替换了发送者的公钥则他就可以用自己的私钥签名信息而接受者使用被攻击者替换的公钥验签数据就可以被通过。为了解决公钥派送问题可以通过数字证书来对发送者的公钥做认证。 找一个第三方公认机构对公钥进行签名. 1 数字签名 数字签名是使用hash算法与公钥加密技术实现用于鉴别数字信息真实性和不可抵赖性的方法。它有以下几个特征 1报文鉴别接收者能校验发送者对报文的签名 2报文完整性接收者不能伪造报文签名或更改报文内容 3不可抵赖发送者事后不能抵赖对报文的签名 数字签名流程如下 接下来分析该流程是否符合以上三个特征 1报文鉴别数字签名中的私钥具有唯一性除签名者之外都不能伪造签名并防止被假冒 2报文完整性由于数字签名中包含hash算法对签名文档的任何未经授权的修改将立即被显见 3不可抵赖性由于报文经过了发送者的私钥签名他人无法获取其私钥故无法伪造其签名因此发送者也无法抵赖 2 数字证书   数字签名流程中接收者需要用公钥验签发送者的签名若中间人用自己的公钥替换了发送者的公钥则他就可以用自己的私钥签名信息而接受者使用被攻击者替换的公钥验签数据就可以被通过。为了解决公钥派送问题可以通过数字证书来对发送者的公钥做认证。 2.1 数字证书的构成 数字证书格式遵循ITUTX.509标准X509证书包含以下内容 1证书版本 2证书序列号 3证书所使用的签名算法 4证书的发行机构名称一般采用X500格式 5证书的有效期通常采用UTC时间 6证书所有人名称一般采用X500格式 7证书所有人的公钥 8证书发行者对证书的签名 2.2 数字证书的颁发 数字证书是由数字证书认证中心CA颁发用于认证证书持有者身份的其核心是使用认证中心的私钥对证书申请人身份主要是公钥进行签名认证。认证中心可以形成以下的层级结构即根证书认证机构可为二级认证机构颁发证书二级认证机构可为三级认证机构颁发证书同时他们都可以为用户颁发证书。 本质上数字证书是数字证书认证中心对证书申请者的信息和公钥做签名以自身的权威性为其身份做背书。     以上数字证书的层级结构叫做数字证书链其中顶层的证书被称为根证书它是由根证书中心自签名的。在验证数字证书时可按照该证书链逐级验证证书的合法性。根证书的合法性是由其自身保证的因此一般会被预先安装到操作系统或浏览器等软件中。 2.3 数字证书CRL和OCSP 数字证书在颁发时即设置了有效时间但若需要在有效时间内撤销证书则可向证书颁发机构申请撤销证书证书被撤销后将被保存到证书撤销列表CAL中。   证书验证时需要验证其是否位于证书撤销列表中OCSP在线证书状态协议就是用于在线查询证书状态的。 根据X509标准CRL的内容如下 1版本 2签名算法 3签发者 4更新时间 5下一次更新时间 6废止的证书列表 7用户证书序列号 8废止时间 9CRL入口扩展 2.4 数字证书相关文件格式 在数字证书申请和使用流程中有几种常见的文件格式 1der格式证书.cer.crt 2pem格式证书.pem 3pkcs12格式.pfx.p12 4pkcs10证书申请格式.p10 5pkcs7证书申请应答格式.p7r 6pkcs7二进制格式.p7b 2.5 创建自己的CA 所有公司都可以颁发数字证书公司颁发的证书不一定能在国际上得到广泛认可。但若在自己生产的终端中安装自己建立的CA根证书则可以建立自身的CA信任链。 . 密钥交换 非对称加解密公钥可以公开交换但其加解密速度比对称加解密慢得多大概为几百分之一。而对称加解密双方的密钥若通过明文传输则很容易受到中间人攻击因此需要采用特定的方法实现双方密钥的交换。 .1 PSK密钥交换 PSK方案通信双方使用预先共享的密钥进行通信以下为汽车网络安全项目EVITA中一个PSK方案的例子。 上图每个ecu都将其密钥预置到keymaster中在需要通信时keymaster产生一个session key并分别用ecu1的密钥k1加密后发给ecu1用ecu2的密钥k2加密后发给ecu2。ecu1和ecu2接收到信息后用各自的密钥解密后得到session key此后双方可使用该session key实现加密通信。 .2 非对称方式密钥交换 该方法通信双方需要先交换公钥在通信前用非对称算法进行session密钥协商。即通信一方使用随机数创建一个密钥然后用自己的私钥加密后发送给对方接收方用发送方的公钥解密出密钥后。双方可使用该session key执行加密通信。   TLS通信方式的基础即是上述方式只是其中增加了通过数字证书进行身份认证以及使用更复杂的密钥协商策略等。 .3 DH算法密钥交换 DH算法是一种密钥交换算法它可以在双方不直接传递密钥的情况下完成密钥交换。其流程如下图所示 1 Alice选择一个素数p底数g和随机数a并执行如下计算 A g^a mod p 2 Alice把pg和A发送给Bob 3 Bob接收到数据后选择一个随机数b并执行以下计算 B g ^b mod ps A^b mod p 4 Bob将B发送给Alice 5 Alice执行如下计算 B^a mod p(g^b mod p)^a mod pg^ab mod p(g^a mod p)^b mod pA^b mod ps 6 因此Alice和Bob都计算得到了共享密钥s此后可以用该密钥进行加密通信 理解开发HD 钱包涉及的 BIP32、BIP44、BIP39 | 登链社区 | 区块链技术社区 理解开发HD 钱包涉及的 BIP32、BIP44、BIP39 如果你还在被HD钱包(分层确定性钱包)、BIP32、BIP44、BIP39搞的一头雾水来看看这边文章吧。 如果你还在被HD钱包(分层确定性钱包)、BIP32、BIP44、BIP39搞的一头雾水来看看这边文章吧。 数字钱包概念 钱包用来存钱的在区块链中我们的数字资产都会对应到一个账户地址上 只有拥有账户的钥匙私钥才可以对资产进行消费用私钥对消费交易签名。 私钥和地址的关系如下 图来自精通比特币 一句话概括下就是私钥通过椭圆曲线生成公钥 公钥通过哈希函数生成地址这两个过程都是单向的。 因此实际上数字钱包实际是一个管理私钥生成、存储、签名的工具注意钱包并不保存资产资产是在链上的。 如何创建账号 创建账号关键是生成一个私钥 私钥是一个32个字节的数 生成一个私钥在本质上在1到2^256之间选一个数字。 因此生成密钥的第一步也是最重要的一步是要找到足够安全的熵源即随机性来源只要选取的结果是不可预测或不可重复的那么选取数字的具体方法并不重要。 比如可以掷硬币256次用纸和笔记录正反面并转换为0和1随机得到的256位二进制数字可作为钱包的私钥。 从编程的角度来看一般是通过在一个密码学安全的随机源(不建议大家自己去写一个随机数)中取出一长串随机字节对其使用SHA256哈希算法进行运算这样就可以方便地产生一个256位的数字。 实际过程需要比较下是否小于n-1n 1.158 * 10^77, 略小于2^256我们就有了一个合适的私钥。否则我们就用另一个随机数再重复一次。这样得到的私钥就可以根据上面的方法进一步生成公钥及地址。 BIP32 钱包也是一个私钥的容器按照上面的方法我们可以生成一堆私钥一个人也有很多账号的需求可以更好保护隐私而每个私钥都需要备份就特别麻烦的。 最早期的比特币钱包就是就是这样还有一个昵称“Just a Bunch Of Keys(一堆私钥)“ 为了解决这种麻烦就有了BIP32 提议 根据一个随机数种子通过分层确定性推导的方式得到n个私钥这样保存的时候只需要保存一个种子就可以私钥可以推导出来如图 图来自精通比特币上图中的孙秘钥就可以用来签发交易。 补充说明下 BIP: Bitcoin Improvement Proposals 比特币改进建议, bip32是第32个改进建议。 BIP32提案的名字是Hierarchical Deterministic Wallets 就是我们所说的HD钱包。 来分析下这个分层推导的过程第一步推导主秘钥的过程 根种子输入到HMAC-SHA512算法中就可以得到一个可用来创造主私钥(m) 和 一个主链编码 a master chain code)这一步生成的秘钥由私钥或公钥及主链编码再加上一个索引号将作为HMAC-SHA512算法的输入继续衍生出下一层的私钥及链编码如下图 衍生推导的方案其实有两个一个用父私钥推导称为强化衍生方程一个用父公钥推导。同时为了区分这两种不同的衍生在索引号也进行了区分索引号小于2^31用于常规衍生而2^31到2^32-1之间用于强化衍生为了方便表示索引号i表示2^31i。 因此增加索引水平扩展及 通过子秘钥向下一层深度扩展可以无限生成私钥。 注意 这个推导过程是确定相同的输入总是有相同的输出也是单向的子密钥不能推导出同层级的兄弟密钥也不能推出父密钥。如果没有子链码也不能推导出孙密钥。现在我们已经对分层推导有了认识。 一句话概括下BIP32就是为了避免管理一堆私钥的麻烦提出的分层推导方案。 秘钥路径及BIP44 通过这种分层树状结构推导出来的秘钥通常用路径来表示每个级别之间用斜杠 / 来表示由主私钥衍生出的私钥起始以“m”打头。因此第一个母密钥生成的子私钥是m/0。第一个公共钥匙是M/0。第一个子密钥的子密钥就是m/0/1以此类推。 BIP44则是为这个路径约定了一个规范的含义(也扩展了对多币种的支持)BIP0044指定了包含5个预定义树状层级的结构m / purpose / coin / account / change / address_index m是固定的, Purpose也是固定的值为44或者 0x8000002CCoin type 这个代表的是币种0代表比特币1代表比特币测试链60代表以太坊 完整的币种列表地址https://github.com/satoshilabs/slips/blob/master/slip-0044.mdAccount 代表这个币的账户索引从0开始Change 常量0用于外部(收款地址)常量1用于内部也称为找零地址。外部用于在钱包外可见的地址例如用于接收付款。内部链用于在钱包外部不可见的地址用于返回交易变更。 (所以一般使用0)address_index 这就是地址索引从0开始代表生成第几个地址官方建议每个account下的address_index不要超过20 根据 EIP85提议的讨论以太坊钱包也遵循BIP44标准确定路径是m/44/60/a/0/n a 表示帐号n 是第 n 生成的地址60 是在 SLIP44 提案中确定的以太坊的编码。所以我们要开发以太坊钱包同样需要对比特币的钱包提案BIP32、BIP39有所了解。 一句话概括下BIP44就是给BIP32的分层路径定义规范 BIP39 BIP32 提案可以让我们保存一个随机数种子通常16进制数表示而不是一堆秘钥确实方便一些不过用户使用起来(比如冷备份)也比较繁琐这就出现了BIP39它是使用助记词的方式生成种子的这样用户只需要记住12或24个单词单词序列通过 PBKDF2 与 HMAC-SHA512 函数创建出随机种子作为 BIP32 的种子。 可以简单的做一个对比下面那一种备份起来更友好 // 随机数种子 090ABCB3A6e1400e9345bC60c78a8BE7 // 助记词种子 candy maple cake sugar pudding cream honey rich smooth crumble sweet treat使用助记词作为种子其实包含2个部分助记词生成及助记词推导出随机种子下面分析下这个过程。 生成助记词 助记词生成的过程是这样的先生成一个128位随机数再加上对随机数做的校验4位得到132位的一个数然后按每11位做切分这样就有了12个二进制数然后用每个数去查BIP39定义的单词表这样就得到12个助记词这个过程图示如下 图来源于网络 下面是使用bip39生成生成助记词的一段代码 var bip39 require(bip39) // 生成助记词 var mnemonic bip39.generateMnemonic() console.log(mnemonic) 助记词推导出种子 这个过程使用密钥拉伸Key stretching函数被用来增强弱密钥的安全性PBKDF2是常用的密钥拉伸算法中的一种。 PBKDF2基本原理是通过一个为随机函数(例如 HMAC 函数)把助记词明文和盐值作为输入参数然后重复进行运算最终产生生成一个更长的512 位密钥种子。这个种子再构建一个确定性钱包并派生出它的密钥。 密钥拉伸函数需要两个参数助记词和盐。盐可以提高暴力破解的难度。 盐由常量字符串 mnemonic 及一个可选的密码组成注意使用不同密码则拉伸函数在使用同一个助记词的情况下会产生一个不同的种子这个过程图示图下: 图来源于网络 同样代码来表示一下 var hdkey require(ethereumjs-wallet/hdkey) var util require(ethereumjs-util)var seed bip39.mnemonicToSeed(mnemonic, pwd); var hdWallet hdkey.fromMasterSeed(seed);var key1 hdWallet.derivePath(m/44/60/0/0/0); console.log(私钥util.bufferToHex(key1._hdkey._privateKey));var address1 util.pubToAddress(key1._hdkey._publicKey, true); console.log(地址util.bufferToHex(address1)); console.log(校验和地址 util.toChecksumAddress(address1.toString(hex)));校验和地址是EIP-55中定义的对大小写有要求的一种地址形式。 密码可以作为一个额外的安全因子来保护种子即使助记词的备份被窃取也可以保证钱包的安全也要求密码拥有足够的复杂度和长度不过另外一方面如果我们忘记密码那么将无法恢复我们的数字资产。 一句话概括下BIP39就是通过定义助记词让种子的备份更友好 我为大家录制了一个视频以太坊去中心化网页钱包开发从如何创建账号开始深入探索BIP32、BIP44、BIP39等提案以及如何存储私钥、发送离线签名交易和Token。 小结 HD钱包Hierarchical Deterministic Wallets是在BIP32中提出的为了避免管理一堆私钥的麻烦提出的分层推导方案。 而BIP44是给BIP32的分层增强了路径定义规范同时增加了对多币种的支持。 BIP39则通过定义助记词让种子的备份更友好。 目前我们的市面上单到的以太币、比特币钱包基本都遵循这些标准。
http://www.pierceye.com/news/47799/

相关文章:

  • 网站建设 电商陕西住房与城乡建设部网站
  • 关于学校网站建设经费的申请做网站 还是淘宝店
  • 湘潭网站设计外包公司wordpress插件的开发
  • 网站如何做线上和线下推广电子商务网站建设意义
  • 山东建设网站建设厅电工证查询网站官方网
  • 安徽建站平台美橙网站设计
  • 网站程可以自己做吗防恶意点击软件
  • 沧县网站建设公司网站中加入百度地图
  • 个人网站的建设农村网站建设调查报告
  • 网站建设 模版广东省门户网站建设的现状
  • 个人主页网站设计论文莱芜网络推广渠道
  • 门户网站开发申请wordpress4.3 ping服务
  • 知名网站建设策划新网站怎么做才能让搜狗收录
  • 网站设计权限wordpress 和shopify
  • 昌吉网站建设电话设计网站的结构时
  • 微信做自己网站备案网站地址
  • 网站程序定制开发流程网站恶意点击软件
  • 网站建设 国家标准互联网平台构建怎么写
  • 网站建设软件开发的新闻孵化器网站建设
  • 网站开发工作需要什么专业用excel可以做网站
  • 有哪些做策划的用的网站重庆网站备案快
  • 调整网站模板大小湛江优化网站排名
  • 视频网站哪个做的好佛山顺德容桂做网站的公司
  • 浙江高端网站建设朔州网站建设价格低
  • 佛山微信网站设计深圳线上注册公司
  • 上海网站制作平台高端展馆展厅设计方案
  • 简单建设网站国家批准做新闻的网站
  • 网站建设 合肥网站域名服务器查询
  • 触屏版手机网站开发个人网站设计目的
  • 网站添加邮件发送怎么做个人网站建设方案书用备案的