Update of "Algorithm and Implementation"
Not logged in
Overview

Artifact ID: d84ad10afd51aa0f402e7268159326c3eadc8291
Page Name:Algorithm and Implementation
Date: 2017-03-14 06:33:21
Original User: martin_vahi
Parent: dfc8c205b45f88a1d4cc90f45fbc918083214338 (diff)
Next 57ed71bad0edc0d86335dfe3bcbe671b2016b27f
Content

The main property, where the Silktorrent differs from the other similar projects is that its algorithm is modular. The modularity of its implementation is at least as granular as its algorithm.


Algorithm


Silktorrent Packets

Silktorrent packets are tar-files that have a name that contains the size of the file and at least one cryptogaphically secure hash of that tar-file. The reason, why tar is used in stead of tar.gz, zip, xz, etc. is that multi-TiB files that consist of only regular patterns, may be all zeros or all ones, can be compressed to a very small file and that kind of file can be used for DoS-attacking computers that run software that unpacks the compression result. The Silktorret packet contains folders "header" and "payload". The folder "header" contains a file "silktorrent_salt.txt", which is used for giving the cryptographically secure hash of the tar-file a semirandom value and is  used as a padding to somewhat hide the minimum size of the payload. This allows a single payload to have multiple Silktorrent packets. The idea is that when one package name is blacklisted by censors, the same payload can be distributed by using a different Silktorrent packet. 


Optional Silktorrent Packet Header Fields

All of the files in the "header" folder are part of the tar-file and influence the secure hash of the tar-file. Secure hash algorithms do have collisions, but within the limits of those collisions the headers are inseparable from the Silktorrent packet. Silktorrent packet creation software is allowed to add additional, implementation specific, files to a folder called "custom_headers" and the "custom_headers" must be a direct child folder of the "header" folder.  



Silktorrent Tunnels 

The general idea is that there's a random graph, an addressing scheme for navigating in a huge random graph and the tunnels are the edges of the graph. A tunnel can be an USB-stick that is passed on, literally a mail pigeon with a memory card attached to its leg, a drone with an USB-stick, ordinary HTTP, BitTorrent, Tor network, Freenet, etc. The details are at a separate document.

Specification_v_1_0