{"slug": "cryptship-part-3-an-honest-threat-model-and-the-hardening-that-raises-the-cost", "title": "cryptship | Part 3 — An Honest Threat Model, and the Hardening That Raises the Cost", "summary": "The cryptship project released Part 3 of its writeup, laying out an honest threat model for its code-protection tool and the hardening measures it adds. The project acknowledges that root on the host can always read a running container's plaintext memory, and that only confidential computing or removing the plaintext from the host truly solves this; everything else raises the cost. Its mitigations include a pre-encryption transform step that compiles source (e.g. Python bytecode via scripts/compile-python.sh, or Nuitka) so memory dumps yield compiled artifacts rather than readable source, a tmpfs deploy path, and a licensee-tracing manifest exposing CRYPTSHIP_LICENSE_ID and CRYPTSHIP_CUSTOMER.", "body_md": "Every \"protect your code\" product has to answer one question honestly: **what about root?** This part is cryptship's answer.\n\nThe image on disk is ciphertext. But once your app runs, its plaintext is in the container's memory, and **root on the host can read that memory**. No user-space trick changes that. Only two things truly do:\n\nEverything else in cryptship raises the cost. We would rather say that plainly than sell you a lock that is not there.\n\n```\ncryptship pack --transform-cmd \"<your toolchain>\" …\n```\n\nThe transform runs over a copy of your app **before** it is encrypted. A memory dump then recovers compiled artifacts instead of readable source, which matters a lot when the attacker has AI tools that are good at reconstructing source. The repo includes a Python-bytecode recipe (`scripts/compile-python.sh`); swapping in Nuitka for native code is a one-line change. `scripts/demo-compiled.sh` shows the difference.\n\n`tmpfs`` deploy/`.\nThat stops an attacker who is inside the container or not root. It does not stop root on the host.\n\nThe loader writes `.cryptship-manifest.json` and exposes `CRYPTSHIP_LICENSE_ID` and `CRYPTSHIP_CUSTOMER` to your app. If an instance leaks, it traces back to its licensee. That is a deterrent, not a lock: a determined attacker can strip it.\n\n`docker save` and `tar`.` online` provider, revocation is real and immediate.\nIf you work on confidential computing and want to help, we would love to hear from you.", "url": "https://wpnews.pro/news/cryptship-part-3-an-honest-threat-model-and-the-hardening-that-raises-the-cost", "canonical_source": "https://dev.to/ai2th/cryptship-part-3-an-honest-threat-model-and-the-hardening-that-raises-the-cost-29oe", "published_at": "2026-11-15 16:12:14+00:00", "updated_at": "2026-11-15 16:19:40.252235+00:00", "lang": "en", "topics": ["ai-safety", "developer-tools", "ai-tools"], "entities": ["cryptship", "Nuitka"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/cryptship-part-3-an-honest-threat-model-and-the-hardening-that-raises-the-cost", "markdown": "https://wpnews.pro/news/cryptship-part-3-an-honest-threat-model-and-the-hardening-that-raises-the-cost.md", "text": "https://wpnews.pro/news/cryptship-part-3-an-honest-threat-model-and-the-hardening-that-raises-the-cost.txt", "jsonld": "https://wpnews.pro/news/cryptship-part-3-an-honest-threat-model-and-the-hardening-that-raises-the-cost.jsonld"}}