The Hardware Side of Cryptography

14 January 2012

Simplified Secure Voice over IP : Introduction

Well, just a small idea.

Lets say i want to speak securely to someone over the net. The person might be connected miles away from me bu assuming he has gained access to the net. The idea is to exchange the voice through the net. Since its not an easy way to get a public IP, i would prefer a server-client way instead. My PC and the PC of the person whom i talked to are said to be clients interconnected through a public server. I do not have suffecient knowledge on VoIP and i would not reinvent the wheel :D .

The simplified scheme is as following. The server is in fact continuously listening to connected clients, acquiring their status, responses to their query, propagates requests for another client and forward voice streams. The client is periodically accessing the server to know what to do, what to provide and what to response.

Lets start sampling the voice through microphone and dump incoming streams to headset through ADC/DAC of soundcard of my PC using ALSA (Advanced Linux Sound Architecture) library. My sampled voice would be compressed further using CELP (Code Exitation Linear Prediction) through speex library. The compressed voice would be further ciphered using 256-bit AES (Advanced Encryption Standard) and sent to the server. The server would receive encrypted voice packet and forward it to adressed client. The receiving client would firstly look for packet number to synchronize and decipher it properly. The deciphered would be a CELP (Code Exitation Linear Prediction) compressed voice packet that needs to be uncompressed further using speex library. The uncompressed voice would be sent to ALSA (Advanced Linux Architecture) library for further processing to DAC and lastly to headphone or loudspeaker.

The things mainly used here are libspeex for voice compressing, alsa-lib for soundcard interfaacing, AESx86 asm routine for ciphering purpose, libtom for key exchange purpose, and socket programming as well as IPC for internal mechanism. The simplified diagram would be as following.

Simplified Secure Voice over IP Client Diagram

Simplified Secure Voice over IP Client Diagram

GUI (Graphical User Interface) module would be a small GTK+ based program, providing interface for dialing, acquiring statuses. The controller module would be the one responsible to control the rest according to user response and server response. The cipher module would provide cipherkeys for incoming and outgoing as two separated streams. The keygen module would provides Diffie-Hellman key exchange mechanism to generate private keys for incoming stream and outgoing stream cipher-keys. The codec module provides compressed voice sampled from microphone and processes compressed incoming voice to loudspeaker. Packetizer module would be responsible of tacking care packet synchronization. and Last but not the least, connection module as a front-end that interface the net using socket programming.

I would start develop and release this as a GPL version 3 licensed open source project strictly for fun, hobbyist, educational, non-commercial and of course non-criminal activity. Please suggest me hints and feedbacks for better result.

Advertisement

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Theme: Silver is the New Black. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.