VOICE ENCRYPTION FOR GSM
ECE/CS 561 – HARDWARE/SOFTWARE DESIGN OF
• GSM bears numerous security vulnerabilities.
• Phone calls can be hacked/overheard/recorded by professional hackers or by
even service providers.
• To add privacy and security to the GSM
communication system by embedding
encryption and decryption algorithms onto an
BLOCK DIAGRAM OF THE SYSTEM
• An analog speech signal is fed into an Arduino
through a Microphone.
• The Arduino converts the speech signal into
• We encrypt these Digital samples by means of a
simple Encryption algorithm.
• The encrypted signal is sent to an Android phone
over Bluetooth and the phone transmits the
encrypted voice signal to the receiver.
• At the receiving side, the received signal is fed
into an Arduino(again over Bluetooth) .
• Here, we decrypt the signal and convert it back
into analog, which is fed into speakers.
• Audio input to the Arduino:
Implemented the Audio input circuit which provides the
Speech signal to the Arduino.
Developed a simple encryption algorithm to scramble the
speech signal and to transmit the same through a
• Android Application
Developed an Android Application for discovering paired
devices and to stream voice to the selected device during a
real time phone call.
• Basically a development board.
• Chosen because of its extensive community
support, as well as its relatively simple
• Written in a C-based language.
• Arduino program has a setup stage and a loop
• Setup stage runs immediately after the unit
receives power, and the run stage loops
• Wireless technology standard for exchanging
data over short distances
• ISM band from 2400–2480 MHz
• Bluetooth is special in that it uses profiles to
carry out specific tasks.
• The HSP is the most commonly used profile,
providing support for the popular Bluetooth
Headsets to be used with mobile phones.
• The Headset Profile inherits from the SPP
• Adds features such as volume control, call
answering, hang up, and voice dial.
• It relies on SCO(Synchronous connectionoriented) links for audio encoded in 64 kbit/s
CVSD or PCM(We have used PCM).
AUDIO INPUT TO THE ARDUINO
Method of audio preparation - so that it can be
processed and sampled by the Arduino.
• 9 V batteries
• Operational Amplifiers (TL072)
• Resistors (100K and 10K ohm)
• Capacitors( 47n and 10u F)
BLOCK DIAGRAM OF THE AUDIO INPUT
AUDIO PROCESSING BY THE ARDUINO
• We give the output of the Audio Input circuit
to the analog input (A0) of the Arduino.
• Continuous sampling of Audio from port A0.
• We consider the most significant 8 bits of the
ADC output for our encryption purposes.
• Obtain this by left shifting the 10 bit ADC
ENCRYPT THE DIGITALLY CONVERTED
• Since the processing power of the Arduino is not very high, we
employ a rather simple encryption algorithm to decrease the
r = incomingAudio % 10;
reverse = reverse* 10 + r;
• Transmit the encrypted voice signal via the Bluetooth module to the
• We follow a similar procedure for decryption
Android Application Development
• Checks if the Bluetooth Adapter is available on
• If it is not available, sends out a message saying
that Bluetooth is not available on the device.
• If Bluetooth is available on the device, but is not
enabled, sends out a request to the user to turn on
• After Bluetooth is turned on, the app gets a list of
paired devices on the device and starts its
• If a device is discovered and is on the existing
paired devices list, it is added to the list of
discovered paired devices which is displayed on
the device screen.
• Upon the selection of the paired device, with
which the user wants to connect, a connection is
established and a new activity for calling is
• For testing purposes, we have just given the
option of calling one person. We have done this to
test the effectiveness of voice transmission.
• Difficulties in connecting our phone with the
• Problem was in identifying the UUID of our
• Playing Audio from a prerecorded file.
• When we tried to play a file, all we were able
to hear was just White noise
• We are able to transmit audio over a Bluetooth
SCO link, which is usually used in Headset
Profile and Hands Free profile protocols.
• Unfortunately, the firmware of the Bluetooth
module which we have used in the project does
not support the headset profile.
• Instead, it just supports the SPP(Serial Port
• Hence our Android phone is not able to recognize
the Bluetooth device as a possible SCO link
• Instead of using an external Bluetooth module,
the OSEPP BTH-01(with Arduino support) can
be used as an alternative.
• The OSEPP BTH-01 comes with an ATMEGA
microcontroller and a BTW11 audio bluetooth
module, which supports over 10 bluetooth
profiles, with BlueGiga’s iWrap firmware.
• To be in particular, it supports the HSP and
HFP, which is required for our project.
• By monitoring the states of the HSP/HFP
protocol, the OSEPP BTH-01 can be programmed
to behave like a headset.
• For example, upon the arrival of HFP RING state
and if the phone is OFFHOOK, the device can be
programmed to be in the Call in Progress state. In
the Call in Progress state, Audio signals can be
received from and also transmitted to a device
with which connection has been established.
• We live in times where in a lot of importance
has been given for safeguarding privacy.
• We believe that our project has helped to
improve privacy protection in this digital age