RFC 2785 INFORMATIONAL SECURITY · CRYPTOGRAPHY · S/MIME

Methods for Avoiding the "Small-Subgroup" Attacks on the Diffie-Hellman Key Agreement Method for S/MIME

When and how S/MIME implementations should defend Diffie-Hellman keys against attackers who send deliberately weak public keys.

On rfc-editor.org ↗
PUBLISHED
March 2000
AUTHORS
R. Zuccherato
STREAM
IETF
PROTECTION METHODS
5
MESSAGES TO RECOVER A KEY
As few as about one hundred
PUBLIC KEY CHECK
y in [2, p-1] and y^q mod p = 1
CATEGORY
Informational
DOI
10.17487/RFC2785

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                     R. Zuccherato
Request for Comments: 2785                         Entrust Technologies
Category: Informational                                      March 2000


       Methods for Avoiding the "Small-Subgroup" Attacks on the
             Diffie-Hellman Key Agreement Method for S/MIME

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard of any kind.  Distribution of this
   memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

Abstract

   In some circumstances the use of the Diffie-Hellman key agreement
   scheme in a prime order subgroup of a large prime p is vulnerable to
   certain attacks known as "small-subgroup" attacks.  Methods exist,
   however, to prevent these attacks.  This document will describe the
   situations relevant to implementations of S/MIME version 3 in which
   protection is necessary and the methods that can be used to prevent
   these attacks.

1. Introduction

   This document will describe those situations in which protection from
   "small-subgroup" type attacks is necessary when using Diffie-Hellman
   key agreement [RFC2631] in implementations of S/MIME version 3
   [RFC2630, RFC2633].  Thus, the ephemeral-static and static-static
   modes of Diffie-Hellman will be focused on. Some possible non-S/MIME
   usages of CMS are also considered, though with less emphasis than the
   cases arising in S/MIME.  The situations for which protection is
   necessary are those in which an attacker could determine a
   substantial portion (i.e. more than a few bits) of a user's private
   key.

   Protecting oneself from these attacks involves certain costs.  These
   costs may include additional processing time either when a public key
   is certified or a shared secret key is derived, increased parameter
   generation time, and possibly the licensing of encumbered
   technologies.  All of these factors must be considered when deciding
   whether or not to protect oneself from these attacks, or whether to
   engineer the application so that protection is not necessary.

   We will not consider "attacks" where the other party in the key
   agreement merely forces the shared secret value to be "weak" (i.e.
   from a small set of possible values) without attempting to compromise
   the private key.  It is not worth the effort to attempt to prevent
   these attacks since the other party in the key agreement gets the
   shared secret and can simply make the plaintext public.

   The methods described in this memo may also be used to provide
   protection from similar attacks on elliptic curve based Diffie-
   Hellman.

1.1 Notation

   In this document we will use the same notation as in [RFC2631].  In
   particular the shared secret ZZ is generated as follows:

      ZZ = g ^ (xb * xa) mod p

   Note that the individual parties actually perform the computations:

      ZZ = (yb ^ xa)  mod p  = (ya ^ xb)  mod p

   where ^ denotes exponentiation.

      ya is Party A's public key; ya = g ^ xa mod p
      yb is Party B's public key; yb = g ^ xb mod p
      xa is Party A's private key; xa is in the interval [2, (q - 2)]
      xb is Party B's private key; xb is in the interval [2, (q - 2)]
      p is a large prime
      g = h^((p-1)/q) mod p, where
      h is any integer with 1 < h < p-1 such that h^((p-1)/q) mod p > 1
            (g has order q mod p)
      q is a large prime
      j a large integer such that p=q*j + 1

   In this discussion, a "static" public key is one that is certified
   and is used for more than one key agreement, and an "ephemeral"
   public key is one that is not certified but is used only one time.

   The order of an integer y modulo p is the smallest value of x greater
   than 1 such that y^x mod p = 1.

1.2 Brief Description of Attack

   For a complete description of these attacks see [LAW] and [LIM].

   If the other party in an execution of the Diffie-Hellman key
   agreement method has a public key not of the form described above,
   but of small order (where small means less than q) then he/she may be
   able to obtain information about the user's private key.  In
   particular, if information on whether or not a given decryption was
   successful is available, if ciphertext encrypted with the agreed upon
   key is available, or if a MAC computed with the agreed upon key is
   available, information about the user's private key can be obtained.

   Assume Party A has a valid public key ya and that Party B has a
   public key yb that is not of the form described in Section 1.1,
   rather yb has order r, where r is much less than q.  Thus yb^r=1 mod
   p.  Now, when Party A produces ZZ as yb^xa mod p, there will only be
   r possible values for ZZ instead of q-3 possible values.  At this
   point Party B does not know the value ZZ, but may be able to
   exhaustively search for it.

   If Party A encrypts plaintext with this value and makes that
   ciphertext available to Party B, Party B only needs to exhaustively
   search through r possibilities to determine which key produced the
   ciphertext.  When the correct one is found, this gives information
   about the value of xa modulo r.  Similarly, if Party A uses ZZ to
   decrypt a ciphertext and Party B is able to determine whether or not
   decryption was performed correctly, then information about xa can be
   obtained.  The actual number of messages that must be sent or
   received for these attacks to be successful will depend on the
   structure of the prime p.  However, it is not unreasonable to expect
   that the entire private key could be determined after as few as one
   hundred messages.

   A similar attack can be mounted if Party B chooses a public key of
   the form yb=g^xb*f, where f is an element of small order.  In this
   situation Party A will compute ZZ=yb^xa=g^(xa*xb)*f^xa mod p.  Again,
   Party B can compute g^(xa*xb) and can therefore exhaust the small
   number of possible values of f^xa mod p to determine information
   about xa.

   An attack is also possible if Party B has a public key yb of order r
   where r factors into small integers but is not necessarily a small
   integer itself.  In this case, the attacker needs to know the value
   ZZ computed by Party A.  From this value Party B can solve for Party
   A's private key modulo r using the Pohlig-Hellman [PH] algorithm.

   However, this attack is not as practical as the cases already
   presented, where information about the private key is recovered from
   the *use* of ZZ, rather than ZZ itself, by exhaustive search.

2. Situations Where Protection Is Necessary

   This section describes the situations in which the sender of a
   message should obtain protection against this type of attack and also
   those situations in which the receiver of a message should obtain
   protection. Each entity may decide independently whether it requires
   protection from these attacks.

   This discussion assumes that the recipient's key pair is static, as
   is always the case in [RFC2631].

2.1 Message Sender

   This section describes situations in which the message sender should
   be protected.

   If the sender's key is ephemeral, (i.e. ephemeral-static Diffie-
   Hellman is being used), then no protection is necessary.  In this
   situation only the recipients of the message can obtain the plaintext
   and corresponding ciphertext and therefore determine information
   about the private key using the "small-subgroup" attacks.  However,
   the recipients can always decrypt the message and since the sender's
   key is ephemeral, even if the recipient can learn the entire private
   key no other messages are at risk.  Notice here that if two or more
   recipients have selected the same domain parameters (p,q,g) then the
   same ephemeral public key can be used for all of them.  Since the key
   is ephemeral and only associated with a message that the recipients
   can already decrypt, no interesting attacks are possible.

   If the sender's key is static (i.e. static-static Diffie-Hellman is
   being used), then protection is necessary because in this situation a
   recipient mounting a small-subgroup attack may be able to obtain the
   plaintext from another recipient (perhaps one with a valid public key
   also controlled by the recipient) and therefore could obtain
   information about the private key.  Moreover, the attacker does not
   need to know the plaintext to test whether a key is correct, provided
   that the plaintext has sufficient redundancy (e.g., ASCII).  This
   information could then be used to attack other messages protected
   with the same static key.

2.2 Message Recipient

   This section describes situations in which the message recipient
   should be protected.

   If absolutely no information on the decryption of the ciphertext is
   available to any other party than the recipient, then protection is
   not necessary because this attack requires information on whether the
   decryption was successful to be sent to the attacker.  So, no
   protective measures are necessary if the implementation ensures that
   no information about the decryption can leak out.  However,
   protection may be warranted if human users may give this information
   to the sender via out of band means (e.g. through telephone
   conversations).

   If information on the decryption is available to any other party,
   then protection is necessary. In particular, protection is necessary
   if any protocol event allows any other party to conclude that
   decryption was successful.  Such events include replies and returning
   signed receipts.

3. Methods Of Protection

   This section describes five protective measures that senders and
   recipients of messages can use to protect themselves from "small-
   subgroup" attacks.

   Implementers should note that some of the procedures described in
   this section may be the subject of patents or pending patents.

3.1 Public Key Validation

   This method is described in Section 2.1.5 of [RFC2631], and its
   description is repeated here.  If this method is used, it should be
   used to validate public keys of the other party prior to computing
   the shared secret ZZ.  The public key to be validated is y.

   1. Verify that y lies within the interval [2,p-1]. If it does not,
        the key is invalid.
   2. Compute y^q mod p. If the result == 1, the key is valid.
        Otherwise the key is invalid.

3.2 CA Performs Public Key Validation

   The Certification Authority (CA) could perform the Public Key
   Validation method described in Section 3.1 prior to signing and
   issuing a certificate containing a Diffie-Hellman public key.  In
   this way, any party using the public key can be assured that a
   trusted third party has already performed the key validation process.
   This method is only viable for static public keys.  When Static-
   Static Diffie-Hellman is employed, both the sender and recipient are
   protected when the CA has performed public key validation.  However,
   when Ephemeral-Static Diffie-Hellman is employed, only the sender can
   be protected by having the CA perform public key validation.  Since
   the sender generates an ephemeral public key, the CA cannot perform
   the validation on that public key.

   In the case of a static public key a method must exist to assure the
   user that the CA has actually performed this verification.  The CA
   can notify certificate users that it has performed the validation by
   reference to the CA's Certificate Policy (CP) and Certification
   Practice Statement (CPS) [RFC2527] or through extensions in the
   certificate.

3.3 Choice of Prime p

   The prime p could be chosen such that p-1=2*q*k where k is a large
   prime or is the product of large primes (large means greater than or
   equal to q).  This will prevent an attacker from being able to find
   an element (other than 1 and p-1) of small order modulo p, thus
   thwarting the small-subgroup attack.  One method to produce primes of
   this form is to run the prime generation algorithm multiple times
   until an appropriate prime is obtained.  As an example, the value of
   k could be tested for primality.  If k is prime, then the value of p
   could be accepted, otherwise the prime generation algorithm would be
   run again, until a value of p is produced with k prime.

   However, since with primes of this form there is still an element of
   order 2 (i.e. p-1), one bit of the private key could still be lost.
   Thus, this method may not be appropriate in circumstances where the
   loss of a single bit of the private key is a concern.

   Another method to produce primes of this form is to choose the prime
   p such that p = 2*q*k + 1 where k is small (i.e. only a few bits). In
   this case, the leakage due to a small subgroup attack will be only a
   few bits.  Again, this would not be appropriate for circumstances
   where the loss of even a few bits of the private key is a concern. In
   this approach, q is large.  Note that in DSA, q is limited to 160
   bits for performance reasons, but need not be the case for Diffie-
   Hellman.

   Additionally, other methods (i.e. public key validation) can be
   combined with this method in order to prevent the loss of a few bits
   of the private key.

3.4 Compatible Cofactor Exponentiation

   This method of protection is specified in [P1363] and [KALISKI].  It
   involves modifying the computation of ZZ by including j (the
   cofactor) in the computations and is compatible with ordinary
   Diffie-Hellman when both  parties' public keys are valid. If a
   party's public key is invalid, then the resulting ZZ will either be 1
   or an element of order q; the small subgroup elements will either be
   detected or cancelled.  This method requires that gcd(j,q)=1.

   Instead of computing ZZ as ZZ=yb^xa mod p, Party A would compute it
   as ZZ=(yb^j)^c mod p where c=j^(-1)*xa mod q.  (Similarly for Party
   B.)

   If the resulting value ZZ satisfies ZZ==1, then the key agreement
   should be abandoned because the public key being used is invalid.

   Note that when j is larger than q, as is usually the case with
   Diffie-Hellman, this method is less efficient than the method of
   Section 3.1.

3.5 Non-compatible Cofactor Exponentiation

   This method of protection is specified in [P1363].  Similar to the
   method of Section 3.4, it involves modifying the computation of ZZ by
   including j (the cofactor) in the computations. If a party's public
   key is invalid, then the resulting ZZ will either be 1 or an element
   of order q; the small subgroup elements will either be detected or
   cancelled. This method requires that gcd(j,q)=1.

   Instead of computing ZZ as ZZ=yb^xa mod p, Party A would compute it
   as ZZ=(yb^j)^xa mod p.  (Similarly for Party B.)  However, with this
   method the resulting ZZ value is different from what is computed in
   [RFC2631] and therefore is not interoperable with implementations
   conformant to [RFC2631].

   If the resulting value ZZ satisfies ZZ==1, then the key agreement
   should be abandoned because the public key being used is invalid.

   Note that when j is larger than q, as is usually the case with
   Diffie-Hellman, this method is less efficient than the method of
   Section 3.1.

4. Ephemeral-Ephemeral Key Agreement

   This situation is when both the sender and recipient of a message are
   using ephemeral keys.  While this situation is not possible in
   S/MIME, it might be used in other protocol environments.  Thus we
   will briefly discuss protection for this case as well.

   Implementers should note that some of the procedures described in
   this section may be the subject of patents or pending patents.

   Ephemeral-ephemeral key agreement gives an attacker more flexibility
   since both parties' public keys can be changed and they can be
   coerced into computing the same key from a small space. However, in
   the ephemeral-static case, only the sender's public key can be
   changed, and only the recipient can be coerced by an outside attacker
   into computing a key from a small space.

   Thus, in some ephemeral-ephemeral key agreements protection may be
   necessary for both entities. One possibility is that the attacker
   could modify both parties' public key so as to make their shared key
   predictable.  For example, the attacker could replace both ya and yb
   with some element of small order, say -1.  Then, with a certain
   probability, both the sender and receiver would compute the same
   shared value that comes from some small, easily exhaustible set.

   Note that in this situation if protection was obtained from the
   methods of Section 3.3, then each user must ensure that the other
   party's public key does not come from the small set of elements of
   small order.  This can be done either by checking a list of such
   elements, or by additionally applying the methods of Sections 3.1,
   3.4 or 3.5.

   Protection from these attacks is not necessary however if the other
   party's ephemeral public key has been authenticated.  The
   authentication may be in the form of a signature, MAC, or any other
   integrity protection mechanism.  An example of this is in the
   Station-To-Station protocol [STS].  Since the owner authenticates the
   public key, a third party cannot modify it and therefore cannot mount
   an attack.  Thus, the only person that could attack an entity's
   private key is the other authenticated entity in the key agreement.
   However, since both public keys are ephemeral, they only protect the
   current session that the attacker would have access to anyway.

5. Security Considerations

   This entire document addresses security considerations in the
   implementation of Diffie-Hellman key agreement.

6. Intellectual Property Rights

   The IETF takes no position regarding the validity or scope of any
   intellectual property or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; neither does it represent that it
   has made any effort to identify any such rights.  Information on the
   IETF's procedures with respect to rights in standards-track and
   standards-related documentation can be found in BCP-11.  Copies of
   claims of rights made available for publication and any assurances of
   licenses to be made available, or the result of an attempt made to
   obtain a general license or permission for the use of such
   proprietary rights by implementors or users of this specification can
   be obtained from the IETF Secretariat.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights which may cover technology that may be required to practice
   this standard.  Please address the information to the IETF Executive
   Director.

7. References

   [KALISKI] B.S. Kaliski, Jr., "Compatible cofactor multiplication for
             Diffie-Hellman primitives", Electronics Letters, vol. 34,
             no. 25, December 10, 1998, pp. 2396-2397.

   [LAW]     L. Law, A. Menezes, M. Qu, J. Solinas and S. Vanstone, "An
             efficient protocol for authenticated key agreement",
             Technical report CORR 98-05, University of Waterloo, 1998.

   [LIM]     C.H. Lim and P.J. Lee, "A key recovery attack on discrete
             log- based schemes using a prime order subgroup", B.S.
             Kaliski, Jr., editor, Advances in Cryptology - Crypto '97,
             Lecture Notes in Computer Science, vol. 1295, 1997,
             Springer-Verlag, pp. 249-263.

   [P1363]   IEEE P1363, Standard Specifications for Public Key
             Cryptography, 1998, work in progress.

   [PH]      S.C Pohlig and M.E. Hellman, "An improved algorithm for
             computing logarithms over GF(p) and its cryptographic
             significance", IEEE Transactions on Information Theory,
             vol. 24, 1972, pp. 106-110.

   [RFC2527] Chokhani, S. and W. Ford, "Internet X.509 Public Key
             Infrastructure, Certificate Policy and Certification
             Practices Framework", RFC 2527, March 1999.

   [RFC2630] Housley, R., "Cryptographic Message Syntax", RFC 2630, June
             1999.


   [RFC2631] Rescorla, E., "Diffie-Hellman Key Agreement Method", RFC
             2631, June 1999.

   [RFC2633] Ramsdell, B., "S/MIME Version 3 Message Specification", RFC
             2633, June 1999.

   [STS]     W. Diffie, P.C. van Oorschot and M. Wiener, "Authentication
             and authenticated key exchanges", Designs, Codes and
             Cryptography, vol. 2, 1992, pp. 107-125.

8. Author's Address

   Robert Zuccherato
   Entrust Technologies
   750 Heron Road
   Ottawa, Ontario
   Canada K1V 1A7

   EMail: robert.zuccherato@entrust.com

9.  Full Copyright Statement

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

AI ELI5

On this page
PROBLEMIn Diffie-Hellman key agreement, a malicious party can send a public key of small order and, by watching how the victim uses the resulting shared secret, learn part of the victim's private key.
MECHANISMThe memo says who needs protection (sender and recipient, depending on whether keys are static or ephemeral) and lists five defenses, such as validating public keys, having the CA validate them, choosing the prime p carefully, and two forms of cofactor exponentiation.
WHY IT MATTERSIt is an Informational memo that helps implementers decide whether protection is worth its cost, or whether the application can be engineered so that none is needed.

§1Why Small-Subgroup Attacks Matter

This memo covers the situations in S/MIME version 3 where Diffie-Hellman key agreement (RFC 2631) needs protection from small-subgroup attacks. It focuses on the ephemeral-static and static-static modes. Protection is needed when an attacker could learn a substantial part (more than a few bits) of a user's private key.

Protection has costs: extra processing when a public key is certified or a shared secret is derived, longer parameter generation, and possibly licensing of encumbered technologies. The memo says these must be weighed against engineering the application so that protection is not necessary. It does not worry about a peer who only forces the shared secret to be weak without trying to get the private key, because that peer already knows the secret and could simply publish the plaintext.

Locking every door costs time and money, so you first ask which doors a burglar could really use. This memo helps you decide.

§1.2How the Attack Works

The notation follows RFC 2631. The shared secret is ZZ = g ^ (xb * xa) mod p, and each side computes it as (yb ^ xa) mod p or (ya ^ xb) mod p. A static public key is certified and used for more than one key agreement; an ephemeral key is not certified and is used once.

A valid public key has order q. If the other party instead sends a key of small order r, then ZZ can take only r values rather than q-3 values. If Party A encrypts something with ZZ and Party B can see it, or B can tell whether a decryption succeeded, B can search through the r possibilities and learn the private key xa modulo r. The memo says it is not unreasonable to expect the whole private key could be found after as few as one hundred messages.

Two variants are described. A key of the form yb = g^xb * f with f of small order leaks in the same way. A key whose order r factors into small integers lets the attacker use the Pohlig-Hellman algorithm, but this needs the attacker to know ZZ itself, so it is less practical.

If the cheater's handshake only has a handful of possible answers, the cheater can try them all and see which one matches what you did. Each match gives away a little of your secret.

§2Who Needs Protection

Each party decides independently whether it needs protection. The recipient's key pair is assumed to be static, as it always is in RFC 2631.

Sender. If the sender's key is ephemeral (ephemeral-static Diffie-Hellman), no protection is needed: only recipients could mount the attack, they can already decrypt the message, and no other messages are at risk. If the sender's key is static (static-static), protection is needed, because a recipient could obtain the plaintext sent to another recipient and learn about the sender's private key, which protects other messages too.

Recipient. If absolutely no information about whether decryption worked can reach any other party, no protection is needed, though out of band leaks such as a phone call may still warrant it. If any protocol event lets another party conclude that decryption succeeded, such as replies or returned signed receipts, protection is necessary.

If you only ever use a throwaway handshake, the cheater learns nothing worth stealing. If you reuse the same handshake, or tell people whether it worked, you should check it carefully.

WHO NEEDS PROTECTION (RFC 2785, SECTION 2)
CaseProtection needed?
Sender, ephemeral keyNo
Sender, static keyYes
Recipient, no decryption information leaksNo
Recipient, replies or receipts reveal successYes

§3The Five Methods of Protection

The memo lists five measures, and warns that some may be covered by patents or pending patents.

  • Public key validation (from RFC 2631): before computing ZZ, check that the other party's key y lies in the interval [2, p-1] and that y^q mod p equals 1.
  • CA validation: the certification authority performs the same check before issuing a certificate. This works only for static keys, so with ephemeral-static agreement only the sender is protected. Users learn that the CA does this through its Certificate Policy and Certification Practice Statement (RFC 2527) or certificate extensions.
  • Choice of prime p: pick p so that p-1 = 2*q*k with k a large prime or a product of large primes. An element of order 2 remains, so one bit of the private key can still be lost. Choosing p so that k is small leaks only a few bits.
  • Compatible cofactor exponentiation: compute ZZ = (yb^j)^c mod p where c = j^(-1)*xa mod q. It requires gcd(j,q)=1 and gives the same result as ordinary Diffie-Hellman when both keys are valid. If ZZ equals 1, abandon the exchange.
  • Non-compatible cofactor exponentiation: compute ZZ = (yb^j)^xa mod p. The result differs from RFC 2631, so it does not interoperate with conforming implementations. If ZZ equals 1, abandon the exchange.

For both cofactor methods, when j is larger than q (the usual case) they are less efficient than public key validation.

You can inspect the other person's handshake before using it, ask a trusted office to inspect it for you, build your numbers so there are no weak handshakes, or do some extra math that cancels the weak ones out.

§4Ephemeral-Ephemeral Agreement

When both sides use ephemeral keys, which is not possible in S/MIME but may occur in other protocols, the attacker has more room to work, since both public keys can be changed. For example, the attacker could replace both keys with an element of small order such as -1, so that both sides compute a shared value from a small, easily searched set. Protection may then be needed for both parties.

If the prime was chosen as in the prime-choice method, each user must also make sure the other key is not one of the small-order elements, either by checking a list of them or by adding public key validation or one of the cofactor methods. Protection is unnecessary if the other party's ephemeral public key is authenticated, by a signature, MAC or other integrity protection, as in the Station-To-Station protocol.

If both people use throwaway handshakes, a sneaky middleman can swap both for weak ones. A signed handshake stops the swap.

§6References