WythePlus
这个作者很懒,什么都没留下…
展开
-
openSSL 3des的加密解密过程
从代码上看来,2DES的加密就是key3的值替换成key1,按照上面代码流程可以得出。24字节的密钥 分三组key,每组key都是8字节。可以看到加密顺序和解密顺序反正来的。3DES加密主要函数。原创 2024-04-10 09:54:33 · 21 阅读 · 0 评论 -
信息系统密码应用技术框架
本标准从信息系统的物理和环境安全、网络和通信安全、设备和计算安全、应用和数据安全四个层面提出密码应用技术要求,保障信息系统的实体身份真实性、重要数据的机密性和完整性、操作行为的不可否认性;并从信息系统的管理制度、人员管理、建设运行和应急处置四个方面提出密码应用管理要求,为信息系统提供管理方面的密码应用安全保障。原创 2023-09-12 11:45:47 · 347 阅读 · 0 评论 -
信息安全术语与定义
保证信息不被泄露给非授权实体的性质。原创 2023-08-24 15:26:17 · 92 阅读 · 0 评论 -
TLS源码与底层socket通讯分析
实际上他们调用代码都是一样的,handshake_func 为空时,需要对handshake_func 初始化,使它指向struct ssl_method_st 方法中的 s->method->ssl_accept。回调到statem.c的static SUB_STATE_RETURN write_state_machine(SSL *s)使用ctx上下文创建 SSL的连接对象,通常是一个SSL是表征一个安全连接连接进来的一个客户端,调用的tls1_new回调。底层的socket的实现回调。原创 2023-08-15 11:43:29 · 254 阅读 · 0 评论 -
SHA-256算法
SHA-256(Secure Hash Algorithm 256-bit)是一种加密算法,它是SHA-2(Secure Hash Algorithm 2)系列中的一员。SHA-256广泛用于密码学、数字签名、数据完整性校验等领域,被认为是一种安全可靠的散列函数。SHA-256算法具有以下特点:1)安全性:SHA-256被广泛认为是一种安全的散列函数。它提供了较高的抗碰撞性,即很难找到不同的输入数据生成相同的哈希值。SHA-256的安全性来自于其设计原理以及经过的广泛测试和分析。原创 2023-08-11 13:59:32 · 639 阅读 · 0 评论 -
openSSL中EVP接口
OpenSSL在日常开发者通常是以so的形式引入程序中,下面我们来跟踪一下EVP是如何把这些算法接口抽象统一实现的。ossl_init_add_all_ciphers作为静态方式加载,只加载一次把所有的cipher通过openssl_add_all_ciphers_int添加到改进程中。原创 2023-08-03 11:42:20 · 606 阅读 · 0 评论 -
AES的ECB加密模式
需要注意的是,ECB模式的安全性较弱,因为相同的明文块经过加密后会得到相同的密文块,这意味着如果攻击者获取到密文块,就可以根据相同的密文块反推出原始明文块,从而可能导致机密性的泄露。因此,ECB模式一般只用于加密数据块基本不重复,且较小的数据块进行加密操作,而对于较大的数据块或者需要较高的加密安全性的情况,通常会选择使用其他更安全的加密模式,例如CBC、CTR等模式。1. 将明文块划分为若干个固定大小的块,调整每个块的大小以确保与加密算法的块大小一致;2. 对每个块分别使用相同的密钥进行加密;原创 2023-06-26 20:06:49 · 886 阅读 · 0 评论 -
AES的CBC加密模式
AES算法的CBC(Cipher Block Chaining)模式是一种常见的加密模式,它对每个明文块进行加密处理时,还需要使用前一个密文块进行异或运算,以此增加加密算法的安全性。需要注意的是,在将密文块解密回明文块时,也需要使用前一个密文块来进行异或运算,因此在使用CBC模式进行加解密时,需要对加解密的顺序进行特殊的处理。3. 将C1'与下一个明文块进行异或运算,得到结果块C2,并重复第2、3步,直到对所有明文块都进行了加密处理;2. 使用密钥对C1进行加密,得到加密后的结果块C1';原创 2023-06-26 20:15:39 · 1530 阅读 · 0 评论 -
PINblock的格式与应用
描述:在联机交易中,POS 终端或 ATM 会读取用户输入的明文 PIN,并将其使用单倍长或双倍长加密算法转换为 PINBLOCK 格式,然后将 PINBLOCK 构建为交易数据的一部分,通过网络发送给发卡银行或支付网关进行验证和授权。需要注意的是,脱机交易的安全性取决于终端设备和银行卡的安全性措施,包括对终端进行合适的保护、加密算法的安全性以及卡片上保存的认证密钥的保护等。- 原理:在脱机交易中,银行卡的交易数据不需要实时通信和授权,而是在交易发生的地点(如 POS 终端)上完成交易验证和授权。原创 2023-07-26 14:36:10 · 439 阅读 · 0 评论 -
用openSSL实现TLS双向认证
TLS(传输层安全性)双向认证,也称为客户端认证或互相认证,是一种网络安全协议的扩展,用于建立在传输层上的安全连接。传统的TLS认证只需要服务器验证客户端的身份,而双向认证则要求客户端也验证服务器的身份。在TLS双向认证中,客户端和服务器都必须拥有数字证书。数字证书由可信的第三方证书颁发机构(CA)签发,用于证明实体(如服务器)的身份。以下是TLS双向认证的基本步骤:1. 服务器配置:服务器需要配置受信任的数字证书,该证书由CA签发。配置包括私钥和公钥。原创 2023-07-26 11:39:56 · 1085 阅读 · 2 评论 -
DSA算法
DSA(Digital Signature Algorithm,数字签名算法)是一种非对称加密算法,用于生成和验证数字签名。它是美国国家标准与技术研究所(NIST)于1994年发布的一种公钥密码体制。DSA算法的基本原理是基于数论中的离散对数问题。它利用了有限域上的运算和离散对数的难解性,实现了数字签名的生成、验证和认证。原创 2023-07-11 10:25:43 · 967 阅读 · 0 评论 -
OpenSSL对RSA密钥参数封装
1. BIGNUM *n:存储 RSA 的模数(modulus)。- 模数是两个大素数的乘积,决定了 RSA 的密钥空间。2. BIGNUM *e:存储 RSA 的公共指数(public exponent)。- 公共指数通常为固定值,用于加密操作。3. BIGNUM *d:存储 RSA 的私有指数(private exponent)。- 私有指数用于解密操作。4. BIGNUM *p:存储 RSA 的第一个大素数(prime1)。- 大素数 p 是用于计算 RSA 的私钥的一部分。原创 2023-07-07 11:53:15 · 255 阅读 · 0 评论 -
基于哈希函数的消息认证码HMAC
HMAC,全称为Hash-based Message Authentication Code(基于哈希函数的消息认证码),是一种用于验证消息完整性和认证的算法。HMAC结合了哈希函数(如MD5、SHA-1、SHA-256等)和密钥来生成一个固定长度的认证码。它的安全性基于哈希函数的性质和密钥的保密性。HMAC的关键特性是它不仅依赖于原始消息的内容,还依赖于密钥。因此,即使两个消息的内容相同,只要密钥不同,生成的认证码也会不同,从而增加了安全性。原创 2023-07-04 16:03:41 · 411 阅读 · 0 评论 -
散列函数应用
散列函数(哈希函数)是一种将输入数据(消息)转换为固定大小的输出(散列值)的算法。散列函数具有以下特点:1. 固定输出长度:散列函数生成的散列值具有固定的输出长度,不论输入数据的长度如何,散列值的长度始终保持不变。2. 高度离散性:散列函数应该尽可能地将不同的输入映射到不同的输出,且对于输入的微小变化,散列值应有较大的变化。3. 单向性:散列函数是单向的,从散列值推导原始输入数据应当非常困难,理想状态下应该是不可逆的。原创 2023-07-04 14:37:28 · 313 阅读 · 0 评论 -
Base64编码解码
Base64 是一种常用的编码方式,用于将二进制数据转换为可打印的 ASCII 字符串。它的主要特点如下:1. 字符集:Base64 使用了 64 个字符来表示数据,包括大小写字母(A-Z, a-z)、数字(0-9)以及两个特殊字符(+ 和 /)。2. 填充字符:Base64 编码后的字符串长度通常不会与原始数据长度完全对齐。为了保持长度整齐,Base64 在末尾添加一个或两个 `=` 号作为填充字符。3. 编码方式:Base64 编码将每 3 个字节作为一组,转换为 4 个 Base64 字符。原创 2023-07-04 12:15:21 · 3690 阅读 · 0 评论 -
ECDH的密钥交换算法
它基于椭圆曲线加密算法,使用离散对数问题的困难性来保证密钥交换的安全性。- 它的计算复杂度相对较低,使用椭圆曲线加密算法可以在相对较短的密钥长度下达到与传统非对称加密算法相当的安全性。公钥是私钥乘以基点得到的结果。4. 双方使用对方的公钥和自己的私钥计算一个共享密钥。计算方法是使用对方的公钥乘以自己的私钥得到的结果。- 它提供了一种安全的密钥交换机制,即使在公开信道上交换公钥也不会泄露私钥信息。由结果可以看出来,客户端和服务器派生的密钥都是一样的。1. 双方选择一个公开的椭圆曲线以及该曲线上的基点。原创 2023-07-04 11:16:19 · 663 阅读 · 0 评论 -
密钥或者消息的CMAC计算
1. 数据完整性保护:在网络通信过程中,使用CMAC保护数据的完整性,确保数据在传输过程中不被篡改或破坏。3. 密钥管理:在密钥的生成和分配过程中,使用CMAC来校验密钥的合法性,确保生成的密钥符合安全要求。4. 应用程序安全:在应用程序中使用CMAC对数据进行加密和认证处理,以保证数据的安全性和私密性。2. 消息认证:使用CMAC对消息进行认证,验证消息是否是由合法的发送者发送,并防止被篡改。总的来说,CMAC是一种非常实用的消息认证码,能够在多种应用中提供数据安全性和完整性的保护。原创 2023-06-27 09:22:19 · 350 阅读 · 0 评论 -
3DES的ECB加密模式
其中ECB模式是最简单的一种模式,它将数据分成若干个固定长度的块(通常是8个字节),然后对每个块独立进行加密和解密。ECB模式存在的主要问题是数据块的重复加密,同一个明文块使用相同的密钥加密后会得到相同的密文块,这样就有可能被攻击者利用,对数据造成破坏。3DES(Triple DES)算法是由DES算法演变而来的加密算法。3DES基于DES算法,通过增加密钥长度和多次迭代加密来提高安全性。3. 最后再使用第三个密钥再对解密后的数据进行DES加密。2. 然后使用第二个密钥对加密后的数据进行DES解密。原创 2023-06-26 20:02:20 · 448 阅读 · 0 评论 -
3DES的CBC加密模式
5. 对后续的块进行加密:使用密钥k1对明文第i块与前面的密文Ci-1异或后的结果进行DES加密,得到Ci;再使用密钥k3对Ci'进行DES加密,得到Ci''。6. 对加密结果进行CBC加密:将初始化向量IV与第1块密文C1''进行异或操作,得到Ci''的CBC初始化向量IVi,并对Ci''进行加密得到第i块密文柿Pi=Ci'' ⊕ IVi+1。4. 对明文第1块进行加密:使用密钥k1对明文第1块进行DES加密,得到C1;它使用三个56位的密钥进行加密,并使用加密向量以及块加密模式进行加密和解密过程。原创 2023-06-26 19:52:27 · 563 阅读 · 0 评论 -
OpenSSL对PEM证书解释
PEM是一种常见的证书编码方式,它使用base64编码将二进制的X.509格式证书进行编码,再使用ASCII字符加上起始和结束标记,即 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----,加入换行符等标记符号来标识证书数据。它是一个基于ASN.1数据格式的证书结构,在PEM格式下,通常以 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 对包含在中间的编码数据进行标识。原创 2023-06-26 19:43:12 · 1072 阅读 · 0 评论