IPFS بدون ألم (لكن هذا ليس دقيقًا)

IPFS بدون ألم (لكن هذا ليس دقيقًا)

على الرغم من حقيقة أن حبري كان بالفعل أكثر من مقال عن IPFS.

سأوضح على الفور أنني لست خبيرًا في هذا المجال ، لكنني أبديت اهتمامًا بهذه التكنولوجيا أكثر من مرة ، لكن محاولة التلاعب بها غالبًا ما تسببت في بعض الألم. بدأت اليوم في إجراء التجارب مرة أخرى وحصلت على بعض النتائج التي أود مشاركتها. باختصار ، سيتم وصف عملية تثبيت IPFS وبعض الميزات (تم إجراء كل شيء على ubuntu ، ولم أجربه على الأنظمة الأساسية الأخرى).

إذا فاتتك ماهية IPFS ، فستتم كتابتها ببعض التفاصيل هنا: habr.com/ar/post/314768

تركيب

من أجل نقاء التجربة ، أقترح تثبيتها على الفور على بعض الخوادم الخارجية ، حيث سننظر في بعض المزالق في العمل في الوضع المحلي والبعد. ثم ، إذا رغبت في ذلك ، لن يتم هدمه لفترة طويلة ، ليس هناك الكثير.

تثبيت go

الوثائق الرسمية
انظر الإصدار الحالي في golang.org/dl

ملاحظة: من الأفضل تثبيت IPFS نيابة عن المستخدم الذي من المفترض أن يستخدمه في أغلب الأحيان. الحقيقة هي أنه أدناه سننظر في خيار التثبيت عبر FUSE وهناك بعض التفاصيل الدقيقة.

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

فأنت بحاجة إلى تحديث البيئة (مزيد من التفاصيل هنا: 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

التحقق من أن تم تثبيت go

go version

قم بتثبيت IPFS

أحببت طريقة التثبيت أكثر من غيرها تحديث ipfs.

قم بتثبيته باستخدام الأمر

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

بعد ذلك يمكنك تشغيل الأوامر التالية:

إصدارات تحديث ipfs - لمشاهدة جميع الإصدارات المتاحة للتنزيل.
إصدار تحديث ipfs - لمعرفة الإصدار المثبت حاليًا (حتى يتم تثبيت IPFS ، لن يكون هناك شيء).
تثبيت تحديث ipfs الأحدث - قم بتثبيت أحدث إصدار من IPFS. بدلاً من الأحدث ، على التوالي ، يمكنك تحديد أي إصدار مرغوب فيه من قائمة الإصدارات المتاحة.

تثبيت ipfs

ipfs-update install latest

مراجعة

ipfs --version

مباشرة مع التثبيت بعبارات عامة كل شيء.

ابدأ IPFS

التهيئة

تحتاج أولاً إلى إجراء التهيئة.

ipfs init

ردًا على ذلك ، ستتلقى شيئًا كهذا:

 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

يمكنك تشغيل الأمر المقترح

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

نتيجة

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

هنا ، في رأيي ، يبدأ الشيء المثير للاهتمام. بدأ الرجال في مرحلة التثبيت بالفعل في استخدام تقنياتهم الخاصة. لم يتم إنشاء التجزئة المقترحة QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv خصيصًا لك ، ولكنها مخيطة في الإصدار. أي قبل الإصدار ، أعدوا نصًا ترحيبيًا ، وصبوه في IPFS وأضافوا العنوان إلى المثبت. أعتقد أنه رائع جدًا. ويمكن الآن عرض هذا الملف (بتعبير أدق ، المجلد بأكمله) ليس فقط محليًا ، ولكن أيضًا على البوابة الرسمية ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv. في الوقت نفسه ، يمكنك التأكد من أن محتويات المجلد لم تتغير بأي شكل من الأشكال ، لأنه إذا تم تغييرها ، فربما تغيرت التجزئة أيضًا.

بالمناسبة ، في هذه الحالة ، لدى IPFS بعض أوجه التشابه مع خادم التحكم في الإصدار. إذا قمت بإجراء تغييرات على الملفات المصدر للمجلد وصب المجلد مرة أخرى في IPFS ، فسيتلقى عنوانًا جديدًا. في الوقت نفسه ، لن ينتقل المجلد القديم إلى أي مكان بهذا الشكل وسيكون متاحًا في عنوانه السابق.

إطلاق مباشر

ipfs daemon

يجب أن تتلقى ردًا مثل هذا:

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

فتح الأبواب على الإنترنت

انتبه إلى هذين السطرين:

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

الآن ، إذا قمت بتثبيت IPFS محليًا ، فستتمكن من الوصول إلى واجهات IPFS باستخدام العناوين المحلية وسيكون كل شيء متاحًا لك (على سبيل المثال ، مؤسسة الكوثر: 5001 / webui /). ولكن عند التثبيت على خادم خارجي ، يتم افتراضيًا إغلاق البوابات أمام الإنترنت. البوابة الثانية:

  1. مشرف webui (جيثب) على المنفذ 5001.
  2. واجهة برمجة تطبيقات خارجية على المنفذ 8080 (للقراءة فقط).

حتى الآن ، يمكن فتح كلا المنفذين (5001 و 8080) لإجراء التجارب ، ولكن في الخادم القتالي ، بالطبع ، يجب إغلاق المنفذ 5001 بجدار حماية. يوجد أيضًا منفذ 4001 ، وهو ضروري حتى يتمكن أقرانك الآخرون من العثور عليك. يجب تركها مفتوحة للطلبات الخارجية.

افتح ~ / .ipfs / config للتحرير وابحث عن هذه الأسطر فيه:

"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"
}

غيّر 127.0.0.1 إلى عنوان IP الخاص بخادمك واحفظ الملف ، ثم أعد تشغيل ipfs (أوقف أمر التشغيل باستخدام Ctrl + C وابدأ تشغيله مرة أخرى).

يجب ان تحصل

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

الآن يجب أن تكون الواجهات الخارجية متاحة.

تحقق من

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

يجب فتح ملف التمهيدي أعلاه.

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

يجب أن تفتح واجهة الويب.

إذا كان webui يعمل من أجلك ، فيمكن تغيير إعدادات IPFS مباشرة فيه ، بما في ذلك عرض الإحصائيات ، ولكن أدناه سأفكر في خيارات التكوين مباشرة من خلال ملف التكوين ، وهو أمر غير مهم بشكل عام. من الأفضل فقط أن تتذكر مكان التكوين بالضبط وماذا تفعل به ، وإلا إذا لم يعمل وجه الويب ، فسيكون الأمر أكثر صعوبة.

إعداد واجهة ويب للعمل مع الخادم الخاص بك

إليكم المأزق الأول الذي استغرق حوالي ثلاث ساعات.

إذا قمت بتثبيت IPFS على خادم خارجي ، ولكنك لم تقم بتثبيت IPFS أو تشغيله محليًا ، فعند الانتقال إلى / webui في واجهة الويب ، سترى خطأ في الاتصال:

IPFS بدون ألم (لكن هذا ليس دقيقًا)

الحقيقة هي أن webui ، في رأيي ، يعمل بشكل غامض للغاية. أولاً ، يحاول الاتصال بواجهة برمجة التطبيقات للخادم حيث تكون الواجهة مفتوحة (بناءً على العنوان الموجود في المتصفح ، بالطبع). وإذا لم يعمل هناك ، فسيحاول الاتصال بالبوابة المحلية. وإذا كان لديك IPFS قيد التشغيل محليًا ، فسيعمل webui بشكل جيد بالنسبة لك ، وستعمل فقط مع IPFS المحلي ، وليس خارجيًا ، على الرغم من أنك فتحت webui على خادم خارجي. ثم تقوم بتحميل الملفات ، ولكن لسبب ما لا تراها على هذا النحو على خادم خارجي ...

وإذا لم يكن يعمل محليًا ، فسنحصل على خطأ في الاتصال. في حالتنا ، يرجع الخطأ على الأرجح إلى CORS ، والذي يُشار إليه أيضًا بواسطة webui ، مما يقترح إضافة ملف 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"]'

لقد سجلت للتو حرف بدل

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

يمكن العثور على الرؤوس المضافة في نفس الملف ~ / .ipfs / config. في حالتي هو كذلك

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

نقوم بإعادة تشغيل ipfs ونرى أن webui قد تم الاتصال بنجاح (على أي حال ، يجب أن يكون ، إذا فتحت بوابات الطلبات من الخارج ، كما هو موضح أعلاه).

يمكنك الآن تحميل المجلدات والملفات مباشرة من خلال واجهة الويب ، وكذلك إنشاء المجلدات الخاصة بك.

تركيب نظام ملفات FUSE

ها هي ميزة مثيرة للاهتمام.

الملفات (بالإضافة إلى المجلدات) ، لا يمكننا إضافتها فقط من خلال واجهة الويب ، ولكن أيضًا مباشرة في الجهاز ، على سبيل المثال

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

التجزئة الأخيرة هي تجزئة المجلد الجذر.

باستخدام هذا التجزئة ، يمكننا فتح مجلد على أي عقدة ipfs (والتي يمكنها العثور على العقدة الخاصة بنا والحصول على المحتويات) ، ويمكننا ذلك في واجهة الويب على المنفذ 5001 أو 8080 ، أو يمكننا محليًا عبر ipfs.

ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx
QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt

ولكن لا يزال بإمكانك فتحه كمجلد عادي.

دعونا ننشئ مجلدين في الجذر ونمنح حقوقهما لمستخدمنا.

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

وأعد تشغيل ipfs بعلامة --mount

ipfs daemon --mount

يمكنك إنشاء مجلدات في أماكن أخرى وتحديد المسار إليها من خلال معلمات البرنامج الخفي ipfs -mount -mount-ipfs / ipfs_path -mount-ipns / ipns_path

القراءة الآن من هذا المجلد أمر غير معتاد إلى حد ما.

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

أي أنه لا يوجد وصول مباشر إلى جذر هذا المجلد. ولكن يمكنك الحصول على المحتوى بمعرفة التجزئة.

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

في الوقت نفسه ، يعمل الإكمال التلقائي داخل المجلد عند تحديد المسار.

كما قلت أعلاه ، هناك بعض التفاصيل الدقيقة مع مثل هذا التركيب: افتراضيًا ، تتوفر مجلدات FUSE المُثبتة فقط للمستخدم الحالي (حتى الجذر لن يكون قادرًا على القراءة من هذا المجلد ، ناهيك عن المستخدمين الآخرين في النظام). إذا كنت تريد جعل هذه المجلدات متاحة للمستخدمين الآخرين ، فأنت بحاجة إلى تغيير "FuseAllowOther": false إلى "FuseAllowOther": true. لكن هذا ليس كل شيء. إذا قمت بتشغيل IPFS كجذر ، فسيكون كل شيء على ما يرام. وإذا كان نيابة عن مستخدم عادي (حتى sudo) ، فستحصل على خطأ

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

في هذه الحالة ، تحتاج إلى تحرير /etc/fuse.conf بإلغاء التعليق على سطر #user_allow_other.

بعد ذلك ، أعد تشغيل ipfs.

المشكلات المعروفة في FUSE

لوحظت المشكلة أكثر من مرة بعد إعادة تشغيل ipfs مع التركيب (وربما في حالات أخرى) ، تصبح نقاط التحميل / ipfs و / ipns غير متاحة. لا يوجد وصول لهم ، ويظهر ls -la / ipfs ؟؟؟؟ في قائمة الحقوق.

وجدت هذا الحل:

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

ثم أعد تشغيل ipfs.

إضافة خدمة

بطبيعة الحال ، فإن التشغيل في المحطة مناسب فقط للاختبارات الأولية. في وضع القتال ، يجب أن يبدأ البرنامج الخفي تلقائيًا عند بدء تشغيل النظام.

بالنيابة عن sudo ، أنشئ الملف /etc/systemd/system/ipfs.service واكتب إليه:

[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

يجب بالطبع استبدال اسم المستخدم بالمستخدم الخاص بك (وربما يكون المسار الكامل لبرنامج ipfs مختلفًا بالنسبة لك (يجب تحديد المسار الكامل)).

نقوم بتفعيل الخدمة.

sudo systemctl enable ipfs.service

نبدأ الخدمة.

sudo service ipfs start

التحقق من حالة الخدمة.

sudo service ipfs status

لنقاء التجربة ، سيكون من الممكن إعادة تشغيل الخادم في المستقبل للتحقق من أن ipfs يبدأ تلقائيًا بنجاح.

مضيفا لنا الأعياد المعروفة

ضع في اعتبارك موقفًا يكون لدينا فيه عقد IPFS مثبتة على كل من خادم خارجي ومحلي. على خادم خارجي ، نضيف بعض الملفات ونحاول الحصول عليها عبر IPFS محليًا بواسطة CID. ماذا سيحدث؟ بالطبع ، لا يعرف الخادم المحلي على الأرجح أي شيء عن خادمنا الخارجي وسيحاول ببساطة العثور على الملف بواسطة CID من خلال "سؤال" جميع نظراء IPFS المتاحين له (والذي تمكن بالفعل من "التعرف عليه"). هؤلاء بدورهم سيسألون الآخرين. وهكذا ، حتى يتم العثور على الملف. في الواقع ، يحدث نفس الشيء عندما نحاول الحصول على الملف من خلال البوابة الرسمية ipfs.io. إذا كنت محظوظًا ، فسيتم العثور على الملف في بضع ثوانٍ. وإذا لم يكن الأمر كذلك ، فلن يتم العثور عليه حتى في بضع دقائق ، مما يؤثر بشكل كبير على راحة العمل. لكننا نعرف المكان الذي سيظهر فيه هذا الملف لأول مرة. فلماذا لا نقول على الفور لخادمنا المحلي "ابحث هناك أولاً"؟ على ما يبدو ، يمكن القيام بذلك.

1. نذهب إلى الخادم البعيد ونبحث في الملف ~ / .ipfs / config

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

2. قم بتشغيل حالة ipfs الخاصة بخدمة sudo وابحث عن إدخالات Swarm فيها ، على سبيل المثال:

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

3. نضيف من هذا العنوان العام للنموذج "/ ip4 / ip_your_server / tcp / 4001 / ipfs / $ PeerID".

4. من أجل الموثوقية ، سنحاول إضافة هذا العنوان إلى أقراننا من خلال webui المحلي الخاص بنا.

IPFS بدون ألم (لكن هذا ليس دقيقًا)

5. إذا كان كل شيء على ما يرام ، افتح الملف config ~ / .ipfs / config ، وابحث عن "Bootstrap" فيه: [...
وأضف العنوان المستلم أولاً إلى المصفوفة.

أعد تشغيل IPFS.

الآن دعنا نضيف الملف إلى الخادم الخارجي ونحاول طلبه على الخادم المحلي. يجب أن تطير بسرعة.

لكن هذه الوظيفة ليست مستقرة بعد. بقدر ما أفهم ، حتى إذا حددنا عنوان أحد الأقران في Bootstrap ، فإن ipfs يغير قائمة الاتصالات النشطة مع الأقران أثناء العملية. على أي حال ، فإن مناقشة هذا والرغبات فيما يتعلق بإمكانية تحديد الأعياد الدائمة جارية هنا ويبدو أن من المفترض أن إضافة بعض الوظائف إلى [البريد الإلكتروني محمي]+

يمكن عرض قائمة النظراء الحاليين في كل من webui وفي الجهاز.

ipfs swarm peers

وهنا يمكنك إضافة وليمتك يدويًا.

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

حتى يتم تحسين هذه الوظيفة ، يمكنك كتابة أداة للتحقق من وجود اتصال بالنظير المطلوب ، وإذا لم يتم ذلك ، يمكنك إضافة اتصال.

منطق

من بين أولئك الذين هم بالفعل على دراية بـ IPFS ، هناك حجج مع IPFS وضدها. في الأساس ، أمس مناقشة ودفعني للبحث في IPFS مرة أخرى. وفيما يتعلق بالمناقشة المذكورة أعلاه: لا أستطيع أن أقول إنني أعارض بشدة بعض حجج أولئك الذين تحدثوا (أنا لا أتفق فقط مع حقيقة أن المبرمجين ونصفهم يستخدمون IPFS). بشكل عام ، كلاهما على حق بطريقته الخاصة (خاصة التعليق على الشيكات يجعلك تعتقد). لكن إذا تجاهلنا التقييم الأخلاقي والقانوني ، فمن سيقدم تقييمًا تقنيًا لهذه التكنولوجيا؟ أنا شخصياً لدي نوع من الشعور الداخلي بأن "هذا يجب أن يتم بشكل لا لبس فيه ، وله آفاق معينة." ولكن لماذا بالضبط لا توجد صياغة واضحة. على سبيل المثال ، إذا نظرت إلى الأدوات المركزية الحالية ، فهي في كثير من النواحي متقدمة جدًا (الاستقرار ، والسرعة ، والقدرة على الإدارة ، وما إلى ذلك). ومع ذلك ، لدي فكرة واحدة تبدو منطقية والتي يصعب تنفيذها بدون مثل هذه الأنظمة اللامركزية. بالطبع ، أنا أتأرجح بشدة ، لكنني سأصيغها على هذا النحو: يجب تغيير مبدأ نشر المعلومات على الإنترنت.

دعني أشرح. إذا فكرت في الأمر ، فلدينا الآن معلومات موزعة وفقًا لمبدأ "أتمنى أن يحميها الشخص الذي أعطيتها له ولن يضيعها أو يستقبلها من لم يقصدها". على سبيل المثال ، من السهل التفكير في خدمات البريد المختلفة والمخازن السحابية وما إلى ذلك. وماذا ننتهي؟ في محور حبري أمن المعلومات في السطر الأول وكل يوم تقريبًا نتلقى أخبارًا عن تسرب عالمي آخر. من حيث المبدأ ، يتم سرد جميع الأشياء الأكثر إثارة للاهتمام في رائعة <irony> شرط الصيف انتهى تقريبا. لم يتبق أي بيانات غير مسربة تقريبًا. أي أن عمالقة الإنترنت الرئيسيين أصبحوا أكبر ، وهم يكدسون المزيد والمزيد من المعلومات ، ومثل هذه التسريبات هي نوع من التفجيرات الذرية للمعلومات. لم يحدث هذا من قبل ، وها هو مرة أخرى. في الوقت نفسه ، على الرغم من أن الكثيرين يدركون أن هناك مخاطر ، إلا أنهم سيستمرون في الوثوق ببياناتهم لشركات الطرف الثالث. أولاً ، لا يوجد الكثير من البدائل ، وثانيًا ، يعدون بأنهم قاموا بترميم جميع الثقوب ولن يحدث هذا مرة أخرى.

ما هو الخيار الذي أراه؟ يبدو لي أنه يجب توزيع البيانات علانية في البداية. لكن الانفتاح في هذه الحالة لا يعني أن كل شيء يجب أن يكون سهل القراءة. أنا أتحدث عن انفتاح التخزين والتوزيع ، لكن ليس الانفتاح التام في القراءة. أفترض أنه يجب توزيع المعلومات باستخدام المفاتيح العامة. بعد كل شيء ، فإن مبدأ المفاتيح العامة / الخاصة قديم بالفعل ، مثل الإنترنت تقريبًا. إذا لم تكن المعلومات سرية ومخصصة لدائرة واسعة ، فسيتم وضعها على الفور باستخدام مفتاح عام (ولكن لا يزال في شكل مشفر ، يمكن لأي شخص فك تشفيرها باستخدام المفتاح المتاح). وإذا لم يكن الأمر كذلك ، فسيتم وضعه بدون مفتاح عام ، ويتم نقل المفتاح نفسه إلى ما يجب أن يكون له حق الوصول إلى هذه المعلومات. في الوقت نفسه ، يجب أن يكون لدى الشخص الذي يجب أن يقرأها مفتاحًا فقط ، ومن أين يحصل على هذه المعلومات ، لا ينبغي أن يرتفع حقًا - إنه يسحبها فقط من الشبكة (هذا هو المبدأ الجديد للتوزيع حسب المحتوى ، وليس عن طريق عنوان).

وبالتالي ، بالنسبة للهجوم الجماعي ، سيحتاج المهاجمون إلى الحصول على عدد كبير من المفاتيح الخاصة ، ومن غير المرجح أن يتم ذلك في مكان واحد. هذه المهمة ، كما أراها ، أصعب من اختراق خدمة معينة.

وهنا تم إغلاق مشكلة أخرى: تأكيد التأليف. الآن يمكنك العثور على العديد من الاقتباسات التي كتبها أصدقاؤنا على الإنترنت. لكن أين هو الضمان أنهم هم من كتبوها؟ الآن ، إذا كان كل سجل من هذا القبيل مصحوبًا بتوقيع رقمي ، فسيكون ذلك أسهل بكثير. وبغض النظر عن مكان تكمن هذه المعلومات ، فالشيء الرئيسي هو التوقيع ، والذي يصعب تزويره بالطبع.

وإليك ما هو مثير للاهتمام هنا: IPFS يحمل بالفعل أدوات تشفير (بعد كل شيء ، إنه مبني على تقنية blockchain). يتم تحديد المفتاح الخاص على الفور في ملف 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.................

أنا لست متخصصًا في الأمان ولا يمكنني معرفة كيفية استخدامه بشكل صحيح بالضبط ، ولكن يبدو لي أن هذه المفاتيح تُستخدم على مستوى التبادل بين عقد IPFS. و أيضا js-ipfs ومثال على المشاريع مثل المدار- ديسيبلالذي يعمل عليه orbit.chat. أي ، من الناحية النظرية ، يمكن تجهيز كل جهاز (محمول وليس فقط) بسهولة بآلات فك التشفير الخاصة به. في هذه الحالة ، يبقى للجميع فقط الاهتمام بحفظ مفاتيحهم الخاصة ، وسيكون الجميع مسؤولين عن أمنهم الخاص ، ولن يكونوا رهينة لعامل بشري آخر على أحد عمالقة الإنترنت المشهورين.

يمكن للمستخدمين المسجلين فقط المشاركة في الاستطلاع. تسجيل الدخول، من فضلك.

هل سمعت عن IPFS من قبل؟

  • لم أسمع أبدًا عن IPFS ، لكن يبدو أنه مثير للاهتمام

  • لم أسمع ولا أريد أن أسمع

  • سمعت ولكن غير مهتم

  • سمعت ، لكن لم أفهمها ، لكنها الآن تبدو مثيرة للاهتمام

  • لقد كنت أستخدم IPFS بنشاط لفترة طويلة.

صوت 69 مستخدمين. امتنع 13 مستخدما عن التصويت.

المصدر: www.habr.com

إضافة تعليق