公钥算法

关于密钥和数字证书

故事扮演 提交于 2019-11-27 14:04:44
  前些天逛技术网,偶尔看到一篇国外关于密钥的通俗易懂的详解文章,当时对具体的细节还是有点模糊搞不清楚,so昨天恶补了一下,今天简单整理一下自己的收获,以备以后回顾。 1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。 2.鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。 3.苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果。 4.鲍勃收信后,用私钥解密,看到信件内容。 5.鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest)。 6.然后,鲍勃使用私钥,对这个摘要加密,生成”数字签名”(signature)。 7.鲍勃将这个签名,附在信件下面,一起发给苏珊。 8.苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。 9.苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。 10.复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。因此,他就可以冒充鲍勃,写信给苏珊。 11.苏珊发现,自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找”证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成”数字证书”(Digital

浅谈https\\ssl\\数字证书

只愿长相守 提交于 2019-11-27 14:04:10
全球可信的 SSL数字证书 申请: http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了。本文追本溯源围绕这个模式谈一谈。 名词解释 首先解释一下上面的几个名词: https: 在http(超文本传输协议)基础上提出的一种安全的http协议,因此可以称为安全的超文本传输协议。http协议直接放置在TCP协议之上,而https提出在http和TCP中间加上一层加密层。从发送端看,这一层负责把http的内容加密后送到下层的TCP,从接收方看,这一层负责将TCP送来的数据解密还原成http的内容。 SSL(Secure Socket Layer): 是Netscape公司设计的主要用于WEB的安全传输协议。从名字就可以看出它在https协议栈中负责实现上面提到的加密层。因此,一个https协议栈大致是这样的: 数字证书: 一种文件的名称,好比一个机构或人的签名,能够证明这个机构或人的真实性。其中包含的信息,用于实现上述功能。 加密和认证: 加密是指通信双方为了防止铭感信息在信道上被第三方窃听而泄漏,将明文通过加密变成密文,如果第三方无法解密的话,就算他获得密文也无能为力;认证是指通信双方为了确认对方是值得信任的消息发送或接受方,而不是使用假身份的骗子,采取的确认身份的方式

SSH远程访问与控制,ssh密钥对配置

余生长醉 提交于 2019-11-27 13:50:09
1、加快与X-shell的连接 请参考 https://www.cnblogs.com/elin989898/p/11361866.html 2、用户登录控制 sshd服务默认允许root用户登录,但是在Internet中使用是非常不安全的。普遍的做法如下:先以普通用户远程登入,进入安全shell环境后,根据实际需要使用su命令切换为root 用户 [root@localhost ~]# vi /etc/ssh/sshd_config [root@localhost ~]# systemctl reload sshd [root@localhost ~]# useradd jll 创建用户 [root@localhost ~]# passwd -d jll //清空密码 测试空密码用户是否能够登录。 实验现象: (1)超过系统设置的登陆时间,连接对话会直接断开 (2)连续输入3次错误密码时连接会话会直接断开 (3)通过root用户密码时反复提示输入密码 (4)测试用户空密码时不能登录系统的 3、OpenSSH 服务访问控制 AllowUsers 仅允许用户登录 DenyUsers 仅禁止用户登录 (1)AllowUsers 不要与 DenyUsers 同时使用 (2)当服务器在Internet时,控制包含的ip地址时是公司公网地址 4、登录验证方式 SSH服务支持两种验证方式

Java Web学习(二)数据加密

拟墨画扇 提交于 2019-11-27 13:13:46
一、Tomcat 体系 首先通过一幅图来了解下tomcat的运行体系: Tomcat服务器的启动是基于一个 server.xml 文件的。 启动流程: 首先启动一个Server,Server里面就会启动Service,Service里面就会启动多个"Connector(连接器)",每一个连接器都在等待客户机的连接。 当有用户使用浏览器去访问服务器上面的web资源时,首先是连接到Connector(连接器),Connector(连接器)是不处理用户的请求的,而是将用户的请求交给一个Engine(引擎)去处理。 Engine(引擎)接收到请求后就会解析用户想要访问的Host,然后将请求交给相应的Host。 Host收到请求后就会解析出用户想要访问这个Host下面的哪一个Web应用,一个web应用对应一个Context。 二、互联网上的加密原理 对称加密 定义: 采用单钥密码系统的加密方法, 同一个密钥可以同时用作信息的加密和解密 ,也称为 单密钥加密 。 使用场景: 由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。(如验证码,密码校验) 常用加密方式: DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等 非对称加密 定义: 非对称加密算法需要一对密钥:公开密钥(publickey)和私有密钥(privatekey)。 实现过程: (PS

接口数据使用了RSA加密和签名?一篇文章带你搞定!

会有一股神秘感。 提交于 2019-11-27 12:47:10
01 前言 很多童鞋在工作中,会遇到一些接口使用RSA加密和签名来处理的请求参数。 那么遇到这个问题的时候,第一时间当然是找开发要加解密的方法,但是开发给加解密代码,大多数情况都是java,c++,js等语言实现的。 加解密的代码虽然有了,但是咱们身为一个测试,使用python做的自动化,并不是什么语言都会,这个时候就会比较尴尬了。 看着这一团加解密的代码,自己却不知从何下手,再去找开发给写个python版本的,开发估计不一定搭理你,就算搭理你,开发也未必会python。 那么今天咱们就来讲讲如果通过python来实现RSA加解密和签名。 02 RSA算法简介 RSA加密算法是一种非对称加密算法,加密的秘钥是由公钥和私钥两部分组成秘钥对。 ◆ 公钥用来加密消息 ◆ 私钥用来对消息进行解密 ◆ 公钥是公开的 ◆ 私钥则是用户自己保留的 由于公钥是公开的,那么任何人只要获取到公钥,都可以使用公钥来加密发送伪造内容。 出于安全性考虑,在发送消息之前我们可以使用RSA来签名,签名使用私钥来进行签名。 使用公钥来进行验签,通过签名我们可以确保用户身份的唯一性,从而提高安全性。 03 加密和签名的区别 ◆ 加密: 比方现在有两个人A和B,A要给B传递机密的信息。 为了避免信息泄露,B事先通过RSA加密算法生成了一对秘钥,并且将公钥事先给到A,私钥则自己保留。 A给B传递消息的时候

区块链扫盲:区块链技术初探(一)

妖精的绣舞 提交于 2019-11-27 12:40:43
一、区块链技术 1. 什么是区块链? 去中心化的、分布式的、区块化存储的数据库 存储全部账户余额及交易流水的总账本 每个节点有完整的账本数据 账本数据记录了全部的历史交易数据 交易数据存储在区块上 每个区块包含前一区块ID及HASH,形成链 2. 区块链基本原理 如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。 交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录 区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识 链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。 3. 区块链要解决的问题 如何去中心化地共享数据? 如何确保账户不被冒用? 如何确保账户余额足够? 如何确保交易记录不被篡改? 谁负责记账? 怎么保障记账者的可信? 怎么保障记账者的积极性? 4. 区块链特性 去中心化 开放性(没有限制,开源,数据公开) 去信任(仅信任机器) 自治性,集体维护 可靠的数据库(不可更改,永远可访问) 匿名性,隐私保护 5. 核心技术 P2P网络、数字签名、区块化数据库,竞争记账权、共识算法、交易回溯。 二、P2P网络及通讯技术(分布式技术网络 ) 1. 自动发现 通过种子文件,获取初始节点(地址及端口)

ssh创建密钥对验证

走远了吗. 提交于 2019-11-27 12:08:21
ssh创建密钥对认证 [root@localhost ~]# useradd hehe #创建普通用户张三 [root@localhost ~]# su - hehe #进入张三用户 [hehe@localhost ~]$ ssh-keygen -t rsa #创建密钥对,rsa算法 #创建密钥对时会让你输入密码密码可写可不写 [hehe@localhost ~]$ ls [hehe@localhost ~]$ ls -a . .. .bash_logout .bash_profile .bashrc .cache .config .mozilla .ssh [hehe@localhost ~]$ cd .ssh [hehe@localhost .ssh]$ ls id_rsa id_rsa.pub #出现.ssh目录 私钥公钥都在里面id_rsa 私钥 id_rsa.pub 公钥 [hehe@localhost .ssh]$ scp id_rsa.pub root@192.168.100.181 #把公钥以root的身份传给服务器 [hehe@localhost .ssh]$ scp id_rsa.pub root@192.168.100.181:/tmp/ The authenticity of host '192.168.100.181 (192.168.100.181)'

网络安全 与 加密算法

大兔子大兔子 提交于 2019-11-27 07:12:33
计算机中的网络安全 在本篇中介绍了以下几个方面: 机密性 密码学 对称加密算法(DES, 3DES, AES) 公开秘钥算法 RSA大素数的获取 完整性 散列函数(MD5, SHA-1, 并没有提及算法实现) 报文鉴别(MAC) 数字签名 端点鉴别 应用 SSL(TCP网络安全) 运行时安全 防火墙的基本知识 主要体现在以下几个方面: 机密性, 即发送的信息只有双方彼此能够解读,其他人以任何方式皆无法解读。 报文完整性, 即接收方需要能够验证,当前接收到的数据是完整的,没有被经过篡改的。机密性与完整性是相互独立的两个属性。 端点鉴别, 需要知道我收到的消息, 确确实实是来自于对方, 而不是恶意方伪装的。 运行性安全, 需要能够识别并阻拦恶意攻击。如 Dos攻击等, 其目的并非为了窃取信息,而是使得系统瘫痪, 无法运行。 机密性 首先来看机密性问题, 小明和小红之间发送的有效信息 不希望被第三方解读。 而实现这点的方式自然是, 加密, 加密,就需要相关的密码。 密码学 加密所要实现的根本目的是,将数据加密,除非拥有相关的秘钥,算法,才能够 也 必须能够 将数据恢复到 原始数据。 这里的原始数据被称作 明文 , 小明使用了 加密算法 加密其明文, 生成的文本为 密文 , 加密算法是公知的,而 秘钥 是私有的. 对称秘钥体系 凯撒密码 是一种简单的加密算法。 对于字母而言, 约定 用

https的加密解密过程

≯℡__Kan透↙ 提交于 2019-11-27 07:03:35
前置知识 SSL是90年代Netscape弄出来的一套东西,为的是解决HTTP协议明文传输数据的问题。后来SSL慢慢成了事实上的标准,于是IETF就把SSL标准化了,名字叫做TLS,TLS 1.0其实就是SSL 3.1。所以SSL和TLS经常被放在一起写成SSL/TLS,因为这两个名词在现在其实就是同一个东西。HTTPS是使用TLS的HTTP协议。 证书以及信任链 我们知道,HTTPS的网站都有一个自己的证书,用于表明自己的身份。证书本质上是为了让公钥能可信的传输。公钥是放在证书里面的,如果证书可信,那么公钥就也是可信的。那为什么一个公钥是可信的呢?这就要说到信任链和CA。CA指的是Certificate Authority,CA都是权威机构,他们的证书叫做根证书,这些根证书被操作系统信任,根证书信任的证书也是可信的。因此权威机构颁发的证书都能被操作系统信任,这就组成了信任链。 这里以RSA密钥交换算法为例为例,CloudFlare提供Keyless服务,把网站放到它们的CDN上,不用提供自己的私钥,也能使用SSL加密链接。 https加密解密过程 : 客户端 发起https请求 到服务端(服务器端要一套数字证书,可以自己制作,也可以向组织申请),向服务器端索要公钥。 发送的信息一般带上: 客户端生成的一个随机值 支持的SSL/TSL协议的版本号 所支持的加密算法 Session

几种常见的加密方式介绍

自古美人都是妖i 提交于 2019-11-27 05:40:26
密码学在计算机科学中使用非常广泛,HTTPS就是建立在密码学基础之上的一种安全的通信协议。HTTPS早在1994年由网景公司首次提出,而如今在众多互联网厂商的推广之下HTTPS已经被广泛使用在各种大小网站中。在完全理解HTTPS之前,有必要弄清楚一些密码学相关的概念,比如:明文、密文、密码、密钥、对称加密、非对称加密、摘要、数字签名、数字证书。 密码 密码学中的密码(cipher)和我们日常生活中所说的密码不太一样,计算机术语『密码 cipher』是一种用于加密或者解密的算法,而我们日常所使用的『密码 password』是一种口令,它是用于认证用途的一组文本字符串,这里我们要讨论的是前者:cipher。 密钥 密钥是一种参数,它是在使用密码(cipher)算法过程中输入的参数。同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文。很多知名的密码算法都是公开的,密钥才是决定密文是否安全的重要参数,通常密钥越长,破解的难度越大,比如一个8位的密钥最多有256种情况,使用穷举法,能非常轻易的破解,知名的DES算法使用56位的密钥,目前已经不是一种安全的加密算法了,主要还是因为56位的密钥太短,在数小时内就可以被破解。密钥分为对称密钥与非对称密钥。 明文/密文 明文(plaintext)是加密之前的原始数据,密文是通过密码(cipher)运算后得到的结果成为密文