Web安全概述
互联网刚开始是安全的,但是伴随着黑客(Hacker)的诞生,互联网变得越来越不安全。任何一个事情都有两面性,黑客也有好有坏,好的黑客叫白帽子,坏的黑客叫黑帽子。与此同时,随着Web技术发展越来越成熟,而非Web服务(如Windows操作系统)越来越少的暴露在互联网上,现在互联网安全主要指的是Web安全。
既然要讲Web安全,首先介绍什么是安全,安全的本质是什么?引用《白帽子讲安全》里对安全的定义:安全问题的本质就是信任问题。举例来说,自行车的车锁,我们认为是安全的,因为我们认为自行车锁的制造商是不会背着我们留有钥匙,如果这个信任都没有的话,那么这个自行车就是不安全的。
在介绍完什么是安全的本质后,我们继续讲解安全的三要素,机密性、完整性和可用性。机密性指的是要求保护数据内容不能泄露,加密是实现机密性要求的常见方法。完整性指的是保护数据内容是完整的、没有被篡改的,实现完整性的常见方法是数字签名。可用性要求保护资源是随需而得,黑帽子通常通过DDos攻击抢占服务器的资源,导致正常用户不能正常访问。接下来介绍常见的加密算法和数字签名算法。
加密算法
常见加密算法有对称加密和非对称加密,对称加密指的是加密和解密用的同一个密钥,而非对称加密的加密过程和解密过程用的是不同密钥,常见对称加密有DES(Data Encryption Standard,数据加密标准)和AES,而非对称加密有RSA。
- 对称加密算法
对称加密算法我们主要介绍AES(Advanced Encryption Standard,高级加密标准),AES三个基本概念:密钥、填充、模式。根据密钥长度,AES又可以细分为AES128、AES192、AES256。下面介绍AES的加密流程,首先将明文分解为大小为128bit小块,然后将这些明文小块放入AES加密器各自生成密文块。当将明文小块大小小于128bit时,需要对这个明文小块进行填充操作。而AES加密器提供了CBC、ECB、CTR等5种模式。
- 非对称加密算法
非对称加密算法我们主要介绍RSA算法,RSA算法基于大数分解难而使得该算法异常安全。下面我们开始描述RSA算法,首先选择两个充分大的质数p和q,并计算 n=pq。接下来计算m=(p-1)(q-1),最后找出两个数e和d,使得 (e*d) mod m =1。其中e和n就是公钥,而d和n就是私钥。任何知道公钥的人都可以利用公式 c = a^e mod n把原始数据加密成一个密文,私钥的持有者可以通过公式 c^d mod n 计算原始数据a。通过计算公式我们也可以发现加密和解密的算法是不一样的,这也是”非对称“的由来。
- 融合对称加密算法和非对称加密算法
通过对对称加密算法和非对称加密算法的介绍,我们知道如果A、B两个人想要建立会话,为了保证会话的机密性,我们需要对数据进行加密,这个密码本只有A、B两个人知道,而如何保证这个密码本在传输的过程中不被第三者窃取呢?我们可以通过非对称加密对密码本进行加密,即A首先呼叫B,并索要B的公钥,然后用B的公钥对密码本进行加密并将密文发送给B,B收到A的消息之后,用自己的私钥进行解密。这个过程看起来已经很完美了,但是有一个让人意想不到的漏洞--中间人攻击。中间人在网络中发现A索要B的公钥这条消息,当B将自己的公钥发送给A时,中间人截取B的公钥,并将自己的公钥发送给A。接下来,A将自己的密码本通过中间人的公钥继续加密发送给B,中间人截取A发出来的这条消息,用自己的私钥进行解密,然后用B的公钥进行加密,重新发送给B。B收到消息后并不会发现什么异常,因为B能用自己的私钥进行解密。但是它们都不知道中间人已经完全掌握了它们的密码本。
中间人攻击是在获取对方公钥的时进行替换,那么,解决这个问题的办法就是建立一个获取对方公钥的可信渠道。一个简单而有效地办法就是建立一个所有人都信任的权威机构,有改权威机构来存储并分发大家的公钥。这就是我们通常所说的数字认证机构,英文是Certificate Authority,简称CA。任何人都可以申请把自己的公钥放到CA上去,不过CA必须亲自检验申请者是不是符合资格。如果A想要和B建立会话,那么A直接从CA出获取B的公钥,这样A就不用担心拿到的公钥是不是假的。
签名算法
中间人既然能假扮公钥,会不会假扮CA呢?答案是肯定的。这样一来,CA不但需要向A保证“这个公钥确实是B的”,还要向A证明”我确实是CA“。对应的解决方法是数字签名算法。CA首先生存一个自己的公钥私钥对,然后将公钥公之于众。之后,CA对每条发出去的消息都用自己的私钥加个密作为签名,以此证明消息的来源是真实的。接受方收到消息之后,用CA的公钥进行解密,如果能解得开,则说明对方一定是真实的CA。因为,这样的消息只有私钥持有者才能做的出来。至此为止,加密算法和签名算法就讲解完毕,一条安全的通信线路的设计也有了一个比较完美的方案。
Web安全概述的更多相关文章
- ListView Web 服务器控件概述(MSDN)
1: "折叠"图像"展开"图像"复制"图像"复制悬停"图像 全部折叠全部展开 代码:全部 代码:多个 代码:Visual ...
- Tengine Web服务器概述
Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...
- web开发概述
1 Web概述 Web,在英语中表示网页的额意思,它用于表示Internet主机上供外界访问的资源. 2 Web的分类 按照服务器上的资源分类: 静态资源:指的是web页面中供人们浏览的数据是始终不变 ...
- Web框架概述——React.js
目前,在前端Web开发中,三大热门框架为React.js,Vue.js,Angular.js .当然,三大框架各有各的优缺点,这里就不多说了,下面我就针对前段时间所学的React框架做一下整体知识点的 ...
- JavaWeb——第1章Web技术概述
Web本意是蜘蛛网的意思,现常指Internet的Web技术.Web技术提供了方便的信息发布和交流方式,是一种典型的分布式应用结构,Web应用中的每一次信息交换都要涉及客户端和服务器. 一.Inter ...
- 服务设计模式一:Web服务概述
目录 1. Web服务是什么 2.为什么要使用Web服务 3.Web服务考虑的因素和替代方案 4.SOA是什么 Web服务是什么? 所谓服务,通俗的理解就是别人帮你做一些事情,比如说,腰酸背痛了,找个 ...
- [Java Web整合开发王者归来·刘京华] 2、 Java Web开发概述
1.Web相关概念 1-1.胖客户与瘦客户 >_<" RCP的定义及优缺点: >_<"TCP的定义及优缺点: 1-2.B ...
- HTML5 Web Storage概述
Web Storage html5新增功能 可以在客户端本地保存数据 之前是使用Cookies在客户端保存注入用户名等简单用户信息,但永久数据存在几个问题 大小:cookies大小被限制在4KB 带宽 ...
- MojoliciousLite: 实时的web框架 概述
MojoliciousLite: 实时的web框架: SYNOPSIS 简介: # Automatically enables "strict", "warnings&q ...
随机推荐
- Java中的字符串拼接
Java中的字符串拼接 1.设计源码 /** * @Title:IndexOf.java * @Package:com.you.freemarker.model * @Description: * @ ...
- java.io.FileNotFoundException: /opt/apache-tomcat-7.0.57/conf/server.xml (权限不够)
1 错误描述 youhaidong@youhaidong:~$ cd /opt/apache-tomcat-7.0.57 youhaidong@youhaidong:/opt/apache-tomca ...
- Educational Codeforces Round 36 (Rated for Div. 2) E. Physical Education Lessons
提供两种思路 一种线段树区间更新 另一种用map维护连续的区间,也是题解的思路 第二种很难写(我太渣,看了别人的代码,发现自己写的太烦了) #include<iostream> #incl ...
- 简单bfs(hdu2612)
#include<stdio.h>#include<string.h>#include<queue>#define INF 0x3f3f3f3fusing name ...
- iOS - MySQL 的安装配置
前言 提前下载好相关软件,且安装目录最好安装在全英文路径下.如果路径有中文名,那么可能会出现一些莫名其妙的问题. 提前准备好的软件: mysql-5.7.17-macos10.12-x86_64.dm ...
- MySQL的sum()函数
如下图,这是一个关于用户参加活动,每个活动会给这位用户评分的一个表: 用户1参加了A活动,评分100: 用户2参加了B活动,评分98,又参加了D活动,评分10: 用户3参加了C活动,评分99 需求:把 ...
- 关于KPM算法
[转]从头到尾彻底理解KMP http://blog.csdn.net/v_july_v/article/details/7041827 int* GetNextval(char* p){ int p ...
- 关于Web Audio API的入门
Web Audio API提供了一个简单强大的机制来实现控制web应用程序的音频内容.它允许你开发复杂的混音,音效,平移以及更多. 可以先看一下MDN的这篇文章<Web Audio API的运用 ...
- dva.js 用法总结
dva.js是阿里前端团队开发的一个基于react.redux.webpack的一个前端框架,他能够实现react-redux-webpack环境一键部署,能帮前端工程师节省不少环境搭建的时间.而且经 ...
- UWP 图片模糊
先看一下效果: 这是微识别的个人中心页面,顶部有头像,以及背景图片模糊. 要实现这样的效果,有两种方法. 第一种麻烦点,也是我现在用的.想看简单的,翻到最后 1. 首先看一下xaml代码: <S ...