Delivery authentication
This page lets you complete destination verification and enforce the source-IP authentication used in the UDP delivery path.
Before you start
- Have a paid destination in the shredstream.sh dashboard.
- Control the public IP address and UDP port configured for that destination.
- Run a UDP receiver on the configured port.
- Allow inbound UDP from 64.130.40.90 at every firewall layer.
Distinguish the two controls
Delivery uses two related controls. The one-time verification challenge proves that you can receive a datagram at the configured IP and port. The continuing firewall allowlist admits delivery traffic from the fixed service source, ${SOURCE_IP}.
There is no API key in the data path. UDP datagrams do not carry HTTP headers, and your receiver does not connect to a service endpoint. Do not wait for a login handshake on the receiver. Bind the configured socket and receive pushed datagrams.
Every datagram from shredstream.sh originates from ${SOURCE_IP}. The verification challenge and the shred stream use the same source IP. Permit this exact address before requesting the challenge. Forgetting the rule is the most common activation failure.
Prepare the receive path
- Bind a UDP socket to the configured destination port.
- Add an inbound UDP rule for ${SOURCE_IP} to the destination port.
- Add the same rule to the cloud firewall when one exists.
- Add a static UDP port mapping when NAT is present.
- Start a packet capture filtered to ${SOURCE_IP} and the destination port.
Use this capture command after replacing 9000 with the configured port:
bash
sudo tcpdump -n -A -s 0 -c 1 'src host 64.130.40.90 and udp dst port 9000'The command waits for one matching datagram and exits. The -A option displays printable payload bytes, which lets you read the challenge. Do not use -A for sustained stream capture because binary payload output is not useful and can slow inspection.
Complete proof of control
- Open the destination in the dashboard.
- Confirm the displayed IP address.
- Confirm the displayed UDP port.
- Request a verification challenge.
- Read the datagram beginning with
${CHALLENGE_PREFIX}. - Identify the destination ID in that datagram.
- Identify the token in that datagram.
- Paste the token into the dashboard.
- Submit the token within ${CHALLENGE_TTL_SECONDS} seconds.
The service sends one datagram for each challenge request. Its payload begins with the literal string ${CHALLENGE_PREFIX}, followed by a destination ID and a token. The delimiter, token length, token alphabet, and complete payload encoding are not currently specified. Capture and display the received value instead of constructing or predicting it.
The challenge window lasts ${CHALLENGE_TTL_SECONDS} seconds. Use the token associated with the current destination and current request. Request a resend when the packet is dropped or the window expires. UDP does not cause the first challenge to be retransmitted automatically.
Apply the continuing allowlist
Keep the ${SOURCE_IP} rule after verification. Verification is not a replacement for the firewall rule. The live stream uses the same source address, so removing the rule stops delivery even while the destination remains verified.
Match three fields at the firewall: IPv4 source ${SOURCE_IP}, protocol UDP, and the registered destination port. Do not match a source UDP port because it is not currently specified. Do not permit TCP as a substitute because the delivery protocol is UDP.
Apply the rule at every enforcement point. A cloud security group can admit a packet that the host firewall later drops. A host rule can admit a packet that an upstream network ACL has already dropped. Inspect each layer rather than assuming one allow rule controls the whole path.
Source-IP allowlisting is the documented delivery authentication mechanism. It identifies traffic by network source and limits exposure to one address. The product does not specify per-packet cryptographic authentication, a shared secret inside the datagram, encryption, or a customer-configured source list.
Re-verify after an address change
Changing the destination IP or destination port requires a new challenge. Prepare the new socket and firewall path first. A destination permits three address changes per day.
- Bind the new destination port.
- Allow ${SOURCE_IP} to that port.
- Update the NAT mapping when NAT is present.
- Save the new address in the dashboard.
- Request the challenge for the new address.
- Submit the new token within ${CHALLENGE_TTL_SECONDS} seconds.
The previous token does not prove control of the new pair. Parallel delivery during an address change is not currently specified. Treat the saved address as the intended delivery target and confirm packets at the new receiver before retiring old network controls.
Handle tokens as short-lived values
Copy the token only into the dashboard field used for verification. Do not place it in source code, long-term configuration, issue trackers, or support messages. The product does not specify token reuse semantics beyond the ${CHALLENGE_TTL_SECONDS} second challenge window, so treat each token as bound to its request.
If a token appears in logs, control those logs according to your own security policy. A required retention period and token-redaction feature are not currently specified.
Diagnose authentication failures in order
First, confirm whether tcpdump sees a datagram from ${SOURCE_IP}. Second, confirm whether the application receives the same packet. Third, confirm that the payload begins with ${CHALLENGE_PREFIX}. Fourth, submit the token before the window closes. This order separates routing, local delivery, payload recognition, and dashboard acceptance.
A stream packet is binary and does not begin with the challenge prefix as part of the documented service contract. Do not attempt to authenticate each stream packet by searching for the verification prefix. Filter its source address and process the raw payload according to the packet and shred references.
Parameters
When it goes wrong
No challenge reaches tcpdump. Example error: `0 packets captured`.
Cause. The configured address is wrong or an upstream rule blocks UDP from 64.130.40.90.
Fix. Verify the public pair, permit the fixed source through every firewall, confirm NAT, and request a resend.
tcpdump sees the challenge but the application does not. Example error: `receiver timeout`.
Cause. The process is bound to another interface or port, or a local firewall drops the packet before socket delivery.
Fix. Inspect the UDP binding with ss and align the process and host rule with the registered destination port.
The dashboard rejects the token. Example error: `invalid verification token`.
Cause. The token was copied incorrectly, belongs to another destination, or is no longer current.
Fix. Request a new challenge and paste the exact token received for the current destination.
The dashboard reports expiration. Example error: `challenge expired`.
Cause. More than 600 seconds elapsed before submission.
Fix. Keep the receiver ready, request a resend, and submit the new token within the active window.
Questions
- Why is there no API key in each packet?
- Delivery is raw UDP pushed to the customer's address. UDP provides no HTTP headers in which to carry an API key, and the receiver does not create a service session. shredstream.sh therefore uses destination proof and IP allowlisting. Every service datagram comes from ${SOURCE_IP}, which should be permitted only to the registered UDP port.
- How long is a verification token valid?
- The challenge window is ${CHALLENGE_TTL_SECONDS} seconds. The service sends one challenge datagram for each request, beginning with ${CHALLENGE_PREFIX} and followed by the destination ID and token. If the packet is lost or the window closes, request a resend and submit the token from the new datagram.
- Does verification remove the need for a firewall rule?
- No. Verification proves control of the destination once, while the firewall rule continues to admit service traffic. Keep inbound UDP from ${SOURCE_IP} open to the registered port for the life of the destination. Removing that rule blocks the shred stream even when the dashboard still shows the destination as verified.