FlashDesk 安全
FlashDesk 旨在安全处理远程控制所需的通信、连接批准、设备验证和运营管理。屏幕视频和控制数据按会话加密,目标端访问可通过手动批准或密码控制。
按会话加密
FlashDesk 的媒体通信和控制数据使用会话开始时生成的密钥加密。密钥交换使用 ECDH P-256,密钥派生使用 HKDF-SHA256,加密使用 AES-256-GCM。
每个数据包包含序列号和认证标签,可检测篡改和旧数据包重放。
优先 P2P,必要时中继
会话期间,视频和控制数据会尽可能在设备之间直接传输。如果网络无法直接连接,FlashDesk 会切换到中继路由,同时载荷仍保持加密。
目标端明确授权
目标端可通过手动批准或密码授权允许访问。手动批准可只允许一次连接,也可允许在选定时间内连接,限时会话会自动断开。
设备指纹验证
FlashDesk 会为每次安装创建设备身份密钥,并从公钥生成指纹。如果已信任目标的指纹变化,FlashDesk 会提醒你确认目标设备是否已变更。
信令和许可证通信
FlashDesk 使用 WebSocket over TLS (wss://) 启动连接,并使用 HTTPS 进行许可证验证等 API 通信。媒体通信在建立后由加密会话处理。
外部 TLS 证书
FlashDesk 的信令通信使用基于 HTTPS / TLS 的 WebSocket。以下公开 TLS 证书信息由服务器获取,并会在证书变更时自动更新。
- 目标域名
- 正在加载证书信息...
- 颁发者
- 正在加载证书信息...
- SHA-256 指纹
- 正在加载证书信息...
- 有效期
- 正在加载证书信息...
暂时无法获取证书信息。
外部安全测试
FlashDesk 已使用 OWASP ZAP 对公开网站及相关 endpoints 完成安全测试。我们也已确认 Mozilla Observatory、SSL Labs 和 Security Headers 均达到 A 或更高评级。
系统权限和本地保护
FlashDesk 遵循 macOS、Linux Wayland 等系统要求的权限流程。保存的连接信息和密码会经过处理,以避免明文存储。
FlashDesk 服务器处理的数据
FlashDesk 服务器可能会在服务运行、防止滥用、支持、计费和团队管理所需范围内处理以下信息。
| 数据 | 用途 | 存储或临时 | 说明 |
|---|---|---|---|
| FlashDesk ID / 设备标识符 | 连接启动、设备查找、许可证关联 | 按需存储 | 用于识别设备并路由请求。 |
| 设备 fingerprint 公开信息 | 设备验证和 ID 绑定 | 适用时以 hash 形式存储 | 服务器保存 fingerprint 相关 hash,不保存私有身份密钥。 |
| 应用版本和 OS 类型 | 兼容性、支持和运行分析 | 随客户端状态存储或更新 | 在适用的管理和支持场景中显示。 |
| 连接状态和路径状态 | 连接维护、seat 控制、管理可见性 | 会话期间临时处理;Pro 可保存选定审计记录 | 报告时可能包含 direct、relay 或 probing 状态。 |
| IP 地址和网络元数据 | 服务运行、防止滥用、诊断 | 按需存入运行记录 | 可能包含 last seen IP、下载统计和 WebSocket 诊断元数据。 |
| 许可证 / 订阅状态 | 许可证验证、计费、seat 管理 | 按需存储 | 支付卡详情由支付服务商处理,不由 FlashDesk 保存。 |
| 错误日志或运行日志 | 支持、故障调查、防止滥用 | 作为运行日志保存;服务器日志 30 天后自动删除 | WebSocket 日志会遮蔽 ssh_tunnel_data payload;其他元数据可能用于诊断记录。 |
| Pro 用户的管理控制台活动 | 团队管理、许可证和会话审查 | 作为管理记录保存 | 包含组织、用户、许可证、seat 和会话审计记录。 |
FlashDesk 服务器不存储的数据
在普通远程连接中,FlashDesk 服务器不存储以下信息:
- 远程屏幕视频内容
- 键盘输入内容
- 鼠标操作内容
- 文件传输内容
- 作为 ssh_tunnel_data 处理的 SSH tunnel payload 内容
- 录制的会话视频内容
网络端点和协议
下表汇总了管理员在部署前可能需要审查的通信。
| 用途 | 协议 | 端口 | 主要通信目标 | 说明 |
|---|---|---|---|---|
| 网站 / 下载 | HTTPS | 443/TCP | FlashDesk 官方服务器 | 下载页面显示官方发布文件的版本和 SHA-256 checksum。 |
| 信令 | WebSocket over TLS (wss://) | 443/TCP | flashdesk.io/ws | 用于启动会话并交换 candidate 信息。 |
| API / 许可证检查 | HTTPS | 443/TCP | flashdesk.io/api/license/verify | 用于检查已注册许可证密钥和 seat 状态。 |
| 更新检查 | HTTPS | 443/TCP | flashdesk.io/data/latest.json 和包路径 | 应用定期通过 HTTPS 检查更新 manifest,从官方服务器下载更新包,并在应用前验证预期 SHA-256 hash。 |
| STUN / P2P candidate 检查 | UDP | 3478/UDP | FlashDesk 官方服务器 | 在尝试直接 P2P 前发现可到达的网络 endpoint。 |
| 直接 P2P 连接 | UDP media/control path | 对端设备上的动态 UDP 端口 | 对端设备网络 endpoint | 当 NAT/firewall 条件允许时优先使用直接连接。 |
| Relay 连接 | 通过 relay 路径传输的加密 media/control payload | 当前 desktop app 使用 40020/UDP | FlashDesk relay server | 当设备间直接路径不可用时使用。SDK relayws 响应使用 443/TCP。 |
Relay 服务器行为
FlashDesk 会先尝试设备之间的直接路径。由于 NAT、防火墙、VPN 和移动网络可能阻止直接 UDP 通信,必要时会通过 relay 路径继续会话。
使用 relay routing 时,relay 服务器转发会话 packet。media/control payload 仍由每个会话的密钥加密,packet 包含用于检测篡改或旧 packet 重放的认证数据。
安装和后台行为
FlashDesk 可以在后台运行,并在设置启用时随 OS 自动启动。当前默认设置启用 OS 启动。
- Windows: startup is managed through a user logon scheduled task named FlashDesk_Autostart, with a legacy Run-key fallback check.
- macOS: startup is managed through a LaunchAgent plist.
- Linux: startup is managed through XDG Autostart.
仅在功能需要时请求 OS 权限。macOS 可能需要 Screen Recording 和 Accessibility。Linux Wayland 使用 desktop portal / PipeWire。FlashDesk 会定期检查 HTTPS 更新 manifest,从官方服务器下载更新包,并在应用前验证预期 SHA-256 hash。
本地设置保存在用户应用数据文件夹的 FlashDesk/flashdesk_settings.json。本地应用日志写入 FlashDesk/logs,当前代码保留 7 天。本地屏幕录制在用户启用时保存在 FlashDesk/recording。
文件真实性和代码签名
下载页面会显示官方发布文件的版本和 SHA-256 checksum。安装前,用户可以将下载文件的 SHA-256 与页面公布值进行比较。
- Windows: FlashDesk .exe 文件使用 Authenticode 签名。可在文件属性 > 数字签名中检查,或在 PowerShell 中运行
Get-AuthenticodeSignature .\FlashDesk.exe。 - macOS: FlashDesk .pkg 和 .app 发行包使用 Apple Developer ID 证书签名,并已由 Apple notarized。
- Linux: 请验证 .deb、.rpm 和 AppImage 下载的公开 SHA-256 checksum。
运营建议
建议不要在共享电脑上保存密码,删除不再需要的目标,不批准无法识别的指纹变化,并为长时间会话使用时间限制。