Linux

VPN 配置:共享密鑰 PSK 格式

  • May 16, 2020

作為客戶,我正在使用適用於 OS/X 和 iPhone 的商業 VPN。我還在工作中為 iOS/ MacO 配置 VNP,並在家裡使用 StrongSwan 提供基於 Debian 的 VPN。

我已經擷取了.mobileconfig我的 VPN 提供商提供的 Sierra MacOS 執行檔生成的配置文件。我想從那裡獲取配置詳細資訊,以便不安裝他們的 Linux 軟體並手動配置它,但是 SharedSecret XML 數據欄位是加密的。

在工作中,我一直在使用Apple Configurator 2,只是為了加密我的 Shared Secret 來為 Apple 設備創建 mobileconfig 配置文件的骨架,但是我仍然不知道該欄位的格式是什麼。

我注意到這個“加密”密碼可以放在 中ipsec.secrets,代替明文密碼,例如:

@vpngroup : PSK 0scGFzc3dvcmQK

同樣,再次在傳遞給客戶/最終使用者的 Apple mobileconfig 配置文件中,可以再次找到它:

<key>SharedSecret</key>
<data>cGFzc3dvcmQK</data>

那麼這種格式實際上是什麼?以及如何加密和加密它?我確定這不是明文中的實際共享秘密。

Shared Secret/組密碼的編碼格式實際上是Base64

strongswan文件站點:

或者,預共享機密可以表示為十六進製或 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

引用自:https://unix.stackexchange.com/questions/327778