Zpět na domů

Šifrování nad MAX: AES-256 pro Android/iOS

Článek popisuje vývoj offline aplikace Dark Message pro šifrování nad messengery s AES-256-GCM a PBKDF2. Rozbor krosplatformních problémů UTF-8, CI/CD na GitHub Actions bez Mac, publikace do App Store. Plná kompatibilita Android-iOS-Windows.

Offline AES-256 šifrování pro jakékoli messengery
Advertisement 728x90

Křížové šifrování nad messengerem: implementace pro iOS a Android

V situacích, kdy jsou k dispozici pouze messengerové aplikace z bílého seznamu bez end-to-end šifrování, je potřeba vrstva ochrany nad stávajícím přenosem. Dark Message implementuje offline šifrování zpráv, souborů a dokumentů pomocí AES-256-GCM. Zašifrovaný obsah se zkopíruje do libovolného přenosového kanálu – MAX, e-mail nebo SMS – bez přístupu k původním datům na zařízení odesílatele nebo příjemce.

Aplikace funguje bez síťových oprávnění, data šifruje lokálně. Příjemce dešifruje pomocí společného hesla, což zajišťuje kompatibilitu mezi Androidem, iOS a Windows.

Architektura a kryptografie

Symetrické šifrování je postaveno na AES-256-GCM pro důvěrnost a autentizaci. Odvození klíče – PBKDF2-HMAC-SHA512 s 600 000 iteracemi a náhodnou solí. Formát zašifrovaného paketu: [verze:1B][typ obsahu:1B][sůl:16B][nonce:12B][šifrový text+GCM_tag:NB]. To zaručuje jedinečnost šifrového textu i pro identická vstupní data se stejným heslem.

Google AdInline article slot

Podporované typy:

  • Textové zprávy (výstup – Base64 řetězec).
  • Obrázky a soubory (výstup – .darkm).
  • Dokumenty libovolných formátů (PDF, DOCX, XLSX, ZIP).

Vývoj s AI: od architektury po ladění

Claude byl použit pro generování kódu, struktury a analýzu chyb. AI navrhoval architekturu, psal návrhy, pomáhal při porovnávání bajtů při křížových testech. Finální testování a úpravy byly provedeny ručně na skutečných zařízeních.

Proces:

Google AdInline article slot
  • Popis úlohy – návrh struktury.
  • Generování kódu – lokální testování.
  • Ladění nesrovnalostí (bajty, klíče).
  • Testování na Pythonu pro ověření.

AI urychlil vývoj, nahradil mezifunkční tým, ale nevyloučil potřebu validace na hardwaru.

CI/CD bez Macu: GitHub Actions pro iOS

Sestavení iOS probíhá na virtuální macOS v GitHub Actions. Pipeline používá XcodeGen pro generaci projektu z YAML, vyhýbá se ukládání .xcodeproj v repozitáři. Automatické podepsání a nahrání do App Store Connect.

Fáze pipeline:

Google AdInline article slot
  • Klonování repozitáře.
  • Generace Xcode projektu.
  • Sestavení a archivace.
  • Nahrání do TestFlight (15 minut od commitu).

Android se sestavuje lokálně přes Gradle (APK/AAB). To umožňuje křížový vývoj na Windows.

Křížové problémy a řešení

Zajištění identické dešifrace mezi platformami odhalilo klíčové nesrovnalosti.

UTF-8 v odvozování klíčů

Java PBEKeySpec převádí heslo přes char[], iOS – přes utf8 bajty. Řešení: vlastní PBKDF2 na Androidu s passphrase.toByteArray(Charsets.UTF_8).

Vizuálně identické znaky

Heslo „a“ (cyrilice U+D0B0) na iPhone vs latinské „a“ (U+0061) na Androidu. Testování Python skriptem potvrdilo rozdíly v klíčích.

Volba KDF

Argon2id na Androidu konfliktoval s CI/CD (problémy závislostí). Přechod na PBKDF2 zajistil sjednocení.

Publikace: lekce z App Store a RuStore

App Store: dvě zamítnutí kvůli zmínkám messengerů v metadatech, generovaným snímkům obrazovky a neúplným lokalizacím. Požadavky: skutečné snímky obrazovky, čisté popisy, úplné lokalizace, Support URL s kontakty.

RuStore: snímky obrazovky striktně 9:16, rostoucí versionCode.

Co je důležité

  • Offline práce: žádné síťové požadavky, data neopouštějí zařízení.
  • Kompatibilita: zašifrováno na Androidu – dešifrováno na iOS/Windows.
  • Odolnost: AES-256-GCM + PBKDF2 (600k iterací) proti brute-force.
  • Jednoduchost: kopírovat/vkládat přes libovolný přenos.
  • Otevřenost: potenciální open source pro audit.

Použití v projektech

Integrace do existujících aplikací je možná přes export šifrovací logiky. Pro middle/senior vývojáře: implementujte PBKDF2 s pevnými parametry pro křížovou kompatibilitu. Testujte na skutečných zařízeních, zaměřte se na UTF-8 normalizaci hesel.

— Editorial Team

Advertisement 728x90

Číst dál