HomeChat

HomeChat

Политика конфиденциальности Privacy Policy

Модель безопасности

HomeChat построен на принципе «недоверенного сервера»: даже при полной компрометации сервера содержимое сообщений, звонков, файлов и т. д. остаётся недоступным.

Security Model

HomeChat is built on the "untrusted server" principle: even if the server is fully compromised, the content of messages, calls, files, and more remains inaccessible.

Что мы собираем

Ничего, что вас идентифицирует. HomeChat требует только имя пользователя на ваш выбор. Номер телефона, email, дата рождения и любые другие персональные данные не запрашиваются и не собираются.

What We Collect

Nothing that identifies you. HomeChat only requires a username of your choosing. Phone number, email, date of birth, and any other personal data are neither requested nor collected.

Как хранятся сообщения

Все сообщения шифруются на вашем устройстве до отправки с использованием протокола Signal (Double Ratchet + X3DH). Сервер никогда не имеет доступа к содержимому ваших сообщений, звонков или медиафайлов. Ключи шифрования никогда не покидают ваше устройство. На сервере сообщения хранятся в зашифрованном виде. Сервер видит только техническую информацию. Содержимое сообщений, вложения и любые данные переписки недоступны серверу — они остаются зашифрованными и могут быть расшифрованы только на устройствах участников диалога. Как только сообщение доставлено и прочитано получателем, сервер удаляет свою зашифрованную копию — она там больше не нужна. Если сообщение ещё не доставлено (например, получатель офлайн), копия хранится на сервере не дольше 7 дней, после чего удаляется безвозвратно, даже если так и не была доставлена. На вашем устройстве сообщения хранятся в локальной базе данных в зашифрованном виде. Расшифровка происходит только в момент, когда вы открываете чат. Если вы включили блокировку приложения собственным PIN-кодом (см. раздел «Блокировка приложения» ниже), ключ расшифровки этой базы производится из PIN и не существует, пока PIN не введён. Текстовые сообщения сохраняются на вашем устройстве навсегда, пока вы не удалите чат или аккаунт. Они не удаляются автоматически.

How Messages Are Stored

All messages are encrypted on your device before sending, using the Signal protocol (Double Ratchet + X3DH). The server never has access to the content of your messages, calls, or media files. Encryption keys never leave your device. On the server, messages are stored in encrypted form. The server sees only technical information. The content of messages, attachments, and any conversation data are inaccessible to the server — they remain encrypted and can only be decrypted on the devices of the conversation participants. As soon as a message has been delivered to and read by the recipient, the server deletes its encrypted copy — it is no longer needed there. If a message has not yet been delivered (for example, the recipient is offline), the copy is kept on the server for no more than 7 days, after which it is permanently deleted, even if it was never delivered. On your device, messages are stored in a local encrypted database. Decryption happens only when you open the chat. If you have enabled the app's own PIN lock (see "App Lock" below), the key used to decrypt this database is derived from the PIN and does not exist until the PIN is entered. Text messages are stored on your device permanently, until you delete the chat or your account. They are never automatically deleted.

Медиафайлы, стикеры и документы

Фото, видео, аудио, голосовые сообщения, документы и стикеры шифруются отдельным случайным ключом (AES-256-GCM) непосредственно на устройстве до отправки. Сервер получает только непрозрачный зашифрованный blob со случайным идентификатором — ни содержимое, ни ключ расшифровки ему недоступны. Ключ, вектор инициализации и хэш целостности файла передаются получателю исключительно внутри E2E-зашифрованного сообщения Double Ratchet. Расшифровать медиафайл без доступа к устройствам участников переписки невозможно. Автоматическое удаление медиафайлов: С сервера — как только файл полностью доставлен получателю (у него на устройстве завершилась загрузка), сервер удаляет свою копию файла — обычно в течение минуты после этого момента. 7 дней — это не общий срок хранения, а максимум для файлов, которые так и не удалось доставить (например, получатель долго остаётся офлайн): если доставка не состоялась, копия автоматически и безвозвратно удаляется через 7 дней. Из чата на устройстве — если вы не скачали файл на устройство в течение 7 дней, он также удаляется из чата и становится недоступным. Как сохранить файл навсегда: нажмите кнопку сохранения в чате, пока файл ещё доступен. После этого файл сохраняется в локальном хранилище вашего устройства, остаётся в чате навсегда и не удаляется автоматически. Зелёная галочка на файле подтверждает, что он сохранён. Хранение на устройстве: помимо шифрования при передаче, полученные и отправленные медиафайлы также хранятся зашифрованными на диске вашего устройства. Если включена блокировка приложения PIN-кодом, тот же самый PIN-производный ключ защищает и их — без верного PIN эти файлы физически не расшифровываются.

Media Files, Stickers, and Documents

Photos, videos, audio, voice messages, documents, and stickers are each encrypted with a separate random key (AES-256-GCM) on the device before being sent. The server receives only an opaque encrypted blob with a random identifier — neither the content nor the decryption key is accessible to it. The key, initialisation vector, and integrity hash are delivered to the recipient exclusively inside an E2E-encrypted Double Ratchet message. Decrypting a media file without access to the participants' devices is impossible. Automatic media file deletion: From the server — as soon as a file is fully delivered to the recipient (the download on their device completes), the server deletes its copy of the file — typically within a minute of that point. The 7-day period is not a general storage duration but a maximum for files that were never successfully delivered (for example, if the recipient stays offline for a long time): if delivery never happens, the copy is automatically and permanently deleted after 7 days. From the chat on your device — if you haven't downloaded a file to your device within 7 days, it is also removed from the chat and becomes unavailable. How to keep a file forever: tap the save button in the chat while the file is still available. The file will then be saved to your device's local storage, remain in the chat permanently, and will not be automatically deleted. A green checkmark on the file confirms that it has been saved. On-device storage: in addition to transit encryption, received and sent media files are also stored encrypted on your device's disk. If the app's PIN lock is enabled, the same PIN-derived key protects them too — without the correct PIN these files cannot be decrypted.

Аватары

Изображение профиля шифруется отдельным случайным ключом (AES-256-GCM), уникальным для каждого пользователя, и хранится на сервере только в зашифрованном виде. Ключ аватара передаётся через сервер пользователям, которые добавили вас в контакты, — вместе с самим зашифрованным файлом. На устройстве полученные аватары также хранятся зашифрованными на диске и, при включённой блокировке приложения, защищены тем же PIN-производным ключом, что и остальные данные.

В отличие от переписки, аватары сейчас не защищены сквозным шифрованием: ключ проходит через сервер, поэтому технически сервер способен расшифровать изображение профиля. (Будет устранено в следующих релизах: ключ аватара станет передаваться каждому контакту отдельно, зашифрованным в его криптографической сессии, — тогда сервер будет видеть только шифротекст.)

Avatars

Your profile picture is encrypted with a separate random key (AES-256-GCM), unique to each user, and stored on the server only in encrypted form. The avatar key is delivered through the server to users who have added you as a contact, alongside the encrypted file itself. On your device, received avatars are also stored encrypted on disk and, when app lock is enabled, are protected by the same PIN-derived key as the rest of your data.

Unlike your messages, avatars are not currently end-to-end encrypted: the key passes through the server, so the server is technically able to decrypt a profile picture. (This will be addressed in a future release: the avatar key will instead be delivered to each contact individually, encrypted within their cryptographic session, so that the server only ever sees ciphertext.)

Реакции на сообщения

Реакции (emoji-отклики на сообщения) — функция, недоступная в секретных чатах Telegram — реализованы в HomeChat и шифруются по тому же механизму, что и текстовые сообщения: AES-256-GCM с одноразовым ключом из цепочки Double Ratchet. Сервер видит только зашифрованный blob — ни emoji, ни ID сообщения, на которое поставлена реакция, ни действие (добавление или удаление) серверу недоступны.

Message Reactions

Emoji reactions to messages — a feature unavailable in Telegram's secret chats — are supported in HomeChat and encrypted using the same mechanism as text messages: AES-256-GCM with a one-time key derived from the Double Ratchet chain. The server sees only an encrypted blob — the emoji itself, the ID of the message being reacted to, and the action (add or remove) are all inaccessible to it.

Голосовые и видеозвонки

Звонки защищены двойным шифрованием. Сигналы установки соединения (offer, answer, ICE-кандидаты) шифруются AES-GCM с ключом, производным от Double Ratchet — сервер не может видеть IP-адреса, SDP или тип сигнала. Аудио- и видеопоток защищён DTLS/SRTP. Разговор не записывается. В большинстве случаев соединение устанавливается напрямую между устройствами (P2P). Если прямое соединение невозможно из-за сетевых ограничений — трафик проходит через два независимых резервных TURN-сервера, каждый с собственным уникальным секретом. Компрометация одного сервера не затрагивает другой. TURN-серверы видят только зашифрованный DTLS/SRTP поток и не могут его расшифровать — ключи сессии известны только устройствам участников звонка. Доступ к каждому серверу защищён одноразовыми HMAC-SHA1 токенами с временем жизни 1 час — перехваченные credentials невозможно использовать повторно. Инфраструктура разнесена: звонки обслуживаются отдельными TURN-серверами, медиафайлы и сообщения — основным сервером, по разным каналам (медиа через HTTPS, сообщения через WSS). Даже при полной компрометации сервера расшифровать перехваченные звонки невозможно.

Voice and Video Calls

Calls are protected by double encryption. Connection setup signals (offer, answer, ICE candidates) are encrypted with AES-GCM using a key derived from the Double Ratchet — the server cannot see IP addresses, SDP, or signal type. The audio and video stream is protected by DTLS/SRTP. Conversations are never recorded. In most cases a direct peer-to-peer connection is established between devices. If a direct connection is not possible due to network restrictions, traffic is relayed through two independent fallback TURN servers, each with its own unique secret. Compromise of one server does not affect the other. The TURN servers see only the encrypted DTLS/SRTP stream and cannot decrypt it — the session keys are known only to the call participants' devices. Access to each server is protected by one-time HMAC-SHA1 tokens with a 1-hour lifetime — intercepted credentials cannot be reused. The infrastructure is separated: calls are handled by dedicated TURN servers, while media files and messages are handled by the main server over distinct channels — media via HTTPS, messages via WSS. Even with full server compromise, decrypting intercepted calls is impossible.

Токены уведомлений

Push-токены и VoIP-токены хранятся на сервере исключительно для доставки уведомлений. Они удаляются немедленно при удалении аккаунта.

Notification Tokens

Push tokens and VoIP tokens are stored on the server solely for delivering notifications. They are deleted immediately when an account is removed.

Содержимое push-уведомлений

Многие мессенджеры отображают текст сообщения в push-уведомлении — он сохраняется в системном хранилище iOS и может быть извлечён без взлома самого приложения. HomeChat не раскрывает содержимое сообщений в уведомлениях. Push содержит только имя отправителя и строку «🔒 Зашифрованное сообщение» — без текста, без медиа, без каких-либо данных переписки.

Push Notification Content

Many messaging apps display message text in push notifications — this text is stored in the iOS system and can be extracted without breaking the app itself. HomeChat does not expose message content in notifications. A push contains only the sender's name and the string "🔒 Encrypted message" — no text, no media, no conversation data of any kind.

Хранение ключей на устройстве

Все приватные криптографические ключи хранятся исключительно в системном хранилище iOS Keychain с атрибутом ThisDeviceOnly — они физически не могут быть перенесены на другое устройство, извлечены при резервном копировании iCloud или получены через iTunes Backup. Это означает, что даже при наличии полного доступа к резервной копии телефона прочитать вашу переписку невозможно. Ключ идентификации дополнительно защищён аппаратным модулем Secure Enclave — изолированным защищённым чипом устройства, физически отделённым от основного процессора. Приватный ключ никогда не покидает этот чип и не может быть извлечён из него ни приложением, ни операционной системой, ни при полном физическом доступе к устройству — все криптографические операции выполняются внутри чипа. Локальная база сообщений, файлы криптографических сессий и кэш медиафайлов также исключены из iCloud Backup — они существуют только на вашем устройстве.

Key Storage on Device

All private cryptographic keys are stored exclusively in the iOS system Keychain with the ThisDeviceOnly attribute — they physically cannot be transferred to another device, extracted via iCloud Backup, or obtained through iTunes Backup. This means that even with full access to a phone backup, reading your messages is impossible. The identity key is additionally protected by the Secure Enclave — an isolated, physically separate secure chip on the device. The private key never leaves this chip and cannot be extracted from it by the app, the operating system, or even with full physical access to the device — all cryptographic operations are performed inside the chip. The local message database, cryptographic session files, and media cache are also excluded from iCloud Backup — they exist only on your device.

⚠️ Блокировка приложения

HomeChat поддерживает дополнительную блокировку доступа собственным PIN-кодом, независимым от системного пароля iOS. Это не просто экран поверх приложения. Пока PIN не введён, ключ шифрования вашей локальной базы чатов, медиафайлов, аватаров и данных криптографических сессий физически не существует нигде в памяти приложения — он производится из PIN-кода в момент ввода (через PBKDF2, 200 000 итераций) и никогда не сохраняется сам по себе, даже в зашифрованном виде. При уходе приложения в фон этот ключ немедленно стирается из памяти. Это значит, что даже при физическом доступе к разблокированному телефону без ввода вашего PIN содержимое переписки, файлов и криптографических сессий остаётся недоступным. PIN-код хранится в Keychain с атрибутом, при котором он существует только пока на устройстве установлен системный пароль, — при отключении пароля PIN автоматически и безвозвратно удаляется. Отдельно можно задать тревожный код, отличный от обычного PIN. Введение тревожного кода повлечёт за собой безвозвратное удаление всей информации из приложения, включая все чаты, контакты, медиа, переписку и т.д. Ваш аккаунт при этом останется зарегистрированным, повторная регистрация не потребуется.

⚠️ App Lock

HomeChat supports an additional access lock using its own PIN code, independent of the iOS system passcode. This is not just a screen placed over the app. Until the PIN is entered, the encryption key for your local chat database, media files, avatars, and cryptographic session data does not exist anywhere in the app's memory — it is derived from the PIN at the moment of entry (via PBKDF2, 200,000 iterations) and is never stored anywhere, not even in encrypted form. The key is immediately wiped from memory when the app moves to the background. This means that even with physical access to an unlocked phone, without entering your PIN the content of your chats, files, and cryptographic sessions remains inaccessible. The PIN is stored in the Keychain with an attribute that makes it exist only while the device has a system passcode set — if the passcode is removed, the PIN is automatically and permanently deleted. You can also set a separate panic code, different from your regular PIN. Entering the panic code will permanently delete all information from the app, including all chats, contacts, media, message history, and more. Your account will remain registered — no new registration will be required.

Защита от повторного воспроизведения сообщений

HomeChat использует три независимых уровня защиты от replay-атак — попыток повторно доставить перехваченное сообщение. Первый уровень — сам протокол Double Ratchet: каждый ключ шифрования одноразовый и уничтожается сразу после использования. Физически невозможно расшифровать перехваченное сообщение повторно. Второй уровень — клиентская дедупликация: приложение запоминает идентификаторы уже обработанных сообщений и отклоняет любые дубликаты ещё до попытки расшифровки. Третий уровень — серверная проверка: сервер хранит в Redis идентификаторы доставленных сообщений и отклоняет повторные попытки доставки с тем же ID.

Replay Attack Protection

HomeChat uses three independent layers of protection against replay attacks — attempts to re-deliver an intercepted message. The first layer is the Double Ratchet protocol itself: every encryption key is one-time-use and destroyed immediately after use. It is physically impossible to decrypt an intercepted message a second time. The second layer is client-side deduplication: the app remembers the identifiers of already-processed messages and rejects any duplicates before even attempting decryption. The third layer is server-side verification: the server stores delivered message identifiers in Redis and rejects repeated delivery attempts with the same ID.

Переустановка и смена устройства

Если вы удалите приложение, HomeChat автоматически обнаружит переустановку при следующем запуске. Сервер уведомит ваши контакты об удалении аккаунта, все локальные данные и ключи шифрования будут безвозвратно очищены. Вход по старому идентификатору станет невозможным — потребуется новая регистрация. История переписки не синхронизируется между устройствами и не восстанавливается при переустановке. Это сознательное архитектурное решение: ключи шифрования не покидают устройство, поэтому перенос истории технически невозможен без компрометации модели безопасности.

Reinstallation and Device Change

If you delete the app, HomeChat will automatically detect the reinstallation on the next launch. The server will notify your contacts of the account deletion, and all local data and encryption keys will be permanently wiped. Signing in with the old identifier becomes impossible — a new registration is required. Message history is not synchronised between devices and is not restored upon reinstallation. This is a deliberate architectural decision: since encryption keys never leave the device, transferring history is technically impossible without compromising the security model.

Удаление аккаунта

При удалении аккаунта все данные уничтожаются безвозвратно — на сервере и на устройстве. Это включает сообщения, медиафайлы, ключи шифрования, данные сессий и токены уведомлений. Действие необратимо.

Account Deletion

When an account is deleted, all data is permanently destroyed — on the server and on the device. This includes messages, media files, encryption keys, session data, and notification tokens. The action is irreversible.

Передача данных третьим лицам

Мы не продаём, не передаём и не раскрываем никакие данные третьим лицам. В приложении нет рекламы, аналитики и трекинга.

Third-Party Data Sharing

We do not sell, share, or disclose any data to third parties. The app contains no advertising, analytics, or tracking of any kind.

Безопасность данных

HomeChat использует четыре независимых слоя защиты. Double Ratchet + X3DH (протокол Signal): каждое сообщение шифруется уникальным ключом, который удаляется сразу после использования. Компрометация одного сообщения не раскрывает остальные — это называется forward secrecy. AAD-аутентификация: метаданные каждого сообщения (версия протокола, порядковый номер и DH ключ обмена) криптографически привязаны к его содержимому. Подмена любого из этих полей в транзите немедленно обнаруживается — это исключает возможность сбить состояние Double Ratchet у получателя. Certificate Pinning: приложение принимает TLS-соединение только с сервером, чей ключ заранее известен. Даже доверенный центр сертификации не может выдать поддельный сертификат незаметно. Отпечаток безопасности (Safety Number): уникальный код, который можно сверить с собеседником вне приложения. Найти его можно в каждом чате в разделе информации о чате. Если коды совпадают — никто, включая сервер, не подменял ключи шифрования. IP-адреса: сервер технически видит IP-адрес для установки соединения, но не сохраняет его, не записывает в логи и не связывает с вашим аккаунтом или перепиской. Сервер видит только зашифрованные данные и метаданные соединения. Содержимое сообщений недоступно никому кроме участников переписки. Защита от несанкционированного доступа: все операции с сообщениями (доставка, прочтение, статусы) проверяются на уровне сервера — пользователь не может взаимодействовать с данными диалога, в котором не является участником.

Data Security

HomeChat uses four independent layers of protection. Double Ratchet + X3DH (Signal protocol): every message is encrypted with a unique key that is deleted immediately after use. Compromising one message does not expose any others — this is known as forward secrecy. AAD authentication: the metadata of each message (protocol version, sequence number, and DH ratchet key) is cryptographically bound to its content. Any tampering with these fields in transit is detected immediately — this prevents an attacker from desynchronising the Double Ratchet state at the recipient's end. Certificate Pinning: the app only accepts a TLS connection from a server whose key is known in advance. Even a trusted certificate authority cannot issue a fraudulent certificate without detection. Safety Number: a unique fingerprint that can be verified with your contact out of band. It can be found in every chat under the chat info screen. If the codes match, no one — including the server — has substituted encryption keys. IP addresses: the server technically sees your IP address to establish a connection, but does not store it, does not log it, and does not associate it with your account or conversations. The server sees only encrypted data and connection metadata. Message content is inaccessible to anyone except the conversation participants. Authorisation enforcement: all message operations (delivery, read receipts, status updates) are verified at the server level — a user cannot interact with data from a conversation they are not part of.

Контакт

По вопросам, связанным с настоящей политикой, обращайтесь к разработчику: tunnelletter@gmail.com

Contact

For questions related to this policy, please contact the developer: tunnelletter@gmail.com

Аудит безопасности

Аудит безопасности июль 2026. Результаты: 35 из 35 пунктов выполнено, 0 критических проблем.

Security Audit

Security audit July 2026. Results: 35 out of 35 items passed, 0 critical issues.