密码学原理
可证明安全理论 公钥加密算法的安全性定义 基本概念 安全参数与多项式时间 安全参数 λ(Security Parameter):衡量攻击者破解密码方案的难度。λ越大,系统越安全。 例子 :λ=128时,攻击者至少需要2¹²⁸步操作才能破解(相当于宇宙中原子总数的量级)。 安全参数的两种类型 : 计算安全参数 :破解所需的计算量。例如分解大整数n的难度≈2logn2^{log n}2logn,若n是2048位,计算量≈210242^{1024}21024。 统计安全参数 :攻击成功的概率。例如暴力破解128位密钥的概率是12128\frac{1}{2^{128}}21281,几乎为0。 λ的多项式大小:存在常数c和某个λ’,当λ足够大时,任何多项式函数poly(λ) ≤ λᶜ。 例如,poly(λ)=λ1.5λ^{1.5}λ1.5 或$ 4λ^{10}+λ^3+1$,它们最终都会被某个λᶜ(如λ¹¹)超过。 在密码学中,多项式增长(即λ^n)被视为“可接受”,指数增长(如2^λ)则不可接受。 多项式时间算法:算法运行时间是输入长度 的多项式,而非输入数值...
论文复现:通过双向transformer改进现实世界的密码猜测攻击
原文章链接:[Improving Real-world Password Guessing Attacks via Bi-directional Transformers](Improving Real-world Password Guessing Attacks via Bi-directional Transformers | USENIX) 概述 密码猜测攻击可视为对文本令牌概率分布的近似建模。自然语言处理(NLP)中的双向Transformer因其能利用双向上下文捕捉文本细微特征的能力,为密码猜测提供了新思路。本文提出了一种基于双向Transformer的密码猜测框架PassBERT,采用“预训练-微调”范式,首先生成预训练密码模型以学习通用密码分布,随后针对以下三类现实攻击场景设计微调方法: 条件密码猜测(CPG):基于已知的密码策略或用户行为规律生成猜测列表,利用规则缩小搜索范围。 场景:某公司密码策略要求“8位以上,包含大写字母和数字”。 攻击方法:生成 Pass1234、Hello2023...
GAN生成式对抗网络
什么是生成式 所有的网络功能可以分为两种,一种是判别式的,给定一个输入x,其会输出一个固定的y;另一种是生成式的,此时的输入除了x,还会有一个随机性的z: 在这里z的分布应当比较简单(可以用函数式来表示) 由于z随机,输出的y也具有随机性,可以看作是一个复杂的分布 我们把这样的网络称为Generator生成器。 这样的网络是为了解决这种情况:同样的输入应该有不同的输出,而这些不同的输出都是正确的。或者说这个模型是带点创造力在的。 Unconditional...
Transformer架构
Transformer与self-attention间的关系 Transformer 是一种基于 self-attention 机制的深度学习架构,主要用于自然语言处理任务。Transformer 的典型结构包括编码器(Encoder)和解码器(Decoder),其中每个编码器和解码器层都使用了 self-attention 机制。 使用 self-attention 的 Transformer...
Self-attention自注意力机制
什么是Self-attention Self-attention用于解决输入是许多向量的情况(向量个数不固定),即sequence。比如在NLP中,我们的输入是一个句子,把句子中的每一个单词看成一个向量,那么这个句子就是诸多向量的集合;并且由于句子长度会变化,这个集合的大小也会变。 这种模型输出可能有3种: 每个向量都对应一个输出,输入和输出的长度一致。每个输出可以是数值(Regression),可以是类别(Classification)。这种输出模式称为Sequence Labeling。 比如说NLP中的词性标注,每一个单词都对应一个词性就适用这种输出。 整个向量集合就一个输出。 比如去判断某句话是positive还是negative就适用这种输出。 输出数由模型自己决定,这种任务即seq2seq的任务。 比如翻译任务,输入和输出是不同的语言,就属于seq2seq的任务。 Self-attention怎么架构? 下面的介绍都以Sequence...
CNN卷积神经网络
CNN属于网络架构的一种,其一般被用于影像领域。 如何去做图像分类 图片在计算机中的存储通常是以3维张量来进行的。例如一张图片是100像素*100像素,每个像素由RGB3个channel组成(这个数值代表这个颜色的强度);那么要表示这张图片就需要3⋅100⋅1003\cdot100\cdot1003⋅100⋅100个数据。我们将这些数据做成应该向量作为神经网络的输入。 那么就会面临一个问题:例如第一层的神经元共1000个,输入向量为3⋅100⋅1003\cdot100\cdot1003⋅100⋅100个,那么光第一层所需要的weight数量就高达3⋅100⋅100⋅1000=3⋅1073\cdot100\cdot100\cdot1000=3\cdot10^73⋅100⋅100⋅1000=3⋅107个,这样会拖慢训练进度,还容易造成过拟合。 因此我们需要进行优化: 和人眼一样,图片分类时机器也只需要关注这张图片中最关键的部分就可以了。因此每个神经元的输入不需要是完整的图片。 我们为每个神经元分配一个Receptive field,该神经元只需要输入该Receptive...
Classification分类
这节的Classification分类,指的是函数的输出是从给定的几个选项中选取的。 如何做好机器学习? 首先需要判断在训练集上的Loss大小: 如果训练集Loss偏大,那就是Model Bias或者优化的问题 Model...
Regression回归分析
什么是Regression? 所谓的机器学习,其实就是一个找函数的过程。但是这个函数往往很复杂,靠人是找不出来的,要依靠机器采用某种方法才能找出这个函数。例如以下几种情况: 音频识别:输入为一段音频信号,输出为这段音频的内容是什么? 视频识别:输入为一张图片,输出为图片的内容是什么? 这节的Regression(回归分析),作为机器学习算法的一种,其面向于:函数的输出为一个数值(标量,scalar) 机器学习怎么玩? 进行机器学习一般的三步走: 定义带有未知数的函数(Model) 例如函数式y=wx+by=wx+by=wx+b,y是待预测的值,x是已知值(feature),w(weight)和b(bias)是未知数 定义损失函数L,L是关于w和b的函数(即输入是weight和bias)。L用于衡量当前设定的(weight,bias)这组数值好还是不好。L的计算来源于训练数据(Training Data)。 在进行预测时,我们把预测值记为yyy,把真实值记为y^\hat{y}y^(称为Label)。 我们可以用∣y−y^∣\lvert...
系统软件安全
...