前文我们了解了隧道技术GRE VPN相关技术,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16538625.html;今天来聊一聊有关加密和相关安全的东西;
我们知道GRE VPN最大的缺点就是它不加密,这意味着我们走GRE隧道的数据在互联网上都是明文的,这很不安全;那什么是加密呢?
加密技术简介

明文:所谓明文就是指需要被隐蔽的消息;即我们在互联网上传输的原始数据;
密文:密文是指把明文变换形成的隐蔽形式;即明文通过算法加密后形成的消息;
加密:加密是指把明文转化成密文的过程;
解密:解密是指把密文还原成明文的过程;
密钥:密钥是指在加密或解密的算法中输入的参数;
加密算法总的分两大类,对称加密算法和非对称加密算法;
对称加密

提示:对称加密算法最大的特点就是加密和解密使用的都是相同密钥;这意味着只要有人获取了密钥对应密文就能被解开;这种加密的方式优点是速度快,密文紧凑;所谓密文紧凑是指形成的密文和明文大小相差无几;缺点是管理密钥复杂;适合用于大量数据的加密传送;

提示:如上图所示,A和B通信,首先要实现协商出用于加解密的密钥来,然后才可正常通信;因为加密和解密都是用的同一密钥;这样一来对称加密保存密码会很多,如果需要和100个人同时发送消息,那么在本端就需要100个密钥;
常用的对称加密算法

提示:推荐使用AES;
非对称加密

提示:非对称加密的特点是加密、解密使用的不同密钥(分别是公钥和私钥);公钥和私钥是成对出现,加解密规则是公钥加密私钥解密,私钥加密公钥解密;这种非对称加密的缺点是加解密速度很慢,密文不紧凑(即加密后的文件相对源文件要大);优点的密钥管理起来简单;适合用于数字签名;

提示:如上图所示,A和B通信,首先他俩会生成各自的公钥和私钥,然后各自交换公钥(交换公钥对过程后面聊);A和B都有对方的公钥后,A发给B的信息会用B的公钥来加密,同理B发给A的信息会用A的公钥来加密,然后发送给对方,对方收到密文后,用自己的私钥来解密,从而拿到对方发送的原始数据,完成加密通信的目的;这种加解密的方式管理密钥就很简单,只需要各自管理好自己的私钥就好,想要和谁通信把公钥发送给对方即可;相比对称加密的方式要简单太多;
常用的非对称加密算法

对称加密和非对称加密结合
通过上述我们了解了对称加密和非对称加密的优缺点以及加解密过程,不管是对称加密还是非对称加密都有对应的缺点,那我们把两种方式结合起来是不是会弥补一些缺点呢?在实际使用中,通信双方通常会使用公钥密码学来交换密钥素材,双方最终计算出密钥,然后用对称密码学来加密实际的数据,两者配合使用就保证了加密速度和安全性;

提示:AB双方通过交换公钥来确认对方的身份,然后拿对方的公钥来加密发送用什么算法,长度,等等密钥素材,然后对方收到密钥素材后,然后算出一个密码来(这个密码用于对称加密的密钥,当然协商过程是双方都会把自己支持的加密算法、程度等等条件发送给对方,然后根据对方发送到密钥素材来选择适当的算法、长度等密钥素材计算出一个密钥来,然后发送给对方);对方收到密钥后,然后拿这个密钥先用对称加密算法将要发送的信息加密,得到的密文,然后发送给对方;对方收到密文后用刚才计算出来的密钥解密,拿到对方发送的原始数据;简单讲就是通过公钥来加密发送密钥素材,计算出对称加密的密钥,然后再根据这个密钥来加解密明文,从而完成加密通信;
什么是PKI?PKI是Pubilc key infrastructure的缩写,公钥基础架构;通过公钥技术与数字证书保证信息安全的体系;该体系主要由公钥加密技术、数字证书、CA、RA等共同组成;该体系能够实现信息的机密性、完整性和身份验证,不可否认性;
上述的对称加密和非对称加密的结合只是完成了PKI体系中的机密性,接下来我们来了完整性;
公钥加密技术
非对称加密也叫公钥加密,是pki的基础;
公钥加密的特点
1、公钥和私钥是成对生成,互不相同,可以相互加解密;
2、根据一个密钥无法推算出另一个密钥;
3、公钥公开,私钥保密(只有自己才知道)
公钥加密技术根据实现的功能不同,可以分为数据加密和数字签名;所谓数据加密就是我们上面聊的发送方使用接收方的公钥加密数据;接收方使用自己的私钥来解密数据,数据加密主要保证了数据的机密性;数字签名(Digital Signature),发送方使用私钥对信息摘要信息进行加密的一个过程,过程中所得到的密文及称为签名信息;发送方将签名信息与原始数据发送给接收方;接收方对原始数据进行摘要计算,得出的值和签名信息对比,保证数据的完整性、身份验证和不可否认性;
信息摘要
什么是信息摘要?
信息摘要又名单向散列函数,哈希(hash),主要作用是给予任意大小的数据,得出一个固定长度的值,类似人的指纹、DNA;该技术有一个份额特点是不可逆、具有雪崩效应;所谓雪崩效应是指只要有细微的改变都会影响哈希后的结果(结果差异非常大);主要用于验证数据是否被篡改,校验数据的完整性;

提示:如上图所示发送方给接收方发送一份文件,接收方怎么知道发送方发送的文件和自己接受的文件内容是否相同呢?是否没有被篡改呢?此时发送方会公布发送的文件的hash,然后接收方收到文件后,对文件做hash得到的字符串和发送方公布的hash值相同,那么就说明接收方收到的文件没有被篡改;反之接收方接收到文件和发送发送的文件不一样;
常用的信息摘要算法

数字签名流程

提示:数字签名就是发送方将要发送的明文通过信息摘要算法将对应文件的信息摘要提取出来,然后再用自己的私钥将其加密就形成了数字签名;发送方发送原始明文时会将数字证书一起发送给对方,对方收到A发送到密文,会用A的公钥解密,然后拿到明文信息和摘要信息,然后接收方用相同的摘要算法对明文进行摘要信息提取,然后和A发送到摘要信息进行对比,如果一样,则说明对应明文是完整的,同时也说明该信息是A发送的,验证的对方的身份和不可否认性(只有A的公钥可以解开A的私钥加密后的信息);
公钥技术的规模应用难题
如何解决公钥对传播问题?我们怎么将自己的公钥告诉别人呢?我们拿到一个公钥怎么来验证其真实性呢?我们怎么知道拿到对方的公钥就一定是我们通信的对方呢?会不会是存在中间人呢?
由于上述的种种问题,证书由此诞生;证书主要用于保证密钥的合法性;证书的主体可以使用户、计算机、服务等;证书格式遵循x509;证书包含了使用者的公钥值;使用者的表示信息;有效期;颁发者的标识信息和颁发者的数字签名信息;数字证书由权威公正的第三方机构即CA签发;
CA的作用
CA是Certificate Authority的缩写,证书颁发机构;它的核心功能就是颁发和管理数字证书;除此之外,它还处理证书申请,发放证书,更新证书,接收最终用户数字证书的查询、撤销;产生和发布数字证书吊销列表(CRL);数字证书归档;如果把证书类比身份证,那么CA就是公安局;
证书颁发过程

提示:首先由用户想RA提出证书申请,RA确认用户的信息等;然后由RA提交申请信息到CA;CA将颁发的证书发送给RA,RA将证书传给用户;这个流程很简单和我们办理身份证类似;我们在派出所照完身份证,然后有派出所将信息传到公安局,最后身份证送到派出所,然后我们到派出所领取;有关Linux搭建CA的教程可以参考https://www.cnblogs.com/qiuhom-1874/p/12237944.html;
PKI协议
SSL:Secure Sockets Layer,安全套接层,主要用于认证用户和服务器,确保数据发送到正确的客户机和服务器;加密数据防止数据中途被窃取;维护数据的完整性,确保数据在传输过程中不被改变;
HTTPS:Hypertext Transfer Protocol Secure,使用SSL来实现的http;
IPSec:Internet Protocol Security,目前主流的VNP解决方案;
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳