密码学大咖DavidWong历经数年创作编写而成的这本书

news2025/1/7 6:30:13
从我开始写本书到图书出版已经有几年了。最初,我打算将本书作为介绍现实世界常用密码原语的图书。但是,这显然是一件不可能完成的事情。任何一个领域都不可能用一本书来总 结清楚。出于这个原因,我必须在知识的深度和广度之间找到平衡。我希望读者在学习密码学时少走弯路。如果读者正在寻找一本有助于了解密码公司以及产品实现与使用的密码算法类的图书,或者好奇于现实世界密码学的底层机制但不想了解算法的实现细节,那么本书就是你的最佳选择。——《深入浅出密码学》作者David Wong

深入浅出密码学

密码学大咖DavidWong编写,专业团队翻译,通过插图和简明的描述,深入浅出讲解密码学,书中附有配套彩图、章节习题及答案,帮你巩固知识点。

密码学是信息安全的基础,本书教读者应用加密技术来解决现实世界中的一系列难题,并畅谈了密码学的未来,涉及“加密货币”、密码验证、密钥交换和后量子密码学等话题。

全书分为两个部分,第一部分介绍密码原语,涉及密码学基础概念、哈希函数、消息认证码、 认证加密、密钥交换、非对称加密和混合加密、数字签名与零知识证明、随机性和秘密性等内容; 第二部分涉及安全传输、端到端加密、用户认证、“加密货币”、硬件密码学、后量子密码、新一 代密码技术等内容。

本书形式新颖、深入浅出,非常适合密码学领域的师生及信息安全从业人员阅读,也适合对密码学及其应用感兴趣的读者阅读。

作者简介

David Wong 是O(1)实实验室的一位高级密码工程师,他致力于 Mina “加密货币”的研发。在 此之前,他曾在 Facebook Novi 工作,担任 Diem (正式名称为 Libra)“加密货币”研发团队的安 全顾问。在 Facebook 工作前,他还在 NCC 集团的加密服务机构做过安全顾问。

David 在他的职业生涯中多次参与开源审计工作,比如审计 OpenSSL 库和 Let's Encrypt 项目。 他曾在多个会议(如“Black Hat”和“DEF CON”)上做过报告,并在“Black Hat”会议上讲授 密码学课程。他为 TLS 1.3 协议和 Noise 协议框架的发展做出了贡献。此外,他还发现了许多库 存在的漏洞,例如 Go 语言标准库中的 CVE-2016-3959 漏洞,TLS 库中的 CVE-2018-12404 、 CVE-2018-19608 、CVE-2018-16868 、CVE-2018-16869 和 CVE-2018-16870 漏洞。

David 还是 Disco 协议和基于智能合约的去中心化应用程序安全项目的开发者之一。他的研 究内容包括对 RSA 的缓存攻击、基于 QUIC 的协议、对 ECDSA 的时序攻击或针对 DH 算法的后 门攻击等领域的安全技术。

当拿起本书时,读者可能会有这样的疑惑,为什么又是一本关于密码学的图书?甚至会困惑, 为什么要读本书?要想知道这个问题的答案,就必须了解本书的写作过程。

本书历经数年创作而成

今天,通过使用必应或百度搜索,我们几乎可以了解任何东西。然而,对于密码学,我们可 以检索到的知识或资源非常有限。很久以前,我就遇到过这样的情况。从那时起,密码学相关资 源的匮乏就成为我钻研密码学的阻碍。

上大学时,有一门课要求我实现差分功耗分析攻击。在密码分析领域,这种攻击在当时算是 一个重大突破,它也是第一个公开的侧通道攻击。差分功耗分析攻击是一种非常神奇的密码算法 攻击方法,该方法通过测量设备在加密或解密时的功耗,提取出加密算法所使用的密钥。在阅读 相关论文时,我意识到,优质的论文可以传达伟大的思想,但很多论文往往不够清晰易懂。那时, 我曾使出浑身解数,尝试弄明白作者想表达的意思,但却找不到解释这些论文的在线资源。因此, 我绞尽脑汁,最终才彻底读懂这些论文。当时,一个想法在我脑海涌现,我可以想办法帮助像我 这样经历这场“磨难”的人。

出于这样的动机,我画了一些动图,以记录我对论文的理解。我还在视频网站上分享了自己 制作的密码学视频。

若干年后,每次发布完视频,我仍然能收到网友们的赞扬之词。就在我写这篇序言时,仍有 人发帖说:“谢谢你,你的解释非常到位,为我理解这篇文章节省了大量时间。”

对我来说,这是莫大的激励!在迈出这一步后,我就有了在教育领域做更多尝试的想法。我 开始录制更多的视频, 同时开始写一些关于密码学的博文。在开始撰写本书之前,我已经在博客 上发布了近 500 篇文章,它们解释了许多与密码学相关的概念。实际上,在曼宁出版社(Manning Publications )向我约稿之前,我已经有了写书的想法。

我意识到通过撰写一本图书,我可以告诉学生、开发人员、顾问、安全工程师和其他人现代 应用密码学的几乎全部内容。这将是一本几乎不涉及任何数学公式但会包含许多图示的书。本书 不会介绍密码学发展史,但会包含许多我在现实中见到的现代密码失败的案例。本书也不会介绍 已成为历史的密码算法,但涵盖正在大规模使用的密码算法或协议,包括 TLS 协议、Noise 协议 框架、Signal 协议、“加密货币”、硬件安全模块、门限密码等。本书几乎不涉及任何理论密码学 的内容,但会包含一些目前处于理论研究而未来可能变得实用的密码学原语:口令认证密钥交换、 零知识证明、后量子密码学等。

以上内容来自作者David Wong的序。

关于读者

这里列出了一些我认为可以从本书中受益的读者。

学生

如果你正在学习计算机科学、信息安全或密码学,并且想了解现实世界中使用的密码学技术 (因为你的目标要么是在工业界工作,要么是在学术界从事应用学科研究),那么本书适合作为你 的教科书。正如序言中说的那样,我曾经和你一样,也是一名在校的学生, 因此我编写了一本自 己曾经希望拥有的书。

信息安全从业者

在教授应用密码学时,我发现大部分学生都是渗透测试工程师、安全顾问、安全工程师、安全架构师和其他安全从业者。因此,当我试图向非密码学从业者解释复杂的密码学概念时,我收到了许多问题,从而改进了相关材料。作为一名安全从业者,在为大公司审核密码应用的过程中,我了解和发现了许多漏洞,这些经历对本书的编写也有着不小的影响。

直接或者间接使用密码学的开发人员

与客户和同事之间的多次讨论也对我编写本书产生了影响,而他们大都不是安全从业者或密 码学家。现今,在不涉及密码学的情况下编写代码变得越来越难, 因此,开发人员需要了解自己 正在使用的密码学工具。本书包含不同编程语言的代码示例,有利于读者理解这些密码学工具的 使用方法。如果读者对此感兴趣的话,还可以进一步参考与本书配套的示例代码。

对其他领域感兴趣的密码学家

本书主要介绍的是应用密码学,对于像我这样的应用密码从业者来说,本书很有价值。本书 是对我过去所从事工作的总结。如果我能将本书写好,理论密码学家应该能够快速了解应用密码 学世界的现状;对称加密研究者通过阅读相关章节能够快速了解口令认证密钥交换协议的本质; 密码协议使用者能够快速理解量子密码学的原理;等等。

想了解更多密码技术的工程师和产品经理

本书还试图回答一些我认为面向安全产品方面的问题:某种算法在安全性与效率之间做出了 何种平衡?使用某种算法可能面对何种安全威胁?某种算法是符合规定的吗?我需要按照规定 使用某种算法并且与政府合作吗?

对现实世界的密码学感兴趣的人

实际上,即便你不是上述的几类读者,只要对现实世界中的密码学感到好奇,你就可以阅读 本书。但请记住,我不会介绍与密码学有关的历史,也不会讲解任何计算机科学方面的基础知识。 因此,在阅读本书之前,读者应该具备一定的密码学背景知识。

读者需掌握的基础知识

如何才能充分地利用本书呢?本书假设读者对计算机或互联网的工作原理有一些基本的了 解,至少应该听说过加密技术。本书讨论的内容是现实世界的密码学, 因此,如果读者完全不了解计算机或者从来没有听说过加密这个概念,那么理解本书可能有些困难。

假设读者已经知道本书涵盖哪些领域的知识,那么读者应该了解位和字节,看过甚至使用过像异或、左移之类的位操作,这些背景知识都是读者学习本书的优势。如果没有这些优势,会导致读者无法阅读本书吗?不会,但这可能意味着读者必须花时间去网络上搜索阅读过程中遇到的 问题及其解答,才能继续阅读本书。

事实上,无论读者对相关知识了解到何种程度,在阅读本书时,都不得不偶尔停下来,在互 联网搜索并了解更多的背景知识。不过,这都不妨碍读者阅读和理解本书, 因为我会尽可能解释本书涉及的概念。

最后, 当我使用密码学这个词时,读者脑中出现的可能是数学。不过,读者并不需要太过担 心。本书主要讨论的是对密码学技术的宏观认识,并尽可能避免从数学的角度讨论它们的本质, 这样读者也能够对密码学技术的运作原理有直观的理解。

当然,本书肯定会介绍一部分数学知识, 因为讨论密码学就无法避开数学。所以,我想说的 是:如果读者的数学基础不错,就会非常有利于读者理解本书的内容。但如果没有数学基础,也 不妨碍读者阅读本书的大部分内容。有些章节,特别是最后两章的内容的理解需要读者有比较好 的数学基础,通过阅读这些章节以及搜索矩阵乘法和其他相关知识,读者也可以了解相关的数 学知识。读者可以选择跳过这些章节,但请不要跳过第 16 章,因为这章包含一些十分有用的知识。

本书的章节安排:学习路线图

本书分为两部分。第一部分的内容应该都有必要阅读,这部分涵盖密码学中的许多原语。读 者最终会像搭积木一样利用密码原语构建更复杂的系统和协议。

第 1 章对实用密码学进行介绍,让读者了解可以从本书学到的内容。

第 2 章讨论哈希函数相关的知识。哈希函数是一种基本的密码学算法,它可以根据输入 的字符串生成一个唯一的标识符。

第 3 章讨论数据认证以及确保消息不被他人篡改的方法。第 4 章讨论加密算法,加密算法用于确保通信双方交互的消息不会被其他人观察到。

第 5 章介绍密钥交换算法,我们可以通过密钥交换算法与其他人协商出一个秘密值。

第 6 章介绍非对称加密算法,它允许多人给同一个人发送已加密的消息,还介绍了混合 加密技术。

第 7 章讨论签名算法,它是现实世界纸质签名在计算机中的等价物。

第 8 章讨论随机数的定义以及生成秘密值的方法。 本书的第二部分介绍基于上述原语构造的密码系统。

第 9 章介绍使用加密以及认证算法保证机器之间安全通信的方法。

第 10 章介绍端对端加密,它讨论通信双方建立信任的方法。

第 11 章介绍机器验证用户身份以及人工辅助机器进行身份认证的方法。

第 12 章介绍一个新兴的密码领域——“加密货币”。

第 13 章重点介绍硬件密码学,也就是可以用来防止密钥泄露的设备。

第 14 章和第 15 章所涉及的内容(后量子密码和新一代密码技术)相关性越来越高,又 或者因为它们变得更加实用和高效,相关的技术已经开始进入工业界。如果读者跳过这 两章内容,那也没什么问题,不过读者必须读完第 16 章。

第16章总结密码学从业者必须记住的不同的挑战和不同的经验教训。正如蜘蛛侠的叔叔Ben所说,“能力越大,责任越大。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.6双端口RAM和多模块存储器

文章目录关键词正文一、存取周期二、引子三、双端口RAM四、多体并行存储器&#xff08;1&#xff09;高位交叉编址方式&#xff08;2&#xff09;低位交叉编址方式&#xff08;3&#xff09;编址&#xff08;4&#xff09;特性举例<1> 高位交叉编址<2> 低位交叉编址…

word实用技巧:拼音指南用法及注意事项

如果你是一位语文老师&#xff0c;在为学生准备试卷时&#xff0c;时常会用到Word拼音指南功能&#xff1b;如果你是一位职场白领&#xff0c;在为领导准备发言稿、颁奖名单时&#xff0c;以防领导读错音&#xff0c;也会用到Word拼音指南功能对生僻字&#xff0c;多音字进行单…

RabbitMQ 获取消息(Ack Mode)

在服务器端的客户端页面从队列中获取消息是一个危险的动作&#xff0c;生产环境一定要了解业务之后再做操作。 Act Mode Nack message requeue true 接收消息但不做确认&#xff0c;消息会重新加入队列 Automatic ack 获取消息&#xff0c;应答确认&#xff0c;消息不…

C#,编程语言的基本概念与知识点

本文归纳整理C#的一些知识点&#xff0c;便于快速浏览与掌握C#语言的一些基本概念。本文并没有很好地层次与组织&#xff0c;抄了不少&#xff0c;写了不少&#xff0c;想到什么&#xff0c;就写什么。01 类 class类是C#等面向对象编程语言&#xff08;Object-oriented program…

分享152个ASP源码,总有一款适合您

ASP源码 分享152个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 152个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/1fOOs06p6YghEzceqJ4twaA?pwd0p4z 提取码&#x…

Vue-透传Attributes使用解析

透传是vue中一种特性&#xff0c;官方的解释是&#xff1a;“透传 attribute”指的是传递给一个组件&#xff0c;却没有被该组件声明为 props 或 emits 的 attribute 或者 v-on 事件监听器。最常见的例子就是 class、style 和 id。这句话解释过来就是一些不被prop定义的属性直接…

面对层出不穷的问题,延迟开学的原因就是取消延时服务?

面对层出不穷的问题&#xff0c;延迟开学的原因就是取消延时服务&#xff1f; #延迟开学#请问为什么要延迟&#xff1f;疫情期间说要回家可以理解&#xff0c; 这两天都传着说郑州市的中小学、幼儿园推迟开学了&#xff0c;到底有没有这种情况&#xff1f;我们现在又来到了郑…

零基础入行软件测试怎么学习~

随着近几年软件测试行业的异军突起&#xff0c;加之这又是个进入门槛相对较低的行业&#xff0c;导致不少人都想从事这个岗位。那么&#xff0c;许多初学者在一开始都会想知道&#xff0c;零基础入门软件测试要学什么?希望本文可以对大家的软件测试学习之路有一定的指导意义&a…

Vue实现考勤记录删除-自定义右击删除菜单

一、定义和使用oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单。注意&#xff1a;所有浏览器都支持 oncontextmenu 事件&#xff0c; contextmenu 元素只有 Firefox 浏览器支持。二、语法HTML 中:<element oncontextmenu"myScript">JavaScript…

RabbitMQ面试题

什么是 MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已。 还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。 在互联网架构中&#xff0c;MQ 是一种非常常见的…

一文走进多核架构下的内存模

一、走进多核编程CPU 发展早期阶段&#xff0c;性能的提升主要来自于主频的提升和架构的优化&#xff0c;当这条优化途径出现瓶颈后&#xff0c;多核 CPU 开始流行起来。多核心同时执行任务极大地提高了系统整体性能&#xff0c;但也对硬件架构和软件编写提出了更大的挑战。各个…

C语言#define的用法

#define 叫做宏定义命令&#xff0c;它也是C语言预处理命令的一种。所谓宏定义&#xff0c;就是用一个标识符来表示一个字符串&#xff0c;如果在后面的代码中出现了该标识符&#xff0c;那么就全部替换成指定的字符串。我们先通过一个例子来看一下 #define 的用法&#xff1a;…

【Spring(九)】带你了解Spring整合MyBatis的详细过程

文章目录前言Spring整合mybatis思路分析Spring整合MyBatis总结前言 前面我们已经学习完了Spring的注解开发&#xff0c;接下来我们来学习Spring整合MyBatis&#x1f4aa;&#x1f4aa;。 Spring整合mybatis思路分析 整合其实我们在核心容器中已经完成了一个东西了:DruidDataSou…

Hue使用

文章目录HUE功能概览界面介绍Quick browseApp应用 App* 编辑器 【Editor】调度器 【Scheduler】浏览 Browsers*【Documents】【File Browser】HDFS【Job Browser】YARN、oozie【Table Browser】Hive、mysql、SQLite...【HBase Browser】HbaseHUE 在hue.ini 配置集成其他服务&a…

Doris-1.2.0安装部署详细流程

doris介绍 Doris是一个MPP的OLAP系统&#xff0c;以较低的成本提供在大数据集上的高性能分析和报表查询功能。 MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理。简单来说&#xff0c;MPP是将任务并行的分散到多个服务器和节点上&#xff0c;在每个节点上计…

Power BI中创建父子层级二:父级单独产生值

一、父子层级 在数据分析中&#xff0c;经常会遇到父子层级问题&#xff0c;通常来说&#xff0c;父子层级又可以分为两种情况&#xff0c;一种为图1&#xff0c;江苏中烟的销量就是南京品牌和苏烟品牌的销量之和&#xff0c;南京品牌的销量就是南京&#xff08;硬红&#xff…

cocos开发微信小游戏ci机器人实践

1.cocos使用命令行发布微信小游戏项目 1.1 先编辑微信小游戏构建发布配置&#xff0c;然后导出配置&#xff0c;会生成一个buildConfig_wechatgame.json的配置文件 1.2 使用命令行构建微信小游戏项目 D:\CocosDashboard\resources.editors\Creator\3.4.2\CocosCreator.exe --…

硅烷试剂1873-77-4_Tris(trimethylsilyl)silane_三(三甲基硅基)硅烷

●中文名&#xff1a;三(三甲基硅基)硅烷&#xff0c;三(三甲硅基)硅烷●英文名&#xff1a;TRIS(TRIMETHYLSILYL)SILANE&#xff0c;Tris&#xff08;trimethylsilyl&#xff09;Silane&#xff0c;Tris(trimethylsilyl)silaneTris(trimethylsilyl)silane中含有硅烷基&#xf…

JavaScript 中清空数组的几种方法

目录 Array.prototype.splice() 将 length 设置为 0 分配新的空数组 length 0和 Array [] 之间的差异&#xff1f; JavaScript 中清空数组的几种方法多少人都想走出浪浪山 &#x1f9e8;&#x1f9e8;&#x1f9e8; Array.prototype.splice() let course [HTML, CSS, Java…

第四章.神经网络—线性神经网络,Delta学习规则

第四章.神经网络 4.2 线性神经网络与Delta学习规则 线性神经网络在结构上与感知器非常相似&#xff0c;只是激活函数不同。在模型训练时把原来的sign函数改成purelin函数:y x 1.激活函数 2.线性神经网络示例 1).题目&#xff1a; 假设平面坐标系上有四个点&#xff0c;(3,3)…