As we add rewards for SP retrieval checks performed by SPARK, we must design a robust fraud detection mechanism to combat malicious nodes. In this document, we describe the threat model - what are the adversaries and possible attack vectors.

IMPORTANT

We assume SPARK will check retrievals using the recently introduced HTTP transport only. Checking Bitswap and Graphsync retrievals are out of the scope.

A job (a retrieval check) is defined as a pair (cid, address). The client is expected to retrieve cid from address using the HTTP protocol.

See Workflow of a single retrieval check performed by SPARK for a detailed description of job scheduling and retrieval workflow.

Adversaries

Attack vectors

Client-side

  1. The client does not perform the retrieval check and reports a fake successful retrieval.
  2. The client does not perform the retrieval check and reports the retrieval as not successful.
  3. The client performs the retrieval but reports different results than observed in order to harm the reputation of competing SPs.
    1. Skew metrics like TTFB, TTLB and download speed (bandwidth).
    2. Pretend that the server cannot be reached or did not respond.
    3. Pretend that the server returned the wrong payload (content verification failed).
  4. The client starts the retrieval check, waits for the response headers and discards the response body (CAR stream with content) in order to save bandwidth.
  5. The client does not verify the integrity of the received content (whether the blocks in the CAR stream build up to the requested CID).
  6. The client retrieves the given CID but from a different SP.
  7. The client dials the given provider but retrieves a different CID.