资讯详情

Playport安全边界设计揭秘:宿主Steam会话与游戏内会话如何彻底隔离

📅 2026/11/3 10:22:48 | 华诺云谱 👁 阅读
Playport安全边界设计揭秘:宿主Steam会话与游戏内会话如何彻底隔离
【免费下载链接】playportPlayport runs Windows games, 64-bit and now 32-bit, on a stock, non-jailbroken iPhone. Install a game from your library onto the phone, pick up a controller and press Play. The game runs on the phones own CPU and GPU: no PC, no cloud, no stream.项目地址https://gitcode.com/gh_mirrors/pl/playport点击查看免费下载Playport 是一款让 Windows 游戏64 位与 32 位原生运行在普通 iPhone 上的工具无需电脑、云端或串流游戏直接跑在手机自己的 CPU 和 GPU 上。而在它的设计里安全边界是核心关键词之一——Playport 的宿主 Steam 会话你在手机上登录的那个 Steam 账号与游戏内会话Guest 中 Windows 客户端的会话被刻意设计成两个彼此隔离的世界宿主的任何 Steam 凭据默认都永远不会进入游戏。为什么隔离是Playport安全设计的难题先理解一个前提Playport 里宿主和游戏并不是两堵墙隔开的两个世界。按照 ARCHITECTURE.md 的描述宿主 App、运行时Wine FEX 翻译器和每一个 Guest 二进制文件运行在同一个进程里共享同一个地址空间、同一个容器、同一组 Keychain 权限。这意味着进程内不存在传统的边界任何 Guest 侧代码理论上都能读到进程内存里的任何东西。正是这个现实逼出了 0004: Steam session boundary 这条最硬的设计决策宿主的 native Steam 客户端app/SteamClient/与 Guest 里运行的任何 Steam 客户端是两个互不相通的会话没有任何宿主 Steam 秘密会被传进 Guestrefresh token、access token、QR 登录素材、机器/会话绑定、CDN token、depot key都不行堵住的通道也是全的prefix 文件、环境变量、注册表、命令行参数、IPC、共享内存乃至 wine_host 的 C ABI 接口——这个 ABI 里根本没有携带凭据的参数。一句话概括Guest 客户端要玩请自己登录拿宿主账号的钥匙去开门这条路从设计上就不存在。宿主一侧如何守住秘密5条基线0004 不只说不传还把宿主自己怎么防漏写成了可检查的规则防线做法存储位置宿主秘密只存 Keychaingeneric-password 条目、ThisDeviceOnly、不可同步App 容器里一个字节都没有内存形态秘密以SecretT持有打印出来是redacted日志脱敏每行日志都过一遍 scrubber过滤 JWT、QR URL、query string、bearer 值和主目录路径启动模式传递 Steam 命令的启动方式不在环境里放任何秘密设备驱动会逐条检查日志转录登出向 Steam 撤销 token删除 Keychain 条目和缓存账号数据游戏与存档保留同时还有一个休眠规则游戏运行期间宿主的 Steam 会话不做任何 Steam 工作——CMGame Coordinator连接在运行时启动前就关闭唯一的例外见下一节。三条受控通道哪些凭据可以进游戏绝对隔离会让在线游戏没法登录自家服务器。所以 Playport 为游戏应该从商店拿到什么开了三条受控例外每一条都有独立的决策记录并必须回答同一个五问针对哪个秘密、唯一通道是什么、Guest 侧存储量是否实测、登出是否清除所有副本、撤销是否让 Guest 拿到的也失效。1加密 App Ticket一条会自己消失的 ini 行见 0017: An encrypted app ticket enters the guest。点击 Play 后宿主为即将启动的那一款游戏向 Steam 申请一张加密 App Ticket写入游戏配置steam_settings/configs.user.ini的ticketbase64一行游戏退出或下次启动、下次 App 启动、登出时该行即被删除。这张票用发行商的密钥加密Playport 自己都读不懂游戏把它发给自家服务器用于在线账号、跨平台登录与防盗版校验。小偷最多能做到的是拿这张票冒充你玩这一款游戏直到服务器不再接受它拿不到 Steam 账号本身。真机实测证据玩完两轮后搜索整个容器除 ini 那一行外没有任何文件留下 ticket 的痕迹。2游戏运行中的活着的Steam 会话只发 ticket别的都拒绝见 0062: A live Steam session during play这是 0004 休眠规则的唯一口子。游戏运行期间宿主保持登录的 CM 连接只为一件事像 Steam 客户端那样替游戏制作两类票据——auth session ticketGetAuthSessionTicket和 web API ticketGetAuthTicketForWebApi。除此之外安装、PICS、资料、云存档、登录等一切 Steam 调用在游戏运行期间全部拒绝。跨进 Guest 的只有票据的字节、一个句柄和一个状态。不是 token不是 SteamID也不是别款游戏的票据。这条通道的工程细节很能说明最小化的思路唯一通道一张 Wine unix call table playport_steam_unix_call_funcs协议定义见 steam_ticket_protocol.h由 steam_ticket_provider 挂在 ABI 上Steam API 模拟器gbe 补丁 0006通过它请求。数据块定长、无指针、逐个校验 magic 与 size。配额由宿主定死仅限被启动的那款 App最多 8 张存活票据每张间隔至少 2 秒、同时 4 张Steam 自身的 token 供给上限再兜一层底。收尾CancelAuthTicket可单独取消一局结束时1 秒内发送空票据列表和空ClientGamesPlayed崩溃或进程被杀socket 随进程一起消亡。日志只记句柄、类型和大小永不记录票据字节、token、identity 或 SteamID。对照 0004 的五问0062 逐条作答威胁模型✅、单一通道✅、Guest 侧存储实测✅票据只活在游戏内存容器里搜不到票据头、登出清副本✅宿主只在内存持有票据游戏结束后进程重启、撤销同样作废 Guest 的✅取消、局终、会话终止都会结束票据。3GOG 与 Epic 游戏的同构例外Steam 之外Playport 为其他商店开了结构相同、范围同样收紧的例外GOG0063宿主在游戏运行期间扮演本地 Galaxy 服务监听127.0.0.1:9977只签发限定在该游戏 client ID 范围内的 refresh token成就、统计、排行榜由宿主代答。跨界的秘密仅此一项游戏结束监听即停。Epic0059宿主在 Play 后换取一个一次性、5 分钟有效的 exchange code以及需要时的 ownership token像 Epic 启动器一样放在游戏命令行旁。任何 Epic tokeneg1都不进 Guest。清理与撤销让秘密活不过一局隔离不只是少给还包括给过的要收回来。Playport 的清理策略可以总结为四条行级清除加密 App Ticket 的 ini 行在游戏退出、下次启动、下次 App 启动、登出时删除内存即终点0062 的票据宿主侧只在内存持有不落盘、不进 Keychain进程即墓碑一局游戏结束后 Playport 会重启运行时进程0029: restart after each game崩溃或被杀同样让 socket 与内存票据一起消亡日志即审计票据的字节、token、SteamID 永不入日志Redactor会连日志里残留的ticket值一起抹掉pp secrets检查还能拦截提交中长得像真票据的行。残余风险设计者自己承认了什么诚实的安全文档不假装没有洞。0004 明确写下一个敌意的 Guest 二进制可以读到进程能读的一切包括内存中正在使用的宿主 token。0062 进一步指出存活的 CM 连接意味着理论上 Guest 里的原生代码可以驱动这条已登录连接。缓解方式不是假装边界存在而是收窄范围只运行你拥有的游戏与真正的客户端正版库 商店登录本身就是筛选器宿主 token 只在使用中的短暂窗口里存在于内存每条例外通道的爆炸半径都被压到最小——一张票只对应一款游戏、一个玩家、有限寿命。换句话说Playport 的安全模型不是把恶客关在门外而是门外根本不放值得偷的东西。延伸阅读决策记录与源码路径Playport 把这类安全决策都沉淀为编号的 decision recorddocs/decisions/新手可以从这几份入手主题文档会话隔离总纲0004-steam-session-boundary.md加密 App Ticket0017-encrypted-app-ticket.md局中活会话与票据0062-steam-live-session.mdGOG Galaxy 登录0063-gog-galaxy-sign-in.mdEpic 交换码0059-epic-exchange-code.md每局之后重启0029-restart-after-each-game.md关键源码票据宿主侧实现 steam_ticket.c、协议 steam_ticket_protocol.h、宿主 ABI 声明 wine_host.h、宿主 Steam 客户端 app/SteamClient/Kit 位于 app/SteamClient/。总结Playport 用一个进程、没有进程内边界的现实倒逼出宿主秘密永不进 Guest的硬规则并从 Keychain 存储、日志脱敏到 ABI 设计逐层落实三条受控例外加密 App Ticket、局中票据、GOG/Epic 登录各自有独立威胁模型、单一通道和清理路径爆炸半径压到一款游戏、一局游戏票据类秘密活不过一局ini 行会删、内存票据随进程重启消亡、日志只留句柄残余风险被如实记录缓解手段是范围控制而非虚构的墙。赞分享【免费下载链接】playportPlayport runs Windows games, 64-bit and now 32-bit, on a stock, non-jailbroken iPhone. Install a game from your library onto the phone, pick up a controller and press Play. The game runs on the phones own CPU and GPU: no PC, no cloud, no stream.项目地址https://gitcode.com/gh_mirrors/pl/playport点击查看免费下载相关推荐CorridorKey-Runtime离进程运行时揭秘崩溃隔离、会话池与共享内存IPC如何保护DaVinci ResolveCorridorKey Runtime离进程运行时揭秘崩溃隔离、会话池与共享内存IPC如何保护DaVinci Resolve CorridorKey Runt完全掌控你的数字记忆WeChatMsg终极聊天记录管理方案完全掌控你的数字记忆WeChatMsg终极聊天记录管理方案 你是否曾经因为手机丢失或更换设备那些珍贵的微信对话就永远消失不见那些与家人的温馨交流、与朋友的Ory Kratos 会话管理揭秘Continuity 内部机制与 Cookie 安全设计完整指南Ory Kratos 会话管理揭秘Continuity 内部机制与 Cookie 安全设计完整指南 Ory Kratos 是一个用 Go 编写的无头H后端认证鉴权上一篇郑希vs葛兰用zhengxi-views对比全市场2.7万只基金的实战教程下一篇labelme 图像标注工具快速完成目标检测、语义分割与图像级打标创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑