Dasturiy ta'minot

Hard-Chat – brauzerda serverless, RAM-only P2P terminal chat

7-sentabr, 2026, 09:060 ko'rish5 daqiqa o'qish
Hard-Chat – brauzerda serverless, RAM-only P2P terminal chat

Internetda maxfiy suhbatlar uchun ko'p platformalar mavjud, lekin ko'pchiligi serverga ma'lumotlarni saqlaydi yoki foydalanuvchi hisobini talab qiladi. Hard-Chat bu an'anaviy modelni butunlay bekor qiladi: brauzerda to'g'ridan-to'g'ri P2P aloqasi, AES‑GCM 256‑bit shifrlash, va sahifa yopilganda hech qanday ma'lumot qoldirmaydi.

Texnik fon va asosiy komponentlar

Hard-Chat GitHub sahifasida ochiq kodli loyiha sifatida taqdim etilgan. Dastur HTML, CSS va JavaScriptdan iborat bo'lib, hech qanday server tomon kodini ishlatmaydi. Faqat quyidagi tashqi infratuzilma komponentlari ishlatiladi:

PBKDF2(
  password = Room Key,
  salt = "p2p-zero-trace-salt-v1" (fixed, hardcoded),
  iterations = 100,000,
  hash = SHA-256
) → 256-bit AES-GCM key
  • Signalling – PeerJS jamoaviy bulut brokeri orqali ikki brauzer bir-birini topadi.
  • Data transport – WebRTC DataChannel orqali shifrlangan ma'lumot uzatish.
  • NAT traversal – 18 ta STUN/TURN serveri (Google, Cloudflare, Twilio va boshqalar) orqali tarmoq cheklovlarini aylanadi.
  • Encryption – AES‑GCM 256‑bit, kalit PBKDF2 (100 000 iteratsiya, SHA‑256) orqali olinadi.
  • Hosting – GitHub Pages orqali statik fayllar HTTPS kontekstida xizmat ko'rsatadi.

Room Key va kalit ishlab chiqarish jarayoni

Har bir suhbat sessiyasi uchun foydalanuvchi "Initialize Room" tugmasini bosganda 100‑belgili Room Key tasodifiy yaratiladi. Bu kalit quyidagi maqsadlarda ishlatiladi:

  • PBKDF2 yordamida 256‑bit AES‑GCM kalitini hosil qilish (xabarlarni shifrlash).
  • SHA‑256 hashidan olingan 32‑hex belgili identifikator ("ztt-" prefiksi bilan) PeerJS brokerida foydalanuvchini ro'yxatga olish.

Kalit yaratishda crypto.getRandomValues() funksiyasi ishlatiladi, bu kriptografik xavfsizlikni ta'minlaydi. Kalitda katta va kichik harflar, raqamlar hamda "-_!@#$%^&*" belgilarining kombinatsiyasi bo'lib, entropiya juda yuqori.

SHA-256(Room Key) → first 32 hex characters, prefixed with "ztt-"

Ulanish jarayoni va ICE algoritmi

Host va Guest bir xil Room Key ni qo'lda almashgandan so'ng, PeerJS brokeri orqali bir-birini topadi. Keyin WebRTC ICE (Interactive Connectivity Establishment) protokoli ishga tushadi:

  • Mahalliy IP (host candidates) va STUN orqali aniqlangan jamoaviy IP (srflx candidates) sinovdan o'tadi.
  • Agar to'g'ridan-to'g'ri aloqada muammo bo'lsa, TURN serverlari orqali relay yo'li tanlanadi.
  • Algoritm birinchi muvaffaqiyatli yo'lni tanlab, ma'lumotlar shifrlangan DataChannel orqali uzatiladi.

Ulanish 120 soniya ichida amalga oshmasa, sessiya avtomatik ravishda tugaydi, PeerJS ob'ekti va DataConnection yo'q qilinadi.

1. Generate a random 12-byte IV (crypto.getRandomValues)
2. ciphertext = AES-GCM-Encrypt(key, IV, plaintext)
3. payload = IV || ciphertext   (concatenated, IV in plaintext at the front)
4. Send payload as a Uint8Array via conn.send()

Taqqoslash: an'anaviy serverli chatlar bilan farqlar

Hard-Chat ni mashhur serverli platformalar (Telegram, Signal, WhatsApp) bilan solishtirsak, quyidagi farqlarni ko'rish mumkin:

  • Server yo'qligi – ma'lumotlar hech qayerda saqlanmaydi, shu bilan birga provayder monitoringi xavfi kamayadi.
  • Tarix yo'qligi – sahifa yopilganda barcha xabarlar, kalitlar va holat ma'lumotlari o'chadi.
  • Qo'shimcha konfiguratsiya – foydalanuvchi faqat Room Key ni almashadi, boshqa sozlamalar yoki hisob yaratish shart emas.
  • Anonimlik cheklovlari – loyiha tarmoq darajasida anonimlikni kafolatlamaydi; IP manzillar PeerJS brokeri orqali ko'rinishi mumkin.

Bu farqlar xavfsizlikni oshiradi, lekin foydalanuvchi tajribasini ham soddalashtiradi: har safar yangi kalit yaratish, aloqani qo'lda boshlash talab etiladi.

1. Extract the first 12 bytes as the IV
2. The rest is the ciphertext (includes the 16-byte GCM authentication tag at the end)
3. plaintext = AES-GCM-Decrypt(key, IV, ciphertext)

Cheklovlar va ochiq savollar

Hard-Chat ning ba'zi texnik cheklovlari ham mavjud:

  • HTTPS talab – sahifa faqat xavfsiz kontekst (HTTPS)da ishlaydi, shuning uchun mahalliy fayl sifatida ochilmaydi.
  • Bir vaqtning o'zida ochiq bo'lish – ikki tomon ham sahifani bir vaqtning o'zida ochishi kerak, aks holda ulanish boshlanmaydi.
  • Room Key uzunligi – 100 belgili kalitni to'liq nusxa ko'chirish qiyin bo'lishi mumkin, xato kiritish ehtimoli oshadi.
  • PeerJS brokerining ishonchliligi – aloqani boshlash uchun brokerga tayanadi; broker ishlamasa, ulanish boshlanmaydi.
  • Sabit PBKDF2 tuzumi – barcha sessiyalarda bir xil "p2p-zero-trace-salt-v1" ishlatiladi; bu kamroq xavfsiz bo'lishi mumkin, lekin yuqori entropiyali kalit tufayli amalda muammo kam.

Kelajakda quyidagi savollar hal qilinishi lozim: PeerJS brokeri o'rniga decentralizatsiya qilingan signalling protokoli, kalit almashish avtomatlashtirish (masalan, QR kod orqali) va mobil qurilmalarda offline rejimda ishlash imkoniyati.

GSsqZCtDC7rf53U6gC5cJ4weAYYT9g7twxz9t15mfRDV

Kimga va qanday ta'sir qiladi?

Hard-Chat asosan quyidagi auditoriyaga qiziqarli bo'ladi:

  • Maxfiylik va xavfsizlikka e'tiborli jurnalistlar, tadqiqotchilar va aktivistlar.
  • Texnologiya ixlosmandlari, WebRTC va kriptografiya bilan shug'ullanuvchilar.
  • Kichik guruhlar, masalan, dasturchilar yoki ilmiy hamkorlar, tezkor, tarixsiz aloqani xohlashadi.

Ushbu foydalanuvchilar uchun platforma quyidagi afzalliklarni taqdim etadi:

  • Serverga bog'lanmaslik tufayli ma'lumotlar oqimini nazorat qilish imkoniyati.
  • Shifrlash darajasi (AES‑GCM 256‑bit) yuqori darajada himoya beradi.
  • Zero‑trace konsepti maxfiy suhbatlarni saqlashga qarshi qonuniy talablarni qondiradi.

Xulosa

Hard-Chat brauzerda to'liq serverless, RAM‑only P2P chatni amalga oshiruvchi noyob loyiha. U WebRTC, PeerJS va kuchli kriptografik algoritmlarni birlashtirib, foydalanuvchilarga tarixsiz, shifrlangan aloqani taklif etadi. Texnik jihatdan yechim mustahkam, lekin ulanishni boshlash jarayoni, brokerga tayanish va uzun Room Key ni qo'lda almashish kabi amaliy cheklovlar mavjud. Kelajakda signallingni decentralizatsiya qilish va kalit almashishni soddalashtirish orqali bu cheklovlar yengillashishi mumkin. Xulosa qilib aytganda, Hard-Chat maxfiy, tezkor va serverga bog'liq bo'lmagan chatni qidirayotgan foydalanuvchilar uchun qimmatli vosita bo'lib, ochiq kodli hamjamiyatda yanada rivojlanish imkoniyatiga ega.

Asl manba: github.com

Manba: Hacker News
#P2P #WebRTC #end-to-end encryption #browser chat
Telegram da muhokama qilish