SSK: Klucz Podpisany Podnazwy
Wszystkie pliki w sieci Freenet są identyfikowane i pobierane przez
klucze plików lub
indeksy, podobnie jak strony internetowe są identyfikowane przez nazwę domeny.
Klucz Podpisany Podnazwy (SSK=podpisany klucz podprzestrzeni nazw) jest użyteczny dla stron internetowych, które będą się zmieniac w czasie. Na przykład, portal w którym ukazują się wiadomości lub informacje, które są uzupełniane lub poprawiane. Działa to w ten sposób, że pozwala różnym osobom dodawać informacje i zapobiega zmienianie przez inne osoby.
To działa używając
kryptografii kluczy publicznych do podpisywania całej stron i podstron www. Tylko osoba, która posiada tajny klucz jest w stanie dokonywać zmian i generować nowa wersję strony w systemie Freenet.
Adres serwisu www w SSK wygląda mniej więcej tak (środek został wykropkowany by się zmieścił na tej stronie):
http://localhost:8888/SSK@CxRxWs...BAAE/mojastrona-4/
Ten zbiór losowych znaków w środku napisu jest odnosnikiem do klucza publicznego i klucza symetrycznego zwiększającego prywatność przekazu. Sama część
mojastrona jest słowem wybranym przez tego kto tworzy serwis www, a
4 jest wersją strony. Numery wersji są zwiększane za kazdym razem gdy jest tworzona nowa wersja strony w sieci Freenet (nalezy ją umieścić w sieci Freenet). Używamy nadmiarowych danych ponieważ w obecnej wersji Freenet nie istnieje możliwość kasowania jakichkolwiek danych z sieci.
Modernizacja Kluczy Podnazw wyjaśni więcej dla końcowych użytkowników.
Tu mamy przykład realnego adresu SSK serwisu www w Freenet. To jest strona testowa:
http://localhost:8888/SSK@GB3wuHmtxN2wLc7g4y1ZVydkK6sOT-DuOsUo-eHK35w,c63EzO7uBEN0piUbHPkMcJYW7i7cOvG42CM3YDduXDs,AQABAAE/testinserts-3/∞
GB3wuHmtxN2wLc7g4y1ZVydkK6sOT-DuOsUo-eHK35w jest haszem klucza publicznego. Ta część całości jest potrzebna do jednoznacznego identyfikowania pliku (ale nie do odszyfrowania go), więc węzły potrzebują tego kawałka by przechowywać ten plik. Obecnie klucze publiczne są przechowywane (w postaci niezaszyfrowanej) razem z (zaszyfrowanymi) danymi.
c63EzO7uBEN0piUbHPkMcJYW7i7cOvG42CM3YDduXDs to jest klucz do odszyfrowania. Jest on znany tylko klientowi i węzeł, który przechowuje dane nie zna ich, dlatego węzeł nie potrafi odszyfrować danych bez pełnego adresu.
AQABAAE to jest rodzaj szyfrowania zastosowany w tym konkretnym przypadku itp. informacje.
Signed Subspace Key sites have largely been superseded by
Updatable Subspace Key (USK) sites, which are based on SSKs but allow for links that try to always retrieve the most up-to-date version of the site.
Przykład
Istnieje graficzne narzędzie
jSite, które jest pomocne w łatwym dodawaniu stron WWW do Freenet-u, ale ze względów pedagogicznych użyjemy
interfejsu telnet by pokazać jak przebiega proces dodawania SSK wolnej strony krok po kroku.
- Tworzymy przykładow katalog i nadajemy mu nazwę mojastrona. Może być tam kilka stron HTML i jedna nazwana index.html.
- Połącz się poprzez interfejs programu telnet i wpisz taką komendę:
telnet localhost 2323
- Na początek musimy wygenerować parę kluczy kryptograficznych. This is done randomly each time and produces two keys: one (the private key) for signing the files, and the other (the public key) for verifying the signature. Type:
MAKESSK
- This will return two strings of random-looking characters, an Insert URI (the private key for encrypting and signing) and a Request URI (for decrypting and verifying signatures). For example:
Insert URI:
SSK@AIfB3XMup9~D7o5LaKaOV8sV9LWayoegCtiH88gc-xuD,V27XCqRZYUOVFltYPSKGv9gQticpsg13DjSoBCob3a8
Request URI:
SSK@~cnUlnYEwS~nRs9y6~yXmZeLgil8MRhe8VBea4gn1Fo,V27XCqRZYUOVFltYPSKGv9gQticpsg13DjSoBCob3a8,AQABAAE
- Now we want to upload the directory and its contents to Freenet and have a link to be able to retrieve them. Type the following, replacing the "..." in the middle (which we have just done to make this fit on the page) with the full Insert URI:
PUTSSKDIR: SSK@AIfB3XMup9...CtiH88gc-xuD,V27XCqRZY...oBCob3a8/testsite#/path/to/mysite#index.html
This should upload the contents of the /path/to/mysite directory to Freenet, with a default file of index.html, and encrypted and signed with the private key we just generated. Be patient, it could take a few minutes. Eventually, it should come back with a message like this (middle bits chopped so it fits on page):
====URI: freenet:SSK@~cnUlnYEwS...4gn1Fo,V27XCqRZY...oBCob3a8,AQABAAE/testsite/====
- We can check the site works by visiting this address on a web browser:
Jak działa SSK
- Autor generuje parę kluczy: klucz prywatny do podpisywania plików i klucz publiczny do weryfikacji podpisu.
- The author also generates a single symmetric key (one that is used for both encrypting and decrypting).
- When a file is inserted into Freenet, it is encrypted with the symmetric key and signed with the private key. The signature is stored with the file. Nodes don't store the symmetric key, only the public key part of the SSK, as an index to the data. This is so they can plausibly deny knowledge of the data on their node.
- The SSK is made up of a hash of the public key, and the symmetric key. The hash of the public key acts as the index to the data for searching purposes. Also, the actual public key is stored with the data. This is so that Freenet nodes can verify the signature when the SSK file comes into their node, and also so that clients can verify the signature when retrieving the file. The symmetric key is so that clients can decrypt the file.
Do zrobienia
- Explain what cipher/mode/size is used for the public/private keypair
- Explain what cipher/mode/size is used for the symmetric key
- Explain the breakdown of the small 'tail' part of public SSK URIs, eg the ',AQABAAE' part of the above example
- Explain which hash/mode is used for the H(pubkey) part of SSK public URIs. (Is it SHA(256)? SHA(1)?)