37 lines
2.3 KiB
Markdown
37 lines
2.3 KiB
Markdown
# 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.
|
|
|
|
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.
|
|
|
|
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 ;) |