kiloparsec/README.md

37 lines
2.3 KiB
Markdown
Raw Normal View History

2023-11-14 03:27:36 +03:00
# Kiloparsec
_The protocol is under active development, early access stage. Please wait for alfa!_
The new generation of __PARanoid SECurity__ protocol, advanced, faster, more secure.
It is not compatible with parsec family and no more based on an Universa crypto library. To better fit
the modern state of threats and rate of cyber crimes, KiloParsec uses more encryption and random key exchange on each
and every connection (while parsec caches session keys to avoid time-consuming keys exchange). For the same reason,
keys cryptography for session is shifted to use ed25519 curves which are supposed to provide agreeable strength with
enough speed to protect every connection with a unique new keys. Also, we completely get rid of SHA2.
2023-11-14 03:36:58 +03:00
Kiloparsec also uses a denser binary format (bipack, no more key-values)
which reveals much less on the inner data structure, providing advanced
typed RPC interfaces with kotlinx.serialization.
The architecture allows connecting same functional interfaces to several various type channels at once.
2023-11-14 03:27:36 +03:00
Also, the difference from parsecs is that there are no more unencrypted layer commands available to users.
All RPC is performed over the encrypted connection.
# Technical description
Kiloparsec is a dull-duplex fully async (coroutine based) Remote Procedure Call protocol with typed parameters
and support for serializing exceptions (e.g. exception thrown while executing remote command will be caught and
rethrown at the caller context).
Kiloparsec is not REST, it _has advanced session mechanisms_ and built-in authentication based on the same curve keys.
Integrated tools to prevent MITM attacks include also non-transferred independently generated token that is calculated
independently on the ends and is never transferred with the network. Comparing it somehow (visually, with QR code, etc)
could add a very robust guarantee of the connection safety and ingenuity.
Kiloparsec has built-in completely asynchronous (coroutine based top-down) transport layer based on TCP (JVM only as for now) and the same async Websocket-based transport based on KTOR. Websocket client is multiplatform, though the server is JVM only insofar.
# Licensing
When the project reaches some stable state, it will be available under Apache or MIT license. I promise ;) I do
write opensource ;)