Sekarang ada banyak pengirim pesan IM dengan enkripsi ujung-ke-ujung, tetapi ada lebih sedikit opsi yang dapat Anda gunakan dengan cepat di server Anda.
Saat mempelajari opsi, mata saya tertuju pada Delta Chat, yang telah disebutkan di Habré - utusan tanpa infrastruktur server terpusat, menggunakan server email untuk mengirim pesan, yang memungkinkan Anda untuk menyebarkannya, misalnya, di server rumah Anda dan berkomunikasi dari perangkat, termasuk dengan akses internet.
Di antara keuntungan dari pendekatan ini adalah:
- Anda mengelola informasi Anda sendiri, termasuk kunci enkripsi.
- Anda tidak memberikan buku alamat Anda kepada siapa pun.
- Tidak perlu menggunakan nomor telepon untuk mendaftar.
- Klien untuk semua sistem populer: Windows, Linux, Android, MacOS, iPhone.
- Enkripsi STARTTLS / SSL tambahan untuk transmisi pesan yang disediakan oleh server email.
- Kemampuan untuk mengkonfigurasi penghapusan pesan lama dari perangkat (pesan yang hilang).
- Kemampuan untuk mengkonfigurasi penghapusan pesan dari server setelah diterima.
- Pengiriman cepat berkat IMAP push.
- Obrolan yang dilindungi grup.
- Dukungan untuk mentransfer file, foto dan video.
- Server dan klien keduanya open source dan sepenuhnya gratis.
Kerugian yang mungkin terjadi:
- Tidak ada cara untuk membuat konferensi audio dan video asli.
- Kebutuhan untuk mengekspor / mengimpor kunci enkripsi untuk menyiapkan satu akun di beberapa perangkat.
Fakta menarik: Roskomnadzor sudah menuntut agar pengembang Delta Chat memberikan akses ke data pengguna, kunci enkripsi dan mendaftar di daftar penyedia negara, yang ditolak oleh Delta Chat, karena tidak memiliki server sendiri dan tidak memiliki akses ke kunci enkripsi.
Enkripsi ujung-ke-ujung
Delta Chat dapat menggunakan koneksi StartTLS atau SSL ke server untuk terhubung ke server, pesan secara default akan dienkripsi sesuai dengan standar Autocrypt Level 1 , setelah pesan pertama dipertukarkan (dikirim dalam bentuk tidak terenkripsi). Jadi, jika komunikasi terjadi antara pengguna satu server, informasi tidak akan dikirim ke server lain, hanya server kami dan perangkat pengguna yang akan sibuk dalam transmisi pesan.
Penyetelan Server
Menyiapkan server untuk Delta Chat dimulai dari menginstal Postfix + Dovecot dengan StartTLS / SSL dikonfigurasi dan menyiapkan data domain.
Saya akan menggunakan CentOS 8 untuk mengkonfigurasi server, mungkin ada perbedaan kecil untuk distribusi lain. Kami memilih parameter server yang sesuai untuk tugas kami.
Di DNS, saya membuat dua data: domain tingkat ketiga adalah domain email dan nama server email:
secureim.example.com A <ip> secureim MX secureim.example.com
Mari kita
hostname
setel dan instal postfix, dovecot dan nginx (nginx - untuk mendapatkan sertifikat mari enkripsi, wget - untuk menginstal certbot-auto, nano - editor):
hostnamectl set-hostname secureim.example.com
dnf install postfix dovecot nginx wget nano -y
Mari kita izinkan Postfix untuk menerima email dari luar dan mengkonfigurasi nama host, domain dan asal server, karena domain email dan alamat server sama, domainnya akan sama di mana-mana:
postconf -e "inet_interfaces = all"
postconf -e "myhostname = secureim.example.com"
postconf -e "mydomain = secureim.example.com"
postconf -e "myorigin = secureim.example.com"
Agar Delta Chat tersedia untuk koneksi dari Internet, Anda perlu membuka port 80, 143, 443, 465, 587, 993. Selain itu, buka port 80, 443 untuk mendapatkan mari mengenkripsi sertifikat dan mengupdatenya di masa mendatang. Jika Anda berencana untuk menerima surat dari server email lain, Anda juga perlu membuka porta 25 (dalam kasus saya, saya tidak berencana untuk terhubung menggunakan server lain, jadi saya tidak menentukan port ke-25). Dan Anda mungkin perlu menambahkan penerusan port 80, 143, 443, 465, 587, 993 di router jika server akan digunakan di jaringan lokal.
Mari buka port 80, 143, 443, 465, 587, 993 di firewall:
firewall-cmd --permanent --add-service={http,https,smtps,smtp-submission,imap,imaps} systemctl reload firewalld
Mari buat pengaturan situs untuk nama domain kita untuk mendapatkan mari mengenkripsi sertifikat menggunakan certbot-auto
nano /etc/nginx/conf.d/secureim.example.com.conf server { listen 80; listen [::]:80; server_name secureim.example.com; root /usr/share/nginx/html/; } }
Mari aktifkan dan jalankan nginx:
systemctl enable nginx
systemctl start nginx
Instal certbot-auto:
cd ~
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
yes | certbot-auto --install-only
Mari buat sertifikat untuk situs tersebut (di masa mendatang kami akan menggunakannya untuk enkripsi TLS dari koneksi ke server):
certbot-auto certonly -a nginx --agree-tos --staple-ocsp --email my_mail@example.com -d secureim.example.com
Sertifikat akan dibuat dan lokasinya juga akan ditampilkan di konsol:
# /etc/letsencrypt/live/secureim.example.com/fullchain.pem
# /etc/letsencrypt/live/secureim.example.com/privkey.pem
Perbaiki file konfigurasi Postfix untuk mengizinkan penerimaan pesan pada port 465 dan 587:
nano /etc/postfix/master.cf submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth
Mari jalankan perintah untuk menentukan lokasi sertifikat TLS dan kunci pribadi server:
postconf "smtpd_tls_cert_file = /etc/letsencrypt/live/secureim.example.com/fullchain.pem"
postconf "smtpd_tls_key_file = /etc/letsencrypt/live/secureim.example.com/privkey.pem"
Jika perlu, kami dapat mengaktifkan pencatatan koneksi TLS:
postconf "smtpd_tls_loglevel = 1"
postconf "smtp_tls_loglevel = 1"
Tambahkan persyaratan untuk menggunakan protokol setidaknya TLS 1.2 di akhir file konfigurasi Postfix:
nano /etc/postfix/main.cf smtp_tls_mandatory_protocols = >=TLSv1.2 smtp_tls_protocols = >=TLSv1.2
# Hidupkan dan jalankan Postfix:
systemctl start postfix
systemctl enable postfix
Instal, aktifkan, dan jalankan Dovecot:
dnf install dovecot -y
systemctl start dovecot
systemctl enable dovecot
Ubah file konfigurasi Dovecot untuk mengaktifkan protokol imap:
nano /etc/dovecot/dovecot.conf protocols = imap
Mari konfigurasikan penyimpanan email sehingga pesan disimpan di folder pengguna:
nano /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:~/Maildir mail_privileged_group = mail
Tambahkan Dovecot ke grup surat sehingga Dovecot dapat membaca pesan masuk:
gpasswd -a dovecot mail
Tolak otorisasi tanpa enkripsi TLS:
nano /etc/dovecot/conf.d/10-auth.conf disable_plaintext_auth = yes
Tambahkan penggantian otomatis domain selama otorisasi (hanya dengan nama pengguna):
auth_username_format = %n
Mari kita ubah lokasi sertifikat, kunci, lokasi file kunci Diffie-Hellman, versi TLS 1.2 minimum, dan preferensi untuk memilih protokol enkripsi server daripada klien:
nano /etc/dovecot/conf.d/10-ssl.conf ssl_cert = </etc/letsencrypt/live/secureim.example.com/fullchain.pem ssl_key = </etc/letsencrypt/live/secureim.example.com/privkey.pem ssl_dh = </etc/dovecot/dh.pem ssl_min_protocol = TLSv1.2 ssl_prefer_server_ciphers = yes
Mari buat kunci Diffie-Hellman, pembuatan kunci bisa memakan waktu lama:
openssl dhparam -out /etc/dovecot/dh.pem 4096
Mari kita ubah bagian autentikasi layanan sehingga Postfix dapat terhubung ke server otorisasi Dovecot:
nano /etc/dovecot/conf.d/10-master.conf service auth { unix_listener /var/spool/postfix/private/auth { mode = 0600 user = postfix group = postfix } }
Mari aktifkan pembuatan otomatis folder surat sistem (jika kita menggunakan server untuk surat biasa juga) dengan menambahkan baris auto = create di bagian folder surat:
nano /etc/dovecot/conf.d/15-mailboxes.conf
mailbox Drafts {
auto = create
special_use = \Drafts
}
mailbox Junk {
auto = create
special_use = \Junk
}
mailbox Trash {
auto = create
special_use = \Trash
}
mailbox Sent {
auto = create
special_use = \Sent
}
mailbox "Sent Messages" {
auto = create
special_use = \Sent
}
Mari konfigurasikan Dovecot untuk mengirim pesan ke penyimpanan yang dikonfigurasi dengan menambahkan parameter lmtp:
nano /etc/dovecot/dovecot.conf protocols = imap lmtp
Mari konfigurasikan layanan LMTP sebagai berikut:
nano /etc/dovecot/conf.d/10-master.conf service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } }
Tambahkan pengaturan berikut di akhir file untuk memberi tahu Postfix agar mengirim email ke penyimpanan lokal melalui layanan Dovecot LMTP. Nonaktifkan juga SMTPUTF8, karena Dovecot LMTP tidak mendukung ekstensi ini:
nano /etc/postfix/main.cf mailbox_transport = lmtp:unix:private/dovecot-lmtp smtputf8_enable = no
Mari buat pengguna yang akan menggunakan server dengan membuat entri yang sesuai di sistem dan memberinya kata sandi yang akan digunakan untuk otorisasi melalui smtps dan imaps:
adduser user1 passwd user1
# Mulai ulang Dovecot dan Postfix:
systemctl restart dovecot systemctl restart postfix
Tambahkan tugas ke / etc / crontab untuk memperbarui sertifikat secara otomatis:
nano /etc/crontab
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"
Pada tahap ini, server harus berfungsi sebagai server email, yaitu. Anda dapat terhubung dengan klien email dan mencoba mengirim dan menerima surat ke kotak surat lain dari server ini, atau jika Anda telah membuka porta 25 di atas, lalu ke server surat lainnya.
Sekarang mari kita siapkan klien Delta Chat di PC dan smartphone Android.
Untuk terhubung, cukup memasukkan alamat email dan kata sandi yang dibuat sebelumnya di server, Delta Chat akan menentukan port mana yang dapat digunakan, setelah itu dimungkinkan untuk menambahkan kontak baru, juga di alamat email, menggunakan alamat email yang valid.
Pesan pertama akan dikirim tanpa enkripsi, pada tahap ini pertukaran kunci sedang berlangsung. Lebih lanjut, pesan akan dienkripsi selain TLS yang digunakan untuk transmisi data, enkripsi ujung-ke-ujung Autocrypt Level 1.
Juga memungkinkan untuk membuat obrolan terverifikasi grup - di mana semua pesan dienkripsi dengan enkripsi ujung ke ujung, dan peserta dapat bergabung dengan memindai undangan dengan kode QR. Dengan cara ini, semua peserta ditautkan satu sama lain melalui rangkaian undangan yang menjamin konsistensi kriptografi terhadap serangan jaringan aktif atau serangan penyedia.
Salah satu hal paling menarik yang ingin saya periksa adalah untuk melihat seperti apa pesan tersebut di penyimpanan server. Untuk melakukan ini, saya mengirim pesan ke akun yang tidak aktif - dalam hal ini, pesan akan menunggu penerima di server, dan kami, yang memiliki akses ke server, akan dapat melihatnya:
Isi pesan
Return-Path: <user2@secureim.example.com>
Delivered-To: user1@secureim.example.com
Received: from secureim.example.com
by secureim.example.com with LMTP
id g/geNIUWzl+yBQAADOhLJw
(envelope-from <user2@secureim.example.com>)
for <user1@secureim.example.com>; Mon, 07 Dec 2020 14:48:21 +0300
Received: from [127.0.0.1] (unknown [192.87.129.58])
by secureim.example.com (Postfix) with ESMTPSA id AA72A3193E11
for <user1@secureim.example.com>; Mon, 7 Dec 2020 11:48:21 +0000 (UTC)
MIME-Version: 1.0
References: <Mr.DoII3_YQLLv.2m_e6hIHc0e@secureim.example.com>
<Mr.YwnXrWVn2Ai.FAQ-abJC0kt@secureim.example.com>
In-Reply-To: <Mr.YwnXrWVn2Ai.FAQ-abJC0kt@secureim.example.com>
Date: Mon, 07 Dec 2020 11:48:20 +0000
Chat-Version: 1.0
Autocrypt: addr=user2@secureim.example.com; prefer-encrypt=mutual;
keydata=xjMEX83vexYJKwYBBAHaRw8BAQdAYgkiTiHDlJtzQqLCFxiVpma/X5OtALu8kJmjeTG3yo
7NIDx1c2VyMkBzZWN1cmVpbS5zYW1vaWxvdi5vbmxpbmU+wosEEBYIADMCGQEFAl/N73sCGwMECwkI
BwYVCAkKCwIDFgIBFiEEkuezqLPdoDjlA2dxYQc97rElXXgACgkQYQc97rElXXgLNQEA17LrpEA2vF
1FMyN0ah5tpM6w/6iKoB+FVUJFAUALxk4A/RpQ/o6D7CuacuFPifVZgz7DOSQElPAMP4AHDyzcRxwJ
zjgEX83vexIKKwYBBAGXVQEFAQEHQJ7AQXbN5K6EUuwUbaLtFpEOdjd5E8hozmHkeeDJ0HcbAwEIB8
J4BBgWCAAgBQJfze97AhsMFiEEkuezqLPdoDjlA2dxYQc97rElXXgACgkQYQc97rElXXhYJgEA+RUa
RlnJjv86yVJthgv7w9LajPAgUGCVhbjFmccPQ4gA/iiX+nk+TrS2q2oD5vuyD3FLgpja1dGmqECYg1
ekyogL
Message-ID: <Mr.qg4Mj0zMVZw.lT9nBnZMoKs@secureim.example.com>
To: <user1@secureim.example.com>
From: <user2@secureim.example.com>
Subject:…
Content-Type: multipart/encrypted; protocol=«application/pgp-encrypted»;
boundary=«OfVQvVRcZpJOyxoScoY9c3DWqC1ZAP»
--OfVQvVRcZpJOyxoScoY9c3DWqC1ZAP
Content-Type: application/pgp-encrypted
Content-Description: PGP/MIME version identification
Version: 1
--OfVQvVRcZpJOyxoScoY9c3DWqC1ZAP
Content-Type: application/octet-stream; name=«encrypted.asc»
Content-Description: OpenPGP encrypted message
Content-Disposition: inline; filename=«encrypted.asc»;
-----BEGIN PGP MESSAGE-----
wU4DKm2PBWHuz1cSAQdA4krEbgJjac78SUKlWKfVyfWt2drZf41dIjTH01J52HIg
aY/ZzCn/ch8LNGv3vuJbJS8RLHK7XyxZ4Z1STAtTDQPBTgNyNpRoJqRwSxIBB0AC
OVrbhsjNPbpojrm/zGWkE5berNF7sNnGQpHolcd+WyCdpqQAk3CaiQjxsm7jdO0A
gMtmXABw/TWcpTU/qOfW/9LBVwFZ/RPCKxCENfC0wau4TI+PMKrF0HODyWfBkEuw
e3WlQpN/t0eSUPKMiMhm7QM0Ffs52fPz0G6dfVJ2M6ucRRyU4Gpz+ZdlLeTLe3g2
PkKbb6xb9AQjdj/YtARCmhCNI48sv7dgU1ivh15r37FWLQvWgkY93L3XbiEaN/X9
EWBQxKql/sWP01Kf67PzbtL5uAHl8VnwInCIfezQsiAsPS2qiCb1sN3yBcNlRwsR
yTs2CPJTIi7xTSpM1S/ZHM5XXGnOmj6wDw69MHaHh9c9w3Yvv7q1rCMvudfm+OyS
/ai4GWyVJfM848kKWTCnalHdR4rZ3mubsqfuCOwjnZvodSlJFts9j5RUT87+j1DM
mQa4tEW8U5MxxoirFfbBnFXGUcU/3nicXI5Yy6wPP8ulBXopmt5vHsd68635KVRJ
2GMy7sMHcjyzujNCAmegIQgKqTLO5NUOtxW7v1OXL23pKx32OGcy8PtEJp7FBQYm
bUNAaz+rkmC971S2FOU0ZGV8LNp8ULioAbL629/JpPHhBOBJCsVnsXDIh6UBPbuM
06dU7VP6l8PNM87X/X1E3m2R1BCNkZghStQrt16fEoA+jm9F6PNtcap2S5rP9llO
klo/ojeciqWl0QoNaJMlMru70TT8a9sf6jYzp3Cf7qFHntNFYG1EcEy9YqaXNS7o
8UOVMfZuRIgNqI9j4g8wKf57/GIjtXCQn/c=
=bzUz
-----END PGP MESSAGE-----
--OfVQvVRcZpJOyxoScoY9c3DWqC1ZAP--
Seperti yang Anda lihat, surat disimpan di server dalam bentuk terenkripsi, dan jika server disita oleh pihak yang berkepentingan, pesan tidak akan berisiko.
Untuk keandalan yang lebih baik, Anda dapat menggunakan enkripsi disk penuh dari server dan perangkat yang menjalankan klien, serta menggunakan kunci untuk menyambung ke server melalui ssh dan menggunakan sandi yang kuat dan rumit untuk akun email.
Kesimpulan
Delta Chat adalah alternatif menarik untuk pengirim pesan IM yang dihosting sendiri, yang memungkinkan Anda bertukar pesan menggunakan protokol email yang ada (yang di masa mendatang memungkinkan Anda tidak perlu khawatir tentang pemblokiran), dan resistensi tinggi terhadap intersepsi pesan, tidak adanya server pusat, dan kemampuan untuk menyebarkan di server Anda, memungkinkan Anda untuk tidak melakukannya. khawatir data Anda jatuh ke tangan yang salah.