Kauppaholvi

Tietoturva · tietosuoja · todistusvoima

Kauppaholvi: kauppakirja, jonka sisältöä ei voi jälkikäteen muuttaa eikä varastaa.

Jokainen korttien osto tiskiltä syntyy asiakkaan omalla puhelimella ja allekirjoitetaan tiskillä. Henkilötiedot ovat salattuina joka hetki, jokainen tapahtuma jää katkeamattomaan todistusketjuun, ja tiedot tuhoutuvat itsestään, kun laki ei enää vaadi niiden säilyttämistä.

0selväkielistä nimeä, osoitetta tai tilinumeroa levyllä tai varmuuskopiossa
AES-256salaus, oma avain jokaiselle kaupalle
5 v · 6 vhenkilötiedot tuhoutuvat automaattisesti; tosite säilyy kirjanpitolain ajan
1 ketjujokainen loki- ja sinettirivi sisältää edellisen tiivisteen
Helsinkipalvelin Suomessa, ei sovelluskauppaa. Jokaisella kaupalla oma osoite ja omat avaimet

1 · Salaus

Vaikka koko levy varastettaisiin, siltä ei löydy yhtäkään nimeä.

Sama malli jota pankit ja pilvipalvelut käyttävät sisäisesti: kirjekuorisalaus. Data avataan vain sillä hetkellä, kun joku oikeutettu sitä oikeasti katsoo.

  • Oma avain jokaiselle kaupalle. Yhden kaupan avaaminen ei avaa muita. Avain kääritään pääavaimella, joka ei ole koskaan tietokannassa, koodissa eikä varmuuskopiossa.
  • Pääavain paperilla kassakaapissa. Palvelimella se on vain muistissa. Jos palvelin katoaa, data on lukukelvotonta; jos kassakaappi katoaa, data on yhä palvelimella salattuna.
  • Salaus alkaa ensimmäisestä näppäilystä. Asiakkaan lomake tallennetaan salattuna jo luonnosvaiheessa. Puhelimeen tai iPadiin ei jää mitään.
  • Sukunimihaku ilman selväkielisiä nimiä. Haku toimii "sokealla indeksillä": täsmähaku löytää, mutta indeksistä ei voi lukea yhtään nimeä.
  • PIN ja syy joka avaukselle. Työntekijä näkee henkilötiedot vain käynnissä olevan kaupan aikana, PIN-koodin takana. Jälkikäteinen avaus vaatii kirjatun syyn ja jää lokiin: kuka, milloin, mikä kauppa, miksi.
  • Automaattinen hälytys. Yli 20 avausta tunnissa lähettää omistajalle ilmoituksen.
  • Tositteet omalla pitkäikäisellä avaimella. Kirjanpidon PDF elää vuoden pidempään kuin henkilötiedot, joten sillä on oma arkistoavain.
KAUPPA #4711 nimi ▮▮▮▮▮▮▮▮▮▮▮ osoite ▮▮▮▮▮▮▮▮▮▮▮ IBAN ▮▮▮▮▮▮▮▮▮▮▮ AES-256-GCM · kaupan oma avain KAUPAN AVAIN kääritty pääavaimella PÄÄAVAIN palvelimen muisti + paperi kassakaapissa LEVY · VARMUUSKOPIO sisältää vain salattua · ei avaimia 5 v: avain tuhotaan → data mykkä
Kirjekuorisalaus. Avaimen tuhoaminen viiden vuoden kuluttua tekee kaupan henkilötiedoista lukukelvottomia myös jokaisessa vanhassa varmuuskopiossa.

2 · Todistusketju

Sama periaate kuin lohkoketjussa, ilman lohkoketjun painolastia.

Lohkoketjun todistusvoima ei tule kryptovaluutasta vaan yhdestä ideasta: jokainen rivi sisältää edellisen rivin sormenjäljen. Kauppaholvi käyttää täsmälleen sitä ideaa, omassa tietokannassaan, ilman louhintaa, tokeneita tai ulkopuolista verkkoa.

RIVI 1 LUOTU edel. — h=9f3a… RIVI 2 TARJOUS edel. 9f3a… h=c71e… RIVI 3 ALLEKIRJ. edel. c71e… h=02bd… RIVI 4 MAKSETTU edel. 02bd… h=e4a0… Jos rivi 2:ta muutetaan jälkikäteen, sen tiiviste muuttuu eikä rivi 3:n "edel." enää täsmää. Katkos näkyy tarkistuksessa.
Tiivisteketju. Auditloki ja allekirjoitussinetit ovat "vain lisäys" -tauluja: sovelluksen tietokantarooli ei saa edes oikeutta muokata tai poistaa niistä rivejä.
  • Allekirjoitettu sisältö lukitaan sormenjäljeksi ennen allekirjoitusta. Jälkikäteen ei voi väittää, että sovittiin jotain muuta. Sama sormenjälki voidaan laskea uudelleen vuosien päästä ja se täsmää.
  • Ketju tarkistetaan automaattisesti viikoittain. Tulos kirjataan omaan lokiinsa. Katkos on todistettavasti havaittavissa, ei arvailua.
  • Kaksi rinnakkaista kirjoitusta ei voi haarauttaa ketjua. Tietokantatason lukko varmistaa, että rivit syntyvät yksi kerrallaan.
  • Varmuuskopion palautus ajaa saman tarkistuksen. Palautettua tietokantaa ei oteta käyttöön ennen kuin ketju on todettu ehjäksi.
  • Mitä tämä ei ole. Ei julkista lohkoketjua, ei kryptovaluuttaa, ei tietojen viemistä ulkopuoliseen verkkoon. Todistusvoima syntyy matematiikasta, ei markkinointisanasta.

3 · GDPR ja lait

Tiedot elävät täsmälleen niin kauan kuin laki vaatii, eivät päivääkään pidempään.

Säilytysaika on ohjelmoitu järjestelmään, ei muistilappuun. Kirjanpitolain kuusi vuotta ja henkilötietojen viisi vuotta ovat kaksi eri kelloa, ja järjestelmä pitää molemmat. Viiden vuoden kellon alkamishetki (kauppa vai asiakassuhteen päättyminen) vahvistetaan lakimieheltä ennen tuotantoa.

Kaupan aikanaVain kaupan tarpeisiinTyöntekijä näkee henkilötiedot PIN-koodin takana kaupan ollessa käynnissä. IBAN kysytään vain kun maksu menee tilille. Alaikäisen kaupassa huoltaja paikalla ja kirjattuna.
5 vuottaHenkilötiedot tuhoutuvatKaupan oma salausavain hävitetään automaattisesti. Nimi, osoite ja tilinumero muuttuvat lukukelvottomiksi myös kaikissa varmuuskopioissa. Tätä kutsutaan kryptografiseksi silppuamiseksi.
6 vuottaTosite poistuuKirjanpitolain (1336/1997) säilytysaika tilikauden päättymisestä. Tositteessa on vain lain vaatima minimi: ei syntymäaikaa, puhelinta, sähköpostia eikä IBANia.
  • Kirjanpitäjä ei ole järjestelmän käyttäjä. Hän saa kuukausittain salatun tositepaketin, ei pääsyä henkilötietoihin.
  • Rekisteröidyn oikeudet kuuluvat prosessiin. Tarkastus, poisto ja käsittelyn rajoitus (GDPR 18 art.) ovat omia toimintojaan. Pyytäjän henkilöllisyys tarkistetaan liikkeessä henkilöllisyystodistuksesta, ei sähköpostilla.
  • Poisto-oikeus ja kirjanpitolaki sovitettu yhteen. Henkilötiedot voidaan hävittää pyynnöstä; tosite säilyy lain vaatiman ajan ilman henkilötietoja.
  • Marginaaliverotus valmiina. Kauppakirja tuottaa marginaaliverotusmenettelyn vaatiman tositteen, kun myyjä ei ole alv-velvollinen.
  • Rahanpesulaki huomioitu. Käteisostojen kertymä samalle myyjälle on tunnistettu avoimeksi kysymykseksi, johon haetaan lakimiehen kanta ennen tuotantoa.
KukaHenkilötiedotKauppahistoriaPDF:t ja purku
AsiakasOmansa, kauppakohtaisella linkilläEiOma kuitti, rajattu linkki
TyöntekijäVain käynnissä olevan kaupan, PINIlman henkilötietojaEi
VastaavaKirjatulla syylläKylläKyllä, lokiin
OmistajaKirjatulla syylläKyllä + auditlokiKyllä, lokiin
KirjanpitäjäEiEiKuukausipaketti salattuna

4 · Verkko ja laitteet

Internetistä näkyy vain asiakkaan oma sivu. Tiskin näkymä ei ole olemassa ulkopuoliselle.

Sovellus on jaettu kolmeen vyöhykkeeseen. Julkisessa osoitteessa vastaa vain asiakassivu; kaikki muu vastaa "ei löydy", ei edes kirjautumissivua.

  • Työ- ja raportointivyöhyke vain salatun tunnelin kautta. Tiskin iPad ja omistajan kone liittyvät WireGuard-yhteydellä. Ulkopuolinen skanneri ei näe että kirjautumissivu on olemassa.
  • Jokainen laite rekisteröidään erikseen. Kertakäyttöinen koodi, joka elää kymmenen minuuttia. Kadonnut iPad suljetaan pois yhdellä toimenpiteellä ja pääsy katkeaa heti.
  • Salasana ei yksin riitä mihinkään. Tiskillä salasana + rekisteröity laite + PIN. Raportointiin salasana + laite + sähköpostin kertakoodi.
  • Kukaan ei tiedä toisen salasanaa. Uusi työntekijä saa sähköpostiin kertakäyttöisen linkin ja asettaa salasanansa itse. Omistaja ei näe eikä kirjoita kenenkään salasanaa. Unohtunut salasana hoidetaan uudella linkillä, ja linkin käyttö katkaisee kaikki vanhat istunnot. Oman salasanan vaihto lukittuu 15 minuutiksi viiden väärän yrityksen jälkeen.
  • Istunto päättyy 24 tunnissa vaikka olisi jatkuvassa käytössä. Salasanan ja asiakaslinkin arvausyrityksiä rajoitetaan automaattisesti, ja yli menevät yritykset hylätään ennen kuin ne kuluttavat palvelimelta mitään.
  • Ulkopuolinen tarkastus ennen käyttöönottoa. Koodin on käynyt läpi toinen, riippumaton tekoälymalli nimetyillä riskialueilla (salaus, todistusketju, asiakasreitit, asennus). Löydökset on tarkistettu koodista ja korjattu. Sama tarkastus tehdään jokaiselle kirjautumista, salausta tai todistusketjua koskevalle muutokselle.
  • Palvelin Helsingissä, Postgres suljettuna. Tietokanta ei kuuntele internetiin lainkaan. Käyttöjärjestelmän tietoturvapäivitykset asentuvat automaattisesti.
  • Tiedot eivät häviä, vaikka palvelin tuhoutuisi. Varmuuskopio otetaan joka tunti ja siirretään salattuna palvelimen ulkopuolelle. Salausavaimet eivät kulje kopion mukana. Palautus harjoitellaan erillisellä koneella ennen käyttöönottoa, ja omistaja saa hälytyksen, jos kopio jää lähtemättä.
ASIAKAS julkinen internet oma puhelin QR tai linkki /s/… vain oma kauppa muut polut: 404 TYÖ vain tunnelista tiskin iPad rekisteröity laite salasana + PIN henkilötiedot vain kaupan aikana ei PDF-avausta RAPORTOINTI vain tunnelista omistajan kone rekisteröity laite salasana + kertakoodi auditloki, vienti ei purkua koskaan
Vyöhykejako. Raportointivyöhykkeen kyvyttömyys purkaa henkilötietoja on todistettu testillä koodirakenteesta, ei pelkällä lupauksella.

5 · Asiakkaan kokemus

Ei sovellusta, ei tunnuksia, ei jonottamista lomakkeen kanssa.

Asiakas hoitaa oman osuutensa puhelimellaan samalla kun kortteja arvioidaan. Tiskillä jää vain allekirjoitus.

  1. QR tiskiltäTyöntekijä avaa kaupan, asiakas lukee QR-koodin. Linkki on kauppakohtainen ja elää vain sen päivän.
  2. Omat tiedot puhelimellaNimi, osoite, tunnistus. Salattuna heti tallennuksesta. Voi jatkaa kierrokselle liikkeessä.
  3. Ehdot luettuna rauhassaSopimusehdot näkyvät puhelimessa heti tietojen jälkeen. Ruksi on vapaaehtoinen; tiskillä ehdot ovat silti aina yhden napautuksen takana, ja allekirjoitus tehdään aina tiskillä.
  4. Tarjous puhelimeenRivi riviltä Myyn / Pidän. Hyväksyntä tai hylkäys omassa tahdissa, ilman painostusta tiskillä.
  5. Allekirjoitus tiskilläYhteenveto ja allekirjoitus iPadilla. Sisältö lukitaan sormenjäljeksi ennen kynän kosketusta.
  6. Kuitti linkistäLadattavissa seuraavaan iltaan klo 21, enintään kolme kertaa. Sen jälkeen uusi vain tiskiltä henkilöllisyys tarkistettuna.

6 · Mitä tarkoituksella ei tehdä

Rehellinen lista siitä, mitä versio 1 ei sisällä.

Jokainen näistä on päätös, ei unohdus. Osa tulee versiossa 1.1, osa jätetään pois pysyvästi.

Ei natiivia mobiilisovellustaApple-kehittäjätilin vanheneva sertifikaatti voisi kaataa sovelluksen kesken kaupanteon. Selain ja kotinäytön pikakuvake riittävät.
Ei ulkomaista pilvipalveluaYksi palvelin Helsingissä, jonka avaimet ovat kassakaapissa. Varmuuskopion säilytyspaikka näkee vain salattua dataa ilman avaimia.
Ei tekstiviestivahvistusta v1:ssäTulossa versiossa 1.1 yhdessä virallisen aikaleimapalvelun (RFC 3161) kanssa.
Ei markkinahinnan automaattihakuaHinta ja sen lähde (Cardmarket, eBay) syötetään ja kirjataan käsin. Vastuu hinnasta pysyy ihmisellä.
Ei push-ilmoituksiaYhden huoneen myymälässä työntekijän huuto on luotettavampi kanava kuin ilmoitus, joka voi jäädä huomaamatta.
Ei "unohdin salasanani" -nappiaKirjautumissivulla ei ole itsepalvelunollausta, jota voisi käyttää hyökkäyksen apuna. Uuden salasanalinkin lähettää aina omistaja.