Πώς να φτιάξετε έναν δίσκο mega cloud στον υπολογιστή σας. Φιλοξενία αρχείου Cloud MEGA

Και το Microsoft SkyDrive.

Όμως το MEGA cloud αποθήκευσης δεν είναι τόσο γνωστό, αν και προσφέρει απεριόριστο δωρεάν χρήσηέως και 50Gb διαθέσιμα αμέσως μετά την εγγραφή!


Εάν μια τέτοια ουσιαστική «αύξηση» σε σας σκληρός δίσκος, και θέλετε να μάθετε πώς να αποκτήσετε αυτά τα ίδια 50 gigabyte και να τα διαχειριστείτε αποτελεσματικά, τότε διαβάστε τη σημερινή κριτική!

Από πού προήλθε η υπηρεσία MEGA.NZ;

Εφόσον πρόκειται να εμπιστευτείτε την υπηρεσία με κάποια από τα προσωπικά σας δεδομένα, καλό θα ήταν να μάθετε από πού προήλθαν πραγματικά και ποιος βρίσκεται πίσω από αυτό...

Σίγουρα έχετε ακούσει για τέτοιο χώρο αποθήκευσης όπως το Megaupload. Έκλεισε το 2012 με απόφαση των αρχών των ΗΠΑ - όσοι συμμετείχαν στη δημιουργία της υπηρεσίας, συμπεριλαμβανομένου του ιδρυτή της Kim Dotcom, κατηγορήθηκαν από το FBI για παραβίαση πνευματικών δικαιωμάτων (αποθήκευση και διανομή αδειοδοτημένου περιεχομένου). Ακριβώς ένα χρόνο αργότερα, η Kim Dotcom ξεκίνησε νέα υπηρεσίαστον τομέα mega.co.nz.

Επί του παρόντος, η είσοδος στο cloud είναι διαθέσιμη στο mega.nz, οπότε αν συναντήσετε παρόμοιες κριτικές αυτού του αποθετηρίου, όπου το mega co ή το mega co nz υποδεικνύεται ως διεύθυνση, να γνωρίζετε ότι είναι απελπιστικά ξεπερασμένα :)

Απαιτείται εγγραφή στο Mega;

Στην κεντρική σελίδα του αποθετηρίου θα δείτε ένα μεγάλο κόκκινο κουμπί που σας προσκαλεί να σύρετε αρχεία σε αυτό και να αρχίσετε να χρησιμοποιείτε την υπηρεσία.

Έχει κανείς την αίσθηση ότι η εγγραφή δεν είναι απαραίτητη για να λειτουργήσει καθόλου. Κατ 'αρχήν, αυτό είναι αλήθεια - μπορείτε να ανεβάσετε αμέσως ορισμένα από τα αρχεία σας στο cloud και ακόμη και να τα δείτε στον αποθηκευτικό χώρο. Ωστόσο, χωρίς εγγραφή, τα ληφθέντα δεδομένα σας θα διαγραφούν από το χώρο αποθήκευσης μετά το κλείσιμο της σελίδας ή του προγράμματος περιήγησης:

Επομένως, περάστε από την τυπική διαδικασία εγγραφής, μετά την οποία θα λάβετε αμέσως 50 gigabyte χώρου στο cloud εντελώς δωρεάν!

Απαραίτητες ρυθμίσεις αμέσως μετά την εγγραφή

Η Mega nz θα δώσει μεγάλη προσοχή στην ασφάλεια και την εμπιστευτικότητα της αποθήκευσης δεδομένων. Θα μιλήσουμε για αυτό λεπτομερώς λίγο αργότερα, αλλά προς το παρόν θα επισημάνω τι πρέπει να κάνετε αμέσως μετά την εγγραφή.


Δεδομένου ότι η υπηρεσία δεν αποθηκεύει τον κωδικό πρόσβασής σας στους διακομιστές της, εάν τον χάσετε, δεν θα μπορείτε να ανακτήσετε την πρόσβαση στον λογαριασμό σας. Για να αποφύγετε αυτό το πρόβλημα, πρέπει να κάνετε λήψη και αποθήκευση του κλειδιού ανάκτησης στον υπολογιστή σας:

Αυτό απαραίτητο μέτρομια προφύλαξη που δεν πρέπει να αμελήσετε! Συμφωνώ, θα είναι κρίμα να χάσετε όλα τα αρχεία σας στο cloud μόνο και μόνο επειδή ξεχάσατε τον κωδικό πρόσβασής σας.

Πώς να χρησιμοποιήσετε το Mega storage

Στο μενού στην αριστερή πλευρά του παραθύρου, κάντε κλικ στο εικονίδιο του cloud:

Θα βρεθείτε στο cloud drive σας. Χρησιμοποιώντας τα εργαλεία στο επάνω μέρος του παραθύρου, μπορείτε να δημιουργήσετε νέους φακέλους, να ανεβάσετε αρχεία εκεί, ακόμη και να κατεβάσετε έτοιμους φακέλους με αρχεία από τον υπολογιστή σας.

Η εργασία με τη διεπαφή αποθήκευσης δεν είναι πιο δύσκολη από τη χρήση της Εξερεύνησης των Windows. Κάνοντας δεξί κλικ σε ένα φάκελο ή ένα αρχείο εμφανίζεται ένα μενού περιβάλλοντος με μια ολόκληρη σειρά επιλογών.

Με αυτό μπορείτε:

  • Λήψη πληροφοριών σχετικά με ένα στοιχείο (μέγεθος, ημερομηνία δημιουργίας, κ.λπ.)
  • Εκχωρήστε ετικέτες χρώματος και προσθέστε τα στα Αγαπημένα
  • Μετονομάζω
  • Μετακίνηση εντός του δίσκου, αντιγραφή, διαγραφή
  • Κατεβάστε
  • Κοινή χρήση φακέλων
  • Δημιουργήστε έναν δημόσιο σύνδεσμο για λήψη αρχείων

Οι προγραμματιστές, φυσικά, έλαβαν υπόψη τους την αρνητική εμπειρία τους με το Megaupload, οπότε κατά τη δημιουργία ενός δημόσιου συνδέσμου θα εμφανιστεί το ακόλουθο παράθυρο, με τους όρους του οποίου δεν έχετε παρά να συμφωνήσετε:

Η υπηρεσία δεν επιβάλλει περιορισμούς στο μέγεθος των ληφθέντων αρχείων! Μέσα στο όριο των 50 GB, μπορείτε να ανεβάσετε χιλιάδες μικρά αρχεία ή, για παράδειγμα, δύο αρχεία των 25 gigabyte το καθένα. Ωστόσο, λάβετε υπόψη ότι τα ίδια τα προγράμματα περιήγησης έχουν λειτουργικούς περιορισμούς στο μέγεθος των αρχείων που μπορούν να κατεβάσουν. Οι πιο «ευάλωτοι» από αυτή την άποψη προγράμματα περιήγησης στο Διαδίκτυο Explorer, Firefox και Safari, τα οποία δεν υποστηρίζουν ακόμη πλήρως την HTML5.

Δημιουργία κοινόχρηστης πρόσβασης σε φακέλους αρχείων

Μπορείτε να οργανώσετε τη γενική πρόσβαση σε οποιονδήποτε φάκελο στον ηλεκτρονικό σας χώρο αποθήκευσης (κοινοποιήστε τον). Για να το κάνετε αυτό, εκτελέστε τους ακόλουθους χειρισμούς:

  1. Κάντε δεξί κλικ πάνω του και στο αναπτυσσόμενο μενού κατάλογος συμφραζόμενωνεπιλέξτε την επιλογή "Κοινή χρήση".
  2. Παρακαλώ εισάγετε τη διεύθυνσή σας ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗο χρήστης που πρέπει να μοιραστεί την πρόσβαση στο φάκελο (μπορείτε να καθορίσετε αμέσως μια ολόκληρη λίστα χρηστών).
  3. Επιλέξτε τη μέθοδο πρόσβασης: μόνο για ανάγνωση, ανάγνωση-εγγραφή ή πλήρη πρόσβαση.

Μετά από αυτό, ο καθορισμένος χρήστης θα λάβει ένα email με έναν σύνδεσμο για πρόσβαση στον κοινόχρηστο φάκελο.

Πώς να δημιουργήσετε έναν σύνδεσμο προς ένα αρχείο στο χώρο αποθήκευσης Mega nz

Εκτός από την πρόσβαση σε φακέλους, μπορείτε να επιτρέψετε σε οποιονδήποτε χρήστη να κατεβάσει μεμονωμένα αρχεία από τον αποθηκευτικό χώρο σας.


Για να το κάνετε αυτό πρέπει να κάνετε κλικ κάντε δεξί κλικποντίκι σε οποιοδήποτε αρχείο στο cloud και επιλέξτε την επιλογή "Λήψη συνδέσμου":

  1. Σύνδεσμος χωρίς κλειδί αποκρυπτογράφησης
  2. Σύνδεση με κλειδί

Επίσης σε αυτό το παράθυρο μπορείτε να αντιγράψετε ξεχωριστά το ίδιο το κλειδί αποκρυπτογράφησης. Ποια είναι η διαφορά μεταξύ αυτών των τύπων συνδέσμων; Και είναι πολύ σημαντικό!

Στην πρώτη περίπτωση, ο χρήστης, έχοντας ακολουθήσει τον σύνδεσμο, θα πρέπει να εισάγει το κλειδί αποκρυπτογράφησης που του παρέχετε σε ειδικό παράθυρο για να κατεβάσει το αρχείο. Και στη δεύτερη περίπτωση, ο χρήστης ακολουθεί έναν σύνδεσμο με ένα κλειδί ασφαλείας που είναι ήδη «καλωδιωμένο» και μπορεί να κατεβάσει αμέσως το αρχείο.

Για μια επισκόπηση της λειτουργικότητας και των ρυθμίσεων αποθήκευσης που δεν περιλαμβάνονται στην κριτική, δείτε αυτό το βίντεο:

Γιατί μπορούμε να εμπιστευτούμε προσωπικά δεδομένα στο Mega;

  1. Οι προγραμματιστές δίνουν τη μέγιστη προσοχή στην εμπιστευτικότητα των αποθηκευμένων δεδομένων. Η ίδια η συντομογραφία MEGA σημαίνει Mega Encrypted Global Access, δηλ. Mega Encrypted Global Access).
  2. Κρυπτογράφηση αρχείων απευθείας στο πρόγραμμα περιήγησης χρησιμοποιώντας τον αλγόριθμο AES.
  3. Η υπηρεσία δεν αποθηκεύει κωδικούς πρόσβασης χρήστη για πρόσβαση στη μονάδα cloud.
  4. Όλα τα αρχεία στο χώρο αποθήκευσης είναι κρυπτογραφημένα και δεν μπορούν να προβληθούν χωρίς κλειδί ασφαλείας. Ακόμα κι αν οι εισβολείς αποκτήσουν πρόσβαση στους διακομιστές της εταιρείας, δεν θα μπορούν να διαβάσουν δεδομένα χρήστη.
  5. Ακόμη και για αρχεία που προορίζονται για δημόσια λήψη, τα κλειδιά πρόσβασης μπορούν να δημιουργηθούν ξεχωριστά.

Υπηρεσία αποθήκευσης Μέγα δεδομένα co nz κυκλοφόρησε το 2013. Την πρώτη μέρα, 1 εκατομμύριο χρήστες επισκέφτηκαν τον ιστότοπο και μέσα στην πρώτη ώρα, περισσότεροι από 100.000 χρήστες εγγράφηκαν. Από το 2015, το Mega αποθηκεύει πληροφορίες στο Διαδίκτυο για περισσότερους από 15 εκατομμύρια χρήστες.

Η υπηρεσία Mega Cloud σημαίνει "MEGA Encrypted Global Access". Κατά τη φόρτωση δεδομένων στο χώρο αποθήκευσης, όλα τα αρχεία κρυπτογραφούνται στο πρόγραμμα περιήγησης χρησιμοποιώντας τον αλγόριθμο AES και αποθηκεύονται στον διακομιστή σε κρυπτογραφημένη μορφή. Επιπλέον, το Mega δεν αποθηκεύει κωδικούς πρόσβασης ή . Ανήκουν μόνο στον χρήστη και δεν μπορούν να αποκατασταθούν από την εταιρεία. Εάν έχετε ξεχάσει τον κωδικό πρόσβασής σας, ο μόνος τρόποςγια να το επαναφέρετε - έχετε ένα κύριο κλειδί Mega nz.

Αποθήκευση δεδομένων Mega co nz - παρέχει τόσο δωρεάν όσο και επί πληρωμή χώρο για την αποθήκευση αρχείων στο Διαδίκτυο. Σας δίνει την ευκαιρία να αποθηκεύετε και να έχετε πρόσβαση στα αρχεία σας οπουδήποτε στον κόσμο. Έχει διάφορους τρόπους για να ανεβάσετε αρχεία στο χώρο αποθήκευσης Mega.nz χρησιμοποιώντας ένα πρόγραμμα περιήγησης ιστού ή ειδικές εφαρμογές πελάτη.

Η δημιουργία λογαριασμού στο Mega είναι εύκολη. Πρέπει να δώσετε μια διεύθυνση email και έναν κωδικό πρόσβασης για να ξεκινήσετε. Η διαφορά μεταξύ του χώρου αποθήκευσης Mega.co είναι ότι μετά από αυτό θα λάβετε δωρεάν 50 GB χώρου στο δίσκο για να αποθηκεύσετε αρχεία στο Διαδίκτυο και δεν χρειάζεται να εισάγετε δεδομένα πιστωτική κάρτακατά την εγγραφή.

Το Mega co cloud είναι πολύ εύκολο στην πλοήγηση. Τα κουμπιά για τη μεταφόρτωση αρχείων και φακέλων βρίσκονται στο πάνω πάνελμενού και κάτω από αυτό τα δεδομένα λήψης. Στα αριστερά βρίσκεται η στήλη ελέγχου και εμφάνισης στην υπηρεσία cloud Mega. Κάνοντας κλικ στο κουμπί μενού επάνω δεξιά, μπορείτε να αλλάξετε τη γλώσσα, να εγκαταστήσετε πρόσθετες εφαρμογές σε προγράμματα περιήγησης Google Chrome, Mozilla Firefox, συγχρονίστε τυχόν φακέλους σε υπολογιστή με λειτουργικά συστήματα Windows, Mac, Linux με φακέλους στο Mega cloud, συγχρονίστε και ανεβάστε τα δεδομένα σας στο cloud εγκαθιστώντας ένα κινητό Εφαρμογή Android iOS Blackberry Windows σε smartphone ή tablet.


Η αποθήκευση αρχείων και η κοινή χρήση τους στην υπηρεσία cloud Mega.co.nz είναι πολύ απλή, δημιουργήστε έναν νέο φάκελο, ανεβάστε φωτογραφίες, βίντεο, έγγραφα ή άλλες πληροφορίες σε αυτόν κάνοντας κλικ στο κουμπί "Μεταφόρτωση αρχείου" στο επάνω μενού. Ο χώρος αποθήκευσης δεδομένων Mega.nz δεν περιορίζει το μέγεθος του ληφθέντος αρχείου και την ταχύτητα λήψης, εκτός εάν το περιορίσετε στις ρυθμίσεις.

Όταν κάνετε δεξί κλικ σε έναν φάκελο στο αναπτυσσόμενο μενού, μπορείτε να τον ανοίξετε, να λάβετε έναν σύνδεσμο για λήψη του αρχείου από μια υπηρεσία cloud, να αντιγράψετε, να μετονομάσετε, να μετακινήσετε, να διαγράψετε δεδομένα από το δίσκο.

Αποθήκευση δεδομένων Το Mega.nz προσφέρει τρία προγράμματα επί πληρωμή για την αποθήκευση αρχείων στο cloud:

PRO Ⅰ 500 GB 9,99 €/μήνα Ή 99,99 €/έτος
PRO Ⅱ 2 TB GB 19,99 €/μήνα Ή 199,99 €/έτος
PROⅢ 4 TB GB 29,99 €/μήνα Ή 299,99 €/έτος
Όταν αγοράζετε ένα ετήσιο πρόγραμμα PRO, λάβετε 2 μήνες δωρεάν.
Όλοι μπορούν να χρησιμοποιήσουν το MEGA cloud δωρεάν.

Εγγραφείτε στο Mega.co.nz

Mega | αποθήκευση cloud Mega | Cloud Mega| Mega Storage

Για τακτικός χρήστηςΣήμερα, στο Διαδίκτυο, δεν είναι ιδιαίτερα δύσκολο να βρείτε και να χρησιμοποιήσετε δωρεάν υπηρεσίες κοινής χρήσης αρχείων. υπηρεσία cloud- υπάρχουν αρκετά από αυτά. Όπως λένε, για κάθε γούστο και χρώμα.

Η νέα υπηρεσία κοινής χρήσης αρχείων δεν θα αποτελέσει εξαίρεση. Υπηρεσία MEGA. Τι, δεν έχετε ακούσει ακόμα για το MEGA; Το MEGA είναι νέο ηλεκτρονική υπηρεσίααποθήκευση αρχείων, που δημιουργήθηκε από τον διάσημο επιχειρηματία Tim Dotcom. Η προϋπηρεσία του - Megaupload.com - έκλεισε λόγω σοβαρών πιέσεων από λομπίστες κατά της πειρατείας. Αλλά ο Tim απελευθερώθηκε και ακολούθησε τους παλιούς του τρόπους και δημιούργησε μια νέα υπηρεσία αποθήκευσης αρχείων για τους χρήστες. Ακόμα πιο δροσερό και ακόμα πιο ενδιαφέρον. Και παρόλο που το έργο είναι ακόμα υγρό, έχει σαφώς μέλλον, από την πρώην υπηρεσία φιλοξενίας αρχείων Megaupload.com υπήρχαν πολλοί οπαδοί.

Δεδομένης της πικρής εμπειρίας του, ο Tim Dotcom κατέληξε στο συμπέρασμα ότι όλα τα αρχεία που αποθηκεύονται και ανεβαίνουν στην υπηρεσία πρέπει να είναι κρυπτογραφημένα. Αυτό θα βελτιώσει την ασφάλεια των χρηστών αποθήκευση cloudκαι θα αποτρέψει την «υποκλοπή» προσωπικών πληροφοριών. Σε αυτό το βίντεο, η Kim μοιράζεται τη γνώμη της για την κρυπτογράφηση πληροφοριών και πολλά άλλα.

Ας επιστρέψουμε στην υπηρεσία φιλοξενίας αρχείων MEGA.

Δεν είναι δύσκολο να επαληθεύσετε ότι η υπηρεσία προστατεύεται από κρυπτογραφημένη σύνδεση. Αν κοιτάξεις γραμμή διεύθυνσηςπρόγραμμα περιήγησης (σε αυτήν την περίπτωση, το πρόγραμμα περιήγησης Google Chrome), υποδεικνύει ότι η σύνδεση έχει δημιουργηθεί χρησιμοποιώντας το ασφαλές πρωτόκολλο https://. Το γράμμα s σημαίνει ασφαλής(ασφαλής).

Προηγουμένως, μια τέτοια δυνατότητα χρησιμοποιήθηκε μόνο από συστήματα πληρωμών και ιστότοπους όπου πρέπει να εισαγάγετε στοιχεία πληρωμής. Τώρα το χρησιμοποιούν ακόμη και οι μηχανές αναζήτησης, όπως η Google.

Ελπίζω να σας ενδιαφέρει ήδη. Ας εγγραφούμε λοιπόν στο MEGA και ας μάθουμε τι και πώς λειτουργεί εκεί.

Έκανα εγγραφή τις πρώτες μέρες μετά το άνοιγμα της υπηρεσίας. Εκείνη την εποχή ήταν ακόμα πολύ λάθη, αλλά παρόλα αυτά, κατάφερα να κατεβάσω έναν συγκεκριμένο αριθμό αρχείων.

Αξίζει να σημειωθεί το γεγονός ότι η υπηρεσία υποστηρίζει πολλές γλώσσες (συμπεριλαμβανομένων των ρωσικών). Αυτό είναι ένα σαφές πλεονέκτημα του έργου.

Για να εγγραφείτε, πρέπει να μεταβείτε στον ιστότοπο του MEGA και να βρείτε το κουμπί " ΕγγραφήΔημιουργήστε έναν νέο λογαριασμό - υποδείξτε το όνομά σας (μπορείτε να βρείτε οποιοδήποτε ψευδώνυμο), το e-mail και τον κωδικό πρόσβασής σας.

Επιλέξτε το πλαίσιο ελέγχου "" και κάντε κλικ στο κουμπί "Εγγραφή". Στο ταχυδρομείο διεύθυνση ηλεκτρονικού ταχυδρομείουΘα πρέπει να λάβετε μια επιστολή λίγο μετά την εγγραφή. Πρέπει να βρείτε έναν σύνδεσμο στο σώμα της επιστολής και να τον ακολουθήσετε. Αυτό θα χρησιμεύσει ως επιβεβαίωση της εγγραφής. Αυτό είναι όλο, στην πραγματικότητα. Η εγγραφή ολοκληρώθηκε.

Συνδεθείτε στον λογαριασμό σας προσδιορίζοντας το e-mail και τον κωδικό πρόσβασής σας. Τώρα ας δημιουργήσουμε έναν νέο φάκελο. Θα το κάνουμε αυτό για να μην μπερδευτούμε, γιατί στο μέλλον μπορεί να υπάρχουν πολλά αρχεία. Βρείτε το κόκκινο εικονίδιο cloud στη διαχείριση αρχείων και κάντε δεξί κλικ. Θα πρέπει να εμφανιστεί ένα αναπτυσσόμενο μενού. Αυτό είναι.

Ας ονομάσουμε τον νέο φάκελο " Βιβλία" Θα βάλουμε τα ηλεκτρονικά βιβλία που μας άρεσαν εκεί :).

Κάντε κλικ στο κουμπί δημιουργία. Παρατηρούμε ότι ένας νέος φάκελος "Βιβλία" έχει εμφανιστεί στη διαχείριση αρχείων.

Εκτός από το γεγονός ότι μπορούμε να δημιουργήσουμε έναν φάκελο, μπορούμε να διαγράψουμε έναν ήδη υπάρχοντα. Αυτό είναι επίσης εύκολο να γίνει. Πρέπει να υποδείξουμε τον φάκελο που δεν χρειαζόμαστε πλέον και κάνοντας δεξί κλικ πάνω του, επιλέξτε το στοιχείο " από το αναπτυσσόμενο μενού Διαγράφω«Όλα είναι διαισθητικά.

Γενικά, η διεπαφή είναι πολύ παρόμοια με ένα λειτουργικό σύστημα. Εδώ μπορείτε επίσης να δημιουργήσετε ένα φάκελο, να τον μετονομάσετε, να τον μετακινήσετε ή να τον αντιγράψετε. Το ίδιο μπορεί να γίνει με τα κανονικά αρχεία. Δοκιμάστε το μόνοι σας και θα το καταλάβετε γρήγορα.

Υπάρχει επίσης ειδικό φάκελο – « Καλάθι" Ναι, ναι, αυτό είναι το ίδιο καλάθι στο οποίο συσσωρεύονται διαγραμμένα αρχείακαι φακέλους. Ακριβώς το ίδιο όπως στο λειτουργικό σύστημα. Και αυτό είναι πολύ ωραίο, αφού μπορείς να διαγράψεις ένα αρχείο κατά λάθος και να το μετανιώσεις πικρά. Τα αρχεία διαγράφονται αμέσως στον Κάδο Ανακύκλωσης και μπορούν να αποκατασταθούν εάν το επιθυμείτε. Αυτό γίνεται με μια απλή εντολή κίνησης ή αντιγραφής.

Προφανώς, τα σκουπίδια μπορούν να αδειάσουν μόνο αναγκαστικά μέσω του αντικειμένου " Αδειος κάδος" Δηλαδή, τα διαγραμμένα αρχεία αποθηκεύονται μέχρι να τα διαγράψετε εντελώς και αμετάκλητα.

Λοιπόν, εντάξει, ας παρεκκλίνουμε. Ας προσπαθήσουμε να ανεβάσουμε κάποιο αρχείο στο φάκελο "Βιβλία" που δημιουργήσαμε. Για δοκιμή. Κάντε κλικ στο φάκελο "Βιβλία" στον "πίνακα" Διαχείριση αρχείων" Στη συνέχεια, κάντε κλικ στο κουμπί "Μεταφόρτωση αρχείου" που βρίσκεται στο επάνω μενού.

Εμφανίζεται ένα παράθυρο επιλογής αρχείου, επιλέξτε το και κάντε κλικ στο «Άνοιγμα».

Στο κάτω μέρος της σελίδας μπορείτε να δείτε τη διαδικασία λήψης του αρχείου.

Εάν η κατάσταση λέει " εκκρεμής…", αυτό σημαίνει ότι το αρχείο βρίσκεται στην ουρά και περιμένει για λήψη. Αυτό συμβαίνει εάν ληφθούν πολλά αρχεία ή ένας φάκελος με αρχεία. Μην κλείνετε το παράθυρο του προγράμματος περιήγησής σας. Μόλις η ουρά λήψης φτάσει σε ένα αρχείο με κατάσταση σε εκκρεμότητα, θα ξεκινήσει η διαδικασία λήψης, η οποία μπορεί να παρατηρηθεί.

Εκτός από τη λήψη ξεχωριστά αρχείαΕίναι δυνατή η λήψη ολόκληρων φακέλων με αρχεία. Για να το κάνετε αυτό, κάντε κλικ στο κουμπί "Μεταφόρτωση φακέλου" και στο παράθυρο "Αναζήτηση φακέλου", επιλέξτε το επιθυμητό, ​​κάντε κλικ στο OK. Αφού επιβεβαιώσετε την επιλογή σας, θα ξεκινήσει η λήψη.

Αξίζει να προειδοποιήσουμε εδώ ότι η λήψη ολόκληρων φακέλων με πολλά αρχεία μπορεί να διαρκέσει πολλές ώρες. Ο χρόνος λήψης εξαρτάται τόσο από το φορτίο της ίδιας της υπηρεσίας MEGA όσο και από το εύρος ζώνης της σύνδεσης στο Internet.

Τώρα ας μιλήσουμε για το πώς μπορείτε να αποκτήσετε έναν σύνδεσμο σε ένα αρχείο και να τον μεταφέρετε σε κάποιον άλλο. Αυτή είναι μια υπηρεσία κοινής χρήσης αρχείων.

Αν κοιτάξετε τη λίστα των αρχείων, θα δείτε ότι δίπλα στο όνομα κάθε αρχείου υπάρχει αυτό το εικονίδιο. Όταν κάνετε κλικ σε αυτό, εμφανίζεται ένα παράθυρο που λαμβάνει έναν σύνδεσμο προς το αρχείο (“ Συνδέσεις»).

Δεν είναι τόσο απλό με τους συνδέσμους. Όπως ήδη αναφέρθηκε, όλα τα αρχεία κρυπτογραφούνται και μεταδίδονται με ασφάλεια μέσω του δικτύου. Στο παράθυρο για τη λήψη ενός συνδέσμου προς ένα αρχείο, υπάρχουν πολλά πλαίσια ελέγχου (παράθυρα όπου μπορείτε να αφαιρέσετε ή να επιλέξετε πλαίσια). Ανάλογα με τα πλαίσια ελέγχου που ελέγχουμε, θα εξαρτηθεί ο σύνδεσμος που θα λάβουμε.

    Εάν το ελέγξετε, μόνο ένας σύνδεσμος προς το αρχείο θα εμφανιστεί στο παράθυρο. Αλλά δεν μπορείτε να κάνετε λήψη του αρχείου από αυτόν τον σύνδεσμο. Χρειάζεστε ένα κλειδί για το αρχείο. Θα εμφανιστεί εάν επιλέξετε το πλαίσιο ελέγχου κλειδιού αρχείου.

    Κλειδί αρχείου. Αυτός είναι ένας συγκεκριμένος συνδυασμός χαρακτήρων που δίνει πρόσβαση στο αρχείο κατά τη λήψη. Ο παραλήπτης του αρχείου θα πρέπει να το εισαγάγει σε ειδικό πεδίο στη σελίδα λήψης.

    Ονομα αρχείου. Επιλέξτε το πλαίσιο εάν θέλετε το όνομα του αρχείου να συμπεριληφθεί στον σύνδεσμο. Το ίδιο ισχύει και για το πλαίσιο ελέγχου " μέγεθος αρχείου" Μπορείτε να το υποδείξετε ή όχι. Ορίστε όπως θέλετε :)

Ας δούμε τι θα συμβεί εάν καθορίσετε μόνο "" και "" + " στις παραμέτρους συνδέσμου Κλειδί αρχείου" Επιλογές" Ονομα αρχείου" Και " μέγεθος αρχείου» δεν θα αναφέρουμε, αφού δεν επηρεάζουν ιδιαίτερα τίποτα, αλλά χρησιμεύουν καθαρά ως ενημέρωση.

Στη συνέχεια θα ανοίξουμε νέα καρτέλαπρόγραμμα περιήγησης και αντιγράψτε το κείμενο του ληφθέντος συνδέσμου στη γραμμή διευθύνσεων. Μπορείτε να χρησιμοποιήσετε έναν συνδυασμό πλήκτρων πρόσβασης CTRL+V. Αυτός ο συνδυασμός είναι υπεύθυνος για την επικόλληση κειμένου που έχει αντιγραφεί στο πρόχειρο. Ας ακολουθήσουμε τον σύνδεσμο και ας δούμε τη σελίδα λήψης. Η σελίδα είναι πολύ όμορφα σχεδιασμένη. Στην κεντρική περιοχή της σελίδας θα δούμε αυτό το μήνυμα.

Ωχ! Εδώ μας ρωτάνε κάτι κλειδί αποκρυπτογράφησης. Μόνο γνωρίζοντας το κλειδί του αρχείου μπορείτε να το κατεβάσετε. Αυτό είναι το κλειδί που προσφέρεται να λάβουμε στο παράθυρο λήψης συνδέσμων.

Λοιπόν, ας το πάρουμε και ας το επικολλήσουμε στο πεδίο που λέει " Εισάγετε κλειδί αποκωδικοποίησης" Μην ξεχάσετε να επιλέξετε το πλαίσιο δίπλα στις λέξεις " Συμφωνώ με τους όρους παροχής υπηρεσιών του MEGA».

Πάτα το κουμπί " Κατεβάστε" και περιμένετε να γίνει λήψη του αρχείου.

Όπως μπορείτε να δείτε, η ταχύτητα λήψης του αρχείου είναι 864,5 kbps. , που είναι αρκετά.

Τι πρέπει όμως να κάνουν όσοι δεν τους αρέσει να παίζουν κατασκόπους; Σε αυτήν την περίπτωση, όταν λαμβάνετε έναν σύνδεσμο προς το αρχείο, επιλέξτε τα πλαίσια ελέγχου "" + " Κλειδί αρχείου"και αντιγράψτε το.

Αυτό ήταν, τώρα ο σύνδεσμος μπορεί να εισαχθεί στο σώμα του email, Μηνύματα ICQκαι στείλτε το σε όποιον θέλετε να μεταφέρετε το αρχείο. Στη σελίδα λήψης αρχείου, δεν χρειάζεται να εισαγάγετε κανένα κλειδί, απλά πρέπει να συμφωνήσετε με τους όρους παροχής υπηρεσιών και να κάνετε κλικ στο ". Κατεβάστε».

Τώρα που καταλάβαμε με επιτυχία τη διεπαφή υπηρεσίας, ας ρίξουμε μια ματιά στις ρυθμίσεις. Μεταβείτε στην καρτέλα "Λογαριασμός" και μεταβείτε στη σελίδα ρυθμίσεων και επιλογών.

Ο δωρεάν τύπος λογαριασμού στο MEGA σάς επιτρέπει να χρησιμοποιείτε 50 GB αποθηκευτικού χώρου στο cloud.

Αν θέλετε περισσότερα, πληρώστε χρήματα. Αλλά, για προσωπικούς σκοπούς, αυτά τα 50 GB είναι αρκετά. Ο τύπος λογαριασμού επί πληρωμή έχει επίσης τα πλεονεκτήματά του. Πρώτον, είναι μια αυξημένη ταχύτητα λήψης. Δεύτερον, ο αυξημένος χώρος στην υπηρεσία είναι 500 GB ( Pro Ⅰ), 2 TB ( Pro Ⅱ), 4 TB ( ProⅢ).

Το ποσοστό εμφανίζεται εδώ στη σελίδα. κατειλημμένος χώροςσε αποθήκευση.

Μπορείτε επίσης να ορίσετε παραμέτρους μετάδοσης: περιορίστε την ταχύτητα μετάδοσης, ορίστε τον αριθμό παράλληλες συνδέσεις. Εδώ μπορείτε επίσης να ενεργοποιήσετε/απενεργοποιήσετε τη λειτουργία παράβλεψης πανομοιότυπων αρχείων κατά τη λήψη, καθώς και τη χρήση προστατευμένου Πρωτόκολλο SSL. Η απενεργοποίηση του πρωτοκόλλου ασφαλούς μεταφοράς δεδομένων αυξάνει την ταχύτητα λήψης αρχείων, καθώς σε αυτήν την περίπτωση δεν χρησιμοποιείται περιττός κώδικας.

Στην ίδια σελίδα μπορείτε να δείτε το υπόλοιπό σας (αν χρησιμοποιείτε τύπο λογαριασμού επί πληρωμή) και το ιστορικό περιόδου σύνδεσης.

Επιτρέψτε μου να ξεκινήσω λέγοντας ότι το Διαδίκτυό μου δεν είναι ιδιαίτερα γρήγορο. Από μέσα αυτή τη στιγμήΖω σε χωριό, οπότε πρέπει να χρησιμοποιήσω Megafon Modem. Δίκτυο 3G. Η συνηθισμένη μου ταχύτητα Διαδικτύου είναι 100-200 Kilobyte ανά δευτερόλεπτο και η ταχύτερη είναι 500-600 Kilobyte ανά δευτερόλεπτο. Και αλλάζει συνεχώς ανάλογα με την ώρα της ημέρας και τις καιρικές συνθήκες. Ωστόσο, ακόμη και κάτω από τέτοιες συνθήκες, κατάφερα με επιτυχία να κατεβάσω ένα τεράστιο αρχείο 12 GB από την υπηρεσία φιλοξενίας αρχείων Mega. Θα σας πω περισσότερα για αυτό αργότερα και θα το μάθετε μόνοι σας. ΧΡΗΣΙΜΕΣ ΠΛΗΡΟΦΟΡΙΕΣγια το πώς να κατεβάσετε τεράστια αρχεία από το mega.nz.

Δεν το κατέβασα αρχικά από το Mega. μεγάλα αρχεία, χρησιμοποιώντας απλώς ένα κανονικό πρόγραμμα περιήγησης. Παρεμπιπτόντως, λόγω του γεγονότος ότι η πρόσβαση σε αυτήν την υπηρεσία φιλοξενίας αρχείων είναι κλειστή μέσω ορισμένων δικτύων, ειδικά μέσω ορισμένων δικτύων, πρέπει να αναζητήσετε πρόσθετους τρόπους πρόσβασης σε αυτήν. Συνήθως, οι διευθύνσεις αρχείων ξεκινούν με τη γραμμή https://mega.co.nz. Και αν δεν μπορείτε να συνδεθείτε μέσω αυτών, τότε απλά πρέπει να αλλάξετε τα σύμβολα "mega.co.nz" σε "eu.static.mega.co.nz".

Πρώτος τρόποςΗ λήψη ενός αρχείου από το Mega.nz σημαίνει τη χρήση ενός κανονικού προγράμματος περιήγησης. Συνιστάται η χρήση του Google Chrome για πιο επιτυχημένη λήψη. Εάν το αρχείο είναι τεράστιο σε μέγεθος, τότε συνιστάται αρχικά να καθαρίσετε το ίδιο το πρόγραμμα περιήγησης από τυχόν σκουπίδια που συσσωρεύονται σε αυτό και παρεμβαίνουν περισσότερη δουλεια– αυτό είναι ένα ιστορικό λήψεων, cookies, ένα αρχείο καταγραφής ιστότοπων που έχετε επισκεφθεί. Για αυτούς τους σκοπούς, χρησιμοποιώ ένα δωρεάν βοηθητικό πρόγραμμα που ονομάζεται CCleaner.

Πώς είναι η διαδικασία λήψης στο Mega μέσω προγράμματος περιήγησης; Αρχικά, αποθηκεύεται στο πρόγραμμα περιήγησης και, στη συνέχεια, όταν ολοκληρωθεί η λήψη, μεταφέρεται αυτόματα στον υπολογιστή. Τις περισσότερες φορές στο φάκελο "Λήψεις". Λοιπόν, ή σε άλλο φάκελο στον οποίο εγκαταστήσατε.

Επιλέξτε το αρχείο που θέλετε να κατεβάσετε και κάντε κλικ στο «Λήψη σε zip». Ή μπορείτε να κάνετε δεξί κλικ στο αρχείο. Θα εμφανιστεί ένα παράθυρο στο οποίο κάνετε κλικ στο «Λήψη» και, στη συνέχεια, επιλέξτε είτε κανονική λήψη είτε λήψη zip. Προτιμώ να κατεβάζω αρχεία σε αρχεία όπως zip και άλλα.

Αρχικά, κατέβασα ένα αντικείμενο - ένα αρχείο 8 GB. Ολα πήγαν καλά. Την επόμενη μέρα άρχισα να κατεβάζω ένα αρχείο 12 GB. Το είχα να αιωρείται για περίπου 22 ώρες. Το έχω βαρεθεί. Η ταχύτητα ήταν, για άγνωστο λόγο, πολύ χαμηλή. Στη συνέχεια, όταν το αρχείο είχε ήδη ληφθεί κατά 90%, η διαδικασία λήψης διακόπτονταν συνεχώς και ήταν απαραίτητο να το ξεκινήσετε συνεχώς. Ήταν γραμμένο στα Αγγλικά κάπως έτσι η λήψη θα συνεχιστεί αφού ελευθερώσετε χώρο στο πρόγραμμα περιήγησης. Είναι πιθανό ότι τα 12 GB ήταν πάρα πολλά για το πρόγραμμα περιήγησης. Επιπλέον, επηρεάστηκε επίσης από το γεγονός ότι δεν έκανα εκκαθάριση του προγράμματος περιήγησης πριν από τη λήψη. Και ως αποτέλεσμα, το 99% της λήψης στο Mega διακόπηκε. Απογοητεύτηκα γιατί δεν μπορούσα να κάνω κάτι γι' αυτό. Ναι, και πέρασα πολύ χρόνο και κίνηση. Επομένως, έπρεπε να ψάξω για μια άλλη, πιο επιτυχημένη μέθοδο λήψης από το Mega.

Δεύτερος τρόποςΠώς να κάνετε λήψη από την υπηρεσία φιλοξενίας αρχείων Mega.nz είναι να χρησιμοποιήσετε το πρόγραμμα Mipony. Έχει πολλά πλεονεκτήματα. Έχει δυνατότητα λήψης και δεν δημιουργεί προσωρινά αρχεία. Το εγκατέστησα από το mipony.net. Το πρόγραμμα προστασίας από ιούς δεν εντόπισε σημάδια «κακού» ιού σε αυτό το αρχείο. Και το site mipony.net φαίνεται να είναι επίσημο, τουλάχιστον έτσι φαίνεται. Είναι αλήθεια ότι μαζί με αυτό το βοηθητικό πρόγραμμα εγκαταστάθηκαν ένα σωρό προγράμματα που ήταν περιττά για μένα. Θα τα ξεφορτωθώ, αφού δεν τα χρειάζομαι, παρόλο που φαίνονται ακίνδυνα. Και μεταξύ αυτών υπάρχει το πρόγραμμα περιήγησης Amigo. Τον έχω βαρεθεί ήδη. Το εγκαθιστώ συνεχώς μαζί με κάποια προγράμματα. Προφανώς, οι προγραμματιστές λογισμικού έχουν ένα τέτοιο σχέδιο προώθησης - να πληρώσουν τους κατόχους άλλων προγραμμάτων, ώστε μαζί με την εγκατάσταση του αρχείου τους, να εγκατασταθεί και η εφαρμογή τους.

Μετά διαλέγεις απαραίτητα αρχείαή όλα. Για να ξεκινήσετε τη λήψη, κάντε κλικ στο «Επιλογή λήψης» παρακάτω. Όλα τα αρχεία μετά από αυτά τα βήματα ξεκινούν τη λήψη.

Η όλη διαδικασία λήψης πραγματοποιείται στην ενότητα «Λήψη».

Μην ξεχάσετε να ρυθμίσετε την ταχύτητα σε "Απεριόριστη" στην κάτω δεξιά γωνία. Είχα αρχικά 10 KB/s. Αυτό είναι πολύ λίγο και θα κατεβάζετε μεγάλα αρχεία με αυτή την ταχύτητα όχι μόνο για εβδομάδες, αλλά για μήνες, αν όχι χρόνια.

Ως αποτέλεσμα της χρήσης του Mipony, μπόρεσα να κατεβάσω ένα αρχείο 12 GB σε περίπου 8 ώρες. Για εσάς, αυτή η διαδικασία μπορεί να πάρει πολύ λιγότερο χρόνο. Όλα εξαρτώνται από την ταχύτητα του Διαδικτύου που χρησιμοποιείτε.

Καλή τύχη! Ελπίζω ότι το άρθρο σχετικά με τον τρόπο λήψης από την υπηρεσία φιλοξενίας αρχείων Mega ήταν χρήσιμο για εσάς.

Μετά το λανσάρισμα της κάπως σκανδαλώδους υπηρεσίας MEGA, οι συζητήσεις για την ασφάλειά της άρχισαν να βράζουν λίγο και να σβήνουν. Σήμερα η υπηρεσία ζει τη δική της ζωή και κανείς δεν την έχει καν σπάσει. Για κάποιο λόγο, ο όρος «User Controlled Encryption» (UCE, ή User Controlled Cryptography), που καυχιέται το MEGA, έλειπε από όλες τις συνομιλίες. Αυτό που εννοώ με το "χάθηκε" είναι το γεγονός ότι δεν έχουμε καλύψει όλες τις δυνατότητες που μας δίνει μια μηχανή κρυπτογράφησης που λειτουργεί σε JavaScript στην πλευρά του πελάτη.

Φυσικά, η ίδια η υπηρεσία MEGA σημαίνει απλώς ότι τα κλειδιά κρυπτογράφησης δεν αποθηκεύονται στον διακομιστή, αλλά όλα δικα τουςΗ κρυπτογράφηση πραγματοποιείται στο πλαίσιο του προγράμματος περιήγησης. Επιπλέον, μετά την κυκλοφορία της υπηρεσίας, έγινε πολύς λόγος για το γεγονός ότι χρησιμοποιεί αδύναμους κρυπτογραφικούς αλγόριθμους και ότι γενικά όλα είναι άσχημα και όλοι θα πεθάνουμε και τα αρχεία μας θα διαβάζονται από το FSB. Αυτό μου έδωσε την ιδέα να επεκτείνω την έννοια του "UCE" και να πάρω πραγματικά τον έλεγχο της κρυπτογραφίας, δηλαδή να αντικαταστήσω ή να συμπληρώσω ορισμένους από τους μηχανισμούς ασφαλείας της υπηρεσίας.

Σε αυτό το άρθρο, θα αναλύσω μερικά από τα μαγικά που συμβαίνουν σε δύο megabyte κώδικα MEGA JavaScript και θα δείξω πώς μπορείτε να παρακάμψετε ορισμένες μεθόδους για να σταματήσετε να ανησυχείτε και να αγαπάτε την κρυπτογράφηση. Ως αποτέλεσμα, θα λάβουμε την υπηρεσία αποθήκευση cloudαρχεία από έλεγχος ταυτότητας δύο παραγόντωνκαι η κρυπτογράφηση υλικού είναι κρίσιμης σημασίας σημαντικές πληροφορίες.

MEGA, UCE και όλα, όλα, όλα

Λοιπόν, ας ξεκινήσουμε εξετάζοντας τις τεχνολογίες στις οποίες είναι χτισμένο το τμήμα πελάτη της υπηρεσίας, πώς εγγράφονται νέοι χρήστες, οι εγγεγραμμένοι χρήστες επαληθεύονται, οι κωδικοί πρόσβασης αλλάζουν και τα αρχεία μεταφορτώνονται/κατεβαίνουν.

JavaScript

Όπως ίσως γνωρίζετε ήδη, ολόκληρη η πλευρά του πελάτη της υπηρεσίας βασίζεται σε JavaScript, στον κώδικα αρχική σελίδαΤα αθροίσματα ελέγχου SHA-256 καθορίζονται για όλα τα σενάρια και τις σελίδες που φορτώνονται από το πρόγραμμα περιήγησης. Η ίδια η λήψη πραγματοποιείται ως εξής: τα αθροίσματα ελέγχου ελέγχονται για όλα τα αρχεία, μετά τα οποία συνδυάζονται σε ένα BLOB, το οποίο δίνεται στο πρόγραμμα περιήγησης. Ο πηγαίος κώδικας των αρχείων js δείχνει ότι γράφτηκαν από διαφορετικούς ανθρώπους και μερικές φορές υπάρχουν αστεία πετράδια, όπως οι συνέπειες της αντιγραφής-επικόλλησης, ανούσιες συνθήκες και απλώς περίεργες μεταβλητές.

Στη διαδικασία της μελέτης πηγαίος κώδικαςΠαρατήρησα επίσης ότι ο ιστότοπος ενημερώνεται αρκετά ενεργά, οι προγραμματιστές διορθώνουν μικρά λάθη και βελτιστοποιούν τον ήδη γραμμένο κώδικα, κάτι που είναι καλά νέα. Ο ίδιος ο κώδικας είναι γραμμένος πολύ απλά και χωρίς περιττή δημιουργία πρωτοτύπων: ο ιστότοπος χρησιμοποιεί τριακόσιες καθολικές μεταβλητές και περισσότερες από 8.000 συναρτήσεις. Ήταν πολύ εύκολο να κατανοήσετε την αρχιτεκτονική του ιστότοπου και να αλλάξετε τον κώδικά του.

Μεταξύ των πλαισίων τρίτων, το MEGA χρησιμοποιεί jQuery (δεν μπορείτε να ζήσετε χωρίς αυτό τώρα), Ext JS και SJCL. Το τελευταίο υλοποιεί έναν κρυπτογραφικό πυρήνα με κρυπτογράφηση AES. Το SJCL παρέχει επίσης μια ενδιαφέρουσα μορφή για την αποθήκευση κλειδιών και άλλων συστοιχιών byte: αντί να αποθηκεύονται απλά byte σε έναν κανονικό πίνακα, αυτά «συμπιέζονται» σε μια μορφή που ονομάζεται a32. Η ουσία του είναι ότι τα περιεχόμενα οποιουδήποτε πίνακα byte συσκευάζονται σε αριθμούς 32 bit και γράφονται σε έναν πίνακα μικρότερου μήκους. Δηλαδή, κάθε 4 byte του πίνακα μετατρέπονται σε ένα banal int. Ο κώδικας τοποθεσίας περιέχει συναρτήσεις που εκτελούν όλα τα είδη μετασχηματισμών σε ένα αυτοσχέδιο σύνολο (πίνακας a32, συμβολοσειρά, συμβολοσειρά base64).

Πληροφορία κλειδί

Πριν προχωρήσετε στην περιγραφή των διαδικασιών εγγραφής και ελέγχου ταυτότητας, αξίζει να λάβετε υπόψη τις πληροφορίες που υπόκεινται σε κρυπτογράφηση, και συγκεκριμένα:
  • Κύριο κλειδί λογαριασμού, το οποίο δημιουργείται τυχαία κατά την εγγραφή του χρήστη και έχει μήκος 128 bit. Και καταρχήν, το μήκος όλων των κλειδιών που χρησιμοποιούνται για συμμετρική κρυπτογράφηση είναι 128 bit.
  • Ιδιωτικό κλειδί RSA: Δημιουργήθηκε τη στιγμή της εγγραφής με βάση τις κινήσεις του ποντικιού και την είσοδο του πληκτρολογίου. Σε αυτό το άρθρο, δεν θα εστιάσω στην ασύμμετρη κρυπτογραφία, καθώς χρησιμοποιείται για την κοινή χρήση ληφθέντων αρχείων και καθήκον μου ήταν να αλλάξω τη διαδικασία ελέγχου ταυτότητας και κρυπτογράφησης των δεδομένων χρήστη.
  • Μεμονωμένα κλειδιά αρχείων και τα ίδια τα αρχεία, μεταφορτώθηκε στην υπηρεσία. Τα κλειδιά δημιουργούνται τυχαία όταν γίνεται λήψη ενός αρχείου, αυτό το ίδιο το κλειδί χρησιμοποιείται για την κρυπτογράφηση των δεδομένων του αρχείου και ένα κλειδί δημιουργείται με βάση το μεμονωμένο κλειδί του αρχείου και του άθροισμα ελέγχου.

Πιο κοντά στον κώδικα

Τώρα προτείνω να αναλύσουμε τις διαδικασίες εγγραφής και ελέγχου ταυτότητας, να δούμε πώς δημιουργείται το κύριο κλειδί και πώς κρυπτογραφείται.
Προσπάθησα να απεικονίσω αυτές τις διαδικασίες σε χαρτί και για να σας δώσω να κατανοήσετε την ουσία της τρέλας, τράβηξα ακόμη και αυτή τη φωτογραφία:

Εγγραφή Νέου Χρήστη

Η ίδια η διαδικασία εγγραφής είναι αρκετά μπερδεμένη, αφού ο χρήστης συμπληρώσει το ερωτηματολόγιο, καλείται μια μεγάλη δέσμη συναρτήσεων, αλλά μας ενδιαφέρει η συνάρτηση api_createuser:

// δημιουργία ενός νέου χρήστη και της κύριας συνάρτησης του κλειδιού api_createuser(ctx, κωδικός πρόσκλησης, όνομα πρόσκλησης, uh) ( var i; var ssc = Array(4); // αυτοπρόκληση περιόδου λειτουργίας, θα χρησιμοποιηθεί για την επαλήθευση του κωδικού πρόσβασης 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(); // δημιουργία ενός τυχαίου κύριου κλειδιού u_k για (i = 4; i--;) ssc[i] = rand(0x100000000 // δημιουργία μιας τυχαίας ακολουθίας ελέγχου ταυτότητας if (d) console.log("api_createuser - masterkey: "); + u_k + "passwordkey: " + ctx.passwordkey // κρυπτογραφήστε το κύριο κλειδί στον τρέχοντα κωδικό πρόσβασης και στείλτε το στον διακομιστή (πεδίο k) // το πεδίο ts είναι η συνένωση του ssc με την κρυπτογραφημένη του τιμή 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.cipher. , ssc))) if (invitecode) ( req.uh = εεε; req.ic = κωδικός πρόσκλησης; req.name = όνομα πρόσκλησης; ) if (δ) console.log("Storing key: " + req.k); api_req(, ctx); )
Σε αυτή τη λειτουργία μας ενδιαφέρουν τα εξής:

  • Το u_k είναι το ίδιο το κύριο κλειδί, μια καθολική μεταβλητή. Ένας πίνακας 4 αριθμών 32-bit, ο οποίος δημιουργείται από τη συνάρτηση api_create_uk
  • Το ssc είναι απλώς ένας τυχαίος πίνακας που κρυπτογραφείται με το κύριο κλειδί, συνδέεται με τη δημόσια τιμή του και αποστέλλεται στον διακομιστή. Αργότερα θα χρησιμοποιηθεί για τον έλεγχο της ορθότητας του κύριου κλειδιού κατά τον έλεγχο ταυτότητας
  • sjcl - κρυπτογραφική βιβλιοθήκη που υλοποιεί το AES
  • rand() - υλοποίηση τοπικής γεννήτριας ψευδοτυχαίοι αριθμοί, με βάση το RC4
  • Η encrypt_key() είναι η συνάρτηση ακρογωνιαίο λίθο της συμμετρικής κρυπτογραφίας της υπηρεσίας. Αποδέχεται ένα αντικείμενο sjcl που έχει αρχικοποιηθεί με ένα κλειδί και έναν πίνακα που πρέπει να κρυπτογραφηθεί. Ο κωδικός λειτουργίας δίνεται παρακάτω και, ελπίζουμε, δεν χρειάζεται επεξήγηση.
// κρυπτογράφηση/αποκρυπτογράφηση 4- ή 8-στοιχείων 32-bit ακέραιος πίνακας συνάρτηση encrypt_key(cipher, a) ( if (a.length == 4) return cipher.encrypt(a); var x = ; for (var i = 0;< a.length; i += 4) x = x.concat(cipher.encrypt(, a, a, a])); return x; }
Ως αποτέλεσμα, μετά την εγγραφή τα ακόλουθα αποστέλλονται στον διακομιστή:
  • Κύριο κλειδί κρυπτογραφημένο με το κλειδί που προέρχεται από τον κωδικό πρόσβασης του λογαριασμού
  • Συμβολοσειρά όπως ssc|| encrypt_AES-128(u_k, ssc)

Σύνδεση χρήστη

Τώρα μπορείτε να προχωρήσετε ομαλά στη διαδικασία ελέγχου ταυτότητας. Εν συντομία, γίνεται ως εξής:
  1. Ο χρήστης εισάγει το login/password
  2. Εάν περάσει το πρώτο στάδιο ελέγχου ταυτότητας, τότε ένα κρυπτογραφημένο κύριο κλειδί και μια ακολουθία ελέγχου ταυτότητας (ssc) που δημιουργήθηκε κατά την εγγραφή λαμβάνονται από τον διακομιστή
  3. Το κύριο κλειδί αποκρυπτογραφείται χρησιμοποιώντας τον κωδικό πρόσβασης που έχει εισαχθεί από τον χρήστη
  4. Η ακολουθία ελέγχου ταυτότητας αποκρυπτογραφείται στο κύριο κλειδί και συγκρίνεται με την ανοιχτή τιμή του - ελέγχοντας έτσι την ορθότητα του κύριου κλειδιού και του κωδικού πρόσβασης.
Η συνάρτηση επανάκλησης api_getsid2 είναι υπεύθυνη για όλα τα παραπάνω:

// αποκρυπτογραφήστε το κύριο κλειδί αφού ο χρήστης συνδεθεί στη συνάρτηση api_getsid2(res, ctx) ( var t, k; var r = false; if (typeof res == "object") ( // προετοιμασία του sjcl-aes με τον τρέχοντα λογαριασμό κωδικός πρόσβασης var aes = νέος sjcl.cipher.aes(ctx.passwordkey // εάν λάβαμε ένα κύριο κλειδί στην απάντηση διακομιστή... if (typeof res.k == "string") ( k = base64_to_a32(res. k); if (k.length == 4) ( // ... τότε αποκρυπτογραφήστε το k = decrypt_key(aes, k); // και αρχικοποιήστε ξανά το sjcl-aes χρησιμοποιώντας το κύριο κλειδί aes = νέο sjcl.cipher. aes( k) εάν λάβαμε ssc από τη διαδικασία εγγραφής if (typeof res.tsid == "string") (t = base64urldecode(res.tsid); // κρυπτογραφήστε το πρώτο μισό της συμβολοσειράς και το συγκρίνουμε με το η τιμή από τον διακομιστή // εάν ταιριάζουν - σημαίνει ότι όλα τα στοιχεία σύνδεσης και οι κωδικοί πρόσβασης ταιριάζουν και μπορείτε να αφήσετε τον χρήστη να εισέλθει εάν (a32_to_str(encrypt_key(aes, str_to_a32(t.substr(0, 16)))) == t .substr(-16)) r = ) // Το ιδιωτικό κλειδί του ζεύγους RSA αναλύεται παρακάτω, δεν μας ενδιαφέρει ακόμη αυτό εάν (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 = Array(4); // αποσύνθεση ιδιωτικού κλειδιού για (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; privk = privk.substr(l); ) // ελέγξτε τη μορφή εάν (i == 4 && privk.length< 16) { // TODO: check remaining padding for added early wrong password detection likelihood r = ; } } } } } ctx.result(ctx, r); }
Ως μπόνους για την εγγραφή/τον έλεγχο ταυτότητας, μπορείτε να ρίξετε μια ματιά στη διαδικασία αλλαγής κωδικού πρόσβασης.

// αλλαγή της συνάρτησης κωδικού πρόσβασης χρήστη 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 . .
Ο κώδικας αυτής της συνάρτησης είναι αυτονόητος: κρυπτογραφούμε το κύριο κλειδί με δύο κλειδιά που λαμβάνονται από τον παλιό και τον νέο κωδικό πρόσβασης και στη συνέχεια στέλνουμε αυτές τις τιμές στον διακομιστή. Εάν ο τρέχων κωδικός πρόσβασης είναι σωστός, αντικαθίσταται με νέο. Εδώ ήθελα να επιστήσω περισσότερη προσοχή στη συνάρτηση προετοιμασία_key_pw, η οποία ήταν σιωπηρά παρούσα σε όλες τις προηγούμενες λειτουργίες. Η αποστολή του είναι να μετατρέψει τον κωδικό πρόσβασης συμβολοσειράς σε έναν πίνακα a32 και στη συνέχεια να εκτελέσει τη λειτουργία παραγωγής κλειδιού ως εξής:

// μετατροπή συνάρτησης πίνακα κωδικών πρόσβασης που παρέχεται από τον χρήστη προετοιμάζει_κλειδί(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; }
Αυτό το χαρακτηριστικό έχει προκαλέσει πολλές επικρίσεις επειδή βασίζεται σε έναν εγχώριο αλγόριθμο. Κατά τη σύνταξη αυτού του άρθρου, οι δημιουργοί της υπηρεσίας κατάφεραν να αλλάξουν λίγο τον κώδικά της, αλλά δεν παρατήρησα σημαντικές αλλαγές. Η ουσία του είναι ότι ο μεταδιδόμενος κωδικός πρόσβασης κρυπτογραφείται 65536 φορές χρησιμοποιώντας ένα σταθερό κλειδί προκειμένου να ληφθεί ένα κλειδί που δεν διακρίνεται από ένα τυχαίο. Το γιατί οι δημιουργοί της υπηρεσίας δεν χρησιμοποίησαν υπάρχοντες αλγόριθμους (για παράδειγμα, PBKDF2) παραμένει μυστήριο.

Μεταφόρτωση και κρυπτογράφηση αρχείων

Εν συντομία, όλη αυτή η διαδικασία μπορεί να αναπαρασταθεί ως εξής:

Σας προειδοποιώ, το να εμβαθύνετε σε αυτήν την εικόνα για μεγάλο χρονικό διάστημα είναι επικίνδυνο για τον εγκέφαλο, επομένως παρακάτω θα σας πω πώς γίνονται όλα αυτά.

Όπως είπα ήδη, κατά τη φόρτωση, κάθε αρχείο δημιουργεί το δικό του τυχαίο κλειδί πίνακα με 6 αριθμούς 32-bit. Τα πρώτα τέσσερα στοιχεία αυτού του πίνακα χρησιμοποιούνται για την κρυπτογράφηση των περιεχομένων του αρχείου και τα δύο τελευταία χρησιμοποιούνται ως αρχικές τιμές του μετρητή που χρησιμοποιείται για τον υπολογισμό του αθροίσματος ελέγχου του αρχείου. Αυτός ο πίνακας αποθηκεύεται στην καθολική μεταβλητή ul_key. Τα περιεχόμενά του εισάγονται στη σειριακή συμβολοσειρά JSON ul_KeyNonce .

Η ίδια η αποκρυπτογράφηση πραγματοποιείται χρησιμοποιώντας ένα Web Worker (εάν το πρόγραμμα περιήγησης υποστηρίζει αυτήν την τεχνολογία) ή απλά μέσα στον κώδικα της κύριας σελίδας. Όταν ένα αρχείο είναι έτοιμο για αποστολή, δημιουργείται ένα νέο κλειδί, το filekey , για την κρυπτογράφηση των ιδιοτήτων του (προς το παρόν μόνο το όνομα αρχείου) με βάση το ul_key και το άθροισμα ελέγχου του αρχείου. Αυτό το κλειδί κρυπτογραφείται στη συνέχεια με το κύριο κλειδί και αποστέλλεται στον διακομιστή μαζί με τα χαρακτηριστικά του αρχείου. Οι συναρτήσεις initupload3 και api_completeupload2 είναι υπεύθυνες για όλες αυτές τις ενέργειες. Το κλειδί αρχείου δημιουργείται στη συνάρτηση ul_chunkcomplete, παρακάτω θα δώσω ένα μέρος του.

// έναρξη αποστολής ενός αρχείου: δημιουργία του ατομικού κλειδιού του και προετοιμασία της συνάρτησης μηχανισμού κρυπτογράφησης initupload3() ( // ... cut =) // η δημιουργία ενός τυχαίου μεμονωμένου κλειδιού για το αρχείο // ul_key χρησιμοποιείται στο κωδικός σελίδας, // ul_keyNonce μεταβιβάζεται στο Web Worker και χρησιμοποιείται εκεί // για την κρυπτογράφηση του αρχείου και τον υπολογισμό του αθροίσματος ελέγχου του ul_key = Array(6); για (i = 6; i--;) ul_key[i] = rand(0x100000000); ul_keyNonce = JSON.stringify(ul_key); ul_macs = ; // ... επόμενο είναι η επεξεργασία της ουράς λήψης, δεν έχει ενδιαφέρον... // προετοιμασία του sjcl-aes για ένα αρχείο που βασίζεται στο ul_key ul_aes = new sjcl.cipher.aes(); // ... // έναρξη της διαδικασίας μεταφόρτωσης του αρχείου: // ανάγνωση του από το δίσκο, κρυπτογράφηση και αποστολή onUploadStart(ul_queue_num); ul_dispatch_chain(); ) // δημιουργία κλειδιού για την κρυπτογράφηση των χαρακτηριστικών του αρχείου συνάρτηση ul_chunkcomplete(slot,pos,response) ( // ... var t = ; // ul_macs - ένας πίνακας με το άθροισμα ελέγχου αρχείου που λαμβάνεται μέσα στον εργαζόμενο για (p σε ul_macs) t .push(p) // γεμίζοντας και ταξινομώντας έναν προσωρινό πίνακα, αν κάποιος ξέρει γιατί, εξηγήστε t.sort(function(a,b) ( return parseInt(a)-parseInt(b) ));< 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 ( // κρυπτογράφηση του ονόματος αρχείου στο κλειδί που προέρχεται από το ul_key και το checksum // ctx.k == κλειδί αρχείου a = ( n: ctx.n ) ; if (δ) console.log(ea); 0, a: ab_to_base64(ea), // χαρακτηριστικά k: a32_to_base64(encrypt_key(u_k_aes, ctx.k)), // == AES_encrypt(u_k, filekey) fa: ctx.fa )] ); έχει παρασχεθεί: κρυπτογράφηση σε όλα τα σχετικά shares var sn = fm_getsharenodes(ut if (sn.length) ( req.cr = crypto_makecr(, sn, false); req.cr = ctx.t; ) ) api_req(, ctx). ctx);

Λήψη και αποκρυπτογράφηση αρχείων

Προφανώς, αυτές οι διαδικασίες θα πρέπει απλώς να είναι το αντίστροφο της κρυπτογράφησης του αρχείου. Το μόνο πράγμα που μπορεί να σας ενδιαφέρει είναι να λάβετε την τιμή του κλειδιού ul_key από την κρυπτογραφημένη τιμή του κλειδιού αρχείου που προήλθε από τον διακομιστή.

Τη στιγμή που γίνεται λήψη του αρχείου, το περιβάλλον του προγράμματος περιήγησης περιέχει ήδη ένα αντικείμενο που αποθηκεύει τα αποκρυπτογραφημένα κλειδιά του αρχείου. Επομένως, έχει νόημα πρώτα να εξετάσετε τη διαδικασία που λαμβάνει χώρα αμέσως μετά τον έλεγχο ταυτότητας χρήστη, δηλαδή τη λήψη του διαχειριστή αρχείων. Αφού ο χρήστης έχει επιτραπεί στην υπηρεσία, θέλει φυσικά να αποκτήσει πρόσβαση στα αρχεία του (υποθέτοντας ότι τα είχε ήδη εκεί). Για να γίνει αυτό, πρέπει πρώτα να αποκρυπτογραφήσουμε τα κλειδιά του αρχείου και μετά τα χαρακτηριστικά τους. Αυτό το θέμα αντιμετωπίζεται από ένα άλλο πακέτο συναρτήσεων, από τις οποίες μας ενδιαφέρει το loadfm_callback και το process_f_f .

Εν συντομία, η διαδικασία απόκτησης χαρακτηριστικών αρχείου μπορεί να περιγραφεί από τον ακόλουθο αλγόριθμο:

  1. Περιμένετε να φορτώσει ο διαχειριστής αρχείων (loadfm_callback), όπου μπορείτε να λάβετε το JSON με μια περιγραφή όλων των ληφθέντων αρχείων
  2. Δημιουργήστε έναν πίνακα πίνακα στον οποίο θα τοποθετήσετε έναν πίνακα με πληροφορίες για αρχεία
  3. Εκτελέστε (αναδρομικά) τη συνάρτηση process_f_f για κάθε αρχείο
  4. Για κάθε αρχείο που έχει κλειδί, αποκρυπτογραφήστε αυτό το κλειδί και τα χαρακτηριστικά (συνάρτηση crypto_processkey) και αποθηκεύστε τα ξανά σε έναν πίνακα με πληροφορίες αρχείου
  5. Μετά από αυτό, αποθηκεύστε τις αποκρυπτογραφημένες τιμές στη μεταβλητή FileStore (τέλος αναδρομής στο process_f_f)
Παρακάτω θα παράσχω αποσπάσματα κώδικα που επεξηγούν αυτόν τον αλγόριθμο

// επανάκληση για τη φόρτωση της συνάρτησης διαχείρισης αρχείων loadfm_callback(json, res) ( // ... // επεξεργασία JSON με πληροφορίες σχετικά με αρχεία json = json, if (d) console.log(json), if (d) κονσόλα. log (json.u) process_u(json.u, false if (json.ok) process_ok(json.s) (για το (i in json.s)); ( u_sharekeys.h]) ( sharingData.push(( id: json.s[i].h + "_" + json.s[i].u, userid: json.s[i].u, folderid: json s[i].h, δικαιώματα: json.s[i].r, ημερομηνία: json.s[i].ts ) = true; .. // εισάγοντας πληροφορίες σχετικά με τα αρχεία σε έναν άλλο παγκόσμιο πίνακα farray = νέο Αντικείμενο farray.f = json.f // ξεκινώντας την επεξεργασία του, η επιστροφή κλήσης δηλώθηκε παραπάνω // σε αυτήν τη συνάρτηση και απλώς τροποποιεί τη διάταξη process_f(. fi, false, callback; !farray.f.i ]) ( if (farray.ap) FileStore.suspendEvents(); // εγγραφή δεδομένων στο FileStore FileStore.loadData(farray.mdata, true); if (farray.ap) FileStore.resumeEvents(); if (δ) console.log("call reqmissingkeys:"); crypto_reqmissingkeys(); if (farray.callback) farray.callback.fn(farray.callback); επιστροφή ψευδής? ) var f = farray.f.i]; f.attrs = f.a; if (f.sk) u_sharekeys = crypto_process_sharekey(f.h, f.sk); // εάν το αρχείο ταιριάζει με τον τύπο και έχει κλειδί, τότε επεξεργαστείτε το εάν ((f.t !== 2) && (f.t !== 3) && (f.t !== 4) && (f.k)) ( crypto_processkey(u_handle , u_k_aes , f // περιγραφή αυτής της συνάρτησης κάτω από u_nodekeys = f.key if ((typeof f.name !== "undefined") && (f.p == InboxCount)) else (if (f.a) (; if ( !missingkeys) ( missingkeys = true; new missingkeys = true; ) ) f.k = "" f.name = "" ) if (f.t == 2) RootID = f.h; αλλιώς εάν (f.t == 3) InboxID = f.h; αλλιώς αν (f.t == 4) TrashbinID = f.h; αλλιώς αν ((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); ) // επεξεργασία του κλειδιού αρχείου και των χαρακτηριστικών του συνάρτηση crypto_processkey(me, master_aes, αρχείο) ( var id, key, k, n; if (!file.k) ( if (!keycache) return; file.k = keycache; ) id = εγώ // έχω το αρχείο (το κλειδί χρήστη είναι εγγυημένο ότι είναι πρώτο σε .k) // το κλειδί είναι γραμμένο με τη μορφή "; :/" var p = file.k.indexOf(id + ":"); // πρώτα ελέγξτε εάν το αρχείο είναι κοινόχρηστο εάν (p) ( // Δεν έχω - έχω κατάλληλο κοινό κλειδί; για (id in u_sharekeys ) ( p = file.k.indexOf(id + ":"); if (p >= 0 && (!p || file.k.charAt(p - 1) == "/")) break; p = -1; αν (σελ< 0) pp = file.k.length; p += id.length + 1; key = file.k.substr(p, pp - p); // we βρήκαένα κατάλληλο κλειδί: αποκρυπτογράφηση! εάν (κλειδί.μήκος< 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)); ) // εάν έχουμε αποκρυπτογραφήσει σωστά το κλειδί και τα χαρακτηριστικά, τα αποθηκεύουμε σε ένα αντικείμενο αρχείου file.key = k; file.name = o.n; ) ) ) else ( if (δ) console.log ("Δεν ελήφθη κατάλληλο κλειδί: " + file.h); if (!missingkeys) ( new missingkeys = true; missingkeys = true; ) keycache = file.k; ) )
Μετά από αυτό, μπορούμε να λάβουμε την τιμή του αρχικού κλειδιού ul_key από το περιβάλλον του προγράμματος περιήγησης ως εξής: dl_keyNonce = JSON.stringify();
Αυτή η μετατροπή πραγματοποιείται στη συνάρτηση έναρξης λήψης. Αν λάβουμε υπόψη ότι η τιμή dl_key == filekey από τη συνάρτηση ul_chunkcomplete και εκτελέσουμε απλές λειτουργίες προσθήκης modulo, θα παρατηρήσουμε ότι η μεταβλητή dl_keyNonce θα αποθηκεύσει την τιμή ul_key που δημιουργείται κατά τη φόρτωση του αρχείου. Μια εικόνα αυτού μπορεί να φανεί στην κάτω αριστερή γωνία του πίνακα στη φωτογραφία στην αρχή της ενότητας για τη μεταφόρτωση αρχείων.

«Υπερφόρτωση» κρυπτογραφικών λειτουργιών

Παρά το γεγονός ότι οι αρχές που περιγράφονται παραπάνω για την προστασία αρχείων και κλειδιών είναι πολύ ασφαλείς, σε ορισμένους μπορεί να μην αρέσει το γεγονός ότι εξακολουθούμε να εξαρτόμαστε από την υλοποίηση των αλγορίθμων που παρέχει η υπηρεσία. Σε αυτήν την περίπτωση, μπορούμε να αναπτύξουμε τη δική μας επέκταση προγράμματος περιήγησης, η οποία θα παρακάμψει ορισμένες από τις λειτουργίες της υπηρεσίας, εφαρμόζοντας πρόσθετη κρυπτογράφηση σε αυτές. Δηλαδή, αποφάσισα να εφαρμόσω την προστασία βασικών πληροφοριών (κύριο κλειδί και κλειδιά αρχείου) χρησιμοποιώντας κρυπτογράφηση υλικούσε μη αφαιρούμενο κλειδί σύμφωνα με τον αλγόριθμο GOST 28147-89. Ένα μπόνους σε αυτό θα είναι επίσης η συμπερίληψη του ελέγχου ταυτότητας δύο παραγόντων στην υπηρεσία.
Ας εξετάσουμε λοιπόν αυτήν την περίπτωση χρήσης:
  • Ο χρήστης εγγράφεται στην υπηρεσία
  • Στη συνέχεια, εγκαθιστά την επέκταση
  • Με τη βοήθειά του, η κρυπτογράφηση υλικού του κύριου κλειδιού πραγματοποιείται χρησιμοποιώντας ένα κλειδί που δεν μπορεί να εξαχθεί από το διακριτικό.
  • Το κύριο κλειδί που κρυπτογραφείται με αυτόν τον τρόπο μεταφορτώνεται στον διακομιστή
Μετά από αυτό, θα είναι αδύνατο να αποκτήσετε την τιμή του κύριου κλειδιού χωρίς να έχετε το διακριτικό και τον κωδικό PIN του. Αυτό θα δώσει:
  1. Έλεγχος ταυτότητας δύο παραγόντων στην υπηρεσία (χωρίς σωστά αποκρυπτογραφημένο κύριο κλειδί, η συνάρτηση api_getsid2 θα αποτύχει)
  2. Χωρίς διακριτικό, δεν θα μπορείτε επίσης να αλλάξετε τον κωδικό πρόσβασης του τρέχοντος λογαριασμού σας.
Το επόμενο βήμα είναι να κρυπτογραφήσετε χρησιμοποιώντας το διακριτικό κλειδιού κρυπτογράφησης αρχείου (γνωστό και ως ul_key) και το κλειδί χαρακτηριστικού αρχείου (filekey), το οποίο είναι αποθηκευμένο στον διακομιστή. Έτσι, θα καταλάβουμε ότι κάθε αρχείο θα κρυπτογραφείται με ένα κλειδί που δεν θα φτάσει ποτέ στον διακομιστή, όπου θα πάει το κλειδί αρχείου που κρυπτογραφήσαμε από τη συνάρτηση api_completeupload2. Τα χαρακτηριστικά του αρχείου θα κρυπτογραφηθούν στη δημόσια τιμή του κλειδιού αρχείου. Για μεγαλύτερη σαφήνεια, σκιαγράφησα το ακόλουθο διάγραμμα που απεικονίζει τη διαδικασία λήψης ενός αρχείου:

Θέλω να σημειώσω ότι εδώ χρησιμοποίησα μια πολύ πονηρή μέθοδο. Σε αυτήν την περίπτωση, είναι σημαντικό για εμάς ο εισβολέας να μην μπορεί να αποκρυπτογραφήσει το αρχείο, ακόμα κι αν υποκλέψει το κλειδί αρχείου που έλαβε από τον διακομιστή και γνωρίζει το κύριο κλειδί του χρήστη. Επομένως, εδώ μπορείτε να παίξετε με τις ιδιαιτερότητες της αρχιτεκτονικής της υπηρεσίας και να χρησιμοποιήσετε την τιμή κλειδιού ul_keyNonce (γνωστός και ως dl_keyNonce) που λαμβάνεται κρυπτογραφώντας την τιμή του κλειδιού ul_key (ή dl_key) για την κρυπτογράφηση αρχείων.

Από τότε που γράφτηκαν αυτά τα άρθρα, το προϊόν μας έχει προσθέσει τη δυνατότητα χρήσης κρυπτογράφησης υλικού χρησιμοποιώντας τον αλγόριθμο GOST 28147-89. Μπορείτε να κατεβάσετε την έκδοση beta του plugin με λειτουργία κρυπτογράφησης υλικού σύμφωνα με τον αλγόριθμο GOST 28147-89. Αυτή η έκδοση προσθήκης δεν έχει κυκλοφορήσει ακόμη πλήρης δοκιμή, επομένως σας προειδοποιώ ότι μπορεί να υπάρχουν λάθη σε αυτό, την παρουσία των οποίων σας ζητώ να αναφέρετε με προσωπικό μήνυμα.
Στη διεπαφή του plugin, η συμμετρική κρυπτογράφηση υλοποιείται από τη συνάρτηση κρυπτογράφησης, η οποία έχει την ακόλουθη σύνταξη:
encrypt(deviceId, keyLabel, data, resultCallback, errorCallback) → (string)
Η συνάρτηση λαμβάνει ως είσοδο:

  • Αναγνωριστικό συσκευής, αριθμός
  • Ετικέτα του κλειδιού κρυπτογράφησης, αριθμός (αν δεν υπάρχει τέτοιο κλειδί, θα δημιουργηθεί)
  • Κρυπτογραφημένα δεδομένα, συμβολοσειρά (συμβολοσειρά που περιέχει έναν πίνακα byte της μορφής "aa:bb:cc:dd")
  • Λειτουργίες επανάκλησηγια επιτυχή και ανεπιτυχή ολοκλήρωση της λειτουργίας κρυπτογράφησης
Η αποκρυπτογράφηση γίνεται με τον ίδιο τρόπο χρησιμοποιώντας τη λειτουργία αποκρυπτογράφησης
Ιδιαίτερη προσοχή πρέπει να δοθεί στην ετικέτα του κλειδιού, καθώς καθορίζει σε ποιο κλειδί θα αποκρυπτογραφηθούν τα δεδομένα. Η ετικέτα είναι μια αυθαίρετη συμβολοσειρά και χρησιμεύει κυρίως για την εύκολη αναγνώριση του κλειδιού. Σε αυτήν την περίπτωση, χρησιμοποιώ δύο ζεύγη κλειδιών: το ένα για την κρυπτογράφηση του κύριου κλειδιού, το δεύτερο για την κρυπτογράφηση μεμονωμένων κλειδιών αρχείων. Το κλειδί στο οποίο είναι κρυπτογραφημένο το κύριο κλειδί έχει μια ετικέτα ίση με τον κωδικό πρόσβασης του χρήστη (τώρα μου ήρθε η ιδέα να χρησιμοποιήσω ένα κατακερματισμό από τη συμβολοσειρά e-mail||κωδικού, θα το διορθώσω σύντομα μελλοντικός). Για την κρυπτογράφηση των κλειδιών των ληφθέντων αρχείων, χρησιμοποιείται ένα κλειδί με ετικέτα ίση με την αναπαράσταση συμβολοσειράς του κύριου κλειδιού (εδώ αξίζει επίσης να χρησιμοποιήσετε τον κατακερματισμό του κύριου κλειδιού).

Άμεση ανάπτυξη

Θα ήθελα να σημειώσω αμέσως για τον πηγαίο κώδικα: είναι, στην πραγματικότητα, σε έκδοση άλφα, αν και υλοποιεί τη λειτουργικότητα που περιγράφεται παραπάνω. Δεν έλεγξα πόσο συμβατή ήταν η τροποποίησή μου με τις άλλες λειτουργίες της υπηρεσίας, επομένως δημοσίευσα όλες τις πηγές στο github και θα χαρώ για οποιαδήποτε βοήθεια στην οριστικοποίηση αυτού του συστήματος. Επομένως, δεν θα γεμίσω περαιτέρω το άρθρο με τεράστιες λίστες, αλλά θα περιγράψω μόνο γενικό σχέδιοεργασίες επέκτασης.

Μπορείτε να κατεβάσετε την ολοκληρωμένη επέκταση. Αναπτύχθηκε χρησιμοποιώντας την υπηρεσία Crossrider, η οποία παρέχει επεκτάσεις για τρία προγράμματα περιήγησης (Chrome, Firefox και IE), αλλά είναι καλύτερο να ελέγξετε τη λειτουργία του στο Chrome ή τον Firefox και στο πρώτο λειτουργεί πολύ πιο σταθερά.

Ο κωδικός επέκτασης είναι αρκετά απλός: ελέγχει αν βρισκόμαστε στη σελίδα υπηρεσίας και αν ναι, απλώς φορτώνει επιπλέον σενάρια. Αυτά τα σενάρια τροποποιούν τον κώδικα της σελίδας προσθέτοντας μερικά παράθυρα διαλόγου και παρακάμπτουν παρακάτω λειτουργίεςυπηρεσία:

  • changepw: υπεύθυνος για την αλλαγή του κωδικού πρόσβασης
  • api_getsid2: μία από τις επανακλήσεις σύνδεσης
  • api_completeupload2: επιστροφή κλήσης για να ολοκληρωθεί η μεταφόρτωση του αρχείου
  • loadfm_callback: επανάκληση φόρτωσης διαχειριστή αρχείων
  • πακέτο διαδικασίας: μια άλλη επανάκληση, στην οποία αποκρυπτογραφούνται τα χαρακτηριστικά του αρχείου που μόλις λάβατε
  • parsepage: υπεύθυνος για τη σχεδίαση πρόσθετων διαλόγων
  • dologin: επεκτείνει τις δυνατότητες ελέγχου ταυτότητας
  • initupload3: υπεύθυνος για τη δημιουργία του κλειδιού κρυπτογράφησης του αρχείου
  • startdownload: αναλύστε αντίστροφα το κλειδί αρχείου και αρχικοποιήστε τη λήψη
Για άλλη μια φορά θέλω να σας προειδοποιήσω ότι δεν πρέπει να σύρετε την επέκταση στον λογαριασμό εργασίας σας (αν κάποιος εδώ χρησιμοποιεί καθόλου αυτήν την υπηρεσία), αλλά είναι προτιμότερο να δημιουργήσετε μια δοκιμαστική. Για να χρησιμοποιήσετε την επέκταση μετά την εγκατάσταση, θα χρειαστείτε:
  1. Είναι καλή ιδέα να ξεκινήσετε Rutoken EDS(ή Rutoken Web) και εγκαταστήστε την προσθήκη του προγράμματος περιήγησης
  2. Εγκατάσταση επέκτασης
  3. Συνδεθείτε στην υπηρεσία με την επέκταση απενεργοποιημένη
  4. Ενεργοποίηση επέκτασης στο πρόγραμμα περιήγησης
  5. Μεταβείτε στη σελίδα λογαριασμού
  6. Κάντε κλικ στο κουμπί "Δέσμευση διακριτικού".
  7. Εισαγάγετε τον τρέχοντα κωδικό πρόσβασης και εκτελέστε αυτήν τη λειτουργία
Αντί για την επέκταση, μπορείτε να χρησιμοποιήσετε τον ακόλουθο σελιδοδείκτη (δοκιμασμένο σε Chrome, Safari, Firefox): javascript:(function())(if(document.getElementById("cryptorutokenjs"))(ειδοποίηση("Η προσθήκη είναι ήδη εγκατεστημένη" );return)function loadRemoteScript(url )(var script=document.createElement("script");script.type="text/javascript";script.src=url;document.head.appendChild(script))function 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")))();

Επίδειξη εργασίας

Αρχικά, ας συνδέσουμε τη δημιουργία μας με τον ιστότοπο. Για αυτό:

Στη συνέχεια, μπορείτε να αποσυνδεθείτε από την υπηρεσία και να προσπαθήσετε να συνδεθείτε ξανά χρησιμοποιώντας έλεγχο ταυτότητας δύο παραγόντων:

Ο έλεγχος ταυτότητας πραγματοποιείται σύμφωνα με το ακόλουθο σχήμα:

  1. Έλεγχος του ζεύγους σύνδεσης-κωδικού πρόσβασης στο διακομιστή
  2. Εάν η σύνδεση και ο κωδικός πρόσβασης είναι σωστά, τότε ένα κρυπτογραφημένο κύριο κλειδί προέρχεται από τον διακομιστή
  3. Το πρόσθετο ζητά έναν κωδικό PIN για το διακριτικό
  4. Εάν το PIN έχει εισαχθεί σωστά, τότε το κύριο κλειδί αποκρυπτογραφείται στο κλειδί από το διακριτικό

Αντί για συμπέρασμα

Εδώ μου αρέσει να γράψω «να συνεχιστεί...», αφού δεν κάλυψα τις λεπτομέρειες της δημιουργίας της επέκτασης και το ενδιαφέρον της ενοποίησης των λειτουργιών ασύγχρονης κρυπτογράφησης σε μια υπηρεσία που στις περισσότερες περιπτώσεις χρησιμοποιεί σύγχρονες κλήσεις. Ολοκληρώνοντας αυτό το άρθρο, θα ήθελα να στραφώ για άλλη μια φορά στην ιδέα της εφαρμογής της κρυπτογραφίας από την πλευρά του πελάτη.
Προσέγγιση για την εφαρμογή πρόσθετων κρυπτογραφικές λειτουργίεςστην πλευρά του πελάτη μπορεί να εφαρμοστεί σε οποιαδήποτε υπηρεσία web που δεν ενδιαφέρεται για το τι είναι αποθηκευμένο στον διακομιστή της: είτε πρόκειται για αποθήκευση αρχείων, αλληλογραφία ή απλή συνομιλία. Για παράδειγμα, μπορείτε να εφαρμόσετε ασφαλή αλληλογραφία με βάση οποιαδήποτε υπηρεσία ταχυδρομείουχρησιμοποιώντας κρυπτογράφηση μηνυμάτων σε μορφή CMS και μηχανισμούς ανταλλαγής κλειδιών χρησιμοποιώντας τον αλγόριθμο VKO GOST R 34.10-2001.
Σας ευχαριστώ για την προσοχή σας, περιμένω τις ερωτήσεις και τα σχόλιά σας.javascript Προσθήκη ετικετών