Tải xuống tập tin Mega. Lưu trữ đám mây MEGA

Mega cloud là một kho lưu trữ khá phổ biến dành cho tập tin khác nhau, hình ảnh, video và tài liệu. Mỗi người dùng tạo tài khoản trên trang web được cung cấp 50 GB không gian trông trong kho hoàn toàn miễn phí. Trong tương lai, khối lượng này có thể tăng lên phí bổ sung, ví dụ: bạn có thể mua 4 TB với giá 30 USD mỗi tháng.

Bây giờ tôi muốn đánh giá về Mega cloud và nói về những ưu điểm chính của nó. Nhiều người dùng gọi bộ lưu trữ đám mây này là thuận lợi nhất về giá cả và dung lượng trống sẵn có. Họ cũng thường tổ chức nhiều chương trình khuyến mãi khác nhau, chẳng hạn như bạn có thể mua gói trong một năm và nhận được hai tháng hoàn toàn miễn phí, điều này sẽ giúp bạn tiết kiệm được một khoản khá đáng kể.

Ưu điểm chính

Bây giờ tôi sẽ nói với độc giả của mình về những ưu điểm chính của lưu trữ Mega:

  • Dịch vụ này đa ngôn ngữ nên người dùng sẽ không gặp bất kỳ vấn đề gì liên quan đến sự thiếu hiểu biết ngoại ngữ. Trước khi bắt đầu làm việc với bộ lưu trữ đám mây, bạn có thể chọn ngôn ngữ mong muốn;
  • dung lượng đĩa đủ lớn, được cung cấp hoàn toàn miễn phí ngay sau khi đăng ký;
  • Bạn có thể tải lên các tệp có kích thước và tiện ích mở rộng bất kỳ vì không có hạn chế nào đối với việc này;
  • chuyển tập tin cho bạn bè của bạn bằng cách sử dụng quyền truy cập được mã hóa. Mã hóa xảy ra trong trình duyệt bằng thuật toán đặc biệt, do đó người dùng được bảo vệ một cách đáng tin cậy khỏi bị truy cập trái phép vào các tệp cá nhân.

Sự đăng ký

Để bắt đầu sử dụng bộ nhớ đám mây Mega, bạn cần đăng ký trên trang web chính thức. Điều này đòi hỏi:

Quan trọng! Khi điền vào biểu mẫu, bạn có thể cung cấp bất kỳ thông tin nào. Tuy nhiên, địa chỉ email phải là địa chỉ thật, nếu không bạn sẽ không thể bắt đầu sử dụng bộ nhớ đám mây.

Bắt đầu công việc

Sau khi đăng ký xong, Mega lưu trữ tập tin sẵn sàng để đi. Để bắt đầu bạn cần:

  1. Chọn dung lượng trống, ví dụ: 50 GB, được cung cấp miễn phí và nhấp vào nút “Hoàn tất”.
  2. Nhấp vào nút “Tải tệp lên” và chọn tệp được yêu cầu từ máy tính của bạn để tải tệp lên đám mây.

Bạn có thể xem tất cả các thư mục, ảnh và tài liệu sẽ được tải lên bộ lưu trữ từ bất kỳ máy tính hoặc thiết bị nào khác.

Cổng vào

Để nhập bộ nhớ tệp Mega từ máy tính của bạn, bạn sẽ cần:


Với điều này, tôi muốn kết thúc bài viết của mình về Mega, những bài đánh giá mà bạn có thể tìm thấy trên Internet. Riêng tôi muốn nói thêm rằng những người sử dụng trình duyệt có thể cài đặt một tiện ích mở rộng MEGA đặc biệt, tiện ích mở rộng này có thể tăng đáng kể tốc độ tải tệp lên đám mây. Ngoài ra, sau khi cài đặt tiện ích bổ sung, bạn có thể tải xuống hàng loạt tệp với số lượng không giới hạn. Không cần cài đặt bất cứ ứng dụng nào thì tốt nhất nên sử dụng trình duyệt.

Mega.co- bộ nhớ đám mây cung cấp cho người dùng 50 GB miễn phí không gian đĩađể lưu trữ dữ liệu. Lời đề nghị này nghe có vẻ hấp dẫn phải không?

Đối với nhiều người, sự gia tăng đáng kể như vậy trong ổ cứng không ngăn chặn. Tất cả dữ liệu được lưu trữ trong bộ lưu trữ đám mây Mega.co được lưu trữ ở dạng mã hóa.

Sau khi dịch vụ lưu trữ tệp lớn nhất Megaupload bị đóng cửa theo quyết định của chính quyền Hoa Kỳ vào năm 2012, người sáng lập Kim Dotcom đã tung ra dịch vụ đám mây mới để lưu trữ tệp trên Internet.

Người sáng lập Megaupload đã trốn thoát khỏi sự truy tố của các quan chức thực thi pháp luật Hoa Kỳ ở New Zealand. Đúng một năm sau khi dịch vụ chia sẻ tệp phổ biến được hơn 160 triệu người dùng trên khắp thế giới sử dụng đóng cửa, nó đã ra mắt dự án mới- Lưu trữ tập tin đám mây lớn.

Ngày nay, bạn có thể tìm thấy khá nhiều kho lưu trữ tệp tương tự trên Internet, chẳng hạn như Google Drive, Microsoft SkyDrive, Yandex.Disk, Dropbox và các kho lưu trữ khác.

Trong hình ảnh này, để so sánh, bạn có thể thấy lượng không gian trống được cung cấp bởi một số dịch vụ điện toán đám mây.

Sự khác biệt chính giữa lưu trữ đám mây Mega.co và các tài nguyên tương tự là Hiện nay lưu trữ đám mây cung cấp cho người dùng đã đăng ký 50 GB dung lượng ổ đĩa miễn phí để lưu trữ tệp của họ. Trong Mega co nz không có giới hạn về kích thước tệp được tải lên bộ lưu trữ.

Tên dịch vụ MEGA là viết tắt của “Truy cập toàn cầu được mã hóa MEGA”.

Lưu trữ đám mây cho phép bạn tải tệp lên máy chủ, lưu trữ chúng ở đó và cũng có thể trao đổi tệp với những người dùng khác. Trong quá trình tải xuống, các tập tin được mã hóa trong trình duyệt bằng cách sử dụng thuật toán AES, đảm bảo sự bảo vệ của họ khỏi sự truy cập trái phép.

Về mặt vật lý, các tệp được lưu trữ trong bộ lưu trữ đám mây ở dạng được mã hóa; quản trị dịch vụ đám mây không có quyền truy cập vào chúng.

Chia sẻ file Dịch vụ lớn có hỗ trợ cho nhiều ngôn ngữ, bao gồm cả tiếng Nga.

Để bắt đầu sử dụng bộ lưu trữ đám mây, bạn cần đăng ký trên đó bằng liên kết Mega.co.nz.

Đăng ký tại Mega.co

Sau khi đăng nhập vào trang web https://mega.co.nz/ thông qua kết nối an toàn, trên trang chính của dịch vụ ở bảng trên cùng, bạn cần chọn ngôn ngữ tiếng Nga để biết thêm sử dụng thuận tiện cơ sở lưu trữ.

Sau đó, bạn cần nhấp vào nút “Đăng ký” trên bảng trên cùng của cửa sổ dịch vụ. Bạn nên nhập dữ liệu của mình vào các trường thích hợp (không nhất thiết phải là dữ liệu thật, một số thông tin đăng nhập sẽ làm được), nhập địa chỉ của bạn E-mail(thực) rồi chọn mật khẩu để đăng nhập vào bộ lưu trữ tệp trên đám mây.

Sau khi đánh dấu vào ô bên cạnh mục thể hiện sự đồng ý của bạn với việc cung cấp dịch vụ của dịch vụ này, bạn sẽ cần nhấp vào nút “Đăng ký” để hoàn tất thủ tục đăng ký trong bộ lưu trữ đám mây Mega co.

Sau này, bạn sẽ cần đăng nhập vào tài khoản email được chỉ định trong quá trình đăng ký và mở thư từ Tim MEGA. rồi theo liên kết để hoàn tất quá trình đăng ký kho lưu trữ. Bạn sẽ cần nhập dữ liệu được chỉ định trong quá trình đăng ký và đăng nhập vào bộ lưu trữ tệp trên đám mây.

Cách sử dụng Mega.co

Sau khi khởi chạy bộ lưu trữ, cửa sổ menu “Trình quản lý tệp” sẽ mở ra trước mặt bạn. Ở trên cùng có một thanh menu và bên dưới là khu vực để làm việc với các thư mục và tệp đã tải xuống. Bên phải là cột quản lý và hiển thị cấu trúc lưu trữ.

Người dùng trình duyệt Mozilla Firefox Bạn nên cài đặt tiện ích bổ sung MEGA EXTENSION. Nhà phát triển khuyên nên sử dụng trình duyệt mà không cần cài đặt tiện ích bổ sung Google Chrome. Vì tôi có cái chính Trình duyệt Firefox, sau đó tôi đã cài đặt tiện ích mở rộng trình duyệt được đề xuất nhưng tôi không nhận thấy bất kỳ sự khác biệt nào trong hoạt động của bộ lưu trữ đám mây.

Sự khác biệt trong việc sử dụng dịch vụ cụ thể trong trình duyệt Google Chrome là, không giống như các trình duyệt khác, sử dụng Google Chrome, bạn không chỉ có thể tải tệp mà còn có thể tải toàn bộ thư mục lên bộ lưu trữ đám mây Mega.co.

Đây là giao diện của bảng điều khiển lưu trữ trong trình duyệt Mozilla Firefox. Có nút “Tải xuống mới” trên bảng điều khiển. Bằng cách sử dụng nút “Tải lên mới”, các tệp sẽ được tải lên bộ lưu trữ đám mây.

Trong trình duyệt Google Chrome, có hai nút trên bảng điều khiển “Tải tệp lên” và “Thư mục tải lên”. Sử dụng nút “Tải tệp lên”, bạn có thể tải tệp lên bộ lưu trữ đám mây từ máy tính của mình. Sau khi nhấp vào nút "Tải lên thư mục", một cửa sổ Explorer sẽ mở ra, trong đó bạn cần chọn thư mục để tải lên bộ lưu trữ tệp.

Để giải quyết vấn đề này, người dùng các trình duyệt khác có thể tạo một thư mục trong Mega có cùng tên với thư mục trên máy tính cần được tải lên bộ lưu trữ. Sau đó, bạn cần mở thư mục trên máy tính của mình và tải nội dung của nó lên thư mục mới tạo trong bộ lưu trữ tệp. Bằng cách này, thư mục mong muốn sẽ được tải hoàn toàn vào Mega.

Trong thanh menu Tài khoản của tôi, bạn có thể xem trạng thái của mình, dung lượng lưu trữ đã sử dụng cũng như định cấu hình truyền dữ liệu.

Tại đây bạn có thể thay đổi số lượng kết nối song song để tải xuống và số lượng kết nối song song để tải xuống. Nếu cần, bạn có thể áp đặt giới hạn về tốc độ tải xuống.

Sau khi nhấp vào nút menu "Thành viên Pro", bạn có thể chọn gói trả phíđể lưu trữ khối lượng tệp lớn hơn từ 500 GB đến 4 TB.

Nếu nhấp vào nút menu “Menu”, bạn có thể đọc thêm về các quy tắc sử dụng bộ nhớ đám mây Mega.co.

Bạn có thể tạo một thư mục mới bằng cách nhấp vào nút “Thư mục mới”. Bạn có thể tải tệp lên thư mục mới tạo và cũng có thể tạo các thư mục mới khác trong thư mục này. Sau khi click vào thư mục click chuột phải chuột, trong menu ngữ cảnh bạn có thể chọn các lệnh thích hợp cho hành động hơn nữa với một thư mục.

Để tải tệp lên kho lưu trữ tệp Mega.co, bạn cần nhấp vào nút “Tải tệp lên” trong trình duyệt Google Chrome và nhấp vào nút “Tải xuống mới” trong các trình duyệt khác. Trong cửa sổ Explorer mở ra, hãy chọn một hoặc nhiều tệp để tải lên bộ lưu trữ đám mây.

Tốc độ tải file là không giới hạn trừ khi bạn giới hạn trong cài đặt dịch vụ và nó phụ thuộc vào tốc độ kết nối Internet của máy tính. Bạn có thể di chuyển các tệp đã tải lên bộ lưu trữ đám mây vào các thư mục, đổi tên, chia sẻ, lấy liên kết đến chúng, sao chép hoặc xóa chúng.

Bạn có thể theo dõi quá trình upload và download file ở cuối cửa sổ dịch vụ.

Làm việc với các tệp trong MEGA diễn ra thông qua giao diện web. Ứng dụng khách cho máy tính và các thiết bị khác vẫn chưa được phát hành.

Chia sẻ thư mục trong Mega.co

Các thư mục được lưu trữ trong dịch vụ đám mây Mega nz có thể được chia sẻ. Để thực hiện việc này, nhấp chuột phải vào thư mục và nhấp vào “Chia sẻ” trong menu ngữ cảnh. Thao tác này sẽ mở cửa sổ Chia sẻ, nơi bạn có thể cấp cho người dùng mới quyền chia sẻ thư mục này.

Bạn sẽ cần nhập địa chỉ email của người dùng và chọn quyền cho người dùng mới để chia sẻ thư mục được lưu trữ trên bộ nhớ đám mây của bạn. Bạn có thể cấp cho người dùng khác các quyền sau: “Chỉ đọc”, “Đọc và viết”, “Kiểm soát hoàn toàn”.

TRÊN địa chỉ email Người dùng sẽ nhận được một lá thư có liên kết mà anh ta cần phải theo dõi để có quyền truy cập vào thư mục tương ứng nằm trong kho lưu trữ tệp Mega cloud. Các thư mục được chia sẻ hơi khác nhau về vẻ bề ngoài từ các thư mục lưu trữ đám mây khác.

Cách lấy link Mega. đồng

Để cung cấp cho người dùng khác liên kết tải xuống tệp nằm trong bộ nhớ đám mây Dữ liệu lớn, bạn cần nhấp chuột phải vào tệp và chọn “Nhận liên kết” trong menu ngữ cảnh.

Trong trường hợp khác, chỉ người dùng đã nhận được liên kết tới tệp mới có thể tải xuống tệp được mã hóa. mã đặc biệt bảo vệ. Nếu không có mã bảo mật, sẽ không thể tải xuống tệp từ liên kết loại này.

Trong hình ảnh này, hai mục “Liên kết tệp” và “Khóa tệp” được kích hoạt. Trong trường hợp này, khi bạn nhấp vào liên kết loại này, bất kỳ người dùng nào trên Internet có quyền truy cập vào liên kết này đều có thể tải xuống tệp này.

Người dùng có thể lưu tập tin vào lưu trữ riêng Mega.co nếu bạn nhấp vào nút "Nhập". Trong trường hợp này, tệp sẽ được nhập từ bộ lưu trữ này sang bộ lưu trữ khác mà không cần tải tệp xuống máy tính của bạn. Có thể nhập tệp nếu người dùng có bộ nhớ riêng trên dịch vụ Mega.co.

Sau khi nhấp vào liên kết, trong cửa sổ mới, người dùng sẽ phải nhập khóa bảo mật nhận được từ bạn để tải tệp xuống hoặc lưu vào bộ lưu trữ tệp của họ. Sau khi nhập khóa, người dùng sẽ cần nhấp vào nút “Tải xuống” và kích hoạt tùy chọn “Tôi đồng ý với các điều khoản dịch vụ của MEGA”.

Để nhận được khóa bảo mật cho tệp đã tải xuống, sau khi sao chép liên kết đến tệp, bạn cần kích hoạt nút “Khóa tệp”; các nút khác phải không hoạt động tại thời điểm này. Bạn sẽ cần cung cấp khóa tệp cho người dùng khác cùng với liên kết để tải xuống tệp.

Sau khi nhấp vào liên kết nhận được từ bạn, trong cửa sổ dịch vụ đám mây Mega.co, người dùng sẽ phải nhập khóa bảo mật nhận được từ bạn. Sau khi nhập khóa tệp, bạn sẽ cần phải đồng ý với các điều khoản dịch vụ của MEGA và sau đó nhấp vào nút "Tải xuống".

Khi bạn nhấp vào nút "Nhập", tệp sẽ được lưu trong bộ lưu trữ đám mây của người dùng, nếu người dùng này có tài khoản riêng trong bộ lưu trữ đám mây Mega co.

Tiếp theo, cửa sổ "Hoàn tất tải xuống" sẽ mở ra, trong đó người dùng được nhắc lưu tệp theo cách thủ công để hoàn tất quá trình tải xuống. Để thực hiện việc này, trong cửa sổ "Hoàn tất tải xuống", hãy nhấp vào nút "Lưu tệp" và trong cửa sổ Explorer mở ra, bạn cần chọn vị trí lưu tệp đã tải xuống, đặt tên cho tệp, sau đó nhấp vào trên nút “Lưu”.

Sau đó, tập tin sẽ được lưu trên máy tính của bạn.

Các mục khác “Tên tệp” và “Kích thước tệp” trong cửa sổ “Liên kết” không đặc biệt quan trọng đối với việc tải xuống tệp và chứa thông tin tham khảo về tệp đã tải xuống.

Vì các tệp được lưu trữ trên dịch vụ lưu trữ đám mây được mã hóa nên bạn sẽ không thể xem, phát hoặc nghe chúng khi chúng ở trong bộ lưu trữ đám mây. Vì loại bỏ hoàn toàn các tệp từ bộ lưu trữ đám mây sẽ cần được dọn sạch khỏi Thùng rác.

Lưu trữ đám mây Mega co cho phép bạn lưu trữ miễn phí dữ liệu với tổng dung lượng 50 GB trên máy chủ của nó. Các tệp được lưu trữ trong bộ lưu trữ dữ liệu đám mây ở dạng mã hóa và quan trọng nhất là tất cả không gian lưu trữ dữ liệu này đều được cung cấp miễn phí.

Sau khi ra mắt dịch vụ MEGA có phần tai tiếng, các cuộc thảo luận về tính bảo mật của nó bắt đầu sôi sục lên một chút rồi lắng xuống. Ngày nay, dịch vụ này có cuộc sống riêng của nó và thậm chí không ai phá vỡ nó. Vì lý do nào đó, thuật ngữ “Mã hóa do người dùng kiểm soát” (UCE hoặc Mật mã do người dùng kiểm soát), mà MEGA tự hào, đã bị bỏ qua trong tất cả các cuộc trò chuyện. Ý tôi khi nói "bỏ lỡ" là thực tế là chúng tôi chưa đề cập đến tất cả các khả năng mà một công cụ mã hóa chạy bằng JavaScript ở phía máy khách mang lại cho chúng tôi.

Tất nhiên, bản thân dịch vụ MEGA chỉ đơn giản có nghĩa là các khóa mã hóa không được lưu trữ trên máy chủ mà tất cả của họ mật mã được thực hiện trong ngữ cảnh của trình duyệt. Hơn nữa, sau khi ra mắt dịch vụ, đã có rất nhiều lời bàn tán về việc nó sử dụng các thuật toán mã hóa yếu và nhìn chung mọi thứ đều tệ và tất cả chúng ta sẽ chết, và các tập tin của chúng ta sẽ bị FSB đọc. Điều này đã cho tôi ý tưởng mở rộng khái niệm “UCE” và thực sự nắm quyền kiểm soát mật mã, cụ thể là thay thế hoặc bổ sung một số cơ chế bảo mật của dịch vụ.

Trong bài viết này, tôi sẽ chia nhỏ một số điều kỳ diệu xảy ra trong hai megabyte mã JavaScript MEGA và chỉ ra cách bạn có thể ghi đè một số phương pháp để ngừng lo lắng và yêu thích mật mã. Kết quả chúng ta sẽ nhận được dịch vụ lưu trữ file đám mây với xác thực hai yếu tố và mã hóa phần cứng là rất quan trọng Thông tin quan trọng.

MEGA, UCE và tất cả, tất cả, tất cả

Vì vậy, hãy bắt đầu bằng cách xem xét các công nghệ xây dựng phần máy khách của dịch vụ, cách người dùng mới được đăng ký, người dùng đã đăng ký được xác thực, mật khẩu được thay đổi và các tệp được tải lên/tải xuống.

JavaScript

Như bạn có thể đã biết, toàn bộ phía máy khách của dịch vụ đều dựa trên JavaScript, trong mã trang chủ Tổng kiểm tra SHA-256 được chỉ định cho tất cả các tập lệnh và trang được trình duyệt tải. Quá trình tải xuống diễn ra như sau: tổng kiểm tra được kiểm tra cho tất cả các tệp, sau đó chúng được kết hợp thành một BLOB, được cung cấp cho trình duyệt. Mã nguồn của tệp js cho thấy chúng được viết người khác và đôi khi có những viên ngọc quý buồn cười, chẳng hạn như hậu quả của việc sao chép-dán, những điều kiện vô nghĩa và đơn giản là những biến số kỳ lạ.

Trong quá trình học tập mã nguồn Tôi cũng nhận thấy rằng trang web đang được cập nhật khá tích cực, các nhà phát triển đang sửa các lỗi nhỏ và tối ưu hóa mã đã viết, đó là một tin tốt. Bản thân mã được viết rất đơn giản và không cần tạo nguyên mẫu không cần thiết: trang web sử dụng ba trăm biến toàn cục và hơn 8.000 hàm. Rất dễ hiểu cấu trúc trang web và thay đổi mã của nó.

Trong số các framework của bên thứ ba, MEGA sử dụng jQuery (bạn không thể sống thiếu nó bây giờ), Ext JS và SJCL. Cái sau thực hiện lõi mật mã với mã hóa AES. SJCL cũng cung cấp một định dạng thú vị để lưu trữ khóa và các mảng byte khác: thay vì chỉ lưu trữ byte trong một mảng thông thường, chúng được “nén” thành định dạng gọi là a32. Bản chất của nó là nội dung của bất kỳ mảng byte nào được đóng gói thành các số 32 bit và được ghi thành một mảng có độ dài ngắn hơn. Nghĩa là, cứ 4 byte của mảng được chuyển đổi thành một int tầm thường. Mã trang web chứa các hàm thực hiện tất cả các loại biến đổi trên một tập hợp ngẫu hứng (mảng a32, chuỗi, chuỗi base64).

Thông tin mấu chốt

Trước khi chuyển sang mô tả quy trình đăng ký và xác thực, cần xem xét thông tin được mã hóa, cụ thể là:
  • Chìa khóa chính tài khoản , được tạo ngẫu nhiên tại thời điểm đăng ký người dùng và có độ dài 128 bit. Và về nguyên tắc, độ dài của tất cả các khóa được sử dụng để mã hóa đối xứng, bằng 128 bit.
  • Khóa riêng RSA: Được tạo tại thời điểm đăng ký dựa trên chuyển động của chuột và đầu vào bàn phím. Trong bài viết này, tôi sẽ không tập trung vào mật mã bất đối xứng, vì nó được sử dụng để chia sẻ các tệp đã tải xuống và nhiệm vụ của tôi là thay đổi quy trình xác thực và mã hóa dữ liệu người dùng.
  • Các khóa tệp riêng lẻ và chính các tệp đó, đã tải lên dịch vụ. Các khóa được tạo ngẫu nhiên khi một tệp được tải xuống; chính khóa đó được sử dụng để mã hóa dữ liệu tệp và một khóa được tạo dựa trên khóa riêng của tệp và khóa đó. tổng kiểm tra.

Gần mã hơn

Bây giờ tôi đề xuất phân tích quá trình đăng ký và xác thực, xem cách tạo khóa chính và cách mã hóa.
Tôi đã cố gắng mô tả những quá trình này trên giấy và để giúp bạn hiểu về bản chất của sự điên rồ, tôi thậm chí còn chụp bức ảnh này:

Đăng Ký Người Dùng Mới

Bản thân quá trình đăng ký khá khó hiểu; sau khi người dùng điền vào bảng câu hỏi, rất nhiều hàm sẽ được gọi, nhưng chúng tôi quan tâm đến hàm api_createuser:

// tạo một người dùng mới và khóa chính của anh ta function api_createuser(ctx, Invitationcode, Invitationname, uh) ( var i; var ssc = Array(4); // phiên tự thử thách, sẽ được sử dụng để xác minh mật khẩu 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(); // tạo khóa chính ngẫu nhiên u_k for (i = 4; i--;) ssc[i] = rand(0x100000000); // tạo chuỗi xác thực ngẫu nhiên if (d) console.log("api_createuser - masterkey: " + u_k + " passkey: " + ctx.passwordkey); // mã hóa khóa chính trên mật khẩu hiện tại và gửi nó đến máy chủ (trường k) // trường ts là nối của ssc với giá trị được mã hóa req = ( a: "lên", 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(sjcl.cipher.aes(u_k) mới , ssc))) ); if (mã mời) ( req.uh = uh; req.ic = mã mời; req.name = tên người mời; ) if (d) console.log("Lưu khóa: " + req.k); api_req(, ctx); )
Trong chức năng này, chúng tôi quan tâm đến những điều sau đây:

  • u_k chính là khóa chính, một biến toàn cục. Một mảng gồm 4 số 32 bit, được tạo bởi hàm api_create_uk
  • ssc chỉ đơn giản là một mảng ngẫu nhiên được mã hóa bằng khóa chính, được nối với giá trị công khai của nó và gửi đến máy chủ. Sau này nó sẽ được sử dụng để kiểm tra tính chính xác của khóa chính trong quá trình xác thực
  • sjcl - thư viện mật mã triển khai AES
  • rand() - triển khai cục bộ trình tạo số giả ngẫu nhiên dựa trên RC4
  • Encrypt_key() là chức năng nền tảng của mật mã đối xứng của dịch vụ. Chấp nhận một đối tượng sjcl được khởi tạo bằng một khóa và một mảng cần được mã hóa. Mã chức năng được đưa ra dưới đây và hy vọng không cần giải thích.
// mã hóa/giải mã 4 hoặc 8 phần tử mảng số nguyên 32-bit hàm 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; }
Kết quả là, sau khi đăng ký, thông tin sau sẽ được gửi đến máy chủ:
  • Khóa chính được mã hóa bằng khóa lấy từ mật khẩu tài khoản
  • Chuỗi như ssc||encrypt_AES-128(u_k, ssc)

Đăng nhập người dùng

Bây giờ bạn có thể chuyển sang quá trình xác thực một cách suôn sẻ. Tóm lại, nó được thực hiện như thế này:
  1. Người dùng nhập thông tin đăng nhập/mật khẩu
  2. Nếu giai đoạn xác thực đầu tiên được thông qua, thì khóa chính được mã hóa và chuỗi xác thực (ssc) được tạo trong quá trình đăng ký sẽ được nhận từ máy chủ
  3. Khóa chính được giải mã bằng mật khẩu do người dùng nhập
  4. Trình tự xác thực được giải mã trên khóa chính và được so sánh với giá trị mở của nó - từ đó kiểm tra tính chính xác của khóa chính và mật khẩu.
Hàm gọi lại api_getsid2 chịu trách nhiệm cho tất cả những điều trên:

// giải mã master key sau khi người dùng đăng nhập function api_getsid2(res, ctx) ( var t, k; var r = false; if (typeof res == "object") ( // khởi tạo sjcl-aes bằng tài khoản hiện tại mật khẩu var aes = new sjcl.cipher.aes(ctx.passwordkey); // nếu chúng tôi nhận được khóa chính trong phản hồi của máy chủ... if (typeof res.k == "string") ( k = base64_to_a32(res. k); if (k.length == 4) ( // ... sau đó giải mã nó k = decrypt_key(aes, k); // và khởi tạo lại sjcl-aes bằng khóa chính aes = new sjcl.cipher. aes( k); // nếu chúng tôi nhận được ssc từ quá trình đăng ký if (typeof res.tsid == "string") ( t = base64urldecode(res.tsid); // mã hóa nửa đầu của chuỗi và so sánh nó với giá trị từ máy chủ // nếu chúng khớp - điều đó có nghĩa là tất cả thông tin đăng nhập và mật khẩu đều khớp và bạn có thể cho phép người dùng vào if (a32_to_str(encrypt_key(aes, str_to_a32(t.substr(0, 16)))) == t .substr(-16)) r = ) // được thảo luận bên dưới khóa riêng Các cặp RSA, chúng tôi chưa quan tâm đến vấn đề này nếu (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); // phân tách khóa riêng cho (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") bị hỏng; riêng tư = riêng tư.substr(l); ) // kiểm tra định dạng if (i == 4 && privk.length< 16) { // TODO: check remaining padding for added early wrong password detection likelihood r = ; } } } } } ctx.result(ctx, r); }
Là một phần thưởng cho việc đăng ký/xác thực, bạn có thể xem quy trình thay đổi mật khẩu.

// thay đổi mật khẩu người dùng function 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)), uh: stringhash(u_attr["email"].toLowerCase(), pw_aes) )], ctx);
Mã cho chức năng này rất dễ hiểu: chúng tôi mã hóa khóa chính bằng hai khóa lấy được từ mật khẩu cũ và mật khẩu mới, sau đó gửi các giá trị này đến máy chủ. Nếu mật khẩu hiện tại đúng, nó sẽ được thay thế bằng mật khẩu mới. Ở đây tôi muốn thu hút sự chú ý nhiều hơn đến hàm prepare_key_pw, hàm này đã ngầm hiện diện trong tất cả các hoạt động trước đó. Nhiệm vụ của nó là chuyển đổi mật khẩu chuỗi thành mảng a32, sau đó thực hiện thao tác dẫn xuất khóa như sau:

// chuyển đổi mảng mật khẩu do người dùng cung cấp hàm 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; }
Tính năng này đã gây ra rất nhiều chỉ trích vì nó dựa trên thuật toán cây nhà lá vườn. Trong khi viết bài viết này, những người tạo ra dịch vụ đã cố gắng thay đổi mã của nó một chút, nhưng tôi không nhận thấy bất kỳ thay đổi đáng kể nào. Bản chất của nó là mật khẩu được truyền đi được mã hóa 65536 lần bằng cách sử dụng khóa cố định để có được khóa không thể phân biệt được với khóa ngẫu nhiên. Tại sao những người tạo ra dịch vụ không sử dụng các thuật toán hiện có (ví dụ: PBKDF2) vẫn còn là một bí ẩn.

Tải lên và mã hóa tập tin

Tóm lại, toàn bộ quá trình này có thể được biểu diễn như thế này:

Tôi cảnh báo bạn, đi sâu vào bức tranh này lâu sẽ nguy hiểm cho não nên dưới đây tôi sẽ kể cho bạn nghe mọi chuyện diễn ra như thế nào.

Như tôi đã nói, khi tải, mỗi tệp sẽ tạo khóa mảng ngẫu nhiên gồm 6 số 32 bit. Bốn phần tử đầu tiên của mảng này được sử dụng để mã hóa nội dung của tệp và hai phần tử cuối cùng được sử dụng làm giá trị ban đầu của bộ đếm được sử dụng để tính tổng kiểm tra của tệp. Mảng này được lưu trữ trong biến toàn cục ul_key. Nội dung của nó được nhập vào chuỗi được tuần tự hóa JSON ul_KeyNonce.

Việc giải mã tự xảy ra với sử dụng Web Worker (nếu trình duyệt hỗ trợ công nghệ này) hoặc đơn giản là bên trong mã trang chính. Khi tệp đã sẵn sàng để gửi, hãy mã hóa các thuộc tính của nó (trên khoảnh khắc này thuộc tính chỉ có nghĩa là tên tệp) được tạo chìa khoá mới filekey dựa trên ul_key và tổng kiểm tra tệp. Khóa này sau đó được mã hóa bằng khóa chính và gửi đến máy chủ cùng với các thuộc tính của tệp. Các hàm initupload3 và api_completeupload2 chịu trách nhiệm cho tất cả những hành động này. Filekey được tạo trong hàm ul_chunkcomplete, bên dưới mình sẽ đưa ra một phần.

// bắt đầu tải file lên: tạo key riêng và khởi tạo cơ chế mã hóa function initupload3() ( // ... cut =) // tạo key riêng ngẫu nhiên cho file // ul_key được sử dụng trong mã trang, // ul_keyNonce được chuyển tới Web Worker và được sử dụng ở đó // để mã hóa tệp và tính tổng kiểm tra của nó ul_key = Array(6); for (i = 6; i--;) ul_key[i] = rand(0x100000000); ul_keyNonce = JSON.stringify(ul_key); ul_macs = ; // ... tiếp theo là xử lý hàng đợi tải xuống, không đáng quan tâm... // khởi tạo sjcl-aes cho một file dựa trên ul_key ul_aes = new sjcl.cipher.aes(); // ... // bắt đầu quá trình tải tập tin lên: // đọc nó từ đĩa, mã hóa và gửi onUploadStart(ul_queue_num); ul_dispatch_chain(); ) // tạo khóa để mã hóa thuộc tính tệp function ul_chunkcomplete(slot,pos,response) ( // ... var t = ; // ul_macs - một mảng có tổng kiểm tra tệp thu được bên trong worker for (p in ul_macs) t .push(p); // điền và sắp xếp một mảng tạm thời, nếu có ai biết tại sao, vui lòng giải thích 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 ( // mã hóa tên tệp tới khóa bắt nguồn từ ul_key và tổng kiểm tra // ctx.k == filekey a = ( n: ctx.n ); if (d) console.log(ctx.k); if (d) console.log(ea); // truyền các thuộc tính và khóa tập tin được mã hóa trên khóa chính var req = ( a: "p", t: ut, n: [( h: ctx.t, t: 0, a: ab_to_base64(ea), // thuộc tính k: a32_to_base64(encrypt_key(u_k_aes, ctx.k)), // == AES_encrypt(u_k, filekey) fa: ctx.fa )] ); đã được cung cấp: mã hóa tất cả các chia sẻ có liên quan var sn = fm_getsharenodes(ut); if (sn.length) ( req.cr = crypto_makecr(, sn, false); req.cr = ctx.t; ) ) api_req(, ctx. ctx);

Tải xuống và giải mã tập tin

Rõ ràng, các quy trình này chỉ đơn giản là đảo ngược quá trình mã hóa tệp. Điều duy nhất có thể quan tâm là lấy giá trị của khóa ul_key từ giá trị filekey được mã hóa đến từ máy chủ.

Tại thời điểm tệp được tải xuống, ngữ cảnh trình duyệt đã chứa một đối tượng lưu trữ khóa tệp được giải mã. Do đó, trước tiên nên xem xét quá trình xảy ra ngay sau khi xác thực người dùng, cụ thể là tải xuống trình quản lý tệp. Sau khi người dùng đã được phép sử dụng dịch vụ, đương nhiên anh ta muốn có quyền truy cập vào các tệp của mình (giả sử rằng anh ta đã có chúng ở đó). Để làm điều này, trước tiên chúng ta cần giải mã các khóa của tệp và sau đó là thuộc tính của chúng. Vấn đề này được giải quyết bằng một gói hàm khác mà chúng tôi quan tâm đến loadfm_callback và process_f_f .

Tóm lại, quá trình lấy thuộc tính tệp có thể được mô tả bằng thuật toán sau:

  1. Đợi trình quản lý tệp tải (loadfm_callback), nơi bạn có thể nhận JSON kèm theo mô tả về tất cả các tệp đã tải xuống
  2. Tạo một mảng farray để đặt một mảng chứa thông tin về các tập tin
  3. Chạy (đệ quy) hàm process_f_f cho mỗi tệp
  4. Đối với mỗi tệp có khóa, hãy giải mã khóa và thuộc tính đó (hàm crypto_processkey) và lưu chúng lại vào một mảng có thông tin tệp
  5. Sau đó, lưu các giá trị đã giải mã vào biến FileStore (kết thúc đệ quy trong process_f_f)
Dưới đây tôi sẽ cung cấp đoạn mã minh họa thuật toán này

// gọi lại để tải hàm quản lý tệp Loadfm_callback(json, res) ( // ... // xử lý JSON với thông tin về tệp 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, userid: json.s[i].u, folderid: json .s[i].h, quyền: json.s[i].r, date: json.s[i].ts ));sharednodes.h] = true; ) ) ) // ... không có gì đặc biệt hơn nữa .. // nhập thông tin về các tập tin vào một mảng toàn cục khác farray = new Object farray.f = json.f // bắt đầu xử lý, lệnh gọi lại đã được khai báo ở trên // ​​trong hàm này và chỉ cần sửa đổi bố cục process_f( fi, false , gọi lại); Hàm đệ quy, trong đó các khóa và thuộc tính tệp được giải mã // được gọi từ hàm process_f process_f_f(fid) ( // điều kiện để kết thúc đệ quy - chúng tôi đã xử lý tất cả các tệp trong mảng farray if (!farray.f.i]) ( if (farray .ap) FileStore.susupEvents(); // ghi dữ liệu vào FileStore FileStore.loadData(farray.mdata, true); if (farray.ap) FileStore.resumeEvents(); "); ); if (farray.callback) farray.callback.fn(farray.callback); var f = farray.f.i]; if (f.sk) u_sharekeys(f.h, f .sk); // nếu tập tin khớp với loại và có khóa, sau đó xử lý nó if ((f.t !== 2) && (f.t !== 3) && (f.t !== 4) && (f.k)) ( crypto_processkey (u_handle, u_k_aes, f) ; // mô tả hàm này bên dưới u_nodekeys = f.key; if ((typeof f.name !== "unfined") && (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; ngược lại nếu (f.t == 3) InboxID = f.h; khác nếu (f.t == 4) Thùng rácID = f.h; khác nếu ((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++; } // иначе - запускаем обработку tập tin tiếp theo khác quá trình_f_f(fid); ) // xử lý khóa tập tin và các thuộc tính của nó function crypto_processkey(me, master_aes, file) ( var id, key, k, n; if (!file.k) ( if (!keycache) return; file.k = keycache; ) id = me; // tôi có sở hữu tệp không? (khóa người dùng được đảm bảo là đầu tiên trong .k) // khóa được viết ở dạng " :/" var p = file.k.indexOf(id + ://); // trước tiên hãy kiểm tra xem tệp có được chia sẻ hay không nếu (p) ( // Tôi không"t - tôi có khóa chia sẻ phù hợp không? for (id in u_sharekeys ) ( p = file.k.indexOf(id + ://); if (p >= 0 && (!p || file.k.charAt(p - 1) == "/")) break; p = -1; ) ) // và sau đó chúng ta có thể chuyển sang giải mã if (p >= 0) ( delete keycache; // dấu gạch chéo có lẽ là dấu hiệu của sự chia sẻ var pp = file.k.indexOf("/", p) ; nếu (trang< 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)); ) // nếu chúng ta đã giải mã chính xác khóa và thuộc tính, chúng ta sẽ lưu chúng vào một tệp đối tượng file.key = k; file.name = o.n; ) ) ) else ( if (d) console.log("Không nhận được khóa phù hợp: " + file.h); if (!missingkeys) ( newmissingkeys = true;misskeys = true; ) keycache = file.k; ) )
Sau này, chúng ta có thể lấy giá trị của khóa gốc ul_key từ ngữ cảnh trình duyệt như sau: dl_keyNonce = JSON.stringify();
Chuyển đổi này xảy ra trong chức năng bắt đầu tải xuống. Nếu chúng ta tính đến giá trị dl_key == filekey từ hàm ul_chunkcomplete và thực hiện các phép cộng modulo đơn giản, chúng ta sẽ nhận thấy rằng biến dl_keyNonce sẽ lưu trữ giá trị ul_key được tạo khi tải tệp. Bạn có thể thấy minh họa về điều này ở góc dưới bên trái của bảng trong ảnh ở đầu phần tải tệp lên.

“Quá tải” các hoạt động mật mã

Mặc dù thực tế là các nguyên tắc được mô tả ở trên để bảo vệ tệp và khóa rất an toàn, một số có thể không thích việc chúng ta vẫn phụ thuộc vào việc triển khai các thuật toán mà dịch vụ cung cấp. Trong trường hợp này, chúng tôi có thể phát triển tiện ích mở rộng trình duyệt của riêng mình, tiện ích mở rộng này sẽ ghi đè một số chức năng của dịch vụ, triển khai mã hóa bổ sung trong đó. Cụ thể là tôi quyết định thực hiện việc bảo vệ Thông tin mấu chốt(khóa chính và khóa tệp) bằng cách sử dụng mã hóa phần cứng trên chìa khóa không thể tháo rời theo thuật toán GOST 28147-89. Phần thưởng cho điều này cũng sẽ là việc bao gồm xác thực hai yếu tố trên dịch vụ.
Vì vậy, hãy xem xét trường hợp sử dụng này:
  • Người dùng đăng ký dịch vụ
  • Sau đó, nó cài đặt phần mở rộng
  • Với sự trợ giúp của nó, việc mã hóa phần cứng của khóa chính được thực hiện bằng cách sử dụng khóa không thể trích xuất được từ mã thông báo.
  • Khóa chính được mã hóa theo cách này được tải lên máy chủ
Sau đó, sẽ không thể lấy được giá trị khóa chính nếu không sở hữu mã thông báo và mã PIN của nó. Điều này sẽ cung cấp cho:
  1. Xác thực hai yếu tố trên dịch vụ (không có khóa chính được giải mã chính xác, chức năng api_getsid2 sẽ không thành công)
  2. Nếu không có token, bạn cũng sẽ không thể thay đổi mật khẩu tài khoản hiện tại của mình.
Bước tiếp theo là mã hóa bằng mã thông báo khóa mã hóa tệp (còn được gọi là ul_key) và khóa thuộc tính tệp (filekey), được lưu trữ trên máy chủ. Do đó, chúng ta sẽ nhận được rằng mỗi tệp sẽ được mã hóa bằng một khóa sẽ không bao giờ đến được máy chủ, nơi chứa khóa tệp mà chúng tôi đã mã hóa từ hàm api_completeupload2. Thuộc tính tệp sẽ được mã hóa theo giá trị công khai của filekey. Để rõ ràng hơn, tôi đã phác thảo sơ đồ sau minh họa quá trình tải xuống một tệp:

Tôi muốn lưu ý rằng ở đây tôi đã sử dụng một phương pháp rất xảo quyệt. TRONG trong trường hợp nàyĐiều quan trọng đối với chúng tôi là kẻ tấn công không thể giải mã tệp, ngay cả khi hắn chặn khóa tệp nhận được từ máy chủ và biết khóa chính của người dùng. Do đó, tại đây, bạn có thể khám phá các đặc thù của kiến ​​​​trúc dịch vụ và sử dụng giá trị khóa ul_keyNonce (còn gọi là dl_keyNonce) có được bằng cách mã hóa giá trị của khóa ul_key (hoặc dl_key) để mã hóa tệp.

Vì những bài viết này được viết nên sản phẩm của chúng tôi đã bổ sung khả năng sử dụng mã hóa phần cứng bằng thuật toán GOST 28147-89. Có thể tải xuống phiên bản beta của plugin có chức năng mã hóa phần cứng theo thuật toán GOST 28147-89. Phiên bản plugin này chưa được phát hành thử nghiệm đầy đủ, do đó tôi cảnh báo bạn rằng có thể có sai sót trong đó, sự hiện diện của lỗi này tôi yêu cầu bạn báo cáo trong tin nhắn cá nhân.
Trong giao diện plugin, mã hóa đối xứng được thực hiện bằng hàm mã hóa, có cú pháp sau:
mã hóa (deviceId, keyLabel, dữ liệu, resultCallback, errorCallback) → (chuỗi)
Hàm lấy làm đầu vào:

  • ID thiết bị, số
  • Nhãn của khóa mã hóa, số (nếu không có khóa đó sẽ được tạo)
  • Dữ liệu, chuỗi được mã hóa (chuỗi chứa mảng byte có dạng "aa:bb:cc:dd")
  • Chức năng gọi lạiđể hoàn thành thành công và không thành công hoạt động mã hóa
Việc giải mã được thực hiện theo cách tương tự bằng cách sử dụng chức năng giải mã
Cần đặc biệt chú ý đến nhãn khóa vì nó xác định khóa nào dữ liệu sẽ được giải mã. Nhãn là một chuỗi tùy ý và chủ yếu dùng để xác định khóa một cách thuận tiện. Trong trường hợp này, tôi sử dụng hai cặp khóa: một để mã hóa khóa chính, cặp thứ hai để mã hóa các khóa tệp riêng lẻ. Khóa mà khóa chính được mã hóa có nhãn bằng mật khẩu của người dùng (hiện tại tôi nảy ra ý tưởng sử dụng hàm băm từ chuỗi e-mail||password, tôi sẽ sửa lỗi này ở phần gần tương lai). Để mã hóa khóa của các tệp đã tải xuống, một khóa có nhãn bằng chuỗi biểu diễn của khóa chính sẽ được sử dụng (ở đây cũng nên sử dụng hàm băm của khóa chính).

Phát triển trực tiếp

Tôi muốn ghi chú ngay về mã nguồn của mình: trên thực tế, nó là phiên bản alpha, mặc dù nó triển khai chức năng được mô tả ở trên. Tôi đã không kiểm tra mức độ tương thích của bản sửa đổi của mình với các chức năng khác của dịch vụ, vì vậy tôi đã đăng tất cả các nguồn trên github và sẽ rất vui nếu nhận được bất kỳ trợ giúp nào trong việc hoàn thiện hệ thống này. Vì vậy, tôi sẽ không làm bài viết thêm lộn xộn với những danh sách khổng lồ mà chỉ mô tả sơ đồ chung công việc mở rộng.

Phần mở rộng đã hoàn thành có thể được tải xuống. Nó được phát triển bằng dịch vụ Crossrider, cung cấp các tiện ích mở rộng cho ba trình duyệt (Chrome, Firefox và IE), nhưng tốt hơn hết bạn nên kiểm tra hoạt động của nó trong Chrome hoặc Firefox và trong thời gian đầu, nó hoạt động ổn định hơn nhiều.

Mã mở rộng khá đơn giản: nó kiểm tra xem chúng ta có đang ở trên trang dịch vụ hay không và nếu có, nó chỉ cần tải các tập lệnh bổ sung. Các tập lệnh này sửa đổi mã trang, thêm một vài hộp thoại và ghi đè các chức năng dịch vụ sau:

  • Changepw: chịu trách nhiệm thay đổi mật khẩu
  • api_getsid2: một trong những lệnh gọi lại đăng nhập
  • api_completeupload2: gọi lại để hoàn tất tải tệp lên
  • Loadfm_callback: gọi lại trình quản lý tệp
  • gói xử lý: một cuộc gọi lại khác, trong đó các thuộc tính của tệp vừa tải xuống được giải mã
  • trang phân tích cú pháp: chịu trách nhiệm vẽ các hộp thoại bổ sung
  • dologin: mở rộng khả năng xác thực
  • initupload3: chịu trách nhiệm tạo key mã hóa file
  • startdownload: phân tích ngược key file và khởi tạo quá trình tải xuống
Một lần nữa, tôi muốn cảnh báo bạn rằng bạn không nên kéo tiện ích mở rộng vào tài khoản công việc của mình (nếu có ai ở đây sử dụng dịch vụ này), nhưng tốt hơn hết là bạn nên tạo một tiện ích mở rộng thử nghiệm. Để sử dụng tiện ích mở rộng sau khi cài đặt, bạn sẽ cần:
  1. Để bắt đầu, bạn nên tải Rutoken EDS (hoặc Rutoken Web) và cài đặt plugin trình duyệt
  2. Cài đặt tiện ích mở rộng
  3. Đăng nhập vào dịch vụ với tiện ích mở rộng bị tắt
  4. Kích hoạt tiện ích mở rộng trong trình duyệt
  5. Tới trang tài khoản
  6. Nhấp vào nút “Ràng buộc mã thông báo”
  7. Nhập mật khẩu hiện tại và thực hiện thao tác này
Thay vì tiện ích mở rộng, bạn có thể sử dụng bookmarklet sau (đã được thử nghiệm trong Chrome, Safari, Firefox): javascript:(function())(if(document.getElementById("cryptorutokenjs"))(alert("Plugin đã được cài đặt" );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")))();

Trình diễn công việc

Đầu tiên, hãy kết nối sáng tạo của chúng tôi với trang web. Đối với điều này:

Sau đó, bạn có thể đăng xuất khỏi dịch vụ và thử đăng nhập lại bằng xác thực hai yếu tố:

Việc xác thực xảy ra theo sơ đồ sau:

  1. Kiểm tra cặp mật khẩu đăng nhập trên máy chủ
  2. Nếu thông tin đăng nhập và mật khẩu chính xác thì khóa chính được mã hóa sẽ đến từ máy chủ
  3. Plugin yêu cầu mã PIN cho mã thông báo
  4. Nếu mã PIN được nhập chính xác thì khóa chính sẽ được giải mã trên khóa từ mã thông báo

Thay vì một kết luận

Ở đây tôi muốn viết “sẽ được tiếp tục…”, vì tôi đã không trình bày chi tiết về việc tạo tiện ích mở rộng và sự thú vị của việc đưa các chức năng mã hóa không đồng bộ vào một dịch vụ mà trong hầu hết các trường hợp đều sử dụng lệnh gọi đồng bộ. Để kết thúc bài viết này, tôi muốn một lần nữa chuyển sang ý tưởng triển khai mật mã phía máy khách.
Phương pháp triển khai bổ sung chức năng mật mã về phía máy khách có thể được áp dụng cho bất kỳ dịch vụ web nào không quan tâm đến những gì được lưu trữ trên máy chủ của nó: có thể là lưu trữ tệp, thư hoặc trò chuyện đơn giản. Ví dụ: bạn có thể triển khai thư bảo mật dựa trên bất kỳ dịch vụ thư nào bằng cách sử dụng mã hóa thư ở định dạng CMS và cơ chế trao đổi khóa bằng thuật toán VKO GOST R 34.10-2001.
Cảm ơn bạn đã quan tâm, tôi rất mong nhận được câu hỏi và nhận xét của bạn.javascript Thêm thẻ

Trong bài viết hôm nay tôi sẽ cho bạn biết rằng một dịch vụ đám mây mới Mega đã xuất hiện trên Internet. Nhiều người phải đối mặt với vấn đề lưu trữ và truyền tải thông tin. Ngày càng có nhiều người dùng Internet quan tâm đến các dịch vụ lưu trữ thay thế. Và bây giờ cái mới cuối cùng đã được tung ra dịch vụ điện toán đám mây lưu trữ thông tin Siêu cấp.

Dịch vụ đám mây Mega

Trong bài viết này chúng tôi sẽ cùng bạn phân tích thế nào là tốt và tiện lợi dịch vụ lưu trữ đám mây Siêu cấp. Bao nhiêu thông tin có thể được lưu trữ trên đó? Dịch vụ lưu trữ tệp trên đám mây khác với các dịch vụ lưu trữ khác như thế nào?

Tôi phải đối mặt với thực tế là trong công việc của mình cần có sự lưu trữ thông tin đáng tin cậy, nếu cần, chuyển tệp cho bên thứ ba, tốc độ truyền tệp và sự sẵn có của một lượng lớn lưu trữ thông tin. Chà, điều quan trọng nhất, tôi đã đề cập đến, là độ tin cậy của việc lưu trữ thông tin.

Dịch vụ đám mây tốt nhất

Tôi lướt Internet và đọc về các dịch vụ đám mây khác nhau. Tôi đọc về việc so sánh các dịch vụ đám mây. Chà, tôi không thích bất kỳ dịch vụ lưu trữ đám mây nào hiện có trên mạng. Đây là một lượng nhỏ lưu trữ dữ liệu. Đó là tốc độ truyền thông tin thấp. Có những hạn chế về kích thước của tập tin được chuyển. Sau đó, bạn cần phải trả tiền cho việc lưu trữ thông tin. Không phải tất cả các dịch vụ đám mây đều cung cấp sự đảm bảo cho các tệp được lưu trữ. Không có dịch vụ nào tôi đánh giá đáp ứng tất cả các yêu cầu phức tạp mà tôi đã đề cập ở trên.

Tôi tìm kiếm rất lâu và vô tình tìm thấy một dịch vụ lưu trữ đám mây miễn phí có tên Mega. Tôi thích đặc điểm của nó được mô tả trong bài viết. Hơn nữa, dịch vụ đám mây vừa được khai trương. Buổi ra mắt của nó diễn ra vào buổi tối ngày 19 tháng 1. Trùng hợp hay không, cùng thời điểm đó, website Megaupload đã bị đóng cửa cách đây một năm. Theo thông tin có được, chỉ trong vòng 10 phút, toàn bộ dung lượng kênh đến trung tâm cung cấp chính ở Đức đã bị chiếm dụng. Trong vòng một giờ, 100.000 người dùng đầu tiên đã được đăng ký. Trong vòng hai giờ, 250.000 đã được đăng ký và chưa đầy một ngày - 1 triệu.

Để biết thông tin:

Dịch vụ đám mây mới để lưu trữ dữ liệu từ xa, Mega, được tạo ra bởi công ty của Kim Dotcom, người sáng lập dịch vụ Megaupload, dịch vụ này đã bị đóng cửa đúng một năm trước theo sáng kiến ​​của Bộ Tư pháp Hoa Kỳ và Cục Điều tra Liên bang. Còn bản thân Dotcom cùng đồng nghiệp cũng bị bắt vì tội vi phạm bản quyền.

Hiện tại, dịch vụ Mega cloud cung cấp dịch vụ lưu trữ thông tin đơn giản trên đám mây nhưng theo người sáng lập, công ty sẽ sớm hứa hẹn sẽ kết nối quyền truy cập dịch vụ từ thiêt bị di động, công cụ đồng bộ hóa cho thiết bị iPad, iPhone và Android cũng như các bản dựng hệ thống tập tin cho cửa sổ. Tất cả các tập tin được tải lên dịch vụ đều được mã hóa. Không ai ngoại trừ người dùng có thể tìm ra những gì chúng chứa.

Dịch vụ Mega cung cấp 50 GB dung lượng lưu trữ miễn phí và đối với người dùng trả phí, giá khởi điểm là 9,99 USD mỗi tháng cho 500 GB dung lượng ổ đĩa và 2 TB lưu lượng.

Xem cho chính mình. Nó phân bổ 50 GB dung lượng ổ đĩa cho tất cả những người đăng ký dịch vụ. Tốc độ tải xuống và tải lên tệp chỉ bị giới hạn bởi băng thông của nhà cung cấp Internet của bạn. Không có hạn chế về kích thước của tập tin được chuyển. Và điều quan trọng nhất thực sự thu hút tôi đến với dịch vụ này là khả năng mã hóa tập tin được truyền.

Theo các nhà phát triển, các bên thứ ba (bao gồm cả chính các nhà phát triển dịch vụ đám mây Mega) không thể tìm ra những gì được lưu trữ trong bộ lưu trữ đám mây của bạn. Tất cả dữ liệu trên dịch vụ được lưu trữ ở dạng mã hóa và chỉ có thể được truy cập bằng cách nhập mật khẩu và thông tin đăng nhập của bạn. Và như bạn biết, chỉ có bạn mới sở hữu dữ liệu này. Và tôi hy vọng bạn giữ chúng ở một nơi an toàn.

Thực tế nhiều năm cho thấy rằng việc lưu trữ tất cả mật khẩu ở nhiều nơi là thuận tiện: viết chúng vào sổ ghi chú và lưu trữ trong ở dạng điện tử. Có một kho lớn các chương trình cho việc này.

Dịch vụ lưu trữ đám mây Mega rất khác so với các dịch vụ khác. lợi thế lớn liên quan đến việc không thể tiếp cận thông tin cho bên thứ ba. Ngay cả khi các cơ quan thực thi pháp luật quan tâm đến thông tin của bạn. Ví dụ: nếu các cơ quan thực thi pháp luật đã được phép truy cập vào bộ lưu trữ tệp trên đám mây của bạn. Vì những lý do mà bạn và tôi đều biết, tôi đã nói về họ ở trên, họ sẽ không thể giải mã thông tin mà bạn lưu trữ ở đó.

Tất cả những điều trên đã tự tin thôi thúc tôi lựa chọn dịch vụ lưu trữ đám mây Mega. Theo tôi, nó sẽ chiếm vị trí đầu tiên trong số các dịch vụ đám mây tương tự hiện có, bao gồm cả dịch vụ nổi tiếng nhất dịch vụ lưu trữ đám mây– Yandex, Google Drive và Dropbox.

Nào các bạn, hãy chuyển sang phần thực tế. Bây giờ bạn sẽ tìm hiểu cách nhận cho mình 50 GB dung lượng ổ đĩa miễn phí trong bộ lưu trữ tệp Mega cloud.

Cách tạo dịch vụ đám mây cho chính bạn

Để đăng ký bạn cần phải vào liên kết này Siêu cấp.

Sau đó, bạn cần điền dữ liệu (viết mật khẩu đăng nhập và nhập địa chỉ email của bạn).

Bạn phải đồng ý với các quy tắc sử dụng dịch vụ đám mây (đánh dấu vào ô) và nhấp vào nút “Đăng ký”.

Sau các bước trên, bạn sẽ nhận được một tin nhắn có địa chỉ trang xác nhận đăng ký đến địa chỉ email bạn đã chỉ định khi đăng ký.

Bây giờ hãy bắt đầu lấp đầy đĩa đám mây của chúng ta. Bạn có thể tải lên đám mây từ máy tính của mình, như tập tin riêng biệt và toàn bộ thư mục. Để thực hiện việc này, bạn cần chọn “Tải lên thư mục” hoặc “Tải tệp lên” trong phần menu. Trong trường hợp của chúng tôi, tôi đã tải xuống một tệp nén riêng biệt. Để thực hiện việc này, tôi đã nhấp vào tab “Tải tệp lên” và chọn tệp trên máy tính cần tải lên bộ lưu trữ tệp trên đám mây của mình.

Sau khi nhấp vào nút "Mở", quá trình tải xuống tệp đã chọn sẽ bắt đầu với tốc độ rất tốt.

Tiếp theo, trong cửa sổ tiếp theo, hãy chọn các hộp ở dạng bạn sẽ gửi liên kết. Vì lý do bảo mật, bạn có thể gửi liên kết tải xuống riêng và khóa riêng cho tệp hoặc bạn có thể gửi mọi thứ cùng một lúc, tự mình xem cái nào thuận tiện hơn cho bạn. Nhấp vào tab “Sao chép vào Clipboard”. Và chúng tôi gửi liên kết theo cách thuận tiện cho bạn.

Sau khi nhận được liên kết, người dùng khi nhấp vào liên kết sẽ được đưa đến trang tải xuống. Và tải xuống tập tin hoặc thư mục bạn đã chuyển. Tệp hoặc thư mục được chuyển ở dạng mã hóa. Hình ảnh bên dưới hiển thị cửa sổ khi người dùng nhận được link không cần mật khẩu và có mật khẩu. Khi người dùng nhận được mà không cần mật khẩu, bạn cần nhập thêm mật khẩu vào một cửa sổ riêng và khi đã có mật khẩu, bạn chỉ cần nhấp vào nút “Tải xuống” và tệp sẽ được tải xuống máy tính của bạn.

Bạn thân mến, trong bài viết này chúng ta đã thảo luận dịch vụ điện toán đám mây Siêu cấp. Bạn đã tìm hiểu về nó là gì, nó có những ưu điểm gì so với các dịch vụ đám mây khác trên Internet. Chúng tôi đã xem xét cách đăng ký và cách thức hoạt động của nó.

Lưu trữ đám mây vẫn là một loại dịch vụ đã được thiết lập trong cuộc sống của chúng ta. Họ đã trải qua sự tăng trưởng nhanh chóng, trải qua tình trạng thị trường quá bão hòa khi những “đám mây” mới mở ra hầu như mỗi tuần và trải qua một cuộc suy thoái khi chính những “đám mây” này bắt đầu đóng lại từng cái một. Và bây giờ chúng ta đang phải đối mặt với một loại hình dịch vụ đã hình thành và trở nên phổ biến, đã đứng vững trước thử thách của thời gian, có tính đến các đặc điểm và tốc độ của ngành công nghiệp hiện đại.

Có khá nhiều kho lưu trữ đám mây. Mỗi người có đặc điểm riêng và khán giả riêng. Một số người chỉ chọn một “đám mây”, những người khác sử dụng nhiều đám mây cùng một lúc. Chúng tôi đã chọn mười điều thú vị nhất trong số đó. Một trong những tiêu chí của top này là gói miễn phí với không gian đám mây miễn phí để mọi người dùng có thể tự mình dùng thử. Không dùng thử, chỉ là gói miễn phí có dung lượng trống.

10. pCloud

Một đám mây khá thú vị và đang phát triển nhanh chóng. Blog trên đám mây được cập nhật hầu như hàng tuần và rõ ràng là các nhà phát triển đang tích cực làm việc trên nó. Họ cung cấp cho bạn 10 GB miễn phí nhưng chỉ sau vài bước đơn giản. Bạn có thể nhận thêm vài GB. Có một hệ thống giới thiệu cũng sẽ cho phép bạn tăng dung lượng trống của mình. Điều thú vị là pCloud ngoài phí đăng ký hàng tháng và hàng năm cho các tính năng nâng cao, còn có biểu giá mua một lần, bạn chỉ cần thanh toán một số tiền nhất định và tăng khối lượng đám mây của bạn mãi mãi, thật khó để nhớ những đám mây khác làm điều này.

9. MEGA

Lưu trữ được mã hóa từ Kim Dotcom. Có tin đồn rằng đám mây đã bị lấy đi khỏi anh ta, về những thăng trầm khó chịu khác trong quá trình quản lý MEGA, nhưng điều này không ngăn cản việc lưu trữ đám mây phát triển và tồn tại. Đám mây được xây dựng trên mức mã hóa khá cao; để làm việc với phiên bản web thoải mái hơn, tốt hơn hết bạn nên cài đặt một tiện ích mở rộng đặc biệt cho trình duyệt để giúp quá trình giải mã nhanh hơn nhiều. Có ứng dụng cho tất cả các hệ điều hành phổ biến. Điều chính thu hút nhiều người là MEGA cung cấp 50 GB cho gói miễn phí. Cuốn sách này đã có từ đầu và vẫn giữ nguyên như vậy cho đến ngày nay.

8.MediaFire

Một trong những dịch vụ lâu đời nhất trong top này, nó hoạt động tốt nhưng đang phát triển khá chậm. Không có phiên bản dành cho máy tính nên bạn phải sử dụng phiên bản web, nhưng với ứng dụng di động trật tự đầy đủ.

MediaFire bắt đầu như một dịch vụ lưu trữ tệp, nhưng theo thời gian, nó nhận ra sự suy giảm của các dịch vụ đó và chuyển mục đích sử dụng sang lưu trữ đám mây. Người dùng cũ và những người tham gia chương trình khuyến mãi có 50 GB không gian trông, phần còn lại được cấp 10 GB, nhưng đôi khi có thể tăng dung lượng trống miễn phí.

7. Hộp

Một bộ lưu trữ đám mây khác đã được thử nghiệm theo thời gian. Box ban đầu tập trung vào kinh doanh và điều này đã giúp nó tồn tại cho đến ngày nay và có lượng người dùng trung thành. Họ cung cấp 10 GB miễn phí và đôi khi có khuyến mãi để có 50 GB dung lượng trống. Nhưng gói miễn phí có nhiều hạn chế. Tất cả những hạn chế này sẽ bị xóa nếu bạn nâng cấp lên gói đăng ký.

6. Cloud Mail.Ru

Mail.Ru Cloud ra mắt với 100 GB dung lượng trống, sau đó có chương trình khuyến mãi cho phép bạn nhận 1 TB miễn phí, sau đó dung lượng giảm đáng kể và các tài khoản mới được cung cấp một lượng dung lượng ít ỏi. Đám mây có trình phát âm thanh tích hợp, tích hợp với Office Online và tiếp tục nhận được các tính năng mới cũng như hỗ trợ cho các định dạng mới, nhưng sự không ổn định với âm lượng miễn phí không cho phép nó tăng cao hơn trong bảng xếp hạng.

5. Yandex.Disk

Ổn định đáng kinh ngạc về mặt khối lượng, lưu trữ đám mây từ Yandex. Khi ra mắt, họ đã tặng 10 GB dung lượng miễn phí. Đã vài năm trôi qua và vẫn còn 10 GB, nhưng vẫn có các chương trình khuyến mãi liên tục khi bạn có thể tạm thời nhận được dung lượng miễn phí hoặc tăng đám mây của mình lên cơ sở vĩnh viễn. Hãy thêm vào đây sự hỗ trợ cho một số lượng lớn các định dạng, tích hợp với Office Online và liên tục phát triển các ứng dụng.

Vào cuối năm 2017, Disk cũng đã ngừng hoạt động. Mọi thứ bạn tải lên Yandex.Disk từ điện thoại của mình sẽ không được tính đến khi tính tổng âm lượng. Rõ ràng đây không phải là một chương trình khuyến mãi vì không có thời hạn nào được đưa ra. Cũng không có giới hạn về kích thước, điều này làm cho tính năng này thậm chí còn tốt hơn Google Photos.

4.iCloud

Nếu bạn yêu thích công nghệ của Apple thì chắc chắn bạn đã xem qua bộ lưu trữ đám mây này. Nhiều ứng dụng hoạt động thông qua nó, việc sao lưu và đồng bộ hóa diễn ra. Bạn cũng có thể sử dụng iCloud làm bộ nhớ đám mây thông thường của mình. Hãy thêm vào đây một bộ ứng dụng văn phòng hoàn chỉnh của Apple và một ứng dụng dành cho Windows và chúng ta sẽ có được một bộ lưu trữ đám mây tốt với lượng người hâm mộ trung thành.

Chỉ khi bạn không sử dụng sản phẩm của Apple, bất kỳ bộ lưu trữ đám mây nào khác trong top này sẽ là lựa chọn tốt hơn cho bạn vì nó sẽ cung cấp cho bạn nhiều tùy chọn hơn.

3. Dropbox

Chính Dropbox được coi là dịch vụ khởi đầu cho sự tăng trưởng “bùng nổ” của lưu trữ đám mây. Dropbox là một trong những dịch vụ đầu tiên phổ biến loại này dịch vụ, và mặc dù bây giờ anh ấy không có thời gian tốt hơn, dịch vụ tiếp tục phát triển và có được những cơ hội mới. Dropbox chỉ cung cấp cho bạn 2 GB miễn phí. Các chương trình khuyến mãi tăng khối lượng miễn phí đã không được thực hiện trong một thời gian dài và các hạn chế về thuế quan miễn phí không cho phép sử dụng đám mây một cách tối đa. Thật không may, trước đám mây lý tưởng Lưu trữ Dropbox không còn giữ vững được nữa.

2.OneDrive

Lưu trữ đám mây từ Microsoft. Có sự tích hợp chặt chẽ với văn phòng Gói văn phòng Trực tuyến, cũng được tích hợp vào các kho lưu trữ đám mây khác, với sự đồng ý của Microsoft. Theo mặc định, nó được tích hợp vào Windows 8.1 và Windows 10. Hỗ trợ định dạng cũng khá rộng rãi. Làm việc trên đám mây này, nhiều người dùng có thể từ chối chính thức một cách an toàn gói Microsoft Office hoặc Microsoft Office 365, chỉ cung cấp các chức năng nâng cao cho các tác vụ chuyên nghiệp hơn.

Khi mua đăng ký Microsoft Office 365, bạn còn được tặng thêm 1 TB dung lượng OneDrive. Vì vậy, nhiều người chỉ đơn giản là không mở rộng khối lượng đám mây bằng cách trên cơ sở trả phí, mà chỉ cần mua đăng ký Office, đồng thời không gian đám mây tăng.

1. Google Drive

Bộ nhớ đám mây của Google có nhiều nhất số lượng nhiều hơnđịnh dạng tệp được hỗ trợ, có thể được mở rộng bằng cách sử dụng tiện ích mở rộng bổ sung cho đám mây. Các tài liệu văn phòng nhỏ cũng như ảnh và video có phần mở rộng nhỏ không được tính đến khi tính toán dung lượng có sẵn trên đám mây. Và dung lượng này là 15 GB.

Đám mây tích hợp với bộ văn phòng đám mây Google Tài liệu, có một cách đơn giản và giao diện thân thiện với người dùng mà chúng tôi được nhiều người ưa thích để sử dụng làm chính đồng phục công sở. Gần đây, các ứng dụng Google Drive và Google Ảnhđã được kết hợp thành một ứng dụng có tên “Google Backup and Sync”. Đã có tin đồn về một ứng dụng dành cho Linux, nhưng cho đến nay nhiều người vẫn tiếp tục sử dụng các ứng dụng khách không chính thức và đây gần như là nhược điểm nghiêm trọng duy nhất của người dẫn đầu top hiện nay.