## 1 Introduction  
Cloud Computing includes both what is delivered as a service over the internet and the hardware behind those services. Resources can be provisioned and released very easily, requiring little if any intervention from the provider. From the user's point of view, Cloud infrastructures seem to provide infinite resources, which can be adapted to one's needs. For example, a small start-up company may lack the need or the financial resources required to buy many computing resources, but may want to leave its options open for a future expansion, if successful, making Cloud Computing particularly appropriate in such a case. In this context, the company would simply pay for what is actually used given that resources can be released when they are no longer required. In a Cloud network, users do not own the computing servers. They can access numerous services without the burden of Cloud management and their data can be accessed by way of many devices (such as smart phones, sensors, tablets, etc.). More generally, the main features of Cloud Computing are the following [1]:  
1. _Large-Scale_: to satisfy the customers' demands, companies like Amazon, IBM, Microsoft, Yahoo and Google own hundreds of thousands of distributed servers. 2. _Resource pooling_: providers serve multiple customers with provisional and scalable services. These services can be transparently adjusted to the clients' needs. 3. _Ubiquitous network access_: users can access services anywhere, through any kind of terminal. 4. _Rapid elasticity_: users can increase and release their requests quickly and dynamically. 5. _On-demand self-service_: since a Cloud infrastructure is a large pool of resources, users can buy according to their needs. The provider automatically supplies services and associates resources to the Cloud user, as requested. _High extensibility:_ the scale of a Cloud infrastructure can be extended to meet the increasing requirements of customers. Security in Cloud Computing is critical when developing services. Updating the operating systems of virtual machines, ensuring availability, isolating users' individual data, implementing authentication mechanisms, encryption or configuring VPN and VLAN are but a few examples of what needs to be considered [2]. Here is a list of the security aspects that challenge Cloud Computing. 1. _Identity, Authentication, Authorization_ Identity enables characterizing a user through the use of a login. Authentication is used to verify the user's credentials. This is done in a secure, trustworthy and manageable manner [3]. When authentication is complete, the Cloud authorization verifies the user's rights. Guidance includes a centralized directory, identity management, privileged user and access management, role-based access control and separation of duties among main features. In addition, the service provider can frequently offer a free trial period. For example, in the summer of 2012, attackers (users for a free period) accessed [PERSON]'s data (writer for Wired Magazine) Apple, Gmail and Twitter accounts [3]. They erased all his personal data in those accounts. 2. _Confidentiality_ A malicious attacker in a virtual machine can listen to another virtual machine [4]. An attacker can very easily identify the data center of the Virtual Machine (VM) and can also obtain information about the IP address and the domain name of the data center. In addition, a VM can extract private cryptographic keys being used in other VMs on the same physical server, which subsequently implies the risk of data leakage [3]. It is thus important to protect the confidentiality of VM data. For example, the Amazon EC2 platform (Seattle, Washington, WA, USA) [5] was vulnerable to confidentiality issues [4]. However, now, with Amazon Web Service (AWS), the client has the option to manage their own encryption keys [6]. 3.