Тёмная Android-клавиатура со сквозным шифрованием сообщений (E2EE) на основе Signal Protocol. Личный форк-слияние двух open source проектов: Simple Keyboard (лёгкая, быстрая клавиатура без телеметрии) и KryptEY (клавиатура со встроенным E2EE-шифрованием на базе Signal Protocol).
Проект собран лично для себя — минимум разрешений, только тёмная тема, без лишнего функционала. Публикуется как есть, на случай если кому-то пригодится такая же связка.
Обычно сквозное шифрование — это отдельный мессенджер (Signal, WhatsApp и т.д.), который шифрует сообщение внутри своего приложения. SimpKrypt устроен иначе: это системная клавиатура, которая шифрует текст ещё до того, как он попадёт в поле ввода любого приложения — почты, SMS, любого мессенджера, заметок и т.п. Печатаете сообщение → клавиатура шифрует его через Signal Protocol → в текстовое поле вставляется уже зашифрованный блок (raw-режим — компактная base64-строка, или fairytale-режим — то же самое, но замаскированное под связный бессмысленный текст, чтобы не привлекать внимание внешним видом). Получатель с той же клавиатурой и тем же контактом расшифровывает сообщение обратно.
То есть шифрование становится независимым от того, каким мессенджером вы пользуетесь — весь E2EE живёт на уровне клавиатуры, а не приложения.
Ключевая деталь слияния: KryptEY уже является форком Simple
Keyboard (пакет rkr.simplekeyboard.inputmethod был переименован в
com.amnesica.kryptey.inputmethod, поверх добавлены модули
signalprotocol и e2ee). Поэтому SimpKrypt — это не сборка двух
разъехавшихся кодовых баз в одну, а перенос уже готовой связки
«клавиатура + Signal Protocol» под новое имя, с прицельными доработками:
- Ребрендинг и смена пакета.
com.amnesica.kryptey.inputmethod→com.simpkrypt.inputmethod, приложение переименовано в SimpKrypt, включая все ~80 локализаций интерфейса (изменено только имя бренда, сам перевод строк не тронут). - Минимальные разрешения. Приложению не нужно ничего, кроме
android.permission.VIBRATE(для тактильного отклика по нажатиям клавиш) — ни доступа к контактам, ни к сети напрямую, ни к хранилищу сверх необходимого для локальных ключей. - Только тёмная тема. Убран выбор светлой темы клавиатуры на уровне кода (а не просто скрыт в UI) — светлую тему невозможно выбрать даже через старый сохранённый параметр. Экран настроек тоже принудительно тёмный, независимо от системной темы устройства.
- Настраиваемый лимит длины сообщения. В оригинальном KryptEY лимит в 500 символов для raw- и fairytale-кодирования был жёстко зашит в код. В SimpKrypt это отдельная настройка (100–5000 символов) в разделе Preferences.
- Обновлены зависимости. Библиотека
libsignal-androidобновлена до актуальной на момент сборки версии, обновлены Jackson и Protobuf, починена сборка (в оригинальномbuild.gradleиспользовалсяjcenter(), закрытый ещё в 2022 году).
Всё остальное — базовый функционал клавиатуры (раскладки, высота, свайпы пробела/удаления, автокапитализация, долгое нажатие) и вся криптографическая часть (генерация ключей, X3DH/Double Ratchet через Signal Protocol, обмен prekey-бандлами, raw/fairytale кодирование) — это код KryptEY и Simple Keyboard без концептуальных изменений, только перенесённый под новое имя.
- Клавиатура регистрируется как системный Input Method (IME) — как любая обычная клавиатура.
- Поверх обычной раскладки есть E2EE-панель для управления контактами и переключения режима (обычный ввод / raw-шифрование / fairytale-шифрование).
- Для каждого контакта локально генерируется и хранится набор ключей Signal Protocol (identity key, signed prekey, one-time prekeys). Обмен публичными ключами (prekey bundle) происходит вручную — как текст, который тоже печатается через клавиатуру и передаётся любым каналом (тем самым мессенджером, для которого клавиатура и используется).
- После обмена ключами сообщения в выбранном режиме шифруются на устройстве отправителя и расшифровываются на устройстве получателя; само шифрованное сообщение проходит через любой мессенджер как обычный текст — сервер мессенджера видит только шифротекст (или замаскированный под связный текст фрагмент в fairytale-режиме).
APK можно собрать самостоятельно в Android Studio (см. MERGE_NOTES.md
в репозитории — там порядок первой сборки и на что обратить внимание).
После установки: Настройки → Система → Языки и ввод → Виртуальная
клавиатура → включить SimpKrypt, затем выбрать её как активную
клавиатуру при вводе текста.
- Личный проект, не проходил внешний аудит безопасности.
- Обмен ключами контактов — ручной, без верификации через доверенный канал (safety numbers как в Signal) в базовом UI KryptEY не реализован — доверяйте только тем каналам обмена ключами, которым доверяете так же, как и переписке.
- Актуальную версию
libsignal-androidстоит проверять и обновлять самостоятельно — крипто-библиотеки требуют регулярных апдейтов.
- Simple Keyboard — Apache License 2.0.
- KryptEY — за оригинальную реализацию E2EE-клавиатуры на Signal Protocol.
- libsignal — криптографическое ядро (Signal Protocol), GPLv3.
SimpKrypt наследует лицензионные условия исходных проектов; при
публикации репозитория убедитесь, что итоговый LICENSE-файл корректно
отражает условия всех унаследованных компонентов (Apache 2.0 для
Simple Keyboard/KryptEY-кода клавиатуры, GPLv3 для части, завязанной на
libsignal).