Traduction automatique, non relue par un locuteur natif. L'anglais fait foi.

Synchronisation temporelleModifier sur GitHubSource : docs/HARDWARE-SAFETY.md

Sécurité matérielle : ce que Kshana fait avec le matériel, et ce qu'il ne fait jamais

État : relecture juridique par le propriétaire en attente. Les notes juridiques ci-dessous sont la lecture que les mainteneurs font de sources publiques, écrites pour qu'un utilisateur sache où sont les limites. Ce ne sont pas des conseils juridiques, elles n'ont pas été relues par un conseil, et le droit diffère selon les pays. Lisez-les comme une raison de consulter un juriste, et non comme une autorisation.

Logiciel à titre consultatif pour la recherche, la simulation et l'essai. Ce n'est pas un équipement homologué et il n'évalue ni n'approuve un récepteur, une horloge ou un laboratoire. Voir la déclaration à titre consultatif dans le README.

La règle#

La réception est le produit. L'émission n'est jamais dans le moteur ouvert.

  • Kshana ne contient aucun code qui pilote un émetteur. Il n'y a aucun chemin d'émission SDR (aucun appel d'émission UHD, HackRF, bladeRF ou Soapy), et aucune forme d'onde de brouillage ou de leurrage n'est écrite dans un fichier destiné à être rejoué.
  • Les fichiers que Kshana écrit (scènes IQ, enregistrements SigMF et ION .sdrx, exports NMEA et bench) décrivent des signaux ou des mouvements simulés et légitimes, et les métadonnées que Kshana écrit pour une scène indiquent qu'elle a été écrite par kshana iq scene (le commentaire ION .sdrx indique qu'il s'agit d'une scène simulée, et non d'un enregistrement).
  • Lorsqu'une expérience a besoin de RF sur un banc, c'est le propre équipement de l'opérateur qui la produit, dans son propre blindage, sous sa propre autorisation. Kshana consigne ce que l'opérateur dit avoir fait, et ne le déduit jamais.

Étapes#

Chaque étape indique ce que fait Kshana, quel matériel est impliqué, qui émet de la RF (le cas échéant), et la porte qui doit tenir avant que Kshana traite le résultat comme une preuve.

Étape Rôle de Kshana Matériel Émission RF Porte État dans 0,38
0 Fichiers : journaux de rejeu, IQ, exports bench, NMEA ou UBX en direct via stdin, TCP ou UDP aucun aucun aucun livré
1 Réception passive : récepteurs en lecture seule ; journaux de synchronisation temporelle (linuxptp, chrony, TICC) ; CSV d'IMU ; iq monitor --follow sur un fichier SigMF en croissance les récepteurs de l'utilisateur, le grandmaster, la SDR en réception aucun toute écriture de configuration vers un récepteur exige un --configure explicite ; la valeur par défaut est la lecture seule livré en partie : formats de journaux de synchronisation temporelle, holdover-test, iq monitor --follow ; l'entrée de récepteur série est prévue
2 Orchestration de laboratoire sans RF de la part de Kshana : une spécification des conditions d'essai, des étapes de l'opérateur (retrait de l'antenne, démarrage du simulateur) sollicitées et horodatées, notation aller-retour et preuve simulateurs du laboratoire, boîtiers blindés par le simulateur du laboratoire seulement, en mode conduit une lab-attestation signée (ci-dessous) consignée dans le paquet de preuves ; Kshana refuse de noter une exécution de laboratoire sans elle l'enregistrement est implémenté dans les paquets de preuves ; le refus de noter sans lui ne l'est pas encore (aucune commande d'exécution de laboratoire n'existe)
3 Rejeu conduit de scènes IQ GNSS légitimes : Kshana écrit le fichier de scène, et l'utilisateur le rejoue avec son propre outil dans un câble avec atténuateurs et un dispositif sous test dans une enceinte RF la SDR de l'utilisateur, ses atténuateurs, son enceinte en mode conduit seulement, sous la responsabilité de l'utilisateur aucun code d'émission dans le moteur ouvert ; les formes d'onde d'interférence et de leurrage restent hors périmètre ; revue du contrôle des exportations ; conseil juridique pas dans le moteur ouvert ; un élément de l'édition commerciale à traiter avec un conseil juridique
4 Matériel RF en boucle fermée en temps réel (hardware-in-the-loop) équipement partenaire partenaire intégrer plutôt par la spécification de l'étape 2 non prévu

« Livré » signifie que le code figure dans cette version. Rien dans ce tableau ne dit qu'une étape a été utilisée avec un partenaire, un laboratoire ou une autorité ; aucune ne l'a été.

Principes#

  1. La réception est le produit, et l'émission n'est jamais dans le code ouvert.
  2. Chaque session matérielle produit un paquet de preuves avec les hachages des entrées, des conditions et des seuils utilisés.
  3. Une attestation de mode conduit ou blindé est consignée, jamais déduite.
  4. Les nombres qui viennent du matériel restent MODELLED tant qu'une référence externe indépendante ne concorde pas (par exemple une trajectoire de vérité de laboratoire ou une horloge de référence). Un seuil fixé à l'avance n'est pas assoupli après une exécution.
  5. Les antennes à diagramme contrôlé, les centrales inertielles et les horloges atomiques à l'échelle d'une puce sont traitées comme des sources de données (diagrammes, journaux, courbes de stabilité publiées), et non comme des dispositifs que Kshana pilote.
  6. Formulation : un résultat est « mesuré par rapport au gabarit » ou, pour une exigence, « apporte des éléments de preuve en faveur de » celle-ci. Kshana ne dit pas qu'un dispositif respecte une norme, et personne ne l'a évalué ni approuvé.

Recevoir des signaux GNSS est légal presque partout. Émettre dans les bandes GNSS ne l'est pas.

  • États-Unis. Le brouillage délibéré des radiocommunications est interdit par 47 U.S.C. §333, et la FCC sévit contre les brouilleurs (https://www.fcc.gov/general/jammer-enforcement). Une émission depuis un banc peut porter au-delà du banc.
  • Ailleurs. Les mainteneurs n'ont pas examiné le droit des autres pays. La communauté autour de gps-sdr-sim déclare que l'émission de sa sortie est interdite par la loi dans la plupart des pays ; considérez cela comme l'hypothèse de travail partout où un conseil juridique n'a pas dit le contraire.
  • Un montage blindé ou conduit est une protection, pas un permis. L'attestation ci-dessous consigne la protection que l'opérateur dit avoir été en place. Elle ne rend pas une émission licite.
  • Enregistrement. L'enregistrement de signaux radio peut soulever des questions de vie privée et de légalité à certains endroits. iq monitor --follow et toute recette de capture sont en réception seule, et l'opérateur est responsable de l'endroit et de ce qu'il enregistre.
  • Contrôle des exportations. Un logiciel de matériel en boucle qui pilote des générateurs de signaux peut relever de règles de contrôle des exportations. C'est pourquoi l'étape 3 est hors du moteur ouvert.
  • Rien ici n'est une approbation ni un accord. Aucun régulateur, aucun polygone d'essai, aucun laboratoire ni aucun fournisseur n'a été consulté sur ce document ni n'a convenu de quoi que ce soit dans celui-ci.

Le champ lab-attestation#

À partir de l'étape 2, une exécution ayant impliqué du matériel de laboratoire porte un objet lab-attestation, consigné dans le paquet de preuves à côté des hachages des entrées. C'est une déclaration d'un opérateur nommé, et non une mesure, et Kshana ne la vérifie pas.

[lab-attestation]                                     # or the same keys at the top level of the file
operator = "name or role of the person responsible"   # required
organisation = "laboratory or company"                # required
date = "2026-11-02"                                   # required, the day of the session
setup = "conducted"                                   # required: "conducted" or "shielded"
attenuation_db = 60.0                                 # required for "conducted": total, emitter to device
enclosure = "RF-shielded box, model and ID"           # required for "shielded"
emitter = "laboratory-owned simulator, model"         # required: what produced any RF
statement = "No emission outside the enclosure or cable path."   # required, free text
signature = "ed25519:..."                             # optional: the operator's own detached signature, recorded as given

Ce qui est implémenté dans 0,38 :

  • kshana receiver-trust evidence ... --lab-attestation <file.toml> valide le fichier et consigne l'attestation dans le manifest.json du paquet. Le manifeste est couvert par la signature Ed25519 du paquet, de sorte que l'enregistrement ne peut pas être modifié sans rompre la vérification. La même chose est disponible comme argument lab_attestation de evidence_create en Python et comme argument lab_attestation_toml de l'outil MCP create_evidence_pack (la version pour navigateur ne crée pas de paquets).
  • Un paquet créé sans attestation est, octet pour octet, ce qu'il était auparavant.
  • kshana evidence verify signale l'attestation et indique qu'elle est « attested by the named operator; not verified by Kshana ».
  • Une attestation incomplète, ou dont le setup n'est ni conducted ni shielded (un montage en rayonnement n'est pas accepté comme exécution de laboratoire), est refusée et aucun paquet n'est créé.

Ce qui n'est pas encore implémenté : la règle de l'étape 2 selon laquelle Kshana refuse de noter une exécution de laboratoire sans attestation. Aucune commande ne prend d'option d'exécution de laboratoire dans 0,38, il n'y a donc rien à refuser ; la règle arrivera avec les commandes d'orchestration de laboratoire. Une attestation consigne la déclaration de l'opérateur sur une protection. Elle ne rend aucune émission licite et ne change pas l'étiquette d'un résultat : une exécution de laboratoire notée est MODELLED sauf si une référence externe concorde.

Ce que cela signifie pour un contributeur#

  • N'ajoutez pas de chemin d'émission, de dépendance d'émission ni d'exemple d'émission au moteur ouvert.
  • N'ajoutez pas de générateur de forme d'onde dont la sortie est un signal de brouillage ou de leurrage destiné à être rejoué.
  • Les nouvelles entrées matérielles sont en lecture seule par défaut ; une écriture exige une option explicite et une ligne dans ce fichier.
  • Une nouvelle commande qui touche au matériel figure sur chaque surface ou est marquée N/A avec une raison dans SURFACES.md, et indique ici son étape.