  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. The transformations are computable in polynomial time, preserve
the number of observable events, and determinism. Besides a deeper insight into
the differences among the notions, the transformations have applications in
complexity results. Namely, we improve the algorithmic complexity of deciding
language-based opacity, infinite-step opacity, and K-step opacity, and provide
a complete and improved complexity picture of the verification of the discussed
notions of opacity.
