Home >Documents >Extensions to aPeer-to-Peer Instant Messenger · PDF file Instant messaging is a type of...

Extensions to aPeer-to-Peer Instant Messenger · PDF file Instant messaging is a type of...

Date post:24-Aug-2020
Category:
View:0 times
Download:0 times
Share this document with a friend
Transcript:
  • Distributed Computing

    Extensions to a Peer-to-Peer Instant Messenger

    Bachelor Thesis

    Christian Cadruvi

    [email protected]

    Distributed Computing Group

    Computer Engineering and Networks Laboratory

    ETH Zurich

    Supervisors:

    Philipp Brandes, Tobias Langner

    Prof. Dr. Roger Wattenhofer

    September 2, 2014

  • Acknowledgements

    I would like to thank my supervisors, Philipp Brandes and Tobias Langner for their assistance and guidance during this bachelor thesis. They were always very helpful and had useful inputs for this thesis.

    i

  • Abstract

    In this thesis we explain our modifications to a peer-to-peer based instant mes- senger which has previously been developed in several other projects. At the start of this project, the messenger consisted of two different clients that were developed apart from each other, namely an Android client and a client which was developed for the Pidgin user interface for PCs.

    The Android client is written in Java with Android specific extensions, where as for the Pidgin client, a plug-in written in C communicates with the user interface of pidgin as well as the core implementation in Java.

    A large restructuring of both projects was necessary to make the implemen- tation of new features easier.

    The features developed include group chat messaging, this is the extension of a chat, in which only two users communicate, to a larger number of users in the same chat. The synchronization of chat messages is a core feature of this thesis, i.e., to synchronize all chat messages between different devices using a newly developed approach. This requires identifying those chat messages, which are not yet on all devices associated with the same user, while trying to send as few messages as possible. This is useful to be able to carry on a conversation on a different device. As a last feature, we developed file transfer. These features extend the already existing instant messaging clients on both Android and Desktop.

    ii

  • Contents

    Acknowledgements i

    Abstract ii

    1 Introduction 1

    2 Related Work 2

    2.1 Previous Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    3 Concepts 3

    3.1 Overview of our System . . . . . . . . . . . . . . . . . . . . . . . 3

    3.2 Group chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    3.3 Synchronization between devices . . . . . . . . . . . . . . . . . . 4

    3.4 File Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    4 Implementation 8

    4.1 Group Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    4.1.1 Android Client . . . . . . . . . . . . . . . . . . . . . . . . 8

    4.1.2 Pidgin Client . . . . . . . . . . . . . . . . . . . . . . . . . 8

    4.2 Synchronization between Devices . . . . . . . . . . . . . . . . . . 10

    4.3 File Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    4.4 Architectural Changes . . . . . . . . . . . . . . . . . . . . . . . . 12

    5 Conclusion 14

    5.1 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    Bibliography 15

    A Appendix Chapter A-1

    iii

  • Chapter 1

    Introduction

    Instant messaging is a type of online chat, that allows users to send short mes- sages over the Internet. With the arising use of smartphones as well as social networks, that often include some kind of instant messaging system, chatting has become more and more relevant.

    There are many different instant messaging applications available, but all of them lack in certain aspects. Chat applications can be categorized into two architecture types: Client-server architectures and decentralized architectures.

    A client-server architecture usually stores messages as well as files on servers, which may be undesirable for users, as they do not have control over the data. However, client-server architectures are easier to implement, as the communica- tion always goes through the server, but this also makes it a potential bottleneck.

    Decentralised architectures are more difficult to implement, as the storing of information can not be done at one central point. It also has to be considered, that messages can not always be sent over the same path.

    Most chat applications therefore use a client-server architecture, which may or may not be encrypted. Encryption of data becomes more and more important, not only for sensitive business data but also for the common user.

    Another aspect of instant messaging applications is the platform they run on. Most programs stick to one kind of platform, they run on only one oper- ating system. When a user changes his 1 location, it is difficult to continue a conversation on the way or even at the new place. It is thus desirable to support multiple platforms, where users can use a single account for desktop and mobile platforms. This makes switching between mobile and desktop devices possible and it is easy to carry on a conversation.

    The approach we used tries to pick the best from the user’s perspective, i.e., a decentralised architecture that uses end-to-end encryption and there exist clients for both desktop and mobile platforms. The instant messaging system we developed uses a peer-to-peer architecture with encryption to prevent access to any messages or files sent. Our approach makes sure that data is stored only on the devices participating in conversations.

    1In this thesis the male form is used, this applies to both genders similarly.

    1

  • Chapter 2

    Related Work

    There are some similar instant messengers available which provide cryptograph- ically secure text messaging and file transfer such as TorChat or RetroShare. These two are available only on desktop.

    TorChat is available for Linux and Microsoft Windows and uses Tor hidden services as its underlying network. TorChat does not seem to be updated any- more, the last commit to the project happened two years ago [4]. It is very important to have an up to date messenger for security reasons.

    RetroShare tries to solve the same problem, by providing an open source platform for private, secure and decentralised communication [1] on desktop plat- forms Microsoft Windows, Linux and Mac OS X. It provides instant messaging, serverless e-mail, filesharing and chat rooms. It features end-to-end encryption using OpenSSL and authentication based on GNU Privacy Guard.

    Threema [3] and TextSecure [2] are both mobile instant messengers developed for Android, both offer a secure end-to-end encryption. Both of them rely on a client-server architecture but claim that the server operator can not access any data. TextSecure supports this statement by making its code open source.

    2.1 Previous Work

    In previous projects, an Android client [6] as well as a desktop client [7] us- ing Pidgin were developed. They were developed independently of each other, but with the intention that they can communicate with each other, thus using the same messages. This means that these two projects were completely differ- ent, using a different data model and different message handling. Both clients supported the following basic concepts:

    • Adding clients to and removing clients from the contact list. • Changing a contact and giving him an alias. • Creating and removing a simple chat with a client in the contact list. • Sending chat messages to single clients over a chat.

    2

  • Chapter 3

    Concepts

    This chapter explains the concepts used in this bachelor thesis.

    3.1 Overview of our System

    There are two clients available, a PC Client and an Android Client. They are able to communicate with each other and a user can have an account on both clients simultaneously. A peer-to-peer network lies underneath the clients, which handles the communication. For this, TomP2P is used, which is an advanced DHT. A more detailed explanation on peer-to-peer networks can be found in the Bachelor thesis of Theodoros Bourchas [5].

    It is intended that all messages eventually arrive. This means if the recipient of a message is currently offline, the message is stored in the peer-to-peer network until it can be delivered. When a client establishes a connection, it requests all messages that have not been delivered while being offline. This is helpful especially with messages that change a chat, as for example an add member message in a group chat (see next chapter).

    In the following, the term resource is used to describe one device, e.g., one account can be associated with four resources, namely two Android devices and two PC Clients.

    3.2 Group chat

    A group chat is a chat with at least two users. A message sent to this chat is sent to all participants of the chat. A group chat should support the following functions:

    1. Creating a new group. When creating a new group, a message needs to be sent to all other clients in this group, which contains the group chat identifier, the group name and all members.

    3

  • 3. Concepts 4

    2. Inviting clients to a group. When someone invites a client to a group, all clients that were previously in this group need to be informed that a new client has joined. The inviter has to send a group open message to the invitee, which contains again the group chat identifier, the group name and all members.

    3. Leaving a group. The client leaving the group has to send a message to all group members, such that they do not continue to send the me

Click here to load reader

Embed Size (px)
Recommended