网络安全扫盲篇

加密算法:

  • 对称加密的通信双方使用相同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。常见的对称加密算法:
  • DESData Encryption Standard:分组加密技术,以64位(含8位奇偶校验位)分组长度对数据加密。有两个特点:混淆和扩散。混淆是使密文的统计特性与密钥的取值之间的关系尽可能复杂化,扩散是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中,以便在大量的密文中消除明文的统计结构。
  • 3DES:执行3次DES来达到增加密钥长度和安全性的目的。
  • AESAdvanced Encryption Standard:一种区块加密标准,基于排列和置换运算,目前是对称加密中最流行的算法。
  • 非对称加密使用一对秘钥,公开的密钥叫公钥,只有自己知道的叫私钥。用公钥加密的数据只有对应的私钥可以解密。用私钥加密的数据只有对应的公钥可以解密。非对称加密算法有:
  • RSARivest Shamir Adleman三人提出的目前最有影响力的公钥加密算法,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA可以通过认证(如使用X.509数字证书)来防止中间人攻击。
  • ECCElliptic curve cryptography椭圆曲线密码加密技术。主要优势是在某些情况下它比其他的方法使用更小的密钥(如RSA加密算法)提供相当的或更高等级的安全。
  • Elgamal,基于迪菲-赫尔曼密钥交换的非对称加密算法。
  • 散列算法Hash Function把数据压缩成摘要,或者说是转换为指纹(散列值hash values)。散列算法有:
  • MD5Message Digest Algorithm 信息摘要算法,本质上说是一种签名算法。
      # 输入任意长度的信息,输出128位的数字指纹。
      # 不同输入产生不同的结果,哪怕只修改1个字节,得到的指纹都有很大区别
      # 结果不可逆,不能反推出输入信息
  • SHASecure Hash Algorithm 安全散列算法,分为SHA-1和SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)。SHA-1强于MD5,但均可被破解,目前大公司全面放弃SHA-1,改用SHA-2。

攻防:

  • 彩虹表用于加密散列函数逆运算的预先计算好的表,常用于破解加密过的密码散列,这是以空间换时间的典型实践。为了防止这种破解,扩大用户输入的组合是有效的方法:
  • HASH的n次迭代,比如n = 1000
  • 加盐,在密码任意固定位置插入特定的字符串,如HASH(pwd + salt)。又比如在微信通信里,要传递三个参数ABC,则需要将ABC与appsecret一起sha1一遍,得到一个签名串,然后将这个签名串与appkey一起传递给微信,此时,微信会通过appkey去查找对应的appsecret,然后再将ABC参数与查询出来的appsecret做一遍相同的签名算法,如果得到的签名串一致,则认为是授权成功。此处appsecret就是盐。
  • 中间人攻击,通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。
中间人攻击.jpg
  • 非对称加密的安全隐患 网络通信开始时,A和B要通过网络交换公钥。但C拦截了A和B的公钥,又分别用自己的公钥发给A和B。这就是中间人攻击。现实中,通过CA(Certificate Authority)来保证公钥的真实性。B会先把自己的公钥(和一些其他信息)交给CA。CA用自己的私钥加密这些数据,加密完的数据称为B的数字证书。现在B要向A传递公钥,B传递的是CA加密之后的数字证书。A收到以后,会通过CA发布的CA证书(包含了CA的公钥),来解密B的数字证书,从而获得B的公钥。CA把自己的证书集成在了浏览器和操作系统里面,避免劫持。盗版系统、非官方浏览器存在CA证书被篡改的可能。

数字证书

数字证书有很多格式版本,SSL证书格式遵循X.509标准,X.509是由国际电信联盟(ITU-T)制定的数字证书标准,主要有X.509v3(1997)、X509v4(1997)、X.509v1(1988)等。

CA证书颁发机构Certificate Authority的缩写。数字证书采用信任链验证。数字证书的信任锚(信任的起点)就是根证书颁发机构。根证书(root certificate)是一个无签名或自签名的识别根证书颁发机构的公钥证书。许多应用程序(如浏览器)会代表用户信任值得信任的根证书。

证书之间的信任关系.png


  • 证书的编码
    证书有两种编码格式,DER二进制编码方式和PEMASCII的Base64编码方式。
  • 文件扩展名
    .CRT.CER互为等价,代表是证书文件,.CRT通常用于Unix操作系统,.CER通常用于微软操作系统;
    .KEY 代表公钥或私钥文件;
  • 证书的查看
    无论是PEM还是DER的编码方式都不能直接查看,可以通过命令查看:
    查看PEM编码的证书:

openssl x509 -in cerfile.cer -text -noout

查看DER编码的证书:

openssl x509 -in cerfile.cer -inform der -text -noout

  • 证书编码的转换
    PEM转DER:

openssl x509 -in cerfile_pem.cer -inform pem -outform der -out cerfile_der.cer
DER转PEM:
openssl x509 -in cerfile_der.cer -inform der -outform pem -out cerfile_pem.cer

  • 公钥提取
    X.509证书,核心是根据RFC 5280编码或数字签名的数字文档。

openssl x509 -in cerfile.cer -pubkey -noout > pub.key


SSL/TLS协议

SSL/TLS协议
  • SSL(Secure Socket Layer)
    位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议(SSL Record Protocol)和SSL握手协议(SSL Handshake Protocol)。SSL是Netscape开发的,目前有三个版本,SSL1.0、SSL2.0、SSL3.0,因其存在严重的安全问题,大多数公司目前均已不在使用了。
  • TLS(Transport Layer Security)
    用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。TLS是IETF将SSL标准化后的产物。其实TLS可以理解为SSL的升级版,TLS目前也有三个版本,TLS1.0、TLS1.1、TLS1.2,目前常用的为TLS1.2。
  • TLS握手
    在TLS中有两种主要的握手类型:一种基于RSA,一种基于Diffie-Hellman。 这两种握手类型的主要区别在于主秘钥交换和认证上。用RSA握手还是DH握手取决于加密套件,可以用openssl ciphers -v查看。

  • RSA的TLS握手
    整个流程如下如所示:
    RSA的TLS握手过程
  1. 客户端向服务器发送Client Hello,将客户端的功能和首选项告诉服务器。


    Client Hello抓包信息

    Random:包含32字节的数据,其中28字节是随机生成的(Random Bytes)。剩下的4字节包含额外的信息(GMT Unix Time),在握手的时候这随机数都是独一无二的,可以防止重复攻击。
    Session ID:在第一连接时,会话ID字段是空的,这表示新会话,没有其他会话需要恢复。在后续的连接中,这个字段可以保存会话的唯一标识。服务器可以借助会话ID在自己的缓存中找到对应的会话状态。
    Cipher Suites:密码套件是由客户端支持的所有密码套件组成的列表,该列表是按优先级顺序排列的。由密钥交换方法、身份验证方法、密码定义以及可选的MAC或PRF算法组合而成。


    cipher suite
  2. 服务器收到响应,选择双方都支持的协议,套件,向客户端发送Server Hello。同时服务器也将自己的证书发送到客户端(Certificate)。
    Certificate:典型的Certificate消息用于携带X.509证书链。证书链是以ASN.1 DER编码的一系列证书,一个接一个组合而成。叶子证书必须是第一个发送,中间证书按照正确的顺序跟在叶子证书之后,根证书省略。


    Server Hello抓包信息
  3. 客户端自己生产预主密钥,通过公钥加密预主秘钥,将加密后的预主秘钥发送给服务器 (Client Exchange)。
    Change Cipher Spec:发送端已取得用以生成连接参数的足够信息,已生成加密密钥(主密钥),并且将切换到加密模式。客户端和服务器在条件成熟是会发送这个消息。


    Client Key Exchange抓包信息
  4. 服务器用自己的私钥解密加密的预主密钥。
  5. 之后,客户端与服务器用相同的算法根据客户端随机数,服务器随机数,预主秘钥生产主密钥,之后的通信将都用主密钥加密解密。
    主密钥的是由预主密钥进一步计算而成,这个过程通过一个伪随机函数(pseudorandom function, PRF)来完成,master_secret = PRF(pre_master_secret,"master secret",ClientHello.random+ServerHello.random)

  • DH的TLS握手
    整个流程如下如所示:
    DH的TLS握手过程
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容

  • 原文地址 http://blog.csdn.net/u012409247/article/details/4985...
    0fbf551ff6fb阅读 3,510评论 0 13
  • HTTPS介绍 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩...
    齐滇大圣阅读 8,898评论 8 96
  • 信息安全三要素 1. 保密性:信息在传输时不被泄露 2. 完整性:信息在传输时不被篡改 3. 身份认证:用于确定你...
    Jason1226阅读 1,224评论 0 0
  • 1 基础 1.1 对称算法 描述:对称加密是指加密过程和解密过程使用相同的密码。主要分:分组加密、序列加密。 原理...
    御浅永夜阅读 2,357评论 1 4
  • 今天外公外婆不在家,从昨天他们就开始焦虑,担心女儿的吃饭和上学接送的问题。甚至想为了不影响孩子,决定外公留家里...
    碎碎念碎碎阅读 517评论 5 2