【Cryptography】用户认证
用户认证
用户认证【Authentication】解决的是“如何证明某个人确确实实就是他或她所声称的那个人”的问题。
下面讲主要讲Kerberos,太复杂了……
基于对称加密的用户认证
双向认证
前提:通过KDC完成,KDC与A有密钥Ka,KDC与B有密钥Kb
A→KDC:IDA∥IDB∥N1
A向KDC发出会话密钥请求。请求的消息由两个数据项组成:一是A和B的身份IDA和IDB,二是本次业务的唯一标识符N1,每次请求所用的N1都应不同,常用一个时间戳、一个计数器或一个随机数作为这个标识符。
KDC→A:E(Ka[Ks∥IDA∥IDB∥N1∥E(Kb[Ks∥IDA])])。
KDC对A的请求发出应答。应答是由加密Ka加密的信息,因此只有A才能成功地对这一信息解密,并A相信信息的确是由KDC发出的。
KDC将使用Kb加密的ks数据发送给A【这里有个问题,为什么KDC不直接用Kb加密的Ks数据,直接发给B,而是由A发送给B?】
原因1:由于一个KDC会面对若干不同的A【很多个不同的客户端】, 而每个A都具有一个不同的密钥K。那么KDC就会为所有的A维护这样一个密钥K ...
【Cryptography】传输层安全
传输层安全
会与公钥分发相结合,主要以SSL与TLS为基础并与HTTPS结合
TLS 握手详细过程
下面,按上面的图,详细说下具体过程
步骤1、客户端发出请求(ClientHello)
首先,客户端(通常是浏览器)先向服务器发出加密通信的请求,这被叫做ClientHello请求。
在这一步,客户端主要向服务器提供以下信息。
(1) 支持的协议版本,比如TLS 1.1、TLS 1.2、TLS 1.3版。【TLS1.0已经不用了,主流是TLS1.2】
(2) 一个客户端生成的随机数,稍后用于生成"RSA的密钥"。【第一个随机数,叫ClientHello.random,明文】
(3) 支持的加密方法,比如RSA公钥加密。
(4) 支持的压缩方法。
步骤2、服务器回应(SeverHello)
服务器收到客户端请求后,向客户端发出回应,这叫做SeverHello。服务器的回应包含以下内容。
(1) 服务器确认使用的加密通信协议版本,比如TLS 1.2版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
(2) 一个服务器生成的随机数, ...
【Cryptography】密钥管理与分发
数字签名
在数据完整性使用的那篇文章提到过
只要认证不要保密性
流程
只要发送方对消息或文件产生Hash值,随着密文一起发送。接收方只要对消息计算Hash并与接收的Hash匹配即可
既要认证也要保密性
【使用对称加密与数字结合】
流程图
与上面不同的是,这里将HASH值也加密了
具体过程
发送方对消息或文件产生Hash值
发送方用自己的私钥对Hash值加密得到Signature【如果通信双方认识,发送方最好用接收方的公钥进行加密】
发送方再用对称加密中的密钥,将Hash值和消息一起加密再发送。
接收方对接收的消息使用对称加密密钥解密
再用发送方的公钥对Signature进行解密得到Hash值
再对消息计算Hash值并与接收的Hash值进行匹配即可
既要认证,也要保密性
【使用非对称加密与数字结合】
因为非对称加密往往进行密钥管理,传输消息时不用非对称加密,如果要用也不是不行
集中密钥分发
A→KDC:IDA∥IDB∥N1
A向KDC发出会话密钥请求。请求的消息由两个数据项组成:一是A和B的身份IDA和IDB,二是本次业务的唯 ...
我的大学
考试
今天仍然拼命看书,因为明天就要考了。学期的成绩就全仗这两天挣,现在更感到考试无用与无聊
开卷考嵌入式,10页的内容浓缩到1页
外出
难得的出门看日出
【Cryptography】数据完整性
Hash函数
概念:输入任意长度的数据块,产生固定长度的Hash值
目的:保证数据完整性,只要修改消息内容的任一位(bit),产生的Hash值会有天壤地别的变化
Hash函数不是某个特定函数,它指一类函数
最简单的Hash函数:mod(),比如任意数据 mod 2 得到固定长度的0或1
满足的条件
Hash函数要满足以下两个条件:
单向性:计算一个给定消息串的hash值是容易的, 但是根据hash值找到对应的消息是困难的
抗碰撞性:两个不同的消息,但具有相同的hash值是困难的
Hash值应用
如:消息验证、数字签名等
消息验证
保证收到的数据确实和发送时的一样,没有经过修改、播放、删除或重放等
步骤
发送者在发送消息时,需要计算出消息对应的Hash值,并一起发送过去
接收者收到消息后,先对消息进行Hash计算,并对收到的Hash进行比较,判断是否相同。如果不匹配则可能受到了篡改
注意:
上面存在的前提是:这个Hash本身没被篡改
就像中间人攻击,如果【中间人】Marrlory将消息篡改的同时,将篡改后的消息产生新Hash也修改并发送给【接收方】Bob,【 ...
【Cryptography】公钥、RSA、DH密钥交换
公钥密钥学
公钥算法基于数学函数,而不是“替换”与“置换”,不像传统对称加密使用同一密钥,公钥密码使用非对称密钥。
公钥密码需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密,反过来:私钥加密,需要公钥解密。
不同于加密和解密都使用同一个密钥的对称加密。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。
对公钥密码的要求
已经公钥无法确实私钥
只知道公钥与密文,无法恢复出明文
使用公钥加密可以用私钥解密;使用私钥加密可以用公钥解密
公钥密钥学的两个用处:加密与数字签名
加密
如果任何人使用公钥加密明文,得到的密文可以透过不安全的途径(如网络)发送,只有对应的私钥持有者才可以解密得到明文;
在数学上,d(c(x))=x,使用典型的爱丽丝与鲍伯假设来解释:
爱丽丝与鲍伯事先互不认识,也没有可靠安全的沟通渠道,但爱丽丝现在却要透过不安全的互联网向鲍伯发送信息
爱丽丝撰写好原文,原文在未加密的状态下称之为明文x
鲍伯使用密码学安全伪随机数生成器产生一对密钥, ...
【Cryptography】DES、AES对称加密
XOR加密
一、 XOR 运算
逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算"。
它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。
1234true XOR true // falsefalse XOR false // falsetrue XOR false // truetrue XOR false // true
JavaScript 语言的二进制运算,有一个专门的 XOR 运算符,写作^。
12341 ^ 1 // 00 ^ 0 // 01 ^ 0 // 10 ^ 1 // 1
上面代码中,如果两个二进制位相同,就返回0,表示false;否则返回1,表示true。
二、 XOR 的应用
XOR 运算有一个很奇妙的特点:如果对一个值连续做两次 XOR,会返回这个值本身。
12345// 第一次 XOR1010 ^ 1111 // 0101// 第二次 XOR0101 ^ 1111 // 1010
上面代码中,原始值是1010,再任意选择一个值(上例是111 ...
【Algorithm-branch-and-bound】分支界限
布线问题
广度搜索问题
问题描述
印刷电路板将布线区域划分成 n×m 个方格如图 a 所示。精确的电路布线问题要求确定连接方格 a 的中点到方格 b 的中点的最短布线方案。在布线时,电路只能沿直线或直角布线,如图 b 所示。为了避免线路相交,已布了线的方格做了封锁标记,其它线路不允穿过被封锁的方格。
一个布线的例子:图中包含障碍。起始点为 a,目标点为 b。
算法思想
解此问题的队列式分支限界法从起始位置 a 开始将它作为第一个扩展结点。与该扩展结点(a)相邻并且可达的方格成为可行结点被加入到活结点队列中,并且将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。
接着,算法从活结点队列中取出队首结点作为下一个扩展结点,并将与当前扩展结点相邻且未标记过的方格标记为 2(表示从起始位置到这个方格距离为2)并存入活结点队列。这个过程一直继续到算法搜索到目标方格 b 或活结点队列为空时为止。即加入剪枝的广度优先搜索。
本质上是广度优先搜索
输入地图后,需要设置上下、左右边界为-1表示墙
判断地图某个点能否走的标准:arr[x][y]==0?
如果到达终点可以提前结束,否则 ...
虚拟化架构
Xen原理,非常详细
https://www.jianshu.com/p/0dcde4428a3a
Xen和KVM优缺点对比,原创资料
https://juejin.cn/post/6844903957446279182
Xen缺点
https://zhuanlan.zhihu.com/p/33324585
Xen与KVM非常的详细(包含全、半硬件辅助虚拟化)
https://zhuanlan.zhihu.com/p/105499858
【电影】-Meet Joe Black
看电影时记录的语句
《第六感生死缘》
时长3小时
节奏很慢,很平静,配音好评
印象最深的一句话:“Multiply it by infinity and take it to the depth of forever,and you will still have barely a glimpse of what I’m talking about.”
这句话里面出现了再次
show me around
be my guide
do I blend in 我混入(伪装)的怎样
fill the bill 合适
not open for discussion 这不没得商量
lead the way 带路
May I say something 我能问些问题吗
how nice to meet you 很高兴见到你
Quince,it is 是的,的确
cat got your tongue 为啥不说话了
I was’n quite myself 不在状态
appear at his side out of the blue 突然出来(it is completely unexpect ...