J'essaie de protéger certains travaux contre la copie, qui est une carte SD amorçable démarrant un noyau Linux sur un périphérique ARM (Raspberry Pi). J'utilise cette approche:
- L'approche utilise un initrd pour monter un système de fichiers racine chiffré.
- L'initrd génère le mot de passe des systèmes de fichiers en fonction du CID de la carte SD. (une fonction de hachage est utilisée, n'a pas encore décidé sur md5 ou sha1). Initrd essaiera de monter le système de fichiers en utilisant ce mot de passe généré.
- Maintenant, voici la partie la plus intéressante / suspecte: l'initrd lui-même est chiffré à l'aide d'une fonction C personnalisée, fondamentalement chaque octet est XOR à l'aide d'un générateur pseudo aléatoire personnalisé. Le noyau est modifié pour avoir la même fonction de cryptage, qui fonctionne comme décrypteur.
- Le système lui-même est dépouillé, il n'y a donc aucun moyen d'utiliser un clavier ou un stockage externe. Une seule application fonctionne en plein écran.
Ainsi, après que le chargeur de démarrage charge le noyau et initrd, le noyau déchiffre l'initrd et exécute son script init, qui générera le mot de passe et montera le système de fichiers racine.
Ma question est: comment serait-il facile de casser cette configuration (pour décrypter le système de fichiers racine et le faire démarrer à partir de n'importe quelle carte SD)? Quelles sont les parties les plus faibles? Est-il facile de décompiler le noyau et de trouver ces fonctions de chiffrement personnalisées?
EDIT: Voici quelques corrections pour ne pas perdre de temps avec les choses évidentes:
- Le périphérique racine sera crypté avec LUKS (aes256) et la clé sera générée par une fonction HMAC à l'aide du CID de la carte SD et du sel.
- L'algorithme pseudo aléatoire pour le cryptage initramfs sera en fait RC4, juste la clé sera générée en utilisant une fonction personnalisée, car si je stocke simplement la clé dans un tableau d'octets, il est très simple de la récupérer (ouais c'est la sécurité par l'obscurité mais il ne semble pas y avoir d'autre moyen).
- Je comprends que si vous utilisez un émulateur de carte SD, quelqu'un peut faire une copie de ce système, mais c'est OK avec moi, car c'est assez difficile et personne ne peut le faire (également personne ne voudra traiter avec des émulateurs)