-
-
-
-
-
-
-
diff --git a/old/app/main.py b/old/app/main.py
deleted file mode 100644
index e8a1327..0000000
--- a/old/app/main.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# main.py : Backend pour le POC Cyberusgate avec FastAPI
-import asyncio
-import datetime
-import uuid
-from typing import Dict, List
-
-from fastapi import FastAPI, WebSocket, WebSocketDisconnect
-from fastapi.middleware.cors import CORSMiddleware
-
-# --- Initialisation de l'application FastAPI ---
-app = FastAPI(
- title="Cyberusgate POC API",
- description="API pour la démonstration de la solution de badge digital."
-)
-
-# --- Configuration CORS ---
-# Permet au frontend (ouvert depuis un fichier local) de communiquer avec le backend.
-app.add_middleware(
- CORSMiddleware,
- allow_origins=["*"], # Attention : En production, restreindre à l'URL du frontend.
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
-)
-
-# --- "Base de données" en mémoire ---
-# Utilisation d'un dictionnaire pour simuler une base de données d'utilisateurs.
-# La clé est l'ID de l'utilisateur, la valeur contient ses informations.
-users_db: Dict[str, Dict] = {
- "user-001": {"id": "user-001", "name": "Alice Martin", "role": "Collaborateur", "has_access": True},
- "user-002": {"id": "user-002", "name": "Bob Dubois", "role": "Prestataire", "has_access": True},
-}
-
-# --- Gestion des connexions WebSocket pour les logs en temps réel ---
-class ConnectionManager:
- def __init__(self):
- self.active_connections: List[WebSocket] = []
-
- async def connect(self, websocket: WebSocket):
- await websocket.accept()
- self.active_connections.append(websocket)
-
- def disconnect(self, websocket: WebSocket):
- self.active_connections.remove(websocket)
-
- async def broadcast(self, message: str):
- """ Diffuse un message à tous les clients connectés. """
- for connection in self.active_connections:
- await connection.send_text(message)
-
-manager = ConnectionManager()
-
-async def log_and_broadcast(message: str):
- """ Formate un message de log avec un timestamp et le diffuse. """
- timestamp = datetime.datetime.now().strftime("%H:%M:%S")
- log_message = f"[{timestamp}] {message}"
- print(log_message) # Affiche aussi dans la console du serveur
- await manager.broadcast(log_message)
-
-# --- Endpoints de l'API ---
-
-@app.get("/users", summary="Lister tous les utilisateurs")
-async def get_users():
- """ Récupère la liste de tous les utilisateurs enregistrés. """
- return list(users_db.values())
-
-@app.post("/access/simulate", summary="Simuler un scan de badge")
-async def simulate_access(data: Dict):
- """
- Vérifie si un utilisateur a l'accès autorisé et log le résultat.
- """
- user_id = data.get("user_id")
- if not user_id or user_id not in users_db:
- await log_and_broadcast(f"ERREUR: Tentative d'accès avec un ID inconnu '{user_id}'.")
- return {"status": "refused", "reason": "Utilisateur inconnu"}
-
- user = users_db[user_id]
- if user["has_access"]:
- await log_and_broadcast(f"ACCÈS AUTORISÉ: {user['name']} ({user['role']}) à la porte principale.")
- return {"status": "authorized", "user_name": user['name']}
- else:
- await log_and_broadcast(f"ACCÈS REFUSÉ: {user['name']} ({user['role']}) - Droits révoqués.")
- return {"status": "refused", "user_name": user['name'], "reason": "Accès révoqué"}
-
-@app.post("/users/revoke/{user_id}", summary="Révoquer l'accès d'un utilisateur")
-async def revoke_access(user_id: str):
- """ Désactive les droits d'accès pour un utilisateur donné. """
- if user_id in users_db:
- users_db[user_id]["has_access"] = False
- user_name = users_db[user_id]['name']
- await log_and_broadcast(f"ACTION ADMIN: Accès révoqué pour {user_name}.")
- return {"status": "success", "user_id": user_id, "has_access": False}
- return {"status": "error", "message": "Utilisateur non trouvé"}
-
-@app.post("/users/create_ephemeral", summary="Créer un pass éphémère")
-async def create_ephemeral_pass():
- """ Crée un nouvel utilisateur 'Prestataire' avec un accès temporaire. """
- new_id = f"guest-{uuid.uuid4().hex[:4]}"
- new_user = {
- "id": new_id,
- "name": f"Visiteur {new_id}",
- "role": "Pass Éphémère",
- "has_access": True,
- }
- users_db[new_id] = new_user
- await log_and_broadcast(f"ACTION ADMIN: Pass éphémère créé pour {new_user['name']}.")
- return new_user
-
-# --- Endpoint WebSocket pour les logs ---
-
-@app.websocket("/ws/logs")
-async def websocket_endpoint(websocket: WebSocket):
- """
- Point de connexion pour les clients qui veulent recevoir les logs en temps réel.
- """
- await manager.connect(websocket)
- await log_and_broadcast("INFO: Un client de la console d'admin s'est connecté.")
- try:
- while True:
- # On maintient la connexion ouverte pour envoyer des messages
- # Le serveur n'attend pas de message du client ici.
- await asyncio.sleep(1)
- except WebSocketDisconnect:
- manager.disconnect(websocket)
- await log_and_broadcast("INFO: Un client de la console d'admin s'est déconnecté.")
-
-# --- Point d'entrée pour lancer le serveur (avec uvicorn) ---
-if __name__ == "__main__":
- import uvicorn
- print("Lancement du serveur de l'API Cyberusgate sur http://0.0.0.0:8000")
- uvicorn.run(app, host="0.0.0.0", port=8000)
diff --git a/old/app/requirements.txt b/old/app/requirements.txt
deleted file mode 100644
index 55f7559..0000000
--- a/old/app/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-fastapi==0.111.0
-uvicorn[standard]==0.29.0
-python-multipart==0.0.9
\ No newline at end of file
diff --git a/old/app/site.webmanifest b/old/app/site.webmanifest
deleted file mode 100644
index 45dc8a2..0000000
--- a/old/app/site.webmanifest
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
diff --git a/old/docker-compose.yml b/old/docker-compose.yml
deleted file mode 100644
index a7a3910..0000000
--- a/old/docker-compose.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-services:
- backend:
- build:
- context: .
- dockerfile: Dockerfile
- container_name: cyberusgate_backend
- ports:
- - "8000:8000"
- environment:
- - PYTHONUNBUFFERED=1
- networks:
- - cyberusgate-network
-
- frontend:
- build:
- context: .
- dockerfile: Dockerfile.nginx
- container_name: cyberusgate_frontend
- ports:
- - "8888:80"
- networks:
- - cyberusgate-network
-
-networks:
- cyberusgate-network:
- driver: bridge
\ No newline at end of file
diff --git a/presentation/index.html b/presentation/index.html
new file mode 100644
index 0000000..ae87c0c
--- /dev/null
+++ b/presentation/index.html
@@ -0,0 +1,1164 @@
+
+
+
+
+
+ Soutenance Cyberusgate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cyberusgate
+
+
+
+ 1 / 20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CYBERUSGATE
+
Sécurité Cybernétique et Contrôle d'Accès
+
+
Vers un nouveau standard d'entreprise
+
+
+
+
+
+
+
1. Gouvernance du Projet
+
+
+
+
+
+
Nicolas
+
Dir. Général & Stratégie
+
Gouvernance, Vision, Scalabilité
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Anthony
+
Dir. Technique
+
Innovation Tech & UX Technologie invisible
+
+
+
+
+
Guillaume
+
Dir. Conformité
+
Éthique, RGPD Protection des données
+
+
+
+
+
Erkin
+
Dir. Commercial
+
Acquisition, Marketing Modernisation B2B
+
+
+
+
+
Antoine
+
Dir. Financier
+
Infrastructure & Finance Pérennité du modèle
+
+
+
+
+
+
+
+
2. Le Constat de Départ
+
Le badge physique PVC est dépassé, coûteux et risqué.
+
+
+
+
Une contrainte opérationnelle
+
Badge oublié, perdu, prêté, abîmé ou conservé après une mission. Chaque friction perturbe l'accueil et génère de l'attente.
+
+
+
+
Une charge administrative
+
Création, encodage, impression, remise, modification et révocation mobilisent inutilement les RH, les moyens généraux et la sécurité (env. 30min/badge).
+
+
+
+
Une faille potentielle
+
Un badge non désactivé rapidement (délai de 48h à 72h courant) devient une porte d'entrée physique vers des espaces sensibles.
+
+
+
+
+
+
+
3. Quantification du Problème
+
+
+
+
+
+
Coût complet annuel estimé
+
18,50 €
+
par badge et par collaborateur
+
+ 12% de perte/vol par an
+
+
+
+
+
+
3,50 €
+
+
Matériel & Composants
+
Support PVC, Puce RFID/NFC, Antenne.
+
+
+
+
2,00 €
+
+
Personnalisation & Production
+
Impression, rubans YMCKO, laminage.
+
+
+
+
13,00 €
+
+
Administratif & Temps Humain
+
Saisie SIRH, encodage, gestion à l'accueil, support.
+
+
+
+
+
+
+
+
+
+
+
4. La Solution Cyberusgate
+
Orchestrer une identité professionnelle dynamique, pas juste ouvrir une porte.
+
+
+
+
Application Mobile
+
Badge virtuel sur smartphone (iOS/Android). Usage simple, verrouillage natif par biométrie (FaceID/TouchID), zéro plastique.
+
+
+
+
Console d'Administration
+
Gestion centralisée Cloud. Création de pass éphémères pour les prestataires en 3 clics, gestion des zones et horaires.
+
+
+
+
Écosystème & APIs
+
Connexion directe avec les SIRH (Lucca, Workday), gestion des temps, et systèmes du Smart Building.
+
+
+
+
+
+
+
5. Le défi de l'interopérabilité
+
La réalité : les fabricants (HID, STid, Genetec) utilisent des SDK fermés. Notre app doit s'adapter à l'existant sans tout remplacer.
+
+
+
+
+
+ Stratégie "SDK Wrapper"
+
+
+ Notre application intègre les SDK officiels de chaque fabricant partenaire. Cyberusgate devient un "launcher" intelligent qui détecte le site et appelle le SDK spécifique.
+
+
+
Rétrocompatibilité immédiate
+
Aucun matériel à changer pour le client
+
+
+
+
+
+
+ Standards Ouverts
+
+
+ Pour les nouvelles installations, nous poussons vers des standards de lecture sécurisée modernes, indépendants du matériel propriétaire.
+
+
+
OSDP : Plus moderne et sécurisé que Wiegand.
+
FIDO2 : Authentification par clés cryptographiques.
+
+
+
+
+
+
+
+
6. Architecture Logicielle Découplée
+
+
+
+
+
+
+
+
+
Couche d'Abstraction (HAL)
+
Une API interne qui normalise les requêtes. Peu importe le lecteur, l'application traite une commande universelle : RequestAccess(SiteID, UserToken).
+
+
+
+
+
+
+
+
+
Gestionnaire de Jetons (Token Vault)
+
Le cœur sécurisé. Utilisation des TEE (Trusted Execution Environment) : Android StrongBox ou Apple Secure Enclave pour isoler les clés cryptographiques.
+
+
+
+
+
+
+
+
+
Communication Bidirectionnelle
+
Gestion des certificats de révocation en temps réel via une connexion backend ultra-sécurisée (HTTPS/TLS 1.3 obligatoire).
+
+
+
+
+
+
+
+
7. Contraintes Technologiques Majeures
+
+
+
+
+
+
BLE vs NFC
+
+ Le Bluetooth (BLE) permet le "Hands-free" (ouverture sans sortir le téléphone) et une meilleure portée.
+
+
+ Défi : Gérer les états Bluetooth (Scan, GATT) pour une latence < 200ms.
+
+
+
+
+
+
+
Permissions OS
+
+ iOS et Android restreignent l'accès NFC/BLE en arrière-plan pour éviter de vider la batterie.
+
+
+ Défi : Optimiser le cycle de vie pour un éveil en millisecondes.
+
+
+
+
+
+
+
Certification Cyber
+
+ Centraliser l'accès fait de nous une cible. La sécurité logicielle doit être irréprochable.
+
+
+ Défi : Pentests continus et visée d'une certification type CSPN (ANSSI).
+
Grands Comptes Intégration SIRH complète Alertes intrusion & SLA
+
+
+
Frais d'installation initiaux de 150€ à 500€ / porte (Audit & Configuration).
+
+
+
+
+
18. Structure Financière Initiale
+
Financement maîtrisé de l'amorçage et transparence des investissements critiques.
+
+
+
+
+
Gouvernance & Capital
+
+ Capital Social Total
+ 20 000 €
+
+
+
+
+ Nicolas Morais
+
4 000 €20% des parts
+
+
+ Anthony Mvakanga
+
4 000 €20% des parts
+
+
+ Guillaume Sanchez
+
4 000 €20% des parts
+
+
+ Antoine Decabooter Holleman
+
4 000 €20% des parts
+
+
+ Erkin Michel Ozturk
+
4 000 €20% des parts
+
+
+
Un pacte d'associés équilibré en SAS prouvant la cohésion de l'équipe fondatrice.
+
+
+
+
+
+
Investissement (CAPEX) & Charges
+
+
+
Investissement Initial Ciblé (Cash Burn)
+
~ 89 300 €
+
+
+
+
+
+
+ R&D & Infrastructure "Zéro Stock"
+
Développement de l'App, Token Vault et APIs. Zéro matériel physique stocké, d'où un coût maîtrisé.
+
+
+
+
+
+ Audits Cyber & Conformité
+
Budget alloué aux pentests externes (ANSSI) pour rassurer les DSI dès le lancement.
+
+
+
+
+
+ Charges RH (OPEX)
+
Recrutement progressif : alternant IT (A1), Ingénieur Cyber + Business Dev (A2).
+
+
+
+
+
+
+
+
+
+
19. Stratégie RH & Rémunération
+
Un engagement total des fondateurs pour sécuriser la phase d'amorçage et préserver la trésorerie.
+
+
+
+
+
+
+
+
+
Année 1 : Zéro Rémunération
+
0 € pour les 5 associés fondateurs
+
+ Afin de préserver le capital et de maximiser l'investissement dans le développement de la plateforme (R&D), aucun salaire ni dividende ne sera versé lors du premier exercice.
+
+
+
+
+
+
+
+
+
+
+
Premier recrutement (Année 1)
+
1 Alternant IT / SysOps
+
+ Renfort technique sur l'infrastructure Cloud. L'alternance permet de maîtriser nos coûts fixes (OPEX) grâce aux aides de l'État, tout en formant notre futur talent.
+
+
+
+
+
+
+
Trajectoire Années 2 & 3
+
+
Déblocage salaires : Indexé sur le seuil de rentabilité (> 37k€).
+
Embauche A2 : 1 Ingénieur Cybersécurité (Audits).
+
Embauche A2/A3 : 1 Business Developer B2B.
+
+
+
+
+
+
+
+
+
20. Bilan Prévisionnel & Trajectoire 3 Ans
+
+
+
+
+
+
+
+
Indicateurs clés (en €)
+
Année 1
+
Année 2
+
Année 3
+
+
+
+
+
Chiffre d'Affaires (CA)
+
~ 45 000
+
~ 180 000
+
~ 650 000
+
+
+
Créances clients (30j)
+
2 200
+
18 000
+
64 998
+
+
+
Dettes fournisseurs (Serveurs)
+
1 680
+
2 090
+
2 090
+
+
+
Dettes fiscales et sociales
+
0
+
18 000
+
64 998
+
+
+
Besoin en Fonds de Roul. (BFR)
+
520
+
- 2 090
+
- 2 090
+
+
+
+
+
+
BFR Négatif : Les dettes fournisseurs stagnent malgré la hausse du CA grâce à la scalabilité du Cloud. L'entreprise génère sa propre trésorerie dès l'Année 2.
+
+
+
+
+
+
+
+
Seuil de Rentabilité
+
37 018 €
+
+
+
+
+
+
Trajectoire OPEX
+
+
A1
+
+
Amorçage & Preuve
+
15 pilotes IDF. Coûts concentrés sur la R&D. BFR maîtrisé.
+
+
+
+
A2
+
+
Accélération
+
Embauches clés. Le modèle d'abonnement génère du cash.
+
+
+
+
A3
+
+
Maturité (Scale)
+
CA ~650k€. Les coûts fixes (OPEX) sont lissés par le volume (12 000 util).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cyberusgate ne remplace pas seulement une serrure.
+
+
+
+ Notre solution crée un véritable hub d'identité professionnelle : responsable, sécurisé, interopérable et prêt pour les entreprises de demain.
+
+
+
+
+
Le Besoin
+
Validé économiquement par la fin des 18,50€ de coûts cachés liés au plastique.
+
+
+
La Tech & Légal
+
Une architecture Zero Trust, compatible avec l'existant, et "Privacy by Design".
+
+
+
Le Business
+
Un modèle SaaS hyper-scalable, un BFR négatif dès l'Année 2 et un capital solidaire.