首页 > 其他分享 >CAN304 W2

CAN304 W2

时间:2023-05-13 22:48:08浏览次数:51  
标签:加密 W2 key bit CAN304 byte block 密钥

CAN304 W2

Classical and modern cryptography

Classical cryptography 完全依赖于通信双方之间共享的秘密信息(Private-key cryptography, 又叫 secret-key / shared-key / symmetric-key cryptography)。

Secure communication:双方共享一个密钥,用于安全通信。

image-20181231114923883

Secure storage:单个用户可以在一段时间内安全地存储数据。

image-20230513120502906

Private-key encryption

image-20230513121033095

The shift cipher

对字母进行加密,如果密钥 k = 1,那么字母 A 加密后变成字母 B ...。解密的时候逆向进行该操作。

image-20230513125902082

Frequency analysis: Match up the frequency distribution of the letters.

然而 shift cipher 并不安全,因为它的密钥空间 (key space) 较小,仅为 26。

密钥空间应足够大,以防止"暴力破解 (brute-force)" 详尽搜索攻击 (exhaustive-search attacks)。

The Vigenère cipher

现在密钥是一个字符串。

要进行加密,将内容依据密钥指示向后挪动相应的位。解密即反转该过程。

例如:k=‘cafe’ (a 代表 0,b 代表 1 ...) image-20230513130222047

key space:如果 key 是一个长度为 14 的字符串,那么 key space 的大小为 \(26^{14} \approx 2^{66}\)。

因此 Vigenère cipher 很安全,使用 brute-force search 几乎不可能。

不过如果被人知道了 key 的长度,那么破解起来就很容易:假如 key 长度为 14,那么位置在第 1,15,... 的元素都是用同一种方式加密,这样就可以破解密码。

Symmetric encryption

image-20230513130519202

注:E 是加密算法,D 是解密算法。K 是密钥,M 是明文信息,C 是密文信息。

Stream ciphers vs. Block ciphers

Stream ciphers:对于一个密钥 k (k 一般比明文 m 短),使用算法 G 将 k 变得和 m 长度一致 (k 是种子密钥,G 是随机数发生器,生成的结果为 key stream),然后对明文一个一个 (一 bit 一 bit) 进行加密。解密为其逆过程。

image-20230513132204181

Block ciphers:将 m 分成指定长度的 block,一块一块进行加密。

image-20230513132235364

两者的主要区别是按 bit 加密,和按块加密。

Advantages of block ciphers:

  • Good diffusion
    • 更容易使一组加密字符相互依赖,因为 block 中有多个 bit,这些 bit 一起被加密,之间会产生联系
  • Immunity to insertions
    • 加密文本是已知长度,因为我们知道 block 的长度,如果给密文中插入,那么长度就会不一致
  • Most common Internet crypto are done with block ciphers

Disadvantages of block ciphers:

  • Slower
    • 在加密/解密开始之前需要等待数据块
  • Worse error propagation
    • 错误会影响整个块 (要是出错,整个块都会出错)

Block ciphers (AES)

The Data Encryption Standard:DES,Block ciphers 的一种。
使用 substitutions (替换), permutations (排列,比如改变顺序), table lookups (表查找) 进行加密;加密会进行很多轮,每轮重复上述操作。但 DES 并不安全,因为其 key 不够长 (short key)。

The Advanced Encryption Standard:AES,可以作为 DES 的替代品,使用 combination of permutation and substitution 加密。

AES Internals (下面不考)

一个 128 bit 的 process block 可以选择长度为 128, 192, 和 256 bit 的 key。

我们可以将 16 byte (16 byte = 128 bit) 的明文看成由 byte 组成的二维 array s,这个 array 被称为 internal state。

image-20230513134332662

AES 使用 SPN structure 转换 array 的 byte、列和行,以生成密文。

Substitution–permutation network (SPN)

image-20230513134515632
  • AddRoundKey

    • SPN 每轮会产生一个 round key,round key 的长度为 4,即每个元素 32 bit。将 128 bit 的 round key 和 internal state 中的数据进行逐位异或操作
    • image-20230513134956081
  • SubBytes

    • 根据 S-box 将每个 byte (s00, s01 ,... , s33) 替换为其他 byte (假如 s01 的值为 2e,那么它将被替换为 31)

      image-20230513135043429
  • ShiftRows

    • 将第 i 行的第 i 个位置的元素移动到最左边 (整行一起移动)
    image-20230513135120730
  • MixColumns

    • 将每列的 4 个 byte 作为输入,和一个给定的 matrix 相乘,从而将它们转换为新的 byte
image-20230513135316437
  • KeyExpansion

    • 从 16 byte 的 initial key 创建 11 个 16 byte 的 round key (k0-k10),其中使用和 SubBytes 中一样的 S-box 和异或操作

      image-20230513135440359

      注:上面是 Key schedule function,k 是 initial key,w 是 round key (也是 16 byte)。通过上述机制生成 round key。

AES 与 block cipher 一样安全:所有输出 bit 都以某种复杂的伪随机方式依赖于所有输入 bit。但没有证据表明 AES 对所有可能的攻击免疫(例如,新的侧信道攻击,new side-channel attacks,核心思想是通过加密软件或硬件运行时产生的各种泄漏信息获取密文信息)。

Cryptographic modes

Block cipher 和 stream cipher 都是基本的加密方式,但现实中要求的加密可能更复杂 (比如 block cipher 只能加密固定长度的内容,但现实中要求加密任意长度的内容)。因此,应用 cipher 的方法就是 cryptographic mode。相同的加密方式可以用在不同的模式中。

ECB Mode

Electronic Codebook (ECB) Mode:ECB 是 block cipher 的一种最基本的工作模式。在该模式下,待处理信息被分为大小合适的分组,然后分别对每一分组独立进行加密或解密处理。
但 ECB 的所有分组的加密方式一致,这会导致相同的明文被加密后的密文也相同 - 不安全。

CBC mode

Cipher Block Chaining (CBC) mode 可以将一组相关的加密块绑定在一起,并隐藏相同内容的两个块。

CBC 使用先前块的密文来加密当前块:将先前块的密文和当前块的明文进行异或操作,再加密其结果。这样每个块的加密取决于所有先前块的内容。

image-20230513140159203

不过 CBC 有一个缺陷,对于第一个 block 没有之前的块进行加密,这会导致和 ECB 相同的问题。因此我们使用 initialization vectors (IV) 来解决这个问题。

IV 会随机生成一个 string 来代替之前的块对第一个块进行加密。这确保了加密结果始终是唯一的。

image-20230513140935419

解密方会收到 IV 以及一系列密文 (C1, C2, ...)。

image-20230513141432756

PCB: previous ciphertext block

PPB: previous plaintext block

Uses of symmetric cryptography

Symmetric cryptography 可以被用于很多事:

  • Secrecy (confidentiality):只有知道密钥的人才能解密 - 保证机密性

  • Authentication

    • 只有我和 A 知道密钥 k,如果我发消息给某人,那人解密了消息,那人必然是 A

    • 但这存在一些问题,比如 non-repudiation problem:只有我和 A 知道密钥,我加密了一个消息,但我否认是我加密的,这样第三方就不知道到底是谁加密的消息 (因为我和 A 都可以加密)。

      同样的,如果是三个人共享密钥,那就更不知道到底是谁加密的消息 (这种情况可以通过加密公钥来解决,即非对称加密)。

      如果 authentication 的时候不考虑泄密问题,可以不使用加密。

  • Prevention of alteration (integrity):Changing one bit of an encrypted message completely garbles it. For many forms of cryptography, ciphertext à plaintext (meaningless, unreadable) 更改加密消息会使解密后的明文变得完全混乱

Symmetric cryptography 还存在一个问题:在互联网上,每两个人之间需要共享一个密钥进行通信,那么需要极多的密钥才能让整个互联网正常工作。

image-20230513142636452

标签:加密,W2,key,bit,CAN304,byte,block,密钥
From: https://www.cnblogs.com/zz-w/p/17398393.html

相关文章

  • CAN304 W1
    CAN304W1DefinitionTheprotectionaffordedtoanautomatedinformationsysteminordertoattaintheapplicableobjectivesofpreservingtheintegrity,availability,andconfidentialityofinformationsystemresources(includeshardware,software,firmw......
  • 【攻防世界逆向】《getit》《no-strings-attached》《csaw2013reversing2》
    题目getit解法先用exeinfo打开看看文件格式无壳elf文件,放进ida64打开看看,并f5查看伪代码耐心的学习了一下。我先学了下面的文件操作fseek修改原指向stream流指针,按照第p【i】个位置从左开始数fputc把前面内容从上面的指针开始编辑不带格式化fprintf把内容写入流文......
  • HW2:classification
    HW2任务描述音位分类预测(Phonemeclassification),我们有音频->音位这样的训练数据,想要训练一个模型,学习这样的对应关系,然后给定音频,预测其音位音位音位(phoneme),是人类某一种语言中能够区别意义的最小语音单位,是音位学分析的基础概念。每种语言都有一套自己的音位系统。音频处......
  • w2-4 高精度减法
    #include<iostream>#include<string>usingnamespacestd;intsum[50000];intmain(){stringa,b;longlongx,y;cin>>a>>b;intjug=0,pd=0;if((a<b&&a.size()==b.size())||a.size()<b.siz......
  • w2 P1008 [NOIP1998 普及组] 三连击
      主要思路:构造一个judge函数,判断是否1-9都出现了。由于三位数范围为123-987,但因为要求三个数字比例为1:2:3,所以在遍历时的范围是123-987/3。遍历范围内的每一个整数x,并判断2x,3x是否满足judge函数,满足则输出这三个数,否则继续遍历。代码如下:#include<iostream>usingnamespac......
  • 事实胜于雄辩,苹果MacOs能不能玩儿机器/深度(ml/dl)学习(Python3.10/Tensorflow2)
    坊间有传MacOs系统不适合机器(ml)学习和深度(dl)学习,这是板上钉钉的刻板印象,就好像有人说女生不适合编程一样的离谱。现而今,无论是Pytorch框架的MPS模式,还是最新的Tensorflow2框架,都已经可以在M1/M2芯片的Mac系统中毫无桎梏地使用GPU显卡设备,本次我们来分享如何在苹果MacOS系统上......
  • C++ MFC中嵌入web网页控件(WebBrowser、WebView2、CEF3)
    1、简介WebBrowser控件最常见的用途之一是向应用程序添加Internet浏览功能。使用IWebBrowser2接口,可以浏览到本地文件系统、网络或万维网上的任何位置。可以使用IWebBrowser2::Navigate方法告知控件要浏览到哪个位置。第一个参数是包含位置名称的字符串。要浏览到本地文件系......
  • pve proxmox virtual environment 系统安装 使用 qcow2
    在pve系统下载qcow2镜像centos7:https://cloud.centos.org/centos/7/images/wgethttps://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2在p......
  • 【小沐学C#】WPF中嵌入web网页控件(WebBrowser、WebView2、CefSharp)
    1、简介使用WindowsPresentationFoundation(WPF),你可以创建适用于Windows且具有非凡视觉效果的桌面客户端应用程序。1.1WPF简介<fontcolor=blue>WPF的核心是......
  • Ubuntu 20.04 制作Linux系统的qcow2镜像
    本篇以制作kali2023操作系统为例,在一台Ubuntu20.04的服务器上制作2GB内存,30GB硬盘的qcow2镜像,如果是VM虚拟机需要开启CPU硬件虚拟化。1.安装依赖软件aptinstallqemu-......