自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 [Kerberos] 简化的加密和校验和总则

当 E 的 block size 小于 random-to-key 要求的输入长度时, 需要重复调用 E(将前一次的结果作为下一次的输入), 直到输出长度达到 random-to-key 要求的输入长度。这是底层加密和解密算法所使用分组加密算法的块大小, 用于密钥派生以及消息 confounder 和初始向量的大小。这表示的在传输的消息中使用的 HMAC 函数输出的前导字符串的长度。对于传统的带有填充的 CBC 模式, 它的值是底层加密算法的块大小。和 后缀必要的填充以便消息长度是消息块大小的整数倍。

2025-04-01 23:18:47 766

原创 [Kerberos] 加密和校验和总则

由于这样做意味着了解特定的加密系统,因此生成非默认参数值应该是一种不常见的操作,并且正常的 Kerberos 应用程序应该能够将此参数块视为 KDC 提供的不透明对象或默认为某些特定于机制的常量值。这个函数接收一个 specific-key, cipher state 和一个不为空的密文, 验证消息完整性, 如果完整性检查正常, 则输出一个明文和一个新的 cipher state.函数必须接收任意长度的输入。不需要规定如何编码无效的 key, 并且所有的生成 key 的规则都应该避免生成无效的 key。

2025-03-26 11:30:06 806

原创 [Kerberos] Windows setspn 命令

基于 Microsoft Windows 的计算机使用服务主体名称 (SPN) 时不区分大小写。但是在其他 Kerberos 环境下(比如 linux), SPN 是大小写敏感的, 这里需要注意。对 Active Directory 服务账号的 SPN 进行基本的管理操作(读取, 删除,修改等)。如果你看到的服务器 SPN 显示的名称似乎不正确;同名的主机存在, 就当做主机名来用, 否则,当作用户名来用。是计算机名, 新的 SPN 将会被添加给它。例子1: 枚举当前注册的SPN的列表。

2025-01-09 21:55:48 881

原创 [TLS] 使用 OpenSSL 命令行测试 TLS13 0-RTT

要求 OpenSSL 的版本至少是 1.1.1 以及之后的版本。

2024-12-03 10:51:46 501

原创 [TLS] 0-RTT Data

这是 TLS1.3 新加的一个特性.: 可以用于快速的发送一部分数据” 的含义:通常的 TLS 连接, 只有 TLS 握手成功之后, 才能开始发送应用层数据。但是当使用 0-RTT 特性发送消息时, 不需要等待握手结束,便可以提交发送一小部分数据。因为不需要等待 TLS 握手流程进行完毕,因此比较快。代价是牺牲部分 TLS 的安全性。

2024-11-26 16:54:51 674

原创 [TLS] TLS13 Session resumption

正如前面所说, Session resumption 可以加速握手流程,这里我们先看看具体是如何做到加速的?完整握手流程{Finished}Session resumption 的握手流程{Finished}我们可以看到,在 Session Resumption 的握手流程中,都不用再次发送了。这就很明显了,更少的数据交换,那就需要更少的时间啦。

2024-11-19 12:22:45 1010

原创 [TLS] 基于 SessionID 的 Session Resumption

在 TLS1.3 之前的 TLS 版本中, 可以通过 Session ID 字段来完成 Session Resumption.那么具体实现如何呢,我们一起来看看。

2024-11-15 09:56:15 574

原创 [QUIC] 打包和可靠性

一个 QUIC 包中可以包含一到多个 QUIC 帧.发送方可以通过在一个 QUIC 包中包含尽可能多的 QUIC 帧来最小化每个 QUIC 包的带宽和计算成本。疯转每个 QUIC 包都会产生额外的数据: 包括加密的 padding,hmac, 以及 UDP 包头和底层封装所产生的额外数据等。减少 QUIC 包的数量, 便可以减少额外数据的量。主要是来自加密解密的计算开销, 以及丢包重传等。同一个 QUIC 链接上的多个流共享这个 QUIC 链接,每个流的数据放在STREAM帧上, 每个流的STREAM。

2024-11-14 10:22:11 594

原创 [QUIC] Packet Number 的编解码

从这里开始,我们将简称为 PN.QUIC 中 PN 的范围是:0-2^64-1. 但是在网络上传输时, 我们仅仅使用1-4字节来编码 PN 的值。如何做到呢?秘诀是只编码 PN 的较低有效位(具体使用多少位, 下边我们来说)。这篇文章, 我们来说说 QUIC 时如何编码解码 PN 的。

2024-11-11 09:38:38 1212

原创 [QUIC] QUIC Frames

当发送方想要在一个流上面发送更多的数据,但是被流级别的流量控制所限制而不能发送时, 需要发送这个帧给接收方,用以通知对方及时更新流量控制窗口。当发送方想要发送更多的数据,但是被链接级别的流量控制所限制而不能发送时, 需要发送这个帧给接收方,用以通知对方及时更新流量控制窗口。当一个节点想要在当前链接上创建一个新的流,但是由于最大流数量的限制, 而不能创建时, 应该发送这个帧给对方, 通知对方自己被限制了。用于通知发送方,按照上层应用的要求,收到的数据已经被丢弃,并且要求对方停止在当前流上发送数据。

2024-11-06 10:57:43 965

原创 [QUIC] QUIC 包格式

我们前面说过, Version Negotiation 包是版本无关的, 这里把 Version 字段设置为 0, 只是为了表明它是一个 Version Negotiation 包。因为这里使用的 Key 相关的参数都是公开的, 攻击者也可以获取到相应的 Initial Key。: 接下来的 4 比特的含义与特定的包类型相关,后边详细描述. (Mask: 0x0f): 包中其余部分是一组 32 比特的版本号,表示服务器端支持的版本号。相比于短头包, 长头包包含了更多的信息,但是包占用的带宽也更多。

2024-11-06 10:56:26 824

原创 [QUIC] 版本协商

QUIC 版本协商的工作原理

2024-11-05 09:25:25 833

原创 删除 git submodule

但是,还有一个小问题:上面命令只是将 submodule 的代码目录删除了。

2024-11-03 23:52:31 1029

原创 [QUIC] QUIC Version 2

QUIC 版本2

2024-11-02 22:02:47 740

原创 [QUIC] Packets 和 Frames 概述

QUIC 包和帧概述

2024-10-29 17:00:27 1366

原创 [QUIC] 流量控制

流量控制也是必须要有的。它可以防止发送方发送过快以至接收方缓存过多数据,或者恶意的发送方通过发送大量数据来消耗接收方的内存。QUIC 会限制在一个流上能发送的最多数据量和在一个链接上的所有流最多发送的总数据量。同时, 还会限制最多可以创建多少个流。

2024-10-28 14:32:38 463

原创 [QUIC] Receiving Stream States

介绍 QUIC 接收方状态机

2024-10-24 17:49:36 532

原创 [QUIC] Sending Stream States

介绍 QUIC 流发送方状态机

2024-10-24 17:46:16 402

原创 MQTT: Packet Identifier

对于 QoS 是 0 的 PUBLISH 包,不能携带 Packet Id。客户端在接受的一个带有 Packet Id 的包的 “ACK” 响应之后,可以重用当前 Packet Id。当客户端重新发送一个包的时候,必须保证这个包和之前发送时候使用的 Packet Id 相同。客户端每次发送一个新的包的时候,必须给这个包设置一个从未使用过的 Packet Id.使用 Packet Id 之后,可以并行的发送多个消息,然后等该他们对应的响应。服务器和客户端在选择 Packet Id 时,是相互独立的。

2024-09-02 22:02:50 639

原创 MQTT: PUBLISH

当客户端或者服务器第一次尝试发送一个 PUBLISH 消息的时候,DUP 应该未设置为 0。如果 DUP 为 1, 说明服务器或者客户端正在尝试重新传输一个之前已经发送过的 PUBLISH 消息。对于 QoS 0 的消息, DUP 应该总是为 0.对于服务器端来说,接收到的 PUBLISH 中的消息的 DUP 值不影响服务器在分发这个消息到订阅者时的 PUBLISH 消息中的 DUP 的值,它们之间没有必然联系。是否是 DUP,完全由当前将被发送的 PUBLISH 消息是否是一个重传的消息决定。

2024-09-02 22:02:00 711

原创 MQTT: Will Message

Will 消息需要被服务器保存在服务器端,和当前网络连接关联。Will 消息必须在后续网络连接断开之后被分发出去(Publish), 除非服务器收到了来自客户端的 Disconnect 包。当客户端主动的通过发送 DISCONNECT 断开了网络连接的情况下, Will 消息是不应该被服务器分发给订阅者的。如下情况下 Will 消息需要从 Session 中移除;在需要的时候,服务器端应该的分发 Will 消息。

2024-09-02 22:01:09 608

原创 MQTT: Topic Names and Topic Filters

Topic Name 和 Topic Filter 的区别就是 Topic Name 不能包含通配符,而 Topic Filter 可以包含通配符。Topic Name 标识一个具体的主题,而 Topic Filter 可以标识一个或者一组主题。

2024-09-02 22:00:14 952

原创 MQTT: Keep Alive

如果 Keep Alive 的值不为零,但是在1.5倍的约定时间间隔后,服务器没有收到来自客户端的控制包(包括 PINGREQ), 服务器端应该关闭与客户端的网络连接,并且把它当作一个网络错误。如果在此时间间隔内,没有其他的控制包需要发送给服务器端,客户端可以发送 PINGREQ 包。如果客户端发送了 PINGREQ 消息,但是在一定时间之后,没有收到来自服务器端的 PINGRESP 消息,客户端应该关闭当前网络连接。这个值规定了客户端从发送上一个控制包之后,到发送下一个控制包之间最大的时间间隔。

2024-09-02 21:59:08 818

原创 MQTT: Client Identifier

服务器端也可以支持 ClientId 是空字符串的情况。但是这种情况应该被特殊处理,服务器需要为这个 ClientId 生成一个唯一的不为空的 ClientId,然后像处理 ClientId 不为空的情况一下来处理当前 CONNECT 包。每个连接到服务器的 MQTT Client 必须设置一个唯一的 ClientId。服务器也可以支持长度大于 23 的 ClientId,也可以支持在 ClientId 中包含其他的字符。ClientId 是一个 1-23个字节的 UTF8 编码的字符串。

2024-09-02 21:58:11 999

原创 MQTT: Clean Session Flag

控制 Session 的状态. (Session State)Session State 用户确保在客户端和服务器之间的多个连接中可靠的传输消息。

2024-09-02 21:55:49 527

原创 X509 证书:一个 CRL 和 OCSP中均已经被吊销的过期证书示例

下载地址:https://www.digicert.com/kb/digicert-root-certificates.htm。

2024-08-28 15:18:19 672

原创 X509 证书:一个使用 High-tag-number form 编码的 Tag 示例证书

其中部分节点的 Tag 值超过了 30,使用的 High-tag-number form 编码, 比较少见。

2024-08-28 15:17:26 261

原创 在 C 语言中使用 printf 输出彩色文本

Linux 平台可以使用。

2024-08-02 17:43:48 313

原创 TLS: ECDH 算法基础

ECDH 算法原理讲解

2024-07-25 14:39:03 769

原创 TLS: PRF

TLS 中 PRF 是什么, 怎么工作的?

2024-07-23 09:21:03 456

原创 Kerberos: Realm 和 Principal Names

Kerberos Realm 和 Principal Name 基本知识

2024-07-17 21:39:36 586

原创 ASN.1 签名结构

当使用 RSASSA-PSS 作为 Algorithmidentifier 时, parameter 字段的结构应该为 RSASSA-PSS-Params.对于 RSA 类型来说, SignatureValue 结构的内容就是 RSA 签名的内容, 编码为 BitString 即可。常见算法有: 1.2.840.10040.4.3 dsaWithSha1。它的结构和普通的 RSA 签名结构相同。省略掉 parameters 字段。省略掉 parameters 字段。

2024-05-11 12:22:55 664

原创 HTTP Digest Auth

相比于 Basic,Digest 不需要在网络上传输用户的密码。但是它依然不是一个身份验证的完美方案,它没有提供认证消息内容加密的机制。这个协议的目的是创建一个简单的认证方法,避免 Basic 的严重缺陷。

2024-04-22 09:07:06 1421

原创 HTTP Basic Auth

注意: 如果你在实际项目中使用 Basic 授权,请不要使用 http,使用 https.因为 Basic 认证需要在网络上明文传输用户名和密码,如果不使用 https 协议,你的密码将会泄露。Basic 认证直接校验客户端的用户名和密码。

2024-04-22 09:01:50 531

原创 TLS/DTLS 使用 Raw Public Key

通常情况下, TLS 握手过程中使用 PKIX certificate, 通过校验这些证书是否合法来确保 TLS 通信的安全。但是,在一些比较小的场景中,服务器客户端都使用自签名的证书,然后这些证书通过其他方式分发给需要通信的各个节点。在这种情况下,证书校验就退化为仅仅比较证书的二进制内容是否相等了,其他的校验都将不再需要。TLS 握手过程中交换的证书信息将会很小,减少握手过程所需要交换的数据量处理证书的代码将会很简单。通常的 TLS 实现中,处理证书将会是很大一个的功能模块。

2024-04-15 16:34:31 756

翻译 [Windows] 基于 Overlapped 的命名管道 Server 端示例

原文排版比较乱, 整理一下放在这里以供大家参考:)

2024-02-20 23:52:13 103

原创 [Windows Shell] 获取 Windows File Explorer 当前打开的目录

Windows Shell 方式获取 File Explorer 当前打开的目录

2024-02-08 22:19:12 229

原创 TLS: DH Key Exchange

DH Key 交换算法原理以及在 TLS 中的引用

2023-11-14 17:48:48 166

原创 TLS 版本协商

TLS 版本协商的工作流程

2023-11-09 23:22:04 944

原创 TLS 安全重协商扩展

TLS 安全重协商扩展

2023-11-07 20:42:30 1986

Krb5dissect

krb5解剖 ------------ Krb5dissect 是一个从 Kerberos ccache 中提取信息的工具凭据(例如 /tmp/krb5cc_$UID)或 Kerberos keytab 凭据(例如,/etc/krb5.keytab)。 ccache.txt 中描述了 ccache 格式。 ccache.h 和 ccache.c 实现是为 Shishi 制作并使用的,请参见 <http://josefsson.org/shishi/>。 keytab 格式在 keytab.txt 中描述。 要构建 krb5dissect,您需要 gnulib、gengetopt、help2man 和最近的 autoconf、automake 和 libtool 的版本。

2025-02-14

S3 Explorer: Windows 上 S3 管理工具

Windows 上好用的 S3 管理工具 - 支持连接 AmasonS3, Aliyun OSS, MINIO 等 - S3 文件上传下载 - 大文件分块上传,分块下载 - 占用空间仅 5MB - 不吃内存,不卡磁盘 - 类似 S3 Browser 的纯国产工具

2024-05-22

windows internal 7th part 2

Understand the Windows system architecture and its general components Explore internal data structures using tools like the kernel debugger Understand how Windows uses processes for management and isolation Understand and view thread scheduling and how CPU resources are managed Dig into the Windows security model including recent advances in security mitigations Understand how Windows manages virtual and physical memory Understand how the I/O system manages physical devices and device drivers

2024-04-28

Windows internal 7th part 1

Understand the Windows system architecture and its general components Explore internal data structures using tools like the kernel debugger Understand how Windows uses processes for management and isolation Understand and view thread scheduling and how CPU resources are managed Dig into the Windows security model including recent advances in security mitigations Understand how Windows manages virtual and physical memory Understand how the I/O system manages physical devices and device drivers

2024-04-28

Windows Internal 6th Part 1

Understand the Windows system architecture and its general components Explore internal data structures using tools like the kernel debugger Understand how Windows uses processes for management and isolation Understand and view thread scheduling and how CPU resources are managed Dig into the Windows security model including recent advances in security mitigations Understand how Windows manages virtual and physical memory Understand how the I/O system manages physical devices and device drivers

2024-04-28

Windows x64 OpenSSL release

Windows 10 x64 上编译的 OpenSSL 库, 包含: - Release 版本和 Debug 版本。 - 静态库和动态库 - 仅仅有 Windows 64 位版本

2023-11-28

Windows dumpbin GUI 小工具

这是一个封装了 windows dumpbin.exe 的 GUI 工具,用以辅助程序员可以在 GUI 上调用 dumpbin 来查看 dll, exe, lib 的相关信息,包括导入符号,导出符号等相关 PE 信息。

2023-11-23

FileInfo.exe 用于获取 Windows 文件的详细信息(包括 COM 信息以及不能通过文件浏览器查看的属性)

主要用户平时 Windows 文件系统相关的开发过程中,用以查看无法使用 File Explorer查看的文件信息。

2023-11-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除