avatar
Articles
63
Tags
47
Categories
16

梦之痕

梦之痕

基于 Tongsuo(铜锁)实现国密通信
Created2023-12-14|信息安全
1 Tongsuo(铜锁)的编译12345git clone https://github.com/Tongsuo-Project/Tongsuo.gitcd Tongsuo./config --prefix=/opt/tongsuo enable-ntls no-sharedmake -jsudo make install 2 生成服务端测试证书 生成一个 EC 密钥对(私钥和公钥),使用 SM2 曲线参数,保存私钥为 server_sign.key 文件: 1openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:sm2 -out server_sign.key 使用私钥生成一个证书签名请求(CSR),并将其保存为 server_sign.csr 文件。该请求使用 SM3 散列算法,并且采用给定的主题信息: 1openssl req -config $CONF_DIR/subca.cnf -key server_sign.key -new -out server_sign.csr -sm3 -nodes -subj ...
国密介绍
Created2023-12-11|信息安全
1 简介铜锁/Tongsuo是一个提供现代密码学算法和安全通信协议的开源基础密码库,为存储、网络、密钥管理、隐私计算等诸多业务场景提供底层的密码学基础能力,实现数据在传输、使用、存储等过程中的私密性、完整性和可认证性,为数据生命周期中的隐私和安全提供保护能力。 铜锁应用场景: 存储加密 网络传输:支持 TLS 、QUIC 、RFC8998、TLCP安全传输协议 密码合规 密钥管理 隐私计算:支持同态加密、零知识证明等算法 铜锁与OpenSSL对比: 2 国密算法介绍国密常见的算法有 SM2 、SM3、SM4、SM9,具体分类如下: 对称加密算法: SM1算法:对称加密算法,用于替代国际标准的DES算法。 SM4算法:对称分组密码算法,被用于替代国际标准的AES算法。 非对称加密算法: SM2算法:非对称加密算法,用于数字签名、密钥协商等。 SM9算法:基于椭圆曲线密码体制的身份认证密码学算法。 哈希算法: SM3算法:密码哈希函数,用于替代MD5、SHA-1等哈希算法。 2.1 SM4 算法2.1.1 简介SM4是对称算法,与国际上的算法 如:AES 对 ...
Nginx支持国密实践
Created2023-12-03|信息安全
1 简介我国密码行业中有两个主要的通信协议相关的技术标准: 《信息安全技术 传输层密码协议(TLCP)》:即GB/T 38636-2020 《SSL VPN 技术规范》:即GM/T 0024-2014 上述协议关联标准:如数字证书标准GB/T 20518, SM2密码算法标准GB/T 35275等 《SSL VPN技术规范》作为行业标准,部分内容已上升为《信息安全技术 传输层密码协议(TLCP)》国密标准。 国密TLS,又称GMTLS1.1,GMTLS1.1中的1.1代表国密TLS的版本号: _0x0101_。众所周知,目前TLS协议支持的版本: 1234VersionTLS10 = 0x0301VersionTLS11 = 0x0302VersionTLS12 = 0x0303VersionTLS13 = 0x0304 目前主流的TLS软件程序实现中,通信实体在建立TLS连接时,会优先协商使用最大版本号TLS协议 _(版本号越大意味着安全性越高、性能越好)_,因此VersionGMSSL = 0x0101 版本号的设定增加了软件支持的复杂度,这也是阻碍GMTLS1.1广泛应 ...
OpenResty 性能优化
Created2023-11-21|后端&架构
1 性能下降10倍的真凶:阻塞函数OpenResty 之所以可以保持很高的性能,简单来说,是因为它借用了 Nginx 的事件处理和 Lua 的协程机制,所以: 在遇到网络 I/O 等需要等待返回才能继续的操作时,就会先调用 Lua 协程的 yield 把自己挂起,然后在 Nginx 中注册回调; 在 I/O 操作完成(也可能是超时或者出错)后,由 Nginx 回调 resume,来唤醒 Lua 协程。 这样的流程,保证了 OpenResty 可以一直高效地使用 CPU 资源,来处理所有的请求。在这个处理流程中,如果没有使用 cosocket 这种非阻塞的方式,而是用阻塞的函数来处理 I/O,那么 LuaJIT 就不会把控制权交给 Nginx 的事件循环。这就会导致,其他的请求要一直排队等待阻塞的事件处理完,才会得到响应。 下面,我再来介绍几个常见的坑,也就是一些经常会被误用的阻塞函数; 1.1 执行外部命令在业务中通常可以执行一些外部的命令和工具,来辅助完成一些操作。比如杀掉某个进程: 1os.execute("kill -HUP " ...
OpenResty API篇
Created2023-11-21|后端&架构
2 OpenResty开发平台2.1.1 协程和事件驱动在 OpenResty 层面,Lua 的协程会与 NGINX 的事件机制相互配合。如果 Lua 代码中出现类似查询 MySQL 数据库这样的 I/O 操作,就会先调用 Lua 协程的 yield 把自己挂起,然后在 NGINX 中注册回调;在 I/O 操作完成(也可能是超时或者出错)后,再由 NGINX 回调 resume 来唤醒 Lua 协程。这样就完成了 Lua 协程和 NGINX 事件驱动的配合,避免在 Lua 代码中写回调。我们可以来看下面这张图,描述了这整个流程。其中,lua_yield 和 lua_resume 都属于 Lua 提供的 lua_CFunction。 下面是 ngx.sleep 的一段源码,可以帮你更清晰理解这一点。 这段代码位于 ngx_http_lua_sleep.c 中,你可以在 lua-nginx-module 项目的 src 目录中找到它。在ngx_http_lua_sleep.c 中,我们可以看到 sleep 函数的具体实现。你需要先通过 C 函数 ngx_http_lua ...
OpenResty 基础篇
Created2023-11-21|后端&架构
0 参考资料 nginx-lua-module 中文版 nginx-lua-module 原版 API网关: KONG基于nginx+OpenResty Envoy APISIX 0.1 课程目录 1 入门篇1.1 初探OpenRestyOpenResty的三大特性: 详尽的文档和测试用例 同步非阻塞 动态 传统的Web服务器,比如NGINX,如果发生任何的变动,都需要去修改磁盘上的配置文件,然后重新加载才能生效,这是因为没有提供API,来控制运行时的行为。但OpenResty可以使用脚本语言lua来控制逻辑的,动态时Lua天生的优势。 1.2 第一个程序 下边通过使用Lua语言,使用OpenResty启动服务,然后响应打印出“hello world” 安装OpenResty 可以取官网下载源码进行编译安装(enter link description here) 2. 创建工作目录 创建工作目录,然后目录下创建日志和配置文件保存地方 123mkdir geektimecd geektimemkdir logs/ conf/ 编写nginx.conf 下边编写一个 ...
Go--基础篇
Created2023-11-20|Go & Python
0 参考资料GO开源项目收集:https://github.com/avelino/awesome-go 01 第一章 Go语言简介1.1 工作区和GOPATH工作区是放置Go源码文件的目录工作区下边有pkg、src、bin三个目录 pkg目录 用于存放归档文件(名称以.a为后缀的文件),所有归档文件都会被存放到该目录下的平台相关目录中,同样以代码包为组织形式 bin目录 用于存放当前工作区中的Go程序的可执行文件 当环境变量GOBIN已有效设置时,该目录会变的无意义 当GOPATH的值中包含多个工作区的路径时,必须设置GOBIN,否则无法成功安装Go程序的可执行文件 1.2 代码包的导入 本地化导入 123import . "strings"HasPrefix("abc", "a") //导入后使用函数不需要加包名 1.3 包管理1.3.1 Go的依赖管理 1.3.2 go mod12345678go mod init mod名称go build 源码文件go mod download 下载依赖包go mod ...
Python--常用工具包
Created2023-11-16|Go & Python
0 参考资料 Pandas中文文档 NumPy中文文档 1 Pandas 数据处理1.1 Pandas 数据结构 - SeriesPandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。 Series 由索引(index)和列组成,函数如下: 1pandas.Series( data, index, dtype, name, copy) 参数说明: data:一组数据(ndarray 类型)。 index:数据索引标签,如果不指定,默认从 0 开始。 dtype:数据类型,默认会自己判断。 name:设置名称。 copy:拷贝数据,默认为 False。 示例: 1234567891011121314151617181920212223242526272829# 从列表创建Series pd.Series(['a', 'b', 'c']) # 0 a # 1 b # 2 c # dtype: object # 自动创建索引 # 通过字典创建 ...
Python编程语言--进阶篇
Created2023-10-20|Go & Python
0 参考资料 Python核心技术与实战 – Geek 1 Python对象的比较、拷贝1.1 比较is 操作符和 ==操作符: 在 Python 中,每个对象的身份标识,都能通过函数 id(object) 获得。因此,'is'操作符,相当于比较对象之间的 ID 是否相等, 1234567891011121314a = 10b = 10 a == bTrue id(a)4427562448 id(b)4427562448 a is bTrue 对于整型数字来说,以上a is b为 True 的结论,适用于 -5 到 256 范围内的数字。 1234567891011121314a = 257b = 257 a == bTrue id(a)4473417552 id(b)4473417584 a is bFalse Python 内部会对 -5 到 256 的整型维持一个数组,起到一个缓存的作用。这样,每次你试图创建一个 -5 到 256 范围内的整型数字时,Python 都会从这个数组中返回相对应的引用,而不是重新开辟一块新的内存空间。使用'=='的次 ...
Python编程语言--面向对象
Created2023-10-16|Go & Python
1 类1.1 类的定义和使用12345678910111213141516171819202122 class Dog: """一次模拟小狗的简单尝试。""" def __init__(self, name, age): """初始化属性name和age。""" self.name = name self.age = age self.type = 1 # 给属性指定默认值 def sit(self): """模拟小狗收到命令时蹲下。""" print(f"{self.name} is now sitting.") def roll_over(self): """模拟 ...
1…567
avatar
梦之痕
Articles
63
Tags
47
Categories
16
Follow Me
Announcement
个人笔记迁移中ing....
Recent Post
大模型 RAG 的应用和开发2025-04-29
06 - WASM 插件开发2025-02-12
记录访问 HTTPS 网站报错问题2024-09-28
AI 大模型微调2024-09-03
Untitled2024-08-29
Categories
  • AI大模型1
  • Go & Python6
  • Java & Lua7
  • Linux 内核1
  • 人工智能&大数据4
  • 信息安全3
  • 后端&架构8
  • 工具使用3
Tags
Java DPDK Maven 微服务架构 Python 流量控制 系统优化 Git 程序设计 LVS HTTP3 大模型微调 wasm 四层负载均衡 系统架构设计师 Go 网络 iterm2 杂文 OpenResty MySQL 深度学习 虚拟化 云原生 数据库 Istio Nginx Flink Kubernetes 算法题解 Redis HTTP2 LangChain VPP 软考高级 Linux内核 Calico Tongsuo RAG Helm
Archives
  • April 20251
  • February 20251
  • September 20242
  • August 20244
  • July 20244
  • June 20244
  • May 20242
  • April 20243
Info
Article :
63
UV :
PV :
Last Update :
©2020 - 2025 By 梦之痕
Framework Hexo|Theme Butterfly