Hi,

On Sat, Oct 10, 2026 at 10:11:25PM +0000, Christian Zoepfchen wrote:
> Synopsis: iked rejects ECDSA-384 signature authentication from macOS/iOS 
> native IKEv2 clients
> Category: system
> Environment:
>     System      : OpenBSD 7.9 (amd64, GENERIC.MP, syspatches 001-034), iked 
> from base
>     Peer        : macOS 26.6.2 (Tahoe), native IKEv2 client 
> (NEIKEv2Provider), configuration profile
>                   with CertificateType=ECDSA384 and a P-384 client certificate
> Description:
>     With a P-384 client certificate the Apple client authenticates with AUTH 
> method 10
>     (ECDSA-384, RFC 4754). It does not send r|s as 2x48 bytes; instead it 
> pads r and s with
>     leading zeros to 2x104 bytes (104 = maximum DER length of a P-384 
> signature), so the AUTH
>     data is 208 bytes long. Apple's own log shows
>         Authentication Protocol = ECDSA384
>         Authentication Data = {length = 208, bytes = 0x00000000 00000000 
> 00000000 00000000 ... }
>     iked logs "ikev2_pld_auth: method ECDSA_384 length 208" and then
>     "ikev2_msg_authverify: authentication failed" and sends 
> AUTHENTICATION_FAILED.
>     The reason is the length check in sbin/iked/crypto.c, 
> _dsa_verify_prepare():
>         if (*lenp < 64 || *lenp > 132 || *lenp % 2)
>             goto done;

As RFC4754 section 7 [1] defines these boundaries, I prefer to stick
with them.  Does strongswan give a hint, why they relaxed this?

[1] https://www.rfc-editor.org/info/rfc4754/#section-7

>     which rejects the payload before BN_bin2bn() would strip the leading 
> zeros. strongSwan
>     accepts the same payload (it splits the data in half and lets BN_bin2bn() 
> handle it), which
>     is why Apple clients work with strongSwan but not with iked.
>     Apple's encoding is not RFC 4754 conformant, but the value is correct; 
> the numbers are only
>     zero-padded. Since the halves are DER-encoded afterwards and 
> EVP_DigestVerifyFinal() checks r
>     and s against the curve order anyway, the upper bound in the pre-check 
> seems to be a sanity
>     limit rather than a security control.
> How-To-Repeat:
>     iked as responder with a P-384 server certificate and any client policy; 
> macOS 26 (or iOS 26)
>     with a configuration profile: com.apple.vpn.managed, VPNType IKEv2, 
> AuthenticationMethod
>     Certificate, CertificateType ECDSA384, P-384 client certificate (PKCS12 
> payload). IKE proposal
>     aes-256 / hmac-sha2-384 / ecp384. The IKE_AUTH request is rejected with 
> AUTHENTICATION_FAILED;
>     the server-side CRL/chain checks pass (ca_validate_cert ... ok).
> Fix:
>     Relaxing the upper bound makes the client connect (tested with 512; even 
> lengths >= 64 are
>     still required and r/s are validated by libcrypto):
>     --- sbin/iked/crypto.c
>     +++ sbin/iked/crypto.c
>     @@ -1149,7 +1149,7 @@
>                  * buffer (we cannot override the given buffer) and the caller
>                  * has to free this buffer ('freeme').
>                  */
>     -           if (*lenp < 64 || *lenp > 132 || *lenp % 2)
>     +           if (*lenp < 64 || *lenp > 512 || *lenp % 2)
>                         goto done;
>                 bnlen = (*lenp)/2;
>                 /* sigp points to concatenation: r|s */
>     A stricter alternative would be to derive the expected size from the 
> key's curve and accept
>     any even length >= 2*n whose extra leading bytes are zero.
> 
> Sincerly yours,
> 
> Chris
> 
> 
> 
> etis GmbH
> 
> Christian Zöpfchen 
> Geschäftsführer
> 
> Metternichstr. 28 - 30
> 54292 Trier
> 
> Tel.: +496514936700
> Fax: +4965149367099
> 
> E-Mail: [email protected]
> WWW: www.etis-gmbh.de
> 
> Pflichtangaben: www.etis-gmbh.de/pflichtangaben
> Unsere Preistabelle und allgemeinen Geschäftsbedingungen finden Sie auf 
> unserer Website.
> 
> Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte 
> Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail 
> irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und 
> vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte 
> Weitergabe dieser Mail ist nicht gestattet.
> 
> This e-mail may contain confidential and/or privileged information. If you 
> are not the intended recipient (or have received this e-mail in error) please 
> notify the sender immediately and destroy this e-mail. Any unauthorized 
> copying, disclosure or distribution of the material in this e-mail is 
> strictly forbidden.
> 

Reply via email to