密码系统

假设Alice想给她的银行发一个消息以划转资金,并希望这个消息是保密的,因为其中含有她的帐号和划转金额等信息。一种方案是使用密码系统,将要传输的信息转变为加密形式,从而只能为希望他读懂的人读懂。一旦加密为这种形式,这条消息也许只能用一个密钥来破译,如果没有,那么这条信息毫无用处,因为好的密码系统可以使破译难度高到入侵者认为原文不值得他们花费那么大的努力。

常规密码:又称为对称密码,需要发送者和接收者共同持有一个密钥:一小段用来加密和解密的秘密信息。如果这个密钥是保密的,那么这条消息除了发送者和接受者以外可能没有人可以阅读。如果Alice和银行共同持有一个密钥,则可以互相发送保密信息。但是,私有通讯密钥的选择行为本身,却可能不是无懈可击的。

公共密钥密码:又称为不对称密码,定义了一种使用两个密钥的算法以解决密钥交换问题,一个密钥用于加密,另一个用于解密,从而使简单公布一个密钥(公共的密钥,简称:公钥)而保留其他的(私有的密钥,简称:私钥)以接收保密消息成为可能。

任何人都可以用公钥加密一条消息,而仅允许私钥的持有者阅读。如此,Alice就可能使用公钥加密其保密消息,发送给私钥的持有者(银行),只有银行能够对它解密。

消息摘要

虽然Alice可能加密其消息使它称为私有的,但仍应注意到某些人可能会篡改或替换其原始消息,以划转资金到他们自己的帐户。一种保证Alice消息完整性的方法是同时发一个其消息的简单摘要给银行,供银行与消息本身比对,如果相符则消息正确。

这样的方法被称为消息摘要、单向函数或散列函数。消息摘要用于对较大而且变长的消息建立较短而且等长的一种表述,其设计使将摘要还原成消息极其困难,而且对两个不同的消息几乎不可能生成相同的摘要,从而排除了替换一个消息为另一个而维持相同摘要的可能性。

Alice面临的另一个挑战是要保证摘要发送到银行的安全,如此,才能确保消息的完整性。

一种解决方法是在摘要中包含数字签名。

数字签名

当Alice发送消息到银行,银行需要确认此消息的确是她发送的,而不是入侵者盗用其帐号。为此,可以在消息中包含一个由Alice建立的数字签名。

数字签名是以加密的消息摘要和其他信息(比如一个流水号)以及发送者的私有密钥建立的。虽然任何人都可能用公共密钥解密签名,但是只有签发者知道其私有密钥,也就是,只有密钥的持有者才能签发。包含在签名中的摘要只对该消息有效,以确保没有人可以改变摘要而保持签名不变。

为了避免签名日后被入侵者破译和再利用,签名包含有一个流水号。如此,万一(只是假设)Alice并没有发送此消息,虽然她可能真的签发过,银行可以免遭其欺诈性指控。

转载于:https://www.cnblogs.com/cioliuguilan/p/5339859.html

必须要懂得的密码技术相关推荐

  1. 读《图解密码技术》(三):密钥、随机数和应用技术

    最后一篇了,如果还没看过前两篇的,最好先翻回去看看,因为这最后一篇的内容是建立在前两篇的基础之上的.本篇的内容包括密钥.随机数.PGP.SSL/TLS,最后再讲讲密码技术的现状和局限性,以及简单介绍一 ...

  2. 密码技术应用--SM2文件签名验签

    记录一下对一些稍大文件进行SM2签名验签的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客 /* 函数名: sm2Signsm2 签名算法实现对文件的签名 ...

  3. 密码技术应用--RSA文件签名验签

    记录一下对一些稍大文件进行RSA签名验签的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客 /* 函数名: rsaSignrsa 签名算法实现对文件的签名 ...

  4. 密码技术应用--SM4文件加解密

    记录一下对一些稍大文件进行SM4加解密的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客 var key = []byte("1234567812 ...

  5. 密码技术应用--AES文件加解密

    记录一下对一些稍大文件进行AES加解密的实现,这里只列出了核心代码,其他不涉及的代码或者有任何疑问可以查看我之前写的密码技术专题博客 var key = []byte("1234567812 ...

  6. 密码(图解密码技术)_第一章_环游密码世界总结

    解释一下啊:我发现我没有段落空两字的时候已经不想改了,原谅我懒,这系列后面也是这样的(任性). 本书中的主要角色: Alice_一般角色 Bob_一般角色 Eve_窃听者 Mallory_主动攻击者 ...

  7. [转]密码技术-实现数字信封和数字签名

    密码技术-实现数字信封和数字签名 转载自:http://hi.baidu.com/king0332/item/ea9b19da597aec17e1f46f5b 数字信封是公钥密码体制在实际中的一个应用 ...

  8. 数字签名 那些密码技术_密码学中的数字签名

    数字签名 那些密码技术 A signature is usually used to bind signatory to the message. The digital signature is t ...

  9. 商用密码技术与应用创新的方向是什么?安全牛发布《商密报告》全面揭晓

    编辑 | 宋慧 出品 | CSDN云计算 头图 | 付费下载于东方IC 2021年4月22日,由安全牛举办的2021商用密码技术创新研讨会暨<2021商用密码创新应用指南>(以下简称< ...

最新文章

  1. android spinner 简书,【Android】Spinner:下拉列表笔记
  2. java实现选择排序
  3. java c c 的应用_javac 简单应用
  4. 用JPA在测试的时候无法创建EntityManager Factory无法创建的几个可能因素!
  5. ibm服务器hyper-v搭建的虚拟机操作系统数据如何导出到本机,将虚拟机从Hyper-V转移到KVM|导出完整vhdx磁盘转换qcow2...
  6. windows Tracert命令
  7. postgresql 用户安全配置
  8. 介绍Unity中相机的投影矩阵与剪切图像、投影概念
  9. VMware 12 许可密钥
  10. 智能城市dqn算法交通信号灯调度_智能交通信号灯防堵塞控制系统的制作方法
  11. 分享一个linux下的steam的rpm安装包的链接
  12. Unity 常用的几种存档读档方式
  13. PyQt5 组合键
  14. Python图形界面开发(一)——pyside入门
  15. 纯电阻电路的分析方法——网孔电流法
  16. Genymotion搭建
  17. 如何给自己的思维导图加水印
  18. 【问题4】:kaggle练习题《自行车租赁业务预测》--带数据分析,用了随机森林,支持向量机,岭回归等
  19. 企业微信+esaywechat 扫码授权登录
  20. 大数据分析的几个极佳用例

热门文章

  1. 有人说 Maven 很简单,我却被 伤害 过
  2. Java 中关于 try、catch、finally 中的细节分析
  3. 为什么阿里巴巴不建议在for循环中使用+进行字符串拼接?
  4. 学 Redis ,至少要看看这篇!7000 字小结
  5. GNN教程:DGL框架实现GCN算法!
  6. 深度神经网络在NLP的应用!
  7. 机器学习之sklearn基础教程!
  8. 特征工程(二)TfidfVectorizer
  9. PYTHON编程导论群问题汇总(四)
  10. 实操教程|Pytorch常用损失函数拆解