Page MenuHomeFreeBSD

Fix AES-CTR compatibility issue in ipsec
ClosedPublic

Authored by kd on May 25 2020, 11:00 AM.
Tags
None
Referenced Files
F146256807: D24999.diff
Sun, Mar 1, 4:21 AM
Unknown Object (File)
Sun, Feb 8, 12:22 AM
Unknown Object (File)
Sat, Feb 7, 1:47 AM
Unknown Object (File)
Tue, Feb 3, 10:43 AM
Unknown Object (File)
Fri, Jan 30, 5:51 PM
Unknown Object (File)
Jan 21 2026, 7:49 AM
Unknown Object (File)
Jan 3 2026, 2:36 AM
Unknown Object (File)
Nov 28 2025, 10:23 PM
Subscribers

Details

Summary

r361390 decreased blocksize of AES-CTR from 16 to 1. Because of that ESP payload is no longer aligned to 16 bytes before being encrypted and sent.
This is a good change since RFC3686 specifies that the last block doesn't need to be aligned.
Because FreeBSD before r361390 couldn't decrypt partial blocks encrypted with AES-CTR we need to enforce 16 byte alignment in order to preserve compatibility.
Add a sysctl(on by default) to control it.

Test Plan

Create ipsec tunnel with FreeBSD host without r361390 and use AES-CTR encryption.
Ping it, turn the sysctl off, try to ping it again and verify that connectivity was lost.
Do a similar test connecting to a Linux host and FreeBSD with this patch applied.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable