Simple, fast and safe cross-platform linear binary stream communication protocol. AES key exchange based on ecc secp256k1

FFAX Protocol 2 dev

简体中文

Welcome to FFAX Protocol v2

Quick start

  1. go get github.com/RealFax/FFAX
 func example()  {
	listener, err := net.Listen("tcp", "0.0.0.0:8080")
	if err != nil {
		log.Error(err.Error())
		return
	}
	for {
		var conn       net.Conn
		var err  	   error
		var key, data  []byte
		if conn, err = listener.Accept(); err != nil {
			log.Error(err.Error())
			continue
		}
		if key, err = packet.AesSecretExchange(conn); err != nil {
			log.Error(err.Error())
			continue
		}
		if data, err = crypto.Aes([]byte("Hello, FFAX Protocol"), key).Encrypt(); err != nil {
			log.Error(err.Error())
			continue
		}
		conn.Write(data)
	}
}

👀 Quick preview of this update

  • Use AES-128 encryption to make the protocol more efficient
  • Use gZip to optimize packet size
  • Solved the placeholder issue
  • Solved the problem that part of the text could cause panic (slice subscript offset)
  • Provide a non-intrusive and safer key exchange function
  • Key generator (to extract the key from Hash with the idea of ​​reliance)

Header

  • Change the previous map[string]string to map[string][]byte This will allow you to store more types of things in the header, no matter the key of the binary stream or the HMAC, or even a piece of audio and video
  • Allow users to customize the placeholder src/packet/const.go -Advanced coding method, FFAX Protocol v2 uses a lot of human readable content to reduce code redundancy and improve readability
  • Header nesting, RealFax encourages people to dare to innovate, although we do not provide such an operation to implement nested Header, but this type of func may be added in the future
  • struct binding, maybe this can also bind a struct?

Message

  • Message allows you to store various contents, which is different from Header. Although Header can store []byte, we do not recommend storing some content in Header
  • This version of FFAX Protocol allows Message to store more bytes. You can implement oversized files, oversized audio and video streams, and VOIP audio and video calls here

🚫 Signature

  • We have removed Signature from the FFAX Protocol in this version, because it is unnecessary and will increase your system burden/risk -New solution: You can store Signature in Header, Header allows you to confuse Key

👎 shortcoming

  • Binary linear storage (in large data packet scenarios will cause performance degradation), the solution: cut the content into several equal parts, set the current Message hash, timestamp, Index, Next packet in the Header hash
  • Original decoding method (array cutting)

Personalization

🔣 Placeholder

We allow you to modify the placeholders in the data packet. The placeholders are defined in src/packet/const.go, you can see three hexadecimal placeholder constants

  • global int64 = 0xFFAACC01
  • header int64 = 0xFFABCC02
  • kv int64 = 0xFFACCC03
    Of course, we do not recommend that you modify these default values. If you need to modify these for some reason, we recommend that you follow the following standards
  • Hexadecimal string starting with 0x
  • The minimum length is 4 digits such as 0xFFFF0
  • Don't reveal your placeholder to others

2.1.0 alpha project

  • Use Intel AES-NI to optimize AES encryption and decryption
  • Use Intel RNG technology to enhance the security of the key
  • Do not use linear storage, use other
Owner
Realfax Messenger
Realfax Messenger LLP, Originated in 2019
Realfax Messenger
Similar Resources

An out-of-the-box cryptographic message communication.

An out-of-the-box cryptographic message communication.

Feb 8, 2022

The Bhojpur Wallet is a platform-as-a-service product used as a Wallet Engine based on the Bhojpur.NET Platform for application delivery.

Bhojpur Wallet - Data Processing Engine The Bhojpur Wallet is a platform-as-a-service used as a Service Engine based on the Bhojpur.NET Platform. It l

Sep 26, 2022

Cross-platform application for easy encrypted sharing of files, folders, and text between devices.

Cross-platform application for easy encrypted sharing of files, folders, and text between devices.

wormhole-gui Wormhole-gui is a cross-platform application that lets you easily share files, folders and text between devices. It uses the Go implement

Dec 30, 2022

Trader is a framework that automated cryptocurrency exchange with strategy

Trader is a framework that automated cryptocurrency exchange with strategy

A framework that automated cryptocurrency exchange with strategy

Nov 29, 2022

Diffie Hellman Exchange - A Generic Transport Upgrader Implementation

Diffie Hellman Exchange A simple but fastidious attempt to write a diffie-hellman key exchange utility that could be used as transport upgraders in di

Jan 16, 2022

Peer-to-peer encrypted message exchange

Constellation Constellation is a self-managing, peer-to-peer system in which each node: Hosts a number of NaCl (Curve25519) public/private key pairs.

Nov 11, 2022

Public key derivator for ECDSA (without knowledge of the private key)

A proof of concept of a public key derivation for ECDSA (without knowledge of the private key) It is a demonstration of how to implement a simple key

Nov 9, 2022

Arbitrum is a Layer 2 cryptocurrency platform that makes smart contracts scalable, fast, and private.

Arbitrum is a Layer 2 cryptocurrency platform that makes smart contracts scalable, fast, and private.

Arbitrum is a Layer 2 cryptocurrency platform that makes smart contracts scalable, fast, and private. Arbitrum interoperates closely with Ethereum, so Ethereum developers can easily cross-compile their contracts to run on Arbitrum. Arbitrum achieves these goals through a unique combination of incentives, network protocol design, and virtual machine architecture.

Jan 8, 2023

A blockchains platform with high throughput, and blazing fast transactions

A blockchains platform with high throughput, and blazing fast transactions

Node implementation for the Avalanche network - a blockchains platform with high throughput, and blazing fast transactions. Installation Avalanche is

Oct 31, 2021
Tradingview-2-exchange - Place buy/sell orders in exchange(binance) when trading view strategy raise alert message

TradingView-2-Exchange This application is used to place a buy/sell order in Bin

Sep 27, 2022
Ekliptic - Primitives for cryptographic operations on the secp256k1 curve, with zero dependencies and excellent performance

Ekliptic This package provides primitives for cryptographic operations on the se

Sep 7, 2022
Go Encrypt! Is a simple command-line encryption and decryption application using AES-256 GCM.

Go Encrypt! Go Encrypt! is a command-line application used to easily encrypt and decrypt files with the AES-256 GCM encryption algorithm. Usage Usage

Jan 5, 2022
Interblockchain communication protocol (IBC) implementation in Golang.

ibc-go Interblockchain communication protocol (IBC) implementation in Golang built as a SDK module. Components Core The core/ directory contains the S

Jan 7, 2023
An easy-to-use XChaCha20-encryption wrapper for io.ReadWriteCloser (even lossy UDP) using ECDH key exchange algorithm, ED25519 signatures and Blake3+Poly1305 checksums/message-authentication for Go (golang). Also a multiplexer.

Quick start Prepare keys (on both sides): [ -f ~/.ssh/id_ed25519 ] && [ -f ~/.ssh/id_ed25519.pub ] || ssh-keygen -t ed25519 scp ~/.ssh/id_ed25519.pub

Dec 30, 2022
A golang library to use aes encrypt easier.

Aes a golang library to use aes encrypt easier. Install go get github.com/hanson/aes Document import import github.com/hanson/aes CBC orig := "hello

Dec 8, 2022
Supports the safe and convenient execution of asynchronous computations with goroutines and provides facilities for the safe retrieval of the computation results.

Rendezvous The Rendezvous library supports the safe and convenient execution of asynchronous computations with goroutines and provides facilities for

Dec 29, 2021
sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP
sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP

sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP. (demo)

Jan 9, 2023
Cross commerce challenge - Cross Commerce Store Challenge With Golang
Cross commerce challenge - Cross Commerce Store Challenge With Golang

Cross Commerce Store Desafio Simples Aplicação ETL Todo o código fonte está cont

Feb 13, 2022
Eunomia is a distributed application framework that support Gossip protocol, QuorumNWR algorithm, PBFT algorithm, PoW algorithm, and ZAB protocol and so on.

Introduction Eunomia is a distributed application framework that facilitates developers to quickly develop distributed applications and supports distr

Sep 28, 2021