Message Transmission Process

Objective
To enable secure data transmission from senders to receivers via a central server using CipherMQ, leveraging mTLS for authentication and x25519 encryption for message security.

Process Steps

  1. Initial Setup
    1. Server Configuration: The server is configured with TLS 1.3 for secure communication.
    2. Client Configuration: Receivers register their public keys with the server; senders retrieve and load the public keys of intended recipients.
  2. Message Generation & Encryption
    1. Senders generate messages in a standardized format: { "message_id": "", "sender_id": "", "sent_timestamp": "", "content": "" }
    2. Messages are encrypted for each recipient using their x25519 public key, including message_id, receiver_client_id, and ciphertext.
  3. Transmission to Central Server
    1. Senders connect to the server via mTLS for secure authentication.
    2. Encrypted messages are sent with a publish command.
    3. The server stores metadata in the table and sends an ACK to the sender.
  4. Processing & Distribution
    1. The server queues messages using a high-performance DashMap.
    2. Based on routing_key and bindings, messages are directed to recipient queues.
    3. Messages are delivered to connected recipients.
  5. Reception & Decryption
    1. Receivers connect to their designated queue, consume messages, and decrypt them using their private key.
    2. Decrypted messages are saved in a standardized file.

Receivers send an ACK to the server, which updates acknowledged_time in the database, removes the message from the queue, and retains only metadata.


Example Scenario: Labs and Research Centers

CipherMQ Labs and Research Centers Architecture Diagram
CipherMQ Secure Message Transmission Architecture

Locations Defined

Labs (Senders) — These generate and encrypt data.

  • FL-LAB (Florida Laboratory)
  • PA-LAB (Pennsylvania Laboratory)
  • MA-LAB (Massachusetts Laboratory)
  • IL-LAB (Illinois Laboratory)

Research Centers (Receivers) — These receive and decrypt data.

  • CA-RC (California Research Center)
  • NY-RC (New York Research Center)
  • SF-RC (San Francisco Research Center)

Central Server (Headquarters) — Server responsible for managing and distributing messages.

  • DC-HQ (Washington D.C Headquarters)

Event

  • FL-LAB: Generates raw data (FL-LAB_DAT_20251008_001), encrypts it for CA-RC and SF-RC, and sends via mTLS to DC-HQ.
  • PA-LAB: Generates report (PA-LAB_RPT_20251008_125), encrypts it for CA-RC, NY-RC and SF-RC, and sends via mTLS to DC-HQ.
  • MA-LAB: Generates raw data (MA-LAB_DAT_20251008_045), encrypts it for NY-RC and SF-RC, and sends via mTLS to DC-HQ.
  • IL-LAB: Generates report (IL-LAB_RPT_20251008_175), encrypts it for CA-RC and SF-RC, and sends via mTLS to DC-HQ.

Processing at Headquarters

Routes messages to queues (ca_rc_queue, ny_rc_queue, sf_rc_queue) based on routing_key.

Reception at Research Centers

  • CA-RC: Receives and decrypts messages from FL-LAB, PA-LAB, IL-LAB.
  • NY-RC: Receives and decrypts messages from PA-LAB, MA-LAB.
  • SF-RC: Receives and decrypts messages from FL-LAB, PA-LAB, MA-LAB, IL-LAB.