Visual cryptography


One of the popular solutions for image encryption is visual cryptography. Secret sharing concepts are used to encrypt a secret image into the shares (customized versions of the original image) which can be transmitted over an undeveloped communication channel and by overlapping shares, the secret message is obtained

Visual cryptographic solutions are based on binary or binaries inputs. Due to this, natural images must be first transformed into halftone (this is a technique which uses different density of dots to display the image) images to simulate the original gray or colour levels in the target binary image

To create the shares, the halftone version of the input image is used instead of the original image. The decrypted image is made by stacking the shares together. Because binary data can be displayed in an apparent form when printed on transparencies or viewed on the screen and overlapping shares that contain apparently random information can expose the secret image. However, the decrypted image is darker, contains a number of visual damages due to the algorithm that is used for the process and the resolution of secret image is increased by most of visual cryptography solutions (Lukac at el,2005) and(Lukac 2006).

1.1 Objectives

The base of protected communication among users using insecure channel is known as cryptography. In order for cryptographic security to take place, an algorithm is involved for the practice of encrypting and decrypting messages

In its basic form, one image is split into two separate images called shares. When the shares are stacked on top of each other, the unique image is retrieved

A general n out of n visual cryptography scheme involves n participants in which a secret image is split into n random looking shares and all n shares are required to recover the original image.

1.2 Aims

The important idea behind Visual Cryptography is to encrypt information in the form of images in a secure and flawless way

The information must be encrypted before it is sent, so that it cannot be illegally read or modified in the middle of transmission. Suppose 4 persons have deposited their money in a bank account. These persons obviously do not trust each other. In particular, they do not want a single member of themselves to withdraw the money. However, they assume that withdrawing money by two members of the group is not considered a conspiracy; rather it is considered to have received authorizations

Therefore, they decided to set the bank code (with a trusted computer) into 4 partitions so that any two or more partitions can be used to reconstruct the code. Since the person’s representatives will not have a computer with them to decode the bank code when they come to withdraw the money, they want to be able to decode visually: each thief gets a transparency

The transparency should yield no information about the bank code (even implicitly). However, by taking any two transparencies, stacking them together and aligning them, the secret number should pop out. How can this be done? (Naor and Shamir, 1994) proposed a solution and introduced a simple but perfectly secure way that allows secret sharing without any cryptographic computation, which they termed as Visual Cryptography Scheme. The simplest Visual Cryptography Scheme is given by the following setup. A secret image consists of a collection of black and white pixels where each pixel is treated independently

To encode the secret, the original image is split into n customized versions (referred as shares). To decode the image, a subset S of those n shares is picked and display each of them onto a transparency

In this project, a new visual cryptography scheme is intended for shadow images. The proposed scheme will be flexible, easily implemented, and more secure for shadow images. Moreover, shadow image structure is augmented to reduce the chances for an attacker to guess the secret.

Literature Survey

2.1 introduction

Visual Cryptography was introduced by (Naor and Shamir, 1994) at Eurocrypt, an annual conference sponsored by the International Association for Cryptographical Research (IACA) to encourage discussions and seminars among cryptologists all over the world

In that, the description is about a new cryptographic scheme that encodes a black and white image into n shares. Decoding is done with the human visual system when the n shares are placed on transparencies and stacked on top of each other. They included several schemes to implement a visual cryptography system in their presentation

Since that time, the paradigm of visual cryptography has attracted wide attention all over the world. Several papers and projects have been presented to extend visual cryptography. Schemes have been invented for a general k out of n sharing scheme and to cover gray scale and colour images as well(Jim Cai and Zhou,2000)

Even today, research continues in the field of visual cryptography and papers regarding contrast, extended schemes are being published regularly

This research addresses the few questions concerning visual cryptography, and will attempt to answer these questions in the context of the research by using experimental approach into the problem of visual cryptography, these questions are: what is cryptography? What set of features should be used in visual cryptography? How to reduce chances for attackers to get the secret of shadow images?

2.2 Theory

This section will attempt to explain the basic theory behind visual cryptography. Consider a black and white image (not gray scale). It is made up of black pixels and white pixels grouped such that when viewed with the human eye, the picture (or word, symbol etc.) can be seen. To encrypt this image, each pixel from the original image is taken and converted into sub pixels. For sake of this discussion and for simplicity, let us assume that each pixel will be converted into two sub pixels and there will be two shares

If a pixel is white, then one of two combinations of sub pixels will be randomly chosen to represent the pixel on each of the shares. When the shares are stacked and properly lined up, the sub pixels for the white pixel produce the result

In both sets of sub pixels for the white pixel, it can be seen the result is one black sub pixel and one white sub pixel next to each other. When viewed with the human visual system, the result appears to be gray (combined effect of white and black next to each other)

On the other hand, if a pixel is black, then one of the two combinations of sub pixels will be randomly chosen to represent the pixel in each of the shares (same idea as the white pixel). However with black pixels gives two sub pixels next to each other. To the human eye, this appears as a share by itself gives no visible information from the original image because the sub pixels are evenly distributed on each share (one black sub pixel and one white sub pixel for each pixel in the original image). These combinations (black/white and white/black) occur with probability 1/ 2 providing a share with randomized pixels and thus not revealing any hint of the original image. When the shares are stacked, the white pixels are seen as gray, while the black areas remain black (Naor at el, 1994 ,Lee at el,2003 and Voyatzis,1996)

(Naor and Shamir, 1995) thought about the problem of encrypting material such as: printed text, handwritten notes, pictures, etc in an absolutely secure way which can be interpreted directly by the human visual system

Furthermore, they have explained that the basic model includes a printed page of cipertext (which can be sent by mail of faxed) and a printed transparency. The system they developed can be used by anyone who lacks knowledge of cryptography and without performing any cryptographic commutations. Moreover, they noted that the best way to visualize the visual cryptographic scheme is to consider a concrete example

In cryptography, the process of transforming data (referred to as plaintext) where the process uses an algorithm (called cipher) is called encryption. The encrypting process make the information unreadable to anyone except those possessing special knowledge, usually referred to as a key. The encrypting process results encrypted data (in cryptography, referred to as cipher text). To read encrypted data, the encrypted data should be made readable. So the reverse process is called decryption. In real world, the software for encryption can typically also perform decryption to make the encrypted information readable again (ElGamal,1985 and Rivest,1978)

Encryption has long been used by militaries and governments to facilitate secret communication. Encryption is now used in protecting information within many kinds of civilian systems, such as computers, storage devices (e.g. USB flash drives), networks (e.g. the Internet, e-commerce), mobile telephones, wireless microphones, wireless intercom systems, Bluetooth devices and bank automatic teller machines. Encryption is also used in digital rights management to prevent unauthorized use or reproduction of copyrighted material and in software also to protect against reverse engineering (Encryption)

Encryption, by itself, can protect the confidentiality of messages, but other techniques are still needed to protect the integrity and authenticity of a message; for example, verification of a message authentication codes (MAC) or a digital signature. Standards and cryptographic software and hardware to perform encryption are widely available, but successfully using encryption to ensure security may be a challenging problem. A single slip-up in system design or execution can allow successful attacks. Sometimes an adversary can obtain unencrypted information without directly undoing the encryption. (Maurer,1994 and Diffie,1976)

Moreover, The optimality of VC is determined mostly by its pixel expansion and the relative contrast and, the relative contrast needs to be as large as possible to ensure visibility (Alvarez at el,2005). In the scope of this research, the works related to contrast optimization will be explored. Works related to deriving lower bound of pixel expansion m can be found in (Naor and Shamir, 1995), (Rivest at el,1984) etc. The research on contrast optimization was motivated by the problem of extra graying erect introduced to decoded image. This occurs because the decoded image is not an exact reproduction of the original image, but an expansion of the original, with extra black pixels.

Research methods

-Doing a thorough investigation into basic visual cryptography

-Careful study of algorithms used in visual cryptography

-Checking out a suitable development environment and a suitable frame work that can ease the image processing tasks

-investigating shadow image structure for visual cryptographic practices such as pixel expansion and the relative contrast

-This project emphasizes, intends and evaluates a computer-based system using appropriate processes and tools, as follows

Front End :Java

Back End :Microsoft SQL Server

OS : Windows XP and Windows vista

IDE : net beans 6.7

The net bean IDE is used for following features:

In this project, net beans Integrated Development Environment (IDE) is used because its tools, debugging and performance monitoring. Net bean IDE for developing applications saves the time by managing windows, settings, and data. In addition, an IDE can store repetitive tasks through macros and abbreviations. Drag-and-drop features make creating graphical user interface (GUI) components or accessing databases easy and highlighted code and debugging features alert to errors in the code

The application is developed by java because of following features

– Java is a graphical user interface programming language

– Java supports to platform independent mechanism

– Java is a general purpose and object oriented programming language

– The most striking features of the language are that it is platform neural language

– Java program is under the control of JVM; the JVM can contain the program and prevent it from generating side effects outside the system. Thus safety is included in Java language.

Java is mainly adopted for two reasons

– Security

– Portability

These two features are available in java because of the byte code. Byte code is a highly optimized set of instructions to be executed by the Java run time system called JVM. The features of Java which are adopted for the network system explore are

– Multithreading

– Socket programming

– Swing


Users perceive that their world is full of multiple events all happenings at once and wants their computers to do the same. Unfortunately, writing programs that deal with many things at once can be much more difficult than writing conventional single threaded programs in C or C++. Thread safe in multithreading means that a given library functions is implemented concurrent threads of execution


Swing refers to the new library of GUI controls (buttons, sliders, checkboxes etc). Swing is a rapid GUI development tool that is part of the standard Java development kit. Swing is a set of classes that provides more powerful and flexible components. Swing components are not implemented by platform specific code. Instead they are written in Java and therefore are platform independent (java doc).