✕

Sécurité, infrastructure et disponibilité

Systems

Un moteur ne vaut que ce qui le maintient en vie.

Quant construit les moteurs. Systems tient le sol sur lequel ils se dressent : une porte, une tour de garde, une main sur l'interrupteur. Ci-dessous, l'architecture elle-même — pas une brochure à son sujet.

Vous êtes déjà à l'intérieur. Cette requête a été filtrée, chronométrée et déposée en périphérie — ·

L'architecture

Quatre étapes et une seule main. Chaque flèche est une décision ; chaque décision est enregistrée.

L'INTERNET PUBLIC clients · marchés · et tous les autres 01 LA PÉRIPHÉRIE tourne dans plus de 300 villes · aucun hôte d'origine à trouver règles appliquées avant que la requête devienne trafic propre 02 LA PORTE session signée · une clé liée à une seule adresse trois clés manquées et elle se referme IMPASSE aucun indice, aucune erreur, aucune seconde chance nommée 03 L'OPÉRATION moteurs flux coffre chaque partie isolée de la suivante une brèche dans une seule partie n'atteint rien d'autre 04 LA TOUR DE GARDE chaque événement, avec sa ville, son réseau et son heure LA MAIN autoriser ou bloquer — en un geste alerte cette décision devient une règle en périphérie — en quelques secondes, pour de bon Rien dans ce schéma n'est aspirationnel : cette page est servie à travers lui.

Mesuré, jamais prétendu

Quatre chiffres du système sur lequel vous lisez ceci.

1016
espace de clés
combinaisons par clé d'accès — et chaque clé ne s'ouvre que pour une seule adresse
3
tentatives
clés manquées avant que la porte se referme et que la tentative soit déposée avec son origine
0
hôte exposé
il n'y a aucun serveur d'origine à scanner : le système est la périphérie elle-même
365
jours de HSTS
un navigateur qui nous a rencontrés une fois ne nous parlera plus jamais en clair

Ce que nous tenons

Trois missions. Rien d'autre n'est promis, et ces trois-là ne se partagent pas.

Zéro confiance à la porte

Aucun compte n'est cru parce qu'il s'est présenté. Identité, clé et origine sont vérifiées ensemble, à chaque requête, et une clé qui dérive de son adresse cesse de fonctionner.

Une tour de garde qui rend compte

Disponibilité, latence, drawdown et intrusion sur un seul tableau, dans votre propre heure. Vous apprenez un événement par nous — pas par vos clients, et pas par un rapport mensuel.

Des systèmes qui se referment eux-mêmes

En cas de brèche, le moteur s'arrête avant de perdre de l'argent, la voie est scellée, et l'état est reconstruit depuis le dernier état propre. La reprise est une procédure, pas une improvisation.

L'interface

La totalité de ce que nous plaçons à côté de votre moteur — chaque ligne, sans dépendances et sans appels cachés. Lisez-la avant de la laisser approcher votre argent. La salle des machines reste fermée de notre côté ; ce qui tourne dans votre maison est à vous d'auditer.

"""MatchTop · engine guard — the piece that sits beside your engine.
Standard library only. Nothing we did not write runs with these rights."""

import hmac, json, os, time
from hashlib import sha256
from urllib.request import Request, urlopen

KEY   = bytes.fromhex(os.environ["MT_KEY"])   # one key per engine, never on disk
EDGE  = os.environ["MT_EDGE"]                  # no address baked into the build
GRACE = 3                                     # one lost beat is the network. three is a decision.


def seal(payload: bytes, beat: int) -> str:
    """Every beat is signed and numbered. A replayed beat is not a beat."""
    return hmac.new(KEY, b"%d." % beat + payload, sha256).hexdigest()


def read_verdict(answer: dict, beat: int) -> str:
    """An answer counts only if it comes back signed, for this beat and no other."""
    ours = hmac.new(KEY, b"%d.%s" % (beat, answer["verdict"].encode()), sha256).hexdigest()
    if not hmac.compare_digest(ours, answer.get("seal", "")):   # constant time, always
        return "halt"                                          # unsigned is not trusted
    return answer["verdict"]


def pulse(engine, beat: int) -> str:
    payload = json.dumps({
        "engine":   engine.name,
        "at":       time.time_ns(),           # UTC nanoseconds. local clocks lie.
        "alive":    engine.alive,
        "latency":  engine.latency_ms,
        "drawdown": engine.drawdown,
    }, separators=(",", ":")).encode()

    call = Request(EDGE, payload, {
        "Content-Type": "application/json",
        "X-MT-Beat":    str(beat),
        "X-MT-Seal":    seal(payload, beat),
    })
    with urlopen(call, timeout=4) as answer:      # we dial out. nothing dials in.
        return read_verdict(json.load(answer), beat)


def guard(engine) -> None:
    beat, missed = time.time_ns(), 0
    while True:
        beat += 1
        try:
            verdict, missed = pulse(engine, beat), 0
        except Exception:
            missed += 1
            verdict = "halt" if missed >= GRACE else "run"   # silence is not consent

        if verdict == "halt":
            engine.halt()                     # stop the money first
            engine.seal()                     # then close the path
            return                            # and stay down until a human says otherwise

        time.sleep(engine.beat_seconds)

Ce qui ne peut pas être copié

Pas des fonctionnalités que nous avons choisies. La forme même de la maison.

L'arrangement habituel
Ici
Qui répond
Un support de première ligne qui suit un script. L'ingénieur qui a construit le système est injoignable — par conception.
L'ingénieur qui l'a construit. Il n'y a personne d'autre à atteindre, et personne entre vous et lui.
Chaque année
Un module de plus, une ligne de plus sur la facture. Le système ne peut que s'alourdir.
Nous retirons ce dont vous n'avez plus besoin. Le système s'allège — et ce qu'il vous coûte aussi.
La décision
Vit dans leur console. Vous êtes notifié, puis vous attendez quelqu'un qui a les droits d'agir.
Vit dans votre main. Un geste, et le moteur s'arrête, où qu'il tourne dans le monde.
Quand ça casse
Ils vous disent que ça a cassé. À partir de là, c'est votre problème à résoudre.
Nous avons aussi construit le moteur, donc nous entrons et le réparons. Une seule maison répond des deux moitiés.
L'ajustement
Un produit configuré pour vous — à partir du même qui est vendu à trente mille autres.
Un système mesuré pour vous : votre opération, votre exposition, vos heures, votre horloge.

Rien de tout cela n'est une liste de fonctionnalités, et c'est exactement pourquoi cela ne peut pas être sous-coté. Une entreprise avec une équipe commerciale ne peut pas vous donner son ingénieur. Une entreprise qui doit faire grossir sa facture chaque année ne peut pas en retirer quoi que ce soit. Une entreprise qui ne fait qu'observer ne peut pas réparer. Elles ne sont pas derrière nous — elles sont construites différemment, et elles ne peuvent pas passer de l'autre côté sans cesser d'être elles-mêmes.

C'est aussi pourquoi il n'y a pas de grille tarifaire sur cette page. Nous mesurons d'abord l'opération, puis nous chiffrons ce que nous avons mesuré.

Dites-nous ce qui ne doit jamais s'arrêter

Deux lignes suffisent. Nous les lisons nous-mêmes et répondons nous-mêmes — il n'y a aucune file derrière cette fenêtre.

Cela n'atteint qu'une seule personne, et c'est elle qui répond. Rien ici n'est partagé, vendu ou transmis.

Mr. MatchTop · matchtopalgorithm.ai