基础知识 勒索病毒:它的特征即磁盘文件被加密,一旦完成勒索过程则无法恢复文件,因此这类病毒以预防为主,安装杀毒软件并做好主机防黑工作及时打补丁,对重要文件要及时隔离备份。...RC4:它是对称加密算法(加解密使用同一个密钥),它是可变密钥长度,面向字节操作的流密码。加解密过程都是按字节逐个处理的。...设明文是in、密文是out、密钥流是s,对于加密,out[n] = in[n] ^ s[n],对于解密,in[n] = out[n] ^ s[n]。...也就是说,明文、密文、密钥流的长度都相同,加密和解密的过程也完全相同 背景 通过在某网盘上看到提供很多可免费下载的外挂样本,就下载一个“穿越火线”的外挂样本玩玩,但是通过测试分析发现该外挂样本是一个披着羊皮的狼...该样本是中国版的勒索病毒竟然是以微信支付作为赎金方式,一旦点击启动将加密用户电脑内除特定格式外的所有文件及资料,加密后文件的后缀被修改为.SafeSound 功能分析 该样本执行后,会将.data区段中的勒索功能的硬编码
,它使用前一个密文块来生成密钥流,然后与当前明文块进行异或。...,它使用前一个输出块来生成密钥流,然后与当前明文块进行异或。...,它使用一个计数器的值来生成密钥流,然后与明文进行异或。...与RSA相比,ECC可以使用更短的密钥长度来提供相同级别的安全性,因此在资源受限的环境中具有优势。...与传统的DH相比,ECDH可以使用更短的密钥长度来提供相同级别的安全性。
密码学中,分组(block)密码的工作模式(mode of operation)允许使用同一个分组密码密钥对多于一块的数据进行加密,并保证其安全性。...通常而言,最后一块数据也需要使用合适填充方式将数据扩展到匹配密码块大小的长度。一种工作模式描述了加密每一数据块的过程,并常常使用基于一个通常称为初始化向量的附加输入值以进行随机化,以保证安全。...CBC 模式相比 ECB 有更高的保密性,但由于对每个数据块的加密依赖与前一个数据块的加密所以加密无法并行。与 ECB 一样在加密前需要对数据进行填充,不是很适合对流数据进行加密。...加密时,明文中的微小改变会导致其后的全部密文块发生改变,而在解密时,从两个邻接的密文块中即可得到一个明文块。...OFB 模式 OFB 模式(输出反馈:Output feedback)是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文
•这些操作包括S盒替代、线性变换、轮密钥的按位异或等。•这个过程在多轮中重复执行,通常为32轮。5.解密过程:•解密过程与加密过程类似,但轮密钥的顺序与加密过程相反,从最后一轮开始逐渐恢复明文。...•数字签名:SM9允许用户使用私钥对数据进行签名,验证签名时使用对应的公钥。•密钥协商:两方可以使用各自的私钥协商出一个共享密钥,用于后续的加密通信。...流密码算法用于生成伪随机密钥流,该密钥流然后与明文数据进行异或操作,从而实现数据的加密和解密。...2.流密码算法:祖冲之算法是一种流密码算法,它生成伪随机密钥流。这个密钥流与明文数据进行逐位异或操作,以实现数据的加密和解密。3.密钥:祖冲之算法使用一个64位的密钥,这个密钥是用于生成密钥流的种子。...5.逐位异或:生成的密钥流与明文数据逐位异或,以实现加密。在解密时,相同的密钥流再次与密文数据逐位异或,以还原原始明文。
GMR-2是一种应用于国际卫星电话的流密码,这种流密码所使用的密钥长度为64位。研究人员表示,他人是有可能利用一帧已知的密钥流来破解GMR-2密码的,但这将是一个非常耗时的过程。...因此,研究人员专门设计出了能够利用密钥流进行实时反转攻击的技术。...与之前的攻击方法不同的是,此次研究人员在破解GMR-2密码时使用的并非是明文攻击技术。研究人员表示,他们为了直接从输出密钥流中直接推算出加密密钥,他们专门对加密过程进行了逆向工程分析。...研究报告中写到:”我们的分析结果表明,我们所提出的攻击技术可以将64位加密密钥的穷举搜索空间降低至213位,其中一帧密钥流为15字节。与之前已知的攻击相比,这种反转攻击的效率更高。...从下表中我们可以看到,与动态猜测确定攻击和基于碰撞的攻击技术相比,我们所提出的新型反转攻击具有明显的优越性。在一个3.3GHz平台上,我们可以在0.02秒内破解出MGR-2密码。
点击确定,IDA会立即带我们跳转到使用该字符串的关键代码处。 这里可以看到一个典型的条件判断结构:一个代码块进行某些比较,然后根据结果,分别走向打印“密码正确”和“密码错误”的分支。...password: "); fflush(stdout); // 确保提示信息立即显示 // 从标准输入读取用户输入(原伪代码中的fgets+___acrt_iob_func...(0)) if (fgets(userInput, sizeof(userInput), stdin)) { // 移除输入末尾的换行符(fgets会保留换行符)...userInput[strcspn(userInput, "\n")] = '\0'; } // 验证密码(原伪代码中的硬编码字符串比较) constchar *correctPassword...\n"); } return0; } 从代码中,我们可以一目了然地看到,程序的核心逻辑就是使用strcmp函数,将用户的输入 (userInput) 与一个固定的字符串 "I
(详见附录A) 3.混淆(Obfuscation) 恶意软件中的所有字符串均使用AES128加密,加密密钥被硬编码在恶意软件中。...[default AES Key]@[Unique ID] 如果从C&C服务器返回一个与Cookie(Base64编码)中的“ 4位认证密钥”相同的值作为响应,则该恶意软件将发送以下信息。...在第二次通信中,恶意软件发送一个新的AES密钥,该密钥对随后的通信进行加密。 在第三次通讯时,将下载一个模块(Module)。以下是下载模块时来自C&C服务器的响应示例。...(详细信息请参阅附录) 3.混淆(Obfuscation) BLINDINGCAN中的某些代码部分使用RC4进行了混淆。下图是混淆代码的示例。RC4加密密钥在示例本身中进行了硬编码。...它有一个进程来将密钥流移动C00h。以下是用Python编写的RC4加密过程,它不适用于使用常规RC4的param3。 下图是从与C&C服务器通信开始到接收命令的通信流程。
我们使用airodump-ng监控了空气,找到了连接到无线网络的正常用户的 MAC 地址。之后我们可以使用macchanger工具来修改无线网卡的 MAC 地址,与客户端保持一致。...你可以看到,在连接到开放验证网络和连接到接入点时没有任何障碍。 3.4 共享密钥验证 共享密钥验证使用例如 WEP 的共享密钥来验证客户端。...他可以使用 XOR 操作来获取密钥流。密钥流可以用于加密任何由接入点发送的未来的 challenge,而不需要知道真实的密钥。 这种共享验证的常见形式就是 WEP,或者无线等效协议。...这个练习中,我们会了解如何嗅探空气来获取 challenge 或者加密后的 challenge,获取密钥流,使用它来验证接入点,而不需要共享密钥。...我们成功从共享验证交换中导出了密钥流,并且使用它来伪造接入点的验证。 试一试 – 填满接入点的表格 接入点拥有最大客户端数量,超过之后它们就会拒绝连接。
当密钥长度小于明文长度时,有几种常见的处理方法: 一次性密码本(OTP):密钥长度与明文长度相同,且只使用一次 重复密钥:密钥重复使用,直到覆盖整个明文 密钥扩展:从较短的密钥派生出与明文长度相同的密钥流...如果满足OTP的所有要求,那么无论攻击者有多少计算资源,都无法从密文中获取任何关于明文的信息。 具体来说,对于任何可能的明文,都存在一个密钥可以将其映射到任何可能的密文。...:当密钥长度小于数据长度时,密钥会被重复使用 字节操作:所有操作都在字节级别进行,适用于任何类型的数据 UTF-8编码:文本数据使用UTF-8编码转换为字节串 4.2 高级XOR加密实现 对于更复杂的XOR...,然后与明文进行XOR操作 ChaCha20:现代流密码,也使用XOR操作将密钥流与明文结合 Salsa20:ChaCha20的前身,同样使用XOR操作 哈希函数和MAC中的应用 XOR操作在哈希函数和消息认证码...6.1 现代加密算法中的XOR应用 XOR在流密码中的应用 流密码是一种使用伪随机密钥流与明文逐位XOR运算的加密方法。
ECB是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理。...Cipher-Block Chaining (CBC) 密码分组链模式 先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。...OFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的...将瞬时值与计数器连接起来,然后对此进行加密产生密钥流的一个密钥块,再进行XOR操作 。...------------------------------ 向包含未知字符串的明文中插入数据,其实也是枚举验算的过程 获取未知字符串的第一位 比输入name为111111111111,服务器生成未知字符串
随机的比特序列也称为密钥,密钥的长度需与明文等长。而解密时,则将密文与密钥再进行一次XOR运算,就可以得到明文了。...一轮的具体计算步骤如下: 将输入的数据等分为左右两部分; 将输入的右侧直接发送到输出的右侧; 将输入的右侧发送到轮函数; 轮函数根据右侧数据和子密钥,计算出一串看上去是随机的比特序列; 将上一步得到的比特序列与左侧数据进行...CFB模式中,由密码算法所生成的比特序列称为密钥流(key stream)。需要注意的是,CFB模式解密时,密码算法执行的是加密操作,因为密钥流是通过加密操作来生成的。 CFB模式无法抵御重放攻击。...OFB模式有个缺陷,如果对密钥流的一个分组进行加密后其结果碰巧和加密前是相同的,那么这一分组之后的密钥流就会变成同一值的不断反复。因此,一般不建议使用了,推荐用CTR模式代替。...那么,当某个发送端需要向某个接收端发送消息时,通信流程如下: 发送端向密钥分配中心发起希望与接收端通信的请求; 密钥分配中心随机生成一个会话密钥,该会话密钥是供发送端和接收端在本次通信中使用的临时密钥,
CFB(Cipher Feedback)模式:将前一密文块作为输入生成伪随机数流,然后与明文块异或得到密文块。...OFB(Output Feedback)模式:与 CFB 类似,但它将上一次的输出反馈作为下一次加密输入,而不是使用密文块。...AES-CTR 模式 CTR 模式是一种流模式加密,它将计数器作为输入,加密后生成密钥流,再与明文异或得到密文。...System.out.println("加密后的密文:" + Base64.getEncoder().encodeToString(encrypted)); } } CTR 模式的优点在于,它不需要填充,因为每个明文字节都直接与伪随机密钥流异或...四、总结 在 Java 中,使用 AES 加密时,需要考虑以下几点: 分组模式:不同的分组模式决定了 AES 的安全性和效率。
密钥生成 如何安全地生成密钥。即如何生成可信任的密钥,保证用户得到的密钥是安全的, 生成密钥的机器或程序是可信的。 如何生成安全的密钥。...输出反馈模式使用密文序列跟明文异或产生明文,而密文序列由密 钥本身产生,这肯定具有周期性,在使用相同密钥加密的数据到达一定数量时,会产生重 复,这就会大大降低算法的安全性。...只要提前准备好所需的密钥流,则在实际从明文生成密文的过程中,就完全不需要动用密码算法了。只要将明文与密钥流进行XOR就可以了。和AES等密码算法相比,XOR运算的速度是非常快的。...其他分组加密模式 计数器模式: 在输出反馈模式中,移位寄存器的输入是从加密输出分组中最左端的值取出的。...分组链接模式 分组链接模式将分组密码算法的输入与前面所有密文分组的异或值相异或。分组链接模式也需要一个初始向量,具有密文错误扩散的性质。
缺点: 加密过程是串行的,无法并行处理,且对数据传输中的错误敏感,一个密文分组出错会影响到后续分组的解密 3.密码反馈模式(CFB) 工作原理: 将前一个密文分组作为输入,通过密钥生成一个与明文分组等长的反馈值...解密过程与加密类似,只是将密文分组作为输入来生成反馈值,再与密文分组异或得到明文分组。 CFB加密时,加密算法的输入是64比特移位寄存器,其初值为某个初始向量IV。...缺点: 与 CBC 模式一样,加密过程是串行的,无法并行处理,并且对错误敏感。...解密时使用相同的密钥和初始向量生成相同的输出值,再与密文分组异或得到明文分组。...5.计数器模式(CTR) 工作原理: 使用一个计数器,每次加密时将计数器的值作为输入,通过密钥生成一个与明文分组等长的密钥流,然后将密钥流与明文分组进行异或得到密文分组。计数器的值在每次加密后递增。
2.1.1 函数简介与原型 功能:从指定文件流读取字符串,最多读取“指定长度-1”个字符(预留1字节存储'\0'),遇到换行符或EOF时停止,自动添加字符串结束符;若输入长度超过限制,会清空缓冲区并返回错误...添加字符串结束符,完成读取 *ptr = '\0'; return 0; } 2.1.3 使用场景与注意事项 使用场景: 用户交互输入:从键盘读取含空格的字符串(如用户名、地址、备注信息...注意事项: 参数校验不可省:必须传入正确的numElements(建议用sizeof(str)获取数组大小),若传入硬编码值(如100),需确保与数组实际大小一致。...2.2.1 函数简介与原型 功能:从标准输入(仅stdin,不支持其他流)读取字符串,最多读取“指定长度-1”个字符,遇到换行符或EOF时停止,自动丢弃换行符并添加'\0';输入超限时清空缓冲区并返回错误...2.2.2 关键特性与争议点 gets_s的核心改进是增加了长度限制,但与fgets_s相比存在明显局限性,导致其争议较大: 仅支持标准输入:无法读取文件等其他流,灵活性远低于fgets_s。
1.2 安全可靠的替代者:fgets函数 fgets函数是C标准库提供的安全输入函数,通过限制读取长度解决了缓冲区溢出问题,同时支持从任意文件流读取,是字符串输入的首选方案。...使用场景: 标准输入安全读取:需要从键盘读取用户输入的字符串,尤其是可能包含空格的长字符串(如用户名、备注信息)。...文件逐行读取:读取文本文件时,逐行获取文件内容(如配置文件解析、日志读取)。 网络流读取:在网络编程中,从socket关联的文件流读取文本数据(需结合流的特性处理)。...n的取值:必须设为目标数组的大小(如sizeof(buffer)),避免硬编码(如写死100)导致后续数组大小修改时出现遗漏。...1.3.1 函数简介与原型(聚焦%s) 功能:通过%s格式符从标准输入读取字符串,读取规则为:跳过开头的空白字符(空格、制表符、换行符),然后读取非空白字符,直到再次遇到空白字符或EOF时停止,自动在读取的字符序列末尾添加
所谓数据加密,就是将一段数据处理成无规则的数据,除非有关键的密钥,否则谁也无法得知无规则数据的真实含义。...基本上,对一大块输入数据进行加密,过程是这样的:初始化加密算法状态(使用加密密钥+随机盐),对数据的第一部分进行加密,然后加密状态转换(使用加密密钥和其他参数),对下一部分进行加密,然后再次转换加密状态...在处理迭代之前,先生成每个密钥流,有n个数据块,就有n个密钥流。根据第n个密钥流可以得到第n+1个密钥流,最简单的方式就是密钥流每次递增加一。...第一个密钥流的获取方式也很简单,就是生成一个随机值(Nonce),Nonce和IV可以等同理解,一个不容易推导出来的随机值。...GCM模式加密 GCM 模式使用一个计数器,该计数器针对每个块增加,并在每个已处理的块之后计算消息身份验证标签(MAC代码)。最终的 MAC 值是从最后一个块计算得出的。
稍后会讲),任何人,包括应用自己甚至Android系统都无法获取私钥,除非用户使用指纹授权才能使用,签名或者加密传入的数据,然后输出密文。...由于没有一个可信的信任根,导致密钥很容易被替换; 无法从认证结果中获取到底是哪一个用户授权本次认证请求; 同时,我们意识到,在生物认证领域这个千亿级市场中,缺乏一个统一、安全、易接入的认证标准,微信有这样的需求...准备应用密钥(ASK) 准备应用密钥流程示意图 应用第一次启动时,或者在第一次使用业务之前,请求生成设备根密钥; 密钥生成之后,私钥在被TEE保护,加密存储; 公钥和设备ID等相关信息,在TEE内直接被设备密钥私钥签名之后...准备业务密钥(Auth Key) 准备业务密钥流程示意图 应用在开通业务时(如指纹支付),请求生成业务密钥。同时,在生成时声明该密钥除非用户指纹授权,否则私钥不可使用。...认证流程 认证流程示意图 客户端请求后台,获取挑战因子; 获取挑战因子之后,将挑战因子送往TEE,准备签名结构体,准备签名; 应用请求用户指纹授权; 用户指纹授权后,直接将本次认证使用指纹在本设备内的索引传输给密钥模块
稍后会讲),任何人,包括应用自己甚至Android系统都无法获取私钥,除非用户使用指纹授权才能使用,签名或者加密传入的数据,然后输出密文。...由于没有一个可信的信任根,导致密钥很容易被替换; 无法从认证结果中获取到底是哪一个用户授权本次认证请求; 同时,我们意识到,在生物认证领域这个千亿级市场中,缺乏一个统一、安全、易接入的认证标准,微信有这样的需求...准备应用密钥流程示意图 应用第一次启动时,或者在第一次使用业务之前,请求生成设备根密钥; 密钥生成之后,私钥在被TEE保护,加密存储; 公钥和设备ID等相关信息,在TEE内直接被设备密钥私钥签名之后,返回给应用...准备业务密钥流程示意图 应用在开通业务时(如指纹支付),请求生成业务密钥。同时,在生成时声明该密钥除非用户指纹授权,否则私钥不可使用。...认证流程示意图 客户端请求后台,获取挑战因子; 获取挑战因子之后,将挑战因子送往TEE,准备签名结构体,准备签名; 应用请求用户指纹授权; 用户指纹授权后,直接将本次认证使用指纹在本设备内的索引传输给密钥模块
它从 RC4 的当前内部状态生成单个字节的密钥流,然后更新内部状态。最初,N=255,但该算法可以使用不同的 N 值。...注意:WPA/WPA2 MGT(管理)表示密码不是预加密密钥,而是使用身份验证服务,通常是验证 Wi-Fi 网络客户端的用户名/密码的 RADIUS 服务。MGT 最常与企业/专业环境相关联。...该漏洞允许攻击者获取用于特定 SSID 的 PSK。 该攻击是在寻找攻击新 WPA3 安全标准的新方法时意外发现的。...不再重传 EAPOL 帧(这可能导致无法破解的结果)和普通用户发送的无效密码。 当普通用户或 AP 距离攻击者太远时,不会丢失 EAPOL 帧。...WPS攻击 WPS 于 2006 年推出,该协议的目标是允许对无线安全知之甚少的家庭用户设置 Wi-Fi 保护访问,以及无需输入长密码即可轻松将新设备添加到现有网络. 2011 年 12 月,一个漏洞被发现影响了具有