#tor #service #tor-arti #arti #attack #aerti

tor-hscrypto

Basic onion service cryptography types used by Aerti

28 releases (breaking)

new 0.30.0 May 1, 2025
0.28.0 Mar 3, 2025
0.25.0 Dec 2, 2024
0.24.0 Oct 31, 2024
0.1.2 Mar 31, 2023

#540 in Cryptography

Download history 1740/week @ 2025-01-12 1267/week @ 2025-01-19 1403/week @ 2025-01-26 2234/week @ 2025-02-02 2183/week @ 2025-02-09 1305/week @ 2025-02-16 1264/week @ 2025-02-23 1604/week @ 2025-03-02 1404/week @ 2025-03-09 1204/week @ 2025-03-16 930/week @ 2025-03-23 1280/week @ 2025-03-30 939/week @ 2025-04-06 2261/week @ 2025-04-13 1914/week @ 2025-04-20 1712/week @ 2025-04-27

6,888 downloads per month
Used in 54 crates (10 directly)

MIT/Apache and maybe LGPL-3.0-only

680KB
11K SLoC

tor-hscrypto

tor-hscrypto: Basic cryptography used by onion services

Overview

This crate is part of Arti, a project to implement Tor in Rust.

Onion services and the clients that connect to them need a few cryptographic operations not used by the rest of Tor. These include:

  • A set of key-blinding operations to derive short-term public keys from long-term public keys.
  • An ad-hoc SHA3-based message authentication code.
  • Operations to encode and decode public keys as .onion addresses.
  • A set of operations to divide time into different "periods". These periods are used as inputs to the DHT-style hash ring, and to the key-blinding operations.
  • Proof of work schemes for resisting denial of service attacks

This crate implements those operations, along with a set of wrapper types to keep us from getting confused about the numerous keys and nonces used for the onion services.

Compile-time features

  • memquota-memcost -- implement tor_memquota::HasMemoryCost for many types. (Does not actually force compiling in memory quota tracking; that's memquota in tor-memquota and higher-level crates.)

  • ope -- support for Order Preserving Encryption

  • full -- Enable all features above.

Experimental and unstable features

Note that the APIs enabled by these features are NOT covered by semantic versioning[^1] guarantees: we might break them or remove them between patch versions.

  • hs-pow-full -- Tor Hidden Services Proof of Work.

  • experimental: Enable all the above experimental features.

[^1]: Remember, semantic versioning is what makes various cargo features work reliably. To be explicit: if you want cargo update to only make safe changes, then you cannot enable these features.

License

MIT OR Apache-2.0

When the pow feature is used, we link with LGPL licensed dependencies.

Dependencies

~14–25MB
~373K SLoC