Cara Aman Simpan Seed Phrase: AES-256 Encryption untuk Bot
Jangan simpan seed phrase di plain text! Tutorial ini ajarkan cara encrypt wallet seed phrase dengan AES-256-GCM untuk bot automation kamu.
Mengapa Plain Text Berbahaya?
Seed phrase di file .txt atau .env tanpa enkripsi itu seperti naruh kunci rumah di depan pintu. Siapa pun yang akses server kamu — baik itu hacker, malware, atau bahkan teman yang iseng — bisa ambil semua wallet kamu dalam hitungan detik.
Kasus nyata: banyak bot developer yang kehilangan dana karena seed phrase tersimpan plain text di GitHub repo yang ke-private-nya salah setting, atau di server yang kena breach.
AES-256-GCM: Standar Emas
AES-256-GCM (Galois/Counter Mode) adalah enkripsi yang sama dipakai oleh bank dan militer. Fitur utama:
- 256-bit key — 2^256 kemungkinan kombinasi, brute force tidak mungkin
- Authenticated encryption — selain mengenkripsi, juga memverifikasi data tidak diubah
- Unique IV per encryption — bahkan seed phrase yang sama menghasilkan ciphertext berbeda tiap kali
Implementasi di Node.js
const crypto = require('crypto');
const ALGO = 'aes-256-gcm';
const KEY = crypto.scryptSync(process.env.MASTER_PASSWORD, 'lyid-salt', 32);
function encryptSeed(seedPhrase) {
const iv = crypto.randomBytes(16);
const cipher = crypto.createCipheriv(ALGO, KEY, iv);
let encrypted = cipher.update(seedPhrase, 'utf8', 'hex');
encrypted += cipher.final('hex');
const tag = cipher.getAuthTag().toString('hex');
return { iv: iv.toString('hex'), tag, data: encrypted };
}
function decryptSeed(encrypted) {
const decipher = crypto.createDecipheriv(
ALGO, KEY,
Buffer.from(encrypted.iv, 'hex')
);
decipher.setAuthTag(Buffer.from(encrypted.tag, 'hex'));
let decrypted = decipher.update(encrypted.data, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
Penyimpanan yang Aman
Struktur File
project/
├── config.json # tidak ada seed phrase di sini
├── wallets.encrypted.json # hasil encrypt
├── .encryption_key # master key (gitignore!)
└── .gitignore # *.encrypted.json, .encryption_key
Format wallets.encrypted.json
{
"wallets": [
{
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD38",
"encrypted_seed": {
"iv": "a1b2c3...",
"tag": "d4e5f6...",
"data": "encrypted_hex_string..."
}
}
]
}
Best Practices
- Ambil key dari environment variable —
process.env.MASTER_PASSWORD, bukan hardcoded - Backup encrypted file — simpan di 2-3 tempat berbeda (cloud + lokal)
- Gitignore semua yang sensitif — .encryption_key, .env, wallets.*.json
- Rotate key berkala — decrypt semua, generate key baru, re-encrypt
- Test decrypt sebelum deploy — pastikan proses encrypt-decrypt berjalan benar
Contoh di LYID Wallet Hub
LYID Wallet Hub menggunakan AES-256-GCM untuk manage 13.000+ seed phrase. Setiap wallet di-encrypt secara individual dengan IV unik. Master key tersimpan di .encryption_key yang permission-nya dibatasi ke owner saja.
Butuh Bot Automasi?
LYID menyediakan bot airdrop siap pakai dengan fitur multi-wallet, auto-claim, dan anti-detect.
Chat di @OG_LYID_bot Lihat Semua Script →