让数据传输更安全

在阅读RabbitMQ数据传输安全的章节时,提到了ssl协议,用了很大篇幅介绍使用openssl生成一些列秘钥和证书,如果没有相关基础,会不太好理解,本篇就来总结下数据安全相关的概念以及浏览器HTTPS的应用。

通过介绍,你会了解到:

  • 数据安全的基本概念
  • 加密算法
  • 数字证书和证书机构
  • ssl和openssl基本介绍
  • https应用

数据安全的基本概念

数据要在网络中传输,就会存在安全问题,因为任何人都可以获得你发送的数据包,从而获得你的数据,需要对数据进行加密,对于数据发送者,也可能被伪造,需要对双方身份做验证,另外,数据的完整性也需要考虑。

数据安全的问题

总结下安全的定义:

  • 保密性:只有自己和允许的人能看到或看懂数据;
  • 完整性:数据没有被破坏或篡改;
  • 可信任性:确保消息是对方发的,不是伪造者发的;

加密算法

加密是保证数据安全的常用手段,已经有很多现成的加密算法了,这些算法都是经过验证和考验的,想要破解非常困难,所以,一般不需要设计算法,可以直接使用,这里只会介绍常见算法的基本概念和特性,不涉及算法实现细节。

散列

散列就是hash算法,把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值,常见的hash算法有MD5和SHA。

MD5即Message-Digest Algorithm 5,称为信息-摘要算法5,主要用于确保信息传输的完整性,输入是不定长度信息,输出固定长度128比特的串。

SHA即Secure Hash Algorithm,称为安全哈希算法,和MD5一样,也是从MD4发展而来,与MD5的最大区别在于其摘要比MD5长32比特。

还有很重要的一点是,任意两个文档得到相同字符串的概率几乎等于0。

对称加密

加密就是把原始数据通过某种变换变成看不懂的东西,对于对称加密,这个操作是可逆的,另外,加密算法不能单独工作,必须有密钥配合,加密和解密的密钥是同一个,目前流行的对称加密算法有DES,AES。

DES即Data Encryption Standard,称为数据加密标准,是美国政府采纳IBM公司设计的方案作为非机密数据的正式数据加密标准,DES算法的入口参数有三个:Key、Data、Mode:

  • Key为8个字节,是DES算法的工作密钥;
  • Data也为8个字节,是要被加密或被解密的数据;
  • Mode为DES的工作方式:加密或解密;

如Mode为加密,用Key把Data进行加密,生成Data的密码形式(64位)作为DES的输出结果,如Mode为解密,用Key把密码形式的Data解密,还原为Data的明码形式(64位)作为DES的输出结果。

AES即Advanced Encryption Standard,称为高级加密标准,是下一代的加密算法标准,速度快,安全级别高,它可以使用128、192和256位密钥。

对称加密算法的优点是速度快,缺点是密钥管理不方便,要求共享密钥。

非对称加密

相对于对称加密,非对称加密和解密不是同一个密钥,一个称为公钥,另一个称为私钥。公钥就是公开的,大家都知道,而私钥只有你自己知道。

用公钥加密的内容只能由相应的私钥来解密,反过来,用私钥加密的内容只能由相应的公钥来解密,常用的非对称加密算法有RSA、ECC。

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作,应用比较广泛。

非对称加密算法的优点是密钥管理很方便,缺点是速度慢。

数字签名

数字签名主要保证可信任性,不可伪造,所用的技术是前面介绍的散列和非对称加密。

首先为要签名的数据生成一个Hash字串hash1,然后用你的私钥加密得到encrypted(hash1),这就是数据的数字签名。当别人需要验证数据是否是你发送的时候,只需要用你的公钥解密你的签名得到hash1,并和数据计算出来的hash2对比,查看是否一致。

对于非对称加密和数字签名,如果之前没接触过,可能不太好理解,可以阅读相关文章进一步了解,在后面介绍https应用时,会说明其应用过程。

数字证书和证书机构

为了方便传递公钥秘钥,一般把它存储在数字证书中,为了保证证书的可信性,一般由专业证书机构颁发。

考虑这样一个场景,用户A想访问小米网mi.com,但由于手误,写成了ni.com,假设ni.com是不法分子仿照小米网创建的网站,包含一个伪造的数字证书,如果浏览器可以验证数字证书的真实性,就会提示用户证书异常,防止用户的损失。

CA就是证书的签发机构,负责签发证书、认证证书、管理已颁发证书的机关,制定了具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。

要申请证书,应先向CA提出申请,在CA确认申请者的身份后,会分配一个公钥,然后将该公钥与申请者的身份信息绑在一起,使用CA的私钥进行签名,便形成证书发给申请者。

申请证书

如果想鉴别证书的真伪,用CA的公钥对证书上的签字进行验证,一旦验证通过,并且在有效期之内,该证书就被认为是有效的。

所以,配置ssl时,需要CA根证书的公钥,用于验证证书的真伪。

ssl和openssl基本介绍

ssl是保证数据安全传输的一个协议,openssl是一个工具,包含各种协议和算法的实现。

ssl

保证数据传输安全,比较简单的方法是用非对称加密,如果双方都认证了对方的数字证书么每次传输数据的时候都用对方的公钥加密,那么只有对方能解密,从而保证了信息的安全。但是对于日常应用(比如网页浏览)有两个问题:

  • 非对称加密速度很慢,而且消耗资源;
  • 不可能要求每个用户都去申请数字证书,因为过程比较麻烦;

SSL(Secure Sockets Layer)通过握手协议和传输协议来解决上面的问题,它是一种间于传输层(比如TCP/IP)和应用层(比如HTTP)的协议,对数据进行加密和签名处理。

它由网景公司设计的,到了1999年,SSL因为应用广泛,已经成为互联网上的事实标准,IETF就在那年把SSL标准化,标准化之后的名称改为TLS(Transport Layer Security),中文叫做“传输层安全协议”,所以两者可以视作同一个东西的不同阶段。

SSL的基本思想是用非对称加密来建立链接(握手阶段),用对称加密来传输数据(传输阶段)。这样既保证了密钥分发的安全,也保证了通信的效率。

具体过程,介绍https应用时,会详细介绍。

openssl

openssl是一套开源工具集,主要包含3个组件:

  • openssl:多用途的命令行工具
  • libcrypto:加密算法库,实现了常用的加密算法;
  • libssl:加密模块应用库,实现了ssl及tls协议;

下面举几个实例来说明它的使用。

1.使用MD5加密


使用MD5加密

2.生成随机数


生成随机数

3.对称加密


对称加密

4.生成秘钥对


生成秘钥对

https应用

HTTPS 协议,说白了就是HTTP协议和SSL/TLS协议的组合,可以把HTTPS大致理解为:HTTP over SSL。

Https在建立Socket连接之前,需要进行握手,单向认证和双向认证不同。

具体过程网上很多,我就摘录一个 博友 的一个图,说明下双向认证的过程:

双向认证过程

下一篇就来说说RabbitMQ的性能和安全考虑。

<font color='green'>欢迎扫描下方二维码,关注我的个人微信公众号,查看更多文章</font> ~

情情说
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 本文转载,出处如下:数字证书原理 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了...
    随安居士阅读 1,672评论 1 8
  • 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现...
    纳兰三少阅读 1,899评论 1 6
  • 原文地址 http://blog.csdn.net/u012409247/article/details/4985...
    0fbf551ff6fb阅读 3,510评论 0 13
  • 前言 文中首先解释加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的...
    sunny冲哥阅读 2,972评论 0 2
  • 落上鸟屎的树枝我却偏爱 在我的生活里有劳累,挫折,失败,孤独 黑暗,悲伤,彷徨 却没有糟糕两字 面对冬天的一无所有...
    楼台花舍阅读 296评论 0 5