跳转到主要内容

SNI代理与TCP多路复用器

项目描述

SniTun

基于TCP多路复用器的SNI代理上的端到端加密

连接流程

                   [ CLIENT ] --AUTH/CONFIG--> [ SESSION MASTER ] (Trusted connection)
                   [ CLIENT ] <--FERNET-TOKEN- [ SESSION MASTER ]
                   [ CLIENT ] --------FERNET-TOKEN---------------------> [ SNITUN ] (Unsecure connection)
                   [ CLIENT ] <-------CHALLENGE-RESPONSE-(AES/CBC)-----> [ SNITUN ]


             <--->                                                                  <------------------------------>
[ ENDPOINT ] <---> [ CLIENT ] <---------MULTIPLEXER---(AES/CBC)--------> [ SNITUN ] <------EXTERNAL-CONECTIONS-----> [ DEVICE ]
    |        <--->                                                                  <------------------------------>     |
    |                                                                                                                    |
    | <--------------------------------------------------END-TO-END-SSL------------------------------------------------->|
                                                      (Trusted connection)

Fernet令牌

会话主创建一个Fernet令牌,从客户端配置(AES/白名单)中提取,并附加主机名和一个UTC时间戳,直到令牌有效。

{
  "valid": 1923841,
  "hostname": "myname.ui.nabu.casa",
  "aes_key": "hexstring",
  "aes_iv": "hexstring"
}

SniTun服务器必须能够解密此令牌以验证客户端的真实性。然后SniTun启动挑战/响应处理来验证AES密钥并确保它是请求Fernet令牌的同一客户端。

注意:SniTun服务器不执行任何用户身份验证!

挑战/响应

Snitun服务器从随机的40位值创建一个SHA256哈希。这个值被加密并发送到客户端,客户端解密这个值,然后使用这个值和另一个SHA256哈希发送加密数据回Snitun。如果验证成功,客户端进入多路复用模式。

多路复用协议

使用AES/CBC加密头部。有效负载应为SSL。ID对于每个TCP连接都是变化的,并且对于每个连接都是唯一的。大小是数据有效负载的大小。

额外信息可能包括新消息的调用者IP地址。否则,它是随机位。

|________________________________________________________|
|-----------------HEADER---------------------------------|______________________________________________|
|------ID-----|--FLAG--|--SIZE--|---------EXTRA ---------|--------------------DATA----------------------|
|   16 bytes  | 1 byte | 4 bytes|       11 bytes         |                  variable                    |
|--------------------------------------------------------|----------------------------------------------|

消息标志/类型

  • 0x01:新 | 额外数据包括第一个字节为ASCII值4或6,后跟调用者IP字节。
  • 0x02:数据
  • 0x04:关闭
  • 0x05:ping | 额外数据是对ping的响应“ping”或“pong”。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分发

snitun-0.39.1.tar.gz (33.1 kB 查看哈希值)

上传时间

构建分发

snitun-0.39.1-py3-none-any.whl (39.1 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面