Alan's blog Alan's blog
首页
思考感悟
技术学习
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Alan wu

前端小时
首页
思考感悟
技术学习
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机基础

  • 架构设计

  • HTTP网络

    • 关于前后端鉴权的几种方式
    • DNS与ARP的关系与原理解析
    • POST本质区别,面试官想听什么
    • TCP的可靠性传输是如何保证的
    • HTTP 2.0有什么新特性
    • 面试官:讲一下 https 和 http 的区别
    • 如何使用JWT做简单的登录验证操作
    • 密码学家的工具箱
      • 01 前言
      • 02 加密与解密
        • 01 暴力破解
        • 02频率分析
      • 03 密码技术
        • 01 对称加密
        • 02 非对称加密
        • 03 单向散列函数
        • 04 数字签名
      • 04 小结
    • 一文读懂TCP和UDP的区别
    • Web前端安全知多少
    • WebSocket 协议系统解析
  • Node

  • 小程序

  • 设计

  • JavaScript

  • HTML&CSS

  • 浏览器

  • webpack

  • 运维

  • Vue&React

  • 技术
  • HTTP网络
alanwu
2020-03-03
目录

密码学家的工具箱

# 密码学家的工具箱

密码学,网络时代不可缺少的一部分

# 01 前言

我们平时的手机、银行卡、各种社交账号都会给它设置一个密码,这样就减少别人盗用你账号的几率。而在现在的网络时代,更离不开密码的存在。假如没有密码的保护,别人捡到你的银行卡就可以取出所有的钱,捡到你的手机就可以直接拿来用,这些都是很可怕的事情。接下来我就总结一下,密码的领域,专家都有什么工具呢?

# 02 加密与解密

我们首先来看一个例子,小明同学给小红同学发送一封电子邮件,在没有加密的情况之下很容易就收到中间人的截取纂改,邮件内容有可能会被破坏。

如果没有意外,那么加入密文没有被破解,那么信息还是安全的。但是假如中间人通过某种方式得到了密文,并且成功破解了然后进行纂改:“小红,明天准时上课”。那这样的话信息就不是小明的原本意思了。

如果中间人截获了密文,有哪些方式可能会破解呢?

  • 暴力破解(穷举法)
  • 频率分析法
# 01 暴力破解

这种方法常用于比较简单的场景,比如你是知道这个密码空间(所有密码的可能性)是有限的,那么就可以通过这种方法进行破解。比如你的银行卡密码一般都是6位数,通过随机排列组合可以有720种方法,但是很可惜你输入3次不对就会冻结你的卡。

如果没有限制的话,是可以得到你的密码的。我们也可以通过人的惯性思维来猜测密码,大部分人都是以生日来当作密码,那么我们可以从所有符合生日的密码来破解,大大减少难度。

# 02频率分析

我们先来了解一下凯撒密码,该密码诞生于公元前100年左右的古罗马,而他的发明人就是军事统领凯撒。他的思想就是把26个字母表通过平移 n 位来进行加密,所以一旦我们知道平移了多少位就可以正确破译密文。这里的n 就是密钥,也可以使用暴力破解进行破译。

但是他也有一种频率分析的破译方法,找出密文中每一个字符的出现数量,然后猜测单词。

使用哪种破译方法,可以根据密文来决定。

# 03 密码技术

要想信息不被别人窃取,那么常用的加密技术有哪些呢?

  • 对称加密
  • 公钥密码(非对称加密)
  • 单向散列函数
  • 数字签名
# 01 对称加密

说到对称加密,其实就是加密和解密公用一个密钥。这种方法的前提是双发都知道密钥是什么才可以正确解密。一旦密钥被窃取,加密也就没有意义。

# 02 非对称加密

非对称加密就是加密和解密不是使用同一种密码,这种加密的话一般破解难度不是一般的大。首先我们要知道公钥和私钥是一对的。如果我们了解HTTPS的话,就知道为什么是安全的。我们继续以小明和小红的例子讲解一下:

  • 小明给小红发送 ming_key
  • 小红给小明发送 ming_key 来加密 随机值
  • 小明收到后用私钥解密出来,得到随机值
  • 后续使用 随机值来进行加密

# 03 单向散列函数

这种技术类似于http响应头的ETag,是标记了文件的一个值。一旦文件发生轻微的改变,这个值也是完全不一样的。利用这一种技术我们可以判断出来文件是否被他人纂改了。

# 04 数字签名

这种签名的技术其实在我们生活中经常看到,比如请假条需要老师的签名,银行办理业务也需要本人的签名。这种签名就是为了防止以后你不认这件事情。

那么网络中也是一样的道理,经过一种数字签名之后就是你的授权,可以通过这种技术防止你事后否认。签名技术是一种防止否认的密码技术。

小结:

  • 确保信息的机密性:对称加密/非对称加密
  • 确保信息不被纂改:单向散列函数
  • 确保事后不可否认:数字签名

# 04 小结

通过密码技术我们可以更加安全地保护我们的信息,然后使得网络的世界也多了很多安全。我们从不敢在网上购物到现在热衷于网购,其实就是密码加密技术保护我们的财产。

网络当中存在着很多未知的因素,我们在一些网站中也要使用比较复杂的密码,不要使用一些简单数字结合的密码,因为会很容易被别人破解,输入一个特殊字符可能会使破译难度增加几个等级。

欢迎关注我的博客

编辑 (opens new window)
上次更新: 2023/05/13, 23:08:05
如何使用JWT做简单的登录验证操作
一文读懂TCP和UDP的区别

← 如何使用JWT做简单的登录验证操作 一文读懂TCP和UDP的区别→

最近更新
01
HTTPS:让数据传输更安全
06-15
02
沙盒:页面和系统之间的隔离墙
06-15
03
CSRF攻击:陌生链接不要随便点
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2023 Alan Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式