二维码

密码学基础 - 数据结构 - 机器学习

1238 人阅读 | 时间:2021年01月15日 01:13
密码学基础 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

密码学基础

1516 人参与  2018年09月25日 10:13  分类 : 区块链精品文章  评论

密码学概述

密码学起源于数千年以前,最早可追溯到古巴比伦时代,作为保护信息传输的技术手段,最早应用于军事、外交和情报领 域。在20世纪70年代之前,密码学大都属于政府的应用范畴。有两件事的发生将密码学带入了公众领域:标准加密系统——数据加密标准(Data Encryption Standard,DES)的诞生和公钥加密算法(也称为非对称加密算法)的发明[1]。

密码学伴随着密码分析学的发展而发展。按算法思想的革新可划分为3大阶段:古典密码学、现代密码学和公钥密码学。 1949年以前的密码学统称为古典密码学,它的安全基于加密算法的保密性。1949年,香农(Shannon)发表了《保密系统的通信理论》一文,文中的 信息论为对称密码系统建立了理论基础,密码学开始成为一门科学。基于密钥安全而非加密算法安全的理论与技术变革,成为密码学发展的一个新的里程碑,标志着 现代密码学时代的来临。1976年,Whitfield Diffie和Martin Hellman首次提出了基于数学难题的公钥密码机制;1978年,RSA公钥密码机制出现,它成为公钥密码的杰出代表并成为事实标准,这在密码学史上创 造了又一个新的里程碑。20世纪90年代,公钥密码学进一步发展,基于椭圆曲线乘法、素数幂等数学函数的公钥算法诞生,这使得数字密钥和不可伪造的数字签 名成为可能。

如今密码学相关技术已经深入各个领域,它们的理论共识都遵循由奥古斯特·柯克霍夫在19世纪提出的“柯克霍夫原 则”——密码系统应该就算被所有人知道其运作步骤,它仍然是安全的。即算法是公开的,唯一需要保护的是密钥。密码学算法的安全性被攻破有两个可能:一是算 法本身的漏洞,不需要密钥即可以破解算法;二是在可接受的时间范围内暴力破解。

1.古典密码学

古典密码学历史悠久,时间跨越了两三千年。它主要应用于军事、外交和情报领域。它的安全性是基于算法的,类似于目前经常用的编码算法。古典密码编码算法归根结底主要有两种:置换和代换。

把明文字符串中的字母重新排列,字母本身不变,位置却改变了,由此编成的密码称为置换密码。最简单的置换密码是把 明文中的字母倒序排列,然后截成固定长度的字母组作为密文。代换密码则是将明文中的字符替代成其他字符,比如古罗马凯撒密码是将明文中的所有字母都在字母 表上向后(或向前)按照一个固定数目进行偏移,得到的新数据就是密文。位数就是凯撒密码加密和解密的密钥。

古典密码学大都比较简单,主要采用手工或机械操作来实现加解密,而算法是基于字符串的,由于古典密码学的安全性主要是依赖于算法的保密性,所以整体安全性不高。

2.现代密码学

1949年以香农的信息论诞生为标志,密码学的发展进入了第二个阶段。现代计算机科学与信息技术的蓬勃发展,使得 基于复杂计算的密码学成为可能。同时密码学首次成为一门科学。加密算法开始时是基于密钥来进行信息的加解密,通过密钥加密明文并主要以二进制的形式进行传 输。通常情况下,密钥越长,代表着密文被破解的难度越大。由于加密算法和解密算法都是同一模式,同时只用一把密钥保证加密数据的安全,因此这种加密算法也 叫作“对称加密算法”。

对称加密有一个最大的弱点:甲方必须把密钥告诉乙方,否则乙方无法解密。而保存和传递密钥,就成了最头疼的问题。

这个时间段是密码学开始蓬勃发展的一个开端,后期发展出来的公钥密码学、哈希算法、其实属于现代密码学的范畴。

3.公钥密码学

相比1976年以前的密码学思想,公钥密码学可以在不直接传递密钥的情况下,完成密文的解密。这个算法机制启发了 其他科学家,人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。基于这种公钥机制的思想, 开始出现了一系列非对称加密算法。

下图比较说明了非对称加密算法与对称加密算法的区别。

密码学基础 - 数据结构 - 机器学习

非对称加密需要两个(一对)密钥:公开密钥(Publickey)和私有密钥(Privatekey),用公钥对数据进行加密后,只有对应的私钥才能解密;反之,如果私钥用于加密,则只有对应的公钥才能解密。通信双方无须交换密钥,就可以建立保密通信。

公钥密码体制根据其所依据的数学难题一般分为3类:大整数分解问题类、离散对数问题类、椭圆曲线类[2]。

4.哈希算法

哈希函数(Hash Function)也称为散列函数,是能计算出一个数字消息所对应的、长度固定的字符串(又称消息摘要)的算法。给定一个输入x,它会算出相应固定长度的输出H(x)。哈希函数的主要特征是:

1)输入x可以是任意长度的字符串。

2)输出结果,即H(x)的长度是固定的。

3)计算H(x)的过程是高效的(对于长度为n的字符串x,计算出H(x)的时间复杂度应为O(n)),同时H(x)要相对易于计算,可通过硬件和软件实现。

而对于比特币加密系统使用的哈希函数,它需要额外具备以下的性质:

1)免碰撞,即不会出现输入x≠y但是H(x)=H(y)的情况,也就是强抗冲突性。

2)隐匿性,也就是说,对于一个给定的输出结果H(x),想要逆推出输入x,在计算上是不可能的。

3)不存在比穷举更好的方法,以使哈希结果H(x)落在特定的范围。

区块链中的密码学

在比特币区块链的整个体系中,大量使用了公开的加密算法,比如Merkle Tree哈希树算法、椭圆曲线算法、SHA-256哈希算法、对称加密算法以及一些编码算法,如Base58编码、VarInt编码、DER编码等。下面我们来了解其中的几个核心算法。

1.椭圆曲线算法

椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。它的主要优势是:在某些情况下,它比其他的算法(比如RSA)使用更小的密钥,但提供相当的或更高等级的安全性。

比特币使用了基于secp256k1椭圆曲线数学的公钥密码学算法。它包含私钥与公钥,交易发出方用私钥进行签名,并将签名与原始数据发送给整个比特币网络,网络中的所有节点则用公钥对交易有效性进行验证。签名算法保证了交易是由拥有对应私钥的人所发出的。

数据签名算法的核心在于证明数据是签名者发出的、不可抵赖的,而不是待签名数据本身的保密性。

2.SHA-256哈希算法

SHA是安全散列算法(Secure Hash Algorithm)的缩写,是一个密码散列函数家族。这一组函数是由美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的,包括 SHA-1、SHA-224、SHA-256、SHA-384和SHA-512五种变体,主要适用于数字签名标准。后4个哈希函数又并称为SHA-2。

SHA-1在许多安全协议中广为使用,包括TLS、SSL、PGP、SSH、S/MIME和IPsec,曾被视为 是MD5(更早之前被广为使用的哈希函数)的后继者。但随着计算机技术的发展,SHA-1的安全性被密码学家严重质疑,且在2005年被王小云等密码学家 成功破译。SHA-2的算法跟SHA-1基本相似,但至今尚未出现对SHA-2的有效攻击,安全性较高。SHA-256就是SHA-2函数中的一个,是输 出值为256位的哈希算法。

3.对称加密算法

AES(Advanced Encryption Standard)是一个对称分组密码算法,旨在取代DES成为广泛使用的标准,最终成为美国新的数据加密标准而被广泛应用在各个领域。其大致运作原理和前文的对称加密算法的流程相同。

比特币官方客户端[3]使用AES算法中的AES-256-CBC来加密钱包文件,用户设置密码后,采用用户设置的密码通过AES算法对钱包私钥进行加密,确保客户端私钥的安全,从而保证资产的安全。

4.Base58编码

可读性编码算法在理论上并非密码学理论的核心内容,它类似于古典密码学里的置换算法机制。编码算法的目的不是为了保护数据的安全性,而是为了可读性。

信息以二进制的形式传输,不具备可读性,而数字与字母组成的字符串才更容易被识别。可读性编码不改变信息内容,只改变信息内容的表现形式,部分编码算法还加入了容错校验功能,以保证传输过程中数据的准确性和完整性。

Base58是比特币使用的一种独特的编码方式,主要用于产生比特币的钱包地址。相比Base64,Base58不使用数字“0”、大写字母“O”、大写字母“I”和小写字母“l”,以及“+”和“/”符号[4]。

设计Base58的主要目的是:

1)避免混淆。在某些字体下,数字0和大写字母O,以及大写字母I和小写字母l非常相似。

2)不使用“+”和“/”的原因是,非字母或数字的字符串作为账号的一部分被接受。

3)没有标点符号,通常不会被从中间分行。

4)大部分的软件支持双击选择整个字符串。

比特币使用了Base58算法来对公钥的Hash160及私钥进行编码,从而生成以1或3开头的比特币地址及WIF(Wallet Import Format)格式的私钥。

[1] 引用自https://en.wikipedia.org/wiki/History_of_cryptography。

[2] 也有人把椭圆曲线类归为离散对数类。

[3] 引用自https://bitcoin.org/en/download。

[4] 引用自https://zh.wikipedia.org/wiki/Base58。


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=673

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
关闭广告
关闭广告
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×