ABSTRACT
Benefited from cloud computing, users can achieve an
effective and economical approach for data sharing among
group members in the cloud with the characters of low
maintenance and little management cost. Meanwhile, we
must provide security guarantees for the sharing data files
since they are outsourced. Unfortunately, because of the
frequent change of the membership, sharing data while
providing privacy-preserving is still a challenging issue,
especially for an un trusted cloud due to the collusion attack.
Moreover, for existing schemes, the security of key
distribution is based on the secure communication channel,
however, to have such channel is a strong assumption and is
difficult for practice. In this paper, we propose a secure data
sharing scheme for dynamic members. Firstly, we propose a
secure way for key distribution without any secure
communication channels, and the users can securely obtain
their private keys from group manager. Secondly, our
scheme can achieve fine-grained access control, any user in
the group can use the source in the cloud and revoked users
cannot access the cloud again after they are revoked.
Thirdly, we can protect the scheme from collusion attack,
which means that revoked users cannot get the original data
file even if they conspire with the un trusted cloud. In our
approach, by leveraging polynomial function, we can
achieve a secure user revocation scheme. Finally, our
scheme can achieve fine efficiency, which means previous
users need not to update their private keys for the situation
either a new user joins in the group or a user is revoked from
the group.
Page 1
INTRODUCTION
Page 2
INTRODUCTION
1.1 MOTIVATION
Cloud computing, with the characteristics of intrinsic
data sharing and low maintenance, provides a better
utilization of resources. In cloud computing, cloud service
providers offer an abstraction of infinite storage space for
clients to host data. It can help clients reduce their financial
overhead of data managements by migrating the local
managements system into cloud servers. However, security
concerns become the main constraint as we now outsource
the storage of data, which is possibly sensitive, to cloud
providers. To preserve data privacy, a common approach is
to encrypt data files before the clients upload the encrypted
data into the cloud. Unfortunately, it is difficult to design a
secure and efficient data sharing scheme, especially for
dynamic groups in the cloud. Kallahalla et al presented a
cryptographic storage system that enables secure data
sharing on untrustworthy servers based on the techniques
that dividing files into file groups and encrypting each file
group with a file-block key. However, the file-block keys
need to be updated and distributed for a user revocation;
therefore, the system had a heavy key distribution overhead.
Other schemes for data sharing on untrusted servers have
been proposed in . However, the complexities of user
Page 3
for
trusted
collaborative
computing.
By
Page 5
sharing
data
files
since
they
are
outsourced.
sharing
data
while
providing
privacy-
Domain Description
Domain name: Cloud Computing
Cloud computing is the use of computing resources
(hardware and software) that are delivered as a service over
Page 7
goal
of
cloud
traditional supercomputing,
computing
is
to
apply
or high-performance
running
low-cost
consumer
PC
technology with specialized connections to spread dataprocessing chores across them. This shared IT infrastructure
contains large pools of systems that are linked together.
Often, virtualization techniques are used to maximize the
power of cloud computing.
Page 8
Measured
service:
Cloud
systems
automatically
Page 10
2.
3.
4.
5.
6.
7.
Page 11
9.
10.
1. Price:
Pay for only the resources used.
2. Security: Cloud instances are isolated in the network from
other instances for improved security.
3. Performance: Instances can be added instantly for improved
performance. Clients have access to the total resources of
the Clouds core hardware.
4. Scalability: Auto-deploy cloud instances when needed.
5. Uptime: Uses multiple servers for maximum redundancies.
In case of server failure, instances can be automatically
created on another server.
6. Control: Able to login from any location. Server snapshot
and a software library lets you deploy custom instances.
7. Traffic: Deals with spike in traffic with quick deployment of
additional instances to handle the load.
Page 12
LITERATURE
SURVEY
Rainer Steinwandt1
An attribute based encryption scheme capable of handling
multiple authorities was recently proposed by Chase. The
scheme is built upon a single-authority attribute based
encryption scheme presented earlier by Sahai and Waters.
Chases construction uses a trusted central authority that is
inherently capable of decrypting arbitrary ciphertexts
created within the system. We present a multi-authority
attribute based encryption scheme in which only the set of
recipients defined by the encrypting party can decrypt a
corresponding ciphertext. The central authority is viewed as
honest-but-curious: on the one hand it honestly follows
the protocol, and on the other hand it is curious to decrypt
arbitrary ciphertexts thus violating the intent of the
encrypting party. The proposed scheme, which like its
Page 14
relies
on
the
Bilinear
DiffieHellman
Ciphertext-Policy
Attribute-
authority,
its
misbehavior
(i.e.,
illegal
key
Page 17
Attribute
Based
Searchable
Encryption
AUTHORS: Payal Chaudhari1 and Manik Lal Das2
Attribute Based Encryption (ABE) is a promising public-key
cryptographic
primitive
that
can
be
used
for
Attribute
Based
Encryption
Page 19
SYSTEM
ANALYSIS
Page 20
Page 21
Here the linear ordering of these activities is critical. At the end of the
phase, the output of one phase is the input to other phase. The output of each
phase should be consistent with the overall requirement of the system. Water fall
and iteration Model has been chosen because all requirements were known before
and the objective of our software development is the computerization/automation
of an already existing manual working system.
Technical Feasibility
Operational Feasibility
Economic Feasibility
Do the proposed equipments have the technical capacity to hold the data
required to use the new system?
users in their various capacities or roles. Permission to the users would be granted
based on the roles specified. Therefore, it provides the technical guarantee of
accuracy, reliability and security. The software and hard requirements for the
development of this project are not many and are already available in-house at
NIC or are available as free as open source. The work for the project is done with
the current equipment and existing software technology. Necessary bandwidth
exists for providing a fast feedback to the users irrespective of the number of
users using the system.
3.1.3.2 Operational Feasibility
Proposed projects are beneficial only if they can be turned out into
information System. That will meet the organizations operating requirements.
Operational feasibility aspects of the project are to be taken as an important part
of the project implementation. Some of the important issues raised are to test the
operational feasibility of a project includes the following:
Will the system be used and work properly if it is being developed and
implemented? Will there be any resistance from the user that will
undermine the possible application benefits?
Developing the system, which meets the SRS and solving all the requirements
of the system?
Demonstrating the system and installing the system at client's location after
the acceptance testing is successful.
Submitting the required user manual describing the system interfaces to work
on it and also the documents of the system.
Conducting any user training that might be needed for using the
system. Maintaining the system for a period of one year after
installation.
CPU Speed
2.4 GHZ
Ram Memory
256 MB RAM
Hard disk
40 GB HD
IDE Tool
: Netbeans 7.2.1
Front End
Web Server
:Apache Tomcat
Programming
Database
The system model consists of three different entities: the cloud, a group manager
and a large number of group members. The cloud, sustaining by the cloud service
providers, provides storage space for hosting data files in a pay-as-you-go manner.
On the other hand, the cloud is untrusted since the cloud service providers are
easily to become untrusted. Therefore, the cloud will try to learn the content of the
stored data. Group manager will obtain charge of system parameters generation,
user registration, also, client repudiation. Bunch individuals (clients) are an
arrangement of sign up clients that will store their own particular information into
the cloud and impart them to others. In the plan, the gathering enrollment is
powerfully changed, because of the new client call-up and client denial.
INPUT DESIGN
The input design is the link between the information system and the
user. It comprises the developing specification and procedures for data preparation
and those steps are necessary to put transaction data in to a usable form for
processing can be achieved by inspecting the computer to read data from a written
or printed document or it can occur by having people keying the data directly into
the system. The design of input focuses on controlling the amount of input
required, controlling the errors, avoiding delay, avoiding extra steps and keeping
the process simple. The input is designed in such a way so that it provides security
and ease of use with retaining the privacy. Input Design considered the following
things:
Methods for preparing input validations and steps to follow when error occur.
OBJECTIVE
1. Input Design is the process of converting a user-oriented description of the
input into a computer-based system. This design is important to avoid errors in the
data input process and show the correct direction to the management for getting
correct information from the computerized system.
2. It is achieved by creating user-friendly screens for the data entry to handle large
volume of data. The goal of designing input is to make data entry easier and to be
free from errors. The data entry screen is designed in such a way that all the data
manipulates can be performed. It also provides record viewing facilities.
3. When the data is entered it will check for its validity. Data can be entered with
the help of screens. Appropriate messages are provided as when needed so that the
user will not be in maize of instant. Thus the objective of input design is to create
an input layout that is easy to follow.
OUTPUT DESIGN
A quality output is one, which meets the requirements of the end user
and presents the information clearly. In any system results of processing are
communicated to the users and to other system through outputs. In output design
it is determined how the information is to be displaced for immediate need and
also the hard copy output. It is the most important and direct source information to
the user. Efficient and intelligent output design improves the systems relationship
to help user decision-making.
1. Designing computer output should proceed in an organized, well thought out
manner; the right output must be developed while ensuring that each output
element is designed so that people will find the system can use easily and
effectively. When analysis design computer output, they should Identify the
specific output that is needed to meet the requirements.
2. Select methods for presenting information.
3. Create document, report, or other formats that contain information produced by
the system.
The output form of an information system should accomplish one or more
of the following objectives.
Trigger an action.
Confirm an action.
description in this step is omitted. We refer to the original for full details. The
user decrypts AENCpk(KEY, v2) to obtain his private key KEY = (xi , Ai , Bi). In
the phase the interactions between the user and the manager can be depicted as
follows (see Fig. 3 in [1]).
SYSTEM DESIGN
4.1 INTRODUCTION
In this project, we propose a mobile-based software token system that is
supposed to replace existing hardware and computer-based software tokens. The
proposed system is secure.
Unified Modeling Language Diagrams:
UML is a method for describing the system architecture in detail using the blueprint.
UML is a very important part of developing objects oriented software and the
software development process.
Using the UML helps project teams communicate, explore potential designs,
and validate the architectural design of the software.
Definition:
UML is a general-purpose visual modeling language that is used to
specify, visualize, construct, and document the artifacts of the software system.
UML is a language:
It will provide vocabulary and rules for communications and function
on conceptual and physical representation. So it is modeling language.
UML Specifying:
Specifying means building models that are precise, unambiguous and
complete. In particular, the UML address the specification of all the important
analysis, design and implementation decisions that must be made in developing and
displaying a software intensive system.
UML Visualization:
The UML includes both graphical and textual representation. It
makes easy to visualize the system and for better understanding.
UML Constructing:
Uses of UML:
The UML is intended primarily for software intensive systems. It has been
used effectively for such domain as
The UMLs five behavioral diagrams are used to visualize, specify, construct,
and document the dynamic aspects of a system. The UMLs behavioral diagrams are
roughly organized around the major ways which can model the dynamics of a system.
A behavioral diagram consists of Use case Diagram, Sequence Diagram,
Collaboration Diagram, State chart Diagram and Activity Diagram.
DATA FLOW DIAGRAMS
Data flow diagrams represent the flow of data through a system. A DFD is
composed of:
I.
II.
III.
IV.
flow chart and it is not intended to indicate decision-making, flow of control, loops
and other procedural aspects of the system. DFD is a useful graphical tool and is
applied at the earlier stages of requirements analysis. It may be further refined at
preliminary design states and is used as mechanism for creating a top level structural
design for software.
The DFD drawn first at a preliminary level is further expanded into greater
details: The context diagram is decomposed and represented with multiple bubbles.
Each of these bubbles may be decomposed further and documented as more detailed
DFDs.
CLOUD
Group Member
Login
success
Group Signature
Verification
success
Group Manager
error
Login
Login Failed
success
Group Member
Account Activate
error
Signature failed
Group details
File Upload
File Details
File Download
File Delete
File Edit and Save
Account Revoke
End
error
Login Failed
Group Member
Group Manager
+UserName: string
+Password: string
+ConfirmPassword: string
+Group: string
+Mail: string
+Mobile: number
+Place: String
+Username: string
+Password: string
+getFile Logs()
+getMemberDetails()
+ViewFiles()
+DeleteFiles()
+ViewGroup()
+AccountActivations()
+FileUpload()
+File Encryption()
+File Download()
+File Edit()
+A/C Revoke()
+getGroupSignatureKey()
Cloud
+CloudID: number
+Type: string
+Name: string
+MaintainFiles()
+StoreFile()
+getRegistrationDetails()
+getFiles()
+getDownloadedFiles()
+getFileLogs()
the scenario. Sequence diagrams are typically associated with use case realizations in
the Logical View of the system under development.
Registration
View Group
File Upload
File Edit
Group Manager
Group Members
File Download
File Delete
Account Revoke
CLOUD
Group Member
Group Manager
error
Login
Login
Login Failed
success
success
Group Signature
Verification
error
Login Failed
Group Member
Account Activate
error
Signature failed
success
Group details
File Upload
File Details
File Download
File Delete
File Edit and Save
A
Account Revoke
This important phase provides the understanding and procedural details necessary for
implementing the system recommended in the feasibility study. The design step
produces a data design, an architectural design and a procedural design. The data
design transforms the information domain model created during analysis in to the data
structures that will be required to implement the software.
The architectural design defines the relationship among major structural
components into a procedural description of the software. Source code generated and
testing
is
conducted
to
integrate
and
validate
the
software.
From a project management point of view, software design is conducted in two steps.
Preliminary design is connected with the transformation of requirements into data and
software architecture. Detailed design focuses on refinements to the architectural
representation that leads to detailed data structure and algorithmic representations of
software.
Logical Design:
Data design is the first of the three design activities that are conducted during
software engineering. The impact of data structure on program structure and
procedural complexity causes data design to have a profound influence on software
quality. The concepts of information hiding and data abstraction provide the
foundation for an approach to data design.
During the software design, abstraction allows us to organize and channel our
process by postponing structural considerations until the functional characteristics;
data streams and data stores have been established. Data abstraction involves
specifying legal operations on objects; representations and manipulations details are
suppressed.
Information Hiding:
IMPLEMENTATION
Implementation is the stage of the project when the theoretical design is turned out
into a working system. Thus it can be considered to be the most critical stage in
achieving a successful new system and in giving the user, confidence that the new
system will work and be effective.
The implementation stage involves careful planning, investigation of the existing
system and its constraints on implementation, designing of methods to achieve
Cloud Module
MODULES DESCRIPTION:
1. Cloud Module:
In this module, we create a local Cloud and provide priced abundant storage
services. The users can upload their data in the cloud. We develop this module,
where the cloud storage can be made secure. However, the cloud is not fully trusted
by users since the CSPs are very likely to be outside of the cloud users trusted
domain. Similar to we assume that the cloud server is honest but curious. That is, the
cloud server will not maliciously delete or modify user data due to the protection of
data auditing schemes, but will try to learn the content of the stored data and the
identities of cloud users.
2. Group Manager Module:
Group manager takes charge of followings,
1. System parameters generation,
2. User registration,
3. User revocation, and
4. Revealing the real identity of a dispute data owner.
Therefore, we assume that the group manager is fully trusted by the other parties.
The Group manager is the admin. The group manager has the logs of each and every
process in the cloud. The group manager is responsible for user registration and also
user revocation too.
3. Group Member Module:
Group members are a set of registered users that will
store their private data into the cloud server and
Share them with others in the group.
Note that, the group membership is dynamically changed, due to the staff
resignation and new employee participation in the company. The group member has
the ownership of changing the files in the group. Whoever in the group can view the
files which are uploaded in their group and also modify it. The group meme
4. File Security Module:
1. Encrypting the data file.
2. File stored in the cloud can be deleted by either the group manager or the data
owner. (i.e., the member who uploaded the file into the server).
5. Group Signature Module:
A group signature scheme allows any member of the group to sign messages while
keeping the identity secret from verifiers. Besides, the designated group manager
can reveal the identity of the signatures originator when a dispute occurs, which is
denoted as traceability.
6. User Revocation Module:
User revocation is performed by the group manager via a public available
revocation list (RL), based on which group members can encrypt their data files and
ensure the confidentiality against the revoked users.
4.4 CONCLUSIONS
In this way we can design the layout of the project which is to be
implemented during the construction phase. Thus we will have a clear picture of the
project before being coded. Hence any necessary enhancements can be made during
this phase and coding can be started.
IMPLEMENTATION
&
RESULTS
5.1 INTRODUCTION
The implementation part is the most important phase of the project. In this
phase, we code the entire project in the chosen software according to the design laid
during the previous phase. The code has to be in such a way that the user
requirements are satisfied and also not complicated for the user i.e., the user interface
or GUI has to be easy to navigate. The code should be efficient in all terms like space,
easy to update, etc. In this manner, we can complete the coding part of the project and
later it can be sent for testing before being delivered to the customer.
would relate clusters to each other; Its also called exclusive clustering)
System Model
We consider a cloud computing architecture by combining with an example that a
company uses a cloud to enable its staffs in the same group or department to share
files. The system model consists of three different entities: the cloud, a group
manager (i.e., the company manager), and a large number of group members. Cloud
is operated by CSPs and provides priced abundant storage services. However, the
cloud is not fully trusted by users since the CSPs are very likely to be outside of the
cloud users trusted domain. Similar to, we assume that the cloud server is honest but
curious. That is, the cloud server will not maliciously delete or modify user data due
to the protection of data auditing schemes, but will try to learn the content of the
stored data and the identities of cloud users. Group manager takes charge of system
parameters generation, user registration, user revocation, and revealing the real
identity of a dispute data owner. In the given example, the group manager is acted by
the administrator of the company. Therefore, we assume that the group manager is
fully trusted by the other parties. Group members are a set of registered users that will
store their private data into the cloud server and share them with others in the group.
In our example, the staffs play the role of group members. Note that, the group
membership is dynamically changed, due to the staff resignation and new employee
participation in the company.
Algorithms
To achieve secure data sharing for dynamic groups in the cloud, we expect to
combine the group signature and dynamic broadcast encryption techniques. Specially,
the group signature scheme enables users to anonymously use the cloud resources,
and the dynamic broadcast encryption technique allows data owners to securely share
their data files with others including new joining users. Unfortunately, each user has
to compute revocation parameters to protect the confidentiality from the revoked
users in the dynamic broadcast encryption scheme, which results in that both the
computation overhead of the encryption and the size of the cipher text increase with
the number of revoked users. Thus, the heavy overhead and large cipher text size may
hinder the adoption of the broadcast encryption scheme to capacity-limited users. To
tackle this challenging issue, we let the group manager compute the revocation
parameters and make the result public available by migrating them into the cloud.
Such a design can significantly reduce the computation overhead of users to encrypt
files and the cipher text size. Specially, the computation overhead of users for
encryption operations and the cipher text size is constant and independent of the
revocation users.
Signature Generation
The concept of group signatures was first introduced in by Chaum and van Heyst. In
general, a group signature scheme allows any member of the group to sign messages
while keeping the identity secret from verifiers. Besides, the designated group
manager can reveal the identity of the signatures originator when a dispute occurs,
which is denoted as traceability. In this paper, a variant of the short group signature
scheme will be used to achieve anonymous access control, as it supports efficient
membership revocation.
Signature Verification
Revocation Verification
User revocation is performed by the group manager via a public available revocation
list (RL), based on which group members can encrypt their data files and ensure the
confidentiality against the revoked users.
Java
The JAVA language was created by James Gosling in June 1991 for use in a
set top box project. The language was initially called Oak, after an oak tree that stood
outside Gosling's office - and also went by the name Green - and ended up later being
renamed to Java, from a list of random words. Gosling's goals were to implement a
virtual machine and a language that had a familiar C/C++ style of notation. The first
public implementation was Java 1.0 in 1995. It promised "Write Once, Run
anywhere" (WORA), providing no-cost runtimes on popular platforms. It was fairly
secure and its security was configurable, allowing network and file access to be
restricted. Major web browsers soon incorporated the ability to run secure Java
applets within web pages. Java quickly became popular. With the advent of Java 2,
new versions had multiple configurations built for different types of platforms. For
example, J2EE was for enterprise applications and the greatly stripped down version
J2ME was for mobile applications. J2SE was the designation for the Standard
Edition. In 2006, for marketing purposes, new J2 versions were renamed Java EE,
Java ME, and Java SE, respectively.
In 1997, Sun Microsystems approached the ISO/IEC JTC1 standards body
and later the Erma International to formalize Java, but it soon withdrew from the
process. Java remains a de facto standard that is controlled through the Java
Community Process. At one time, Sun made most of its Java implementations
available without charge although they were proprietary software. Sun's revenue from
Java was generated by the selling of licenses for specialized products such as the Java
Enterprise System. Sun distinguishes between its Software Development Kit (SDK)
and Runtime Environment. (JRE) which is a subset of the SDK, the primary
distinction being that in the JRE, the compiler, utility programs, and many necessary
header files are not present.
On 13 November 2006, Sun released much of Java as free software under the
terms of the GNU General Public License (GPL). On 8 May 2007 Sun finished the
process, making Javas entire core code open source, aside from a small portion of
code to which Sun did not hold the copyright.
The following are the Primary goals: There were five primary goals in the creation of
the Java language:
It should be easy to use by selecting what were considered the good parts of
other object-oriented languages
Object oriented
Portable
Distributed
High performance
Multithreaded
Architecture neutral
Dynamic
Robust
Secure
the Java Hotspot virtual machine, perform additional steps at runtime to give your
application a performance boost. This includes various tasks such as finding
performance bottlenecks and recompiling (to native code) frequently used sections of
code.
Through the Java VM, the same application is capable of running on multiple
platforms.
Java platform
A platform is the hardware or software environment in which a program runs.
We've already mentioned some of the most popular platforms like Microsoft
Windows, Linux, Solaris OS, and Mac OS. Most platforms can be described as a
combination of the operating system and underlying hardware. The Java platform
differs from most other platforms in that it's a software-only platform that runs on top
of other hardware-based platforms.
The Java platform has two components:
o The Java Virtual Machine
o The Java Application Programming Interface (API)
You've already been introduced to the Java Virtual Machine; it's the base for
the Java platform and is ported onto various hardware-based platforms. The API is a
large collection of ready-made software components that provide many useful
capabilities. It is grouped into libraries of related classes and interfaces; these libraries
are known as packages.
(The API and JVM insulate the program from the underlying hardware)
As a platform-independent environment, the Java platform can be a bit slower
than native code. However, advances in compiler and virtual machine technologies
are bringing performance close to that of native code without threatening portability.
Java Runtime Environment
The Java Runtime Environment, or JRE, is the software required to run any
application deployed on the Java Platform. End-users commonly use a JRE in
software packages and Web browser plug-in. Sun also distributes a superset of the
JRE called the Java 2 SDK (more commonly known as the JDK), which includes
development tools such as the Java compiler, Javadoc, Jar and debugger.
One of the unique advantages of the concept of a runtime engine is that errors
(exceptions) should not 'crash' the system. Moreover, in runtime engine environments
such as Java there exist tools that attach to the runtime engine and every time that an
exception of interest occurs they record debugging information that existed in
memory at the time the exception was thrown (stack and heap values). These
Automated Exception Handling tools provide 'root-cause' information for exceptions
in Java programs that run in production, testing or development environments. JVM
implementations that are optimized for the type of systems they are targeted at.
The following characteristics are shared among the three Java editions:
Write Once Run Any where: because Java technology relies on Java bytecode that is interpreted by a virtual machine, applications written in Java can run on
similar types of systems (servers, desktop systems, and mobile devices) independent
of the underlying operating system and processor. For example, a developer doesn't
need to develop and maintain different versions of the same application to run
on a Nokia Communicator running the EPOC operating system, a Compaq iPAQ
running Pocket PC, or even a PDA powered by the Linux operating system. On
mobile phones, the variety of processors and operating systems is even more
significant, and therefore the wireless community in general is seeking a solution that
is platform agnostic, such as WAP or J2ME.
Security: while on the Internet, people are used to secure data transactions and
downloading files or email messages that may contain viruses, few wireless networks
today support standard Internet protocols, and wireless operators are concerned by the
security issues associated with the download of standard C applications on their
networks. Java technology features a robust security model: before any application is
executed by the Java virtual machine, a byte-code pre-verifier tests its code integrity.
Once an application is running, it cannot access system resources outside of a
'sandbox,' preventing applications from acting as viruses. Finally, Java applications
can take advantage of standard data encryption solutions (SSL or Elliptic Curve
Libraries) on packet based networks (for example CDPD, Mobitex, GPRS, WCDMA), providing a robust infrastructure for Mcommerce and enterprise application
access.
Rich graphical user interface: you may remember that the first demonstration of
Java technology was done using an animated character on a web page. While
animated GIF files have made this use of the technology obsolete on desktop systems,
mobile devices can benefit from richer GUI APIs that allow for differentiation of
services and the development of compelling applications.
Network awareness: while Java applications can operate in disconnected mode, they
are network-aware by default, allowing applications to be dynamically downloaded
over a network. Additionally, Java is network-agnostic, in the sense that Java
applications can exchange data with a backend server over any network protocol,
whether it is TCP/IP, WAP, i-mode, and different bearers, such as GSM, CDMA,
TDMA, PHS, CDPD, Mobitex, and so on.
Object Oriented
5.3.1 Forms
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package actionPackage;
import DbPack.TrippleDes;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author jp
*/
public class register extends HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
st.executeUpdate("insert
into
register
values('"+user+"','"+pass+"','"+group+"','"+email+"','"+mobile+"','"+place+"','NO','0')
");
if(i!=0){
mail_Send.sendMail(new TrippleDes().encrypt(group), user, email);
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
// Assuming you are sending email from localhost
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
AND
PASSWORD:
Following
Link:");
message.setText(""+ss+""+name+""+moto+""+set+""+confi+""+stt+""+ack+"");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
System.out.println(e);
e.printStackTrace();
// throw new RuntimeException(e);
}
response.sendRedirect("member_login.jsp?m=Registeration done");
}
else{
response.sendRedirect("register.jsp?m=register error...check");
}
}
else{
response.sendRedirect("register.jsp?m=password not match");
}
} catch (Exception ex) {
Logger.getLogger(register.class.getName()).log(Level.SEVERE, null, ex);
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the +
sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (SQLException ex) {
Logger.getLogger(register.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (SQLException ex) {
Logger.getLogger(register.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Key_verify.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package actionPackage;
import DbPack.DatabaseConnection;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.catalina.Session;
/**
*
* @author jp
*/
public class keyVerify extends HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String dbUgroup=null;
HttpSession session = request.getSession(true);
String ses = (String) session.getAttribute("fname");
String Uid = (String) session.getAttribute("UID");
System.out.println("id sess is "+Uid);
System.out.println("ses : " + ses);
String getK = request.getParameter("getK");
String getName = request.getParameter("getName");
Connection con = DatabaseConnection.getCon();
Statement st = con.createStatement();
Statement st1 = con.createStatement();
ResultSet rs1 = st1.executeQuery("select * from register where username
='"+Uid+"' ");
if(rs1.next()){
dbUgroup = rs1.getString("group");
}
ResultSet rs = st.executeQuery("select * from upload where file_name = '" +
getName + "' ");
System.out.println("hi ");
if (rs.next()) {
if
((getK.equals(rs.getString("key_")))&&(dbUgroup.equals(rs.getString("group")))) {
System.out.println("fine");
response.sendRedirect("fileDChk.jsp?m=" + getName);
} else {
response.sendRedirect("Error.jsp");
}
} else {
response.sendRedirect("Error.jsp");
}
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
sigVerify.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.action;
import DbPack.DatabaseConnection;
import DbPack.TrippleDes;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.catalina.Session;
/**
*
* @author jp
*/
public class sigVerify extends HttpServlet {
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
HttpSession session = request.getSession(true);
String getu = session.getAttribute("uid").toString();
System.out.println("uid is " + getu);
String getS = request.getParameter("sig");
Connection con = DatabaseConnection.getCon();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from register where username = '" +
getu + "'");
if (rs.next()) {
String getSignature = null;
try {
getSignature = new TrippleDes().encrypt(rs.getString("group_"));
System.out.println("group sig is = " + getSignature);
} catch (Exception ex) {
Logger.getLogger(sigVerify.class.getName()).log(Level.SEVERE, null,
ex);
}
if (getS.equals(getSignature)) {
response.sendRedirect("memberHome.jsp?ms="+getu);//?<html><body
onload=\"alert('Signature Verified....')\"></body></html>");
} else {
out.println("Invaild Signature.....");
}
} else {
out.println("User Error");
}
} catch (SQLException ex) {
Logger.getLogger(sigVerify.class.getName()).log(Level.SEVERE, null, ex);
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the +
sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Upload.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package actionPackage;
import DbPack.DatabaseConnection;
import DbPack.TrippleDes;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.swing.JOptionPane;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
/**
*
* @author jp
*/
public class upload extends HttpServlet {
private static final String TMP_DIR_PATH = "c:\\tmp";
private File tmpDir;
private static final String DESTINATION_DIR_PATH = "file";
private File destinationDir;
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter =
new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");
String dateNow = formatter.format(currentDate.getTime());
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
try {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
fileItemFactory.setSizeThreshold(1 * 1024 * 1024);
fileItemFactory.setRepository(tmpDir);
ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
Connection con = null;
Statement st = null;
Statement st1 = null;
sq2
"insert
into
(file_name,file_data,date,key_,group_,user_id)values(?,?,?,?,?,?)";
String sq3 = "select * from register where username = '" + getu + "'";
System.out.println("jjj");
ResultSet rs3 = st.executeQuery(sq3);
upload
if(rs3.next()){
gr = rs3.getString("group_");
}
pstm1 = con.prepareStatement(sq2);
pstm1.setString(1, fileName);
Random r = new Random();
int getKey = r.nextInt() + 5000;
String key = "" + getKey;
pstm1.setString(2, cipher);
pstm1.setString(3, dateNow);
pstm1.setString(4, new TrippleDes().encrypt(fileName));
pstm1.setString(5, gr);
pstm1.setString(6, getu);
System.out.println("in");
int ii = st1.executeUpdate("insert into log_details
values('"+getu+"','"+fileName+"','"+gr+"','Upload',now())");
if(ii!=0){
JOptionPane.showMessageDialog(null,"File Key Is :
"+new
TrippleDes().encrypt(fileName).toString());
// out.println("alert('completed')");
response.sendRedirect("memberHome.jsp?msg=file Uploaded");
}else{
out.println("log error");
}
} catch (Exception e) {
System.out.println(e);
}
} catch (Exception ex) {
Logger.getLogger(upload.class.getName()).log(Level.SEVERE, null,ex);
}
}
private static String getStringFromInputStream(InputStream is) {
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
String line;
try {
br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the +
sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
82
83
Group Manager opens the particular Group to know newly Register member details
84
Group manager Activates group member in a specific group and then forward the
group signature key to member email page
85
If the group signature key is valid then Member is Allowed to get Homepage
86
87
88
89
company by sharing false files without being traceable. Therefore, traceability, which
enables the group manager (e.g., a company manager) to reveal the real identity of a
user, is also highly desirable. Second, it is highly recommended that any member in a
group should be able to fully enjoy the data storing and sharing services provided by
the cloud, which is defined as the multiple-owner manner. Compared with the singleowner manner, where only the group manager can store and modify data in the cloud,
the multiple-owner manner is more flexible in practical applications. More concretely,
each user in the group is able to not only read data, but also modify his/ her part of
data in the entire data file shared by the company. Last but not least, groups are
normally dynamic in practice, e.g., new staff participation and current employee
revocation in a company. The changes of membership make secure data sharing
extremely difficult. On one hand, the anonymous system challenges new granted
users to learn the content of data files stored before their participation, because it is
impossible for new granted users to contact with anonymous data owners, and obtain
the corresponding decryption keys. On the other hand, an efficient membership
revocation mechanism without updating the secret keys of the remaining users is also
desired to minimize the complexity of key management. Several security schemes for
data sharing on un trusted servers have been proposed. In these approaches, data
owners store the encrypted data files in un trusted storage and distribute the
corresponding decryption keys only to authorized users. Thus, unauthorized users as
well as storage servers cannot learn the content of the data files because they have no
knowledge of the decryption keys. However, the complexities of user participation
and revocation in these schemes are linearly increasing with the number of data
owners and the number of revoked users, respectively. By setting a group with a
single attribute, Lu etal. Proposed a secure provenance scheme based on the cipher
text-policy attribute-based encryption technique, which allows any member in a group
to share data with others. However, the issue of user revocation is not addressed in
their scheme. Yu et al. presented a scalable and fine-grained data access control
scheme in cloud computing based on the key policy attribute-based encryption (KPABE) technique [9]. Unfortunately, the single owner manner hinders the adoption of
their scheme into the case, where any user is granted to store and share data.
91
TESTING
92
&
VALIDATION
6.1 INTRODUCTION
System Testing is a process of executing a program with the intent of finding
an error. A good test case is one that has a high probability of finding an as-yet
undiscovered error. A successful test is one that uncovers an as-yet- undiscovered
error. System testing is the stage of implementation, which is aimed at ensuring that
the system works accurately and efficiently as expected before live operation
commences. It verifies that the whole set of programs hang together. System testing
requires a test consists of several key activities and steps for run program, string,
system and is important in adopting a successful new system. This is the last chance
to detect and correct errors before the system is installed for user acceptance testing.
The following are the Testing Objectives:
Testing is a process of executing a program with the intent of finding an
error.
A good test has a high probability of finding an as yet undiscovered error.
A successful test is one that uncovers an as yet undiscovered error.
assumption that if all parts of the system are correct, the goal will be successfully
achieved.
6.2.6 Integration Testing
Modules integrated by moving down the program design hierarchy. Can use
depth first or breadth first top down integration verifies major control and decision
points early in design process. Top-level structure tested most. Depth first
implementation allows a complete function to be implemented, tested and
demonstrated and does depth first implementation of critical functions early. Top
down integration forced (to some extent) by some development tools in programs
with graphical user interfaces.
6.2.7 Validation Testing
Validation testing is aims to demonstrate that the software functions in a
manner that can be reasonably expected by the customer. This tests conformance the
software to the Software Requirements Specification.
6.2.7.1 Validation Test Criteria
A set of black box test is to demonstrate conformance with requirements. To
check that all functional requirements satisfied, all performance requirements
achieved, documentation is correct and ' human-engineered', and other requirements
are met (e.g. compatibility, error recovery, and maintainability).
6.2.7.2 Configuration Review
An audit to ensure that all elements of the software configuration are properly
developed catalogued and has all the necessary detail to support maintenance.
Fig 6.3 Comparison on computation cost of members for file upload among
ODBE, RBAC, Mona and our scheme
of the computation for the recovery of the secret parameter decreases with the number
of revoked users.
6.3 VALIDATION
Validation aims to demonstrate that the software functions in a manner that can be
reasonably expected by the customer. This tests conformance the software to the Software
Requirements Specification.
Here an experiment has done for checking the consistency for the user
requirements regarding the username and password which should be validated through
the server and the username and password should be matched and also the method
Steganography implemented also checked for its consistency to provide security.
98
CONCLUSION
7. CONCLUSION
99
FUTURE WORKS
In this paper, we outline a protected against agreement information sharing
plan for element bunches in the cloud. In our plan, the clients can safely acquire their
private
keys
from
gathering
director
Certificate
Authorities
and
secure
REFERENCES
[1] M. Armbrust, A. Fox, R. Griffith, A. D. Joseph, R. Katz, A. Konwinski, G. Lee, D.
Patterson, A. Rabkin, I. Stoica, and M. Zaharia. A View of Cloud omputing, Comm.
ACM, vol. 53, no. 4, pp. 50-58, Apr.2010.
100
and
Provably
Secure
Realization,
Proc.
Intl
Conf.http://eprint.iacr.org/2008/290.pdf, 2008
[10] Xuefeng Liu, Yuqing Zhang, Boyang Wang, and Jingbo Yang, Mona: Secure
Multi-Owner Data Sharing for Dynamic Groups in the Cloud, IEEE Transactions on
Parallel and Distributed Systems, vol. 24, no. 6, pp. 1182-1191, June 2013
101