作为客户,我正在使用适用于 OS/X 和 iPhone 的商业 VPN。我也是配置 VNP在 iOS/MacO 上工作,并在家里使用 StrongSwan 拥有基于 Debian 的 VPN。
我已经捕获了.mobileconfig
我的 VPN 提供商提供的 Sierra MacOS 可执行文件生成的配置文件。我想从那里获取配置详细信息,以便不安装他们的 Linux 软件并手动配置它,但是 SharedSecret XML 数据字段是加密的。
在工作中,我一直在使用Apple Configurator 2
,只是为了加密我的共享密钥,以便为 Apple 设备创建 mobileconfig 配置文件的框架,但是我仍然不知道该字段的格式是什么。
我注意到这个“加密”密码可以放在 中ipsec.secrets
,代替明文密码,例如:
@vpngroup : PSK 0scGFzc3dvcmQK
同样,在交付给客户/最终用户的 Apple mobileconfig 配置文件中,可以再次找到它:
<key>SharedSecret</key>
<data>cGFzc3dvcmQK</data>
那么这种格式到底是什么?以及如何加密和加密呢?我确信这不是明文形式的实际共享秘密。
答案1
Shared Secret/组密码的编码格式实际上是Base64。
来自强天鹅文档站点:
或者,预共享秘密可以表示为十六进制或 Base64 编码的二进制值。以 0x 开头的字符序列被解释为十六进制数字序列。同样,以 0 开头的字符序列被解释为 Base64 编码的二进制数据。
组密码的 Base64 格式除了用于 Linux/FreeBSD IPsec 配置和 Apple 配置文件外,还用于 Cisco VPN 客户端文件。
使用 Base64 的理由是保护密码免遭窥探和最终用户的攻击。为什么要使用这样一个基本的编码算法......
归根结底,要在 Linux 中对其进行解码,必须从 Apple SharedSecret 数据字段中逐字获取,或者从 中获取时ipsec.secrets
,必须忽略字符串中的前导“0”:
$echo cGFzc3dvcmQK | base64 -d
password
要在 FreeBSD/OS/X 中解码它:
$echo cGFzc3dvcmQK | base64 -D
password
同样,将其编码回来:
$echo password | base64
cGFzc3dvcmQK