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

2024-03-22 12:50

本文主要是介绍密码学大咖DavidWong历经数年创作编写而成的这本书,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

 

这篇关于密码学大咖DavidWong历经数年创作编写而成的这本书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/835318

相关文章

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

Wondows dos下怎么编写bat批处理文件

最近搞php,在运行时,以Nginx+php-cgi.exe方式运行Wordpress项目 打开dos,先cd到php-cgi.exe文件当前目录下执行启动命令:php-cgi.exe -b 127.0.0.1:9001再打开一个dos,再cd到nginx.exe文件当前目录下执行启动命令:start nginx 大概过程要经过这些步骤,觉得很麻烦,就学下怎么编写一个bat文件,以双击运行代替

用Python编写倒计时程序:详细教程

目录 引言 环境准备 基本概念 代码实现 步骤一:导入必要的库 步骤二:获取用户输入 步骤三:实现倒计时逻辑 步骤四:整合代码 运行程序 高级功能 扩展功能示例:支持分钟和小时输入 扩展功能示例:图形用户界面 (GUI) 总结 引言 倒计时程序是一个非常常见的小工具,广泛用于各种应用场景中,例如考试时间提醒、烹饪计时器、会议倒计时等。Python 作为一种

深入探讨生成对抗网络(GANs):颠覆传统的AI创作方式

在人工智能的快速发展中,生成对抗网络(Generative Adversarial Networks, GANs)无疑是一个引人注目的技术。自2014年由Ian Goodfellow等人首次提出以来,GANs已经在图像生成、文本生成、视频生成等多个领域展现出了惊人的能力。本文将详细解析GANs的原理、结构以及应用场景,帮助读者全面理解这一颠覆性的技术。 一、GANs的基本原理 生成对抗网络(G

【Spring boot】编写代码及测试用例入门之 Hello Spring boot _踩坑记

先贴下目录: 这是我从 start.spring.io 里下载的依赖Web的模板 // DemoApplication.javapackage com.abloume.springboot.blog.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autocon

windows下使用vscode编写运行以及调试C/C++

vscode支持类似于vs的断点调试c/c++,也可以直接编译&运行c/c++ 先是编译运行 c/c++的方法                              微软官方起初设定的科学做法(这也是现在的科学做法)是通过在vscode集成控制台写命令行的方式来实现编译运行程序的,但也可以通过code runner插件来简化步骤,实现一键编译执行 但无论是什么方法,因为vscod

人工智能时代开启ai代写模式,让创作变得更加简单!

随着人工智能技术的飞速发展,我们的生活和工作方式正在发生翻天覆地的变化。在这个信息爆炸的时代,内容创作领域也迎来了新的变革——ai代写。这一模式的出现,让文章写作变得更加简单高效,为创作者们打开了新的可能。   一、ai代写的优势   提高写作效率   在传统写作过程中,创作者需要花费大量时间和精力进行资料搜集、构思和撰写。而ai代写能够在短时间内完成这些工作,大大提高了写作效率。创

Python编写简单登录系统的完整指南

在现代应用中,用户认证和登录系统是一个非常重要的功能。通过登录系统,应用能够识别用户的身份,并为其提供相应的权限和服务。本文将介绍如何使用Python编写一个简单的登录系统,包括用户注册、登录验证、密码加密等功能。通过这一教程,将学习如何构建一个基本的用户登录系统,并理解其中的关键技术。 这里插播一条粉丝福利,如果你在学习Python或者有计划学习Python,想在未来人工智能领域吃上一口饭的,

springboot项目编写发送异常日志到企微工具包

1.创建基础Bean public final class ThreadFactory implements java.util.concurrent.ThreadFactory {private static final AtomicInteger poolNumber = new AtomicInteger(1);private final ThreadGroup group;priva

基于IMX6ULL的Cortex-A中断原理讲解,以及编写其中断向量表

首先借助STM32我们需要了解中断系统是如何构成的         会有一个中断源,也就是能够向CPU发出中断请求的设备或事件。中断源不分硬件和软件,也就是产生中断信号,就会执行中断服务函数         但是CPU是如何知道中断源产生后就找到对应的中断服务函数呢,这个时候就要引入中断向量表,它的主要功能是描述中断对应的中断服务函数,每个中断源都有一个唯一的中断号(也称向量号),