ARD 中的身份验证过程
我正在开发 Apple 远程桌面的第三方客户端。但我被困在它的身份验证过程中。
来自远程桌面手册: 对 Apple 远程桌面客户端的身份验证使用 基于 Diffie-Hellman 密钥的身份验证方法 创建共享 128 位密钥的协议协议。此次分享的 密钥用于使用高级功能对名称和密码进行加密 加密标准 (AES)。 Diffie-Hellman 密钥协商协议 ARD 2 中使用的协议与 Diffie-Hellman 密钥协议非常相似 用于个人文件共享的协议,两者都使用 用于共享密钥计算的 512 位素数。借助远程桌面 2, 当您控制 Mac OS X 时,击键和鼠标事件都会被加密 客户端计算机。此信息使用高级加密 具有 128 位共享密钥的加密标准 (AES) 认证过程中得出的。
有谁知道我在哪里可以找到有关 ARD 中身份验证过程的更多技术信息?比如它使用哪种AES模式以及什么初始化向量。谢谢
I am working on a third party client for Apple Remote Desktop. But I am stuck on its authentication process.
From Remote Desktop manual:
Authentication to Apple Remote Desktop clients uses an
authentication method which is based on a Diffie-Hellman Key
agreement protocol that creates a shared 128-bit key. This shared
key is used to encrypt both the name and password using the Advanced
Encryption Standard (AES). The Diffie-Hellman Key agreement protocol
used in ARD 2 is very similar to the Diffie-Hellman Key agreement
protocol used in personal file sharing, with both of them using a
512-bit prime for the shared key calculation. With Remote Desktop 2,
keystrokes and mouse events are encrypted when you control Mac OS X
client computers. This information is encrypted using the Advanced
Encryption Standard (AES) with the 128-bit shared key that was
derived during authentication.
Does anyone know where I can find a bit more technical information about the Authentication process in ARD? Such as which AES mode it uses and what initialization vector. Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我最近遇到了这个问题。除了您提到的高级概述之外,我找不到任何详细信息,但我能够根据我对 此 C 代码 来自gtk-vnc 开源项目。基本上,步骤如下:
{ username[64],password[64] }
。每个都以空终止。用随机字符填充未使用的字节,以便加密输出更难以预测。我没有可分享的 Objective C 实现,但我有 实现了这个 Java 版本,您可能会发现有用参考。
I ran into this exact problem recently. I couldn't find any detailed information beyond the high-level overview you mention, but I was able to figure out the technique based on my study of this C code from the gtk-vnc open source project. Basically, the steps are as follows:
{ username[64], password[64] }
. Null-terminate each. Fill the unused bytes with random characters so that the encryption output is less predictable.I don't have an Objective C implementation to share, but I have implemented this Java version which you may find useful to reference.
不确定是否有人还需要这个,但是 这是一个 Objective C 实现< /a> 的 ARD 身份验证过程是我几个月前拼凑而成并于几天前在 Github 上发布的。
它大致基于 David 的(谢谢!)Java 实现,但使用 OpenSSL 的加密函数进行 MD5 散列和 AES 128 加密步骤。
还有 TinyVNC 库也实现了 ARD 身份验证,但使用 Crypto++ 库来实现加密功能。
Not sure if anyone still needs this, but here's a Objective C implementation of the ARD authentication process that I cobbled together a few months back and released on Github a few days ago.
It's based loosely on David's (thanks!) Java implementation but uses OpenSSL's encryption functions for the MD5 hashing and AES 128 encryption steps.
There's also the TinyVNC library that also implements ARD authentication, but using the Crypto++ library for encryption functions instead.