实用密码学
范学雷
前 Oracle 首席软件工程师,Java SE 安全组成员,OpenJDK 评审成员
14948 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 24 讲
开篇词 (1讲)
课前必读 (1讲)
案例分析 (1讲)
实用密码学
15
15
1.0x
00:00/00:00
登录|注册

06|对称密钥:如何保护私密数据?

你好,我是范学雷。
在上一个模块,我们学习了单向散列函数。从今天开始,我们将开启一个新的模块,在这个模块里,我将跟你讨论加密技术的相关知识。是不是感觉上一个模块的学习还意犹未尽?
别着急,单向散列函数还会出现在我们的视野里。那么,加密技术是用来做什么的呢?
还记得上一讲,我们讨论了单向散列函数的使用场景吗?其中,一个重要的限制是我们需要确保给定的散列值不能被修改。这个简单、直观的限制,给单向散列函数的使用套上了一个紧箍咒。
这说明在很多场景下,我们并不能仅仅使用单向散列函数来解决数据的完整性问题。要想去掉这个紧箍咒,扩大单向散列函数的适用场景,我们还需要其他技术,比如加密技术。
那加密技术是怎么帮助单向散列函数解决完整性问题的?这个疑问立即就来到了我们面前。不过不用担心,我们需要一点时间来了解这个问题,以及解决问题的办法。
今天,我们先来讨论第一类加密技术:对称加密技术。

什么是加密?

在讨论对称加密技术之前,我们要先了解加密、解密和密钥这几个概念。
其实这几个概念还是很容易理解的。把信息或者数据伪装、隐藏起来,转换成难以解释的信息或者数据,这个过程叫做加密。和加密这个过程相反的过程,就叫做解密
一般来说,加密产生的那个难以解释的信息或者数据,我们把它叫做密文(Ciphertext)。对应的,加密前的数据,我们通常把它叫做明文(Plaintext)
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

对称密钥加密技术是密码学中的重要概念,本文首先介绍了加密、解密和密钥的概念,强调了密钥在加密和解密运算中的重要性。相比历史上依赖算法保密性的加密方式,现代密码学依赖于加密算法的质量和密钥的保密性。文章还强调了公开算法的重要性,以及不要自行发明密码算法和不要寄托安全性在算法保密上的观点。最后,强调了现代密码学算法的安全性取决于密钥的保密。因此,管理好密钥,做好密钥的保密,才是密码学系统最关键的任务。文章还讨论了对称密钥的概念、区别于非对称密钥的特点以及密钥与密码的区别。此外,还探讨了密钥管理的挑战和重要性,以及如何处理敏感信息和密钥的保密性。总的来说,本文强调了对称密钥的重要性和密钥保密的必要性,为读者提供了对现代密码学技术的深入了解和思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《实用密码学》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • sugar
    “大部分情况下,我们自行发明的密码学算法都是灾难。”有关这句,想问一下:我的理解是需要加一个前提,自行发明的算法程序可以被外部获取到大量明文密文对儿,从而逆向推导我的算法。 我想讨论的是,如果这个算法在某个系统的服务端内部,整个服务端代码只有我一个人有权限,对外输出的 可被客户端访问到的东西 只有大量的密文,这种情况下外界是否有可能攻破我自己发明的这个脆弱的加密算法呢?

    作者回复: 你就不嫌麻烦吗?你放心,你的老板放不放心?你的老板放心,股东放不放心?股东放心,客户放不放心?客户放心,你家人放不放心?麻烦比你想象的多。 请看文章“什么是加密?”这一部分的前半段,尤其是下面的话:“当初算法的设计者还健在吗?当初算法的实现者还健在吗?算法实现的代码还在吗?算法运行的环境还在吗?解决掉其中任何一个问题,我们就能破坏掉算法的保密性。” 这些都比逆向推导简单。更何况,王母娘娘还能请你去蟠桃会吃酒喝茶。当然,逆向推导和破解128位的密钥比起来,也不是一个数量级的难度。只不过,的确没有必要逆向推导,找到你就行了,软的不行就来硬的,你保守秘密,你就承担责任(换句话说是风险)。

    2020-12-05
    9
    9
  • 天天有吃的
    问题3:密钥是怎么产生的,密钥可以通过加密算法得到吗,那么如果加密算法是公开的,密钥是不是也就能知道了?

    作者回复: 这是一个好问题,密钥不能单纯地通过加密算法得到。我们后面还会讲密钥是怎么产生的。

    2020-12-04
    2
    5
  • Litt1eQ
    默认情况下,网络通信的信道是不可信的,在不安全的信道中传输对称加密的密钥是一个比较麻烦的问题

    作者回复: 所以,千万不要在不安全的通道传输对称密钥;甚至,也不要在安全的通道传输对称密钥。

    2020-12-04
    5
  • ifelse
    对称秘钥保存在了项目配置文件里

    作者回复: 哈哈,这个问题很常见吗?

    2022-11-04归属地:美国
    2
    2
  • qinsi
    Telegram的MTProto协议据说用了自己发明的算法。另外微信仿照TLS1.3开发的mmtls,据说使用的都是公开的高强度算法,那就不算是自己发明加密算法了吗?

    作者回复: 没太明白这个问题。“自己发明的算法”当然是“自己发明的算法”。我不了解这两个协议,不知道它们有没有发明“加密”算法。

    2020-12-04
    4
    2
  • Geek_32fc10
    攻击者在不知道对方使用的什么加密算法的情况下,只能暴li破解吗?

    作者回复: 不用费劲去破解,找个人问问就行了。

    2022-07-15
    1
  • 追风少年
    现在项目里都是明文的密码,日志,数据库全中,尴尬😓

    作者回复: 嗯,不惊讶。 快想办法吧。

    2020-12-14
    1
  • 孜孜
    我们公司的旧项目,会往cookie里面写入加密信息。比如accountinfo,然后Java code会用一个common的jar去解密。虽然没有研究过,不过可能不是公开算法。。

    作者回复: 是不是在cookie里写入机密信息?需要注意的是,使用公开的算法,不算是自己发明算法。

    2020-12-04
    1
  • 天天有吃的
    问题2:哈希跟加密验证数据方式有些不同,似乎都是把原本的数据处理成难以解释的数据,这两个难以解释的结果有什么区别吗?

    作者回复: 哈希逆向运算困难,加密可以逆向运算。

    2020-12-04
    1
  • 第一装甲集群司令克莱斯特
    学起来!
    2023-03-26归属地:北京
    1
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部