Deep Security Dive

🛡️ الأمان في Aliens Treasury

كل طبقة من طبقات الأمان هنا متحققة من الكود — مش وعود تسويقية.

AES-256-GCM + HKDF

internal/services/encrypt.go:96

كل سر يستمد مفتاحاً مستقلاً من المفتاح الرئيسي مع ملح عشوائي 16 بايت. اختراق سر واحد لا يكشف جيرانه.

go|internal/services/encrypt.go:96
1// internal/services/encrypt.go
2func EncryptWithHKDF(masterKey, salt, plaintext []byte) ([]byte, error) {
3 uniqueKey := hkdf.Extract(sha256.New, masterKey, salt)
4 block, _ := aes.NewCipher(uniqueKey)
5 gcm, _ := cipher.NewGCM(block)
6 nonce := make([]byte, gcm.NonceSize())
7 io.ReadFull(rand.Reader, nonce)
8 return gcm.Seal(nonce, nonce, plaintext, nil), nil
9}

End-to-End Zero Knowledge

internal/services/encrypt_e2e.go

بمفتاح X25519، السيرفر يستقبل السر مشفراً لا يملك مفتاح فكه. أنت وحدك من يرى القيمة.

go|internal/services/encrypt_e2e.go
1// internal/services/encrypt_e2e.go
2func EncryptE2E(publicKey, plaintext []byte) ([]byte, error) {
3 ephemeral := make([]byte, 32)
4 rand.Read(ephemeral)
5 shared := curve25519.X25519(ephemeral, publicKey)
6 return encrypt(shared, plaintext), nil
7}

Challenge-Response (Ed25519)

internal/services/auth_service_challenge.go

مفاتيح الخدمة تُصادق بدون إرسال أي API key على الشبكة. حتى اعتراض الاتصال لا يكشف مفتاحاً.

go|internal/services/auth_service_challenge.go
1// internal/services/auth_service_challenge.go
2func ChallengeResponse(privateKey ed25519.PrivateKey, nonce []byte) []byte {
3 return ed25519.Sign(privateKey, nonce)
4}

SO_PEERCRED Authentication

cmd/vault-client/internal/server/socket.go

vault-client يتأكد من هوية كل عميل عبر UID/GID/PID قبل تسليم أي سر.

go|cmd/vault-client/internal/server/socket.go
1// cmd/vault-client/internal/server/socket.go
2func authenticatePeer(conn *net.UnixConn) (*syscall.Ucred, error) {
3 file, _ := conn.File()
4 creds, _ := syscall.GetsockoptUcred(int(file.Fd()), syscall.SOL_SOCKET, syscall.SO_PEERCRED)
5 return creds, nil
6}

Memory Safety + Core Dump Protection

internal/crypto/zero.go

مسح آمن للذاكرة بعد الاستخدام + منع core dumps عبر PR_SET_DUMPABLE=0.

go|internal/crypto/zero.go
1// internal/crypto/zero.go
2func SecureZero(b []byte) {
3 for i := range b { b[i] = 0 }
4 runtime.KeepAlive(b)
5}
6// PR_SET_DUMPABLE = 0
7syscall.Prctl(syscall.PR_SET_DUMPABLE, 0)
🛡️ تنبيه أمني
⚠️ شفافية: Master Key محفوظ على خادمك في ملف 0600 — مش في أي Cloud. أنت المسؤول الوحيد عن حمايته. استخدم Shamir Split عشان تقلل مخاطر الضياع.