Secure Arthimitic Coding
Secure Arthimitic Coding
Research Article
Secure Arithmetic Coding with Error Detection Capability
Copyright © 2010 M. Sinaie and V. T. Vakili. This is an open access article distributed under the Creative Commons Attribution
License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly
cited.
Recently, arithmetic coding has attracted the attention of many scholars because of its high compression capability. Accordingly,
this paper proposed a Joint Source-Cryptographic-Channel Coding (JSCC) based on Arithmetic Coding (AC). For this purpose,
embedded error detection arithmetic coding, which is known as continuous error detection (CED), is used. In our proposed
method, a random length of forbidden symbol which is produced with a key is used in each recursion. The dummy symbol is
divided into two dummy symbols with a key and then is placed in random positions in order to provide security. Finally, in
addition to producing secure codes, the suggested method reduced the added redundancy to half of the total redundancy added by
CED. It has less complexity than cascades source, channel coding, and encryption while its key space in comparison to other joint
methods has enlarged. Moreover, the coder provides a flexible switch between a standard compression model and a joint model.
applications [7], for example, JPEG2000 and H.264, many 1 0.375 0.281 0.281
researchers were attracted to it. In 1997 Boyd et al. [8]
introduced a forbidden symbol in the source alphabet and c c c c
used it at the decoder side as an error detection device.
Sayir [9] considered the arithmetic coder as a channel coder
and added redundancy in the transmitted bit stream by b b b b
introducing gaps in the coding space and shrinking the
probability of symbols by a factor [10]. In these joint coders,
we have embedded error detection compressed data without a a a a
providing essentially any security in the face of a chosen
plaintext attack, in which an attacker has the ability to specify 0 0 0.141 0.246
a sequence of input symbols, to observe the corresponding Before encoding After After After
output, and to repeat this process for an arbitrary number of any symbol encoding a encoding b encoding c
times. Figure 1: An example of arithmetic coding, the source symbols are
Some schemes of joint AC and encryption have been also a, b, c with p(a) = 0.011, p(b) = 0.011, p(c) = 0.010 [10].
proposed up to now. Wen et al. [11] modified the traditional
AC by removing the constraint that intervals corresponding
to each symbol are continuous and the intervals associated
with each symbol can be split according to a key which [14] as CED. Until AC was developed in the 1970s, Huffman
is known for the both encoder and decoder. Grangetto et coding was considered to be almost optimal. Huffman
al. [12] proposed a method in which the system modified coding uses a tree for encoding a sequence. AC uses a
the traditional arithmetic coder by randomly permuting the one-dimensional table of probabilities instead of a tree. It
intervals in accordance with a key. always encodes the whole massage at once and allows the
Magli et al. [1] developed a JSCC. It used arithmetic cod- allocation of fractional number of bits to each source symbol.
ing which was proposed by Sayir and for providing security; It generates a code sequence which is uniquely decodable,
it randomly permuted the intervals in accordance with a such that the probability of distribution of code sequence
key generating shuffling sequence which was introduced by approaches the uniform distribution over the code alphabet
Grangetto. Although this system is a JSCC but the attacker [6].
can break the system by comparing N pairs of the output AC works by recursively subdivision of coding interval
with the corresponding input which differ from each other in portion to probabilistic estimates of symbols as generated
in exactly one symbol. Teekaput and Chokchaitam [13] have by a given model and retains it to be used as the new
introduced a scheme for JSCC. Security was provided by interval for the next encoding step of the recursion [5].
changing the location of the forbidden symbol. This system This can be illustrated better with an example. Consider a
looks like the system which was introduced by Magli et al., so source alphabet with three symbols [14] a, b, and c with
it suffered from the same limitations. p(a) = 0.375, p(b) = 0.375, and p(c) = 0.25. For example,
In this paper, we present a method for joint source- we want to encode the sequence abc. After encoding a, the
cryptographic-channel coding based on arithmetic coding. new interval will be [0, 0.375), and the transmitted sequence
This is very important in light of simplifying the design of the would lie in this interval. The next symbol is b, and according
system. We use binary arithmetic coding with the forbidden to the intervals associated to each symbol, the next interval
symbols which was introduced in [14] for error detection. will be [0.141, 0.281). This recursion continues to the end of
Security is provided by using random length of the forbidden the sequence. At the end, a number in the last interval which
symbols and randomly placing these dummy symbols in is a fractional number between zero and one will be sent as
the probability table. Compression ratio is improved in the sequence code. This example is illustrated in Figure 1.
comparison with the systems in [1, 13]. Also, the actual key AC is a powerful source coding technique and has higher
space has enlarged. This method can be used for arithmetic compression efficiency than other entropy coders. But arith-
coding with multiple symbols. However, to simplify the metic coding has two major drawbacks, the error sensitivity
method, we use binary AC. and error propagation property. Error propagation because
The rest of this paper is organized as follows: in Section 2, of loss of synchronization can damage the whole data after
we discuss more on arithmetic coding and arithmetic coding an error has occurred in the compressed data. We can use
with forbidden symbol. In Section 3, our proposed method this loss of synchronization to error detection. Anand et al. in
for JSCC is described. In Section 4, the results obtained [14] introduced a forbidden symbol which does not belong
from the simulation and the performance of the system are to the source alphabet and never occurs in the probability
explained. In Section 5, we draw some conclusions. table. For inserting dummy symbol into the probability table,
probability of the symbols should be shrunk by a factor.
This forbidden symbol has a finite and small probability
2. Arithmetic Coding and CED assigned to it. If its probability is ε, so the probability
of the symbols must be shrunk by factor (1 − ε). The
This section provides a brief introduction to arithmetic introduction of the forbidden symbol produces an amount
coding and AC with forbidden symbol which is named in of artificial coding redundancy per encoded bit equal to
EURASIP Journal on Information Security 3
a1 a2 a3
Original probability space
Reserving a a1 a2 a3 f1
probability space ε
1-ε ε
Arithmetic encoding a1 a1 a1 a2 a1 a3 a1 f1 a2 a1 a2 a2 a 2 a3 a2 f 1 a3 a1 a3 a2 a3 a3 a3 f1
f1 X
with a forbidden symbol
a2 a 1 a1
a2 a1 a2
a2 a1 a3
a2 a2 a1
a2 a2 a2
a2 a2 a3
a2 a3 a1
a2 a3 a2
a2 a3 a3
a2 a1 f 1
a2 a2 f 1
a2 a3 f 1
a3 a1 a1
a3 a1 a2
a3 a1 a3
a3 a2 a1
a3 a2 a2
a3 a2 a3
a3 a3 a1
a3 a3 a2
a3 a3 a3
a3 a1 f1
a3 a2 f 1
a3 a3 f 1
a1 a1 a1
a1 a1 a2
a1 a1 a3
a1 a2 a1
a1 a2 a2
a1 a2 a3
a1 a3 a1
a1 a3 a2
a1 a3 a3
a1 f1 X
a2 f 1 X
a3 f 1 X
a1 a1 f 1
a1 a2 f 1
a1 a3 f 1 f1 XX
Valid code space
−log2 (1 − ε), at the expense of the compression efficiency The combined data encryption and AC use the error prop-
[14]. The decoder obtains an error detection capability and agation property of AC to provide security. Our proposed
enhances its robustness against noise. If an error occurs, this technique uses forbidden symbols with random lengths and
forbidden symbol is very likely to be eventually decoded with places them in random locations. The flowchart of this
a high probability. Figure 2 illustrates a sample of binary AC proposed technique is shown in Figure 3. While the concept
subinterval separation by inserting a forbidden symbol in the of this scheme can be applied to a source alphabet with any
current interval. size, for simplicity, the remainder of the discussion focuses
This forbidden symbol can be placed anywhere in the on the binary case.
probability table, and we can also have more than one
forbidden symbol and place them in more than one location
3.1. Inserting Forbidden Symbols. In conventional CED, the
in the probability table. In conventional CED, the probability
probability of the forbidden symbol is fixed and at the
of the forbidden symbol is fixed, and also the forbidden
beginning of the encoding process; this probability which
symbol is fixed at the same location for the whole encoding
is named ε is determined by (1). This depends on the
process. Before transmission, the encoder and decoder
maximum bit rate, R and the entropy of source, H(A) [9]:
should negotiate the location and size of the forbidden
symbol [13]. If its probability is fixed for the whole encoding (1/R−1)H(A)
process, then the bit rate of the code is fixed, and the amount 1
ε =1− . (1)
of the added redundancy is fixed to −log2 (1 − ε) bit per 2
symbol.
If we take the maximum bit rate needed into account and Adding the forbidden symbol leads to the addition of
also consider that the bit rate in each recursion is not allowed redundancy to the output extension which can be used as a
to exceed the maximum bit rate, we can change the bit rate means of error detection. This method does not have enough
while encoding. This causes less redundancy to be added to security against attacks; therefore, we use a random-length
the bit stream and higher security. We describe this in more forbidden symbol in each recursion in our scheme instead
details in Section 3. of a fixed-length one. In each recursion with a random
generator, we generate a forbidden symbol in the range
[0, ε), in which ε is determined by maximum bit rate, R, by
3. Scheme of the Proposed Model using (1). The generated probability of the forbidden symbol
in each recursion is named γ. By using this random forbidden
The present paper aims to provide an arithmetic coding symbol in every recursion, we shrink the probability of
system which is secure and has an error detection capability. symbols by the factor (1 − γ). This causes adding random
Our scheme is based on CED, in which there is a forbidden redundancy while encoding each input symbol. In addition,
region with a probability ε, added to the probability table to we can claim that we have a semiadaptive arithmetic coder
provide some redundancy while a synchronized decoder can because in each recursion, a different length of the forbidden
detect the error occurring and conceal wrong decision bits. symbol is produced. It leads to a different shrinking factor
4 EURASIP Journal on Information Security
Situations Situations
Initialize PRNGs
(a b µ1 µ2 ) (μ1 μ2 a b )
(a µ1 b µ2 ) (μ2 a μ1 b)
New input symbol (µ1 a b µ2 ) (a μ2 b μ1 )
(µ1 a µ2 b) (μ2 a b μ1 )
Yes End of Table 2: Mapping function of binary arithmetic codes with two
Stop
file equal lengths of forbidden symbol (look up table).
Situations
No (a b µ1 µ2 )
Produce μ2 , μ1 by random generator (a µ1 b µ2 )
(µ1 a b µ2 )
(µ1 a µ2 b)
Establishing look up
tables 1 or 2
secure key distribution protocol is one of the challenging Based on the extensive performed simulations, it is
issues and is beyond the scope of this paper. concluded that in the CED method, if n bits are needed
for detecting an error after it has occurred, (6 ∗ n)/5 bits
are needed for error detection in our proposed method.
4. Simulation Results Hence, to solve this problem, we can compensate for this
Our proposed scheme has been implemented with Matlab shortcoming by assuming greater lengths for the input blocks
software and a personal computer with 2 G of RAM and in the proposed encoder. However, we know that adding
Intel Centrino Core 2 Duo 2.2 G as its CPU. Due to security and error detection capability to a compression
unstable possesses in computer systems, we take 20 trials encoder often leads to a compromise between the amounts
and select the most frequently occurred results as the final of compression achieved and the amount of security and the
values. Input symbols, upper and lower bounds, and also robustness against channel errors incorporated.
produced forbidden symbols in each recursion are set with The encoded stream can be reconstructed perfectly
precisions of 10−6 being equal to 16-bit implementation. It by providing the same K and by reversing the encoding
is worth noting that this precision is not fixed and can be operations. By having the same K, both encoder and decoder
flexibly adjusted depending on the requirement of the target generate the same pseudorandom number sequence for
applications. decision bits and exactly add the same γ1 and γ2 to the corre-
sponding code string in order to synchronize with each other.
As soon as the forbidden symbol is decoded, the occurrence
4.1. Compression Ratio. The Joint Source-Cryptographic- of error in the received sequence is detected. However, this
Channel Model should be used with the precondition that method of decoding is not capable of correcting the errors.
there is no large redundancy generation after modifying the But, the redundancy of the encoder’s output can be used for
standard coding engine. Table 3 shows the results of applying correcting errors.
the proposed method for input sequences with lengths of Arithmetic codes can be viewed as tree codes. Sequential
100, 1000, and 10000 symbols and allows for comparison decoding is a general decoding algorithm for tree codes. It
with traditional arithmetic coding in absolute as well as was introduced by Wozencraft and Reiffen to decode con-
relative terms. The upper half of the table considers the volutional codes in [15]. Fano [16] presented an improved
case where p(a) = 1/3, and the lower half of the table sequential algorithm in 1963, which is now known as the
considers the case where p(b) = 5/6. The exact length of Fano algorithm. Pettijohn et al. [17, 18] proposed two
the output depends not only on the input data but also sequential decoding algorithms, depth first and breadth first,
on the specific sequence of forbidden symbols, as well as for decoding arithmetic codes in the presence of channel
their locations and lengths in each recursion. Therefore, errors. We can use these decoding algorithms with the same
the code lengths shown in the table are averages based on key for decoding the output of our proposed scheme.
simulations using 1000 random sequence realizations. The
column labeled “proposed method” gives the mean of the
4.2. Complexity. Sayir [10] showed that an arithmetic coder
code lengths based on a large number of simulations using
can be an entropy source encoder when the model is
random seeds for location and lengths. These results show
matched with the source and can be a channel encoder
that in order to limit coding redundancy, ε should be defined
when the probability space is properly reserved for error
in a limited range, which can be flexibly controlled according
protection and can act as a convolutional code. After
to the requirement of various application systems. Table 3
inserting the forbidden symbol to a source with M alphabet,
shows that the redundancy added to the bit stream by our
we will have an arithmetic coding with M + 1 alphabet in
model is half of the redundancy which conventional method
which one of the symbols never appears. Therefore, adding
adds to the bit stream. For ε = 0.03, redundancy is 0.0439 bit
parity is performed while compression without adding more
per symbol. If the length of ε is fixed, for example, N = 100,
additional operations to the conventional arithmetic coding.
the redundancy which is added is 4.39 bit per symbol, but
If the source has M alphabet, so this method just adds M
our proposed method adds 2.1 bit per symbol.
multiplication and 1 additional operation to the complexity
Using the forbidden symbol in the source alphabet
of conventional arithmetic encoder. But if we want to place
actually aims at simply detecting errors and not correcting
a convolutional encoder after arithmetic encoder, according
them. By randomizing the forbidden symbol, although the
to the amount of redundancy, it needs some shift and XOR
amount of the added redundancy is reduced to half, this does
operations and increasing memory usage. For example, if the
not interfere with the capability of error detection. However,
bit rate is 1/2 and the code generator polynomial is p(x) =
Anand et al. [14] gave an empirical model to estimate the
x2 + x, it would need at least three shift register and XOR
number of the bits necessary to detect an error after it has
operations for each input symbol.
occurred. This is shown in the following:
Also because a traditional arithmetic coder needs to work
sequentially, arithmetic coding and convolutional coding
P y (k) = (1 − ε)k−1 ε, k = 1, 2, . . . , ∞. (2) cannot be parallelized. A comparison of time duration for
arithmetic coding and arithmetic coding followed by a 1/2
The probability of not detecting an error after n bits is feedforward convolutional encoder is shown in Figure 4.
Placing the forbidden symbol in different locations
P(n) = (1 − ε)n . (3) and assigning random lengths of the forbidden symbols
6 EURASIP Journal on Information Security
Proposed method
AC with fixed length
Symbol probability N N ∗H AC with maximum
ε = 0.03
ε = 0.03
10 9.183 9.1890 9.7390 9.4470
P(a) = 1/3 H = 100 91.83 91.9100 96.3610 94.0330
entropy = .9183 1000 918.3 918.6810 962.7090 941.2350
10000 9183 9183.700 9622.410 9404.46
10 5.917 6.0410 6.4450 6.0100
P(a) = 5/6 H = 100 59.17 65.7390 69.6020 67.3620
entropy = .5917 1000 591.7 650.3070 694.9340 672.7320
10000 5917 6500.250 6940.01 6717.720
250 300
250
200
200
150
150
100
100
50
50
0 0
8 10 15 30 40 60 80 90 100 8 10 15 30 40 60 80 90 100
File size in bytes ×103 File size in bytes ×103
Figure 4: Comparison of AC with forbidden symbol and cascaded Figure 5: Comparison of proposed system and cascaded arithmetic
arithmetic coding with convolutional coder. coding with AES and convolutional coder.
increase computational complexity. This extracomputational adds as much as 128 × 2 × 2 operations to conventional
complexity of joint AC and channel coding in comparison arithmetic coding operations. This number is much smaller
with the complexity of three disjoint coders is very small. than the number of operations added to the AC with disjoint
It is relevant to consider a system consisting of a coders. Figure 5 compares time duration required by binary
traditional arithmetic encoder followed by AES, which, of arithmetic coding for p(a) = 1/3 followed by AES with a
course, would also deliver security and compression. Since block size of N = 128 and 1/2 feedforward convolutional
AES was designed for efficient hardware implementation, it encoder with our proposed method. We can see that our
is extremely fast when it is fully pipelined in hardware [19]. system takes much shorter time than a cascaded system.
However, because a traditional arithmetic coder needs to Our proposed technique can be implemented utilizing
work sequentially, the AC cannot easily be parallelized and techniques similar to those used in traditional arithmetic
becomes a bottleneck in a combined AC/AES system [7]. coding and can benefit from the same optimizations for
AES consists of 40 sequential transformation steps composed speed, finite precision, and so forth. Inserting the forbidden
of simple and basic operations such as table lookups, shifts, symbol to the probability table adds no complexity to
and XORs. For a block size of 128, these steps require a arithmetic coder; only establishing the probability table and
total number of 19 shifts, use of 336 bytes of memory, and searching the look up table increase the amount of memory
the XORing of approximately (the exact requirement is data needed to store the look up table and the probability of
dependent) 608 bytes of data. But, our proposed technique forbidden symbols. In addition, division of the forbidden
adds a maximum of 20 bytes of memory, no XOR, and no symbol and updating the probability of symbols by factor
shift operations to conventional AC. For a block size of 128 (1 − γ) in each recursion introduce an additional multipli-
and a source with binary alphabets, our proposed method cation though, as with traditional arithmetic coding, faster
EURASIP Journal on Information Security 7
algorithms that replace the multiplications with simpler 4.3.3. Sensitivity Analysis. An ideal procedure of data encryp-
operations can be introduced [20]. tion should be sensitive to both the secret key and the
plaintext. The change of a single bit in either the secret
key or the plaintext should produce a completely different
4.3. Security Analysis. A good encryption procedure should
encrypted data. To prove the robustness of the proposed
be robust against all kinds of cryptanalytic, statistical, and
scheme, we performed sensitivity analysis with respect to
brute-force attacks. In this section, we discuss the security
both the secret key and the plaintext.
analyses of the proposed encryption scheme. This includes
statistical analysis, key space analysis, and sensitivity analysis
of the proposed encryption scheme with respect to the key (A) Sensitivity Analysis of the Cipher to Key. For testing the
and plaintext, and so forth. to prove that the proposed key sensitivity of the proposed coder, we performed the
cryptosystem is secure against the most common attacks. following steps:
Table 4: Sp 800-22 tests results of cipher. Table 5: Correlation coefficients of different outputs.
large which makes 2Nc +LN > 2128×3 , the attacker would rather [7] H. Kim, J. Wen, and J. D. Villasenor, “Secure arithmetic
use the brute-force attack to break the secret key utilized in coding,” IEEE Transactions on Signal Processing, vol. 55, no. 5,
the PRNGs. pp. 2263–2272, 2007.
A pseudorandom sequence is vulnerable to the known [8] C. Boyd, J. G. Cleary, S. A. Irvine, I. Rinsma-Melchert, and
plaintext attacks; since there is a given known input I. H. Witten, “Integrating error detection into arithmetic
sequence, the attacker can compare the joint source-channel coding,” IEEE Transactions on Communications, vol. 45, no. 1,
pp. 1–3, 1997.
coder and the proposed coded sequences and attempt to find
[9] J. Sayir, On Coding By Probability Transformation, Hartung-
the added subintervals and their locations. To increase the
Gorre, Konstanz, Germany, 1999.
security, an efficient key distribution protocol could be also
[10] J. Sayir, “Arithmetic coding for noisy channels,” in Proceedings
explored in our algorithm to provide a sufficient encryption. of the Information Theory and Communication Workshop, pp.
69–71, IEEE, 1999.
[11] J. G. Wen, H. Kim, and J. D. Villasenor, “Binary arithmetic
5. Conclusion coding with key-based interval splitting,” IEEE Signal Process-
In this paper, a scheme has been presented which combines ing Letters, vol. 13, no. 2, pp. 69–72, 2006.
compression, error detection, and data encryption. The [12] M. Grangetto, E. Magli, and G. Olmo, “Multimedia selective
encryption by means of randomized arithmetic coding,” IEEE
proposed technique by adding a little complexity to CED
Transactions on Multimedia, vol. 8, no. 5, Article ID 1703505,
provides security. It adds two random subinterval μ1 and μ2 pp. 905–917, 2006.
to the probability interval in each iterative coding step and [13] P. Teekaput and S. Chokchaitam, “Secure embedded error
controls the locations of the forbidden symbol by a PRNG detection arithmetic coding,” in Proceedings of the 3rd Interna-
with a seed, S, while the key is K = (S, γ1 , γ2 ) in each tional Conference on Information Technology and Applications
recursion. Moreover, it easily switches to standard arithmetic (ICITA ’05), pp. 568–571, IEEE, July 2005.
coding by setting γ1 and γ2 equal to zero when the data [14] R. Anand, K. Ramchandran, and I. V. Kozintsev, “Continuous
do not need to be protected. This coder causes the added error detection (CED) for reliable communication,” IEEE
redundancy to be almost halved without any special effect Transactions on Communications, vol. 49, no. 9, pp. 1540–
on error detection capability. The proposed technique is less 1549, 2001.
complicated and faster than cascaded systems; therefore, they [15] J. M. Wozencraft, and B. Reiffen, Sequential Decoding, MIT
are more suitable for real-time applications. The technique Press, Cambridge, Mass, USA, 1961.
can be also extended to selectively encrypting data and [16] R. M. Fano, “A heuristic discussion of probabilistic decoding,”
images. This proposed method can be used in ARQ systems IEEE Transactions Information Theory, pp. 64–74, 1963.
for error detection and error correction. [17] B. D. Pettijohn, K. Sayood, and M. W. Hoffman, “Joint
source/channel coding using arithmetic codes,” in Proceedings
of the Data Compression Conference (DDC ’00), pp. 73–82,
Acknowledgment Snowbird, Utah, USA, March 2000.
[18] B. D. Pettijohn, M. W. Hoffman, and K. Sayood, “Joint
The authors would like to thank ITRC (Iran Telecommu- source/channel coding using arithmetic codes,” IEEE Transac-
nication Research Center) for the invaluable assistance and tions on Communications, vol. 49, no. 5, pp. 826–835, 2001.
funding for this paper. [19] A. Hodjat and I. Verbauwhede, “Area-throughput trade-offs
for fully pipelined 30 to 70 Gbits/s AES processors,” IEEE
Transactions on Computers, vol. 55, no. 4, pp. 366–372, 2006.
References [20] M. Grangetto, E. Magli, and G. Olmo, “Multimedia selective
encryption by means of randomized arithmetic coding,” IEEE
[1] E. Magli, M. Grangetto, and G. Olmo, “Joint source, channel Transactions on Multimedia, vol. 8, no. 5, pp. 905–917, 2006.
coding, and secrecy,” EURASIP Journal on Information Secu- [21] A. Rukhin, J. Soto, J. Nechvatal et al., “A statistical test
rity, vol. 2007, Article ID 79048, 7 pages, 2007. suite for random and pseudorandom number generators for
[2] H. Kaneko and E. Fujiwara, “Joint source-cryptographic- cryptographic applications,” NIST Special Publication 800-22,
channel coding based on linear block codes,” in Applicable May 2001.
Algebra in Engineering, Communication and Computing, vol. [22] X. Tong, M. Cui, and Z. Wang, “A new feedback image encryp-
4851 of Lecture Notes in Computer Science, pp. 158–167, 2007. tion scheme based on perturbation with dynamical compound
[3] R. Bose and S. Pathak, “A novel compression and encryption chaotic sequence cipher generator,” Optics Communications,
scheme using variable model arithmetic coding and coupled vol. 282, no. 14, pp. 2722–2728, 2009.
chaotic system,” IEEE Transactions on Circuits and Systems, vol.
53, no. 4, pp. 848–857, 2006.
[4] D. Xie and C.-C. J. Kuo, “Multimedia encryption with
joint randomized entropy coding and rotation in partitioned
bitstream,” EURASIP Journal on Information Security, vol.
2007, Article ID 35262, 12 pages, 2007.
[5] A. Moffat, R. M. Neal, and I. H. Witten, “Arithmetic coding
revisited,” ACM Transactions on Information Systems, vol. 16,
no. 3, pp. 256–294, 1998.
[6] T. Cover and J. Thomas, Elements of Information Theory, John
Wiley & Sons, New York, NY, USA, 1991.