IPFS không đau (nhưng điều này không chính xác)

IPFS không đau (nhưng điều này không chính xác)

Mặc dù thực tế là Habré đã nhiều hơn một bài viết về IPFS.

Tôi sẽ làm rõ ngay rằng tôi không phải là chuyên gia trong lĩnh vực này, nhưng tôi đã hơn một lần thể hiện sự quan tâm đến công nghệ này, nhưng việc cố gắng nghịch ngợm với nó thường gây ra một số khó khăn. Hôm nay tôi bắt đầu thử nghiệm lại và có một số kết quả mà tôi muốn chia sẻ. Tóm lại, quá trình cài đặt IPFS và một số tính năng sẽ được mô tả (mọi thứ đã được thực hiện trên ubuntu, tôi chưa thử trên các nền tảng khác).

Nếu bạn bỏ lỡ IPFS là gì, nó được viết chi tiết ở đây: habr.com/vi/post/314768

Cài đặt

Để đảm bảo tính thuần khiết của thử nghiệm, tôi khuyên bạn nên cài đặt ngay nó trên một số máy chủ bên ngoài, vì chúng tôi sẽ xem xét một số cạm bẫy khi làm việc ở chế độ cục bộ và từ xa. Sau đó, nếu muốn, nó sẽ không bị phá hủy trong một thời gian dài, không có nhiều.

Cài đặt đi

tài liệu chính thức
Xem phiên bản hiện tại tại golang.org/dl

Lưu ý: tốt hơn là cài đặt IPFS thay cho người dùng được cho là sử dụng nó thường xuyên nhất. Thực tế là dưới đây chúng tôi sẽ xem xét tùy chọn gắn thông qua FUSE và có sự tinh tế.

cd ~
curl -O https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz
tar xvf go1.12.9.linux-amd64.tar.gz
sudo chown -R root:root ./go
sudo mv go /usr/local
rm go1.12.9.linux-amd64.tar.gz

Sau đó, bạn cần cập nhật môi trường (chi tiết tại đây: golang.org/doc/code.html#GOPATH).

echo 'export GOPATH=$HOME/work' >> ~/.bashrc
echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc

Kiểm tra xem go đã được cài chưa

go version

Cài đặt IPFS

Tôi thích phương pháp cài đặt nhất cập nhật ipfs.

Cài đặt nó bằng lệnh

go get -v -u github.com/ipfs/ipfs-update

Sau đó, bạn có thể chạy các lệnh sau:

phiên bản cập nhật ipfs - để xem tất cả các phiên bản có sẵn để tải xuống.
phiên bản cập nhật ipfs - để xem phiên bản hiện được cài đặt (cho đến khi chúng tôi cài đặt IPFS, nó sẽ không có phiên bản nào).
ipfs-update cài đặt mới nhất - cài đặt phiên bản mới nhất của IPFS. Thay vì mới nhất, tương ứng, bạn có thể chỉ định bất kỳ phiên bản mong muốn nào từ danh sách những phiên bản có sẵn.

cài đặt ipfs

ipfs-update install latest

Kiểm tra

ipfs --version

Trực tiếp với việc cài đặt nói chung là mọi thứ.

Bắt đầu IPFS

Khởi tạo

Đầu tiên bạn cần thực hiện khởi tạo.

ipfs init

Đáp lại, bạn sẽ nhận được một cái gì đó như thế này:

 ipfs init
initializing IPFS node at /home/USERNAME/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmeCWX1DD7HnXXXXXXXXXXXXXXXXXXXXXXXXxxx
to get started, enter:
	ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Bạn có thể chạy lệnh được đề xuất

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Kết quả

Hello and Welcome to IPFS!

██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝

If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!

 -------------------------------------------------------
| Warning:                                              |
|   This is alpha software. Use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |
 -------------------------------------------------------

Check out some of the other files in this directory:

  ./about
  ./help
  ./quick-start     <-- usage examples
  ./readme          <-- this file
  ./security-notes

Ở đây, theo tôi, điều thú vị bắt đầu. Những người ở giai đoạn cài đặt đã bắt đầu sử dụng công nghệ của riêng họ. Hàm băm được đề xuất QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv không được tạo riêng cho bạn mà được đưa vào bản phát hành. Đó là, trước khi phát hành, họ đã chuẩn bị một văn bản chào mừng, đổ nó vào IPFS và thêm địa chỉ vào trình cài đặt. Tôi nghĩ nó rất tuyệt. Và tệp này (chính xác hơn là toàn bộ thư mục) hiện có thể được xem không chỉ cục bộ mà còn trên cổng chính thức ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv. Đồng thời, bạn có thể chắc chắn rằng nội dung của thư mục không thay đổi theo bất kỳ cách nào, bởi vì nếu nó thay đổi thì hàm băm cũng sẽ thay đổi.

Nhân tiện, trong trường hợp này, IPFS có một số điểm tương đồng với máy chủ kiểm soát phiên bản. Nếu bạn thực hiện các thay đổi đối với các tệp nguồn của thư mục và đổ lại thư mục vào IPFS, thì nó sẽ nhận được một địa chỉ mới. Đồng thời, thư mục cũ sẽ không biến mất như vậy và sẽ có sẵn tại địa chỉ trước đó của nó.

phóng trực tiếp

ipfs daemon

Bạn sẽ nhận được phản hồi như thế này:

ipfs daemon
Initializing daemon...
go-ipfs version: 0.4.22-
Repo version: 7
System version: amd64/linux
Golang version: go1.12.7
Swarm listening on /ip4/x.x.x.x/tcp/4001
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

Mở cửa cho Internet

Hãy chú ý đến hai dòng này:

WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080

Bây giờ, nếu bạn đã cài đặt IPFS cục bộ, thì bạn sẽ truy cập các giao diện IPFS bằng địa chỉ cục bộ và mọi thứ sẽ có sẵn cho bạn (Ví dụ: localhost:5001/webui/). Nhưng khi được cài đặt trên một máy chủ bên ngoài, theo mặc định, các cổng được đóng với Internet. Cổng hai:

  1. quản trị webui (github) trên cổng 5001.
  2. API bên ngoài trên cổng 8080 (chỉ đọc).

Cho đến nay, cả hai cổng (5001 và 8080) đều có thể được mở để thử nghiệm, nhưng trên máy chủ chiến đấu, tất nhiên, cổng 5001 phải được đóng bằng tường lửa. Ngoài ra còn có cổng 4001, cần thiết để các đồng nghiệp khác có thể tìm thấy bạn. Nó nên được để ngỏ cho các yêu cầu bên ngoài.

Mở ~/.ipfs/config để chỉnh sửa và tìm những dòng này trong đó:

"Addresses": {
  "Swarm": [
    "/ip4/0.0.0.0/tcp/4001",
    "/ip6/::/tcp/4001"
  ],
  "Announce": [],
  "NoAnnounce": [],
  "API": "/ip4/127.0.0.1/tcp/5001",
  "Gateway": "/ip4/127.0.0.1/tcp/8080"
}

Thay đổi 127.0.0.1 thành ip của máy chủ của bạn và lưu tệp, sau đó khởi động lại ipfs (dừng lệnh đang chạy bằng Ctrl+C và bắt đầu lại).

nên lấy

...
WebUI: http://ip_вашего_сервера:5001/webui
Gateway (readonly) server listening on /ip4/ip_вашего_сервера/tcp/8080

Bây giờ các giao diện bên ngoài sẽ có sẵn.

Đánh dấu

http://домен_или_ip_сервера:8080/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Tệp readme ở trên sẽ mở.

http://домен_или_ip_сервера:5001/webui/

Giao diện web sẽ mở ra.

Nếu webui phù hợp với bạn, thì bạn có thể thay đổi cài đặt IPFS trực tiếp trong đó, bao gồm cả việc xem số liệu thống kê, nhưng bên dưới tôi sẽ xem xét các tùy chọn cấu hình trực tiếp thông qua tệp cấu hình, điều này thường không quan trọng. Tốt hơn hết là bạn nên nhớ chính xác vị trí cấu hình và phải làm gì với nó, nếu không, nếu mặt web không hoạt động thì sẽ khó khăn hơn.

Thiết lập giao diện web để hoạt động với máy chủ của bạn

Đây là cạm bẫy đầu tiên, mất khoảng ba giờ.

Nếu bạn đã cài đặt IPFS trên một máy chủ bên ngoài, nhưng không cài đặt hoặc chạy IPFS cục bộ, thì khi truy cập /webui trong giao diện web, bạn sẽ thấy lỗi kết nối:

IPFS không đau (nhưng điều này không chính xác)

Theo tôi, thực tế là webui hoạt động rất mơ hồ. Đầu tiên, nó cố gắng kết nối với API của máy chủ nơi giao diện đang mở (dĩ nhiên là dựa trên địa chỉ trong trình duyệt). và nếu nó không hoạt động ở đó, nó sẽ cố gắng kết nối với cổng cục bộ. Và nếu bạn có IPFS chạy cục bộ, thì webui sẽ hoạt động tốt với bạn, chỉ bạn mới làm việc với IPFS cục bộ chứ không phải bên ngoài, mặc dù bạn đã mở webui trên một máy chủ bên ngoài. Sau đó, bạn tải các tệp lên, nhưng vì lý do nào đó, bạn không thấy chúng giống như vậy trên một máy chủ bên ngoài…

Và nếu nó không chạy cục bộ, thì chúng tôi sẽ gặp lỗi kết nối. Trong trường hợp của chúng tôi, lỗi rất có thể là do CORS, cũng được chỉ định bởi webui, đề xuất thêm tệp config.

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://ip_вашего сервера:5001", "http://127.0.0.1:5001", "https://webui.ipfs.io"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'

Tôi vừa đăng ký một ký tự đại diện

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'

Các tiêu đề đã thêm có thể được tìm thấy trong cùng ~/.ipfs/config. Trong trường hợp của tôi nó là

  "API": {
    "HTTPHeaders": {
      "Access-Control-Allow-Origin": [
        "*"
      ]
    }
  },

Chúng tôi khởi động lại ipfs và chúng tôi thấy rằng webui đã kết nối thành công (trong mọi trường hợp, điều này sẽ xảy ra nếu bạn đã mở cổng cho các yêu cầu từ bên ngoài, như đã mô tả ở trên).

Giờ đây, bạn có thể tải lên các thư mục và tệp trực tiếp thông qua giao diện web, cũng như tạo các thư mục của riêng mình.

Gắn hệ thống tập tin FUSE

Đây là một tính năng khá thú vị.

Các tệp (cũng như các thư mục), chúng tôi có thể thêm không chỉ thông qua giao diện web mà còn có thể trực tiếp trong thiết bị đầu cuối, chẳng hạn

ipfs add test -r
added QmfYuz2gegRZNkDUDVLNa5DXzKmxxxxxxxxxx test/test.txt
added QmbnzgRVAP4fL814h5mQttyqk1aURxxxxxxxxxxxx test

Hàm băm cuối cùng là hàm băm của thư mục gốc.

Sử dụng hàm băm này, chúng tôi có thể mở một thư mục trên bất kỳ nút ipfs nào (có thể tìm thấy nút của chúng tôi và lấy nội dung), chúng tôi có thể trong giao diện web trên cổng 5001 hoặc 8080 hoặc chúng tôi có thể cục bộ thông qua ipfs.

ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx
QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt

Nhưng bạn vẫn có thể mở nó như một thư mục thông thường.

Hãy tạo hai thư mục ở thư mục gốc và cấp quyền cho chúng cho người dùng của chúng ta.

sudo mkdir /ipfs /ipns
sudo chown USERNAME /ipfs /ipns

và khởi động lại ipfs với cờ --mount

ipfs daemon --mount

Bạn có thể tạo các thư mục ở những nơi khác và chỉ định đường dẫn đến chúng thông qua các tham số daemon ipfs -mount -mount-ipfs /ipfs_path -mount-ipns /ipns_path

Bây giờ đọc từ thư mục này hơi bất thường.

ls -la /ipfs
ls: reading directory '/ipfs': Operation not permitted
total 0

Tức là không có quyền truy cập trực tiếp vào thư mục gốc của thư mục này. Nhưng bạn có thể lấy nội dung, biết hàm băm.

ls -la /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx
total 0
-r--r--r-- 1 root root 10 Aug 31 07:03 test.txt

cat /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx/test.txt 
test
test

Đồng thời, ngay cả tính năng tự động hoàn thành cũng hoạt động bên trong thư mục khi đường dẫn được chỉ định.

Như tôi đã nói ở trên, có những điểm tinh tế khi gắn kết như vậy: theo mặc định, các thư mục FUSE được gắn kết chỉ dành cho người dùng hiện tại (thậm chí root sẽ không thể đọc được từ một thư mục như vậy, chưa kể những người dùng khác trong hệ thống). Nếu bạn muốn cung cấp các thư mục này cho người dùng khác, thì trong cấu hình, bạn cần thay đổi "FuseAllowOther": false thành "FuseAllowOther": true. Nhưng đó không phải là tất cả. Nếu bạn chạy IPFS với quyền root thì mọi thứ đều ổn. Và nếu thay mặt cho người dùng thông thường (thậm chí là sudo) thì bạn sẽ gặp lỗi

mount helper error: fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

Trong trường hợp này, bạn cần chỉnh sửa /etc/fuse.conf bằng cách bỏ ghi chú dòng #user_allow_other.

Sau đó, khởi động lại ipfs.

Các sự cố đã biết với FUSE

Vấn đề đã được nhận thấy nhiều lần là sau khi khởi động lại ipfs với quá trình gắn kết (và có thể trong các trường hợp khác), các điểm gắn kết /ipfs và /ipns không khả dụng. Không có quyền truy cập vào chúng và ls -la /ipfs hiển thị ???? trong danh sách quyền.

Tìm thấy giải pháp này:

fusermount -z -u /ipfs
fusermount -z -u /ipns

Sau đó khởi động lại ipfs.

Thêm một dịch vụ

Tất nhiên, chạy trong terminal chỉ phù hợp với những thử nghiệm ban đầu. Trong chế độ chiến đấu, trình nền sẽ tự động khởi động khi khởi động hệ thống.

Thay mặt sudo, hãy tạo tệp /etc/systemd/system/ipfs.service và ghi vào đó:

[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/home/USERNAME/work/bin/ipfs daemon --mount
User=USERNAME
Restart=always

[Install]
WantedBy=multi-user.target

Tất nhiên, TÊN NGƯỜI DÙNG phải được thay thế bằng người dùng của bạn (và có lẽ đường dẫn đầy đủ đến chương trình ipfs sẽ khác đối với bạn (bạn phải chỉ định đường dẫn đầy đủ)).

Chúng tôi kích hoạt dịch vụ.

sudo systemctl enable ipfs.service

Chúng tôi bắt đầu dịch vụ.

sudo service ipfs start

Kiểm tra trạng thái của dịch vụ.

sudo service ipfs status

Để đảm bảo tính thuần túy của thử nghiệm, có thể khởi động lại máy chủ trong tương lai để kiểm tra xem ipfs có tự động khởi động thành công hay không.

Thêm những bữa tiệc được biết đến với chúng tôi

Hãy xem xét một tình huống mà chúng tôi đã cài đặt các nút IPFS trên cả máy chủ bên ngoài và cục bộ. Trên một máy chủ bên ngoài, chúng tôi thêm một số tệp và cố gắng tải tệp đó qua IPFS cục bộ bằng CID. Chuyện gì sẽ xảy ra? Tất nhiên, máy chủ cục bộ rất có thể không biết gì về máy chủ bên ngoài của chúng tôi và sẽ chỉ cố gắng tìm tệp theo CID bằng cách “hỏi” tất cả các IPFS ngang hàng có sẵn với nó (mà nó đã quản lý để “làm quen”). Đến lượt những người đó sẽ hỏi những người khác. Và như vậy, cho đến khi tập tin được tìm thấy. Trên thực tế, điều tương tự cũng xảy ra khi chúng tôi cố tải tệp qua cổng chính thức ipfs.io. Nếu bạn may mắn, tệp sẽ được tìm thấy sau vài giây. Và nếu không, nó sẽ không được tìm thấy dù chỉ trong vài phút, điều này ảnh hưởng rất nhiều đến sự thoải mái khi làm việc. Nhưng chúng tôi biết nơi tập tin này sẽ xuất hiện đầu tiên. Vậy tại sao chúng ta không báo ngay cho máy chủ cục bộ của mình "Tìm kiếm ở đó trước"? Rõ ràng, điều này có thể được thực hiện.

1. Chúng tôi đến máy chủ từ xa và tìm trong cấu hình ~/.ipfs/config

"Identity": {
    "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuxxxxxxxxxxxxxxxx",

2. Chạy sudo service ipfs status và tìm các mục Swarm trong đó, ví dụ:

Swarm announcing /ip4/ip_вашего_сервера/tcp/4001

3. Chúng tôi thêm từ đây địa chỉ chung có dạng "/ip4/ip_your_server/tcp/4001/ipfs/$PeerID".

4. Để đảm bảo độ tin cậy, chúng tôi sẽ cố gắng thêm địa chỉ này vào các đồng nghiệp thông qua webui địa phương của chúng tôi.

IPFS không đau (nhưng điều này không chính xác)

5. Nếu mọi thứ đều ổn, hãy mở local config ~/.ipfs/config, tìm “Bootstrap” trong đó: [...
và thêm địa chỉ nhận được trước vào mảng.

Khởi động lại IPFS.

Bây giờ, hãy thêm tệp vào máy chủ bên ngoài và thử yêu cầu tệp đó trên máy chủ cục bộ. Nên bay nhanh.

Nhưng chức năng này vẫn chưa ổn định. Theo như tôi hiểu, ngay cả khi chúng tôi chỉ định địa chỉ của một máy ngang hàng trong Bootstrap, ipfs sẽ thay đổi danh sách các kết nối đang hoạt động với các máy ngang hàng trong quá trình hoạt động. Trong mọi trường hợp, cuộc thảo luận về vấn đề này và mong muốn về khả năng chỉ định các ngày lễ vĩnh viễn đang được tiến hành đây và có vẻ như cho là thêm một số chức năng vào [email được bảo vệ]+

Danh sách các đồng nghiệp hiện tại có thể được xem cả trong webui và trong thiết bị đầu cuối.

ipfs swarm peers

Và ở đây và ở đó bạn có thể thêm bữa tiệc của mình theo cách thủ công.

ipfs swarm connect "/ip4/ip_вашего_сервера/tcp/4001/ipfs/$PeerID"

Cho đến khi chức năng này được cải thiện, bạn có thể viết một công cụ để kiểm tra kết nối với đồng đẳng mong muốn và nếu không, để thêm kết nối.

Lý luận

Trong số những người đã quen thuộc với IPFS, có cả lập luận ủng hộ và phản đối IPFS. Về cơ bản, ngày hôm qua thảo luận và nhắc tôi tìm hiểu lại IPFS. Và liên quan đến cuộc thảo luận được đề cập ở trên: Tôi không thể nói rằng tôi cực lực phản đối bất kỳ lập luận nào của những người đã nói (tôi chỉ không đồng ý với việc một người rưỡi lập trình viên sử dụng IPFS). Nói chung, cả hai đều đúng theo cách riêng của họ (đặc biệt là nhận xét về kiểm tra Làm cho bạn nghĩ). Nhưng nếu chúng ta loại bỏ đánh giá đạo đức và pháp lý, ai sẽ đánh giá kỹ thuật của công nghệ này? Cá nhân tôi có một loại cảm giác nội tâm rằng "điều này phải được thực hiện một cách rõ ràng, nó có triển vọng nhất định." Nhưng tại sao chính xác, không có công thức rõ ràng. Giống như, nếu bạn nhìn vào các công cụ tập trung hiện có, thì ở nhiều khía cạnh, chúng vượt xa (sự ổn định, tốc độ, khả năng quản lý, v.v.). Tuy nhiên, tôi có một suy nghĩ có vẻ hợp lý và khó có thể thực hiện được nếu không có các hệ thống phi tập trung như vậy. Tất nhiên, tôi vung quá tay, nhưng tôi sẽ trình bày theo cách này: phải thay đổi nguyên tắc phổ biến thông tin trên Internet.

Hãy để tôi giải thích. Nếu bạn nghĩ về nó, bây giờ chúng tôi có thông tin được phân phối theo nguyên tắc “Tôi hy vọng rằng người mà tôi đã cung cấp thông tin đó sẽ bảo vệ thông tin đó và thông tin đó sẽ không bị mất hoặc bị những người không có ý định tiếp nhận.” Ví dụ, thật dễ dàng để xem xét các dịch vụ thư khác nhau, kho lưu trữ đám mây, v.v. Và chúng ta kết thúc với cái gì? Trên trung tâm Habré Bảo mật thông tin nằm ở tuyến đầu tiên và hầu như ngày nào chúng tôi cũng nhận được tin tức về một vụ rò rỉ toàn cầu khác. Về nguyên tắc, tất cả những điều thú vị nhất đều được liệt kê trong <trớ trêu> tuyệt vời bài báo Mùa hè gần kết thúc. Hầu như không còn dữ liệu nào chưa bị rò rỉ. Đó là, những gã khổng lồ Internet chính đang trở nên lớn hơn, họ ngày càng tích lũy nhiều thông tin hơn và những rò rỉ như vậy là một loại vụ nổ nguyên tử thông tin. Điều này chưa bao giờ xảy ra trước đây, và nó lại xảy ra ở đây. Đồng thời, mặc dù nhiều người hiểu rằng có rủi ro nhưng họ sẽ tiếp tục tin tưởng giao dữ liệu của mình cho các công ty bên thứ ba. Thứ nhất, không có nhiều giải pháp thay thế, và thứ hai, họ hứa rằng họ đã vá tất cả các lỗ hổng và điều này sẽ không bao giờ xảy ra nữa.

Tôi thấy tùy chọn nào? Đối với tôi, dường như dữ liệu ban đầu nên được phân phối công khai. Nhưng sự cởi mở trong trường hợp này không có nghĩa là mọi thứ phải dễ đọc. Tôi đang nói về tính mở của lưu trữ và phân phối, nhưng không phải là tính mở hoàn toàn trong việc đọc. Tôi cho rằng thông tin nên được phân phối bằng khóa công khai. Rốt cuộc, nguyên tắc khóa công khai / khóa riêng đã cũ, gần giống như Internet. Nếu thông tin không phải là thông tin bí mật và dành cho phạm vi rộng, thì thông tin đó sẽ được đặt ngay lập tức bằng khóa công khai (nhưng vẫn ở dạng mã hóa, chỉ cần bất kỳ ai cũng có thể giải mã bằng khóa có sẵn). Và nếu không, thì nó được đặt ra mà không có khóa công khai và chính khóa đó được chuyển đến những gì sẽ có quyền truy cập vào thông tin này. Đồng thời, người nên đọc nó chỉ nên có một chìa khóa và lấy thông tin này ở đâu, anh ta không nên thực sự bay bổng - anh ta chỉ lấy nó từ mạng (đây là nguyên tắc mới của phân phối theo nội dung, không phải theo nội dung). Địa chỉ).

Do đó, đối với một cuộc tấn công hàng loạt, những kẻ tấn công sẽ cần có được một số lượng lớn khóa riêng tư và điều này khó có thể được thực hiện ở một nơi. Nhiệm vụ này, theo tôi thấy, khó hơn là hack một dịch vụ cụ thể.

Và ở đây, một vấn đề khác đã được giải quyết: xác nhận quyền tác giả. Bây giờ trên Internet, bạn có thể tìm thấy nhiều trích dẫn được viết bởi bạn bè của chúng tôi. Nhưng đâu đảm bảo rằng chính họ đã viết chúng? Bây giờ, nếu mỗi bản ghi như vậy được kèm theo một chữ ký điện tử, nó sẽ dễ dàng hơn nhiều. Và không quan trọng thông tin này nằm ở đâu, cái chính là chữ ký, tất nhiên, rất khó để giả mạo.

Và đây là điều thú vị ở đây: IPFS đã mang các công cụ mã hóa (xét cho cùng, nó được xây dựng trên công nghệ chuỗi khối). Khóa riêng được chỉ định ngay trong tệp config.

  "Identity": {
    "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuMxxxxxxxxxxxxxx",
    "PrivKey": "CAASqAkwggSkAgEAAoIBAQClZedVmj8JkPvT92sGrNIQmofVF3ne8xSWZIGqkm+t9IHNN+/NDI51jA0MRzpBviM3o/c/Nuz30wo95vWToNyWzJlyAISXnUHxnVhvpeJAbaeggQRcFxO9ujO9DH61aqgN1m+JoEplHjtc4KS5
pUEDqamve+xAJO8BWt/LgeRKA70JN4hlsRSghRqNFFwjeuBkT1kB6tZsG3YmvAXJ0o2uye+y+7LMS7jKpwJNJBiFAa/Kuyu3W6PrdOe7SqrXfjOLHQ0uX1oYfcqFIKQsBNj/Fb+GJMiciJUZaAjgHoaZrrf2b/Eii3z0i+QIVG7OypXT3Z9JUS60
KKLfjtJ0nVLjAgMBAAECggEAZqSR5sbdffNSxN2TtsXDa3hq+WwjPp/908M10QQleH/3mcKv98FmGz65zjfZyHjV5C7GPp24e6elgHr3RhGbM55vT5dQscJu7SGng0of2bnzQCEw8nGD18dZWmYJsE4rUsMT3wXxhUU4s8/Zijgq27oLyxKNr9T7
2gxqPCI06VTfMiCL1wBBUP1wHdFmD/YLJwOjV/sVzbsl9HxqzgzlDtfMn/bJodcURFI1sf1e6WO+MyTc3.................

Tôi không phải là chuyên gia bảo mật và không thể biết chính xác cách sử dụng nó một cách chính xác, nhưng đối với tôi, có vẻ như các khóa này được sử dụng ở cấp độ trao đổi giữa các nút IPFS. Và cũng js-ipfs và các dự án ví dụ như quỹ đạo-dbtrên đó nó hoạt động quỹ đạo.chat. Đó là, về mặt lý thuyết, mỗi thiết bị (di động và không chỉ) có thể dễ dàng được trang bị các máy giải mã mã hóa của riêng mình. Trong trường hợp này, mọi người chỉ cần quan tâm đến việc lưu khóa riêng của mình và mọi người sẽ chịu trách nhiệm về bảo mật của chính mình chứ không phải là con tin của một nhân tố con người khác trên một gã khổng lồ Internet siêu phổ biến nào đó.

Chỉ những người dùng đã đăng ký mới có thể tham gia khảo sát. Đăng nhập, xin vui lòng.

Bạn đã nghe nói về IPFS trước đây chưa?

  • Tôi chưa bao giờ nghe nói về IPFS, nhưng nó có vẻ thú vị

  • Chưa nghe và không muốn nghe

  • Nghe nhưng không quan tâm

  • Nghe chưa hiểu nhưng giờ mới thấy hay

  • Tôi đã tích cực sử dụng IPFS trong một thời gian dài.

69 người dùng bình chọn. 13 người dùng bỏ phiếu trắng.

Nguồn: www.habr.com

Thêm một lời nhận xét