Alice和Bob的故事 - 非对称加密(转自:简书賈小強)

  参考资料:

  https://www.jianshu.com/p/4389ec7ed1c2?from=singlemessage

  https://www.chainnews.com/articles/256374834707.htm

  在密码学课上经常能听到两个耳熟能详的名字:Alice和Bob。这个两个名字常见到几乎所有和密码学有关的文献都有他们二人的身影。好奇地百度了以下,发现了一个有心的作者写的文章--Alice和Bob的故事,记录在此,仅供学习。

  

非对称加密是一种公开密钥密码系统,要求密钥成对使用,即加密和解密分别由两个密钥来实现,每个用户都有一对密钥。典型的公开秘钥算法如RSA算法

应用

  1. 通过Linux 或者Mac 的Terminal使用ssh命令,登录远程主机(将公钥追加到authorized_keys,可以免密码登录)
  2. github网站,可以以ssh协议方式,上传下载(将自己的公钥交给github,然后自己保留对应的私钥,这样git push或者git pull不再需要输入密码)

角色

按照密码学惯例

 
 
人名角色
Alice所有协议的第一个参加者
Bob所有协议的第二个参加者
Mallory恶意的主动攻击者
Peggy证明人

简单说,如果Alice,使用非对称加密和Bob建立连接(登录),我们就可以认为,这种连接是安全的,即使加密后的密码被中途截获也无法破解出真正的密码。

有密码连接

  1. Bob收到Alice的请求,把自己的公钥发给Alice。
  2. Alice将密码用Bob的公钥加密后,发送给Bob。
  3. Bob用自己的私钥解密收到的加密内容,如果密码正确,那么连接成功。

中间人攻击

  1. 如果Mallory冒充Bob,截获了登录请求,并给Alice发一个自己伪造的公钥
  2. Alice把密码用Mallory的公钥加密后发送给Mallory
  3. Mallory用自己的私密解密,从而获取密码
  4. Mallory再用这个密码冒充Alice和Bob建立连接

解决方案

让Alice明确的知道要连接的人就是Bob,那么Bob可以让Peggy证明(在网站上将自己的公钥指纹贴出来),这样Alice在连接的时候,比对公钥指纹就能知道对方是不是真的Bob

无密码连接

  1. Alice将自己的公钥发给Bob保存
  2. Bob收到Alice的请求,然后向Alice发送一段随机字符串
  3. Alice用自己的私钥加密后,再发给Bob。
  4. Bob用事先储存Alice的公钥解密,如果字符串相同,就证明就是Alice,建立连接成功

文件

实际比如Linux Terminal使用ssh存在三种类型的文件,每台机器都可以具有它们。

  1. id_rsa.pub 和 id_rsa:保存每个角色各种的公钥,私钥
  2. known_hosts:保存一些可信赖的远程主机的公钥,如果连接的主机不在其中,那么会输出提示对方的公钥指纹,这个时候就需要权衡,如到网站看指纹是否正确,从而避免中间人攻击
  3. authorized_keys:保存被设置为免密码登录机器的公钥

总结

可以发现公钥即可以用于加密,也可以用于解密,私钥同样如此。连接双方都各自保存了对方的公钥,不过作用不一样

 

下面是密码学中常见的“角色”:

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要计算词汇表中词语的相似性,可以使用余弦相似度来衡量它们之间的相似程度。余弦相似度是通过计算两个向量之间的夹角来度量它们的相似性,夹角越小表示两个向量越相似。 首先,将每个词语的词向量标准化为单位向量,这可以通过将每个向量除以其范数来实现。然后,计算两个词向量之间的点积,即将两个向量的对应元素相乘并求和。最后,将点积除以两个向量的范数的乘积,即可得到它们的余弦相似度。 以计算"狗"和"猫"之间的相似度为例,首先将它们的词向量标准化为单位向量: 狗的标准化向量:\[0.8, 0.2, -0.5\] / sqrt(0.8^2 + 0.2^2 + (-0.5)^2) 猫的标准化向量:\[0.7, 0.3, -0.2\] / sqrt(0.7^2 + 0.3^2 + (-0.2)^2) 然后计算它们的点积: 点积 = 0.8 * 0.7 + 0.2 * 0.3 + (-0.5) * (-0.2) 最后,将点积除以两个向量的范数的乘积: 相似度 = 点积 / (sqrt(0.8^2 + 0.2^2 + (-0.5)^2) * sqrt(0.7^2 + 0.3^2 + (-0.2)^2)) 这样就可以得到"狗"和"猫"之间的相似度。同样的方法可以用于计算其他词语之间的相似度。 #### 引用[.reference_title] - *1* *3* [LLaMA的解读与其微调:Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子牙/LLaMA 2](https://blog.csdn.net/v_JULY_v/article/details/129709105)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [4.Spark特征提取、转换和选择 - 简书](https://blog.csdn.net/weixin_39956182/article/details/111495485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值