tinyssh

Introduction

TinySSH is a minimalistic SSH server which implements only a subset of SSHv2 features.
Twitter: @tinyssh
Github: https://github.com/janmojzis/tinyssh

Features

  • easy auditable - TinySSH has less than 100000 words of code
  • no dynamic memory allocation - TinySSH has all memory statically allocated (less than 1MB)
  • simple configuration - TinySSH can’t be misconfigured
  • reusing code - TinySSH is reusing libraries from CurveCP implementation
  • reusing software - TinySSH is using tcpserver/systemd socket/inetd for TCP connection
  • limited amount of features - TinySSH doesn’t have features such: SSH1 protocol, compression, …
  • no older cryptographic primitives - rsa, dsa, classic diffie-hellman, hmac-md5, hmac-sha1, 3des, arcfour, …
  • no copyright restrictions - TinySSH is in the public domain (see the licence)
  • no dependency on OpenSSL - TinySSH has its own crypto library compatible with NaCl, Libsodium
  • speed - TinySSH can be also compiled using high-speed NaCl library instead of internal.

Security features

  • cryptographic library (minimum 128-bit security, side-channel attack resistant, state-of-the-art crypto, …)
  • public-key authentication only (no password or hostbased authentication)

Crypto primitives

  • State-of-the-art crypto: ssh-ed25519, curve25519-sha256, chacha20-poly1305@openssh.com
  • Older standard: ecdsa-sha2-nistp256, ecdh-sha2-nistp256, aes256-ctr, hmac-sha2-256 removed in version 20190101
  • Postquantum crypto: sntrup761x25519-sha512@openssh.com, chacha20-poly1305@openssh.com

Project timelime

  • experimental: 2014.01.01 - 2014.12.31 (experimentation)
  • alpha(updated): 2015.01.01 - 2017.12.31 (not ready for production use, ready for testing)
  • beta(updated): 2018.01.01 - ????.??.?? (ready for production use)
  • stable: expected ????.??.?? - (ready for production use - including post-quantum crypto)

Acknowledgments

TinySSH can be compiled using primitives from NaCl library tnx Tanja Lange, Daniel J. Bernstein and Peter Schwabe
TinySSH uses curve25519-sha256 introduced by libssh.org thx libssh.org developers
TinySSH uses ssh-ed25519/chacha20-poly1305@openssh.com introduced by OpenSSH thx OpenSSH developers

Current release (20240101)

  • has 63899 words of code
  • beta release