密码学-到底是什么,又如何工作

 Cryptography-Not Just a Digital Thing


Gravity技术社区

正如Bruce Schneier 在其应用密码学(Applied Cryptography) 一书中所定义的那样,“The art and science of keeping messages secure is cryptography […].”密码学虽然现在被认为是我们数字生活的基础,但与计算无关。几千年来它已经以各种形式存在。下面是维基百科关于密码学历史的文章节选:

已知的最早使用密码学的地方是在公元前1900年左右从埃及古王国雕刻到墓葬墙上的非标准象形文字中发现的。虽然,并不能严谨的说明是在进行加密通信,更像是试图给别的文明添加神秘。以下是密码学在实际用途方面的例子。之后,一些来自Mesopotamia的粘土片显然是为了保护信息 –可以追溯到公元前1500年左右的黏土片被发现用来加密一名工匠的陶器釉料配方,据推测,这种釉料具有商业价值。再后来,大约在500至600年之间,希伯来学者开始使用简单的单字母替代密码(如 Atbash 密码)。在印度,大约在公元前400年至公元前200年,Mlecchita vikalpa 或许是理解了在 cypher 中的写作艺术,用一种特殊方式写作的文字记载于「Kama Sutra」中,为了恋人之间进行沟通。这也可能是一个简单的替代密码。埃及 Greek Magical Papyri 的部分是用密码脚本编写的。 

你可能以前见过简单的密码学例子。Caesar cipher 或 shift cipher  通常用于解密秘密信息的儿童游戏。ROT13 是一种非常常见的移位密码,其中字母按13步旋转,如下所示:

很容易看出,这种密码不提供真正的安全性,但它简单而有趣的说明了密码学背后的基本思想。

今天当我们谈论密码学时,我们通常会在技术环境中谈论它。例如,当我们进行购买或查看我们的银行账户时,个人和财务信息是如何在网络上安全的进行传输(保护传输中的数据)的?如何安全地存储数据(称为保护静态数据),以便别人不能够打开计算机,弹出硬盘驱动器,还能在现场获得有关此信息的日期?

 Definitions-A Quick Cybersecurity Primer


在网络安全方面,涉及到数据时,我们会关注很多事情。这些包括数据的 Confidentiality(机密性),integrity (完整性),availability (可用性) 和 non-repudiation (不可否认性)。

Confidentiality 意味着我们的数据不能被未经授权的用户访问/读取。

integrity 意味着我们的数据 100% 还原,并且没有被修改,无论是由恶意参与者、数据丢失还是其他原因造成的。

availability 意味着我们的数据在需要时可以访问。

non-repudiation 意味着,如果 Bob 将一些数据发送给 Mary,那么他就不能在以后声称他不是那个信息的发送者。换句话说,有一些方法可以确定除了 Bob 之外没有人可以发送数据。

密码学在可用性方面对我们没有多大帮助,但是我们将研究各种形式的数字密码学,以及它们如何帮助我们实现上述其他的三个目标。当我们谈论数字密码学时,我们通常指的是以下其中之一:

1对称加密 2非对称加密 3散列函数 4数字签名

接下来会对每一个进行扩展。所有的代码示例都是改编自 Jesus Castello 在 SitePoint 上的精彩文章,「Exploring Cryptography Fundamentals in Ruby」以及官方Ruby 文档。同时请记住,这些示例是为了说明这些概念,而不是提供数据安全性的最佳实践。

对称加密(Not Just a Digital Thing

在深入探讨之前:“encryption”究竟意味着什么?加密和解密通常分别用来表示使用密码和解除密码; 简单地说,对消息进行加密意味着使用密码(这样做的具体方法)使未授权方无法读取消息。解密消息意味着逆转过程并使数据再次可读。

为了正确加密和解密我们的数据,我们需要数据和一个密钥(它决定了我们的密码输出)。

使用对称加密,用于加密和解密数据的密钥是相同的。

非对称加密(Asymmetric Encryption)

对称加密的问题在于:如果需要在恶劣环境(如 Internet)中安全地发送数据,该怎么办?如果使用相同的密钥来加密和解密数据,那么首先需要向您发送解密密钥来建立安全连接。但这意味着我将密钥通过一个不安全的连接发送,密钥可以被第三方拦截和使用!如何解决这个问题?输入非对称加密。

以下有一个大概的想法。要使用非对称密码,需要生成两个数学关联的密钥。一个是私钥(只有您有权访问),以及公钥(顾名思义)可以与任何人公开共享。

因此,请求安全的连接到服务器,服务器发送它的公钥,客户端为对称密码生成密钥并使用服务器的公钥对其进行加密,服务器使用其私钥对包含对称密钥的消息进行解密,现在双方都有对称密钥,可以使用对称加密建立安全连接。

可是接下来我们有另一个问题。我怎么知道服务器的公钥是合法的,即属于该服务器!?通常,处理这个问题有两种方法,但最常用的方法(以及网上使用的方法)是通过使用公钥基础结构(PKI)。有一种情况就是网站,有一个证书颁发机构,该机构有一个包含所有已颁发证书的网站的目录以及它们的公钥。当您连接到网站时,首先使用证书颁发机构验证它的公钥。

将字符串从最后一节加回来,并生成一个公钥/私钥对:

首先,请注意我们的密钥和我们的公钥是具有不同对象 ID 的独立对象。使用 #private_encrypt,我们可以使用私钥加密我们的字符串。再次注意我们在 data_to_encrypt变量中输入的无意义输出。

散列函数(Hashing functions)

散列函数与对称/非对称加密不同,是一种单向函数。您可以从某些数据创建散列,但无法真正逆转该过程。因此,它对于存储数据没有用,但它是在验证某些数据完整性方面很有效果。

散列函数将一些数据作为输入,并输出一个看起来随机(但不是全部)的字符串,该字符串的长度始终相同。理想的散列函数为不同的输入创建唯一的值。完全相同的输入将始终产生完全相同的散列 - 这就是为什么我们可以使用它来验证数据完整性。

我们这次使用一个新字符串,通过散列函数运行它,并将该散列存储在一个变量中。

数字签名(Digital Signatures)

数字签名对完整性和不可否认性都有很好的应用。数字签名是散列和非对称加密的组合。也就是说,信息首先被散列函数计算,并且该散列用发送者的私钥加密。这就组成了签名,与消息一起发送。

收件人使用发件人的公钥从签名中提取散列,然后对信息进行散列处理以与提取的散列进行比较。如果您确信公钥属于发件人,并且公钥解密成功,那么您可以确信邮件确实来自发件人。如果提取的散列与信息的计算散列匹配,则可以确定消息的完整性。

请记住,数字签名不一定会使信息保密; 因为有可能签署明文消息。 数字签名将与加密的消息一起工作,但是信息本身的加密必须单独执行。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容

  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    苹果粉阅读 11,510评论 5 29
  • 在深入学习区块链时,不可避免的需要了解密码学。区块链算是对密码学的一次整合运用,虽然并无太多创新的密码算法,但也值...
    Kerwong阅读 44,314评论 4 25
  • 1 公钥私钥 2 公钥加密 别人用A的公钥加密传输的信息,只有A的私钥可以解密。保证了传输的信息的安全性。 2 私...
    skykira阅读 959评论 0 1
  • 〇、序言 货币由于其天然属性决定了其与安全不可分割的联系,从最早的金库、保险柜、镖局到后来的ATM机、运钞车;从存...
    怒马2048阅读 38,778评论 4 79
  • 前言 《图解密码技术》一书介绍了很多关于密码的知识,通读一遍需要不少时间。为了方便学习,我对书中关键的部分进行了总...
    咖枯阅读 7,190评论 1 25