C-toxcore: Dokumentasikan pertanyaan dan jawaban terkait dengan jaringan kripto dan p2p

Dibuat pada 5 Jan 2017  ·  10Komentar  ·  Sumber: TokTok/c-toxcore

Bagaimana saya bisa mencegah kebocoran lalu lintas saya ke node?
Node harus digunakan hanya untuk membantu klien menemukan satu sama lain. Bukan untuk pengiriman data.
Ini terlihat seperti MITM. Ini tidak lebih baik daripada Skype dengan server Microsoft.

P2

Komentar yang paling membantu

Saya mengerti bagaimana poin ini bisa terasa salah, jadi saya telah mengajukan masalah dokumentasi untuk meningkatkan presentasi kami tentang itu. Terima kasih telah menjelaskan pemikiran Anda.

Untuk menjelaskan kekhawatiran spesifik Anda dengan cepat, saya akan memparafrasekannya. Tolong beri tahu saya jika saya salah paham:

T: _Saya prihatin dengan kenyataan bahwa paket data yang datang dari komputer saya tidak dikirimkan langsung ke komputer teman saya, tetapi terkadang (atau setiap saat, tergantung pada kondisi jaringan) diteruskan melalui komputer pihak ketiga._

J: Pertama, pertimbangkan paket yang langsung dari komputer Anda ke komputer teman Anda, dengan asumsi Anda menggunakan wifi lokal:

  • Komputer Anda membuat paket Tox terenkripsi (lihat detail enkripsi ), yang dibungkus dalam paket UDP yang berisi port sumber/tujuan (acak/33445), lalu dalam paket IP yang berisi alamat IP sumber/tujuan (Anda dan teman Anda) , lalu bingkai Nirkabel yang berisi alamat MAC sumber/tujuan (Anda dan titik akses).
  • Bingkai Nirkabel ini dikirim melalui saluran terenkripsi AES (dengan asumsi WPA2).
  • Titik akses nirkabel serta setiap pengguna jaringan lainnya menerimanya. Pengguna lain biasanya mengabaikan paket, tetapi tidak harus. Membaca paket yang tidak dimaksudkan untuk Anda disebut sniffing. Ini adalah titik pertama di mana orang lain dapat membaca paket.
  • Titik akses nirkabel terhubung ke router WAN (internet) yang membuat koneksi ke router penyedia layanan internet Anda melalui beberapa cara (kopling akustik, ISDN, ADSL, Kabel, Satelit, serat, ...). Koneksi ini dapat dienkripsi (beberapa satelit) tetapi biasanya tidak. Pada titik ini, router WAN yang Anda kirimi paket akan membuat bingkai Ethernet yang berisi alamat MAC-nya sendiri dan alamat MAC dari router berikutnya yang terhubung, yang merupakan router ISP Anda. Dalam perjalanan, alamat IP dan MAC kemungkinan tidak terenkripsi dan dapat dibaca oleh siapa pun yang mengendus serat optik antara Anda dan ISP. Ini adalah titik kedua di mana orang lain dapat membaca paket.
  • Setelah paket tiba di ISP, paket tersebut akan melalui berbagai sistem internal di pusat data mereka, mungkin dienkripsi atau tidak dienkripsi pada berbagai titik waktu. Router ISP kemudian akan memutuskan router berikutnya yang akan dikirimi paket, ditentukan oleh alamat IP. Untuk melakukan ini, ia akan membuka bingkai Ethernet yang diterimanya dan membungkusnya dengan yang baru dan mengirimkannya ke router berikutnya. Kapan saja selama pemrosesan di ISP, karyawan pusat data atau administrasi sistem dari ISP tersebut dapat mengakses paket Anda. Titik akses ketiga.
  • Sekarang paket Anda akan berpindah dari router ke router (coba traceroute $your_friend_ip untuk melihat kemana perginya), masing-masing memiliki akses gratis ke frame Ethernet, paket IP, dan paket UDP serta isinya. Banyak titik akses, sebut saja yang ke-4.
  • Kemudian teman Anda mungkin berada dalam situasi yang sama, di wifi lokal di tempat yang berbeda. Sekali lagi router dan anggota jaringan nirkabel mereka dapat membaca paket. Titik akses kelima.
  • Baru sekarang, akhirnya, paket Anda tiba di komputer teman Anda. Ia menerima bingkai Nirkabel, membukanya untuk menemukan paket IP, membukanya untuk menemukan paket UDP, membukanya untuk menemukan paket Tox, yang kemudian diproses oleh implementasi protokol Tox. Pemrosesan ini melibatkan dekripsi dan dekode paket dan bertindak di atasnya, biasanya mengakibatkan klien teman Anda menampilkan pesan, memutar audio atau video, atau melakukan beberapa aktivitas tingkat aplikasi lainnya.

Seperti yang Anda lihat, ada banyak titik selama transmisi "langsung" dari Anda ke teman Anda di mana paket dapat diperiksa oleh orang yang sewenang-wenang. Enkripsi ujung ke ujung berarti bahwa tidak ada titik antara Anda dan teman Anda yang dapat membaca konten sebenarnya yang ingin Anda sampaikan. Mereka selalu hanya dapat melihat data terenkripsi.

Sekarang, menambahkan relay TCP di tengah hanya akan memperpanjang rute (secara teoritis bisa mempersingkat, tapi itu tidak mungkin). Siapa pun yang menjalankan relai dapat membaca paket, sama seperti orang lain antara Anda dan teman Anda. Protokol kripto Tox memastikan bahwa komunikasi Anda aman.

Sekarang, saya juga melihat kekhawatiran kedua:

T: _Apa yang terjadi jika salah satu node yang menyampaikan data saya jahat?_
J: Tox memilih sejumlah relai TCP yang dapat digunakan untuk berkomunikasi jika koneksi UDP langsung tidak memungkinkan (misalnya karena NAT atau firewall). Relay jahat dapat melakukan sangat sedikit hal untuk melakukan kejahatan:

  • Mereka dapat memilih untuk tidak mengirim paket. Dalam hal ini, Tox akan mencoba lagi melalui relai yang berbeda. Hanya jika semua node bootstrap jahat, transmisi akan gagal.
  • Mereka dapat mengirim paket yang dimodifikasi. Berkat kode autentikasi pesan, setiap gangguan pada data kemungkinan besar akan terdeteksi. Jika pengirim berhasil merusak dengan cara yang tidak terdeteksi oleh perangkat lunak, paket yang didekripsi akan menjadi sampah, dan lapisan aplikasi (dekoder protokol Tox) akan membuangnya. Oleh karena itu ini memiliki efek yang sama seperti tidak menyampaikan paket sama sekali.

Itu pada dasarnya. Dalam kasus apa pun relay jahat tidak dapat membaca data Anda. Itu hanya dapat memilih untuk tidak menyampaikan, dan hanya jika setiap node bootstrap jahat, Anda tidak dapat berkomunikasi. Ini akan sangat mengganggu, dan kami tidak akan senang dengan hal itu, tetapi tidak ada informasi yang dikompromikan pada titik mana pun.


Saya harap ini menjelaskan beberapa hal. Saya belum mengoreksi balasan ini, tetapi saya akan memastikannya terwakili dengan benar di situs web untuk referensi di masa mendatang. Beri tahu saya jika Anda memiliki masalah lain. Terima kasih lagi untuk membawa ini.

Semua 10 komentar

Anda salah. Node bootstrap DHT ada untuk memfasilitasi bergabung dengan DHT. Jika Anda ingin penjelasan lebih lanjut, Anda dapat melihat artikel ini: https://en.wikipedia.org/wiki/Distributed_hash_table. Atau, Anda dapat bergabung dengan kami di IRC, di saluran #tox di Freenode, dan kami akan mencoba menjelaskan semuanya sebaik mungkin.

Lalu lintas Anda mungkin melalui node bootstrap yang bertindak sebagai relai TCP sementara tox menggunakan TCP untuk koneksi teman. Ini mirip dengan TURN . Lalu lintas Anda masih terenkripsi ujung ke ujung, sehingga kerahasiaan dan keaslian pesan Anda tidak pernah terganggu. Relay TCP ini mungkin seperti yang Anda lihat dalam analisis lalu lintas Anda. Hal ini dijelaskan secara rinci dalam spesifikasi protokol tox .

utox-inline_1

Ini adalah lalu lintas suara. Itu dienkripsi dan sekarang pihak ketiga tidak dapat mendekripsi ini, tetapi itu tidak berarti bahwa itu tidak mungkin di masa depan.

Saya memiliki alamat IPv4/IPv6 langsung. Mengapa saya harus mengirim data saya ke node?
Anda mengatakan - 'Node bootstrap DHT ada untuk memfasilitasi bergabung dengan DHT.', tapi itu tidak benar. Dalam lalu lintas tangkapan layar terlampir melewati node, tidak langsung ke saya.

'Tox adalah perangkat lunak yang mudah digunakan yang menghubungkan Anda dengan teman dan keluarga tanpa ada orang lain yang mendengarkan. ' - itu bohong? Lalu lintas dienkripsi, oke. Tapi itu menggunakan node untuk pengiriman? Saya tidak tahu, siapa yang memelihara simpul ini. Bagaimana jika satu atau lebih node salah?

Saya mengerti bagaimana poin ini bisa terasa salah, jadi saya telah mengajukan masalah dokumentasi untuk meningkatkan presentasi kami tentang itu. Terima kasih telah menjelaskan pemikiran Anda.

Untuk menjelaskan kekhawatiran spesifik Anda dengan cepat, saya akan memparafrasekannya. Tolong beri tahu saya jika saya salah paham:

T: _Saya prihatin dengan kenyataan bahwa paket data yang datang dari komputer saya tidak dikirimkan langsung ke komputer teman saya, tetapi terkadang (atau setiap saat, tergantung pada kondisi jaringan) diteruskan melalui komputer pihak ketiga._

J: Pertama, pertimbangkan paket yang langsung dari komputer Anda ke komputer teman Anda, dengan asumsi Anda menggunakan wifi lokal:

  • Komputer Anda membuat paket Tox terenkripsi (lihat detail enkripsi ), yang dibungkus dalam paket UDP yang berisi port sumber/tujuan (acak/33445), lalu dalam paket IP yang berisi alamat IP sumber/tujuan (Anda dan teman Anda) , lalu bingkai Nirkabel yang berisi alamat MAC sumber/tujuan (Anda dan titik akses).
  • Bingkai Nirkabel ini dikirim melalui saluran terenkripsi AES (dengan asumsi WPA2).
  • Titik akses nirkabel serta setiap pengguna jaringan lainnya menerimanya. Pengguna lain biasanya mengabaikan paket, tetapi tidak harus. Membaca paket yang tidak dimaksudkan untuk Anda disebut sniffing. Ini adalah titik pertama di mana orang lain dapat membaca paket.
  • Titik akses nirkabel terhubung ke router WAN (internet) yang membuat koneksi ke router penyedia layanan internet Anda melalui beberapa cara (kopling akustik, ISDN, ADSL, Kabel, Satelit, serat, ...). Koneksi ini dapat dienkripsi (beberapa satelit) tetapi biasanya tidak. Pada titik ini, router WAN yang Anda kirimi paket akan membuat bingkai Ethernet yang berisi alamat MAC-nya sendiri dan alamat MAC dari router berikutnya yang terhubung, yang merupakan router ISP Anda. Dalam perjalanan, alamat IP dan MAC kemungkinan tidak terenkripsi dan dapat dibaca oleh siapa pun yang mengendus serat optik antara Anda dan ISP. Ini adalah titik kedua di mana orang lain dapat membaca paket.
  • Setelah paket tiba di ISP, paket tersebut akan melalui berbagai sistem internal di pusat data mereka, mungkin dienkripsi atau tidak dienkripsi pada berbagai titik waktu. Router ISP kemudian akan memutuskan router berikutnya yang akan dikirimi paket, ditentukan oleh alamat IP. Untuk melakukan ini, ia akan membuka bingkai Ethernet yang diterimanya dan membungkusnya dengan yang baru dan mengirimkannya ke router berikutnya. Kapan saja selama pemrosesan di ISP, karyawan pusat data atau administrasi sistem dari ISP tersebut dapat mengakses paket Anda. Titik akses ketiga.
  • Sekarang paket Anda akan berpindah dari router ke router (coba traceroute $your_friend_ip untuk melihat kemana perginya), masing-masing memiliki akses gratis ke frame Ethernet, paket IP, dan paket UDP serta isinya. Banyak titik akses, sebut saja yang ke-4.
  • Kemudian teman Anda mungkin berada dalam situasi yang sama, di wifi lokal di tempat yang berbeda. Sekali lagi router dan anggota jaringan nirkabel mereka dapat membaca paket. Titik akses kelima.
  • Baru sekarang, akhirnya, paket Anda tiba di komputer teman Anda. Ia menerima bingkai Nirkabel, membukanya untuk menemukan paket IP, membukanya untuk menemukan paket UDP, membukanya untuk menemukan paket Tox, yang kemudian diproses oleh implementasi protokol Tox. Pemrosesan ini melibatkan dekripsi dan dekode paket dan bertindak di atasnya, biasanya mengakibatkan klien teman Anda menampilkan pesan, memutar audio atau video, atau melakukan beberapa aktivitas tingkat aplikasi lainnya.

Seperti yang Anda lihat, ada banyak titik selama transmisi "langsung" dari Anda ke teman Anda di mana paket dapat diperiksa oleh orang yang sewenang-wenang. Enkripsi ujung ke ujung berarti bahwa tidak ada titik antara Anda dan teman Anda yang dapat membaca konten sebenarnya yang ingin Anda sampaikan. Mereka selalu hanya dapat melihat data terenkripsi.

Sekarang, menambahkan relay TCP di tengah hanya akan memperpanjang rute (secara teoritis bisa mempersingkat, tapi itu tidak mungkin). Siapa pun yang menjalankan relai dapat membaca paket, sama seperti orang lain antara Anda dan teman Anda. Protokol kripto Tox memastikan bahwa komunikasi Anda aman.

Sekarang, saya juga melihat kekhawatiran kedua:

T: _Apa yang terjadi jika salah satu node yang menyampaikan data saya jahat?_
J: Tox memilih sejumlah relai TCP yang dapat digunakan untuk berkomunikasi jika koneksi UDP langsung tidak memungkinkan (misalnya karena NAT atau firewall). Relay jahat dapat melakukan sangat sedikit hal untuk melakukan kejahatan:

  • Mereka dapat memilih untuk tidak mengirim paket. Dalam hal ini, Tox akan mencoba lagi melalui relai yang berbeda. Hanya jika semua node bootstrap jahat, transmisi akan gagal.
  • Mereka dapat mengirim paket yang dimodifikasi. Berkat kode autentikasi pesan, setiap gangguan pada data kemungkinan besar akan terdeteksi. Jika pengirim berhasil merusak dengan cara yang tidak terdeteksi oleh perangkat lunak, paket yang didekripsi akan menjadi sampah, dan lapisan aplikasi (dekoder protokol Tox) akan membuangnya. Oleh karena itu ini memiliki efek yang sama seperti tidak menyampaikan paket sama sekali.

Itu pada dasarnya. Dalam kasus apa pun relay jahat tidak dapat membaca data Anda. Itu hanya dapat memilih untuk tidak menyampaikan, dan hanya jika setiap node bootstrap jahat, Anda tidak dapat berkomunikasi. Ini akan sangat mengganggu, dan kami tidak akan senang dengan hal itu, tetapi tidak ada informasi yang dikompromikan pada titik mana pun.


Saya harap ini menjelaskan beberapa hal. Saya belum mengoreksi balasan ini, tetapi saya akan memastikannya terwakili dengan benar di situs web untuk referensi di masa mendatang. Beri tahu saya jika Anda memiliki masalah lain. Terima kasih lagi untuk membawa ini.

Saya baru saja membaca pesan Anda lagi, dan menemukan bahwa saya melewatkan satu kekhawatiran lagi:

T: Meskipun data dienkripsi sekarang, apa yang memastikan bahwa itu tidak akan didekripsi di masa mendatang?
J: Protokol Tox menerapkan kerahasiaan ke depan yang sempurna melalui penggunaan kunci sementara. Ini berarti bahwa jika salah satu kunci tersebut disusupi, beberapa pesan dapat didekripsi, tetapi tidak seluruh riwayat komunikasi Anda. Bagian "beberapa pesan" dari kalimat ini akan dikurangi menjadi "satu pesan" di masa mendatang. Jika kunci rahasia jangka panjang Anda disusupi, tidak ada komunikasi sebelumnya yang dapat didekripsi.

Jika primitif kriptografi yang kita gunakan rusak, kita kalah. Itu tergantung di mana mereka rusak, ini adalah kemungkinan skenario terburuk:

  • Sandi ( salsa20 ) dapat dengan mudah dibalik tanpa kunci. Dalam hal ini, semua komunikasi masa lalu dikompromikan.
  • Pertukaran kunci primitif ( curve25519 ) dipecah sedemikian rupa sehingga kunci rahasia dapat dengan mudah dipulihkan dengan kunci publik. Dalam hal ini, juga semua komunikasi masa lalu dikompromikan.

Skenario ini sangat tidak mungkin menjadi kenyataan dalam waktu dekat, atau mungkin selamanya. Dengan pemahaman saat ini di komunitas kriptografi, hanya komputasi kuantum yang bisa membuat skenario kedua terjadi. Skenario pertama diyakini mustahil.


Ini semua mengatakan, saya juga memperhatikan bahwa Anda mengatakan Anda memiliki alamat IPv4 langsung. Apa artinya ini? Jika Anda memiliki alamat IPv4 publik yang ditetapkan ke komputer Anda, dan port 33445 terbuka, Tox harus membuat koneksi langsung dengan sangat cepat. Jika tidak, itu adalah bug dan kita harus bekerja sama untuk mencari tahu mengapa ia memilih untuk menggunakan TCP.

Terima kasih banyak atas penjelasan ini. Sekarang saya sedikit lebih mengerti.
Saya tidak yakin tentang alamat IPv4 langsung...Saya menggunakan WireGuard VPN. WireGuard diinstal pada server virtual, yang memiliki alamat IPv4 & IPv6 langsung. Semua lalu lintas dibungkus dalam namespace.
Info jaringan laptop: https://Gist.github.com/DebugReport/1268e15c3bd1c99b56929d645d99392b
Jika saya salah, saya minta maaf.
Mungkin IPv4 tidak langsung, tetapi bagaimana dengan IPv6? Saya dapat menggunakan koneksi langsung jika klien lain memiliki IPv6 juga?

Ya, jika kedua pihak memiliki IPv6, dan konfigurasi firewall tidak memblokir port 33445 (atau port lain di dekatnya, antara 33445 dan 33545), itu akan berfungsi. Apakah teman Anda menggunakan VPN yang sama?

Tidak.
Hmm... Pertanyaan. Kita harus selalu menggunakan node? Atau hanya jika salah satu dari kita tidak memiliki IP langsung (hanya IPv4?)?
Untuk IPv6 (saya) <-> IPv6 (teman) apakah node diperlukan? Jika ya - mengapa?

(Biarkan masalah ini tetap terbuka sampai semua pertanyaan ini dijawab dalam dokumentasi)

Jika salah satu dari Anda memiliki IP publik, maka yang lain dapat melakukan bootstrap menggunakan IP dan port yang lain. Ini memerlukan dukungan klien. Saya rasa klien saat ini tidak memiliki:

  • Dapatkan kunci publik DHT dari klien dengan IP publik dan port terbuka ( tox_self_get_dht_id ) dan portnya ( tox_self_get_udp_port ).
  • Kirim kunci ini ke yang lain entah bagaimana (dikte melalui telepon atau pesan di Skype atau sesuatu).
  • Yang lain sekarang perlu bootstrap menggunakan tupel (key, ip, port) .

Setelah ini, Anda memiliki jaringan Tox 2 orang pribadi. Jadi, secara teori Anda tidak memerlukan node lain. Mereka memang membuat segalanya lebih mudah.

Jika salah satu dari Anda memiliki IP publik dan port terbuka, maka menghubungkan ke node bootstrap juga memungkinkan Anda membuat koneksi langsung. Node bootstrap DHT tidak ada hubungannya dengan apakah Anda dapat terhubung atau tidak. Koneksi langsung harus dimungkinkan bahkan jika hanya satu dari Anda yang memiliki IP publik dan port terbuka. Yang lain akan terhubung ke sana, yang akan membuat rute di router lokal dan memberi klien port publik acak sementara.

Sekedar catatan: Saya melihat perilaku yang sama dengan C-Toxcore. Salah satu pihak menggunakan VPS dengan alamat IP publik dan tanpa firewall, yang lain berada di belakang NAT tetapi memiliki port Tox yang diteruskan - jadi mereka harus dapat dijangkau bersama. Lalu lintas masih dialihkan melalui TCP.

Saya tidak melihat ini sebagai masalah keamanan, tetapi ini pasti masalah skalabilitas jika jaringan P2P menyampaikan semua lalu lintasnya melalui relai.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

zoff99 picture zoff99  ·  3Komentar

zetok picture zetok  ·  9Komentar

grinapo picture grinapo  ·  4Komentar

GrayHatter picture GrayHatter  ·  3Komentar

zetok picture zetok  ·  3Komentar