Security, Trust, and Privacy in HPC: A Systematic Mapping Study of Threats, Key Technologies, and Challenges
Alessandro Cilardo, Bruno Casella, Lorenzo Brescia, Eliana Pastor and Iacopo Colonnelli
This repository contains all the artifacts mentioned in the paper:
- Code to fetch papers:
main.py - Intermediate data: Extracted papers and execution logs (
output/) - Data visualization: Exploratory Data Analysis scripts (
eda/) - Final corpus: The final selection of 90 papers (
eda/final_papers.csv) - Complete protocol followed during the Systematic Mapping Study (SMS) is available in this Google Sheet. The spreadsheet includes a dedicated tab for each phase of the SMS, mapping the entire process from the initial pilot study used to define the search keywords to the final paper classification based on our proposed taxonomy.
High-performance computing (HPC) is increasingly integrated with cloud infrastructures, AI factories, and federated learning environments, challenging the traditional assumption of fully trusted facilities. To investigate how trust is established and minimized in these settings, we conduct a Systematic Mapping Study (SMS) of 90 primary works on security and privacy in HPC and related large-scale systems. Using a reproducible methodology, we analyze threat models, enabling technologies, TCB reduction strategies, evaluation practices, and research trends. Results show a strong focus on confidentiality, integrity, and Trusted Execution Environments, while highlighting limited large-scale validation. We identify key research gaps and outline directions for designing trustworthy HPC systems.
python -m venv .fetching
source .fetching/bin/activate
pip install -r requirements.txtTo collect papers from Scopus, you first need to obtain a Scopus API key. Once you have it, prepend SCOPUS_API_KEY="your_key" to each of the commands below.
Every command must be executed using the following syntax:
python main.py COMMAND
For building the papers.csv containing all paper returned by the query use:
python main.py searchSometime, the search fails for internal Scopus errors (500 like). To overcome this problem you can resume the search from a custom number (that is suggested in the error). For instance you can see error like that:
[!] Scopus API error 503: {"error-response":{"error-code":"Service Unavailable","error-message":"One of our services it is not currently available"}}
[i] Start again the script setting start to 500 to resume from the last successful fetch.And you can resume with
python main.py search 500It is possible to create a CSV file for each paper in previous search: papers.csv.
The following command will create a folder containing as many CSV as papers in papers.csv, each containing the references.
You can use:
python main.py refsOr as before, for starting by specific index:
python main.py refs 500This command read all CSVs of refs produced by refs command and create a single CSV avoiding duplications. The resulting CSV will be papers_snowball_interm.csv
python main.py dedupNow we have a list with all the referenced paper by the papers returned by our query.
For each of these papers, we need to retrieve full information (title, abstract and keywords) in order to make locally a new query. With Scopus it is not possible to search just in a group of documents.
The populate command will create papers_snowball.csv. Again we can specify an argument to start from that index in case we reach the weekly quota or we get Scopus server error:
python main.py populate START_INDEXFinally, it is possible to perform a new query specifying new terms for ADD_G1, ADD_G2, ADD_G3 and ADD_G4.
The new query is performed without scopus APIs. It is performed locally on the papers_snowball.csv file. In this way, we can experiment terms without incurring quotas.
Run the query like this, will produce new_papers.csv
python main.py query