diff --git a/xml/book_security.xml b/xml/book_security.xml
index a67cce4351..2fa18325ac 100644
--- a/xml/book_security.xml
+++ b/xml/book_security.xml
@@ -60,6 +60,7 @@
+
diff --git a/xml/security_cryptopolicy.xml b/xml/security_cryptopolicy.xml
new file mode 100644
index 0000000000..08934ce555
--- /dev/null
+++ b/xml/security_cryptopolicy.xml
@@ -0,0 +1,328 @@
+
+
+ %entities;
+]>
+
+
+ Using system-wide cryptographic policies
+
+
+
+ TODO
+
+
+
+
+ yes
+
+
+
+ The crypto-policies concept
+
+
+ The crypto-policies RPM package provides predefined
+ configuration files with cryptographic policies for cryptographic
+ back-ends, such as SSL/TLS libraries. This package allows to set the
+ cryptographic security level for all applications that use a
+ cryptographic back-end supported by the policies.
+
+
+
+ Crypto-policies apply to the configuration of the core cryptographic
+ subsystems. They cover the supported secure communications protocols on
+ the base operating system, such as TLS, IKE, IPSec, DNSSec and Kerberos
+ protocols. Crypto-policies allow to handle the deprecation of algorithms
+ or protocols system-wide and in a transparent manner.
+
+
+
+ Predefined cryptographic policies
+
+
+ The crypto-policies package comes with the following
+ predefined policies that can be applied system-wide:
+
+
+
+
+ BSI
+
+
+ A security policy based on recommendations by the German government
+ agency BSI (Bundesamt fuer Sicherheit in der Informationstechnik,
+ translated as agency for security in software
+ technology). The policy is based on the technical
+ recommendation ruleset TR 02102. The BSI TR
+ 02102 standard is updated in regular intervals. This policy does
+ not allow the use of SHA-1 in signature algorithms (except DNSSEC
+ and RPM). The policy also provides some (not complete) preparation
+ for post-quantum encryption support in form of 256-bit symmetric
+ encryption requirement. The RSA parameters are accepted if larger
+ than 2047 bits, and Diffie-Hellman parameters are accepted if
+ larger than 3071 bits. This policy provides at least 128-bit
+ security, excepting the transition of RSA.
+
+
+
+
+ DEFAULT
+
+
+ A reasonable default policy for today's standards. It allows the
+ TLS 1.2, and TLS 1.3 protocols, as well as IKEv2 and SSH2. The
+ Diffie-Hellman parameters are accepted if they are at least 2048
+ bits long. The level provides at least 112-bit security with the
+ exception of allowing SHA-1 signatures in DNSSec where they are
+ still prevalent.
+
+
+
+
+ FIPS
+
+
+ A level that conforms to the FIPS 140-2 requirements. This policy
+ is used internally by the fips-mode-setup tool
+ which can switch the system into FIPS 140-2 compliance mode. The
+ level provides at least 112-bit security.
+
+
+
+
+ FUTURE
+
+
+ A conservative security level that is believed to withstand any
+ near-term future attacks. This level does not allow the use of
+ SHA-1 in signature algorithms. The level also provides some (not
+ complete) preparation for post-quantum encryption support in form
+ of 256-bit symmetric encryption requirement. The RSA and
+ Diffie-Hellman parameters are accepted if larger than 3071 bits.
+ The level provides at least 128-bit security.
+
+
+
+
+ LEGACY
+
+
+ This policy ensures maximum compatibility with legacy systems. It
+ is less secure and it includes support for TLS 1.0, TLS 1.1, and
+ SSH2 protocols or later. The algorithms DSA, 3DES, and RC4 are
+ allowed, while RSA and Diffie-Hellman parameters are accepted if
+ larger than 1023 bits. The level provides at least 64-bit security.
+
+
+
+
+
+
+ Policies can change over time together with the security of the
+ cryptographic components. For the latest details on the individual
+ policies, therefore see the man page of
+ crypto-policies. All predefined policies are located
+ in
+ /usr/share/crypto-policies/policies/NAME.pol
+ and are read-only.
+
+
+
+ Switching to a different crypto-policy
+
+
+ Use the update-crypto-policies command to view and set
+ the policy which is applied system-wide to the cryptographic back-ends.
+ The policy which has been set with this command is used by these
+ back-ends by default unless the application user configures them
+ otherwise.
+
+
+
+
+
+ To check the crypto-policy that is currently in use:
+
+&prompt.root;update-crypto-policies --show
+
+
+
+ To switch to a different policy level, use the
+ option:
+
+ taroth 2023-07-04: do we need a word of caution here for LEGACY and FIPS?
+ and can we tell that switching to 'LEGACY' enables compatibility with a specific
+ older SLE version, like SLE 12 SP5 or so?
+
+
+ LEGACY crypto-policy is less secure
+
+ Switching to a LEGACY crypto-policy makes your system and
+ applications less secure.
+
+
+
+
+
+ After switching to a different policy reboot the machine to apply the
+ changes to the applications:
+
+&prompt.root;reboot
+
+
+
+ Enabling FIPS mode via script
+
+ For the FIPS crypto-policy, &suse; also provides a script with which you
+ can comfortably enable the FIPS mode. See
+ for details.
+
+
+
+
+ Customizing existing crypto-policies
+
+
+ You can modify aspects of any predefined policy by removing or adding
+ algorithms or protocols. This way, you create a subpolicy (or policy
+ modifier module), stored in text files that include the modifications.
+ After creation, one or multiple subpolicies can be applied on the command
+ line to one of the predefined policies. For details, see
+ .
+
+
+
+ You can find example subpolicies in
+ /usr/share/crypto-policies/policies/modules.
+ However, your own subpolicies need to be stored in
+ /etc/crypto-policies/policies/modules (unless they
+ are packaged). Name the subpolicy file
+ MODULE.pmod, where
+ MODULE is the name of the subpolicy. The file
+ name needs to be spelled in uppercase letters and without spaces.
+
+
+
+ Removing support for RSA and PSK key exchanges
+
+ The following example shows you how to create a subpolicy which removes
+ support for RSA and PSK key exchanges from the
+ DEFAULT policy. Both key exchanges do not provide
+ forward secrecy, which means they cannot make sure that session keys
+ are not compromised in case long-term secrets used in the key exchange
+ session are compromised.
+
+
+
+
+ In /etc/crypto-policies/policies/modules/
+ create a new file, named NO-RSA-PSK.pmod.
+
+&prompt.root;touch /etc/crypto-policies/policies/modules/NO-RSA-PSK.pmod
+
+
+
+ Add the following line to the file and save it afterwards:
+
+key_exchange = -RSA -PSK
+
+ Now you can apply the newly created subpolicy to one of the
+ predefined policies.
+
+
+
+
+ Assuming the current system-wide policy is
+ DEFAULT and you want to apply the newly created
+ subpolicy to DEFAULT:
+
+&prompt.root;update-crypto-policies --set DEFAULT:NO-RSA-PSK
+
+
+
+ Double-check if the subpolicy has been added to
+ DEFAULT:
+
+&prompt.root;update-crypto-policies --show
+DEFAULT:NO-RSA-PSK
+
+
+
+ Reboot the machine to apply the system-wide policy adjustment to
+ the applications:
+
+&prompt.root;reboot
+
+
+
+
+
+ Creating a new policy from scratch
+
+
+ Instead of customizing an existing crypto-policy with a subpolicy you can
+ also decide to write a new policy from scratch. You can use any of the
+ predefined policies in
+ /usr/share/crypto-policies/policies/ as a starting
+ point. However, your own policy file needs to be stored in
+ /etc/crypto-policies/policies/. Name your file
+ MY_POLICY.pol, where
+ MY_POLICY is the name of the policy. Make sure
+ the policy file is owned by &rootuser; and is not writable by
+ non-privileged users.
+
+
+
+ Creating a new policy and applying it
+
+ The following example shows you how to create a new policy based on the
+ DEFAULT policy.
+
+
+
+
+ Copy the DEFAULT policy to
+ /etc/crypto-policies/policies/ and rename it:
+
+&prompt.root;cp /usr/share/crypto-policies/policies/DEFAULT.pol /etc/crypto-policies/policies/MY_POLICY.pol
+
+
+
+ Edit the policy as desired and save it.
+
+
+
+
+ Switch the system to the new policy:
+
+&prompt.root;update-crypto-policies --set MY_POLICY
+
+
+
+ Reboot the machine to apply the new policy to the applications and
+ running services:
+
+&prompt.root;reboot
+
+
+
+ Double-check if the policy is active:
+
+&prompt.root;update-crypto-policies --show
+MY_POLICY
+
+
+
+
+