Tietosuojaseloste
Kuura (jäljempänä "palvelu") on train-or-rest-SaaS-palvelu, joka analysoi käyttäjän laitteista kerättyjä terveystietoja. Tämä seloste noudattaa EU:n yleistä tietosuoja-asetusta (GDPR, 2016/679) sekä Suomen tietosuojalakia (1050/2018).
1. Rekisterinpitäjä
Rekisterinpitäjänä toimii:
- Sami Huvinen
- Y-tunnus: (Y-tunnus lisätään ennen beta-exitiä)
- Osoite: Helsinki, Suomi
- Yhteydenotot tietosuoja-asioissa: sami@huvinen.fi
Tietosuojavastaavaa ei ole nimetty; GDPR art. 37 ei sitä edellytä palvelun kokoluokassa. Yhteyshenkilönä toimii rekisterinpitäjä itse.
2. Käsiteltävät henkilötiedot
2.1 Tilitiedot
- Sähköpostiosoite (tilin yksilöintitunniste + palautuslinkki).
- Salasanan Argon2id-hash. Selkokielinen salasana ei koskaan tallennu.
- Kaksivaiheisen tunnistautumisen (TOTP) salaisuus, käyttäjäkohtaisella avaimella (DEK) salattuna. Toipumiskoodit tallennetaan samoin salattuna.
- Istuntotiedot: selaimen sessio-ID (UUIDv7), HTTP-evästeen IP-osoitteen SHA-256-hash + pepper, User-Agent-stringin hash. Raaka IP-osoite tai täysi UA ei tallennu.
2.2 Laiteintegraatioiden tiedot
Kun käyttäjä yhdistää oman terveysdataa keräävän laitteensa (nykyinen MVP: Oura), palvelu tallentaa:
- OAuth 2.0 access- ja refresh-tokenit käyttäjän omalle DEK-avaimelle salattuna. Salaamaton tokeni ei ole koskaan levyllä.
- Laitteen tuottamat mittaussignaalit: unijaksot + unen osa-alueet, HRV, leposyke, ihon lämpötila, aktiivisuus- ja palautumispisteet. Kerätään vain mittaussignaali, ei raakoja aikasarjoja enempää kuin train-or-rest -pistelaskenta vaatii.
Oura-exportin whitelist (tietojen minimointi). Kun käyttäjä tuo Ouran GDPR-exportin (zip-tiedosto, joka sisältää ~38 CSV-tiedostoa), palvelu avaa ainoastaan seuraavat tiedostot: päivittäiset readiness-, uni-, stress-, aktiivisuus-, spo2- ja resilience-yhteenvedot, unianalyysi (sleepmodel), treenit, sessiot, unen ajoitus ja VO₂max. Emme tallenna exportin sisältämää GPS-paikannusdataa (rawlocation.csv) lainkaan — kyseinen tiedosto on usein 300+ MB kokoelma paikkajälkiä, jota train-or-rest -pistelaskenta ei tarvitse ja jonka tallentaminen lisäisi tarpeettomia tietosuojariskejä. Samoin exportissa olevat minuuttitason raakasyke- ja lämpötila-aikasarjat (heartrate.csv, temperature.csv) sekä sormuksen tekniset lokit (akkutila, asetukset, debug-tila) ohitetaan ja niiden sisältö ei päädy Kuuran tietokantaan. Oura-exportin mukana toimitettavat laskutus- ja tilitiedot (Subscriptions-kansio) ohitetaan niin ikään.
Terveystiedot ovat GDPR art. 9 tarkoittamaa erityistä henkilötietoa. Käsittelyn oikeusperusteena on käyttäjän nimenomainen suostumus (art. 9(2)(a)), joka annetaan OAuth-yhdistyksen yhteydessä ja jonka voi perua milloin tahansa katkaisemalla integraation.
2.3 Laskutus- ja tilaustiedot
Beta-vaiheessa palvelu on maksuton; laskutustietoja ei kerätä. Kaupallisen version lanseerauksen yhteydessä Stripe käsittelee maksutiedot rekisterinpitäjän lukuun erillisen alihankkijasopimuksen alla (art. 28).
2.4 Tukipyynnöt ja yhteydenotot
/contact-lomakkeen kautta saapuvat viestit sisältävät nimen, sähköpostin ja
viestin. Viestit välittyvät palveluntarjoajan sähköpostiin, ja alkuperäinen rivi säilyy 30
vrk rekisterinpitäjän PostgreSQL-tietokannassa tiketin käsittelyn ajan. Sen jälkeen rivi
poistuu automaattisella aikasiivouksella.
3. Käsittelyn tarkoitukset ja oikeusperusteet
| Tarkoitus | Oikeusperuste |
|---|---|
| Palvelun toimittaminen, tilin hallinta | Sopimus (art. 6(1)(b)) |
| Terveystietojen analysointi train-or-rest-pisteeksi | Nimenomainen suostumus (art. 9(2)(a)) |
| Tietoturva, väärinkäytön havainnointi, auditointi | Oikeutettu etu (art. 6(1)(f)) |
| Käyttömäärätilastot (Plausible, ei evästeitä, ei IP-osoitteen tallennusta) | Oikeutettu etu (art. 6(1)(f)) |
| Lakisääteiset velvoitteet (kirjanpito, viranomaispyynnöt) | Lakisääteinen velvoite (art. 6(1)(c)) |
4. Säilytysajat
- Tili: tilin aktiivisuuden ajan. Tilin poiston yhteydessä tiedot poistetaan 30 vrk kuluessa; pyydettäessä välittömästi.
- Laite-integraation tokenit ja mittaussignaali: yhteyden katkaisun yhteydessä välittömästi. Poisto kattaa myös aiemmin palvelussa tallennetun historian — emme säilytä arkistokopiota integraation katkaisun jälkeen.
- Auditointiloki (kirjautumiset, 2FA-tapahtumat, integraatioiden aktivointi/poisto): 10 vuotta lukittuna WORM-bucketiin (Google Cloud Storage, Bucket Lock). Auditointiloki ei sisällä terveystietoja; vain tietoturvatapahtuman metadataa.
- Sähköpostiosoitteen hash väärinkäytön estoon (unohdetut salasanat, throttling) säilytetään 90 vrk viimeisen kirjautumisyrityksen jälkeen.
- Tukipyynnöt: 30 vrk tiketin käsittelyn jälkeen.
- Laskutustositteet kaupallisessa vaiheessa: 6 vuotta (kirjanpitolaki 2 luku 10 §).
5. Tietojen vastaanottajat
Tietoja ei myydä eikä luovuteta markkinointitarkoituksiin. Alihankkijat (art. 28) ja niiden sijainti:
- Google Cloud Platform (Frankfurt, EU) — konesalipalvelu. Google käsittelee tiedot EU:ssa; siirto EU:n ulkopuolelle on estetty data-residency-asetuksilla.
- Postmark (ActiveCampaign Inc., Yhdysvallat) — transaktioviestien välitys (vahvistusviestit, palautuslinkit). Siirto perustuu EU:n ja USA:n Data Privacy Framework -sertifiointiin (päätös 2023/1795).
- Sentry (Functional Software Inc., Yhdysvallat) — virhe- ja tapahtumaseuranta. Data Privacy Framework. Sentry-instanssissa henkilötietojen skraapaus on poistettu käytöstä; event-payloadit sisältävät vain hash-tunnisteet.
- Plausible Analytics (Plausible Insights OÜ, Viro) — evästeettömät käyttötilastot. Ei henkilöiden tunnistamista.
- Oura Health Oy (Oulu, Suomi) — OAuth-lähde ja mittauslaitteen valmistaja. Käsittely käyttäjän ja Ouran välisen sopimussuhteen perusteella; Kuura toimii datan vastaanottajana käyttäjän suostumuksella.
6. Tiedonsiirrot EU/ETA:n ulkopuolelle
Tietokanta, audit-loki ja sovelluspalvelut sijaitsevat Frankfurtissa (europe-west3). Siirrot kolmansiin maihin rajautuvat yllä mainittuihin alihankkijoihin ja toteutetaan Data Privacy Framework -sertifioinnin tai EU-komission hyväksymien vakiosopimuslausekkeiden (2021/914) pohjalta.
7. Rekisteröidyn oikeudet
Käyttäjällä on GDPR art. 15–22 mukaiset oikeudet:
- Tarkastusoikeus — pyydä kopio kaikista sinua koskevista tiedoista.
- Oikaisuoikeus — virheellisten tietojen korjaus.
- Poisto-oikeus ("oikeus tulla unohdetuksi") — tilin ja siihen liittyvän datan pyyntöpohjainen poisto. Huomioi, että auditointiloki säilyy 10 vuotta myös poiston jälkeen; se ei sisällä terveystietoa.
- Rajoitusoikeus — käsittelyn rajoitus riidan keston ajaksi.
- Siirto-oikeus — mittausdatan kopio koneellisesti luettavassa muodossa (JSON).
- Vastustamisoikeus — oikeutetulla edulla tehtävän käsittelyn vastustaminen.
- Suostumuksen peruuttaminen — laiteintegraation katkaisu vastaa suostumuksen peruuttamista GDPR art. 7(3) mukaisesti.
Pyynnöt osoitetaan rekisterinpitäjälle osoitteeseen sami@huvinen.fi. Pyyntöön vastataan yhden kuukauden kuluessa (art. 12(3)); monimutkaisten tapausten osalta määräaikaa voidaan jatkaa kahdella kuukaudella, jolloin tästä ilmoitetaan erikseen.
Mikäli katsot, että tietojasi käsitellään vastoin GDPR:ää, voit tehdä valituksen tietosuojavaltuutetun toimistolle: tietosuoja.fi.
8. Tietoturva
- Salaus levossa: terveystiedot ja laite-tokenit käyttäjäkohtaisella DEK:llä (Fernet AES-128); DEK:t on käärittynä projektin Cloud KMS -KEK-avaimella. Tietokantataso on oletusarvoisesti Cloud SQL AES-256.
- Salaus siirrossa: TLS 1.3 kaikille julkisille rajapinnoille; HSTS-preloadattu.
- Tunnistautuminen: Argon2id-hash salasanoille, valinnainen TOTP-pohjainen 2FA, istuntojen 24 h sliding-TTL, admin-käyttäjille pakollinen erillinen 8 h elevation-aikaikkuna.
- Auditointi: jokainen tietoturvatapahtuma kirjautuu WORM-bucketiin, jota ei voi ylikirjoittaa eikä poistaa ennen 10 vuoden säilytysajan umpeutumista (Bucket Lock, NFR15).
- Tietomurron havaitseminen ja ilmoitus: NFR17:n mukainen menettely; toteutuessaan ilmoitus tietosuojavaltuutetulle 72 h kuluessa (GDPR art. 33) ja vaikutuspiirissä oleville käyttäjille ilman aiheetonta viivytystä (art. 34).
9. Evästeet ja vastaavat teknologiat
Palvelu käyttää vain välttämättömiä evästeitä, jotka eivät vaadi suostumusta sähköisen viestinnän tietosuojalain (SähkVi 205 §) mukaan:
-
kuura_session: istuntoeväste (HttpOnly, Secure, SameSite=Strict), elinaika 24 h liukuvana. -
kuura_csrf: CSRF-suojauseväste (Secure, SameSite=Strict), elinaika sama kuin session.
Analytiikkaan käytetty Plausible ei käytä evästeitä, ei tallenna IP-osoitteita tietokantaan, ja on määritelty ePrivacy-suostumusta vaatimattomaksi. Markkinointievästeitä ei käytetä.
10. Automaattinen päätöksenteko
Palvelu laskee train-or-rest-pisteen laitedatasta. Piste on käyttäjälle suositus, ei GDPR art. 22 tarkoittama oikeusvaikutuksinen automatisoitu päätös. Käyttäjä tekee valmennusratkaisun itse tai yhteistyössä valmentajansa kanssa.
11. Muutokset tähän selosteeseen
Olennaisista muutoksista (kerättävien tietojen laajuus, uusi alihankkija, uusi käsittelytarkoitus) ilmoitamme sähköpostitse viimeistään 30 vrk ennen voimaantuloa. Muut päivitykset (kielen selkeytykset, virhe- ja yhteystietokorjaukset) astuvat voimaan heti julkaisun jälkeen; viimeisin päivityspäivä näkyy sivun alalaidassa.
12. Yhteystiedot
Tietosuoja-asiat: sami@huvinen.fi
Viimeksi päivitetty: 2026-04-19