  Opacity is an information flow property characterizing whether a system
reveals its secret to a passive observer. Several notions of opacity have been
introduced in the literature. We study the notions of language-based opacity,
current-state opacity, initial-state opacity, initial-and-final-state opacity,
K-step opacity, and infinite-step opacity. Comparing the notions is a natural
question that has been investigated and summarized by Wu and Lafortune, who
provided transformations among current-state opacity, initial-and-final-state
opacity, and language-based opacity, and, for prefix-closed languages, also
between language-based opacity and initial-state opacity. We extend these
results by showing that all the discussed notions of opacity are transformable
to each other. Besides a deeper insight into the differences among the notions,
the transformations have applications in complexity results. In particular, the
transformations are computable in polynomial time and preserve the number of
observable events and determinism, and hence the computational complexities of
the verification of the notions coincide. We provide a complete and improved
complexity picture of the verification of the discussed notions of opacity, and
improve the algorithmic complexity of deciding language-based opacity,
infinite-step opacity, and K-step opacity.
