2.2.3. RTI Security Plugins

2.2.3.1. Wire Compatibility

2.2.3.1.1. Permissions expiration enforcement

Starting in release 7.6.0, the Security Plugins enforce Permissions expiration at the time marked by the <notAfter> tag in the DomainParticipant’s Permissions Grant, for the entire DomainParticipant lifecycle. Therefore, DomainParticipants in 7.6.0 will stop communicating with remote DomainParticipants that have expired permissions. This release also introduces a way to renew the expiring permissions at runtime, allowing DomainParticipants to continue their operation in the system. Support for permissions renewal requires an additional, user-supplied mechanism for periodically supplying and renewing DomainParticipants Permissions Documents.

Pre-7.6.0 DomainParticipants verify Permissions validity only during local DomainParticipant creation and during remote DomainParticipant authentication. They do not offer a way to renew their Permissions and will be removed from the system once their permissions expire. If you require 7.6.0 DomainParticipants to interoperate with older Security Plugins versions, there are two workarounds for pre-7.6.0 DomainParticipants available:

  • Restart the DomainParticipant with a new Permissions Document. With this option, your system must be tolerant to intrinsic, periodic DomainParticipant downtimes.

  • Configure the Permissions Document with a <notAfter> tag value sufficiently in the future, so that it doesn’t expire during DomainParticipant runtime. This option incurs a security risk. The risk can be mitigated with short-lived identity certificates (available since release 7.2.0) or with OCSP (available since release 7.5.0).

Refer to Permissions Expiration in the RTI Security Plugins User’s Manual for more details.

2.2.3.2. Changes to Building an Application

2.2.3.2.1. OpenSSL 3 upgrade

Release 7.6.0 of the Security Plugins upgrades the version of OpenSSL® from 3.0.12 to 3.5.1. The Security Plugins bundles have been renamed from 3.0 (e.g., rti_security_plugins-7.5.0-target-openssl-3.0-<architecture>.rtipkg) to 3.5 (e.g., rti_security_plugins-7.6.0-target-openssl-3.5-<architecture>.rtipkg). These bundles are API-compatible with OpenSSL version 3.5.1, not with versions earlier than OpenSSL 3.5.1. Note that Security Plugins 7.6.0 has only been tested by RTI using OpenSSL 3.5.1. If you need Security Plugins 7.6.0 to run against older versions of OpenSSL, please contact support@rti.com.

If you use OpenSSL 3.5.1 to generate a Identity CA certificate, you may get the following error when you attempt to create a DomainParticipant:

X509_verify_cert returned 0 with error 79: invalid CA certificate

You may be using an X.509 v3 Identity CA that does not have basicConstraints = CA:true. Refer to The basicConstraints X.509 v3 extension in the RTI Security Plugins User’s Manual for more details. In the .cnf configuration file, make sure the x509_extensions = v3_ca line is not commented out.

Note

When running openssl ca or openssl x509, OpenSSL version 3.2.0 and above generate X.509 v3 (as opposed to v1) certificates by default.

The certificates used by the shipped examples (i.e., the certificates in the rti_workspace/7.6.0/examples/dds_security/cert directory) have been updated with X.509 v3 certificates.

OpenSSL 3.4.0 and above no longer support the X25519 and X448 key establishment algorithms in the FIPS provider. This change affects you if you are setting authentication.enable_experimental_algorithms to TRUE and using the FIPS provider.

2.2.3.3. Configuration Changes

2.2.3.3.1. Changes to the default cryptographic algorithms

In this release, the Security Plugins changed the list of default supported algorithms to be used if you don’t specify an algorithm rule in the <allowed_security_algorithms> tag of the Governance Document. The default supported algorithms include only the algorithms listed in the OMG DDS Security 1.2 specification. RTI-specific and experimental algorithms are no longer included in the supported algorithm list by default and need to be explicitly listed in the Governance Document. If your system uses such algorithms, you must update your Governance Document to continue using them. See Supported Cryptographic Algorithms in the Security Plugins User’s Manual for more information.

2.2.3.3.2. Plugin-specific access_control.permissions_file property no longer available

This release of the Security Plugins removes the plugin-specific access_control.permissions_file property. You must now use the dds.sec.access.permissions property according to the DDS Security specification. See Properties for Configuring Access Control in the Security Plugins User’s Manual for more information.

2.2.3.3.3. Renaming of the advance notice properties

This release of the Security Plugins renames the dds.participant.trust_plugins.certificate_expiration_advance_notice_duration.sec property to dds.participant.trust_plugins.expiration_advance_notice_duration.sec and the dds.participant.trust_plugins.certificate_expiration_advance_notice_reminder_period.sec property to dds.participant.trust_plugins.expiration_advance_notice_reminder_period.sec. The old names are not supported any more. In this release, these properties affect not only the Identity Certificate, but also the Permissions Document. For more information, see the Security Plugins User’s Manual.

2.2.3.3.4. Key Revisions are enabled by default

This release of the Security Plugins changes the default value of the enable_key_revision Governance Rule to true.

This change affects interoperability with previous releases. If you want to interoperate with older Connext applications that are not using Key Revisions, then you must explicitly disable Key Revisions in your Governance Document, by setting the enable_key_revision Domain Rule to false. Here is an example:

<domain_access_rules>
    <domain_rule>
        <domains>
            <id_range>
                <min>0</min>
            </id_range>
        </domains>
        <allow_unauthenticated_participants>false</allow_unauthenticated_participants>
        <enable_join_access_control>true</enable_join_access_control>
        <enable_key_revision>false</enable_key_revision> <!-- Add this line here. -->
        <discovery_protection_kind>ENCRYPT</discovery_protection_kind>

Then, you must re-sign the Governance Document with the Permissions Certificate Authority.

If you need to use the same Governance Document in both 7.6.0 and a release older than 7.5.0, then you may add must_interpret="false" as described in Keeping Governance and Permissions Compatibility Across Different Security Plugins Versions in the RTI Security Plugins User’s Manual:

<enable_key_revision must_interpret="false">false</enable_key_revision>

2.2.3.3.5. Changes to Additional Authenticated Data

This release of the Security Plugins changes the cryptography.enable_additional_authenticated_data property type to an enum and adds the AUTO value, which is also the new default. Using AUTO, the Builtin Security Plugins will auto-enable Additional Authenticated Data for messages protected with a pre-shared key and for messages containing an RTPS Header Extension submessage. We are also removing the Builtin Security Plugins support for 0, 1, yes, and no values of this property. If you use any of these values, please move to a value from the set of AUTO, TRUE and FALSE. Beyond the values, related functionality changes should be transparent to the user and no interoperability breaks are expected.

Note that from this release Additional Authenticated Data is the only RTPS protection method available in the Lightweight Builtin Security Plugins; other methods are not supported. Therefore, cryptography.enable_additional_authenticated_data is not read by the Lightweight Builtin Security Plugins.

See Properties for Configuring Cryptography in the Security Plugins User’s Manual for more information about the property.

2.2.3.3.6. Deprecation of authentication.crl and removal of authentication.crl_file

This release of the Security Plugins deprecates the plugin-specific authentication.crl property, and removes the plugin-specific authentication.crl_file property. Instead, you should set the dds.sec.auth.crl property defined in the OMG ‘DDS Security’ specification. The behavior and configuration of the deprecated and the new property is the same: they are both optional properties that configure the Certificate Revocation List (CRL) used by the Builtin Security Plugins.

2.2.3.3.7. Renaming of the property that enables experimental algorithms

This release of the Security Plugins renames the com.rti.serv.secure.authentication.enable_custom_algorithms property to com.rti.serv.secure.authentication.enable_experimental_algorithms. The Security Plugins no longer support the old name. The new name is clearer, conveying the property’s purpose more effectively. This property enables algorithms that the Security Plugins considers experimental and not fully supported, such as EdDSA. It is not related to custom algorithms (those algorithms that are implementation-specific and not defined by the OMG ‘DDS Security’ specification), such as AES-192.

2.2.3.4. API Changes

2.2.3.4.2. New API to get Lightweight Builtin Security Plugins library version

In 7.5.0 and previous releases, you could get the version of both the Builtin Security Plugins library and the Lightweight Builtin Security Plugins library by calling the RTI_Security_get_library_version API. This approach lead to potential problems when linking against both libraries of the Security Plugins.

Starting in release 7.6.0, you must use the RTI_Security_get_library_version API to get the version of the Builtin Security Plugins library and the new RTI_SecurityLightweight_get_library_version API to get the version of the Lightweight Builtin Security Plugins library.

2.2.3.5. Security Plugins SDK

If you use the Security Plugins SDK, read the Security Plugins Interface (SPI) Notes section of its documentation. This documentation lists the changes introduced in each release to the interface between the Core Libraries and the Security Plugins.