Signal Protocol
The same encryption Signal itself uses — its own libsignal library: a fresh key for every message, secure even against future quantum computers.
You encrypt right inside the chat with the Kryptos keyboard, and what arrives is read right on your screen. Only your contact can make sense of the code, in any messenger, even SMS.
iPhone and Android understand each other. No accounts, no servers, no setup, and the keys never leave your phone.
iOS: the .ipa is unsigned, you sign it on the device. Android: allow installs from unknown sources.
Open source github.com/swisslite/Kryptos Support the project.ipa 8c95a263b3d2d88e8b9b94df05ae7d0e360dc4ba9f9c98f3a28e96387c33a43b
.apk 66c6fbf2f38013d6a2020e4324d4cc80e71559299f74fe66a8577bef68340f77
Five screens — from a Signal-encrypted chat to hiding a message inside an ordinary photo.
Type a message in Kryptos or straight on its keyboard — one tap turns it into code.
Paste the code into any chat: WhatsApp, Telegram, iMessage, SMS. To everyone else it's just random characters.
Your friend's Kryptos shows the real text right over the code — or decrypts it in the keyboard or with one tap in the app.
The same encryption Signal itself uses — its own libsignal library: a fresh key for every message, secure even against future quantum computers.
Encrypt in Kryptos, paste the code into WhatsApp, Telegram, iMessage or SMS — the messenger only ever sees gibberish.
Zero internet: the app has no networking code at all, and your keys never leave the device.
It is the same app on both platforms, and the two are fully compatible: messages, keys and anything hidden inside a photo or a piece of text work in both directions. It does not matter which phone your contact carries.
On Android, Kryptos plugs into the system and works over any app: it finds its own messages and lays the decrypted text right over the ciphertext, live, while you scroll the chat. Nothing to copy and nothing to open, you read the conversation like an ordinary one. It works only for your contacts, and it does not work at all while Kryptos is locked. On iPhone a copied message is decrypted by the keyboard right above the keys, or by the app itself when you open it.
The Kryptos keyboard installs like any ordinary system one: enable it once and it is there everywhere you type. Type, tap the lock, and the field holds the ciphertext, ready to send. It decrypts an incoming message by itself and shows it above the keys. It is a full keyboard as well: suggestions, autocorrect for Russian, English, German and Chinese, emoji, all of it offline, so you can happily keep it as your main one.
Hide a secret message inside an ordinary photo, or disguise it as a harmless run of words — nobody will even know it's there.
You do not always need a full conversation. There is a simple mode on a single shared password: agree on a word with someone and you can write straight away. And for people who live on PGP, that is built in too.
Face ID / biometrics, content hidden in the app switcher, clipboard auto-clear.
A separate PIN that, instead of unlocking, instantly wipes all keys, chats and contacts (Android).
No. You stay in your own messenger: type the message, tap the lock on the Kryptos keyboard, and only the ciphertext is left in the field. An incoming message is shown decrypted right over the ciphertext on Android, and read by that same keyboard on iPhone. You open the app itself only to add a contact or change a setting.
You enable it once in the system list of keyboards, and it is then available in any app. Pick a contact, type, tap the lock: the plain text in the field turns into ciphertext. Incoming messages are read in the same place: you copy the message and the keyboard shows the decrypted text above the keys with the sender's name. You can also type in a field inside the keyboard itself, and then the messenger never sees the plain text at all. The rest of the time it is an ordinary keyboard, with suggestions and autocorrect for Russian, English, German and Chinese, fully offline.
It is an Android feature. You switch the Kryptos service on once in the accessibility settings, and the app then finds its own ciphertext on screen and lays the decrypted text over it while you scroll the conversation. Nothing to copy, nothing to open. The service reads only text that is already on the screen, works only for your contacts, and never while Kryptos is locked. A separate switch blocks screenshots while it runs. The iPhone gives no app that kind of access to the screen, so there the keyboard does the reading.
Enable the Kryptos keyboard in the system list of keyboards: on iPhone you also allow it full access, without which it cannot reach the keys. On Android, if you want on-screen decryption, switch the service on in the accessibility settings. And exchange keys with your contact: let them scan your QR code, or just copy your key as text and send it any way you like, through that same messenger if you want. Their key is pasted as text in the same way, no camera needed. That key is the public one and it is safe to show; the private key never leaves the device. After that there is nothing to configure and nowhere to register.
Yes, nothing but Kryptos can decrypt the message. Which phone each of you carries does not matter though: the iPhone and Android versions are fully compatible, and keys and messages work in both directions.
No. Kryptos has no servers and no accounts, and there is not a single line of networking code in the app. On Android it does not even ask for permission to reach the network. Encryption happens entirely on the device, and delivery is handled by whatever messenger you already use.
No, it only ever gets text that is already encrypted. It does still see that you sent something, to whom, and roughly how much. That is metadata, and Kryptos does not hide it, but you can at least mask the length in Settings → Privacy.
Chats use Signal's own libsignal library, the same protocol as Signal itself, post-quantum handshake included. Password mode and photos use Argon2id and AES-256-GCM. Kryptos contains no home-made cryptography.
It carries the post-quantum handshake (PQXDH with Kyber), which is about two kilobytes. It is sent once: as soon as your contact replies, messages become many times shorter.
That is not a fault but forward secrecy: the key for each message is destroyed the moment it is read, so old correspondence cannot be recovered even by someone who takes your phone. Messages you have already opened remain in the chat history.
Usually the wrong contact or the wrong profile is selected. If every new message from one person fails, the session has gone out of sync: send them your key again and have them add you a second time.
It is a fingerprint of the key. Compare it with your contact over some other channel, read it out loud for instance. If the numbers match, there is definitely nobody in the middle.
A profile is a separate identity with its own key and its own contacts. You can keep several and switch between them, to keep work and private life apart for example.
No. A conversation runs from one device: its key chain cannot advance in two places at once. Move your keys to the new phone with a key backup and then use only that phone.
The keys live on the device and nowhere else, so deleting the app destroys them for good and there is nothing left to decrypt with. The only insurance is to make a key backup in Settings beforehand. The flip side of the same property: whoever finds the phone gets nothing either.
No, and that is deliberate. The file carries only your keys, your contacts and your PGP keys, message history is never written into it. After restoring on a new phone you carry on with the same people, but the old messages do not come back.
There is no way to recover it. The file is encrypted with that password and Kryptos keeps no copy of it anywhere. Make a fresh backup with a password you will not forget.
They erase the conversation inside Kryptos after the time you pick, on your device, and on your contact's if they set the same thing themselves. What they cannot touch is the ciphertext already sitting in the messenger: only the messenger itself can remove that.
No, Kryptos encrypts text only. The Photo tab does something different: it hides a text message inside a picture, rather than sending the picture itself securely.
The photo has to be sent as a file (a document). Sent as an ordinary picture it is recompressed by the messenger, and recompression destroys the hidden data.
It is a second password for the lock screen. Type it instead of your normal passcode and the app silently and irreversibly destroys every key, message and setting, then opens as if it had just been installed. You set it up in Settings → Privacy.
Only to scan a contact key from a QR code. The camera is used nowhere else, and refusing access breaks nothing: you can always paste the key as text instead.
No. On iPhone the keys sit in the Keychain marked as this-device-only, so they never go into an iCloud or computer backup. On Android the app is excluded from cloud backup and from device-to-device transfer entirely. Everything else is encrypted with exactly those keys, so a stray copy would be unreadable anywhere else.
iOS 17 or later. The .ipa is unsigned and is signed on the device.
Android 8.0 or later. Self-signed .apk — allow installs from unknown sources.
Not used. The app works fully offline.
Russian, English, German and Chinese — follows the system language.