<section title="17.2. Approved Cryptographic Algorithms"><subsection title="Objective"><paragraph
    title="17.2.1."


><![CDATA[<p>Information is protected by a properly implemented, Approved Cryptographic Algorithm.</p>]]></paragraph>
 </subsection>
<subsection title="Context"> <block title="Scope"><paragraph
    title="17.2.2."


><![CDATA[<p>This section covers cryptographic algorithms that the GCSB recognises as being approved for use within government. Implementations of the algorithms in this section need to have successfully completed an approved cryptographic evaluation before they can be approved to protect information. Correct implementations of cryptographic protocols are checked during system certification.</p>]]></paragraph>
<paragraph
    title="17.2.3."


><![CDATA[<p class="NormS17C2">High assurance cryptographic are not covered in this section.&nbsp;</p>]]></paragraph>
</block>
<block title="Approved cryptographic algorithms"><paragraph
    title="17.2.4."


><![CDATA[<p>There is no guarantee or proof of security of an algorithm against presently unknown attacks.  However, the algorithms listed in this section have been extensively scrutinised by government, industry and academic communities in a practical and theoretical setting and have not been found to be susceptible to any feasible attacks.  There have been some cases where theoretically impressive vulnerabilities have been found, however these results are not considered to be feasible with current technologies and capabilities.</p>]]></paragraph>
<paragraph
    title="17.2.5."


><![CDATA[<p>Where there is a range of possible key sizes for an algorithm, some of the smaller key sizes do not provide an adequate safety margin against attacks that might be found in the future.  For example, future advances in number factorisation could render the use of smaller RSA moduli a security vulnerability.</p>]]></paragraph>
<paragraph
    title="17.2.6."


><![CDATA[<p>The approved cryptographic algorithms fall into three categories: asymmetric/public key algorithms, hashing algorithms and symmetric encryption algorithms.  Collectively these were known as SUITE B and were first promulgated in 2006.</p>]]></paragraph>
<paragraph
    title="17.2.7."


><![CDATA[<p>Suite B was superseded by the Commercial National Security Algorithm Suite in August 2015 and later supplemented by the Commercial Solutions for Classified (CSFC) Programme.</p>]]></paragraph>
<paragraph
    title="17.2.8."


><![CDATA[<p class="NormS17C2">Some algorithms that were previously approved in earlier versions of the NZISM are now deprecated. These are still permitted to be used to decrypt or verify previously encrypted or signed files.  These algorithms are described as ‘for legacy use only’ in the NZISM.</p>]]></paragraph>
<paragraph
    title="17.2.9."


><![CDATA[<p>The approved asymmetric/public key algorithms are:</p><ul>
<li>ECDH for agreeing on encryption session keys.</li>
<li>ECDSA for digital signatures.</li>
<li>DH for agreeing on encryption session keys. This should only be used for interoperability with third parties where ECDH is not supported.</li>
<li>RSA for digital signatures and passing encryption session keys or similar keys.</li>
<li>DSA for digital signatures for legacy use only.</li>
</ul>]]></paragraph>
<paragraph
    title="17.2.10."


><![CDATA[<p>The approved hashing algorithms are:</p><ul>
<li>Secure Hashing Algorithm 2; and</li>
<li>Secure Hashing Algorithm 1 for legacy use only.</li>
</ul>]]></paragraph>
<paragraph
    title="17.2.11."


><![CDATA[<p>The approved symmetric encryption algorithms are:</p><ul>
<li>AES; and</li>
<li>3DES for legacy use only.</li>
</ul>]]></paragraph>
<paragraph
    title="17.2.12."


><![CDATA[<p class="NormS17C2">SHA-1, 3DES and DSA MUST NOT be used for new implementations but are approved only for processing already protected information. These are legacy use only.</p>]]></paragraph>
<paragraph
    title="17.2.13."


><![CDATA[<p>Summary Table</p><p>&nbsp;</p><table class="table-control" style="width: 383px; height: 574px;" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="table-secondary" valign="top">
<p align="center">Function</p>
</td>
<td width="254" valign="top">
<p align="center">Cryptographic algorithm or protocol</p>
</td>
<td width="132" valign="top">
<p align="center">Applicable standards</p>
</td>
<td width="122" valign="top">
<p align="center">Minimum</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="center">Encryption</p>
</td>
<td width="254" valign="top">
<p align="center">Advanced Encryption Standard (AES)</p>
</td>
<td width="132" valign="top">
<p align="center">FIPS 197</p>
</td>
<td width="122" valign="top">
<p align="center">256-bit key</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="center">Hashing</p>
</td>
<td width="254" valign="top">
<p align="center">Secure Hash Algorithm (SHA)</p>
</td>
<td width="132" valign="top">
<p align="center">FIPS 180-4</p>
</td>
<td width="122" valign="top">
<p align="center">SHA-384</p>
<p align="center">(SHA-256 IN CONFIDENCE &amp; BELOW only)</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="center">Digital signature</p>
</td>
<td width="254" valign="top">
<p align="center">Elliptic Curve Digital Signature Algorithm (ECDSA)</p>
</td>
<td width="132" valign="top">
<p align="center">FIPS 186-3</p>
</td>
<td width="122" valign="top">
<p align="center">NIST P-384</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="center">&nbsp;</p>
</td>
<td width="254" valign="top">
<p align="center">Rivest-Shamir-Adleman (RSA)</p>
</td>
<td width="132" valign="top">
<p align="center">NIST SP 800-56B Rev. 2</p>
</td>
<td width="122" valign="top">
<p align="center">3072-bit key</p>
<p align="center">(2048-bit key in PKI)</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="center">Key exchange</p>
</td>
<td width="254" valign="top">
<p align="center">Elliptic Curve Diffie-Hellman (ECDH)</p>
</td>
<td width="132" valign="top">
<p align="center">SP 800-56A<br> ANSI X9.63</p>
</td>
<td width="122" valign="top">
<p align="center">NIST P-384</p>
</td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td width="254" valign="top">
<p align="center">Rivest-Shamir-Adleman</p>
</td>
<td width="132" valign="top">&nbsp;</td>
<td width="122" valign="top">
<p align="center">3072-bit key</p>
</td>
</tr>
<tr>
<td valign="top">
<p align="center">&nbsp;</p>
</td>
<td width="254" valign="top">
<p align="center">Diffie-Helman (DH)</p>
</td>
<td width="132" valign="top">
<p align="center">IETF RFC 3526 (Reference m)</p>
</td>
<td width="122" valign="top">
<p align="center">3072-bit key</p>
</td>
</tr>
</tbody>
</table>]]></paragraph>
</block>
<block title="Salting"><paragraph
    title="17.2.14."


><![CDATA[<p>Salting is a technique of further modifying a hash by adding a value or character string to the start or end of a password.  This improves the resistance of the hash to brute-force attacks.  To further improve resistance the salt should be cryptographically strong and randomly generated as unique for each password.</p>]]></paragraph>
<paragraph
    title="17.2.15."


><![CDATA[<p>The effectiveness of salts is reduced if implemented poorly.  Common implementation errors are salts that are too short and the reuse of salts.  To implement credential-specific salts the following principles should be followed:</p><ul>
<li>Generation of a unique salt every time a stored credential is created;</li>
<li>Generate salts as cryptographically strong random data;</li>
<li>Use a 32 or 64 bit salt as storage and system constraints permit;</li>
<li>Implement a security schema that is not dependent on hiding, splitting or otherwise obfuscating the salt; and</li>
<li>Do NOT apply salts per user or on a system wide basis.</li>
</ul>]]></paragraph>
</block>
</subsection>
<subsection title="References"><paragraph
    title="17.2.16."


><![CDATA[<p>The following references are provided for the approved asymmetric/public key algorithms, hashing algorithms and encryption algorithms. &nbsp;Note that Federal Information Processing Standards (FIPS) are standards and guidelines that are developed by the US National Institute of Standards and Technology (NIST) for US Federal computer systems.</p><table class="table-main">
<tbody>
<tr>
<td><strong>Reference</strong></td>
<td><strong>Title</strong></td>
<td style="text-align: center;"><strong>Publisher</strong></td>
<td><strong>Source</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>W. Diffie and M. E. Hellman, “New Directions in Cryptography” &nbsp;IEEE Transactions on Information Theory, vol. 22, no. 6, pp. 644-654, November 1976, doi: 10.1109/TIT.1976.1055638.</td>
<td style="text-align: center;"><span>IEEE</span></td>
<td><a rel="noopener noreferrer" href="https://ee.stanford.edu/~hellman/publications/24.pdf" target="_blank">https://ee.stanford.edu/~hellman/publications/24.pdf [PDF, 2.1 MB]</a></td>
</tr>
<tr>
<td>RFC 3447</td>
<td>
<p class="NormS16C2">PKCS #1 Public Key Cryptography Standards #1</p>
<p class="NormS16C2">RSA Laboratories</p>
</td>
<td style="text-align: center;"><span>IETF</span></td>
<td><a rel="noopener noreferrer" href="https://datatracker.ietf.org/doc/html/rfc3447" target="_blank">https://datatracker.ietf.org/doc/html/rfc3447</a></td>
</tr>
<tr>
<td>RFC 8624</td>
<td>Algorithm Implementation Requirements and Usage Guidance for DNSSEC<br>June 2019</td>
<td style="text-align: center;"><span>IETF</span></td>
<td><a rel="noopener noreferrer" href="https://datatracker.ietf.org/doc/html/rfc8624" target="_blank">https://datatracker.ietf.org/doc/html/rfc8624</a></td>
</tr>
<tr>
<td>RFC 3602</td>
<td>The AES-CBC Cipher Algorithm and Its Use with IPsec<br>September 2003</td>
<td style="text-align: center;"><span>IETF</span></td>
<td><a rel="noopener noreferrer" href="https://datatracker.ietf.org/doc/html/rfc3602" target="_blank">https://datatracker.ietf.org/doc/html/rfc3602</a></td>
</tr>
<tr>
<td>RFC 5288</td>
<td>AES Galois Counter Mode (GCM) Cipher Suites for TLS<br>August 2008</td>
<td style="text-align: center;"><span>IETF</span></td>
<td><a rel="noopener noreferrer" href="https://datatracker.ietf.org/doc/html/rfc5288" target="_blank">https://datatracker.ietf.org/doc/html/rfc5288</a></td>
</tr>
<tr>
<td>RFC 8492</td>
<td>Secure Password Ciphersuites for Transport Layer Security (TLS)<br>February 2019</td>
<td style="text-align: center;"><span>IETF</span></td>
<td><a rel="noopener noreferrer" href="https://datatracker.ietf.org/doc/html/rfc8492" target="_blank">https://datatracker.ietf.org/doc/html/rfc8492</a></td>
</tr>
<tr>
<td>RFC 2898</td>
<td>PKCS #5: Password-Based Cryptography Specification Version 2.0<br>September 2000</td>
<td style="text-align: center;"><span>IETF</span></td>
<td><a rel="noopener noreferrer" href="https://datatracker.ietf.org/doc/html/rfc2898" target="_blank">https://datatracker.ietf.org/doc/html/rfc2898</a></td>
</tr>
<tr>
<td>RFC 8018</td>
<td>PKCS #5: Password-Based Cryptography Specification Version 2.1<br>January 2017</td>
<td style="text-align: center;"><span>IETF</span></td>
<td><a rel="noopener noreferrer" href="https://datatracker.ietf.org/doc/html/rfc8018" target="_blank">https://datatracker.ietf.org/doc/html/rfc8018</a></td>
</tr>
<tr>
<td>FIPS 186-4</td>
<td>Digital Signature Standard (DSS)<br>July 2013</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/fips/186/4/final" target="_blank">https://csrc.nist.gov/publications/detail/fips/186/4/final</a></td>
</tr>
<tr>
<td>FIPS 197</td>
<td>Advanced Encryption Standard (AES)<br>November 2001<br>&nbsp;This publication is currently under review (10 June 2021)</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/fips/197/final" target="_blank">https://csrc.nist.gov/publications/detail/fips/197/final</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Key Management</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/projects/key-management/key-management-guidelines" target="_blank">https://csrc.nist.gov/projects/key-management/key-management-guidelines</a></td>
</tr>
<tr>
<td>SP 800-56A Rev. 3</td>
<td>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography</td>
<td style="text-align: center;">NIST</td>
<td>
<p><a rel="noopener noreferrer" href="https://doi.org/10.6028/NIST.SP.800-56Ar3" target="_blank">https://doi.org/10.6028/NIST.SP.800-56Ar3</a></p>
<p>Also ANSI x9.63 and ANSI X9.42</p>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Key Establishment</td>
<td style="text-align: center;"><span>NIST</span></td>
<td>
<p><a rel="noopener noreferrer" href="https://csrc.nist.gov/Projects/Key-Management/Key-Establishment" target="_blank">https://csrc.nist.gov/Projects/Key-Management/Key-Establishment</a></p>
<p>Also ANSI X9.63 and ANSI X9.42</p>
</td>
</tr>
<tr>
<td>FIPS Pub 180-4</td>
<td>Secure Hash Standard (SHS)<br>August 2015</td>
<td style="text-align: center;">NIST</td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/fips/180/4/final" target="_blank">FIPS 180-4, Secure Hash Standard (SHS) | CSRC (nist.gov)</a></td>
</tr>
<tr>
<td>SP 800-67 Rev. 2</td>
<td>Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher<br>November 2017</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/sp/800-67/rev-2/final" target="_blank">https://csrc.nist.gov/publications/detail/sp/800-67/rev-2/final</a></td>
</tr>
<tr>
<td>FIPS 140-3</td>
<td>Security Requirements for Cryptographic Modules<br>March 2019</td>
<td style="text-align: center;">NIST</td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/fips/140/3/final" target="_blank">https://csrc.nist.gov/publications/detail/fips/140/3/final</a></td>
</tr>
<tr>
<td>SP 800-56C Rev. 2</td>
<td>Recommendation for Key-Derivation Methods in Key-Establishment Schemes<br>August 2020</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/sp/800-56c/rev-2/final" target="_blank">https://csrc.nist.gov/publications/detail/sp/800-56c/rev-2/final</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Block Cipher Techniques</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/projects/block-cipher-techniques/bcm" target="_blank">https://csrc.nist.gov/projects/block-cipher-techniques/bcm</a></td>
</tr>
<tr>
<td>SP 800-38D</td>
<td>Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC<br>November 2007<br>This publication is under review, August 2021</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/sp/800-38d/final" target="_blank">https://csrc.nist.gov/publications/detail/sp/800-38d/final</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>McGrew, David A. and Viega, John (2005) "The Galois/Counter Mode of Operation (GCM)"</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.rip/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf" target="_blank">https://csrc.nist.rip/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf [PDF, 1 MB]</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Cryptographic Algorithm Validation Program CAVP</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program" target="_blank">https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program</a></td>
</tr>
<tr>
<td>SP 800-38A</td>
<td>Recommendation for Block Cipher Modes of Operation: Methods and Techniques<br>December 2001<br>This publication is under review (May 2021)</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/sp/800-38a/final" target="_blank">https://csrc.nist.gov/publications/detail/sp/800-38a/final</a></td>
</tr>
<tr>
<td>FIPS 180-4</td>
<td>Secure Hash Standard (SHS)<br>August 2015</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/fips/180/4/final" target="_blank">https://csrc.nist.gov/publications/detail/fips/180/4/final</a></td>
</tr>
<tr>
<td>SP 800-63</td>
<td>Digital Identity Guidelines</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://pages.nist.gov/800-63-3/" target="_blank">https://pages.nist.gov/800-63-3/</a></td>
</tr>
<tr>
<td>SP 800-106</td>
<td>Randomized Hashing for Digital Signatures<br>February 2009</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/sp/800-106/final" target="_blank">https://csrc.nist.gov/publications/detail/sp/800-106/final</a></td>
</tr>
<tr>
<td>SP 800-107 Rev. 1</td>
<td>Recommendation for Applications Using Approved Hash Algorithms<br>August 2012<br>This publication is under review (6 August 2021)</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/sp/800-107/rev-1/final" target="_blank">https://csrc.nist.gov/publications/detail/sp/800-107/rev-1/final</a></td>
</tr>
<tr>
<td>SP 800-132</td>
<td>Recommendation for Password-Based Key Derivation: Part 1: Storage Applications<br>December 2021</td>
<td style="text-align: center;"><span>NIST</span></td>
<td><a rel="noopener noreferrer" href="https://csrc.nist.gov/publications/detail/sp/800-132/final" target="_blank">https://csrc.nist.gov/publications/detail/sp/800-132/final</a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Commercial National Security Algorithm (CNSA) Suite</td>
<td style="text-align: center;"><span>NSA</span></td>
<td><a href="https://media.defense.gov/2022/Sep/07/2003071834/-1/-1/0/CSA_CNSA_2.0_ALGORITHMS_.PDF"></a><a rel="noopener noreferrer" href="https://media.defense.gov/2022/Sep/07/2003071834/-1/-1/0/CSA_CNSA_2.0_ALGORITHMS_.PDF" target="_blank">CSA_CNSA_2.0_ALGORITHMS_.PDF (defense.gov)</a><a rel="noopener noreferrer" href="https://www.iad.gov/iad/programs/iad-initiatives/cnsa-suite.cfm" target="_blank"></a></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Commercial National Security Algorithm (CNSA) Suite Factsheet</td>
<td style="text-align: center;"><span>NSA</span></td>
<td>
<p><a rel="noopener noreferrer" href="https://media.defense.gov/2022/Sep/07/2003071836/-1/-1/0/CSI_CNSA_2.0_FAQ_.PDF" target="_blank">CSI_CNSA_2.0_FAQ_.PDF (defense.gov)</a></p>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Commercial Solutions for Classified (CSfC) FAQ 2018</td>
<td style="text-align: center;"><span>NSA</span></td>
<td><a rel="noopener noreferrer" href="https://www.nsa.gov/Portals/70/documents/resources/everyone/csfc/csfc-faqs.pdf" target="_blank">https://www.nsa.gov/Portals/70/documents/resources/everyone/csfc/csfc-faqs.pdf [PDF, 1.15 MB]</a></td>
</tr>
</tbody>
</table><p>&nbsp;</p>]]></paragraph>
 </subsection>
<subsection title="Rationale &amp; Controls"> <block title="Using Approved Cryptographic Algorithms"><paragraph
    title="17.2.17.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p>Inappropriate configuration of a product using an Approved Cryptographic Algorithm can inadvertently select relatively weak implementations of the cryptographic algorithms.  In combination with an assumed level of security confidence, this can represent a significant security risk.</p>]]></paragraph>
<paragraph
    title="17.2.17.R.02."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p class="Normal-nonumbering">When configuring unevaluated products that implement an Approved Cryptographic Algorithm, agencies should disable any non-approved algorithms.  Correct implementation of cryptographic protocols and disabling of non-approved algorithms is checked during system certification.</p><p class="Normal-nonumbering">A less effective control is to advise system users not to use them via a written policy. </p>]]></paragraph>
<paragraph
    title="17.2.17.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2128"
><![CDATA[<p class="Normal-nonumbering">Agencies MUST ensure that only Approved Cryptographic Algorithms can be used when using an unevaluated product that implements a combination of approved and non-approved Cryptographic Algorithms.</p>]]></paragraph>
</block>
<block title="Approved asymmetric/public key algorithms"><paragraph
    title="17.2.18.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p>Over the last decade DSA and DH cryptosystems have been subject to increasingly successful sub-exponential factorisation and index-calculus based attacks.  ECDH and ECDSA offer more security per bit increase in key size than either DH or DSA and are considered more secure alternatives.<br><br></p>]]></paragraph>
<paragraph
    title="17.2.18.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Should"
    cid="2131"
><![CDATA[<p>Agencies SHOULD use ECDH and ECDSA for all new systems, version upgrades and major system modifications.</p>]]></paragraph>
</block>
<block title="Using DH"><paragraph
    title="17.2.19.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p class="NormS16C2">While ECDH should be used in preference to DH, there are instances where DH is still in use.  A modulus of at least 3072 bits for DH is now considered good practice by the cryptographic community.</p>]]></paragraph>
<paragraph
    title="17.2.19.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2134"
><![CDATA[<p class="Normal-nonumbering">Agencies using DH, for the approved use of agreeing on encryption session keys, MUST use a modulus of at least 3072 bits.</p>]]></paragraph>
</block>
<block title="Equipment using DH"><paragraph
    title="17.2.20.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p>If a network device is NOT able to support the required cryptographic protocol, algorithm and key length, the system will be at risk of a cryptographic compromise.  In such cases, the longest feasible key length must be implemented and the device scheduled for replacement as a matter of urgency.</p>]]></paragraph>
<paragraph
    title="17.2.20.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2137"
><![CDATA[<p>Devices which are NOT capable of implementing required key lengths MUST be reconfigured with the longest feasible key length as a matter of urgency.</p>]]></paragraph>
<paragraph
    title="17.2.20.C.02."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2138"
><![CDATA[<p>Devices which are NOT capable of implementing required key lengths MUST be scheduled for replacement as a matter of urgency.</p>]]></paragraph>
</block>
<block title="Using DSA (for legacy use only)"><paragraph
    title="17.2.21.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p class="NormS16C2"><span>A modulus of at least 1024 bits for DSA is considered good practice by the cryptographic community.</span></p>]]></paragraph>
<paragraph
    title="17.2.21.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="7189"
><![CDATA[<p class="Normal-nonumbering"><span>Agencies using DSA, for the approved use of digital signatures, MUST use a modulus of at least 1024 bits.</span></p>]]></paragraph>
</block>
<block title="Using ECDH"><paragraph
    title="17.2.22.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p>A field/key size of at least 384 bits for ECDH is now considered good practice by the cryptographic community.</p>]]></paragraph>
<paragraph
    title="17.2.22.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2144"
><![CDATA[<p>Agencies using ECDH, for the approved use of agreeing on encryption session keys, MUST implement the curve P-384 (prime moduli).<br><br></p>]]></paragraph>
<paragraph
    title="17.2.22.C.02."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2145"
><![CDATA[<p>All VPN’s using an ECDH key length less than 384 MUST replace all Pre-Shared Keys with keys of at least 384 bits, as soon as possible.</p>]]></paragraph>
</block>
<block title="Using ECDSA"><paragraph
    title="17.2.23.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p class="NormS16C2">An equivalent symmetric key security strength of at least 160 bits for ECDSA is considered good practice by the cryptographic community. Not all legacy systems support a modulus of this length, in which case significant risk is being carried.</p>]]></paragraph>
<paragraph
    title="17.2.23.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2148"
><![CDATA[<p>Agencies using ECDSA, for the approved use of digital signatures, MUST implement the curve P-384 (prime moduli).</p>]]></paragraph>
</block>
<block title="Using RSA"><paragraph
    title="17.2.24.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p class="NormS16C2">A modulus of at least 3072 bits for RSA is considered good practice by the cryptographic community.</p>]]></paragraph>
<paragraph
    title="17.2.24.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2151"
><![CDATA[<p class="Normal-nonumbering">Agencies using RSA, for the approved use of digital signatures and passing encryption session keys or similar keys, MUST use a modulus of at least 3072 bits.</p>]]></paragraph>
<paragraph
    title="17.2.24.C.02."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2152"
><![CDATA[<p class="Normal-nonumbering">Agencies using RSA, for the approved use of digital signatures and passing encryption session keys or similar keys, MUST ensure that the public keys used for passing encrypted session keys are different to the keys used for digital signatures.</p>]]></paragraph>
<paragraph
    title="17.2.24.C.03."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Should"
    cid="7181"
><![CDATA[<p class="Normal-nonumbering">Agencies using RSA, for the approved use of digital signatures and passing encryption session keys or similar keys, SHOULD use a modulus of at least 4096 bits.</p>]]></paragraph>
</block>
<block title="Public key infrastructure using RSA"><paragraph
    title="17.2.25.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p class="NormS16C2">A modulus of at least 2048 bits for RSA is considered good practice by the cryptographic community for use within X.509 based Public Key Infrastructure (PKI) systems.</p>]]></paragraph>
<paragraph
    title="17.2.25.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="7186"
><![CDATA[<p>Agencies using RSA keys within internet X.509 Public Key Infrastructure certificates MUST use a modulus of at least 2048 bits.</p>]]></paragraph>
</block>
<block title="Approved hashing algorithms"><paragraph
    title="17.2.26.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p>Recent research conducted by cryptographic community suggests that SHA-1 may be susceptible to collision attacks.  While no practical collision attacks have been published for SHA-1, they may become feasible in the near future.</p>]]></paragraph>
<paragraph
    title="17.2.26.R.02."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p class="NormS16C2">SHA-1 has been deprecated and the use of SHA-1 is permitted ONLY for legacy systems to validate existing hashes previously generated using SHA-1.</p>]]></paragraph>
<paragraph
    title="17.2.26.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="2155"
><![CDATA[<p class="Normal-nonumbering">Agencies MUST use the SHA-2 family for new systems. Use of SHA-1 is permitted ONLY for legacy systems.</p>]]></paragraph>
<paragraph
    title="17.2.26.C.02."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="5905"
><![CDATA[<p>Agencies MUST use a minimum of SHA-384 when using hashing algorithms to provide integrity protection for information classified as RESTRICTED/SENSITIVE or above.</p>]]></paragraph>
<paragraph
    title="17.2.26.C.03."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="7187"
><![CDATA[<p>In all other cases when information requires integrity protection using hashing algorithms, Agencies MUST use a minimum of SHA-256.</p>]]></paragraph>
</block>
<block title="Salts"><paragraph
    title="17.2.27.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p>The use of salts strengthens the resistance of hash values to a variety of attacks, including brute-force, rainbow table, dictionary and lookup table attacks.</p>]]></paragraph>
<paragraph
    title="17.2.27.R.02."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p>Key derivation functions use a password, a salt, then generate a password hash.  Their purpose is to make password guessing by an attacker who has obtained a password hash file expensive and therefore the cost of a guessing attack high and prohibitive.</p>]]></paragraph>
<paragraph
    title="17.2.27.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Must"
    cid="6560"
><![CDATA[<p>Memorised secrets such as passwords MUST be stored in a form that is resistant to offline attacks.</p>]]></paragraph>
<paragraph
    title="17.2.27.C.02."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Should"
    cid="6561"
><![CDATA[<p>Memorised secrets such as passwords SHOULD be salted and hashed using a suitable one-way key derivation function. See <a title="salting" href="http://nzism.gcsb.govt.nz/ism-document#Paragraph-15872">17.2.14</a>.</p>]]></paragraph>
<paragraph
    title="17.2.27.C.03."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Should"
    cid="6562"
><![CDATA[<p>The salt SHOULD be at least 32 bits in length, be chosen arbitrarily, and each instance is unique so as to minimise salt value collisions among stored hashes.</p>]]></paragraph>
</block>
<block title="Approved symmetric encryption algorithms"><paragraph
    title="17.2.28.R.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


><![CDATA[<p>The use of Electronic Code Book (ECB) mode in block ciphers allows repeated patterns in plaintext to appear as repeated patterns in the ciphertext.  Most cleartext, including written language and formatted files, contains significant repeated patterns.  An attacker can use this to deduce possible meanings of ciphertext by comparison with previously intercepted data.  In other cases they might be able to determine information about the key by inferring certain contents of the cleartext.  The use of other modes such as Cipher Block Chaining, Cipher Feedback, Output Feedback or Counter prevents such attacks.</p>]]></paragraph>
<paragraph
    title="17.2.28.C.01."

    tags="Approved Cryptographic Algorithms,Cryptography,Technical"


    classification="All Classifications"
    compliance="Should Not"
    cid="2158"
><![CDATA[<p class="Normal-nonumbering">Agencies using approved symmetric encryption algorithms (e.g. AES) SHOULD NOT use Electronic Code Book (ECB) mode.</p>]]></paragraph>
</block>
</subsection>
</section>
