Depuis, récemment, il a été prouvé que le transfert de données via le port USB est fondamentalement défectueux, je me demande s'il existe des moyens 100% sécurisés de transférer des données sans utiliser Internet.
Supposons qu'Alan dispose d'un système informatique qui a été hors ligne pendant toute sa durée de vie. Alan veut importer des données de Bob. Alan peut-il faire cela et rester déconnecté du monde extérieur?
Mes pensées étaient, soit Alan doit avoir un contrôle total sur les données transférées (c'est-à-dire qu'Alan sait à 100% ce qu'il importe), soit Alan doit savoir exactement (et je veux dire) comment les données sont traitées par son système informatique. En effet, Alan peut déjà avoir un logiciel malveillant installé sur son système informatique, et ce logiciel malveillant peut utiliser des données provenant des données transférées qui pourraient assurer la communication entre le système informatique d'Alan et le monde extérieur sans installer réellement de logiciel malveillant dans le processus de le transfert.
Éditer:
Au lieu de "Alan veut importer des données de Bob", j'aurais dû écrire qu'Alan et Bob veulent communiquer bidirectionnellement alors qu'aucun d'eux ne serait connecté à Internet pendant leur communication.
Quand j'ai écrit "sécurité", je voulais dire qu'Alan ne fuit aucune autre donnée que celles qu'il a l'intention d'envoyer. Ainsi, même si les données sont modifiées lorsqu'elles parviennent à Bob, et tant que les bits de données qui ont été modifiés ne sont pas copiés à partir du système d'Alan, ils seraient qualifiés de 100% sécurisés, pour ce type de sécurité. De plus, Bob est un utilisateur régulier d'Internet à vie avec la possibilité de se déconnecter pendant une certaine période (c'est-à-dire pendant le transfert de données entre les deux).
Quand j'ai écrit "Alan doit avoir un contrôle total sur les données transférées", je voulais dire qu'Alan doit avoir un moyen de vérifier petit à petit les informations qui sont en transit, et d'une certaine manière les comprendre précisément.
Pour être plus explicite, Bob peut également avoir des logiciels malveillants sur son ordinateur.
Cela dépend vraiment des menaces spécifiques auxquelles vous pouvez être confronté, de la direction de vos transferts de données, etc.
Vous mentionnez les dangers de l'USB. Le principal est en effet lié à son firmware ouvrant la possibilité d'une attaque de type BadUSB. Lorsque vous devez transférer des données dans les deux sens, vous pouvez donc préférer utiliser des cartes SD qui ne sont pas sensibles à ces menaces (si vous utilisez un Lecteur de carte SD USB, cela devrait être sûr mais dédiez-le à un seul ordinateur, ne le partagez pas!).
J'insiste ici sur le fait que je mentionne les cartes SD comme une solution viable contre les attaques de micrologiciel USB uniquement. Dans de telles attaques, un micrologiciel de lecteur flash USB peut être corrompu afin de simuler des périphériques voyous (faux clavier, carte réseau, etc.), de telles attaques ne sont pas possibles avec les cartes SD. Je pense que c'est la raison pour laquelle nous voyons Edward Snowden s'appuyer sur des cartes SD dans le film Citizenfour de Laura Poitras lors de l'échange de fichiers entre son propre ordinateur et celui du journaliste.
Les cartes SD sont également équipées d'un commutateur en lecture seule. Bien que ces commutateurs soient très pratiques pour empêcher la modification accidentelle du contenu de la carte, ils ne peuvent pas être invoqués pour empêcher les modifications malveillantes car l'accès en lecture seule n'est pas appliqué par la carte elle-même mais délégué au système d'exploitation de l'ordinateur.
Vous parlez d'une éventuelle fuite d'informations par certains logiciels malveillants sur l'ordinateur d'Alan stockant des données dans un canal caché. Si vos transferts sont principalement dans une seule direction et que c'est votre principale menace, alors je vous suggère d'utiliser des supports en lecture seule comme des CD ou des DVD . Je ne sais pas s'il existe toujours des CD/DVD - lecteurs sur le marché, ce serait le meilleur car cela supprimerait physiquement toute possibilité pour le PC d'Alan de stocker des données dessus, mais même sans cela, il serait de loin plus difficile de stocker discrètement des données sur un tel disque.
Avec quelques recherches, vous pouvez également trouver d'autres alternatives, par exemple dans le fil comment protéger ma clé USB contre les virus vous verrez une discussion concernant les clés USB contenant un commutateur de blocage d'écriture (qui fonctionne dans d'une manière plus sûre que l'équivalent de la carte SD), l'utilisation de bloqueurs d'écriture qui sont des équipements normalement conçus à des fins médico-légales, etc.
Implémentées telles quelles, les solutions fournies ci-dessus supposent qu'Alan et Bob sont en contact direct, ce qui n'est pas toujours vrai. Cependant, les transferts de données en dehors de tout réseau informatique restent possibles même sur longue distance, principalement en utilisant les courriers postaux habituels, aka snail mail .
Cette méthode peut être perçue à tort comme peu sûre par certaines personnes, alors que lorsqu'elle est utilisée correctement, elle peut en fait présenter un niveau de sécurité très élevé. Une telle méthode est utilisée par l'industrie lorsqu'elle doit déplacer en toute sécurité une très grande quantité de données. Amazon fournit son service Amazon Snowball pour une telle opération, la page Wikipedia sur sneakernet répertorie également d'autres exemples d'utilisation réels, y compris des expériences amusantes inspirées de n poisson d'avril jour RFC en utilisant un pigeon voyageur pour transporter le support de stockage.
Dans notre scénario actuel, Alan et Bob devront prendre quelques précautions pour s'assurer que tout se passe bien:
Alice et Bob devront échanger leurs clés publiques. Cela peut sembler simple, mais dans le monde concret, Alan et Bob peuvent ne pas avoir la possibilité de se rencontrer une seule fois, peuvent ne pas se connaître et ne peuvent avoir aucun tiers de confiance commun pour se porter garant de l'identité de l'autre ou fournir un service d'entiercement. Cependant, toute la sécurité de ce système repose sur le fait que cette opération doit être effectuée avec succès. Heureusement, le chiffrement asymétrique aide grandement, car la fuite de ces clés n'aura pas d'impact profond, mais il ne sera d'aucune utilité contre une usurpation d'identité ou une altération se produisant à cette étape.
Le support d'échange de données choisi peut avoir une certaine importance car chacun peut présenter des caractéristiques différentes:
Les périphériques de stockage basés sur le micrologiciel sont les plus fréquents de nos jours, allant des disques durs avec un volume de données plus élevé aux cartes micro SD qui peuvent être très facilement dissimulées. On peut préférer l'acheter dans un magasin physique pour éviter toute altération initiale, mais comme nous le verrons plus tard, l'appareil ne sera plus fiable dans tous les cas une fois le premier envoi effectué.
Les appareils sans micrologiciel ne présentent évidemment aucun problème lié au micrologiciel, mais selon les besoins exacts d'Alan et Bob, ils peuvent présenter d'autres problèmes en particulier concernant l'anonymat: disques brûlés et papier imprimé par exemple peut contenir des identifiants uniques permettant de les relier à leur auteur (un tel identifiant ne permet cependant pas la localisation de l'auteur, mais une fois son équipement saisi, ils peuvent être utilisés pour prouver que cet équipement les a produits).
Bien sûr, les données devront être correctement cryptées et signées avant d'être stockées sur le support. J'aurais tendance à préférer un fichier crypté qui peut être plus facilement manipulé que d'utiliser directement une partition cryptée sur le support.
Je suggère fortement que les données soient correctement sauvegardées avant d'être envoyées. Bien qu'un tel transfert soit sécurisé de la manière dont un adversaire potentiel ne pourra pas accéder aux données ni les altérer même s'il parvient à les intercepter, les données peuvent toujours être perdues ou disparaître (cela peut être le résultat d'une action involontaire: il arrive que des colis soient perdus ou saisis sans aucune intervention de Big Brother, Murphy est très bon à ça aussi!).
Les méthodes d'obscurcissement de l'expéditeur et du destinataire réels (des boîtes postales aux informations plus avancées), lorsqu'elles sont combinées à la dissimulation du périphérique de stockage, peuvent aider à éviter l'interception.
Au moins du côté du destinataire, je conseille fortement de ne pas connecter le périphérique de stockage reçu directement à l'ordinateur principal, mais à la place:
Connectez le média reçu à un système minimal spécialement renforcé (aka a mouture dip , l'hôte lui-même peut ne pas avoir de disque dur et démarrer à partir d'un LiveCD) où vous pourrez inspecter rapidement le contenu du média et le fichier chiffré (ne le déchiffrez pas sur cet hôte!),
Vous voudrez peut-être copier le fichier chiffré sur un support plus fiable (ici, un cas où l'utilisation d'un fichier chiffré au lieu d'une partition chiffrée peut être utile). Déplacer le fichier crypté vers un autre support peut être particulièrement utile si vous utilisez un périphérique de stockage de base de micrologiciel car, une fois passé par le service postal, vous ne pouvez plus garantir l'intégrité du micrologiciel (pendant que les données cryptées sont signées, il n'y a pas de signature que vous pouvez vérifier pour le reste du périphérique de stockage).
Ensuite, vous pouvez connecter ce support le plus fiable sur votre ordinateur principal où vous pourrez le déchiffrer en toute sécurité, faisant de cette étape la fin de l'histoire :).
Il n'est pas raisonnable de supposer que les données que vous recevez (y compris votre système d'exploitation, BTW) d'une source externe peuvent être sécurisées à 100%.
Le moyen le plus sûr de transférer quelque chose et sans garantie d'effets secondaires (par exemple, le système d'exploitation monté sur un disque externe) est de saisir toutes les données à la main pendant que vous êtes sûr de tout comprendre. Même alors, vous n'avez toujours aucune garantie.
Fondamentalement, la seule façon d'atteindre une sécurité parfaite est de ne jamais laisser votre ordinateur faire quoi que ce soit avec quoi que ce soit.
Il est impossible de réaliser ce que vous demandez. Vous avez spécifié dans vos critères que l'ordinateur d'Alan peut être pré-infecté par des logiciels malveillants arbitraires et inconnus. En d'autres termes, l'ordinateur d'Alan est libre de faire tout ce qu'il aime, en utilisant n'importe quel matériel sous son contrôle. Vous avez également spécifié que vous vouliez une méthode sécurisée à "100%" et vous n'avez pas précisé ce que vous entendez par sécurisé. Êtes-vous préoccupé par la destruction, le vol, la falsification de données ou tout ce qui précède? Vous n'avez pas spécifié un niveau de sécurité inférieur à 100% comme étant une option, donc ma réponse ne sera que dans le contexte de la sécurité à 100%.
Vous avez tenté de sécuriser le système en le déconnectant d'Internet et en interdisant les clés USB. Cela vous donnera une plus grande sécurité contre certains types d'attaques qui s'appuient sur ces supports pour prendre le contrôle de votre machine. Mais vous avez déjà des logiciels malveillants arbitraires il est donc déjà trop tard pour se protéger contre cela.
Il est également trop tard pour se protéger contre la destruction des données. Votre logiciel malveillant peut décider de détruire toutes les données d'Alan à tout moment.
La principale source de préoccupation que vous souhaitez protéger est donc probablement la fuite de données. Peu importe comment vous obtenez les données in sur l'ordinateur d'Alan. Internet, USB, pigeon voyageur avec saisie manuelle des données - Le système d'Alan est complètement compromis, il a donc accès à tout.
Donc, les données de congé vont out. Encore une fois, vous ne pouvez pas empêcher à 100% l'ordinateur de communiquer avec le monde extérieur, sans l'empêcher de fonctionner comme un ordinateur. Il a probablement une combinaison de: ventilateurs, circuits électriques, entraînements mécaniques, haut-parleurs, moniteurs, alimentation. Certains d'entre eux sont obligatoires et tous peuvent émettre des signaux contrôlables pour votre malware.
Pour répondre à deux de vos points spécifiques:
soit Alan doit avoir un contrôle total sur les données transférées (c'est-à-dire qu'Alan sait à 100% ce qu'il importe)
C'est un peu non spécifique. Voulez-vous dire qu'il a 100% confiance en la source? Qu'il peut voir 100% du flux de données lorsqu'il entre dans son ordinateur? Qu'il peut 100% comprendre la signification de chaque bit de ce flux de données?
Vous pourriez être en mesure d'atteindre les deux premiers. Le troisième est impossible. Le malware pourrait utiliser n'importe quel type de codage arbitraire pour masquer ses communications.
ou Alan doit savoir exactement (et je le pense) comment les données sont traitées par son système informatique.
Cela est impossible, selon les critères que vous avez définis, en raison du malware.
Étant donné que la question ne précise pas quel type de système informatique Alan a, je suppose aux fins de cette réponse que ce n'est pas un PC de bureau typique, mais plutôt une forme de système informatique embarqué/projet.
Ainsi, Bob grave les données sur une puce ROM et les envoie à Alan via "sneakernet". Alan branche la puce ROM) sur son ordinateur. Puisqu'il s'agit d'un La ROM, rien sur l'ordinateur d'Alan, pas même le malware, ne peut le modifier.
Pour empêcher le malware suspecté de transmettre les données à quelqu'un d'autre, déconnectez tous les périphériques de sortie de l'ordinateur d'Alan. Pas d'Ethernet, pas de WiFi, pas de série ou USB. Ne connectez même pas un moniteur, car le logiciel malveillant pourrait faire clignoter l'écran sous forme de code binaire à quelqu'un d'autre. S'il y a des LED sur la carte informatique, coupez-les au cas où. Et déconnectez également tous les haut-parleurs afin que le logiciel malveillant ne puisse siffler quoi que ce soit à proximité.
Bien sûr, l'inconvénient est que vous n'avez plus aucun moyen de dire ce que fait l'ordinateur d'Alan, ce qui le rend complètement inutile. Mais totalement sécurisé.
Dans votre scénario où Alan récupère les données de l'ordinateur de Bob en toute sécurité, nous devons beaucoup réfléchir à la sécurité en général. La réponse courte est que pour la plupart, tout ira bien. Il y a de fortes chances que vous ne transfériez pas de code malveillant (qui fonctionnerait toujours) si vous effectuez le transfert de données avec une simple clé USB (parfois appelée sneakernet).
Réponse longue: Non, ce sont des données et peuvent toujours être compromises. Si Alan importe des données de Bob et que l'ordinateur de Bob a vu Internet même une seconde, il est possible qu'un code malveillant ait été ajouté à toutes les données que vous allez importer (bien que les chances puissent varier considérablement de très élevées à très petites). ).
La plupart des logiciels malveillants dépendent des connexions Internet et du transfert des données en quatrième et quatrième position, mais il existe encore des virus dans la nature qui, eh bien, veulent juste détruire des choses. Ils ne se soucient pas de savoir si votre ordinateur est connecté à Internet ou non.
De façon réaliste, vous allez probablement bien. Même s'il existe des logiciels malveillants sur les données transportées, une grande partie du code malveillant cesserait de fonctionner sur la machine séparée. En effet, comme indiqué ci-dessus, de nombreux logiciels malveillants contiennent une sorte de fiabilité sur une connexion à Internet, et le code dans le logiciel malveillant pour accéder à la machine d'Alan ne serait pas le même code qui fonctionnerait sur le vôtre. (Faites-moi savoir si vous voulez en savoir plus sur pourquoi, ou lisez plus sur les variations du shellcode si cela vous intéresse).
En bref, un simple transfert de clé USB est probablement correct, mais n'oubliez pas que tout est théoriquement piratable et que rien n'est sûr à 100%.
Connectez les deux ordinateurs à l'aide du port série . Espérons que les deux auront toujours un tel port natif au lieu d'avoir besoin d'un convertisseur USB vers série.
L'interface est suffisamment simple pour que les données envoyées et reçues puissent être inspectées manuellement. Pas seulement à partir de l'un des ordinateurs (si c'est fiable ) mais aussi en externe avec un oscilloscope. Bien qu'il y ait une interface standard qui ne nécessite pas de personnalisations pour s'exécuter.
Ils peuvent vouloir insérer quelques limiteurs de courant (pour que le matériel malveillant d'une machine ne puisse pas endommager l'autre) et/ou un redresseur (pour éviter un canal caché potentiel avec une tension légèrement différente), ainsi que des étapes normales comme assurer la sécurité du câble lui-même.
Pour une sécurité paranoïaque supplémentaire, vous ne devez pas placer les deux ordinateurs dans la même pièce, afin d'éviter que les données ne soient exfiltrées par un champ magnétique ou un microphone enregistrant l'autre son (par exemple, les mouvements du disque), comme cela a été utilisé pour communiquer l'air. des ordinateurs espacés (ils n'ont pas de matériel wifi, non?).
Dans une question similaire, Thomas Pornin a suggéré l'utilisation de la carte son (haut-parleur → microphone) pour la communication unidirectionnelle entre machines. Je pense que le port série est préférable pour Alan et Bob, mais vous pouvez également trouver cette alternative intéressante.
Vous voulez être sûr à 100% de ne pas divulguer de données d'un ordinateur que vous contrôlez physiquement, mais pas de manière opérationnelle - c'est-à-dire que vous pouvez les récupérer, déconnecter l'alimentation et contrôler de toutes les manières le matériel, mais le logiciel est totalement sous quelqu'un d'autre contrôle.
Vous ne pouvez pas être sûr à 100% car la personne qui écrit le logiciel a peut-être pensé à un moyen de transmettre les informations que vous ne connaissez peut-être pas.
Afin d'évaluer le degré de certitude à moins de 100% pour lequel vous devez vous contenter, vous devez déterminer (a) dans quelle mesure les informations dont vous disposez sont souhaitables et (b) dans quelle mesure votre hypothétique attaquant peut-il accéder à son ordinateur ou au support que vous utilisent pour transmettre les données et enfin (c) dans quelle mesure est-il important de transmettre les données par rapport à ne pas divulguer les données?
La transmission de données n'est rien d'autre qu'un changement observable. Si vous pouvez contrôler suffisamment l'environnement pour vous assurer qu'ils ne peuvent pas observer directement leur ordinateur, la chose à faire est de transmettre les données de leur ordinateur à votre ordinateur, puis à leur destination finale, tout en vous assurant que votre ordinateur ne le fait pas. devenir leur ordinateur. S'ils peuvent observer directement leur ordinateur ou les données transmises depuis leur ordinateur, vous ne pourrez probablement pas les empêcher de divulguer des données.
Vous semblez vouloir utiliser un support qui, par définition, ne peut contenir que des données et aucun code exécutable ni matériel invérifiable. Cela demande des artefacts physiques simples - par exemple, du papier. Ce seuil sera évidemment moins pratique que le transfert de données numériques mais toujours possible.
Pour de petites quantités de données, vous pouvez utiliser du texte simple - impression, numérisation, OCR; éventuellement avec des sommes de contrôle pour éviter les erreurs. Ceci est vérifiable - vous pouvez voir exactement ce qui est transféré.
Pour de plus grandes quantités de données, vous pouvez utiliser quelque chose comme http://ollydbg.de/Paperbak/ qui prétend coder de manière fiable 500 Ko par feuille de papier A4.
Notez que même dans ce scénario, des canaux latéraux existent toujours et peuvent transférer des données supplémentaires si les deux ordinateurs sont compromis par des logiciels malveillants suffisamment avancés. Par exemple, les données imprimées peuvent contenir des points jaunes très très clairs qui seront lisibles lors de la numérisation; il existe des systèmes qui l'utilisent pour coder les métadonnées d'impression (numéro de série, heure, etc.) dans chaque impression; les informations sont cachées à l'utilisateur mais lisibles de manière fiable par la machine.
@ WhiteWinterWolf a déjà publié une bonne méthode de transfert des données, mais en voici une autre juste pour le plaisir: utiliser un câble Ethernet pour établir une connexion directe ( intranet, PAS internet ) d'Alan à Bob.
S'il s'agit de la seule interface réseau sur les deux ordinateurs, cela empêche les logiciels malveillants sur l'un des ordinateurs de contacter un serveur externe. Alan peut SSH sur l'ordinateur de Bob (qui n'a que le port 22 ouvert) en utilisant authentification par clé publique en tant qu'utilisateur non root qui a des privilèges en lecture seule sur un dossier spécifique et est chroot
'ed là.
Alan peut ensuite copier le fichier (qui devrait être un conteneur chiffré). Il peut ensuite déchiffrer le conteneur en utilisant un mot de passe pré-arrangé et [~ # ~] totp [~ # ~] pré-arrangé avec quelque chose comme un YubiKey . Si Alan voulait éviter tout périphérique USB (même de confiance), il pourrait utiliser un OTP basé sur un compteur à la place. Cela empêche un attaquant de pouvoir décrypter les fichiers échangés à l'avenir, même s'il attaquait vos frappes.
Il n'y a pas de méthode infaillible pour transférer des données en toute sécurité - le mieux que vous puissiez faire est de rendre aussi difficile que possible l'obtention des informations ou espérer que l'attaquant n'est pas quelqu'un comme la NSA.
Une solution rapide peut être la puce ARM avec un logiciel de description, disons un AES256. Le PC d'Alan communiquera avec la puce, pas avec les supports de transfert de données hors ligne comme la carte SD. Alan et Bob doivent échanger un phrase de passe et la phrase elle-même sur un hachage en seront une clé de chiffrement pré-partagée. L'échange de clés doit être en personne/dans la vie réelle, pas en ligne. Les deux parties peuvent alors être TECHNIQUEMENT assurées que tout transfert- un problème connexe ne pourra pas se produire dans ce cas d'échange de données. En cas de besoin d'augmentation de la sécurité - utilisez plus AES (Rinjdael algorythm, en fait) tours pour augmenter la force du chiffrement.