取了其中一方的发送链密钥和接收链密钥，那么他可以计算此后所有的消息密钥，并解密对应的消息。为了避免这种情况，双棘轮算法将对称密钥棘轮与DH棘轮组成在一起，使用后者基于迪菲-赫尔曼的输出更新链密钥。为了实现DH棘轮，通信双方各自生成一个DH密钥对（迪菲-赫尔曼公钥和私钥）作为当前的棘轮密钥对（ratchet key pair）。从任意一方发出的每一条消息都将携带一个消息头，其中包含发送者当前的棘轮公钥。当接收到远端发送过来的新的棘轮公钥时，本端将实施一次DH棘轮步进（DH ratchet step），生成