Protection des logiciels en 2025

Oh! Aujourd'hui, j'ai enfin obtenu mon nouveau Unity Studio!

D'une main tremblante, je déballe le contenu de l'emballage. Oh oui! un petit cristal, à peine la moitié de la taille d'une paume, et sur tout: un processeur, une mémoire (suffisante pour le maximum de fonctionnalités), un processeur vidéo, un processeur audio, le programme lui-même.

La loi de Moore est dure et impitoyable: doubler le nombre de transistors sur la plaque tous les deux ans. Grâce au développement continu des processeurs Intel (suivis de NVidia, AMD, Samsung et autres), elle a réussi à entasser le contenu de l'unité centrale dans un processeur, après quoi le processeur a cessé d'être appelé processeur, mais est devenu un cristal, et a réduit son coût à tel point que l'idée elle-même est devenue possible programme de cristal.

Je l'insère dans le panneau de mon ordinateur: le cristal entre dans la fente et se verrouille, et une icône apparaît sur le bureau. C’est tout! L'installation est terminée! Maintenant, il n'y a plus de longues heures à attendre quelque chose là-bas ... La désinstallation est également simple - retirez le cristal souhaité dans l'un des 256 nids. Mais il s'agit d'une désinstallation matérielle, logicielle - via le menu correspondant dans le système d'exploitation.

C'est vrai, c'est le quatrième cristal de cela, la 7ème version du Studio ... Eh bien, que pouvez-vous faire, les mises à jour ne se propagent pas sur Internet, elles ne peuvent pas. Juste à cause de cette situation: chaque processeur avec sa propre base de code. Autrement dit, l'équipe MOV EAX, EDX a un opcode pas de 8BC2, mais ... personne ne sait lequel. L'ensemble des opcodes est déterminé au hasard en usine lorsque la plaque est brûlée. Et puis la compilation du programme passe en dessous.
Une protection parfaite! Personne ne peut écrire un virus si les commandes de l'assembleur sont différentes! Je me souviens qu'il y a dix ans, il y avait des langages avec leur propre machine virtuelle ... Et maintenant, c # et java sont des langages compilés.

Eh bien, en fait, quelle est la différence sur quel système d'exploitation l'utilisateur est assis, si l'environnement transfère uniquement les tailles de fenêtre et les entrées / sorties des appareils connectés au programme, et que le programme donne une image prête à l'emploi? Dans le même temps, toutes les API d'entrée / sortie de tous les appareils pour tout système d'exploitation sont strictement standardisées et un pas à gauche, un pas à droite - une fuite est envisagée et un saut en place est une provocation.
Oui, il y a des inconvénients - vous devez envoyer des programmes par courrier et commander un «processeur du développeur» pour le développement.

Il est fourni séparément de tout environnement de développement. Soit dit en passant, l'environnement de développement lui-même demande la table de codes d'opcodes assembleur pour un processeur spécifique du développeur, et il n'est pas possible de l'obtenir pour la recherche - cryptage, protocoles de sécurité, tout cela ... s'il a été prouvé que la table de codes peut être obtenue à partir de cet environnement de développement - amendes énormes et gel des lots de versions. Mais alors, vous ne pouvez pas avoir peur que le code source "s'infiltre dans le réseau" - pourquoi est-ce nécessaire si le processeur du développeur est comme une voiture?

Je suis l'un des rares à pouvoir se permettre le processeur d'un développeur ... Et c'est parce que je fais la dernière partie des programmeurs - le développement web.

Soit dit en passant, ce n'est pas une tâche facile. Toute dynamique - s'exécute côté serveur et est compilée. Et aucun code actif ne peut être transmis à l'utilisateur. Mais l'utilisateur peut transférer tous les clics de souris et toutes les saisies au clavier ... Oui, les serveurs devaient devenir plus puissants ... Autrement dit, il est maintenant tout simplement impossible de distinguer un site d'un client léger. Je me souviens à quel point les développeurs ont élevé lorsque notre président a publié un tel décret!

Et où aller? Aux États-Unis, un décret similaire est sorti un an plus tôt ... Mais au moins ils ont un réseau et des serveurs pour faire face à cette charge ... et nous avons tout comme toujours ...

Eh bien, toutes ces bêtises de normalisation n'ont pas atteint les langages de programmation! Il y a eu des tentatives pour appeler l'état de la langue 1C et interdire le reste ... Dieu merci, 1C lui-même s'y est opposé - il ne rattraperait jamais tous les cadres existants de toutes les langues existantes. Eh bien, la société s'est exprimée ...

Une autre joie est l'open source. Certes, il devait être payé. Pas pour les bibliothèques et les frameworks individuels, bien sûr, mais pour les programmes individuels et les OS. Pourquoi avez-vous dû le faire? Parce que personne ne peut compiler des tris pour votre processeur du système d'exploitation - il n'y a pas de table de codes de processeur. Et la libération du cristal vaut de l'argent ... c'est comme ça qu'ils tournent. Le même OpenOffice organise périodiquement la collecte de l'argent pour son émission.

Upd: on suppose que la capacité du processeur au moins ne diminue pas, mais que le maximum augmente. C'est-à-dire le nombre d'options par opcode est de 2 ^ 64 ou plus.
Avec une augmentation du nombre de transistors sur une puce, la productivité n'augmente pas nécessairement: par exemple, la dernière mafia "pèse" 42 gigaoctets dans une version compactée - et tout cela devrait reposer sur la puce. C'est-à-dire lecteur flash minimum intégré de 1 To (nous avons l'avenir, non?) + xs combien de RAM.

Upd2: J'ai oublié de mentionner que chaque cristal est un système complètement autonome qui n'a pas accès aux fichiers sur le disque interne. C'est-à-dire Vous ne pouvez pas copier une calculatrice, des textures ou un arrière-plan de bureau cousu dans le système d'exploitation sur une clé USB. En outre, vous ne pouvez pas copier votre programme sur le disque Crystal et l'exécuter à partir de là. La seule exception est le processeur du développeur - il peut enregistrer les fichiers compilés sur un disque externe (par rapport à la puce) et les exécuter à partir de là.

Selon les résultats de la discussion, il s'est avéré que 64 bits par opcode sont fissurés dans un délai acceptable. Donc, par ma propre volonté de l'auteur, je change la profondeur de bits du cristal en 128 bits et dis que si un opcode inactif est spécifié, une exception est levée pour le processeur de cristal du type "l'attaque est en marche". La façon dont le programme réagit sur une puce n'est pas connue, mais nous supposerons la pire option: dans le cas d'une attaque réseau, bloquez l'adresse IP, dans le cas d'une attaque locale, le programme sera arrêté et la demande devra être envoyée / envoyée au support technique.

Source: https://habr.com/ru/post/fr399781/


All Articles