GoLynk Documentation
golynk.ch

Architecture de sécurité en 5 couches

GoLynk implémente une défense en profondeur (defense in depth) avec 5 couches de sécurité indépendantes. Même si une couche est compromise, les suivantes protègent vos données.

1

Couche Authentification

Supabase Auth avec email + mot de passe haché (bcrypt). Tokens JWT signés (expiration 1h). Captcha Turnstile (Cloudflare) à la connexion. Vérification email à l'inscription.

2

Couche Chiffrement

HTTPS/TLS 1.3 pour tout le trafic réseau. AES-256-GCM pour les données sensibles au repos (messages, clés bancaires, coffre-fort). Clés de chiffrement dérivées par compte.

3

Couche Isolation (RLS)

PostgreSQL Row Level Security : chaque requête est automatiquement filtrée par company_id. Un utilisateur ne peut jamais accéder aux données d'un autre compte, même via l'API.

4

Couche Permissions

Contrôle d'accès basé sur les rôles (RBAC) : Admin / Écriture / Lecture / Aucun par module. Vérification côté serveur (Edge Functions) et côté client (UI conditionnelle).

5

Couche Surveillance

Journaux de connexion horodatés avec IP et User-Agent. Détection d'anomalies (connexions depuis de nouvelles IP). Rate limiting sur l'API. Alertes email en cas d'activité suspecte.

Chiffrement des données

Données en transit

Toutes les communications entre votre navigateur et les serveurs GoLynk sont chiffrées avec HTTPS / TLS 1.3. Les certificats sont gérés automatiquement par Cloudflare avec renouvellement automatique.

Données au repos — données sensibles

Les données particulièrement sensibles sont chiffrées avec AES-256-GCM avant d'être stockées en base de données :

DonnéeEmplacement
Messages de la messagerie interneChiffrement E2E côté client avant envoi
Données du coffre-fort (IBAN, clés API externes)Chiffrement AES-GCM avec clé dérivée du PIN utilisateur
Identifiants SMTPChiffrement AES-GCM côté serveur (Edge Function)
Token Revolut / clé StripeChiffrement AES-GCM côté serveur (Edge Function)

Mots de passe

Les mots de passe administrateurs sont hachés avec bcrypt (facteur de coût adaptatif) via Supabase Auth. Les PINs employés sont hachés avec PBKDF2 (choix technique pour compatibilité avec l'environnement Deno des Edge Functions sans délais excessifs). Aucun mot de passe n'est jamais stocké en clair.

Authentification & Sessions

Tokens JWT

Après connexion réussie, un token JWT signé est émis avec une durée de validité de 1 heure. Le token est renouvelé automatiquement en cas d'activité (refresh token de 7 jours). Chaque token contient : l'identifiant utilisateur, son rôle, l'identifiant de la société, l'horodatage d'expiration.

Empreinte de session

Lors de la connexion, GoLynk enregistre une empreinte de la session (adresse IP + User-Agent). Si une requête API provient d'une IP ou d'un navigateur significativement différent de l'empreinte enregistrée, une vérification supplémentaire peut être déclenchée.

Révocation des sessions

L'administrateur peut révoquer toutes les sessions actives d'un utilisateur depuis Paramètres → Sécurité → Sessions actives. En cas de perte d'appareil ou de compromission suspectée, la révocation est immédiate et invalide tous les tokens en cours.

Isolation des données (Row Level Security)

GoLynk utilise la fonctionnalité Row Level Security (RLS) de PostgreSQL pour garantir l'isolation totale des données entre les différents comptes.

Fonctionnement

Chaque enregistrement en base de données possède un champ company_id lié au compte propriétaire. Les policies RLS définissent que toute requête SELECT, INSERT, UPDATE, DELETE est automatiquement filtrée par le company_id du token JWT en cours. Il est techniquement impossible pour un utilisateur d'accéder aux données d'un autre compte.

L'isolation RLS est appliquée au niveau de la base de données elle-même, pas uniquement au niveau de l'application. Même en cas de vulnérabilité dans le code applicatif, les données des autres comptes restent inaccessibles.

Double authentification (2FA)

GoLynk supporte deux mécanismes de double authentification :

Turnstile (Cloudflare)

Le captcha Cloudflare Turnstile est requis à chaque connexion. Contrairement aux reCAPTCHA traditionnels, Turnstile est non-intrusif (invisible ou avec défi minimal) et protège contre les attaques automatisées.

TOTP (Authenticator apps)

La double authentification TOTP (Time-based One-Time Password) peut être activée depuis Paramètres → Sécurité → Authentification à deux facteurs. Compatible avec Google Authenticator, Authy, 1Password, et toute application TOTP standard (RFC 6238).

Journaux d'audit

GoLynk enregistre les événements de sécurité importants dans une table d'audit (login_audit_logs) accessible depuis Paramètres → Sécurité → Journaux.

Événements journalisés

ÉvénementInformations enregistrées
Connexion réussieIP, User-Agent, horodatage, type de connexion (admin/employé)
Tentative échouéeIP, raison (mauvais mot de passe / PIN / TOTP), horodatage
DéconnexionIP, horodatage, déconnexion manuelle ou expiration
Appel APIClé utilisée (préfixe seulement), endpoint, IP, code HTTP retourné
Accès coffre-fortHorodatage, IP, succès/échec du déverrouillage
Changement de permissionsQui a modifié quoi sur quel employé

Hébergement & Infrastructure

ComposantFournisseurLocalisation
Frontend (HTML/JS)Cloudflare PagesEurope (CDN mondial)
Base de données (PostgreSQL)SupabaseEurope (AWS eu-west-1)
Edge FunctionsSupabase / DenoEurope (AWS eu-west-1)
Stockage fichiersSupabase StorageEurope (AWS eu-west-1)
Protection DDoS / WAFCloudflareGlobal
Toutes vos données métier (base de données, fichiers) sont hébergées en Europe (Irlande/Frankfurt selon la configuration Supabase). Aucun transfert de données hors UE sans votre consentement explicite.

Conformité légale

nLPD — Loi suisse sur la protection des données

GoLynk est conforme à la nouvelle Loi fédérale sur la protection des données (nLPD), entrée en vigueur le 1er septembre 2023 en Suisse. Cela inclut : droit d'accès aux données, droit à l'oubli (suppression du compte sur demande), journalisation des traitements, privacy by design.

RGPD — Règlement européen

GoLynk respecte également le Règlement Général sur la Protection des Données (RGPD/GDPR) applicable aux utilisateurs résidant dans l'UE. Les données sont traitées sur la base d'intérêts légitimes (exécution d'un contrat) et/ou du consentement explicite de l'utilisateur.

Vos droits

DroitComment l'exercer
Droit d'accèsExport complet depuis Paramètres → Sauvegardes
Droit de rectificationModifiable directement dans l'application
Droit à l'effacementSuppression du compte sur demande via support@golynk.ch
Droit à la portabilitéExport JSON depuis Paramètres → Sauvegardes
Droit d'oppositionContactez support@golynk.ch
Pour toute question relative à la protection des données ou pour exercer vos droits, contactez support@golynk.ch. GoLynk s'engage à répondre dans un délai de 30 jours.