Unverified Commit 99b693e2 authored by Kourser's avatar Kourser
Browse files

Renommage : le produit s'appelle Enkadenn, pas Cythin

« cythin » désignait deux choses à la fois dans le dépôt : l'organisation
qui l'héberge, et le produit. Seul le second change de nom.

Restent donc intacts, parce qu'ils ne désignent pas le produit :
git.cythin.eu, le groupe GitLab cythin/enkadenn et organizationName
dans la configuration Docusaurus.

Reste également intact le commentaire de la migration
20260722120000_purge_kits_non_anssi : Prisma enregistre un checksum des
migrations appliquées et refuserait de démarrer si le fichier changeait.
Une occurrence de l'ancien nom y subsiste, dans un commentaire.

Au-delà des libellés, les valeurs fonctionnelles changent aussi, aucune
instance n'étant déployée : sel HKDF de secret-box, noms des quatre
cookies de session, défauts POSTGRES_USER et POSTGRES_DB, service
exposé par /api/health, issuer TOTP, clef localStorage de la langue, et
la portée des paquets du monorepo qui devient @enkadenn/*. Sur une
instance en service, ces six premiers points auraient respectivement
rendu illisibles les secrets chiffrés en base, déconnecté tout le monde
et empêché le démarrage sur un volume existant.

Le nom commence désormais par une voyelle : « de Cythin » est devenu
« d'Enkadenn » là où l'élision s'imposait.

pnpm-lock.yaml ne bouge que des deux lignes de la portée renommée,
aucune version de dépendance n'a été réévaluée. 364 tests passants,
typecheck et build complet propres, et aucun fichier nouvellement non
conforme à prettier — la dette existante n'a été ni aggravée ni touchée.

Co-Authored-By: Claude (RCA)
parent d9ff9e7e
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ PORT=3000

# --- Base de donnees (PostgreSQL) ---
# En local hors Docker : localhost. Dans docker-compose : le service "db".
POSTGRES_USER=cythin
POSTGRES_USER=enkadenn
POSTGRES_PASSWORD=change-me-in-production
POSTGRES_DB=cythin
DATABASE_URL=postgresql://cythin:change-me-in-production@localhost:5432/cythin?schema=public
POSTGRES_DB=enkadenn
DATABASE_URL=postgresql://enkadenn:change-me-in-production@localhost:5432/enkadenn?schema=public
+3 −3
Original line number Diff line number Diff line
# Cahier des charges — Cythin
# Cahier des charges — Enkadenn

**Plateforme SaaS d'organisation et d'animation d'exercices de gestion de crise en environnement numérique immersif simulé**

@@ -22,7 +22,7 @@ Les organisations doivent s'entraîner régulièrement à gérer des crises (cyb
- **Les kits « papier » / bureautiques** (type kits ANSSI) : scénario narratif, chronogramme d'injects, guide d'animation. Simples mais peu immersifs et lourds à animer manuellement (emails envoyés à la main, fichiers Excel de suivi, etc.).
- **Les plateformes d'attaque/simulation technique** (type **OpenBAS / OpenAEV** de Filigran) : exécution d'injects techniques réels (phishing réel, agents, mesure de détection). Puissantes mais complexes, techniques et intrusives.

**Cythin se positionne entre les deux** : un environnement **immersif mais sans exécution technique réelle**. La cellule de crise interagit avec des **répliques simulées** de ses outils quotidiens (messagerie, Teams, annuaire, presse, réseaux sociaux…), alimentées par une **cellule d'animation** via un scénario et un chronogramme d'injects. Rien ne sort du « bac à sable » : aucun email réel, aucun post réel.
**Enkadenn se positionne entre les deux** : un environnement **immersif mais sans exécution technique réelle**. La cellule de crise interagit avec des **répliques simulées** de ses outils quotidiens (messagerie, Teams, annuaire, presse, réseaux sociaux…), alimentées par une **cellule d'animation** via un scénario et un chronogramme d'injects. Rien ne sort du « bac à sable » : aucun email réel, aucun post réel.

### 1.2 Objectifs produit

@@ -43,7 +43,7 @@ Les organisations doivent s'entraîner régulièrement à gérer des crises (cyb

## 2. Positionnement et différenciation

| Critère | Kits ANSSI (PDF/Excel) | OpenBAS / OpenAEV | **Cythin** |
| Critère | Kits ANSSI (PDF/Excel) | OpenBAS / OpenAEV | **Enkadenn** |
|---|---|---|---|
| Immersion | Faible | Élevée (technique) | **Élevée (fonctionnelle)** |
| Facilité d'usage | Élevée | Faible | **Élevée** |
+1 −1
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ WORKDIR /app
COPY . .

RUN pnpm install
RUN pnpm --filter @cythin/api db:generate
RUN pnpm --filter @enkadenn/api db:generate
RUN pnpm build

# --- Etape 2 : runtime ---
+5 −5
Original line number Diff line number Diff line
# Cythin
# Enkadenn

Plateforme **open-source** d'organisation et d'animation d'**exercices de gestion de crise** en environnement numérique simulé (messagerie, chat, réseaux sociaux, presse… factices et confinés).

@@ -107,7 +107,7 @@ qui a perdu son téléphone et ses codes de secours se réarme depuis la console
qui n'a personne au-dessus de lui :

```bash
pnpm --filter @cythin/api mfa:reset -- --email=root@exemple.org --confirm
pnpm --filter @enkadenn/api mfa:reset -- --email=root@exemple.org --confirm
```

En production, où `ts-node` n'est pas installé :
@@ -172,10 +172,10 @@ Les données sont dans le volume PostgreSQL `db_data`.

```bash
# Sauvegarde
docker compose exec -T db pg_dump -U cythin cythin > sauvegarde.sql
docker compose exec -T db pg_dump -U enkadenn enkadenn > sauvegarde.sql

# Restauration (base vide)
cat sauvegarde.sql | docker compose exec -T db psql -U cythin cythin
cat sauvegarde.sql | docker compose exec -T db psql -U enkadenn enkadenn
```

Les documents/pièces jointes sont stockés en base (texte) au stade actuel ; aucun volume de
@@ -187,5 +187,5 @@ Confinement, cloisonnement multi-tenant, RGPD et journal d'audit : voir [SECURIT

## Licence

[AGPL-3.0-only](LICENSE). Cythin est un logiciel libre : si vous le mettez à disposition sur un
[AGPL-3.0-only](LICENSE). Enkadenn est un logiciel libre : si vous le mettez à disposition sur un
réseau (SaaS), vous devez en proposer le code source, y compris vos modifications.
+3 −3
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@

## Confinement (« bac à sable »)

Cythin est un outil d'**entraînement**. L'environnement de simulation est **hermétique** :
Enkadenn est un outil d'**entraînement**. L'environnement de simulation est **hermétique** :

- Aucun email, SMS, message ou publication n'est réellement envoyé à l'extérieur. « Envoyer »
  signifie écrire en base de données et diffuser en temps réel **à l'intérieur de l'exercice**.
@@ -156,7 +156,7 @@ Trois conséquences de sécurité, toutes appliquées côté serveur :
- **Politique de mot de passe unique** (`apps/api/src/auth/password-policy.ts`) : 10 caractères
  minimum, 72 maximum à la définition — au-delà, bcrypt tronque en silence. Elle était recopiée
  dans trois DTO et avait déjà dérivé : la création par un administrateur acceptait 8 caractères.
  Le minimum est partagé avec l'interface (`@cythin/shared`), pour qu'un écran n'annonce jamais une
  Le minimum est partagé avec l'interface (`@enkadenn/shared`), pour qu'un écran n'annonce jamais une
  règle différente de celle qui est appliquée.
- Joueurs : **lien d'accès signé** (jeton à forte entropie, seule l'empreinte SHA-256 est stockée),
  sans compte ni mot de passe — friction minimale et donnée personnelle minimisée.
@@ -225,7 +225,7 @@ Trois issues, par ordre d'autonomie :
   d'audit persistant. Pour un administrateur d'organisation qui a perdu téléphone *et* codes.
   Son délai de grâce repart à zéro, délibérément : sinon une échéance déjà dépassée le
   rebloquerait dans la seconde et le geste n'aurait servi à rien.
3. **Commande d'exploitation**`pnpm --filter @cythin/api mfa:reset -- --email=… --confirm`
3. **Commande d'exploitation**`pnpm --filter @enkadenn/api mfa:reset -- --email=… --confirm`
   (ou `node dist/scripts/reset-mfa.js …` en production, où `ts-node` n'est pas installé). Pour
   l'administrateur d'instance, qui n'a personne au-dessus de lui. Elle demande un accès au
   serveur et à la base — précisément ce qui en fait un privilège acceptable, puisque cet accès
Loading