‘壹’ 加密、签名、证书的作用及运用场景
本文主要是简单介绍了常见的加密类型、各自的运用场景、为什么需要数字签名和数字证书、HTTPS涉及到的加密流程等。这里主要从使用者的角度出发,对算法本身不做过多介绍。
对称/非对称加密均属于 可逆加密,可以通过密钥将密文还原为明文 。
有时候,我们希望明文一旦加密后,任何人(包括自己)都无法通过密文逆推回明文,不可逆加密就是为了满足这种需求。
不可逆加密主要通过 hash算法实现:即对目标数据生成一段特定长度hash值 ;无论你的数据是1KB、1MB、1GB,都是生成特定长度的一个Hash值(比如128bit)。这里大家应该能感受到一点 不可逆 的味道,加密后128bit的hash值显然无法还原出1个G甚至更大的不规则数据的, hash可以看做是原来内容的一个摘要 。
常见算法:
小明给小红写信:
经过九转十八弯后,信的内容有可能:1. 被窥视 2. 被篡改(冒充小明发送假消息) :
小红先 生成对称加密的密钥key1 ,然后通过一个安全的渠道交予小明。
传输数据时,小明 使用key1加密 ,而小红收到后再 使用key1解密 。
这时候 中间者既看不到原来的内容,也没办法篡改 (因为没有密钥):
【对称加密】实现简单,性能优秀 ,算法本身安全级别高。然而对 密钥的管理 却是个很头疼的问题:一旦密钥交到对方手里,对方对密钥的保管能力 我方是没办法控制 的,一旦对方泄露的话,加密就形同虚设了。
相对而言,【非对称加密】的公钥就没有这个忧虑,因为 公钥 的设计就是为了 可以公开的 ,尽管对方泄露,我方也不会有任何损失。
小红生成一对公私钥,自己持有私钥(pri_key1),将公钥(pub_key1)交予小明。
传输数据时,小明使用 公钥加密 ,小红使用 私钥解密 。
因为 中间者没有私钥,公钥加密的内容是无法获取的 。此时达到了 防窥视 的效果:
然而因为 公钥是可以公开的 ,如果 中间者知晓公钥 的话,尽管没有办法看到原来的内容,却 可以冒充小明发送假消息 :
这时小红在想,如果小明发送消息时,能带上 只有他自己才能生成 的数据(字符串),我就能 验证是不是小明发的真实消息 了。
通常这个 能证实身份的数据(字符串) 被称之为 数字签名(Signature)
小明再生成一对公私钥 ,自己持有私钥(pri_key2),将公钥交予小红(pub_key2)。
当小明传输数据时(可能很大),除了公钥加密明文之外,还要带上签名:(1) 对明文做一个hash摘要 (2)对摘要进行私钥加密,加密结果即签名(传输内容=内容密文+签名)
小红收到后:(1) 解密签名获取hash (2)解密内容密文,对解密后的明文进行hash;如果两个hash一致,说明验签通过。
尽管中间者修改了传输内容,但因为签名无法冒认(没有私钥),小红验签失败,自然不会认可这份数据:
通常 非对称加密要做到防窥视和防篡改,需要有两对公私钥 :对方的公钥用于内容加密,自己的私钥用于签名(让对方验证身份)。
因为HTTP协议明文通信的安全问题,引入了HTTPS:通过建立一个安全通道(连接),来保证数据传输的安全。
服务器是 没办法直接将密钥传输到浏览器的 ,因为在 安全连接建立之前,所有通信内容都是明文的 ,中间者可窥视到密钥信息。
或许这时你想到了非对称加密,因为公钥是不怕公开的:
然而在第2步, 中间者可以截取服务器公钥,并替换成了自己的公钥 ,此时加密就没意义了:
为了 防止公钥被假冒,数字证书(digital certificate )便诞生了 。
当服务器需要告诉浏览器公钥时,并不是简单地返回公钥,而是响应 包含公钥信息在内的数字证书 。
证书主要包含以下内容:
浏览器通过 【颁发机构的公钥】进行解密验签 ,验签通过即说明证书的真实性,可以放心取 证书拥有者的公钥 了。( 常用CA机构的公钥都已经植入到浏览器里面 )
数字证书只做一件事: 保证 服务器响应的 公钥是真实的 。
以上保证了 [浏览器⇒服务器] 是加密的,然而 [服务器⇒浏览器] 却没有(上图第4步);另外一个是 性能问题 ,如果所有数据都使用非对称加密的话,会消耗较多的服务器资源,通信速度也会受到较大影响。
HTTPS巧妙地结合了非对称加密和对称加密,在保证双方通信安全的前提下,尽量提升性能。
HTTPS(SSL/TLS)期望 建立安全连接后,通信均使用【对称加密】 。
建立安全连接的任务就是让 浏览器-服务器协商出本次连接使用的【对称加密的算法和密钥】 ;协商过程中会使用到【非对称加密】和数字证书。
特别注意的是:协商的密钥必须是不容易猜到(足够随机的):
其中比较核心的是随机数r3(pre-master secret),因为之前的r1、r2都是明文传输的, 只有r3是加密传输 的。至于为什么需要三个随机数,可以参考:
以上是一个比较简单的HTTPS流程,详细的可以参考文末的引用。
参考资料:
[1] 数字证书应用综合揭秘
[2] SSL/TLS协议运行机制的概述
[3] 图解SSL/TLS协议
[4] 《图解HTTP》
‘贰’ 小明同学在自己的电脑上使用word文档写了一篇日志。他想不让别人轻易看到里面的内容。你能帮他想想办法吗
如果自己的文档中有不愿让人看见的小秘密,或者所编辑的文件涉及到单位或公司的机密,往往需要防止别人查看我们的文档。只有对Word文档进行加密,才能够实现对Word文档的保护。给Word文档加密主要有以下几个方法:文件加密文件菜单设置:1、打开需要加密的Word文档。2、选“文件”的“另存为”,出现“另存为”对话框,在“工具”中选“常规选项”,出现“保存”选项卡。3、分别在“打开权限密码”和“修改权限密码”中输入密码(这两种密码可以相同也可以不同)。4、再次确认“打开权限密码”和“修改权限密码”。按“确定”退出“保存”选项卡。5、文件存盘。
由工具菜单设置:1、打开需要加密的Word文档。2、选“工具”菜单的“选项”命令,出现“选项对话框”。3、在“选项”对话框中选“保存”选项卡。4、分别在“打开权限密码”和“修改权限密码”中输入密码,点“确定”退出。5、将文件保存。
‘叁’ 小明手机加密看看
你好,手机加密就是为了保留自己的一点空间,如果你连他的手机密码都不允许保密,可能是有点过分了,他如果想跟你分享的话不用说就会直接给你看了。爱人之间也要互相留有一点空间的,否则会让人窒息。.
‘肆’ 4. 小明为了方便记忆,把自己的生日设成电脑密码,安全吗
不是很安全。
将密码设置成生日很容易被人破解。
密码是一种用来混淆的技术,它希望将正常的信息转变为无法识别的信息。当然,对一小部分人来说,这种无法识别的信息是可以再加工并恢复的。密码在中文里是"口令"的通称。登录网站、电子邮箱和银行取款时输入的"密码"其实严格来讲应该仅被称作"口令",因为它不是本来意义上的"加密代码",但是也可以称为秘密的号码。主要限定于个别人理解的符号系统。如密码电报、密码式打字机。
‘伍’ 中本聪和比特币的关系是什么呢
中本聪和比特币的关系是什么呢?
一、中本聪用比特币干掉任性的“中心化”
比特币从刚开始到今天,已经上涨了数万倍,以至于无论是圈内人还是圈外人,都难免感叹一句:我当年怎么没早点买比特币呢!
事实上,比特币刚开始可不是为了给大家炒币致富的,而是定义为一套电子现金系统。
为什么这么说呢,2008年,有个叫“中本聪”的人写了一篇名字叫作:《比特币:一个点对点的电子现金系统》,论文,这是一篇非常严谨的论文,里面并没有涉及到投资、致富这样的话题。
为什么要发明这样一套系统?是银行卡、信用卡支付不好用?还是银行服务不便捷?都不是。
现如今,尽管纸币还是主要的货币形态,但是一手交钱一手交货的时代仿佛已经过去,现如今就算路边的小商贩也大多都是微信支付宝付款,微信转账、支付宝转账已经成为新时代的主要生活方式。在 2008 年的时候即使没有微信、支付宝,但仍有银行卡、信用卡,那么比特币这样的概念为什么会诞生呢?
比特币诞生的时代背景:2008年全球正处于严重的金融危机,美联储不断增发货币加剧了通货膨胀,中本聪认为处于完全中心化的中央银行并不靠谱,对于现金的增发任意为之,针对这一点着实过分!
基于这种大环境,他开始思考:怎么样遏制这个“任性”的中央权威,不让它时不时就增发或者减少发行现金......
经过几个月的思考和研究他得出了这样的结论:干掉美联储肯定是不现实的,但我可以重新做一套货币系统,用全新的金融系统体系去制衡或者干掉美联储这种权力机构!换句话说:既然美联储是“中心化权威”,遏制它的方式当然就是“去中心化”!
于是,他通过对之前已经发放的数字货币 B-money和HashCash等的深入研究,创建了一个点对点的、完全去中心化的电子现金系统,也就是现在的比特币。
点对点、去中心化意味着什么?我们举个例子:
假使你给小明转2000块钱,如果用现在的支付方式,这个2000块钱的流转过程是这样的:你——银行|微信|支付宝——小明,也就是说,这2000块钱要经过“银行|微信|支付宝”这样一个中转站才能到达小明手里。
如果是比特币呢,2000个比特币的流程是这样的:你——小明,直接支付收款,完全除去了中心化的监管,自己的资金自己完全掌握控制权,一个绝对自由的金融体系系统自此诞生。
所以,比特币最早的建立初衷并不是让人实现“一夜暴富”的造富神器,也不是一种简简单单的加密数字货币,而是一套去中心化的电子现金系统。他要改变的不是货币和支付形式,他是要创造对于金融领域的一种完全自由自控的超时代产物。
比特币这套电子现金系统,融合了P2P、密码学、经济学等多重现有的学科,在比特币的诞生中,中本聪更像是一名优秀的“产品经理”,他善于把原有的技术手段整合利用,做成一套让人耳目一新的“新”产物。
二、中本聪到底是谁?
中本聪这么厉害,他到底是谁?答案是:不知道。
“中本聪身世之谜”可以说是当代区块链行业最大的未解之谜了。不止有人的地方有江湖,其实,有“谜”的地方也有江湖。“中本聪”的名头实在是太响了,每过一段时间,就会有人站出来说:“我就是中本聪”;或者,“他就是中本聪”。
中本聪真实身份猜测之一:多利安·中本
多利安·中本是居住在加利福尼亚州的日裔美国人,“哲史”是他出生时的名字
(“中本哲史”这个名字,是“中本聪”的日本媒体翻译版本)。除了名字相同以外,多利安在接受采访时亲口说:“我已经不再参与它了,不能讨论它。它已经被转交给其他人。他们现在在负责。我已经没有任何联系。”
但随后,多利安澄清,自己所说的事情是之前从事的军方保密工作,并不是比特币。P2P基金会的中本聪账户也在尘封五年之后发了第一条消息,称:“我不是多利安·中本。”
中本聪真实身份猜测之二:望月新一
日本数学家望月新一的研究领域包含比特币所使用的数学算法。而且,望月新一一般不使用常规学术发表机制,而是习惯独自工作。不过,有人提出质疑,认为设计比特币所需的密码学并不是望月新一的研究领域,望月本人也否定了自己是中本聪的说法。
中本聪真实身份猜测之三:尼克·萨博
尼克·萨博之前是乔治华盛顿大学的教授,热衷于研究去中心化货币,也喜欢使用化名发表学术作品,他曾经发表过一篇关于“比特黄金”的论文,被认为是比特币的先驱。不过,他在一篇文章中表示:中本聪是继他之后少数对比特币算法感兴趣的人,暗示自己并不是中本聪本人。
中本聪真实身份猜测之四:哈尔·芬尼
哈尔·芬尼是一位着名的密码朋克和密码学家。他是2009年第一个从中本聪那里接收比特币的人,还是第一个下载比特币客户端的人。然而,哈尔·芬尼在2014年去世之前否认了他是中本聪的说法。
中本聪真实身份猜测之五:克雷格·史蒂芬·怀特
克雷格·史蒂芬·怀特是一位澳大利亚的企业家,也是首位公开承认自己是中本聪,声称自己拥有中本聪的加密签名档和早期的比特币地址私钥,但这一言论饱受质疑,人们认为这两个证据其实很容易获取到,并不足以能够证明中本聪的身份。因为时常在公开场合叫嚣自己是“中本聪”,他获得了一个外号“澳本聪”(澳洲的中本聪),当然,这是一个戏称。
中本聪真实身份猜测之六:“中本聪”是一个团队,而非个人
中本聪在发言和程序中,切换使用英式英语和美式英语,并且随机在全天不同的时间上线发言,似乎账号有多人操纵。比特币核心开发团队工作人员认为,其算法设计过于精良,不像是一个人单枪匹马所能完成的。
中本聪真实身份猜测之七:“中本聪”只是一个虚构身份
这种猜测的依据在于,中本聪极少透露自己的真实信息。在P2P基金会网站的个人资料中,他自称是居住在日本的37岁男性。然而,他在公开场合从来没有使用过日语,而是使用非常纯正熟练的英文。用他的姓名在网上搜索,也无法找到任何与这个人相关的信息。
中本聪为什么不现身呢?早在2015年,加州大学洛杉矶分校金融学教授巴格·乔杜里便提名中本聪为2016年诺贝尔经济学奖候选人,尽管获此殊荣,中本聪也一直没有出现。中本聪为何把自己包裹在层层加密的代码下呢?我们认为主要有三个原因:
第一,隐匿身份是为了规避外在风险。
发行货币本是一种国家行为,而中本聪发明的比特币,是建立在无政府主义,或者说对政府以及中心化金融机构缺失信任的基础上。加之比特币的发展速度非常快,不仅如此,还带动了其他数字货币的出现和滋长,目前在世界范围内的市值是非常巨大的。
打击一种现象最常见也最有效的方法莫过于“抓典型”,比特币是一众加密货币的鼻祖,尽管它是一种虚拟货币,一旦被一些国家界定为非法发币、纵容经济犯罪等非法行为,中本聪本人或将面临刑事责任。
第二,避免自己的个人言论影响去中心化发展进程。
我们都知道,币圈大佬的号召力有多强,尽管现在的共识在于,币圈大佬全部是自带流量的网红,但事实的确是,他们振臂一呼,后面的韭菜就蜂拥跟随。
中本聪可以说是币圈大佬中的王者级别,他的任何言论和行为都将影响到许多人,因为在大家眼里,他就是权威,这与他所倡导的“去中心化”是完全相悖的。
第三,保护个人隐私与人身安全。
平日里,大佬风光无线,可是每当遇到币价跳水、主网漏洞等问题,大佬就会被揪出来问责。看看曾经在上海被围追堵截的V神、以及此前饱受争议的EOS创始人BM就知道了。中本聪的身份一旦被公开,将要面临的也许是负面缠绕甚至人身攻击。这样看来,还是被代码包裹的世界更安全。
中本聪到底是谁我们暂且不管,尽管他本人身份虚幻成谜,但是他留给我们的比特币系统却是实实在在存在的。
‘陆’ 数字签名/数字证书/对称/非对称加密/CA 等概念明晰
此次不深入源码、不分析原理、只厘清一些易混淆概念及其关联。
本次将从通信演变历史的角度出发,一步步阐述概念及其作用。
通过本篇文章,你将了解到:
大部分时候,咱们交流都是靠嘴对嘴,信息完全暴露在他人的耳朵里。
拉拉家常无关紧要,但要是涉及重要、私密的信息就不能这样子了。
此时可能想到,那我们就说悄悄话吧。
悄悄话只能是俩人近距离才能实现,若是天各一方怎么才能将信息安全送给对方呢?
大家或多或少地看过谍战片,那会儿卧底如何将信息传给组织呢?答案是通过密码本。
双方约定好用一个密码本,密码本其实是个映射关系:
此时双方通信是经过加密的,我们称为密文通信。第三者想要破解信息,就需要拿到密码本或是破译出密码本映射关系,从而将密文转为明文。
随着科学技术的发展,人们的交流由书信逐渐过渡为电子通信。
当我们在键盘上敲击一段文字后,这段信息会通过网络发送给对方,怎么保证这段信息不被别人轻易知道呢?
我们想到了加密,双方在传输信息前商量好一个密钥,发送方用密钥将信息进行加密形成密文后再发送,接收方在收到密文后使用之前协商的密钥进行解密。
举个简单例子:
小明现在将信息进行对称加密:
那么将明文hello,每个字符+1,得出如下结果:
hello--->ifmmp
小红拿到密文ifmmp后,她知道密钥X=1,因此她将密文每个字符-1,得出如下结果:
ifmmp--->hello
至此,小明和小红成功进行了交流。
此时小刚想知道小明和小红聊了啥,于是截获了信息:
但是由于小刚拿到的是密文信息:ifmmp。因为不知道密钥,因此无法反推出明文:hello。因此小明和小红的信息交流安全得到了保证。
当然对称加密算法没那么简单,常见的对称加密算法有如下几种:
似乎使用对称加密就可以解决咱们通信安全问题,但引入了另一个问题:
是否有种方式可以光明正大地传递信息呢?
答案是:非对称加密。
接着来看看小明和小红如何使用非对称加密来实现安全通信。
小明和小红分别生成自己的公私钥:
由上可知,用小红的公钥加密的信息只能由小红的私钥解开,只要小红的私钥没有泄漏,那么小明和小红的通信是安全的。
当然了,真正非对称加密算法并没有那么简单,常见的几种非对称加密算法:
小明和小红的通信真是安全的吗?
此时小刚又来搞事情了:
以上信息表明:
小明和小红一合计,想出来了一个办法:
消息摘要(Message Digest)特点:
常见的消息摘要算法:MD5、SHA1。
虽然采用了消息摘要,但是小刚依然能够自己伪造信息,并生成对应的消息摘要,小红收到后验证摘要是正确的,便认为是小明发的,这种做法还是有漏洞。
在前边用到了小红的公钥、私钥,而没用到小明的公钥、私钥。
在消息摘要的基础上,想办法让小明的公私钥也参与到通信过程中来:
与消息摘要过程对比,此时多了一个步骤:
用私钥加密的信息的过程我们称之为:数字签名
数字签名具有不可抵赖性的特点。根据前面的描述,用私钥加密的信息,只有对应的公钥才能解开。
因此,若是小红使用了小明的公钥解开了密文,那么说明该消息肯定是小明发过来的。反之,小明使用私钥加密后发出去,代表这信息是确认是自己发的,这就是他的签名。
常见的数字签名算法:RSA、DSA、ECDSA。
老规矩,用图来看看小明与小红如何使用数字签名的。
小明发送信息过程:
小红处理信息过程:
由上可知:
数字签名有两个作用:
整个流程小明的公私钥、小红的公私钥都参与了。
因为小刚没有小明的私钥,所以他无法生成小明的数字签名,最终无法通过小红对数字签名的验证。
这么看来小刚是无能无能为力了?非也!
回顾一下之前说的对称加密的痛点:如何传递对称密钥?
实际上非对称加密也存在问题:如何传递公钥?
可见,无论是对称加密还是非对称加密都需要解决密钥传递问题。
若是小刚伪造了小红的公钥,情况如下:
因为公钥被伪造了,所以小刚可以为所欲为。
小明如何才能知道自己收到的公钥是小红的呢?
这时候就需要引入权威机构:CA(Certificate Authority) 证书授权中心
有了CA,小红发布公钥的流程变了:
用图表示如下:
图上5个步骤,有些同学对第4步不太理解:
似乎又回到了原点:如何安全传递公钥的问题。
其实,信任是有起点的。
CA 不仅为他人生成证书,也生成自己的证书,CA 为自己生成的证书里包含了CA的公钥。
CA 的证书在电脑、手机等设备出场的时候就会预置在系统里、浏览器里。
因此,当小明验证小红的证书时,会在系统里寻找能够解开小红证书的CA 公钥,若是找到则说明小明证书的颁发机构是可信任的,既然信任了该证书,那么从证书里取出的公钥,小明也认可是小红的。
至此,小红的公钥就安全地传给了小明,后面就可以愉快地通信了。
系统里找不到对应的证书会有什么影响?大家还记得12306网站刚开始运行的时候,用浏览器访问时浏览器会提醒说该网站不受信任,12306提示用户安装自己的根证书。
这也从侧面说明了,咱们不要轻易更改系统里的证书。
对称加密存在密钥传送被泄漏的风险,非对称加密虽然不需要传递私钥,但是需要传递公钥,也存在被中间人攻击的风险。
为此,引入了CA 生产证书解决了非对称加密公钥传递问题。
然后非对称加密速度慢,适合加密数据量少的信息,对称加密速度快,适合加密数据量大的信息。
如何将对称加密与非对称加密结合起来打造一个安全的通信链路,下篇我们将重点分析其中的典型:SSL/TLS 的原理与应用。