Introduction

neuropil is a small c-library which by default adds two layers of encryption to communication channels. It allows you to address identities (a device, an application, a service or a person) worldwide without compromise for privacy or security requirements.

The project embraces modern concepts like named-data networks, self-sovereign identities, zero trust architectures and attributes based access control to increase the cybersecurity level of it’s users beyond the current state-of-technology. In effect its users will benefit from the new way of secure, scalable and souvereign data integration to easily comply with legal, organizational, operational and compliance regulations and requirements.

All neuropil enabled applications or devices form an ad-hoc cluster of connected nodes which constantly exchange messages to detect failures and to exchange information. Nodes can connect and disconnect at any time, messages will still be transported to their destinations.


Use Cases

  • global and secure nano / micro-service driver

  • establishment of data ownerships based on distributed ACL/ABAC rules

  • enable exclusive access to devices / resources for partners

  • establish secure application defined networks (ADN) and ad-hoc VPN connections


Features

  • zero-trust framework to comply with high data protection and security laws

  • zero discovery of identities and data channels

  • distributed cybersecurity mesh with built-in governance capabilities

  • implementation of group encryption (fan-out messaging)

  • technical double encryption layer to implement zero-knowledge infrastructures

  • message chunking to prevent side channel analysis from network sniffers

  • type-safe recursive tree structure for (de-)serializing message

  • pre-defined message exchange pattern that ease development

  • C99 compliant and able to run from embedded devices to enterprise applications

  • core library has only one dependency to the external encryption library (libsodium)

  • pull based message exchange to prevent overload and to enable lean management for it services

  • event / task driven architecture (coroutine inspired) which executes small pieces of code asynchronously


Roadmap

  • implement realm concept

  • add zero knowledge proof based on ristretto255

  • re-work acknowledge handling to use skiplist and partial acknowledgment

  • finalize message exchange pattern definitions (missing: one-to-subgroup only)

  • implement back-pressure routing algorithm

  • implement windowing to transmit several messages in one data paket

  • implement multicast encryption

  • allow more than one identity on top of a node

  • allow more configuration options

  • add relaying example node

  • define message callbacks in case of undelivered messages

  • hook in a javascript bindings for message callback handling

  • finalize token / message structure

  • more documentation and test cases

  • … and many many more ideas …

Achieved goals

  • pubsub group encryption is working

  • distinguish between virtual, private, protected and public mx properties

  • there is an existing Lua and Python binding

  • Token and message structure has been defined

  • NGI ZeroDiscovery: a privacy preserving search index

  • NGI ZeroDiscovery: ARA based discovery of data channels

  • Fed4Fire: scale-up test to thousands of nodes

  • NGI Assure: CWT / COSE for serializing np_token

  • NGI Assure: identity import/export from NPKS (neuropil key store)