公钥加密

网络传输数据的加密过程详解

徘徊边缘 提交于 2019-12-06 01:23:04
常见的明文传输协议有:http,smtp,dns,pop3,imap4。 常见的攻击方式有:窃听,数据注入,会话劫持 为了保证互联网上的数据传输的安全性,于是各种的加密方式和加密算法诞生了: 数据加密方式:对称加密、公钥加密、单向加密。 1.对称加密: 加密方和解密方使用同一个密钥, 其优点是: 加密解密的速度快,适合于大量数据的加密。 缺点是: 无法进行密钥交换。 2.公钥加密: 使用接受方的公钥进行加密,接收方在使用自己的密钥进行解密。 缺点是: 加密效率低,一般不用在数据加密上,通常是用在数据加密的密钥交换上的加密。 3.单向加密: 获取数据的特征码, 其特点是: 定长的输出,加密过程不可逆,具有雪崩效应也称作蝴蝶效应。 由上面的加密方式可以得知,每一种加密方式都具有缺点,要想在互联网上传输数据既要保证数据的完整性和数据的保密性,以及数据发送者的身份验证 ,显然使用一种加密方式是远远不够的。 单说要完成数据发送者的身份验证: 发送者使用自己的私钥对某一数据的特征码或其他进行加密,当接受者收到数据时在使用发送者的公钥进行解密,这一过程就可以完成发送者的什么验证,该过程又称作"数字签名"。 在既保证数据的完整性,保密性以及实现发送者的身份验证的数据传送过程: 首先发送者对自己要发送的数据进行单行加密,计算出数据的特征码,并且使用自己的私钥讲该段特征码进行加密

iOS签名授权机制

倖福魔咒の 提交于 2019-12-06 01:22:55
iOS签名授权机制 原文 http://Joywii.github.io/blog/2016/03/02/iosqian-ming-shou-quan-ji-zhi/ 几个重要的概念 1. 非对称加密 非对称加密算法需要两个密钥: 公开密钥(publickey )和 私有密钥(privatekey) 。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。(私钥是要保密的,公钥可以公开) RSA 是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 RSA 是以三个发明者的姓氏首字母组成的。 2. 摘要算法 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法、散列算法。 摘要算法也可以理解为将任意长度的数据,通过一个算法,得到一个固定长度的数据。典型的摘要算法,比如大名鼎鼎的 MD5 和 SHA 。 3. 数字签名 数字签名就是利用 非对称加密 和 摘要算法 来传输数据,保证数据的 完整性 和 合法性 。验证过程如下: 1. 发送方使用给一个摘要算法( MD5 )得到要发送数据的摘要

远程登录——SSH

跟風遠走 提交于 2019-12-05 20:46:55
基本知识了解 一、什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录,是一种比较流行的登录应用程序——安全外壳(Secure Shell,SSH),与TELNET一样。SSH利用TCP作为底层传输协议,不过它比TELNET更安全,提供更多的服务。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。 最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。 需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。 二、组成 SSH是应用层协议,由四部分组成 1 SSH运输层协议(SSH-TRANS) 因为TCP不是安全的运输层协议,所以SSH首先使用在TCP之上能够构建安全通道的协议。这个新的层是一个独立的协议,称为SSH-TRANS。当这个协议的软件实现被调用后,它的客户程序和服务器程序先利用TCP协议建立起一条不安全的准连接。然后它们相互交换几个安全参数,并在TCP纸上建立一条安全的信道。它提供的服务有 保密或加密报文的交换 数据的完整性

网络相关的命令工具研究报告

一曲冷凌霜 提交于 2019-12-05 20:18:44
SSH(远程连接工具)连接原理: ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。 SSH的工作机制: 服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。 SSH的加密技术: 加密技术:传输过程,数据加密。 1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码 2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。 原理 服务器建立公钥: 每一次启动sshd 服务时,该服务会主动去找/etc/ssh/ssh_host*的文件,若系统刚刚安装完成时,由于没有这些公钥,因此sshd会主动去计算出这些需要的公钥,同时也会计算出服务器自己需要的私钥。 客户端主动联机请求: 若客户端想要联机到 ssh 服务器,则需要使用适当的客户端程序来联机,包括 ssh, putty 等客户端程序连接。

6.5最详细的 HTTPS 科普扫盲帖

时间秒杀一切 提交于 2019-12-05 13:49:02
为什么需要https HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。 举个最常见的例子,用户登陆。用户输入账号,密码,采用HTTP的话,只要在代理服务器上做点手脚就可以拿到你的密码了。 用户登陆 –> 代理服务器(做手脚)–> 实际授权服务器 在发送端对密码进行加密?没用的,虽然别人不知道你原始密码是多少,但能够拿到加密后的账号密码,照样能登陆。 HTTPS是如何保障安全的 HTTPS其实就是 secure http 的意思啦,也就是HTTP的安全升级版。稍微了解网络基础的同学都知道,HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义了数据如何进行包装。 HTTP –> TCP (明文传输) HTTPS相对于HTTP有哪些不同呢?其实就是在HTTP跟TCP中间加多了一层加密层 TLS/SSL 。 神马是TLS/SSL? 通俗的讲,TLS、SSL其实是类似的东西,SSL是个加密套件,负责对HTTP的数据进行加密。TLS是SSL的升级版。现在提到HTTPS,加密套件基本指的是TLS。 传输加密的流程 原先是应用层将数据直接给到TCP进行传输,现在改成应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。 大致如图所示。 就是这么回事。将数据加密后再传输

https实现原理

爱⌒轻易说出口 提交于 2019-12-05 12:12:31
https详解 目前大部分大型网站已经全部切换到了 https 服务,所以很有必要了解整个 https 的原理, https 是如何保证信息安全的。这里希望大家对以下部分名词有一定的了解: 数字证书 是互联网通信中的身份标识(主要是用户身份信息和公钥),一般由CA中心颁发,既CA认证中心,或第三方权威机构。数字证书上通常包括:CA的签名,证书所有人的公钥,CA中心的签名算法,指纹以及指纹算法,证书的唯一编号,版本,有效期等。 数字签名、签名算法 对信息的摘要【通过 hash算法 / 摘要算法 / 指纹算法 计算的信息 摘要 / hash值 】使用签名算法进行加密,得到的密文就叫做数字签名 指纹、指纹算法/摘要算法【hash值计算】 对消息使用 hash算法/摘要算法 进行单向处理,获取一个固定长度的信息的 摘要/hash值 。 非对称加密 可以使用公钥、私钥分解进行对应的加密、解密的算法,即加解密使用的是不同的一堆秘钥。 对称加密 使用相同秘钥进行加解密的算法 公钥、私钥 非对称加解密的一对秘钥。 https服务部署过程和原理 了解 https 的原理,最好的方法就是走一遍流程,理论上的流程和原理通过以下几点来解释: 证书申请 证书信任 密文通信 证书的获取 https 的关键之一就是 ssl 证书,为了保证证书的安全有效性,在各类委员会/厂商之间合作

GO语言区块链技术---传智黑马(比特币&以太坊)

半城伤御伤魂 提交于 2019-12-05 07:44:27
判断ICO项目: 免费送币的直接Pass 白皮书用简单易懂的语言表达(模式是否清晰) 解决了什么问题,区块链是必须的吗(看产品) 发型代币有无必要,使用系统是否消耗使用代币(如果没有必要,公司的成败和投资者也许没有太大关系) 能否快速上交易所,有交易所的背书 代码是否开源,Github代码更新频率和数量 创世团队的背景(学历、工作),技术团队是否有区块链开发经验 站台的早期投资人,相关领域专家 区块链主要是数字版权和金融,其他都是伪需求,没有区块链也可以把产品做的很棒 ipfs? 比特币的起源: 中本聪,神一样存在的人物 Bitcoin白皮书:A Peer-to-Peer Electronic Cash System 去中心化,P2P分布式的数字货币系统 共识机制---POW工作量证明 运用非对称密码学 区块链作为账本 比特币特性: 硬通货:跨境交易 易携带:只需一个私钥 隐秘性:只暴露钱包地址;非法用途 无货币超发:通货紧缩 Server-Based中心化服务器: C/S、B/S架构 客户端完全信任服务器 DDOS攻击---Distributed Denial of Service分布式拒绝服务攻击 P2P(Peer-to-Peer)网络: 去中心化; 地位对等,无主从之分 用户越多速度越快 抗攻击 拜占庭将军问题(Byzantine Generals Probblem):

.net中加密与解密

主宰稳场 提交于 2019-12-05 06:54:23
.Net中的加密解密 引言 在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全。本文将简单地介绍了加密解密的一些概念,以及相关的数字签名、证书,最后介绍了如何在.NET中对数据进行对称加密和解密。 加密和解密 说到加密,可能大家最熟悉的就是MD5了,记得几年前我刚开始接触Web编程的时候,研究的一个ASP论坛程序,它的用户密码就是采用的MD5进行加密。MD5实际上只是一种散列运算,或者可以称为单向的加密,即是说无法根据密文(加密后的数据),推导出明文(原数据)。而我们下面要说明的,是在加密后可以进行解密、还原数据的。对于欲进行加密的对象,有的人称为消息,有的人称为数据,有的人称为信息,为了避免混淆,在本文后面部分,我统一将其称为 消息 。那么加密是什么呢?加密是通过对消息进行编码,建立一种安全的交流方式,使得只有你和你所期望的接收者能够理解。 那么怎么样才能叫安全呢?消息在接收方和发送方进行安全传递,一般要满足下面三个要点: 消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密)。 消息的接收方可以确定消息是由谁发送的(消息的接收方可以确定消息的发送方)。 消息的接收方可以确定消息在途中没有被篡改过(必须确认消息的完整性)。 加密通常分为两种方式:对称加密和非对称加密,接下来我们先看看对称加密。 对称加密

iOS开发如何避免安全隐患

独自空忆成欢 提交于 2019-12-05 05:51:14
现在很多iOS的APP没有做任何的安全防范措施,导致存在很多安全隐患和事故,今天我们来聊聊iOS开发人员平时怎么做才更安全。 一、网络方面 用抓包工具可以抓取手机通信接口的数据。以Charles为例,用Charles可以获取http的所有明文数据,配置好它的证书后就可以模拟中间人攻击,获取https加密前的明文数据。 1.1 中间人攻击 先简要地说下什么是中间人攻击: ①客户端:“我是客户端,给我你的公钥” -> 服务端(被中间人截获)。 所以现在是: 客户端->中间人 ②然后中间人把消息转给服务端,也就是: 中间人->服务端 ③服务端把带有公钥的信息发送给客户端,但是被中间截获。所以是: 服务端-[服务端的公钥] ->中间人 ④中间人把服务端的公钥替换成自己的公钥,发送给客户端,声称是服务端的公钥: 中间人-[中间人的公钥] ->客户端 ⑤客户端用得到的公钥加密,实际是用中间人的公钥进行加密,所以中间人可以用自己的私钥解密,获取原始数据,然后再用服务端的公钥对原始数据(或者修改原始数据内容)加密后发送给服务端。 这样中间人就可以获取到双方的通信数据,并可以制造虚假数据。 1.2 如何防范中间人攻击? 下面开始说如何防范: 1.2.1 SSL Pinning SSL Pinning的原理就是把服务端的公钥存到客户端中,客户端会校验服务端返回的证书是否和客户端保存的一致

Tomcat配置https加密连接

自作多情 提交于 2019-12-05 05:22:49
配置https安全连接(ssl加密连接) https连接需要用到数字证书与数字签名(MD5算法),网站https连接首先需要申请数字证书,配置加密连接器,浏览器安装证书。 证书运用到RSA技术,RSA加密算法是一种非对称加密算法,服务器保留私钥,对外公开公钥(cer证书)。 Tomcat秘钥库类型为JKS(Java Key Storage),很容易知道这是 JAVA 的专属格式,利用 JAVA 的一个叫 keytool 的工具可以进行格式转换。一般用于 Tomcat 服务器。 生成服务端秘钥库 使用java的工具keytool产生数字证书,tomcat.keystore可以写在需要生成的路径。tomcat.keystore存储服务端证书私钥。 keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "tomcat.keystore" //生成秘钥库,并生成别名为tomcat的私钥(条目类型PrivateKeyEntry) 参数说明: -genkeypair:生成一对非对称密钥; -alias:指定密钥对的别名,该别名是公开的; -keyalg:指定加密算法,本例中的采用通用的RAS加密算法; -keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件