İçeriğe geç

Uçtan uca şifreleme

Uçtan uca şifrelemede bildirimin title, message, url ve url_title alanları senin sisteminde şifrelenir ve sadece anahtarı bilen cihazlarında çözülür. PushBell bu alanları göremez; kuyruk, teslim ve gelen kutusu şifreli metinle çalışır.

PushBell uygulamasında Ayarlar → Uçtan uca şifreleme → Yeni anahtar oluştur. 64 karakterlik (256 bit, onaltılık) anahtarı kopyala ve:

  • gönderen sistemine (sunucu, betik) koy,
  • diğer cihazlarına Anahtarı gir ile aynı anahtarı gir.

Anahtar sadece cihazlarında durur. Kaybedersen şifreli bildirimler okunamaz.

Her alan ayrı şifrelenir:

  1. Metni GZIP ile sıkıştır.
  2. Rastgele 16 baytlık IV üret.
  3. AES-256-CBC (PKCS7 dolgu) ile anahtar ve IV kullanarak şifrele.
  4. IV ‖ şifreli metin üzerinden aynı anahtarla HMAC-SHA256 hesapla.
  5. IV ‖ şifreli metin ‖ HMAC’i Base64 yap; alanın değeri budur.

Bu biçim Pushover’ınkiyle aynıdır: Pushover için yazdığın kod değişmeden çalışır.

#!/bin/sh
KEY="64-karakterlik-anahtarin"
encrypt() {
IV=$(openssl rand -hex 16)
CT=$(printf '%s' "$1" | gzip -9 | openssl enc -aes-256-cbc -K "$KEY" -iv "$IV" | xxd -p | tr -d '\n')
HMAC=$(printf '%s' "${IV}${CT}" | xxd -r -p | openssl dgst -sha256 -mac HMAC -macopt hexkey:"$KEY" | awk '{print $NF}')
printf '%s' "${IV}${CT}${HMAC}" | xxd -r -p | openssl base64 -A
}
curl https://api.pushbell.app/v1/messages \
-H "Authorization: Bearer pb_live_…" \
-H "Content-Type: application/json" \
-d "{\"title\":\"$(encrypt 'Yeni sipariş')\",\"message\":\"$(encrypt '1.250 TL, Ayşe K.')\",\"encrypted\":true}"

encrypted: true ile gönder. Pushover uyumlu uçta encrypted=1.

  • message zorunludur; bildirim tipinin başlık / metin şablonları şifreli bildirimde uygulanmaz.
  • Şifreli alanların uzunluk sınırı şifreli metne göredir (başlık 1.024, metin 8.000 karakter).
  • Metin 4 KB’lık bildirim paketine sığmazsa bildirimde gösterilmez; uygulamada açılınca tamamı çözülür.
  • Anahtarı olmayan cihazda bildirim 🔒 Şifreli bildirim olarak görünür; anahtar girilince gelen kutusundaki eski bildirimler de açılır.