Méga stockage de fichiers. Prendre le contrôle de la cryptographie dans le stockage cloud MEGA

Vous vous souvenez de l’époque où 40 Go d’espace de stockage sur votre ordinateur semblaient être un luxe inabordable ? Maintenant, le compte se compte en centaines de gigaoctets, et souvent en téraoctets, et nous y sommes tellement habitués que nous occupons de l'espace sur les disques PC sans discernement - avec tout.

Pendant ce temps, les économies et le confort n'ont pas encore été annulés, et l'existence, la prospérité et les belles perspectives du stockage cloud prouvent leur valeur. Au cours des dernières années, les services de ces services Internet se sont développés à pas de géant, et plusieurs stockages de données cloud peuvent être cités en exemple :

1. Yandex.Disk - offre aux débutants 5 Go d'espace libre pour stocker des fichiers de différents formats et extensions, ainsi que divers bonus. Par exemple, si vous utilisez la messagerie Yandex depuis 5 ans, vous disposerez de 2 Go supplémentaires d'espace disque.
2. Google Drive – 15 Go d’espace gratuit.
3. Microsoft SkyDrive— 7 Go offerts au lieu des 25 Go proposés auparavant.
4. – 2 Go plus extension espace disque pour attirer des références.
5. Apple iCloud – 5 gigaoctets d'espace gratuit.
6. – ici, vous pouvez emprunter gratuitement plus de 40 Mo pour chaque note et utiliser le volume de trafic pour rédiger/éditer des notes jusqu'à 60 Mo par mois.
7. Amazon Google Drive - 5 Go.
8. Service cloud Boîte - 5 Go.
9. Service SugarSync - 5 Go.
10. Stockage cloud Mega.co.nz – 50 Go d'espace disque libre.

Stockage cloud Mega.co.nz

Tous les services ci-dessus peuvent fonctionner non seulement sur les ordinateurs de bureau, mais également sur toutes les applications mobiles, ce qui élargit sans aucun doute la portée de leur application et augmente leur popularité. Mais le leader des gigaoctets gratuits proposés reste toujours Mega.co.nz - 50 Go n'est pas une blague, il faut quand même réussir à le remplir avec quelque chose, je propose donc de parler plus en détail de ce service cloud - Mega.co. nz. D'ailleurs, j'utilise activement ce service, car il est stable, anonyme et ses créateurs sont des personnes connues.

Le chef de l'entreprise qui offre les services de ce stockage est Kim Dotcom, fondateur du service Megaupload, fermé il y a deux ans à la demande du ministère de la Justice et du FBI américain. Peut-être vous souvenez-vous de cette histoire. En fait, leur ancien échangeur était plutôt pratique. Mais maintenant, la nouvelle création de Kim est devenue encore plus cool. Parlons-en plus en détail.

Désormais, le service Mega fournit non seulement le stockage habituel des données dans le cloud en utilisant un PC, mais, comme les développeurs l'avaient promis précédemment, ils ont déjà inclus la possibilité de travailler à partir d'appareils mobiles - iPhone, iPad, appareils sous Win 8, montage système de fichiers pour Windows, etc. Autrement dit, il sera possible d'envoyer des fichiers directement vers le cloud. Par exemple, vos photos de votre smartphone seront stockées dans le gadget, mais en même temps elles seront transférées vers Mega.сo.nz, de sorte que la possibilité de perte ou de dommage inattendu aux fichiers sera complètement éliminée. Toutes vos données sont cryptées lors de la transmission et personne d'autre que vous ne peut les décompresser pour les lire.

Avantages et différences de Mega

1. La principale caractéristique et différence entre le service cloud Mega.co.nz et les ressources similaires est la quantité initiale d'espace disque libre offerte – 50 Go. Sur Mega.co.nz, vous pouvez télécharger des fichiers de n'importe quelle taille, avec n'importe quelle extension, dans n'importe quel format - il n'y a aucune restriction à cet égard.

2. L'abréviation MEGA est le nom de « MEGA Encrypted Global Access ».

3. Les principales fonctionnalités de Mega sont les mêmes que celles des autres ressources : téléchargement, stockage de fichiers sur lecteur tiers, et la possibilité de partager des fichiers avec vos amis et collègues en transmettant des liens ou un accès crypté. Les fichiers du navigateur sont cryptés à l'aide de l'algorithme AES, ce qui signifie que vous êtes protégé contre tout accès non autorisé. Les liens de transfert de fichiers sont également cryptés et même les employés du service n'ont pas accès à vos données. C'est du moins ce qu'ils prétendent.

4. Le service d'échange et de stockage de fichiers Mega est multilingue, vous n'aurez donc aucune difficulté de langue lorsque vous travaillerez avec lui - sélectionnez simplement la langue souhaitée dans le panneau de configuration.

Mais pour commencer à utiliser le stockage cloud, vous devez suivre une simple procédure d'enregistrement.

S'inscrire et démarrer avec Mega.co.nz

Comme le montre le lien d'inscription, la connexion au site https://mega.co.nz/ s'effectue via une connexion sécurisée. Ensuite, sur la page principale, vous devez sélectionner la langue russe pour un travail pratique - le menu est situé en haut à droite. Vous pouvez désormais vous inscrire :

Lors de votre inscription, vous avez besoin d'une véritable adresse e-mail, le reste des données peut simplement être extrait de votre tête. Après avoir rempli tous les champs et cliqué sur le bouton « Créer un compte », nous recevrons une lettre par e-mail avec un lien confirmant notre inscription :

Cliquez sur ce lien dans la lettre et confirmez votre compte sur la page du service - pour cela il y a un formulaire à droite coin supérieur, c'est-à-dire qu'il vous suffit de saisir votre adresse e-mail et votre mot de passe. Cela se fait une seule fois - le service utilisera ensuite les cookies de notre navigateur. Lors de la confirmation de l'inscription, il nous sera demandé de créer notre propre clé individuelle, qui déterminera notre authentification. Créer une clé est de nature ludique, et je me suis même laissé emporter, ratant le moment où la clé avait déjà été créée.

Le jeu ressemble à assommer des briques avec une balle, qui constituent l'inscription MEGA. Une fois que vous aurez atteint 100% sur l'échelle en haut de l'écran, une clé sera créée :

Et après avoir cliqué sur le bouton « Terminer », accédez à votre page dans le service cloud Mega.co.nz :

Comment utiliser le service Mega.co.nz

Il existe une très légère différence dans l'utilisation du service lorsque vous travaillez sur Google Chrome, dont je parlerai ci-dessous. En attendant, parlons des points généraux de contrôle et d’utilisation. Sur le côté droit de votre page, vous voyez une colonne de contrôle et un affichage de la structure de stockage. En haut se trouve un menu pour télécharger, visualiser et gérer les fichiers. Autrement dit, dans le menu déroulant des fichiers déjà téléchargés, vous verrez la possibilité d'obtenir un lien vers le fichier, la possibilité de le copier, de le modifier, etc.

Utilisateurs du navigateur Mozilla Firefox peuvent installer un module complémentaire dans leur navigateur Extension MÉGA. Les développeurs de ce module complémentaire promettent qu'après l'avoir installé, vous remarquerez une amélioration significative de la vitesse de téléchargement de vos fichiers. Ce résultat est assuré par le téléchargement par lots d'un nombre illimité de fichiers sans limiter leur taille. Chaque lien du service Mega.co.nz est capturé par votre application d'extension MEGA et reste local (les scripts JavaScript ne sont pas téléchargés depuis les serveurs). Le service fournit des mises à jour automatiques fiables grâce à une signature cryptographique avec une clé cryptée.

Sans installer ce module complémentaire pour en savoir plus travail efficace Avec le service Mega, les développeurs proposent d'utiliser le navigateur Google Chrome. Comme j'ai utilisé plusieurs navigateurs tout au long de ma vie sur ordinateur, j'ai installé l'extension recommandée dans Firefox, mais, pour être honnête, je n'ai remarqué aucune différence dans le fonctionnement du service cloud. L'application peut être installée aussi bien depuis les « Add-ons » du navigateur que depuis le service MEGA (« Menu » – « Applications » – « Application Firefox »)

Il est préférable d'utiliser le navigateur Google Chrome si vous souhaitez télécharger des dossiers entiers de fichiers sur le cloud - Mozilla n'a pas cette option, mais Chrome peut télécharger à la fois des fichiers et des dossiers :

Voici à quoi ressemble le panneau de configuration du stockage dans le navigateur Google Chrome, mais dans Mozilla Firefox, il n'y a tout simplement pas de bouton « Télécharger le dossier » - il n'y a qu'un bouton « Télécharger le fichier ». À l'aide du bouton « Télécharger un fichier », vous pouvez télécharger un fichier sur le cloud depuis votre ordinateur personnel. Après avoir cliqué sur le bouton « Télécharger le dossier » dans Google Chrome, une fenêtre de l'Explorateur s'ouvrira, dans laquelle vous sélectionnerez un dossier à télécharger vers le stockage de fichiers, et c'est tout – le téléchargement a commencé.

Parlons maintenant de la façon de contourner ce problème dans Firefox. Disons que vous souhaitez télécharger l'intégralité du dossier - ne l'installez pas pour cela nouveau navigateur! Ensuite, il vous suffit de créer un dossier du même nom dans Mega (l'élément « Nouveau dossier » dans le menu) et d'y télécharger tous les fichiers (appuyez sur Ctrl + A pour tout sélectionner d'un coup) qui se trouvent dans le même dossier sur l'ordinateur.

Nous continuons à nous familiariser avec le service. Dans l'élément « Mon compte », vous verrez non seulement que vous utilisez un compte gratuit, mais vous verrez également la quantité d'espace cloud utilisée, et vous pourrez également modifier les paramètres de votre profil ou configurer le transfert de données :

Dans les paramètres (« Menu » - « Mon compte »), vous pouvez faire beaucoup de choses. Par exemple, modifiez la quantité connexions parallèles pour le téléchargement de fichiers, ainsi que le nombre de connexions parallèles lors du téléchargement de fichiers. Vous pouvez également imposer une limite à la vitesse de téléchargement.

Si vous cliquez sur le bouton de menu « Menu » - « Mon compte », vous pourrez en savoir plus sur les règles d'utilisation du service cloud Mega.co.nz. Je ne vous parlerai pas beaucoup du compte Pro, puisque je ne l'ai pas encore utilisé : les 50 Go gratuits suffisent. Mais après avoir cliqué sur le bouton « Mettre à niveau votre statut » dans votre compte gratuit, vous pouvez choisir n'importe quel forfait payant parmi les offres pour pouvoir stocker davantage de vos données dans le cloud - de 500 Go à 96 To. Personnellement, je ne peux pas imaginer un tel volume - 96 téraoctets - mais néanmoins, si vous y réfléchissez bien, vous pouvez trouver une utilité. Par exemple, pour sauvegarder les bases de données de sites Web, etc.

Continuons à travailler avec des fichiers - vous pouvez simplement créer un nouveau dossier pour y télécharger des fichiers thématiques. Pour ce faire, cliquez sur le bouton « Nouveau dossier » et renommez le dossier selon vos besoins. Dans ce nouveau dossier, vous pouvez également créer d’autres sous-dossiers dans lesquels vous pourrez télécharger des fichiers. Si vous cliquez sur un dossier (fichier) clic-droit souris, puis dans le menu contextuel contextuel, vous pouvez voir les commandes correspondantes à vos actions avec le dossier (fichier). Comme vous pouvez le constater, il existe de nombreuses possibilités, notamment la possibilité de recevoir un lien à transférer vers d'autres utilisateurs. Le lien sera crypté.

Si vous n’avez pas limité la vitesse de téléchargement des fichiers dans vos paramètres cloud, alors la vitesse de téléchargement des données sera illimitée et dépendra uniquement de la vitesse de la connexion Internet de votre PC. La poursuite du travail avec les dossiers/fichiers s'effectue exactement de la même manière que dans ordinateur ordinaire– vous pouvez les modifier, obtenir des liens vers eux, les déplacer, autoriser un accès partagé, les copier, etc. Le processus de chargement et de téléchargement des fichiers est affiché en bas à droite de la page du service - cliquez sur l'icône

Comment partager des dossiers

Sur les dossiers dans lesquels vous stockerez stockage en ligne Mega co nz, vous pouvez définir des droits d'accès public. Pour ce faire, faites simplement un clic droit sur le dossier, et dans le menu contextuel qui apparaît, cliquez sur « Partage ». Ensuite, vous verrez la fenêtre « Partage », dans laquelle vous devez spécifier l'adresse e-mail de l'utilisateur à qui vous souhaitez accorder des droits de partage. Pour cet utilisateur, vous pouvez configurer les droits - par exemple, définir les droits sur « Lecture seule », « Lecture et écriture », « Contrôle total ». Après cela, les droits de partage peuvent permettre aux utilisateurs disposant des autorisations que vous avez définies de modifier des fichiers, ou uniquement de les afficher, ou uniquement de les télécharger. Il peut y avoir n'importe quel nombre de ces utilisateurs.

Après avoir indiqué l'adresse e-mail pour fournir l'accès public, une lettre sera envoyée à son e-mail avec un lien nécessaire pour accéder au service et accéder au dossier spécifié. Les dossiers partagés ont une apparence légèrement différente des autres dossiers de stockage cloud et ressemblent à ceci :

Comment obtenir un lien vers Mega.co.nz

Le service Mega.co.nz vous permet de fournir à d'autres utilisateurs des liens pour télécharger les fichiers que vous hébergez sur le service Mega cloud. Pour obtenir un tel lien, vous devez faire un clic droit sur le fichier et dans le menu contextuel qui apparaît, cliquer sur l'élément de menu « Obtenir le lien ». Dans une nouvelle fenêtre qui s'ouvre, vous verrez votre lien (crypté ou non) pour télécharger le fichier. En général, tous les liens pour télécharger des fichiers dans le service cloud Mega.co.nz sont émis en deux types, et le type de lien dépendra du degré de confidentialité des clés de sécurité.

Si le lien lui-même est formé sous forme non cryptée, alors le fichier est toujours transmis crypté, et seulement si l'utilisateur suit ce lien, le fichier est déchiffré et devient disponible pour le téléchargement. Autrement dit, jusqu'à ce que quelqu'un télécharge ce fichier, il sera stocké sous forme cryptée. Si le lien lui-même est crypté, seul l'utilisateur qui a reçu le lien vers le fichier ainsi qu'un code de sécurité spécial (clé) pourra télécharger le fichier à partir de ce lien. Sans ce code de sécurité, le destinataire ne pourra pas télécharger le fichier depuis le lien.

Dans l'image ci-dessous, vous pouvez voir que si l'option « Avec clé de fichier » est activée, alors le code crypté est intégré dans le lien lui-même et il est disponible en téléchargement pour tous les utilisateurs. Et vice versa - si vous ne cochez pas cette case, l'utilisateur cible ne pourra télécharger le fichier que s'il saisit la clé que vous avez fournie séparément.

De plus, l'utilisateur à qui le lien vers le fichier était destiné peut l'enregistrer dans son cloud situé sur Mega.co.nz. Pour ce faire, après avoir reçu le lien, vous devez cliquer sur le bouton « Importer ». Avec cette option, le lien ne sera pas téléchargé sur votre ordinateur, mais sera simplement déplacé d'un compte à un autre. Il est clair que pour réaliser une telle opération, il est nécessaire que le destinataire dispose également de son propre espace disque dans le cloud Mega.co.nz, tout comme, par exemple, dans . Vous pouvez voir toutes ces possibilités dans la figure ci-dessous :

Comment télécharger un lien avec une clé individuelle (deuxième option) ? Ci-dessous dans l'image, vous voyez sa solution. Dans le cas d'une clé transférée séparément, le destinataire pourra télécharger le fichier s'il reçoit de votre part à la fois un lien et une clé pour télécharger le fichier depuis le stockage cloud. Vous recevrez la clé elle-même en la copiant lors du transfert du fichier (dans la figure ci-dessus, il y a l'élément « Copier les clés »). Vous envoyez toutes ces données (à la fois le lien partagé et le lien avec une clé distincte) à l'utilisateur par e-mail ordinaire.

Après avoir cliqué sur le lien « Décrypter », dans une nouvelle fenêtre, l'utilisateur devra saisir la clé de sécurité reçue de votre part pour télécharger le fichier ou pour l'enregistrer dans son propre stockage cloud. Une fois la clé saisie, l'utilisateur doit cliquer sur le bouton « Télécharger » et cocher la case « J'accepte les conditions de service de MEGA » ou simplement importer le fichier dans son cloud.

Une fois le fichier complètement téléchargé, la fenêtre « Téléchargement terminé » s'ouvrira et l'utilisateur sera invité à enregistrer le fichier manuellement dans n'importe quel emplacement approprié sur l'ordinateur pour terminer le téléchargement.

Et enfin, tous les fichiers que vous posterez sur le service stockage en ligne Les données de Mega.co.nz seront cryptées - j'en ai déjà parlé ci-dessus. D'une part, c'est génial, mais d'autre part, vous ne pourrez pas visualiser leur contenu, lire ou écouter des fichiers audio et vidéo lorsqu'ils sont dans le cloud. Autrement dit, pour utiliser ces fichiers, vous devrez les déplacer vers votre ordinateur ou appareil mobile. Pour supprimer complètement tous les fichiers téléchargés, vous devez les déplacer vers la corbeille, puis la vider également.

Le stockage cloud reste un type de service établi dans nos vies. Ils ont connu une croissance rapide, une sursaturation du marché lorsque de nouveaux « nuages ​​» s’ouvraient presque chaque semaine, et une récession lorsque ces mêmes « nuages ​​» ont commencé à se fermer un à un. Et maintenant, nous sommes simplement confrontés à un type de service qui s'est imposé et est devenu courant, qui a résisté à l'épreuve du temps, en tenant compte des caractéristiques et de la rapidité de l'industrie moderne.

Il existe de nombreux stockages cloud. Chacun a ses propres caractéristiques et son propre public. Certaines personnes choisissent un seul « cloud », d’autres en utilisent plusieurs à la fois. Nous avons choisi les dix plus intéressants d'entre eux. L'un des critères pour ce top est un plan gratuit avec un espace cloud gratuit afin que chaque utilisateur puisse l'essayer par lui-même. Pas d'essai, juste un forfait gratuit avec de l'espace gratuit.

10. pCloud

Un cloud assez intéressant et en développement rapide. Le blog cloud est mis à jour presque chaque semaine et il est clair que les développeurs y travaillent activement. Ils donnent 10 Go gratuitement, mais après en avoir effectué quelques-uns gestes simples. Vous pouvez obtenir quelques Go supplémentaires. Il existe un système de parrainage qui vous permettra également d'augmenter votre espace libre. Il est également intéressant que pCloud, en plus des frais d'abonnement mensuels et annuels pour les fonctionnalités avancées, propose également un plan d'achat unique, vous payez simplement un certain montant et augmentez le volume de votre cloud, pour toujours, il est difficile de se rappeler quoi d'autre le cloud fait ça.

9. MÉGA

Stockage crypté de Kim Dotcom. Il y avait des rumeurs selon lesquelles le cloud lui aurait été retiré, sur d'autres vicissitudes désagréables dans la gestion de MEGA, mais cela n'empêche pas le stockage cloud de se développer et d'exister. Le cloud est construit sur un niveau de cryptage assez élevé, pour plus travail confortable avec la version Web, il est préférable d'installer une extension de navigateur spéciale pour accélérer le processus de décodage. Il existe des applications pour tous les populaires systèmes d'exploitation. La principale chose qui en attire beaucoup est que MEGA offre 50 Go sur le forfait gratuit. Ce volume existait au départ, et il le reste encore aujourd'hui.

8.MediaFire

Un des services les plus anciens dans ce top, ça marche bien, mais se développe assez lentement. Il n'existe pas de version pour ordinateur, vous devez donc utiliser la version Web, mais les applications mobiles conviennent.

MediaFire a commencé comme un service d'hébergement de fichiers, mais avec le temps, il a réalisé le déclin de ces services et s'est réorienté vers le stockage cloud. Les anciens utilisateurs et ceux qui ont réussi à profiter de la promotion disposent de 50 Go d'espace libre, tandis que d'autres disposent de 10 Go, mais il devient parfois possible d'augmenter gratuitement la quantité d'espace disponible.

7.Boîte

Un autre stockage cloud qui a fait ses preuves. Box était à l'origine axée sur les affaires, ce qui lui a permis de survivre jusqu'à ce jour et de disposer d'une base d'utilisateurs fidèles. Ils offrent 10 Go gratuits, et parfois il y a des promotions pour obtenir 50 Go d'espace gratuit. Mais le forfait gratuit présente de nombreuses limites. Toutes ces restrictions seront supprimées si vous passez à un abonnement.

6. Cloud Mail.Ru

Mail.Ru Cloud a été lancé avec 100 Go d'espace libre, puis il y a eu une promotion où vous pouviez obtenir 1 To gratuitement, puis le volume a été considérablement réduit et les nouveaux comptes disposent d'une maigre quantité d'espace. Le cloud a reçu un lecteur audio intégré, une intégration avec Office Online et continue de recevoir de nouvelles fonctionnalités et la prise en charge de nouveaux formats, mais l'instabilité du volume gratuit ne lui permet pas de monter plus haut dans le classement.

5. Yandex.Disk

Étonnamment stable, en termes de volume, le stockage cloud de Yandex. Au lancement, ils offraient 10 Go de stockage gratuit. Plusieurs années ont passé et il reste 10 Go, mais il existe des promotions constantes lorsque vous pouvez soit obtenir temporairement un volume gratuit, soit augmenter votre cloud de manière continue. Ajoutons ici la prise en charge d'un grand nombre de formats, l'intégration avec Office Online et le développement constant d'applications.

Fin 2017, Disk s'est également scindée. Tout ce que vous téléchargez sur Yandex.Disk depuis votre téléphone ne sera pas pris en compte lors du calcul du volume total. Apparemment, il ne s’agit pas d’une promotion, puisqu’aucun délai n’est fixé. Il n'y a pas non plus de restrictions de taille, ce qui rend cette fonctionnalité encore meilleure que Google Photos.

4.iCloud

Si vous aimez la technologie Apple, vous avez certainement rencontré ce stockage cloud. De nombreuses applications fonctionnent via celui-ci, une sauvegarde et une synchronisation sont effectuées. Vous pouvez également utiliser iCloud comme stockage cloud habituel. Ajoutons ici une suite bureautique vissée d'Apple et une application pour Windows et nous obtiendrons un bon stockage cloud avec une base de fans fidèles.

Mais si vous n'utilisez pas de produits Apple, tout autre stockage cloud de ce top serait une meilleure option pour vous, car il vous offrira plus d'options.

3. Boîte de dépôt

C'est Dropbox qui est considéré comme le service qui a déclenché la croissance « explosive » du stockage cloud. Dropbox a été l'un des premiers à populariser ce type services, et bien qu’il ne traverse pas actuellement les meilleurs moments, le service continue de se développer et de gagner de nouvelles opportunités. Dropbox ne vous offre que 2 Go gratuits. Les promotions augmentant le volume gratuit n'ont pas été réalisées depuis longtemps, et les restrictions du tarif gratuit ne permettent pas d'utiliser pleinement le cloud. Malheureusement, avant le cloud idéal Stockage Dropbox ne tient plus.

2.OneDrive

Stockage cloud de Microsoft. Il y a une intégration étroite avec le bureau Forfait bureautique En ligne, qui est également intégré à d'autres stockages cloud, avec l'accord de Microsoft. Par défaut, il est intégré à Windows 8.1 et Windows 10. La prise en charge du format est également assez étendue. En travaillant dans ce cloud, de nombreux utilisateurs peuvent abandonner le package complet en toute sécurité Microsoft Office ou Microsoft Office 365, qui n'offrent que des fonctionnalités avancées pour des tâches plus professionnelles.

Lors de l'achat d'un abonnement à Microsoft Office 365, vous bénéficiez également de 1 To d'espace OneDrive en bonus. Tant de gens n'augmentent tout simplement pas le volume du cloud sur une base payante, mais achètent simplement un abonnement à Office, et en même temps espace cloud augmenter.

1. Google Disque

Le stockage cloud de Google a le plus plus de quantité formats de fichiers pris en charge, qui peuvent être étendus à l'aide extensions supplémentaires pour le nuage. Les petits documents bureautiques, ainsi que les photographies et vidéos avec une petite extension, ne sont pas pris en compte dans le calcul de l'espace disponible dans le cloud. Et cet espace est de 15 Go.

Cloud intégré à la suite bureautique cloud Google Docs, qui possède une interface simple et conviviale, c'est pourquoi beaucoup le préfèrent comme suite bureautique principale. Récemment Google Apps Drive et Google Photos ont été combinés en une seule application appelée Google Backup & Sync. Il y avait des rumeurs sur une application pour Linux, mais jusqu'à présent, beaucoup continuent à utiliser des clients non officiels et c'est presque le seul inconvénient sérieux du leader du top actuel.

Le service de stockage de données Mega co nz a été lancé en 2013. Le premier jour, 1 million d'utilisateurs ont visité le site et dans la première heure, plus de 100 000 utilisateurs se sont inscrits. Depuis 2015, Mega stocke des informations sur Internet pour plus de 15 millions d'utilisateurs.

Mega Cloud Service signifie « MEGA Encrypted Global Access ». Lors du chargement des données dans le stockage, tous les fichiers sont cryptés dans le navigateur à l'aide de l'algorithme AES et stockés sur le serveur sous forme cryptée. De plus, Mega ne stocke pas les mots de passe ni les fichiers . Ils appartiennent uniquement à l’utilisateur et ne peuvent être restitués par l’entreprise. Si vous avez oublié votre mot de passe, le seul moyen de le récupérer est de disposer d'une clé principale Mega nz.

Stockage de données Mega co nz - fournit un espace gratuit et payant pour stocker des fichiers sur Internet. Vous donne la possibilité de stocker et d'accéder à vos fichiers partout dans le monde. Il existe plusieurs façons de télécharger des fichiers sur le stockage Mega.nz à l'aide d'un navigateur Web ou d'applications clientes spéciales.

Créer un compte avec Mega est simple. Vous devez fournir une adresse e-mail et un mot de passe pour commencer. La différence entre le stockage Mega.co et le stockage est que vous recevrez alors 50 Go d'espace disque libre pour stocker des fichiers sur Internet et que vous n'aurez pas besoin de saisir les informations de carte de crédit lors de l'inscription.

Le cloud Mega co est très simple à naviguer. Les boutons de téléchargement de fichiers et de dossiers se trouvent dans panneau du haut menu, et en dessous les données téléchargées. Sur la gauche se trouve la colonne de contrôle et d'affichage du service Mega cloud. En cliquant sur le bouton de menu en haut à droite, vous pouvez changer la langue, installer des applications complémentaires sur les navigateurs Google Chrome, Mozilla Firefox, synchroniser tous les dossiers d'un ordinateur fonctionnant sous le système d'exploitation. Système Windows, Mac, Linux avec dossiers dans le Mega cloud, synchronisation et téléchargement de vos données avec le cloud application mobile AndroidiOS Fenêtres BlackBerry sur un smartphone ou une tablette.


Stocker des fichiers et les partager dans le service cloud Mega.co.nz est très simple, créez un nouveau dossier, téléchargez-y des photos, des vidéos, des documents ou d'autres informations en cliquant sur le bouton « Télécharger un fichier » dans le menu supérieur. Le magasin de données Mega.nz ne limite pas la taille du fichier téléchargé ni la vitesse de téléchargement, sauf si vous la limitez dans les paramètres.

Lorsque vous cliquez avec le bouton droit sur un dossier dans le menu déroulant, vous pouvez l'ouvrir, obtenir un lien pour télécharger le fichier à partir d'un service cloud, copier, renommer, déplacer, supprimer des données du disque.

Stockage de données Mega.nz propose trois forfaits payants pour stocker des fichiers sur le cloud :

PRO Ⅰ 500 Go 9,99 €/mois OU 99,99 €/an
PRO Ⅱ 2 To Go 19,99 €/mois OU 199,99 €/an
PROⅢ 4 To Go 29,99 €/mois OU 299,99 €/an
À l’achat d’un forfait annuel PRO, bénéficiez de 2 mois gratuits.
Tout le monde peut utiliser le cloud MEGA gratuitement.

Inscrivez-vous sur Mega.co.nz

Méga | stockage en nuage Méga | Nuage Méga | Méga stockage

Je suis sûr que tous les internautes actifs ont entendu parler de l'histoire de la fermeture du service d'hébergement de fichiers populaire Megaupload et des mésaventures de son créateur. Et ils connaissent certainement le nouveau projet de Kim Dotcom intitulé Méga. Rappelons que ce service est la réincarnation de la précédente création de Kim, mais sur une toute autre plateforme.

Lors de sa création, toutes les lacunes et erreurs de Megaupload ont été prises en compte et l'accent a été mis principalement sur la stabilité du service d'hébergement de fichiers. Et pas seulement aux charges du réseau, mais aussi aux attaques des titulaires de droits d'auteur. Pour y parvenir, une grande attention est portée à la confidentialité et à la sécurité de vos données. Tous les fichiers que vous téléchargez sont cryptés avec un algorithme spécial, de sorte que l'administration du service n'a aucune idée du contenu de vos comptes et, par conséquent, ne peut en être tenue responsable. Dans le même but, les serveurs Mega sont situés dans différents pays, donc s'il y a des problèmes avec les lois d'un pays, cela n'entraînera pas l'effondrement de l'ensemble du service et vos données resteront intactes.

Aujourd'hui, nous souhaitons vous présenter de plus près le travail de ce service et vous proposer une petite visite guidée par capture d'écran de ses fonctions.

Pour commencer, vous devez vous inscrire. Pour ce faire, vous devez indiquer votre nom, adresse postale et mot de passe. Le service est parfaitement russifié et parfaitement conçu.

Une fois l'inscription terminée, vous recevrez un lien de connexion à l'adresse e-mail que vous avez fournie. En cliquant sur le lien, vous devrez attendre quelques minutes jusqu'à ce que des clés secrètes spéciales soient générées pour vous, avec lesquelles les données seront cryptées.

Nous entrons dans notre stockage cloud. Tout ici est clair et simple : l'arborescence des dossiers est à gauche, la zone d'affichage des fichiers est au centre et la barre d'outils est en haut. Les fichiers peuvent être téléchargés en cliquant sur le bouton Nouveau téléchargement ou simplement en le faisant glisser dans la fenêtre de service. Les téléchargements sont exceptionnellement rapides.

Les fichiers peuvent être organisés en dossiers. Le déplacement de fichiers entre dossiers se fait en glissant ou en utilisant menu contextuel(voir ci-dessous). Le niveau d'imbrication des répertoires n'est pas limité.

Un lien pour télécharger le fichier est généré dans la fenêtre pop-up qui apparaît.
Notez les options en haut de cette fenêtre. Si activé uniquement Lien vers le fichier, votre destinataire ne pourra pas télécharger le fichier sans saisir un mot de passe spécial, que vous pourrez lui envoyer séparément par e-mail. De cette façon, vous pouvez publier des liens de téléchargement dans des lieux publics, comme un blog ou un forum, mais n'autoriser que certaines personnes à télécharger.
Si en plus marqué Clé de fichier, alors n'importe qui peut télécharger le fichier en utilisant le lien créé. Cases à cocher Nom Et taille du fichier ajoutez les caractéristiques de fichier appropriées.

Le menu contextuel du dossier est légèrement différent. Il y a un point ici Partage. Avec lui, vous pouvez inviter partage vos collaborateurs, amis ou famille. Les invitations sont envoyées par email et l'accès peut être différents niveaux. Lecture seule - visualisation uniquement, Lire écrire— visualiser et télécharger vos fichiers dans un dossier, Accès total— visualisation, téléchargement et suppression de fichiers.

Au chapitre Compte vous pouvez visualiser l'intégralité de votre stockage, acheter de l'espace supplémentaire, modifier les paramètres de transfert de données et quelques autres options.

Quelques impressions personnelles

Service de partage de fichiers Méga fait une grande impression. Excellente vitesse de fonctionnement, interface claire et agréable, 50 gigaoctets d'espace disque, aucune restriction sur le trafic et la taille des fichiers téléchargés, ainsi que la liberté et la confidentialité totales de vos données. C'est juste une sorte de vacances !

Les capacités du service Mega peuvent être utilisées à diverses fins. Tout d'abord, c'est la distribution divers types des informations qui plairont grandement aux pirates de tous les continents. Cependant, la possibilité d'un accès limité à l'aide de mots de passe peut également être utile pour la vente légale de leurs créations, par exemple par des musiciens. Le partage de dossiers fait de Mega un outil intéressant pour organiser le travail à distance. Et bien sur c'est banal sauvegarde informations importantes pour vous.

La seule chose qui manque à Mega, c'est à ce stade est un client de bureau et mobile pour différents systèmes d'exploitation. Compte tenu du jeune âge du service, on peut espérer que les développeurs n’ont tout simplement pas encore eu le temps et qu’un tel client apparaîtra bientôt. Après cela, je ne vois aucun obstacle à ce que Mega devienne la nouvelle norme en matière de stockage de fichiers dans le cloud.

Après le lancement du service MEGA, quelque peu scandaleux, les conversations sur sa sécurité ont commencé à bouillonner un peu et se sont calmées. Aujourd'hui, le service vit sa propre vie et personne ne l'a même interrompu. Pour une raison quelconque, le terme « User Controlled Encryption » (UCE, ou User Controlled Cryptography), dont MEGA se vante, a été oublié dans toutes les conversations. Ce que j'entends par "manqué", c'est le fait que nous n'avons pas couvert toutes les possibilités que nous offre un moteur de cryptographie fonctionnant en JavaScript côté client.

Bien entendu, le service MEGA lui-même signifie simplement que les clés de chiffrement ne sont pas stockées sur le serveur, mais toutes leur la cryptographie est effectuée dans le contexte du navigateur. De plus, après le lancement du service, on a beaucoup parlé du fait qu'il utilise des algorithmes cryptographiques faibles et qu'en général tout va mal et nous mourrons tous, et nos fichiers seront lus par le FSB. Cela m’a donné l’idée d’élargir le concept « UCE » et de réellement prendre le contrôle de la cryptographie, c’est-à-dire remplacer ou compléter certains mécanismes de sécurité du service.

Dans cet article, je vais détailler une partie de la magie qui se produit dans deux mégaoctets de code MEGA JavaScript et montrer comment vous pouvez remplacer certaines méthodes pour cesser de vous inquiéter et aimer la cryptographie. En conséquence, nous recevrons un service de stockage de fichiers cloud avec authentification à deux facteurs et le chiffrement matériel est essentiel une information important.

MEGA, UCE et tout, tout, tout

Commençons donc par examiner les technologies sur lesquelles la partie client du service est construite, comment les nouveaux utilisateurs sont enregistrés, les utilisateurs enregistrés sont authentifiés, les mots de passe sont modifiés et les fichiers sont téléchargés/téléchargés.

Javascript

Comme vous le savez peut-être déjà, tout le côté client du service est basé sur JavaScript ; le code de la page principale contient des sommes de contrôle SHA-256 pour tous les scripts et pages chargés par le navigateur. Le téléchargement lui-même se déroule comme suit : les sommes de contrôle sont vérifiées pour tous les fichiers, après quoi elles sont combinées en un seul BLOB, qui est transmis au navigateur. Le code source des fichiers js montre qu'ils ont été écrits par des personnes différentes et il y a parfois des joyaux amusants, comme les conséquences du copier-coller, des conditions dénuées de sens et des variables tout simplement étranges.

En cours d'étude code source J'ai également remarqué que le site est mis à jour assez activement, les développeurs corrigent des erreurs mineures et optimisent le code déjà écrit, ce qui est une bonne nouvelle. Le code lui-même est écrit de manière très simple et sans prototypage inutile : le site utilise trois cents variables globales et plus de 8 000 fonctions. Il a été très simple de comprendre l'architecture du site et de modifier son code.

Parmi les frameworks tiers, MEGA utilise jQuery (vous ne pouvez plus vous en passer maintenant), Ext JS et SJCL. Ce dernier implémente un noyau cryptographique avec cryptage AES. SJCL fournit également un format intéressant pour stocker les clés et autres tableaux d'octets : au lieu de simplement stocker les octets dans un tableau normal, ils sont « compressés » dans un format appelé a32. Son essence est que le contenu de tout tableau d'octets est regroupé en nombres de 32 bits et écrit dans un tableau de longueur plus courte. Autrement dit, tous les 4 octets du tableau sont convertis en un entier banal. Le code du site contient des fonctions qui effectuent toutes sortes de transformations sur un ensemble improvisé (tableau a32, chaîne, chaîne base64).

Information clé

Avant de passer à la description des processus d'enregistrement et d'authentification, il convient de considérer les informations qui font l'objet d'un cryptage, à savoir :
  • Clé principale du compte, qui est créé aléatoirement au moment de l'enregistrement de l'utilisateur et a une longueur de 128 bits. Et en principe, la longueur de toutes les clés utilisées pour le chiffrement symétrique est de 128 bits.
  • Clé privée RSA: Créé au moment de l'inscription en fonction des mouvements de la souris et de la saisie au clavier. Dans cet article, je ne me concentrerai pas sur la cryptographie asymétrique, car elle est utilisée pour partager des fichiers téléchargés, et ma tâche consistait à modifier le processus d'authentification et de cryptage des données utilisateur.
  • Clés de fichiers individuelles et fichiers eux-mêmes, téléchargé sur le service. Les clés sont générées de manière aléatoire lorsqu'un fichier est chargé, la clé elle-même est utilisée pour chiffrer les données du fichier et une clé créée sur la base de la clé individuelle du fichier et de sa somme de contrôle est utilisée pour chiffrer les attributs.

Plus proche du code

Je propose maintenant d'analyser les processus d'enregistrement et d'authentification, de voir comment la clé principale est créée et comment elle est cryptée.
J'ai essayé de représenter ces processus sur papier et afin de vous faire comprendre l'essence de la folie, j'ai même pris cette photo :

Enregistrement d'un nouvel utilisateur

Le processus d'enregistrement lui-même est assez déroutant ; une fois que l'utilisateur a rempli le questionnaire, un grand nombre de fonctions sont appelées, mais nous nous intéressons à la fonction api_createuser :

// création d'un nouvel utilisateur et de sa fonction de clé principale api_createuser(ctx, invitecode, invitename, euh) ( var i; var ssc = Array(4); // auto-défi de session, sera utilisé pour vérifier le mot de passe var req, res; if (!ctx.passwordkey) ( ctx.passwordkey = Array(4); for (i = 4; i--;) ctx.passwordkey[i] = rand(0x100000000); ) if (!u_k) api_create_u_k(); // génération d'une clé principale aléatoire u_k pour (i = 4; i--;) ssc[i] = rand(0x100000000); // génération d'une séquence d'authentification aléatoire if (d) console.log("api_createuser - masterkey: " + u_k + " passwordkey: " + ctx.passwordkey); // chiffre la clé maître sur le mot de passe actuel et l'envoie au serveur (champ k) // le champ ts est la concaténation de ssc avec sa valeur chiffrée req = ( a: "up", k: a32_to_base64(encrypt_key(new sjcl.cipher.aes(ctx.passwordkey), u_k)), ts: base64urlencode(a32_to_str(ssc) + a32_to_str(encrypt_key(new sjcl.cipher.aes(u_k) , ssc))) ); if (invitecode) ( req.uh = euh; req.ic = invitecode; req.name = nom de l'invitation ; ) if (d) console.log("Clé de stockage : " + req.k); api_req(,ctx); )
Dans cette fonction nous nous intéressons aux choses suivantes :

  • u_k est la clé principale elle-même, une variable globale. Un tableau de 4 nombres de 32 bits, créé par la fonction api_create_uk
  • ssc est simplement un tableau aléatoire chiffré avec la clé principale, concaténé avec sa valeur publique et envoyé au serveur. Plus tard, il sera utilisé pour vérifier l'exactitude de la clé principale lors de l'authentification
  • sjcl - bibliothèque cryptographique implémentant AES
  • rand() - implémentation locale d'un générateur de nombres pseudo-aléatoires basé sur RC4
  • encrypt_key() est la fonction fondamentale de la cryptographie symétrique du service. Accepte un objet sjcl initialisé avec une clé et un tableau qui doit être chiffré. Le code de fonction est donné ci-dessous et, espérons-le, ne nécessite aucune explication.
// chiffrer/déchiffrer la fonction de tableau d'entiers 32 bits à 4 ou 8 éléments encrypt_key(cipher, a) ( if (a.length == 4) return cipher.encrypt(a); var x = ; for (var i = 0;je< a.length; i += 4) x = x.concat(cipher.encrypt(, a, a, a])); return x; }
En conséquence, après l'enregistrement, les éléments suivants sont envoyés au serveur :
  • Clé principale chiffrée avec la clé dérivée du mot de passe du compte
  • Chaîne comme ssc||encrypt_AES-128(u_k, ssc)

Utilisateur en ligne

Vous pouvez désormais passer en douceur au processus d'authentification. En bref, cela se fait ainsi :
  1. L'utilisateur saisit son identifiant/mot de passe
  2. Si la première étape d'authentification est réussie, alors une clé principale cryptée et une séquence d'authentification (ssc) créée lors de l'enregistrement sont reçues du serveur
  3. La clé principale est déchiffrée à l'aide du mot de passe saisi par l'utilisateur
  4. La séquence d'authentification est déchiffrée sur la clé principale et comparée à sa valeur ouverte, vérifiant ainsi l'exactitude de la clé principale et du mot de passe.
La fonction de rappel api_getsid2 est responsable de tout ce qui précède :

// déchiffre la clé principale une fois que l'utilisateur s'est connecté à la fonction api_getsid2(res, ctx) ( var t, k; var r = false; if (typeof res == "object") ( // initialise sjcl-aes avec le compte actuel password var aes = new sjcl.cipher.aes(ctx.passwordkey); // si nous avons reçu une clé principale dans la réponse du serveur... if (typeof res.k == "string") ( k = base64_to_a32(res. k); if (k.length == 4) ( // ... puis déchiffrez-le k = decrypt_key(aes, k); // et réinitialisez sjcl-aes en utilisant la clé principale aes = new sjcl.cipher. aes( k); // si nous avons reçu ssc du processus d'enregistrement if (typeof res.tsid == "string") ( t = base64urldecode(res.tsid); // crypte la première moitié de la chaîne et compare avec le valeur du serveur // s'ils correspondent - cela signifie que tous les identifiants et mots de passe sont convenus et vous pouvez laisser l'utilisateur entrer if (a32_to_str(encrypt_key(aes, str_to_a32(t.substr(0, 16)))) == t .substr(-16)) r = ; ) // La clé privée de la paire RSA est analysée ci-dessous, cela ne nous intéresse pas encore sinon if (typeof res.csid == "string") ( var t = mpi2b( base64urldecode(res.csid)); var privk = a32_to_str(decrypt_key(aes, base64_to_a32(res.privk))); var rsa_privk = Tableau(4); // décompose la clé privée pour (var i = 0; i< 4; i++) { var l = ((privk.charCodeAt(0) * 256 + privk.charCodeAt(1) + 7) >> 3) + 2; rsa_privk[i] = mpi2b(privk.substr(0, l)); if (typeof rsa_privk[i] == "number") break; prik = prik.substr(l); ) // vérifier le format if (i == 4 && prikk.length< 16) { // TODO: check remaining padding for added early wrong password detection likelihood r = ; } } } } } ctx.result(ctx, r); }
En bonus à l'inscription/authentification, vous pouvez jeter un œil au processus de changement de mot de passe.

// change la fonction de mot de passe utilisateur changepw(currentpw, newpw, ctx) ( var pw_aes = new sjcl.cipher.aes(prepare_key_pw(newpw)); api_req([( a: "up", currk: a32_to_base64(encrypt_key(new sjcl .cipher.aes(prepare_key_pw(currentpw)), u_k)), k: a32_to_base64(encrypt_key(pw_aes, u_k)), euh: stringhash(u_attr["email"].toLowerCase(), pw_aes) )], ctx); )
Le code de cette fonction est explicite : nous chiffrons la clé principale avec deux clés obtenues à partir de l'ancien et du nouveau mot de passe, puis envoyons ces valeurs au serveur. Si le mot de passe actuel est correct, il est remplacé par un nouveau. Ici, je voulais attirer davantage l'attention sur la fonction prepare_key_pw, qui était implicitement présente dans toutes les opérations précédentes. Sa tâche est de convertir la chaîne de mot de passe en un tableau a32, puis d'effectuer l'opération de dérivation de clé comme suit :

// convertit la fonction de tableau de mots de passe fournie par l'utilisateur prepare_key(a) ( var i, j, r; var aes = ; var pkey = ; for (j = 0; j< a.length; j += 4) { key = ; for (i = 0; i < 4; i++) if (i + j < a.length) key[i] = a; aes.push(new sjcl.cipher.aes(key)); } for (r = 65536; r--;) for (j = 0; j < aes.length; j++) pkey = aes[j].encrypt(pkey); return pkey; }
Cette fonctionnalité a suscité de nombreuses critiques car elle repose sur un algorithme développé en interne. Lors de la rédaction de cet article, les créateurs du service ont réussi à modifier un peu son code, mais je n'ai remarqué aucun changement significatif. Son essence est que le mot de passe transmis est crypté 65 536 fois à l'aide d'une clé constante afin d'obtenir une clé impossible à distinguer d'une clé aléatoire. Pourquoi les créateurs du service n'ont pas utilisé les algorithmes existants (par exemple, PBKDF2) reste un mystère.

Téléchargement et cryptage de fichiers

En bref, tout ce processus peut être représenté comme ceci :

Je vous préviens, approfondir cette image pendant longtemps est dangereux pour le cerveau, je vais donc vous expliquer ci-dessous comment tout cela se passe.

Comme je l'ai déjà dit, lors du chargement, chaque fichier crée sa propre clé de tableau aléatoire de 6 nombres de 32 bits. Les quatre premiers éléments de ce tableau sont utilisés pour crypter le contenu du fichier et les deux derniers sont utilisés comme valeurs initiales du compteur utilisé pour calculer la somme de contrôle du fichier. Ce tableau est stocké dans la variable globale ul_key. Son contenu est saisi dans la chaîne sérialisée JSON ul_KeyNonce .

Le décryptage lui-même s'effectue à l'aide d'un Web Worker (si le navigateur prend en charge cette technologie) ou simplement à l'intérieur du code de la page principale. Lorsque le fichier est prêt à être envoyé, chiffrer ses attributs (sur ce moment(les attributs signifient uniquement le nom du fichier) une nouvelle clé, filekey , est créée en fonction de la ul_key et de la somme de contrôle du fichier. Cette clé est ensuite chiffrée avec la clé principale et envoyée au serveur avec les attributs du fichier. Les fonctions initupload3 et api_completeupload2 sont responsables de toutes ces actions. La clé de fichier est créée dans la fonction ul_chunkcomplete, ci-dessous j'en donnerai une partie.

// commence à télécharger un fichier : création de sa clé individuelle et initialisation du mécanisme de cryptage fonction initupload3() ( // ... cut =) // création d'une clé individuelle aléatoire pour le fichier // ul_key est utilisé dans code de page, // ul_keyNonce est transmis au Web Worker et y est utilisé // pour chiffrer le fichier et calculer sa somme de contrôle ul_key = Array(6); pour (i = 6; i--;) ul_key[i] = rand(0x100000000); ul_keyNonce = JSON.stringify(ul_key); ul_macs = ; // ... ensuite c'est le traitement de la file d'attente de téléchargement, cela n'a aucun intérêt... // initialisation de sjcl-aes pour un fichier basé sur ul_key ul_aes = new sjcl.cipher.aes(); // ... // démarrage du processus de téléchargement du fichier : // lecture à partir du disque, cryptage et envoi de onUploadStart(ul_queue_num); ul_dispatch_chain(); ) // création d'une clé pour chiffrer les attributs du fichier fonction ul_chunkcomplete(slot,pos,response) ( // ... var t = ; // ul_macs - un tableau avec la somme de contrôle du fichier obtenue à l'intérieur du travailleur pour (p in ul_macs) t .push(p); // remplissage et tri d'un tableau temporaire, si quelqu'un sait pourquoi - veuillez expliquer t.sort(function(a,b) ( return parseInt(a)-parseInt(b) )); for ( var je = 0;je< t.length; i++) t[i] = ul_macs]; // внутри condenseMacs производится зашифрование // и "уплотнение" контрольной суммы файла в массив из 4х элементов var mac = condenseMacs(t,ul_key); ul_settimeout(-1); // на основе контрольной суммы и ключа файла создается ключ для шифрования атрибутов // он же в зашифрованном виде позже будет отправлен на сервер var filekey = ; // ... } // завершение загрузки файла: зашифрование атрибутов и ключа файла и отправка их на сервер function api_completeupload2(ctx, ut) { var p; if (ctx.path && ctx.path != ctx.n && (p = ctx.path.indexOf("/")) >0) ( var pc = ctx.path.substr(0, p); ctx.path = ctx.path.substr(p + 1); fm_requestfolderid(ut, pc, ctx); ) else ( // crypte le nom du fichier à la clé dérivée de ul_key et de la somme de contrôle // ctx.k == filekey a = ( n: ctx.n ); if (d) console.log(ctx.k); var ea = enc_attr(a, ctx.k) ; if (d) console.log(ea); // transfert d'attributs et clé de fichier chiffrés sur la clé maître var req = ( a: "p", t: ut, n: [( h: ctx.t, t: 0, a : ab_to_base64(ea), // attributs k : a32_to_base64(encrypt_key(u_k_aes, ctx.k)), // == AES_encrypt(u_k, filekey) fa: ctx.fa )] ); if (ut) ( // une cible a été fournie : chiffrer tous les partages pertinents var sn = fm_getsharenodes(ut); if (sn.length) ( req.cr = crypto_makecr(, sn, false); req.cr = ctx.t; ) ) api_req(, ctx.ctx); ) )

Téléchargement et décryptage de fichiers

Évidemment, ces processus devraient simplement être l’inverse du cryptage du fichier. La seule chose qui peut être intéressante est d'obtenir la valeur de la clé ul_key à partir de la valeur filekey cryptée provenant du serveur.

Au moment du téléchargement du fichier, le contexte du navigateur contient déjà un objet qui stocke les clés du fichier déchiffré. Par conséquent, il est logique de considérer d'abord le processus qui se produit immédiatement après l'authentification de l'utilisateur, à savoir le téléchargement du gestionnaire de fichiers. Une fois que l'utilisateur a été autorisé à accéder au service, il souhaite naturellement accéder à ses fichiers (en supposant qu'il les y avait déjà). Pour ce faire, nous devons d'abord décrypter les clés des fichiers, puis leurs attributs. Cette question est traitée par un autre pack de fonctions, dont nous nous intéressons à loadfm_callback et process_f_f .

En bref, le processus d'obtention des attributs du fichier peut être décrit par l'algorithme suivant :

  1. Attendez que le gestionnaire de fichiers se charge (loadfm_callback), où vous pourrez obtenir du JSON avec une description de tous les fichiers téléchargés
  2. Créer un tableau Farray dans lequel placer un tableau contenant des informations sur les fichiers
  3. Exécutez (récursivement) la fonction process_f_f pour chaque fichier
  4. Pour chaque fichier possédant une clé, déchiffrez cette clé et ces attributs (fonction crypto_processkey) et enregistrez-les dans un tableau contenant les informations sur le fichier.
  5. Après cela, enregistrez les valeurs déchiffrées dans la variable FileStore (fin de la récursion dans process_f_f)
Ci-dessous, je fournirai des extraits de code illustrant cet algorithme

// rappel pour charger la fonction du gestionnaire de fichiers loadfm_callback(json, res) ( // ... // traitement de JSON avec des informations sur les fichiers json = json; if (d) console.log(json); if (d) console. log (json); if (json.u) process_u(json.u, false); if (json.ok) process_ok(json.ok); if (json.s) ( for (i in json.s) ( if ( u_sharekeys.h]) ( SharingData.push(( id : json.s[i].h + "_" + json.s[i].u, ID utilisateur : json.s[i].u, ID de dossier : json . s[i].h, droits : json.s[i].r, date : json.s[i].ts )); sharednodes.h] = true; ) ) ) // ... alors rien de spécial . .. // saisie des informations sur les fichiers dans un autre tableau global farray = new Object; farray.f = json.f; // commençant son traitement, le rappel a été déclaré ci-dessus // ​​dans cette fonction et modifie simplement la mise en page process_f (fi, false , callback); fi++; ) // fonction récursive dans laquelle les clés et les attributs des fichiers sont déchiffrés // appelée depuis la fonction process_f process_f_f(fid) ( // condition de fin de récursion - nous avons traité tous les fichiers du tableau Farray si (!farray.f.i ]) ( if (farray.ap) FileStore.suspendEvents(); // écriture de données dans FileStore FileStore.loadData(farray.mdata, true); if (farray.ap) FileStore.resumeEvents(); if (d) console.log("call reqmissingkeys:"); crypto_reqmissingkeys(); if (farray.callback) farray.callback.fn(farray.callback); renvoie faux ; ) var f = farray.f.i]; f.attrs = f.a; if (f.sk) u_sharekeys = crypto_process_sharekey(f.h, f.sk); // si le fichier correspond au type et possède une clé, alors traitez-le if ((f.t !== 2) && (f.t !== 3) && (f.t !== 4) && (f.k)) ( crypto_processkey(u_handle , u_k_aes , f); // description de cette fonction ci-dessous u_nodekeys = f.key; if ((typeof f.name !== "undefined") && (f.p == InboxID)) InboxCount++; ) else ( if (f.a) ( if ( !missingkeys) ( Missingkeys = true; newmissingkeys = true; ) ) f.k = ""; f.name = ""; ) if (f.t == 2) RootID = f.h; sinon si (f.t == 3) InboxID = f.h; sinon si (f.t == 4) TrashbinID = f.h; sinon si ((f.t< 2) || (f.t == 5)) { // тут идет обработка расшаренных файлов } else { // подготовка массива для записи в FileStore farray.mdata.push({ id: f.h.replace(/[^a-z^A-Z^0-9^_^-]/g, ""), name: f.name, size: f.s, type: filetype(f.name, f.t), icon: fileicon(f.name, icontype), parentid: f.p, folder: f.t, owner: f.u, date: f.ts, attrs: f.attrs, key: f.key, r: f.r, su: f.su, fa: f.fa, }); if (f.p == TrashbinID) trashbinfull = true; if (((f.t) && (farray.ap)) || (f.p == InboxID)) refreshtree = true; } farray.i++; // проверка таймаута (видимо, чтобы загрузка файл-менеджера не выглядела слишком долгой) timeoutcount++; if (!(timeoutcount & 63)) { // если у нас больше 63 файлов - дальше грузим их асинхронно setTimeout("process_f_f(" + fid + ")", 1); timeoutcount2++; } // иначе - запускаем обработку следующего файла else process_f_f(fid); } // обработка ключа файла и его атрибутов function crypto_processkey(me, master_aes, file) { var id, key, k, n; if (!file.k) { if (!keycache) return; file.k = keycache; } id = me; // do I own the file? (user key is guaranteed to be first in .k) // ключ записан в виде ":/" var p = file.k.indexOf(id + ":"); // vérifie d'abord si le fichier est partagé if (p) ( // je ne le fais pas - ai-je une clé de partage appropriée ? pour (id dans u_sharekeys ) ( p = file.k.indexOf(id + ":"); if (p >= 0 && (!p || file.k.charAt(p - 1) == "/")) break; p = -1; ) ) // et ensuite nous pouvons passer au décryptage if (p >= 0) ( delete keycache; // slash - apparemment un signe de partages var pp = file.k.indexOf("/", p) ; si (pp< 0) pp = file.k.length; p += id.length + 1; key = file.k.substr(p, pp - p); // we have found a suitable key: decrypt! if (key.length < 46) { // short keys: AES k = base64_to_a32(key); // check for permitted key lengths (4 == folder, 8 == file) if (k.length == 4 || k.length == 8) { // ключ расшифровывается либо на мастер-ключе, либо на общем ключе шары k = decrypt_key(id == me ? master_aes: new sjcl.cipher.aes(u_sharekeys), k); } else { if (d) console.log("Received invalid key length (" + k.length + "): " + file.h); return; } } else { // long keys: RSA if (u_privk) { var t = mpi2b(base64urldecode(key)); if (t) k = str_to_a32(crypto_rsadecrypt(t, u_privk).substr(0, file.t ? 16: 32)); else { if (d) console.log("Corrupt key for node " + file.h); return; } } else { if (d) console.log("Received RSA key, but have no public key published: " + file.h); return; } } // декодируем атрибуты файла var ab = base64_to_ab(file.a); // и расшифровываем их с помощью только что полученного ключа var o = dec_attr(ab, k); if (typeof o == "object") { if (typeof o.n == "string") { if (file.h) { u_nodekeys = k; if (key.length >= 46) rsa2aes = a32_to_str(encrypt_key(u_k_aes, k)); ) // si nous avons correctement déchiffré la clé et les attributs, nous les sauvegardons dans un fichier objet file.key = k; fichier.nom = o.n; ) ) ) else ( if (d) console.log("Reçu aucune clé appropriée : " + fichier.h); if (!missingkeys) ( nouvelles clés manquantes = true; clés manquantes = true; ) keycache = fichier.k; ) )
Après cela, nous pouvons obtenir la valeur de la clé d'origine ul_key à partir du contexte du navigateur comme ceci : dl_keyNonce = JSON.stringify();
Cette conversion se produit dans la fonction startdownload. Si l'on prend en compte que la valeur dl_key == filekey de la fonction ul_chunkcomplete et effectue des opérations d'addition modulo simples, on remarquera que la variable dl_keyNonce stockera la valeur ul_key générée lors du chargement du fichier. Une illustration de ceci peut être vue dans le coin inférieur gauche du tableau sur la photo au début de la section sur le téléchargement de fichiers.

"Surcharge" des opérations cryptographiques

Malgré le fait que les principes décrits ci-dessus pour protéger les fichiers et les clés soient très sécurisés, certains pourraient ne pas apprécier le fait que nous dépendions toujours de la mise en œuvre des algorithmes fournis par le service. Dans ce cas, nous pouvons développer notre propre extension de navigateur, qui remplacera certaines fonctions du service en y implémentant un cryptage supplémentaire. A savoir, j'ai décidé de mettre en œuvre la protection information clé(clé principale et clés de fichier) utilisant le cryptage matériel sur une clé non récupérable selon l'algorithme GOST 28147-89. Un bonus à cela sera également l'inclusion de l'authentification à deux facteurs sur le service.
Considérons donc ce cas d'utilisation :
  • L'utilisateur s'inscrit sur le service
  • Ensuite, il installe l'extension
  • Avec son aide, le cryptage matériel de la clé principale est effectué à l'aide d'une clé qui ne peut pas être extraite du jeton.
  • La clé principale ainsi chiffrée est téléchargée sur le serveur
Après cela, il sera impossible d'obtenir la valeur de la clé principale sans posséder le token et son code PIN. Cela donnera :
  1. Authentification à deux facteurs sur le service (sans clé principale correctement déchiffrée, la fonction api_getsid2 échouera)
  2. Sans jeton, vous ne pourrez pas non plus modifier le mot de passe de votre compte actuel.
L'étape suivante consiste à chiffrer à l'aide du jeton de clé de chiffrement de fichier (également appelé ul_key) et de la clé d'attribut de fichier (filekey), qui est stockée sur le serveur. Ainsi, nous obtiendrons que chaque fichier sera crypté avec une clé qui n'arrivera jamais au serveur, où ira la clé de fichier que nous avons chiffrée à partir de la fonction api_completeupload2. Les attributs du fichier seront chiffrés sur la valeur publique de filekey . Pour plus de clarté, j'ai esquissé le schéma suivant illustrant le processus de téléchargement d'un fichier :

Je tiens à souligner qu'ici j'ai utilisé une méthode très astucieuse. Dans ce cas, il est important pour nous qu’un attaquant ne puisse pas décrypter le fichier, même s’il intercepte la clé du fichier reçue du serveur et connaît la clé principale de l’utilisateur. Vous pouvez donc ici jouer sur les particularités de l'architecture du service et utiliser la valeur de clé ul_keyNonce (alias dl_keyNonce) obtenue en chiffrant la valeur de la clé ul_key (ou dl_key) pour chiffrer les fichiers.

Depuis la rédaction de ces articles, notre produit a ajouté la possibilité d'utiliser le cryptage matériel à l'aide de l'algorithme GOST 28147-89. La version bêta du plugin avec fonctionnalité de cryptage matériel selon l'algorithme GOST 28147-89 peut être téléchargée. Cette version du plugin n'a pas encore été entièrement testée, je vous préviens donc qu'elle peut contenir des erreurs, merci de les signaler dans un message personnel.
Dans l'interface du plugin, le chiffrement symétrique est implémenté par la fonction encrypt, qui a la syntaxe suivante :
encrypt(deviceId, keyLabel, data, resultCallback, errorCallback) → (string)
La fonction prend en entrée :

  • ID de l'appareil, numéro
  • Étiquette de la clé de cryptage, numéro (s'il n'y en a pas, elle sera générée)
  • Données chiffrées, chaîne (chaîne contenant un tableau d'octets de la forme "aa:bb:cc:dd")
  • Fonctions de rappel pour la réussite ou l'échec d'une opération de cryptage
Le décryptage se fait de la même manière en utilisant la fonction decrypt
Une attention particulière doit être portée au libellé de la clé, car elle détermine sur quelle clé les données seront déchiffrées. L'étiquette est une chaîne arbitraire et sert principalement à identifier facilement la clé. Dans ce cas, j'utilise deux paires de clés : une pour chiffrer la clé principale, la seconde pour chiffrer les clés de fichiers individuelles. La clé sur laquelle la clé principale est cryptée a une étiquette égale au mot de passe de l'utilisateur (j'ai maintenant eu l'idée d'utiliser un hachage de la chaîne e-mail||mot de passe, je vais résoudre ce problème prochainement avenir). Pour crypter les clés des fichiers téléchargés, une clé avec une étiquette égale à la représentation sous forme de chaîne de la clé principale est utilisée (ici, il vaut également la peine d'utiliser le hachage de la clé principale).

Développement direct

Je voudrais immédiatement faire une remarque sur mon code source : il est en fait en version alpha, bien qu'il implémente la fonctionnalité décrite ci-dessus. Je n'ai pas vérifié dans quelle mesure ma modification s'est avérée compatible avec les autres fonctions du service, j'ai donc posté toutes les sources sur github et je serai heureux de toute aide pour finaliser ce système. Par conséquent, je n’encombrerai pas davantage l’article avec d’énormes listes, mais je décrirai seulement régime général travaux d'agrandissement.

L'extension terminée peut être téléchargée. Il a été développé à l'aide du service Crossrider, qui fournit des extensions pour trois navigateurs (Chrome, Firefox et IE), mais il est préférable de vérifier son fonctionnement dans Chrome ou Firefox, et dans le premier, il fonctionne de manière beaucoup plus stable.

Le code de l'extension est assez simple : il vérifie si nous sommes sur la page du service et si c'est le cas, il charge simplement des scripts supplémentaires. Ces scripts modifient le code de la page, ajoutent quelques boîtes de dialogue et remplacent les fonctions de service suivantes :

  • changepw : responsable du changement du mot de passe
  • api_getsid2 : l'un des rappels de connexion
  • api_completeupload2 : rappel pour terminer le téléchargement du fichier
  • loadfm_callback : rappel de chargement du gestionnaire de fichiers
  • processpacket : un autre rappel, dans lequel les attributs du fichier qui vient d'être téléchargé sont déchiffrés
  • parsepage : responsable du dessin de boîtes de dialogue supplémentaires
  • dologin : étend les capacités d'authentification
  • initupload3 : responsable de la création de la clé de cryptage du fichier
  • startdownload : analyse inversée de la clé du fichier et initialise le téléchargement
Encore une fois, je tiens à vous avertir que vous ne devez pas faire glisser l'extension sur votre compte professionnel (si quelqu'un ici utilise ce service), mais il est préférable d'en créer une de test. Pour utiliser l'extension après l'avoir installée, vous aurez besoin de :
  1. Pour commencer, c'est une bonne idée d'obtenir Rutoken EDS (ou Rutoken Web) et d'installer un plugin de navigateur
  2. Installer l'extension
  3. Connectez-vous au service avec l'extension désactivée
  4. Activer l'extension dans le navigateur
  5. Aller à la page du compte
  6. Cliquez sur le bouton « Lier le jeton »
  7. Entrez le mot de passe actuel et effectuez cette opération
A la place de l'extension, vous pouvez utiliser le bookmarklet suivant (testé dans Chrome, Safari, Firefox) : javascript:(function())(if(document.getElementById("cryptorutokenjs"))(alert("Le plugin est déjà installé" );retour)fonction loadRemoteScript(url )(var script=document.createElement("script");script.type="text/javascript";script.src=url;document.head.appendChild(script))fonction loadRemoteStyle( url)(var style=document. createElement("link");style.rel="stylesheet";style.type="text/css";style.href=url;document.head.appendChild(style))loadRemoteStyle( "https://mega-crypto .googlecode.com/git/mega.css");loadRemoteScript("https://mega-crypto.googlecode.com/git/util.js");loadRemoteScript("https:/ /mega-crypto.googlecode.com /git/rutoken-extra.js");loadRemoteScript("https://mega-crypto.googlecode.com/git/rutoken-crypto.js");loadRemoteScript("https:/ /mega-crypto.googlecode.com /git/mega.js")))();

Démonstration de travail

Tout d'abord, connectons notre création au site. Pour ça:

Vous pouvez ensuite vous déconnecter du service et essayer de vous reconnecter en utilisant l'authentification à deux facteurs :

L'authentification s'effectue selon le schéma suivant :

  1. Vérification du couple login-mot de passe sur le serveur
  2. Si le login et le mot de passe sont corrects, alors une clé principale cryptée provient du serveur
  3. Le plugin demande un code PIN pour le token
  4. Si le code PIN est saisi correctement, la clé principale est déchiffrée sur la clé du jeton

Au lieu d'une conclusion

Ici, j'ai envie d'écrire « à suivre... », puisque je n'ai pas abordé les détails de la création de l'extension et l'intérêt d'intégrer des fonctions de chiffrement asynchrone dans un service qui utilise dans la plupart des cas des appels synchrones. En conclusion de cet article, je voudrais revenir une fois de plus sur l'idée de mettre en œuvre une cryptographie côté client.
L'approche consistant à implémenter des fonctions cryptographiques supplémentaires côté client peut être appliquée à tout service Web qui ne se soucie pas de ce qui est stocké sur son serveur : qu'il s'agisse de stockage de fichiers, de courrier ou d'un simple chat. Par exemple, vous pouvez mettre en œuvre une messagerie sécurisée basée sur n'importe quel service de messagerie en utilisant le cryptage des messages au format CMS et des mécanismes d'échange de clés à l'aide de l'algorithme VKO GOST R 34.10-2001.
Merci de votre attention, j'attends avec impatience vos questions et commentaires.javascript Ajouter des tags