NEON / SEPON TEKSTISALAUS

Windows-sovelluksen lähdekoodipaketti, ei valmiiksi käännetty EXE.

KÄYNNISTYS
1. Asenna Python 3.11 tai uudempi osoitteesta https://www.python.org/downloads/windows/
   Sisällytä asennukseen Python launcher ja Tcl/Tk (Tkinter).
2. Pura ZIP kokonaan omaan kirjoitettavaan kansioon.
3. Kaksoisnapsauta KAYNNISTA.bat.
   Ensikäynnistys luo paikallisen .venv-ympäristön ja lataa cryptography-kirjaston
   pip-pakettipalvelusta. Älä käytä järjestelmänvalvojan oikeuksia.
   Myöhempi käyttö on paikallista eikä sovellus lähetä tiedostoja verkkoon.
4. Halutessasi RAKENNA_EXE.bat tekee Windowsissa tiedoston dist/NeonSalaus.exe.
   Rakentaminen tarvitsee internetin. EXE ei tarvitse erillistä Python-asennusta.
   EXE on allekirjoittamaton. Älä poista Windowsin suojausta käytöstä.

KÄYTTÖ
Valitse kansio -> valitse tiedosto -> Avaa valittu.
Valitse salausmenetelmä, kirjoita salasana ja vahvistus -> Salaa.
Salattu koodi näkyy tulosruudussa -> Tallenna nimellä -> valitse kansio ja nimi.
Purku: avaa tallennettu .neon-tiedosto -> salasana -> Pura salaus -> Tallenna nimellä.
Purussa menetelmä tunnistetaan automaattisesti; valikon asennolla ei ole merkitystä.
Tulokset tallennetaan vain erillisestä pyynnöstä. Alkuperäistä ei ylikirjoiteta.
Ohjelma käsittelee enintään 5 MiB alkuperäisiä tiedostoja. Tallennetut tavut,
rivinvaihdot ja merkistöt palautuvat täsmälleen; esikatselun merkistötulkinta voi
olla väärä harvinaisilla merkistöillä. Näytössä enintään 100 000 merkkiä.
Voit valita ja kopioida tekstiä ruuduista, mutta niitä ei voi muokata.

MENETELMÄT
- AES-256-GCM: oletus ja suositeltu vaihtoehto.
- ChaCha20-Poly1305: tunnettu vaihtoehtoinen autentikoitu salaus.
- Seppo Duo: kokeellinen AES-256-GCM -> ChaCha20-Poly1305 -kerrostus.
  Kerroksilla on eri 256-bittiset avaimet ja satunnaiset 96-bittiset noncet.
  Tämä on oma yhdistelmä tunnetuista rakennuspalikoista, ei uusi kryptografinen
  algoritmi eikä osoitetusti yksittäistä menetelmää vahvempi ratkaisu.

TEKNINEN MUOTO
NEON1: + Base64(JSON{header,data}). Data on Base64-salaustekstiä.
Header: versio, menetelmä, kiinteä scrypt-profiili, 16 tavun satunnainen suola,
kaksi 12 tavun satunnaista noncea. Headerin kanoninen JSON (sort_keys=True,
separators=(',',':'), ASCII) on molempien kerrosten autentikoitu lisätieto.
Salasana UTF-8 -> scrypt N=131072,r=8,p=1,length=64, noin 128 MiB muistia.
Yksittäinen menetelmä käyttää ensimmäisiä 32 avaintavua. Duo käyttää toisessa
kerroksessa jälkimmäisiä 32 tavua. Jokainen salaus arpoo suolan ja noncet uudelleen.
Ohjelma ei hyväksy tiedostosta mielivaltaisia KDF-kustannuksia.
Base64 ei itsessään salaa; varsinainen salaus on sen sisällä.
Muoto on tämän ohjelman oma, ei yleinen AES-tiedostostandardi.

TURVALLISUUS JA RAJOITUKSET
Valitse pitkä satunnainen salasana ja säilytä se erillisessä salasananhallinnassa.
12 merkin vähimmäisraja ei takaa vahvuutta. Arvo salasana tuottaa 32 merkkiä.
Salasanan kadotessa palautusavainta tai takaovea ei ole.
Alkuperäinen salaamaton tiedosto säilyy levyllä. Ota varmuuskopiot ja kokeile
purkua ennen kuin päätät itse poistaa alkuperäisiä tiedostoja.
Ohjelma ei tarjoa turvallista poistoa tai taattua salaisuuksien pyyhintää muistista.
Leikepöytä, Windowsin sivutustiedosto, varmuuskopiot ja haittaohjelmat voivat
paljastaa salaamatonta sisältöä. Koko levyn suojaus on erillinen asia.
Väärä salasana ja vioittunut salaus antavat saman virheilmoituksen.
Ohjelma ja Duo-yhdistelmä eivät ole riippumattomasti turvallisuusauditoituja.

TESTAUS
Salaus/purku ja virhetilanteet testataan: python -m unittest -v test_crypto.py
Tässä toimituksessa kryptografinen ydin testattu Linuxissa. Windows-käyttöliittymää,
BAT-komentoja ja EXE-rakentamista ei ole voitu suorittaa aidossa Windowsissa.

LÄHTEET
https://cryptography.io/en/stable/hazmat/primitives/aead/
https://cryptography.io/en/stable/hazmat/primitives/key-derivation-functions/#scrypt
