Jump to content

InterPlanetary File System

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 2a02:aa11:b280:c200:75a1:a8ef:3563:46f (talk) at 16:31, 20 January 2021 (added example to design). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

InterPlanetary File System
Original author(s)Juan Benet and Protocol Labs[1]
Developer(s)Protocol Labs
Initial releaseFebruary 2015; 10 years ago (2015-02)[1]
Stable release
0.7.0 / 23 September 2020; 4 years ago (2020-09-23)[2]
Repositorygithub.com/ipfs/ipfs
Written inProtocol implementations: Go (reference implementation), JavaScript, C,[3] Python
Client libraries: Go, Java, JavaScript, Python, Scala, Haskell, Swift, Common Lisp, Rust, Ruby, PHP, C#, Erlang
Operating systemLinux, FreeBSD, macOS, Windows
Available inGo, JavaScript, Python
TypeProtocol, distributed file system, content delivery network
LicenseMIT license, Apache license 2.0
Websiteipfs.io

The InterPlanetary File System (IPFS) is a protocol and peer-to-peer network for storing and sharing data in a distributed file system. IPFS uses content-addressing to uniquely identify each file in a global namespace connecting all computing devices.[4]

IPFS allows users to not only receive but host content, in a similar manner to BitTorrent. As opposed to a centrally located server, IPFS is built around a decentralized system of user-operators who hold a portion of the overall data, creating a resilient system of file storage and sharing. Any user in the network can serve a file by its content address, and other peers in the network can find and request that content from any node who has it using a distributed hash table (DHT).

IPFS was launched in an alpha version in February 2015, and by October of the same year was described by TechCrunch as "quickly spreading by word of mouth."[1]

The logo of the online encyclopedia Wikipedia has an IPFS hash with the following code: QmRW3V9znzFW9M5FYbitSEvd5dQrPWGvPvgQD6LM22Tv8D. It can be accessed with that hash over HTTP by a public gateway or a local IPFS instance.

Design

The core idea of IPFS is to use a Cryptographic hash function order to identify resources. Most naming schemes in use (e.g. URL, File URI) use names that can be bound to resources dynamically and arbitrarily. IPFS opts instead to use a cryptographic hash of the data, giving every piece a unique address that can be derived from the data alone, without relying on a central authority to store a mapping. The added benefit, apart from having a URI scheme that persists across time and space, is that a received does not have to trust the sender to send the correct data; anyone can verify if a hash actually belongs to piece of data simply by hashing it. IPFS then provides a protocol that allows anyone with a hash to locate the associated piece of data anywhere in the network, provided that it exists. This effectively results in a universal, global, even interplanetary file system, to which anyone can read and write data to.

As an example, imagine a university wants to publish a script in form of a pdf to its students. Traditionally, they'd rent or setup centrally managed servers on which the pdfs are located, and then bind a url (e.g. university.com/script.pdf) to that file using DNS, so people can lookup the file given the URL. After the course ends, that name would likely cease to be bound to that resource, and hence the pdf would cease from existence after the semester ends. Additionally, whenever the script changes, everyone has to be notified and re-download the resource again.

In IPFS, the pdf would simply be hashed, and the hash then distributed to the students. The students could then download the file from the servers of the university, but also of each other, saving bandwidth and server costs. Even years after the semester ends and the website of the course has long been discontinued, if anyone that owns the pdf connects it to the network, anyone who has the hash will be able to download it; the hash will effectively identify this particular pdf forever. Furthermore, if parts of the script changed, IPFS allows to only redistribute the parts of the script that changed, and allows the students to keep the parts that didn't.

History

IPFS was launched in an alpha version in February 2015, and by October of the same year was described by TechCrunch as "quickly spreading by word of mouth."[1]

The Catalan independence referendum, taking place in September–October 2017, was deemed illegal by the Constitutional Court of Spain and many related websites were blocked. Subsequently, the Catalan Pirate Party mirrored the website on IPFS to bypass the High Court of Justice of Catalonia order of blocking.[5][6]

Phishing attacks have also been distributed through Cloudflare's IPFS gateway since July 2018. The phishing scam HTML is stored on IPFS, and displayed via Cloudflare's gateway. The connection shows as secure via a Cloudflare SSL certificate.[7]

The IPStorm botnet, first detected in June 2019, uses IPFS, so it can hide its command-and-control amongst the flow of legitimate data on the IPFS network.[8] Security researchers had worked out previously the theoretical possibility of using IPFS as a botnet command-and-control system.[9][10]

Other notable uses

  • IPFS was used to create a mirror of Wikipedia, which allows people living in jurisdictions where Wikipedia is blocked to access the content of Wikipedia.[11] That archived version of Wikipedia is a limited immutable copy that cannot be updated.
  • Filecoin, also inter-related to IPFS and developed by Juan Benet and Protocol Labs, is an IPFS-based cooperative storage cloud.[12]
  • Cloudflare runs a distributed web gateway to simplify, speed up, and secure access to IPFS without needing a local node.[13]
  • Microsoft's self-sovereign identity system, Microsoft ION, builds on the Bitcoin blockchain and IPFS through a Sidetree-based DID network.[14]
  • Brave uses Origin Protocol and IPFS to host its decentralized merchandise store.[15]
  • Opera for Android has default support for IPFS, allowing mobile users to browse ipfs:// links to access data on the IPFS network.[16]

See also

References

  1. ^ a b c d Case, Amber (4 October 2015). "Why The Internet Needs IPFS Before It's Too Late". TechCrunch. Retrieved 16 July 2019.
  2. ^ https://github.com/ipfs/go-ipfs/releases
  3. ^ Agorise (23 October 2017). "c-ipfs: IPFS implementation in C. Why C? Think Bitshares' Stealth backups, OpenWrt routers (decentralize the internet/meshnet!), Android TV, decentralized Media, decentralized websites, decent." Github.com. Retrieved 25 October 2017.
  4. ^ Finley, Klint (20 June 2016). "The Inventors of the Internet Are Trying to Build a Truly Permanent Web". Wired.
  5. ^ Balcell, Marta Poblet (5 October 2017). "Inside Catalonia's cypherpunk referendum". Eureka Street.
  6. ^ Hill, Paul (30 September 2017). "Catalan referendum app removed from Google Play Store". Neowin. Retrieved 6 October 2017.
  7. ^ Abrams, Lawrence (4 October 2018). "Phishing Attacks Distributed Through Cloudflare's IPFS Gateway". Bleeping Computer. Retrieved 31 August 2019.
  8. ^ Palmer, Danny (11 June 2019). "This unusual Windows malware is controlled via a P2P network". ZDNet. Retrieved 31 August 2019.
  9. ^ Patsakis, Constantinos; Casino, Fran (4 June 2019). "Hydras and IPFS: a decentralised playground for malware". International Journal of Information Security. 18 (6): 787–799. arXiv:1905.11880. doi:10.1007/s10207-019-00443-0. S2CID 167217444.
  10. ^ Macabeus, Bruno; Vinicius, Marcus (6 May 2018). "Protocolos IPFS e IPNS como meio para o controle de botnet: prova de conceito". WSCDC - SBRC 2018.
  11. ^ Dale, Brady (10 May 2017). "Turkey Can't Block This Copy of Wikipedia". Observer Media. Archived from the original on 18 October 2017. Retrieved 20 December 2017.
  12. ^ Johnson, Steven (16 January 2018). "Beyond the Bitcoin Bubble". The New York Times. Retrieved 26 September 2018.
  13. ^ Orcutt, Mike (5 October 2018). "A big tech company is working to free the internet from big tech companies". MIT Technology Review. Retrieved 21 April 2020.
  14. ^ Simons, Alex (13 May 2019). "Toward scalable decentralized identifier systems". Azure Active Directory Identity Blog.
  15. ^ "Brave Launches New Swag Store Powered by Origin". Brave.com. 2 April 2020. Retrieved 21 April 2020.
  16. ^ "Opera introduces major updates to its blockchain-browser on Android". Opera Blog. 3 March 2020. Retrieved 21 April 2020.