summaryrefslogtreecommitdiff
path: root/docs/Hardening_docs.txt
blob: 53a61034189fa5b85563706d2a40a44edc6b1010 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Hardening request packets are sent as crypto request packets (see crypto docs.)
NOTE: currently only get nodes requests are tested in the code which is why 
there is only one test (more will be added soon.)

All hardening requests must contain exactly 768 bytes of data. (The data sent 
must be padded with zeros if it is smaller than that.)

1. Get the information (IP_port, client_id) of the node we want to test.
2. Find a couple random nodes that is not that node (one for each test.)
3. Send crypto request packets to each of these random nodes with the data being:

[byte with value: 02 (get nodes test request)][struct Node_format (the node to 
test.)][client_id(32 bytes) the id to query the node with.][padding]

4. The random node receives a packet.
-The packet is a get nodes test request:
    send a get_node request to that node with the id to query in the request.
    when a send_node response is received, send the following response to the 
	person who sent us the get nodes test request packet:
        [byte with value: 03 (get nodes test response)][client_id(32 bytes): 
		the id of the tested node][The list of nodes it responded with in IPv6 
		Node format (struct Node_Format)]
    PROTIP: (get node requests and response contain an encrypted part that you 
	can use to store information so that you don't 
    have to store in your memory where/if to send back the response from the 
	send node)

5. Receive the test responses.
-If the test(s) pass (the nodes behave in a satisfactory manner), make these 
nodes have priority over those who don't pass the test(s).