【问题标题】:How does X11 authorization work? (MIT Magic Cookie)X11 授权是如何工作的? (麻省理工学院魔法饼干)
【发布时间】:2022-01-05 15:14:39
【问题描述】:

我有兴趣深入解答解释 X11 授权的具体工作原理,尤其是 MIT Magic Cookies。

我知道它实际上做的是禁止除登录用户之外的其他所有人访问,还有一些控制机制可以控制客户端应用程序是否可以连接到 X 显示服务器。

我还发现有五种标准的访问控制机制,它们可以分为三大类:

  1. 基于主机的访问
  2. 基于 cookie 的访问
  3. 基于用户的访问权限

但从现在开始,我真的不明白这些工作的方式以及它们究竟使用什么方式来进行授权。

【问题讨论】:

标签: linux unix cookies authorization solaris


【解决方案1】:

嗯,首先机器上有一个文件~/.Xauthority。 请注意(通常在具有 GUI 的机器上)此文件的错误权限,可能导致登录屏幕循环...(我花了几个小时才明白这一点)。

正如你提到的,有 5 种机制:

  1. 主机访问:服务器有主机访问列表(如果此列表中存在网络地址,则允许连接)。该列表使用xhost 命令进行管理。注意:这不允许同时进行多个连接。我不太了解这种方法,因为我并没有真正使用过它。但你可以看到man Xserver GRANTING ACCESS 部分:)

  2. MIT-magic-cookie-1:生成 128 位密钥(“cookie”),将其存储在 ~/.Xauthority(或 XAUTHORITY envvar 指向的位置)中。客户端将其发送到服务器plain!服务器检查它是否有这个“cookie”的副本,如果有,则允许连接。密钥由 DMX 生成。

  3. XDM-authorization-1:同样,在 ~/.Xauthority 中存储了一个密钥。该密钥由 2 部分组成 - 56 位 DES 加密密钥和 64 位用作身份验证器的随机数据。 当您连接到服务器时,客户端生成 192 位数据:ctime 结合 48 位标识符(对于 tcp/ip:ip 地址+端口,对于本地连接,它是 PID 和 32 位唯一 ID)。 DES 密钥用于加密数据,然后将其发送到服务器。服务器通过解密用户来验证用户,然后验证 64 位身份验证器和其他数据。

  4. sun-des-1:它使用非对称加密,服务器有一个他用来解密传入请求的公钥。它还使用“主机列表”。这需要网络中一些额外的机制,我又没有这样的网络,我对这个机制不太了解。

  5. 服务器解释:它可以通过多种方式实现……但一般来说,客户端向服务器发送 2 个字符串。第二个字符串是用户条目(如username),第一个字符串是条目类型(如localuser)。

注意:第 2、第 3 和第 4 种机制将密钥存储在 ~/.Xauthority 中,因此任何有权访问此文件的人都可以伪装成“您”连接到服务器。

xauth 命令可以解析 Xauthority 文件并提取感兴趣的值。

$ xauth 
Using authority file /home/ME/.Xauthority
xauth> list        
ME/unix:10  MIT-MAGIC-COOKIE-1  5e443c146376d0bdadfd712bfe7654be
ME/unix:0  MIT-MAGIC-COOKIE-1  c48ddba801384dce3aaaa9d442931ea12
xauth> info
Authority file:       /home/ME/.Xauthority
File new:             no
File locked:          no
Number of entries:    2
Changes honored:      yes
Changes made:         no
Current input:        (stdin):2
xauth> 
  • 数据已更改....

【讨论】:

  • 正如我已经提到的,我正在寻找专门针对 MIT Magic Cookie 的更深入的搜索/答案,如果您可以添加更多信息,您的答案会更好。谢谢!
  • “更多信息”是什么意思?我已经告诉过您协议...如果您要求实现,那么您就错了,因为每个服务器都可以以不同的方式实现它,因此没有答案...没有搜索,您要么尝试通过 ip 连接,要么通过名称(使用 dns)。 “搜索/回答”是什么意思?
  • 我的意思是我试图找到一个很好的解释它是如何工作的,而不仅仅是它做什么的理论......我也可以在谷歌上找到一个......所以我需要是关于 MIT Magic Cookie 如何工作的结构良好且解释清楚的答案......它具体做什么,如何解释它:)
  • 我告诉你的正是它的工作原理。没有“隐藏”信息。而你刚刚在评论中说你不能在互联网上搜索它,因为你的互联网是“白名单”。所以我真的错过了一些东西。我什至告诉过你如何构建 cookie 以及服务器如何解析它。不仅仅是向您展示代码,而且您可以单独完成,因为它是开源的
  • 很抱歉,我想不出还有什么要补充的。我曾经实现过一个客户端,我在这里告诉你我知道的任何事情,它对我有用。当然,如果您有任何具体问题,我愿意帮助您!我只是真的不明白你认为缺少什么:/我并不是要冒犯你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多