Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.3%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: nmosier
  • Language: C++
  • Default Branch: main
  • Size: 1.14 MB
Statistics
  • Stars: 3
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created almost 4 years ago · Last pushed almost 3 years ago
Metadata Files
Readme Citation

README.md

LLSCT

This repository contains some of the passes implementing LLSCT, but not all. The rest of LLSCT is implemented here: llsct-llvm.

bench/additional-baselines.md contains the full results including the additional baseline mitigations based on BladeSLH and UltimateSLH, which we did not have space to include in the paper.

Building

LLSCT is only supported for Linux (but may run on Intel-based Macs with some tweaks).

Requires gcc-12 (for C++20 features).

Dependencies

LLSCT currently requires the following dependencies: - gperftools - libunwind - CMake (version >= 3.25) - Ninja - Python3 - Python packages: pandas, seaborn - GCC 12 You can install all of these using Homebrew .

Installing Dependencies

Here's how to install LLSCT's dependencies using Homebrew. sh brew install gperftools libunwind cmake ninja python3 gcc binutils glibc pip3 install pandas seaborn export LD_LIBRARY_PATH="$(brew --prefix gcc)/lib/gcc/current:$LD_LIBRARY_PATH"

Building llsct-llvm

To build LLSCT, you will need to clone two repositories: llsct-llvm and llsct-passes (this repository). First, clone and build llsct-llvm: sh git clone https://github.com/nmosier/clouxx-llvm --depth=1 llsct-llvm mkdir llsct-llvm/build && cd llsct-llvm/build cmake -G Ninja -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_COMPILER=g++-12 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../install -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_PROJECTS='clang;lld' -DLLVM_TARGETS_TO_BUILD='X86' ../llvm ninja ninja install cd ../..

Building llsct-passes

Now, clone and configure llsct-passes: sh git clone https://github.com/nmosier/clouxx-passes llsct-passes mkdir llsct-passes/build && cd llsct-passes/build cmake -G Ninja -DCMAKE_CXX_COMPILER=g++-12 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLSCT_LLVM_DIR=$PWD/../../llsct-llvm/install -DLLSCT_REQUIRE_CET=Off .. ninja src/all The last command builds all of LLSCT's IR passes. The -DLLSCT_ENABLE_CET=Off flag disables runtime Intel CET enforcement if your Linux distribution doesn't support userspace CET (at the time of writing, none of them do).

To build all the benchmark programs so that you can run them as standaloen programs, build the raw_compile target: sh ninja raw_compile All the test binaries will have filenames matching bench-new/raw_<project>_<name>_<size>_<mitigation>.

To run the benchmark to obtain a graph of runtime overhead: sh ninja time_compile clean_bench && ninja -j1 time_pdf and a PDF of the overhead plot will be written to bench-new/time.pdf.

Troubleshooting

sh sudo cpupower frequency-set --governor performance

Citing LLSCT

If you use LLSCT in your work, we would appreciate it if you cite our paper (bibtex):

N. Mosier, H. Nemati, J. Mitchell, C. Trippel, "Serberus: Protecting Cryptographic Code from Spectres at Compile-Time," 2024 IEEE Symposium on Security and Privacy (S&P), 2024.

Owner

  • Name: Nicholas Mosier
  • Login: nmosier
  • Kind: user
  • Location: San Jose, CA
  • Company: Stanford University

PhD student in CS at Stanford University

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: LLSCT
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Nicholas
    family-names: Mosier
    email: nmosier@stanford.edu
    affiliation: Stanford University
    orcid: 'https://orcid.org/0000-0003-3705-8161'
repository-code: 'https://github.com/nmosier/llsct'
preferred-citation:
  type: conference-paper
  authors:
    - given-names: Nicholas
      family-names: Mosier
      email: nmosier@stanford.edu
      affiliation: Stanford University
      orcid: 'https://orcid.org/0000-0003-3705-8161'
    - given-names: Hamed
      family-names: Nemati
      email: hnnemati@stanford.edu
      affiliation: Stanford University
      orcid: 'https://orcid.org/0000-0001-9251-3679'
    - given-names: John
      family-names: Mitchell
      email: jcm@stanford.edu
      affiliation: Stanford University
    - given-names: Caroline
      family-names: Trippel
      email: trippel@stanford.edu
      affiliation: Stanford University
      orcid: 'https://orcid.org/0000-0002-5776-1121'
  title: "Serberus: Protecting Cryptographic Code from Spectres at Compile-Time"
  year: 2024
  conference: 2024 IEEE Symposium on Security and Privacy (S&P)

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1