Skip to content

anweat/T2-Modle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JVM-T²-Cap: 时间窗能力安全模型

License Java Build

📖 概述

JVM-T²-Cap是一个基于时间窗能力安全模型的Java虚拟机安全增强框架,实现了『复制即过期、过期即沉默』的核心安全理念。

核心特性

  • 权限资源化: 将内存访问权限封装为Token资源
  • 时间窗绑定: Token具有时间有效性,自动过期失效
  • 🔒 自毁MAC: 使用硬件加速的MAC验证,防止Token复制
  • 📊 动态权值: 基于EWMA的智能限流,防止突发攻击
  • 🚀 零侵入部署: 无需修改应用代码,一行命令启用
  • 硬件加速: 自动检测并利用SHA-NI等CPU特性

🏗️ 架构设计

┌─────────────────────────────────────────────────┐
│           Java Application Layer                │
├─────────────────────────────────────────────────┤
│  Java Agent (字节码转换)                         │
│  ├─ T2Agent: Agent入口                          │
│  ├─ T2ClassTransformer: 类转换器                │
│  └─ T2MethodVisitor: 方法插桩                   │
├─────────────────────────────────────────────────┤
│  Token管理层                                    │
│  ├─ T2Token: Token生命周期管理                  │
│  ├─ TimeWindowManager: 时间窗管理               │
│  └─ T2Config: 配置管理                          │
├─────────────────────────────────────────────────┤
│  Native层 (C实现)                               │
│  ├─ t2_validation.c: 核心验证逻辑               │
│  ├─ t2_jni.c: JNI接口                           │
│  └─ SHA-NI硬件加速 (可选)                       │
└─────────────────────────────────────────────────┘

🚀 快速开始

前置要求

  • JDK 11 或更高版本
  • Maven 3.6+
  • CMake 3.15+ (可选,用于编译Native库)
  • Visual Studio 2019+ (Windows) 或 GCC 7+ (Linux/Mac)

编译

Windows

build.bat

Linux/Mac

chmod +x build.sh
./build.sh

使用

将T²-Cap Agent添加到JVM启动参数:

java -javaagent:target/jvm-t2-agent-1.0.0-SNAPSHOT.jar YourApplication

高级配置

通过参数字符串配置:

java -javaagent:target/jvm-t2-agent-1.0.0-SNAPSHOT.jar=debug=true,window_size_ms=200 YourApp

或使用配置文件:

java -javaagent:target/jvm-t2-agent-1.0.0-SNAPSHOT.jar=config=/path/to/t2cap.properties YourApp

⚙️ 配置参数

基础配置

参数 类型 默认值 说明
debug boolean false 启用调试输出
hw_sha boolean auto 启用硬件SHA加速

时间窗配置

参数 类型 默认值 说明
window_size_ms long 100 时间窗大小(毫秒)
ewma_alpha double 0.3 EWMA平滑因子(0-1)
downgrade_threshold double 0.8 降级阈值

Token配置

参数 类型 默认值 说明
token_pool_size int 1024 每线程Token池大小
token_expiry_ms long 5000 Token过期时间(毫秒)

性能配置

参数 类型 默认值 说明
fast_path boolean true 启用快速路径优化
perf_monitor boolean true 启用性能监控

📊 性能基准

微基准测试

在Intel i7-10700K @ 3.8GHz上的测试结果:

操作 平均延迟 说明
Token获取 ~15 ns ThreadLocal读取
Token验证 ~50 ns 含时间窗检查
完整验证 ~80 ns Java + Native

宏基准测试

在实际应用中的开销:

  • Web应用吞吐量影响: < 2%
  • 内存开销: < 10MB (1000并发线程)
  • CPU开销: < 3% (正常负载)

🔬 安全模型

威胁模型

T²-Cap防护以下攻击:

  1. 内存马攻击: 通过复制指针绕过访问控制
  2. 信息泄露: 通过堆外内存泄露敏感数据
  3. 资源耗尽: 通过突发IO耗尽系统资源
  4. 重放攻击: 重用旧Token访问资源

安全保证

  • 时间窗隔离: Token仅在特定时间窗内有效
  • 自毁机制: Token被复制后自动失效
  • 确定性限流: 基于D/D/1模型的可预测降级
  • Epoch防护: 防止时间回滚攻击

🧪 测试

运行单元测试

mvn test

运行基准测试

mvn test -Dtest=T2Benchmark

运行集成测试

mvn verify

📁 项目结构

T2-Modle/
├── src/
│   ├── main/
│   │   ├── java/com/t2cap/
│   │   │   ├── agent/           # Java Agent实现
│   │   │   │   ├── T2Agent.java
│   │   │   │   ├── T2ClassTransformer.java
│   │   │   │   ├── T2ClassVisitor.java
│   │   │   │   ├── T2MethodVisitor.java
│   │   │   │   └── T2Config.java
│   │   │   └── core/            # 核心Token管理
│   │   │       ├── T2Token.java
│   │   │       └── TimeWindowManager.java
│   │   └── resources/
│   │       └── native/          # Native库
│   ├── native/
│   │   ├── include/
│   │   │   └── t2_core.h
│   │   ├── core/
│   │   │   └── t2_validation.c
│   │   ├── jni/
│   │   │   └── t2_jni.c
│   │   └── CMakeLists.txt
│   └── test/
│       └── java/com/t2cap/
│           ├── test/            # 单元测试
│           └── benchmark/       # 性能测试
├── pom.xml
├── build.bat                    # Windows构建脚本
├── build.sh                     # Linux/Mac构建脚本
└── README.md

🤝 贡献

欢迎贡献代码、报告问题或提出建议!

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

🔗 相关资源

📧 联系方式

如有问题或建议,请提交Issue或Pull Request。 邮箱:anweat@163.com

T²-Cap - 让Java应用更安全 🛡️

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors