# Securing IPv6 Neighbor Discovery Address Resolution with Voucher-Based Addressing
## 3 Voucher-Based Addressing
### Address Generation and Verification
The Link Voucher contains instructions for KDF parameters and algorithm selection as well as the 128-bit seed value to use. 3. The KDF salt is created as a variable-length concatenation of a few different inputs in the order specified by the list below. The adjective \"raw\" dictates specifically binary values, not the hexadecimal string notations of said values. 1. The raw LLID of the network interface on which VBAs are being generated, in network byte order. Since the salt value has a varying length, this is not required to be an IEEE 802 MAC address. It must only represent the LLID to which the VBA(s) are to be bound and which will be provided to verifying nodes during NDAR transactions. 2. The string \"vba\". Figure 4: The Voucher-Based Address generation procedure is used via SLAAC to generate all the initial interface addresses from the interface on Host A. Router X is a Voucher Bearer authorized by local administrative policy to delegate Link Voucher information to its neighbors. The raw prefix (subnet prefix) value in network byte order. This must match the prefix that will be prepended to the final VBA given during NDAR processes. 4. The final address suffix is computed as follows: 1. The first 16 bits are the bitwise complement of an XOR between the node-selected iteration count L and the first hexet of the known voucher seed. 2. The least significant 48 bits are 6 sequential bytes from the computed KDF hash H, skipping its first hexetet (two bytes). When enabled and enforced by a receiving interface's Interface Enforcement Mode (IEM; see Table 1), the verification process uses the information embedded within the IP address that is provided during an NDAR exchange. VBA verification simply mirrors the generation of the reported VBA locally; Figure 5 illustrates this process. If the reconstructed address of the target node does not match the IP address reported in the NDAR transaction, then the VBA is invalid and communication with the node is denied according to the verifier's IEM setting. The Link Voucher (\"LV\" in the Figure) is always retrieved from the state preserved on the verifying interface, and never from an external source that is not the acting Voucher Bearer. If the verification procedure fails due to a voucher mismatch between Nodes A and B, then there is most likely either (1) a synchronization problem, (2) malicious activity, or (3) an issue with multiple vouchers being distributed simultaneously. Figure 5: The VBA verification procedure. The generation process is repeated at the verifier using various values known about the neighbor and the current voucher parameters. In step 1, the verifier (Node A) requests binding details from the advertiser (Node B), to which the advertiser responds with its reported VBA in step 2. In step 3, the verifier begins independently reconstructing the VBA to ensure the same IP address is created from all known inputs. In step 4, a simple equivalency check occurs, whose truthfulness determines whether the verifier should cache and accept traffic from the advertiser. During step 1 from the Figure, Node A can choose to attach a source link-layer address option (SLLAO) to its solicitation, which will cause Node B to verify its binding with the IP Sender Address from the NS packet. The \(Z^{\prime}\) function returns the L value (iteration count) embedded within Node B's address. This function is the opposite of \(Z\) from the address generation process: it uses an input address to determine L rather than using an input L to determine an encoded heket. Despite the different inputs, the naming alludes to the opposite purposes for each function. VBA does little to modify Neighbor Discovery, instead opting to change the behavior and decision-making processes of its underlying software implementations. Figure 6 expresses the application of these changes in a practical scenario, where both nodes are required to engage their VBA verification processes between certain NDAR events.