在 Bitfinex 建立 API 鑰匙時,是要給 Hahalend 用。只要開兩項權限:讀取、放貸。提款和交易,保持關閉。就這麼簡單。Hahalend 只需要看得到你的餘額、能送出或取消出借單。權限開得比這個多,它會直接拒絕存起來。
接下來會照步驟,說明怎麼在 Bitfinex 上設定。還有鑰匙交出去之後,會發生什麼事:怎麼加密、什麼時候才會解密。以及萬一 Hahalend 自己出問題,老實說最壞會壞到什麼程度。
詳細步驟
打開 Bitfinex 的 API 鑰匙建立頁面
登入你的 Bitfinex 帳戶。找到 API Keys。建立一把專門給 Hahalend 用的新鑰匙。不要拿你已經開了其他權限的舊鑰匙來用。
只打開兩項:帳戶讀取、Funding 放貸
把讀取和放貸打開就好。提款、交易,或任何跟下單、成交有關的權限,全部保持關閉。不確定某個選項在做什麼?關掉,才是比較安全的預設值。真的少了 Hahalend 需要的權限,它會立刻告訴你。
(選用)把鑰匙鎖定給 Hahalend 的 IP
Bitfinex 可以把鑰匙鎖定住。只讓特定 IP 能用。這一步是選用的,但建議開。就算鑰匙不小心外洩,也沒辦法在別處使用。實際要鎖哪些 IP,連接鑰匙時的教學頁面上都寫清楚。
把鑰匙和密鑰貼進 Hahalend
送出的那一刻,Hahalend 就會檢查權限。開了提款或交易,連線會直接被拒絕。你得先回 Bitfinex 修好,才能再試一次。通過之後,後台只看得到鑰匙最後 4 碼。完整的值,不會再顯示給你看,也不會用可讀的形式存起來。
幫 Hahalend 帳戶開兩步驟驗證
這一步,保護的是登入 Hahalend 帳戶本身,跟 API 鑰匙能做什麼是兩回事。是選用的,隨時都能關掉。但這是你能做、最簡單的額外一步。
鑰匙交出去之後會發生什麼事
你的鑰匙和密鑰一存起來,就會先用 AES-256-GCM 加密。資料庫裡真正放的是密文,不是可以直接讀的鑰匙。Hahalend 伺服器需要查餘額,或送出借單的那一刻,才會在記憶體裡把它解開,立刻用掉。不會寫回硬碟存成明文,也不會出現在任何紀錄檔裡。
老實說最壞的情況
就算 Hahalend 的伺服器整台被攻破,存起來的鑰匙依然是密文。Bitfinex 自己也會擋住提款和交易。這層保護,不靠 Hahalend 保持安全。老實說的邊緣情況是:如果駭客連解密用的加密金鑰都拿到,確實看得到餘額和紀錄,也能送出或取消出借單。但一樣沒辦法把錢從 Bitfinex 搬走。這個限制,來自權限本身被允許做的事,不是額外加上去的承諾。
為什麼這條權限界線很重要
讀取加放貸,跟提款加交易,聽起來好像差別不大。但這條界線,就是整套安全設計能成立的原因。如果一把權限比較大的鑰匙外洩,或存放它的系統被攻破,影響範圍就是由這把鑰匙能做的事決定,不是靠其他保護做得多好來補救。把鑰匙的權限,限制在剛好夠用,才讓其他每一層保護,真正有意義。
這也是為什麼,偶爾換一把新鑰匙是合理的習慣,雖然沒有規定一定要做。只要懷疑鑰匙可能外洩,隨時可以到 Bitfinex 把舊的關掉、建立新的。Bitfinex 那邊一停用,Hahalend 這邊,自然就會拒絕舊鑰匙。
如果懷疑鑰匙外洩了
如果你懷疑鑰匙可能外洩了——截圖不小心流出、裝置被入侵,任何狀況都算。最快的處理方式,在 Bitfinex 那邊,不是 Hahalend:立刻到 Bitfinex 的 API 設定,把那把鑰匙停用。一停用,包括 Hahalend 在內,所有地方馬上就用不了。
接著照上面同樣的步驟,建立一把新鑰匙,重新連上 Hahalend。因為舊鑰匙本來就沒有提款或交易權限,那段時間實際的風險,頂多是有人看得到你的餘額和紀錄、能送出或取消出借單,沒辦法把錢搬走。