View Issue Details

IDProjectCategoryView StatusLast Update
001054910000-007: ProfilesSpecpublic2025-11-13 11:27
ReporterBjarneBostrom Assigned ToRandy Armstrong  
PrioritynormalSeverityminorReproducibilityhave not tried
Status assignedResolutionopen 
Product Version1.05.04 
Summary0010549: ALL ECC-related Security Algorithms lack "URI definition"
Description

(This is related to the Profiles website, but since that is basically "Part 7"'s data part this issue is done to Part 7 here)

The https://profiles.opcfoundation.org/conformancegroup/155 "Security Algorithms" that are new (not used in RSA) and related to ECC lack the "The URI is ..." text part compared to the RSA-counterparts. For example, in AsymmetricSignatureAlgorithm_RSA-PSS-SHA2-256 there is this line "The URI is http://opcfoundation.org/UA/security/rsa-pss-sha2-256.". As far as I see the ECC-ones do not have it, for example:

AsymmetricSignatureAlgorithm_ECDSA-SHA2-256
ECC digital signature algorithm described in http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf.
The hash algorithm is SHA2 with 256 bits and is described in http://tools.ietf.org/html/rfc6234.

AsymmetricSignatureAlgorithm_ECDSA-SHA2-384
ECC digital signature algorithm described in http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf.
The hash algorithm is SHA2 with 384 bits and is described in http://tools.ietf.org/html/rfc6234.

AsymmetricSignatureAlgorithm_PureEdDSA-25519
ECC digital signature algorithm Ed25519 described in
http://tools.ietf.org/html/rfc8032

AsymmetricSignatureAlgorithm_PureEdDSA-448
ECC digital signature algorithm Ed448 described in
http://tools.ietf.org/html/rfc8032.

While they do have some URLs/URIs related to the definitions of those algorithms, I think those are not the same thing compared to the definitions of RSA-ones.

I'm not 100% sure are the URIs needed, but even if they wouldn't it would be nice to have 1:1 for the RSA ones to have something to refer in code.

One potential place where the lack causes issue is in Part 4 section 5.7.2 on CreateSessionResponse (https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.2), which defines on the serverSignature SignatureData: "The SignatureAlgorithm shall be the AsymmetricSignatureAlgorithm specified in the SecurityPolicy for the Endpoint. The SignatureData type is defined in 7.37.". The SignatureData then defines a String field 'algorithm' with "A string containing the URI of the algorithm. The URI string values are defined as part of the security profiles specified in OPC 10000-7.". It is not currently possible to "use ECC", as there is nothing defined to put to the 'algorithm' field. Unless the intention would be to allow leaving that field null/empty (since the algorithm is known from the endpoint/securitypolicy). However, then it should be written more clearly to indicate this is allowed or intended. In addition, if such wording is written, I would consider making different wording for RSA and ECC, since I'm not sure setting this null in RSA might cause interoperability issues.

One additional place URI-usage place is in ActivateSession (https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.3), in the request there is "userTokenSignature SignatureData" as well. However, I'm not sure does it apply to ECC.

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

Jim Luth

2025-10-07 15:38

administrator   ~0023447

Agreed to update ECC profiles to include info that URI is the security policy URI

BjarneBostrom

2025-11-03 09:30

reporter   ~0023491

I did write the issue from the viewpoint of the spec. However, my original issue was that in Prosys OPC UA SDK for Java, those URIs defined at https://profiles.opcfoundation.org/conformancegroup/155 are used to create a set of SecurityAlgorithm constants. This is in isolation of the SecurityPolicies (which are then later defined as a set of SecurityAlgorithms).

Just to be clear
http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP256r1, uses AsymmetricSignatureAlgorithm_ECDSA-SHA2-256
http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256, uses AsymmetricSignatureAlgorithm_ECDSA-SHA2-256

They both use the same 'SecurityAlgorithm'. It wouldn't work to use either of the uris in the very definition of AsymmetricSignatureAlgorithm_ECDSA-SHA2-256 itself, it would be ambiguous. Since this is SDK-design-level problem, you can ignore it. However, it can also be that other SDKs have made similar choices. So, I would still like to see each SecurityAlgorithm to be defined with an unique URI and that be put instead of the SecurityPolicy-uri, if possible.

Protocol/binary wise the proposed fix probably works, as it was more of what to use there (other than passing "TODO" in the binary transit I mean).

If you go with the SecurityPolicyUri-route, then the text of https://reference.opcfoundation.org/Core/Part4/v105/docs/7.36,
" algorithm String A string containing the URI of the algorithm. "
would then need to change and be conditional that in RSA it is the URI of the algorithm and in ECC it is the whole SecurityPolicy-level URI.

Randy Armstrong

2025-11-13 11:25

administrator   ~0023532

Last edited: 2025-11-13 11:27

The UserTokenPolicy needs to specify 2 things: the ECC Curve to use and the ECC Signature Algorithm.

The SecuritPolicyUri in the UserTokenPolicy provides this information.

When a Server receives a UserIdentityToken it always has to look up UserTokenPolicy from the PolicyId so it will always know what the SignatureAlgorithm is supposed to be.

This means all new SecurityPolicies can safely mandate NULL for the algorithm.

Issue History

Date Modified Username Field Change
2025-10-06 10:56 BjarneBostrom New Issue
2025-10-07 15:38 Jim Luth Note Added: 0023447
2025-10-07 15:38 Jim Luth Assigned To => Randy Armstrong
2025-10-07 15:38 Jim Luth Status new => assigned
2025-11-03 09:30 BjarneBostrom Note Added: 0023491
2025-11-13 11:25 Randy Armstrong Note Added: 0023532
2025-11-13 11:27 Randy Armstrong Note Edited: 0023532