System ankietowy — szyfrowanie po stronie klienta

Ankiety hostowane statycznie (GitHub Pages). Odpowiedzi szyfrowane w przeglądarce (RSA-OAEP + AES-GCM) i wysyłane na lekki serwer Python + aiohttp + SQLite3.

O projekcie

Projekt powstał, by ułatwić zespołom badawczym szybkie uruchomienie bezpiecznych ankiet bez potrzeby konfigurowania skomplikowanej infrastruktury. Statyczna strona (np. GitHub Pages) działa jako frontend — to tam generujemy klucze, szyfrujemy odpowiedzi po stronie klienta i wysyłamy do prostego API serwera zapisu.

Główne założenia

  • Bezpieczeństwo
    Szyfrowanie end-to-end: RSA-OAEP (dla klucza sesji) + AES-GCM (dla treści odpowiedzi). Tylko analityk z tokenem może odszyfrować dane.
  • Lekki backend
    Python + aiohttp + SQLite3 — minimum zależności, łatwe uruchomienie na tanim VPS (mikrokontenery, kopiowanie konfiguracji).
  • Rola analityka
    Osoba z dostępem (token 16 znaków) może pobierać zaszyfrowane rekordy, odszyfrować lokalnie i uruchomić wstępne przetwarzanie/analizy.

Skąd pomysł?

Projekt powstał w wyniku współpracy z młodymi zespołami badawczymi na Uniwersytecie Rzeszowskim — często brakowało im prostych rozwiązań IT. Chciałem dać narzędzie, które działa "out of the box": statyczny frontend, proste API i bezpieczny pipeline danych.

Notka techniczna: W systemie frontend generuje klucz sesji (AES-GCM), szyfruje odpowiedzi, a klucz sesji jest asymetrycznie szyfrowany RSA-OAEP przy użyciu publicznego klucza analityka. Serwer przechowuje jedynie zaszyfrowane paczki — odszyfrowanie i analiza odbywa się po stronie analityka.