Constraint Programming models have been recently proposed to solve cryptanalysis problems for symmetric block ciphers such as AES. These models are more efficient than dedicated approaches but their design is difficult: straightforward models do not scale well and it is necessary to add advanced constraints derived from cryptographic properties. We introduce a global constraint which simplifies the modelling step and improves efficiency. We study its complexity, introduce propagators and experimentally evaluate them on two cryptanalysis problems (single-key and related-key) for two block ciphers (AES and Midori). 1 Motivations Symmetric bloc ciphers use a secret key K to cipher an input text X 0 into a cipher text X r in such a way that X r can be deciphered back into X 0 with the same key K. Differential cryptanalysis aims at evaluating if we can guess K by studying difference propagation during ciphering [6]. These differences are obtained by applying a XOR (bitwise exclusive or, denoted ⊕) between two input texts. In the related-key attack [5], differences are also introduced in keys. For mounting these attacks, we must compute Maximum Differential Characteristics (MDCs), i.e., most probable differences. A widely used symmetric block cipher is AES [10]. However, AES is rather time consuming, and lighter ciphers must be designed for devices with limited computational resources. Each time a new cipher is designed, we must compute MDCs to evaluate its robustness with respect to differential attacks. In this section, we illustrate MDCs on Midori128 [2], which is a lighweight cipher simpler to explain than AES. However, all models can be extended to AES and to other existing symmetric block ciphers, and we experimentally evaluate our approach on both Midori and AES. Midori128. The ciphering iterates r rounds and each round is composed of four operations: SubBytes replaces every byte with another byte according to a given lookup table; ShuffleCells moves bytes; and MixColumns and AddKey perform XORs. For each round i ∈ [0, r − 1], X i denotes the text state at the beginning of round i, and S i , Y i , and Z i denote intermediate text states after each operation: S i is the result of applying Sub-Bytes on X i ; Y i is the result of applying ShuffleCells on S i ; Z i is the result of applying MixColumns on Y i ; and X i+1 is the result of applying AddKey on Z i and K. The goal of the MDC problem is to compute differences. We denote δK the differences in the key (i.e., δK is the result of applying a XOR between two keys), and δX i