# Universal Keyword Classifier on Public Key Based Encrypted Multikeyword Fuzzy Search in Public Cloud

Authors: Shyamala Devi Munisamy; Arun Chokkalingam
Journal: The Scientific World Journal
 (2015)

---

## Abstract

Cloud computing has pioneered the emerging world by manifesting itself as a service through internet and facilitates third party infrastructure and applications. While customers have no visibility on how their data is stored on service provider’s premises, it offers greater benefits in lowering infrastructure costs and delivering more flexibility and simplicity in managing private data. The opportunity to use cloud services on pay-per-use basis provides comfort for private data owners in managing costs and data. With the pervasive usage of internet, the focus has now shifted towards effective data utilization on the cloud without compromising security concerns. In the pursuit of increasing data utilization on public cloud storage, the key is to make effective data access through several fuzzy searching techniques. In this paper, we have discussed the existing fuzzy searching techniques and focused on reducing the searching time on the cloud storage server for effective data utilization. Our proposedAsymmetric Classifier Multikeyword Fuzzy Search method provides classifier search server that creates universal keyword classifier for the multiple keyword request which greatly reduces the searching time by learning the search path pattern for all the keywords in the fuzzy keyword set. The objective of using BTree fuzzy searchable index is to resolve typos and representation inconsistencies and also to facilitate effective data utilization.


---

## Body

## 1. Introduction

Cloud computing [1, 2] makes the infrastructure, platform, and software as a service for the worldwide users. The cloud paradigm makes the user outsource their personal data to the cloud storage [3] server which facilitates the users’ access to their data anywhere at any time. The data users of the cloud storage have to pay only for the actual storage they use. Some companies will use the cloud storage for their data backup.Problem Formulation. We highlight here that the cloud storage server has the responsibility to keep their customer data to be available and accessible all the time. The cloud storage must facilitate their customers to access their wide range of resources, application, and data through internet service interface immediately and fast. The number of customers utilizing the cloud storage increases significantly every day. The data on the cloud storage increases dynamically due to the increasing demands of existing customer and addition of new customers. This means the cloud storage is under a state to respond to increasing customer data and effective access to their data. To retain their customers, the cloud storage must optimize its computational time for searching the requested data. It must have some efficient searching method or additional provisions to serve their customers to provide the requested data immediately. So with this observation, we propose a new searching method named Asymmetric Classifier Multikeyword Fuzzy Search which utilizes the universal keyword classifier to store the search path pattern of all the keywords of their customers data. This allows the cloud storage server to use its time effectively to perform multiprocessing of their growing customers. Our scheme also resolves typos and representation inconsistencies since the searching is done on BTree fuzzy searchable index.Our Contributions. In this paper, we propose new SchemeAsymmetric Classifier Multikeyword Fuzzy Search (ACMFS) which greatly reduces the time spent for searching the data and delivers the requested file immediately to the users. It also utilizes the data effectively from the cloud storage through fuzzy search on BTree fuzzy searchable index. Experimental results shows effective data utilization and the search efficiency of the proposed scheme. Our contributions are summarized as follows:(i)
Asymmetric Searchable Encryption allows the server to search over encrypted BTree fuzzy searchable index thereby providing effective data utilization.(ii)
The cloud storage server would not disclose the files to illegal access as they do not have the information about the multiple keywordsMKW and files.(iii)
As the BTree fuzzy searchable index is created from wild card fuzzy keyword set, it tolerates typos and representation inconsistencies of authorized users.(iv)
Classifier search server uses universal keyword classifier for traversing the storage efficient BTree wild card fuzzy searchable index which stores all the search path pattern of the multiple keywords of the entire encrypted files.Paper Organization. The rest of the paper is organized as follows. The related modules are discussed in Section 2 along with the limitations of the existing searching methods. In Section 3, we formulate our problem by designing the system model and goals of the proposed solution. Then we provide the detailed description ofAsymmetric Classifier Multikeyword Fuzzy Search scheme in Section 4 followed by Section 5, which discusses the detailed design and implementation of algorithms of our proposed method. The Experimental results and performance analysis with output are shown in Section 6. We conclude our paper in Section 7.


## 2. Background

### 2.1. Related Work

Although Cloud Service Provider (CSP) hosts several third party data, Liu et al. [4] pointed out that managing sensitive data leads to security and privacy concerns. Cryptographic methods can be used to disclose the key only to authorized users to protect the data from untrusted CSP.Ren et al. [5] state that users have several types of typing behaviour for keywords which are commonly termed as typos, representation inconsistencies, and typing habits. They suggested fuzzy keyword search to overcome these inconsistencies. Though the fuzzy keyword search is prevalent in popular search engines like Google, Bing, and so forth, it still poses risk in cloud storage due to inherent security and privacy obstacles. The searchable encryption [6–8] is recommended which takes encrypted data as files labeled with keywords and lets user securely search over the files through predefined keywords for retrieving them.Zhou et al. [9] created k-gram based fuzzy keyword set for keywords W of the encrypted files C and Jaccard coefficient to calculate the keywords similarity.Wang et al. [10] pointed out that keyword holds sensitive information of the files and thus keyword privacy must be protected for effective data utilization. Xu et al. [11] identified that third party could access the files by knowing the keyword search trapdoor. Xu proposed public key encryption with fuzzy keyword search (PEFKS) in which each keyword corresponds to exact keyword search trapdoor and fuzzy keyword search trapdoor.Wang et al. [12] discusses that the search over encrypted data not only involves information retrieval techniques such as data structures for representing the searchable index but also depends on efficient search algorithms that run on the index.


### 2.2. Limitation of the Existing Methods

(1)
Secured and privacy preserving keyword search [4]:
(i)
The encryption and decryption process incurs high communication and computational cost.
(2)
Secured fuzzy keyword search [5]:
(i)
It does not support fuzzy search with public key based searchable encryption.
(ii)
It could not carry out multiple keywords semantic search.
(iii)
The update operation on fuzzy searchable index is not much efficient.
(3)
K-gram based fuzzy keyword Ranked search [9]:
(i)
The k-gram based fuzzy keyword set size depends on the jaccard coefficient value.
(4)
Verifiable fuzzy keyword search (VFKS) [10]:
(i)
The symbol tree fuzzy searchable index occupies more space in this search.
(5)
Public key encryption with fuzzy keyword search:
(i)
Creating fuzzy keyword index and exact keyword index is not compatible with large database.
(6)
Privacy-preserving multikeyword fuzzy search [12]:
(i)
It demands files with relatively high score to reduce the false negative rate.


## 2.1. Related Work

Although Cloud Service Provider (CSP) hosts several third party data, Liu et al. [4] pointed out that managing sensitive data leads to security and privacy concerns. Cryptographic methods can be used to disclose the key only to authorized users to protect the data from untrusted CSP.Ren et al. [5] state that users have several types of typing behaviour for keywords which are commonly termed as typos, representation inconsistencies, and typing habits. They suggested fuzzy keyword search to overcome these inconsistencies. Though the fuzzy keyword search is prevalent in popular search engines like Google, Bing, and so forth, it still poses risk in cloud storage due to inherent security and privacy obstacles. The searchable encryption [6–8] is recommended which takes encrypted data as files labeled with keywords and lets user securely search over the files through predefined keywords for retrieving them.Zhou et al. [9] created k-gram based fuzzy keyword set for keywords W of the encrypted files C and Jaccard coefficient to calculate the keywords similarity.Wang et al. [10] pointed out that keyword holds sensitive information of the files and thus keyword privacy must be protected for effective data utilization. Xu et al. [11] identified that third party could access the files by knowing the keyword search trapdoor. Xu proposed public key encryption with fuzzy keyword search (PEFKS) in which each keyword corresponds to exact keyword search trapdoor and fuzzy keyword search trapdoor.Wang et al. [12] discusses that the search over encrypted data not only involves information retrieval techniques such as data structures for representing the searchable index but also depends on efficient search algorithms that run on the index.


## 2.2. Limitation of the Existing Methods

(1)
Secured and privacy preserving keyword search [4]:
(i)
The encryption and decryption process incurs high communication and computational cost.
(2)
Secured fuzzy keyword search [5]:
(i)
It does not support fuzzy search with public key based searchable encryption.
(ii)
It could not carry out multiple keywords semantic search.
(iii)
The update operation on fuzzy searchable index is not much efficient.
(3)
K-gram based fuzzy keyword Ranked search [9]:
(i)
The k-gram based fuzzy keyword set size depends on the jaccard coefficient value.
(4)
Verifiable fuzzy keyword search (VFKS) [10]:
(i)
The symbol tree fuzzy searchable index occupies more space in this search.
(5)
Public key encryption with fuzzy keyword search:
(i)
Creating fuzzy keyword index and exact keyword index is not compatible with large database.
(6)
Privacy-preserving multikeyword fuzzy search [12]:
(i)
It demands files with relatively high score to reduce the false negative rate.


## 3. Methodology of Our Scheme

### 3.1. Cloud Data Utilization Service Architecture

In this paper, we consider our cloud data utilization service architecture which consists of four entities as data owner, cloud storage server, classifier search server, and data users and is shown in Figure1. Here we assume that the authorization is suitably done between the data owner and data users.Figure 1
Cloud data utilization service architecture for Asymmetric Classifier Multikeyword Fuzzy Search.Initially, the data owner generates user’s public and private key pair as (PUBKEY, PRIVKEY). Data owner has a set of K data files DF={DF1,DF2,…,DFK} that are encrypted with user’s public key PUBKEY and are outsourced to the cloud storage server. Data owner predefine multiple keywords for each file. Data owner has a set of multiple keywords MKW={(mk11,mk12,…,mk1n),(mk21,mk22,…,mk2n),…,(mkk1,mkk2, …,mkkn)} of K data files. Data owner creates storage efficient wild card based fuzzy multikeyword set as FMKS={(fmk11[],fmk12[],…,fmk1n[]),(fmk21[],fmk22[],…,fmk2n[]),…,(fmkk1[],fmkk2[],…, fmkkn[])} using wild card based technique with the predefined edit distance value. Data owner creates BTree wild card fuzzy searchable index BSIWC from fuzzy multikeyword set. Data owner encrypts the files and index BSIWC using user public key and is outsourced to the cloud storage server. Data owner sends the user private key as private secret key which is used by the data users for creating keyword trapdoor and for decrypting the file. Now the cloud storage server has the encrypted K data files DF and encrypted BTree wild card fuzzy searchable index BSIE. The cloud storage server shares the encrypted BTree wild card fuzzy searchable index BSIE to the classifier search server. The data user requests the multiple search keywords which are encrypted using the private secret key to create multikeyword trapdoor MKTW which is sent to the cloud storage server. The server sends the request MKTW to the classifier search server. The universal keyword classifier receives the request MKTW to check whether the request is coming for the first time. If the request is arriving for the first time; then the keyword classifier captures and stores the path of the MKTW by searching over the encrypted BTree wild card fuzzy searchable index BSIE and sends the search path to the cloud storage server. If the request given by the user matches a previous request then it is a repeated multiple keyword. Then the classifier search server extracts the stored search path patterns of the repeated multikeyword from the universal keyword classifier and the search path is sent to the cloud storage server. After receiving the search path pattern of the multiple keywords from the classifier search server, the cloud storage server extracts the set of encrypted files from DF and is sent to the data users. After receiving the encrypted files, the data user decrypts the files using private secret key.


### 3.2. Design Goals

To effectively optimize the searching time for the multiple keywords in the cloud storage server and for tolerating the typos and representation inconsistencies of authorized users, our searching method seeks to achieve the following design goals.Search efficiency goals are(i)
to construct the universal keyword classifier for BTree wild card fuzzy searchable index for optimizing search time and for tolerating typos and representation inconsistencies of authorized users.Security goals are(i)
to avoid the cloud storage server from getting the knowledge of data files and keyword set. This is achieved by outsourcing the encrypted files and index to the cloud storage server.Privacy goals are(i)
to provide user privacy by abstracting the details of data files, keyword, and index to the cloud storage server;(ii)
to support data privacy by encrypting the files and index with user public key before outsourcing to the cloud storage server;(iii)
to attain keyword privacy by forming BTree wild card fuzzy searchable index from the fuzzy multikeyword set for the predefined set of multiple keywords;(iv)
to achieve query privacy by sending k-gram keyword trapdoor encrypted with the private secret key;(v)
to accomplish index privacy by creating encrypted BTree wild card fuzzy searchable index.


## 3.1. Cloud Data Utilization Service Architecture

In this paper, we consider our cloud data utilization service architecture which consists of four entities as data owner, cloud storage server, classifier search server, and data users and is shown in Figure1. Here we assume that the authorization is suitably done between the data owner and data users.Figure 1
Cloud data utilization service architecture for Asymmetric Classifier Multikeyword Fuzzy Search.Initially, the data owner generates user’s public and private key pair as (PUBKEY, PRIVKEY). Data owner has a set of K data files DF={DF1,DF2,…,DFK} that are encrypted with user’s public key PUBKEY and are outsourced to the cloud storage server. Data owner predefine multiple keywords for each file. Data owner has a set of multiple keywords MKW={(mk11,mk12,…,mk1n),(mk21,mk22,…,mk2n),…,(mkk1,mkk2, …,mkkn)} of K data files. Data owner creates storage efficient wild card based fuzzy multikeyword set as FMKS={(fmk11[],fmk12[],…,fmk1n[]),(fmk21[],fmk22[],…,fmk2n[]),…,(fmkk1[],fmkk2[],…, fmkkn[])} using wild card based technique with the predefined edit distance value. Data owner creates BTree wild card fuzzy searchable index BSIWC from fuzzy multikeyword set. Data owner encrypts the files and index BSIWC using user public key and is outsourced to the cloud storage server. Data owner sends the user private key as private secret key which is used by the data users for creating keyword trapdoor and for decrypting the file. Now the cloud storage server has the encrypted K data files DF and encrypted BTree wild card fuzzy searchable index BSIE. The cloud storage server shares the encrypted BTree wild card fuzzy searchable index BSIE to the classifier search server. The data user requests the multiple search keywords which are encrypted using the private secret key to create multikeyword trapdoor MKTW which is sent to the cloud storage server. The server sends the request MKTW to the classifier search server. The universal keyword classifier receives the request MKTW to check whether the request is coming for the first time. If the request is arriving for the first time; then the keyword classifier captures and stores the path of the MKTW by searching over the encrypted BTree wild card fuzzy searchable index BSIE and sends the search path to the cloud storage server. If the request given by the user matches a previous request then it is a repeated multiple keyword. Then the classifier search server extracts the stored search path patterns of the repeated multikeyword from the universal keyword classifier and the search path is sent to the cloud storage server. After receiving the search path pattern of the multiple keywords from the classifier search server, the cloud storage server extracts the set of encrypted files from DF and is sent to the data users. After receiving the encrypted files, the data user decrypts the files using private secret key.


## 3.2. Design Goals

To effectively optimize the searching time for the multiple keywords in the cloud storage server and for tolerating the typos and representation inconsistencies of authorized users, our searching method seeks to achieve the following design goals.Search efficiency goals are(i)
to construct the universal keyword classifier for BTree wild card fuzzy searchable index for optimizing search time and for tolerating typos and representation inconsistencies of authorized users.Security goals are(i)
to avoid the cloud storage server from getting the knowledge of data files and keyword set. This is achieved by outsourcing the encrypted files and index to the cloud storage server.Privacy goals are(i)
to provide user privacy by abstracting the details of data files, keyword, and index to the cloud storage server;(ii)
to support data privacy by encrypting the files and index with user public key before outsourcing to the cloud storage server;(iii)
to attain keyword privacy by forming BTree wild card fuzzy searchable index from the fuzzy multikeyword set for the predefined set of multiple keywords;(iv)
to achieve query privacy by sending k-gram keyword trapdoor encrypted with the private secret key;(v)
to accomplish index privacy by creating encrypted BTree wild card fuzzy searchable index.


## 4. Asymmetric Classifier Multikeyword Fuzzy Search (ACMFS)

### 4.1. Notations and Preliminaries

They are as follows.(i)
PSK: private secret key;(ii)
edit: edit distance;(iii)
DF={DF1,DF2,…,DFK}: set of K encrypted data files DF;(iv)
PUBKEY: user public key;(v)
OPKPUB: owner public key;(vi)
PRIVKEY: user private key;(vii)
MKW={(mk11,mk12,…,mk1n),(mk21,mk22,…,mk2n),…,(mkk1,mkk2,…,mkkn)}: predefined multiple keywords set of DF;(viii)
FMKS={(fmk11[],fmk12[],…,fmk1n[]),…,(fmkk1[],fmkk2[],…,fmkkn[])}: fuzzy multikeyword set;(ix)
BSIWC: BTree wild card fuzzy searchable index;(x)
BSIE: encrypted BTree wild card fuzzy searchable index of BSIWC;(xi)
SPP: search path pattern of multiple keywords;(xii)
MKTW: encrypted multikeyword trapdoor search request;(xiii)
MFILEENC: set of encrypted multiple files matching search request;(xiv)
MFILE[]: decrypted multiple files of MFILEENC;(xv)
MSR: multikeyword search request.


### 4.2. Searchable Encryption

Searchable encryption [13] is a cryptographic technique where the data users search the encrypted searchable index by the following steps.(i)
The encrypted tokens in the searchable index have the pointers to encrypted files. Token symbols are the encrypted keyword.(ii)
If the requested token found a match in the searchable index, then it extracts the file pointer without decryption.(iii)
If the token is not found in the searchable index, then it returns the null file pointer.The two types of searchable encryption are symmetric and asymmetric (public key based) searchable encryption [14, 15]. In Symmetric Searchable Encryption, the data owner who outsources the encrypted index and data and the server that searches the data share the same secret keys. The efficiency of SSE is high since it uses symmetric cryptographic methods such as block ciphers, pseudorandom functions, and hash functions. The disadvantage of SSE is that the server has high probability to learn about the owner data and keywords. In Asymmetric Searchable Encryption [16, 17], the data owner outsources the index that is encrypted by the user’s public key. The keyword trapdoor is created by the user’s private key. So only the authorized users can request the search from the server. The advantage of ASE is that it supports conjunctive or disjunctive keywords searches. The disadvantage of SSE is that it suffers from KGA.


### 4.3. Edit Distance

Edit distance is the method of quantifying the similarity of the two strings. The edit distance (S1, S2) between two strings S1 and S2 is the smallest number of operations necessary to change one string to another. The three primitive operations are as follows:(i)
insertion: inserting one character into the string;(ii)
deletion: deleting one character from the string;(iii)
substitution: changing one character to another in the string.The edit distance of the two strings in our system is analysed by dynamic programming. By dynamic programming strategy, the edit distance ed(x,y) of any two strings “x” and “y” is defined as follows and refer to Algorithm 1.Assume the strings arex[0,1,…,i-1] and y[0,1,…,j-1].Ifx,y=0, then ed(x,y)=0.Ify=0, then ed(x,0)=i.Ifx=0, then ed(0,y)=j.Ifx≠y, then ed(x,y)=min{ed(i-1,j)+1,ed(i,j-1)+1,ed(i-1,j-1)+diff(x[i-1],y[j-1])}.Note that ifx=y then diff(x,y)=0 else diff(x,y)=1.Algorithm 1:EditDistance(x0,…,i-1, y0,…,j-1).
Input: Two stringsx,y where x=x0,…,i-1,y=y0,…,j-1
Output: Minimum edit distance
(1)  Declare the integer variables length1, length2, ed,i,j;
(2)  Declare the character variables char1, char2;
(3)  Declare the integer variables substitution, insertion, deletion, minimum;
(4) length1 = size ofx;
(5) length2 = size ofy;
(6) ed = new int[length1 + 1][length2 + 1];
(7)  for (i=0 to length1)
(8)   edi0=i;
(9)  end for // loopi
(10)  for (j=0 to length2)
(11)    ed0j=j;
(12)  end for // loopj
(13)   for (i=0 to length1)
(14)   char1 =x.charAt(i);
(15)    for (j=0 to length2)
(16)     char2 =y.charAt(j);
(17)      if (char1 = = char2) then
(18)       edi+1j+1 = edij;
(19)      else
(20)
(21)       substitution = edij+1;
(22)       insertion = edij+1+1;
(23)       deletion = edi+1j+1;
(24)       minimum = (substitution  > insertion ? insertion: substitution);
(25)       minimum = (deletion  > minimum ? minimum: deletion);
(26)       edi+1j+1 = minimum;
(27)
(28)      end if;
(29)    end for // loopj
(30) end for // loopi
(31)  return ed[length1, length2]Examples fored(S1,S2)=1 are as follows:insertion:S1 = “SAMI” and S2 = “SAMIY”;deletion:S1 = “SAMI” and S2 = “SAM”;substitution:S1 = “SAMI” and S2 = “SAME”.


### 4.4. Fuzzy Keyword Set

Since different users have various typing behaviors, they may misspell the keywords. So the fuzzy keyword set is formed to effectively utilize the data. Fuzzy keyword set can be created by wild card based technique, k-gram based technique, and symbol tree based technique. For example, fuzzy keyword set for “W = HEN” with edit distance = 1 is as follows:FKSed=1={(A⋯Z)HEN,H(A⋯Z)EN,HE(A⋯Z)N,HEN(A⋯Z),EN,HN,HE,(A⋯Z)EN, H(A⋯Z)N,HE(A⋯Z),HEN}.Total number of keywords = 186.


### 4.5. Fuzzy Keyword Search

For the set ofM data files D={D1,D2,…,DM} with the predefined set of KW={kw1,kw2,…,Kwn}, the fuzzy keyword search fuzzy (w, FKSed=1) is as shown in Algorithm 2.Algorithm 2:Fuzzy(key, FuzzyKSed=1).
Input: Search keyword key
Output:OUTFILEw matching the keyword w
(1)if key = FKSi then
(2) return OUTFILEi
(3)else if edit(key, FuzzyKSi) ≤  edit) // edit is the user defined edit distance value
(4) return OUTFILEi
(5)else
(6) print “File Not Found”
(7)end if
(8)return OUTFILEw


### 4.6. Wild Card Based Technique

Wild card based technique is used to create storage efficient wild card based fuzzy keyword set. We use the wild card “#” character to represent the positions of three edit distance operations such as insertion, deletion, and substitution thereby creating tiny fuzzy keyword set. For example, the wild card based fuzzy keyword set for w = “HEN” with edit distance ed = 1 isFKSHEN,1 as follows:FKSHEN,1={#HEN,H#EN,HE#N,HEN#,EN,HN, HE,#EN,H#N,HE#,HEN}.Total number of keywords = 11.The length of fuzzy keyword set isL=((2n+1)∗26)+n+1. The length of wild card based fuzzy keyword set is L=(2n+1)+n+1.


### 4.7. K-Gram Based Technique

K-gram based technique is used to create k-gram based fuzzy keyword set for the predefined gram value k. The keywords of k-gram based fuzzy keyword set is the subset of keyword set. For example, the k-gram based fuzzy keyword set for w = “HEN” with gram valuek=1 is FKSK=1 as follows:FKSK=1={KY,SY,KY}.Total number of keywords = 3.


### 4.8. Assumptions of ADKEFS

Before we start our framework design, we have the following assumptions on our proposed scheme Asymmetric Classifier Multikeyword Fuzzy SearchACMFS.(i)
We assume that the cloud storage server concentrates on servicing more customers and not to leave partnership of their customers from the business.(ii)
Here we assume that the authorization is suitably done between the data owner and data users.(iii)
Data owner creates users private and public key pair.(iv)
We assume the wild card based fuzzy multikeyword set FMKS of multikeyword set MKW contains the original keyword as the first component.(v)
We assume that each file has multiple keywords and it is possible for a keyword to be the same for multiple files.


## 4.1. Notations and Preliminaries

They are as follows.(i)
PSK: private secret key;(ii)
edit: edit distance;(iii)
DF={DF1,DF2,…,DFK}: set of K encrypted data files DF;(iv)
PUBKEY: user public key;(v)
OPKPUB: owner public key;(vi)
PRIVKEY: user private key;(vii)
MKW={(mk11,mk12,…,mk1n),(mk21,mk22,…,mk2n),…,(mkk1,mkk2,…,mkkn)}: predefined multiple keywords set of DF;(viii)
FMKS={(fmk11[],fmk12[],…,fmk1n[]),…,(fmkk1[],fmkk2[],…,fmkkn[])}: fuzzy multikeyword set;(ix)
BSIWC: BTree wild card fuzzy searchable index;(x)
BSIE: encrypted BTree wild card fuzzy searchable index of BSIWC;(xi)
SPP: search path pattern of multiple keywords;(xii)
MKTW: encrypted multikeyword trapdoor search request;(xiii)
MFILEENC: set of encrypted multiple files matching search request;(xiv)
MFILE[]: decrypted multiple files of MFILEENC;(xv)
MSR: multikeyword search request.


## 4.2. Searchable Encryption

Searchable encryption [13] is a cryptographic technique where the data users search the encrypted searchable index by the following steps.(i)
The encrypted tokens in the searchable index have the pointers to encrypted files. Token symbols are the encrypted keyword.(ii)
If the requested token found a match in the searchable index, then it extracts the file pointer without decryption.(iii)
If the token is not found in the searchable index, then it returns the null file pointer.The two types of searchable encryption are symmetric and asymmetric (public key based) searchable encryption [14, 15]. In Symmetric Searchable Encryption, the data owner who outsources the encrypted index and data and the server that searches the data share the same secret keys. The efficiency of SSE is high since it uses symmetric cryptographic methods such as block ciphers, pseudorandom functions, and hash functions. The disadvantage of SSE is that the server has high probability to learn about the owner data and keywords. In Asymmetric Searchable Encryption [16, 17], the data owner outsources the index that is encrypted by the user’s public key. The keyword trapdoor is created by the user’s private key. So only the authorized users can request the search from the server. The advantage of ASE is that it supports conjunctive or disjunctive keywords searches. The disadvantage of SSE is that it suffers from KGA.


## 4.3. Edit Distance

Edit distance is the method of quantifying the similarity of the two strings. The edit distance (S1, S2) between two strings S1 and S2 is the smallest number of operations necessary to change one string to another. The three primitive operations are as follows:(i)
insertion: inserting one character into the string;(ii)
deletion: deleting one character from the string;(iii)
substitution: changing one character to another in the string.The edit distance of the two strings in our system is analysed by dynamic programming. By dynamic programming strategy, the edit distance ed(x,y) of any two strings “x” and “y” is defined as follows and refer to Algorithm 1.Assume the strings arex[0,1,…,i-1] and y[0,1,…,j-1].Ifx,y=0, then ed(x,y)=0.Ify=0, then ed(x,0)=i.Ifx=0, then ed(0,y)=j.Ifx≠y, then ed(x,y)=min{ed(i-1,j)+1,ed(i,j-1)+1,ed(i-1,j-1)+diff(x[i-1],y[j-1])}.Note that ifx=y then diff(x,y)=0 else diff(x,y)=1.Algorithm 1:EditDistance(x0,…,i-1, y0,…,j-1).
Input: Two stringsx,y where x=x0,…,i-1,y=y0,…,j-1
Output: Minimum edit distance
(1)  Declare the integer variables length1, length2, ed,i,j;
(2)  Declare the character variables char1, char2;
(3)  Declare the integer variables substitution, insertion, deletion, minimum;
(4) length1 = size ofx;
(5) length2 = size ofy;
(6) ed = new int[length1 + 1][length2 + 1];
(7)  for (i=0 to length1)
(8)   edi0=i;
(9)  end for // loopi
(10)  for (j=0 to length2)
(11)    ed0j=j;
(12)  end for // loopj
(13)   for (i=0 to length1)
(14)   char1 =x.charAt(i);
(15)    for (j=0 to length2)
(16)     char2 =y.charAt(j);
(17)      if (char1 = = char2) then
(18)       edi+1j+1 = edij;
(19)      else
(20)
(21)       substitution = edij+1;
(22)       insertion = edij+1+1;
(23)       deletion = edi+1j+1;
(24)       minimum = (substitution  > insertion ? insertion: substitution);
(25)       minimum = (deletion  > minimum ? minimum: deletion);
(26)       edi+1j+1 = minimum;
(27)
(28)      end if;
(29)    end for // loopj
(30) end for // loopi
(31)  return ed[length1, length2]Examples fored(S1,S2)=1 are as follows:insertion:S1 = “SAMI” and S2 = “SAMIY”;deletion:S1 = “SAMI” and S2 = “SAM”;substitution:S1 = “SAMI” and S2 = “SAME”.


## 4.4. Fuzzy Keyword Set

Since different users have various typing behaviors, they may misspell the keywords. So the fuzzy keyword set is formed to effectively utilize the data. Fuzzy keyword set can be created by wild card based technique, k-gram based technique, and symbol tree based technique. For example, fuzzy keyword set for “W = HEN” with edit distance = 1 is as follows:FKSed=1={(A⋯Z)HEN,H(A⋯Z)EN,HE(A⋯Z)N,HEN(A⋯Z),EN,HN,HE,(A⋯Z)EN, H(A⋯Z)N,HE(A⋯Z),HEN}.Total number of keywords = 186.


## 4.5. Fuzzy Keyword Search

For the set ofM data files D={D1,D2,…,DM} with the predefined set of KW={kw1,kw2,…,Kwn}, the fuzzy keyword search fuzzy (w, FKSed=1) is as shown in Algorithm 2.Algorithm 2:Fuzzy(key, FuzzyKSed=1).
Input: Search keyword key
Output:OUTFILEw matching the keyword w
(1)if key = FKSi then
(2) return OUTFILEi
(3)else if edit(key, FuzzyKSi) ≤  edit) // edit is the user defined edit distance value
(4) return OUTFILEi
(5)else
(6) print “File Not Found”
(7)end if
(8)return OUTFILEw


## 4.6. Wild Card Based Technique

Wild card based technique is used to create storage efficient wild card based fuzzy keyword set. We use the wild card “#” character to represent the positions of three edit distance operations such as insertion, deletion, and substitution thereby creating tiny fuzzy keyword set. For example, the wild card based fuzzy keyword set for w = “HEN” with edit distance ed = 1 isFKSHEN,1 as follows:FKSHEN,1={#HEN,H#EN,HE#N,HEN#,EN,HN, HE,#EN,H#N,HE#,HEN}.Total number of keywords = 11.The length of fuzzy keyword set isL=((2n+1)∗26)+n+1. The length of wild card based fuzzy keyword set is L=(2n+1)+n+1.


## 4.7. K-Gram Based Technique

K-gram based technique is used to create k-gram based fuzzy keyword set for the predefined gram value k. The keywords of k-gram based fuzzy keyword set is the subset of keyword set. For example, the k-gram based fuzzy keyword set for w = “HEN” with gram valuek=1 is FKSK=1 as follows:FKSK=1={KY,SY,KY}.Total number of keywords = 3.


## 4.8. Assumptions of ADKEFS

Before we start our framework design, we have the following assumptions on our proposed scheme Asymmetric Classifier Multikeyword Fuzzy SearchACMFS.(i)
We assume that the cloud storage server concentrates on servicing more customers and not to leave partnership of their customers from the business.(ii)
Here we assume that the authorization is suitably done between the data owner and data users.(iii)
Data owner creates users private and public key pair.(iv)
We assume the wild card based fuzzy multikeyword set FMKS of multikeyword set MKW contains the original keyword as the first component.(v)
We assume that each file has multiple keywords and it is possible for a keyword to be the same for multiple files.


## 5. Implementation of Asymmetric Classifier Multikeyword Fuzzy Search (ACMFS)

Here we discuss our proposed scheme in detail with algorithm for all the functions involved.


### 5.1. Function Definitions of ADKEFS

The following functions are implemented to optimize the searching on the cloud storage server and to achieve the effective data utilization.Functions on data owner are(i)
CreateKeyPairsForUser(SECRET1, SECRET2),(ii)
EncryptMultiKeywordDataFile(PUBKEY[]),(iii)
CreateWildCardFuzzyMultiKeywordSet(MKW[][], edit),(iv)
CreateBTreeWildcardFuzzySearchableIndex(FMKS[][][]),(v)
EncryptBTreeWildcardFuzzySearchableIndex(BSIWC,PUBKEY[]).Functions on cloud storage server are(i)
ExtractMultipleFileUsingPattern(SPP[]).Functions on classifier search server are(i)
SearchBTreeWildCardFuzzySearchableIndex(BSIE, MKTW[][]).Functions on data user are(i)
ViewDecryptedMultiKeywordFile(PRIVKEY[], MFILEENC).


### 5.2. Overall Framework of Asymmetric Classifier Multikeyword Fuzzy Search (ACMFS)

Our proposed method Asymmetric Classifier Multikeyword Fuzzy Search has classifier search server that creates the search path pattern for all the keywords of the encrypted set ofK data files. Data owner creates encrypted BTree wild card fuzzy searchable index for the fuzzy multikeyword set and is outsourced to the cloud storage server. This overcomes the problem of typos and representation inconsistencies behaviour of the data users. The overall conceptual description of Asymmetric Classifier Multikeyword Fuzzy Search is shown in Figure 2 as an activity diagram. Please refer to Algorithm 3 for the pseudo-code.Algorithm 3:ACMFS( ) (Asymmetric Classifier Multikeyword Fuzzy Search).
/∗ Variables Initialization ∗/
(1) Initialize Secret KeysSECRET1 and SECRET2
(2) Predefine the edit distance “edit” value for Wildcard based Fuzzy Mulikeyword Set Creation
(3) Predefine Multiple Keywords for a single file and a keyword can be shared by multiple files.
/∗ KeyGeneration ∗/
(4)DataOwner Creates User Public key and User Private Key pairs
(5)   CallCreateKeyPairsForUser(SECRET1, SECRET2)
// User Public key and User Private Key
(6)Receive (PUBKEY[],PRIVKEY[])
(7) Encrypt the Kdata files usingPUBKEY[] User’s Public key as  DF=DF1,DF2,…,DFK
(8)   CallEncryptMultiKeywordDataFile(PUBKEY[])
(9)   Receive the Encrypted fileDF[]=DF1,DF2,…,DFK
(10) Send the Encrypted fileDF[]=DF1,DF2,…,DFK to the Cloud storage server
(11)  Send the User’s Private Key asPrivate Secret Key to the data users
(12) Data owner creates Wildcard basedFuzzy Multikeyword set forMKW[][]
(13)   CallCreateWildCardFuzzyMultiKeywordSet(MKW[][],edit)
(14)   ReceiveFMKS=fmk11,fmk12,…,fmk1n,…,fmkn1,fmkn2,…,fmkkn
(15) Data ownerCreates B Ttree Wildcard searchable indexBSIWC for FMKS
(16)   callCreateBTreeWildcardFuzzySearchableIndex(FMKS[][][])
(17)   Receive B Ttree Wildcard searchable indexBSIE
(18) Encrypts the B+ tree wildcard searchable index BIWC
(19) callEncryptBTreeWildcardFuzzySearchableIndex(BSIWC,PUBKEY[])
(20) Receive Encrypted BTree wildcard searchable indexBSIE
(21) Send the Encrypted BTree wildcard searchable indexBSIE to the cloud storage server
(22)Cloud Storage server shares the BTree wildcard searchable index BSIE to the Classifier Search Server
(23)Data User request Multikeyword search request MSR, and is encrypted using Private Secret Keyto
create MultiKeyword TrapdoorMKTW
(24) MultiKeyword TrapdoorMKTW is sent to the cloud storage server
(25)Cloud Storage server send the MKTW to the Classifier Search Server
(26) Classifier Search Server  searches BTree wildcard searchable indexBSIE
(27)  If the KeywordMKTW is the new keyword then
(28)  callSearchBTreeWildCardFuzzySearchableIndex(BSIE,MKTW[][])
(29)      Keyword Classifier learn and Store the Search path pattern ofMKTW
(30)      Receive the Search path pattern of that keywordMKTW
(31)      Send the Search path pattern of that keywordMKTW to the cloud storage server
(32) else ifMKTW is already present in the Keyword Classifier then
(33)   Classifier Search Server send the stored Search path pattern ofMKTW to cloud storage server
(34) End if
(35)   Cloud Storage Server receives the Search path pattern ofMKTW
(36) Cloud Storage Server extractsMFILEENC the encrypted multiple files of MKTW
(37)Call ExtractMultipleFileUsingPattern(SPP[])
(38) Receive the set of Matching Encrypted filesMFILEENC
(39)MFILEENC is sent to theData user
(40) Data User receives theMFILEENC and decrypt the file using Private Secret Key PSK
(41)  callViewDecryptedMultiKeywordFile(PRIVKEY[],MFILEENC)
(42) Receive the Superset of matching Decrypted file Decrypted FileMFILE[]
(43) Now the user can view the file needed and large number of files viewed by the user
represents the effective data utilization.Figure 2
Activity diagram for Asymmetric Classifier Multikeyword Fuzzy Search.
(a)
(b)


### 5.3. Key Generation Algorithm

Here we use RSA public key algorithm for generating public and private key. Here this takes two secret keys SECRET1 and SECRET2 which is predefined by the data owner where both secret keys SECRET1, SECRET2 = 0,1∗. Algorithm 4 is executed by the data owner to generate public and private key pair. Data owner sends the user private key as private secret key which is used by the data users to create keyword trapdoor and for decrypting the file.Algorithm 4:CreateKeyPairsForUser(SECRET1, SECRET2)// Key Generation Algorithm.
Input: Two Secret keysSECRET1, SECRET2// Predefined SECRET1, SECRET2 = 0,1∗
Output: User Public and Private key pairPUBKEY[],PRIVKEY[]
(1) Declare the integer variables S1, S2, S3, S4, private, public and key
(2) Assign  S1 = SECRET1, S2 = SECRET2
(3) Find key = S1∗ S2
(4) Compute S3 = (S1 − 1)∗ (S2 − 1),  S4 = S3 − (S1 + S2 − 1)
(5) Pick random integer “public”.Check gcd(public, S4) = 1
// gcd is Greatest Common Denominator
(6) Compute private = e−1 mod S4
(7)PUBKEY[] = key, public // Public key pair
(8)PRIVKEY[] = key, public // Private key pair
(9) return (PUBKEY[],PRIVKEY[])


### 5.4. File Encryption Algorithm

Data owner executes Algorithm5 to form encrypted set of K data files DF={DF1,DF2,…,DFK} that are encrypted with user’s public keyPUBKEY and are outsourced to the cloud storage server.Algorithm 5:EncryptMultiKeywordDataFile(PUBKEY) // File Encryption Algorithm.
Input:PUBKEYUser Public key
Output:Encrypted File DF
(1)   Declare integer variables key and public,i
(2)   Assign key =PUBKEY1,  public = PUBKEY2
(3)    Fori=1 to k//K Data files
(4)  Encrypt the file by computing DFi = Filespublic mod key
(5)  end for //i loop
(6)  return Encrypted file DF  // Encrypted set of K data files DF=DF1,DF2,…,DFK


### 5.5. File Decryption Algorithm

After receiving the search path pattern of the multiple keywords from the classifier search server, the cloud storage server extracts the set of encrypted files fromDF and is sent to the data users. After receiving the encrypted files, the data user decrypts the files using private secret key by executing Algorithm 6.Algorithm 6:
ViewDecryptedMultiKeywordFile(PRIVKEY[ ], MFILEENC) // File Decryption Algorithm.
Input:PRIVKEY[] Private Secret key, MFILEENC - Encrypted files
Output: Decrypted FileMFile[]
(1) Assign PSK[1] = PRIVKEY[1]
(2) Assign PSK[2] = PRIVKEY[2]
// PSK − Private Secret Key
(3)   Fori=1 to K
//K Data files
(4)   MFILE[i] = MFILEENCPSK[2] mod PSK[1]
// Decrypting the file
(5) end for //i loop
(6) return Decrypted file MFILE[]


### 5.6. Wild Card Based Fuzzy Multikeyword Set Algorithm

Data owner has MKW ={(mk11,mk12,…,mk1n),(mk21,mk22,…,mk2n),…,(mkn1,mkn2,…,mkkn)} a set of multiple keywords of K data files. Data owner creates storage efficient fuzzy multikeyword set FMKS = {(fmk11[],fmk12[],…,fmk1n[]),(fmk21[],fmk22[],…,fmk2n[]),…,(fmkk1[],fmkk2[],…,fmkkn[])} using wild card based technique with the predefined edit distance value. Data owner executes Algorithm 7 to form fuzzy multikeyword Set.Algorithm 7:CreateWildCardFuzzyMultiKeywordSet(MKW[][],edit).
Input: Multikeyword set MKW={(mk11,mk12,…,mk1n),(mk21,mk22,…,mk2n),…,(mkn1,mkn2,…,mknn)}
edit – Edit Distance
Output: FMKS={(fmk11[],fmk12[],…,fmk1n[]),(fmk21[],fmk22[],…,fmk2n[]),…,(fmkk1[],fmkk2[],…,fmkkn[])}
(1) Declare integer variablei1, p1, q1, edit
(2) Char∗MultiKeywordFuzzy; Initialize FMKS[][] to be empty;
(3) if  edit > 1 then
(4)  callCreateWildCardFuzzyMultiKeywordSet(MKW[][],ed-1)
(5)  end if
(6)  if edit = 0 then
(7)  FMKS = MKW
(8)  else
(9)  Fori1=1 to length(MKW) do
(10)   Forp1=1 to length(FMKS[i][edit-1]) do
(11)    Forq1=1 to 2 ∗ length(FMKS[i][edit-1][p1]]) + 1 do
(12)     ifq1 is odd value then
(13)MultiKeywordFuzzy = FMKS[i][edit-1[p1]]
(14)      Insert “#” at (q1 + 1/2) position
(15)     else
(16)      Assign MultiKeywordFuzzy = length(Mkw[p1])
(17)      Insert “#” at (q1/2) position
(18)     end if
(19)      if MultiKeywordFuzzy is not in FMKS[i1][edit-1] then
(20)       Include MultiKeywordFuzzy in FMKS[i1][edit]
(21)      end if
(22)     end for //q1 loop
(23)    end for //p1 loop
(24)   end for //i1 loop
(25)  end if
(26)   return FMKS[][][]   // Fuzzy MultiKeyword Set


### 5.7. BTree Wild Card Fuzzy Searchable Index Algorithm

Data owner creates BTree wild card fuzzy searchable index BSIWC from fuzzy multikeyword set. Data owner executes Algorithm8 to create BTree wild card fuzzy searchable index BSIWC for the wild card based fuzzy keyword set FKS.Algorithm 8:CreateBTreeWildCardFuzzySearchableIndex(FMKS[][][]).
Input: FMKS={(fmk11[],fmk12[],…,fmk1n[]),(fmk21[],fmk22[],…,fmk2n[]),…,(fmkk1[],fmkk2[],…,fmkkn[])}
WildCard Fuzzy Multikeyword Set
Output:BSIWC: BTree Wildcard Fuzzy Searchable Index
(1)Start AddNodeBTree
(2)  Declare the ChildLimit, NumberofChild, ChildrenValue inside the class BTreeNode
(3)  Declare TreeHeight to denote height of the BTree,i,j;
(4)  Declare the objects KeyNumber,  KeyIndex, NodeValue, NextNode, RootNode for AddNode
(5)  Declare KeyIndexNumber that denote the number of keyIndex and Nodevalue pairs in B Tree
(6)  Declare the object ChildrenNodeValue for the class AddNode
(7)  Define Constructor AddNode(KeyIndex, NodeValue,  NextNode)
(8)   this.KeyIndex   = KeyIndex;
(9)   this.NodeValue = NodeValue;
(10)    this.NextNode  =NextNode;
(11)  End ConstrutorAddNode
(12)  Initialize RootNode = new Node(0)
(13)  fori=1 to Number of keywords in FMKS[i] do
(14)   forj=1 to Number of Fuzzy Keywords in FMKS[i][j]
(15)    call InsertNodeIntoBTree(RootNode, FMKS[i], FMKS[i][j], TreeHeight)
(16)    Receive BTreeNode;
(17)    KeyIndexnumber = KeyIndexnumber + 1;
(18)   if (BTreeNode == NULL)  then
(19)       return NULL;
(20)   end if
(21)    Create two AddNode object as ChildNode
(22)   ChildNode.childrenNodeValue[0] = new AddNode(RootNode.childrenNodeValue[0].KeyIndex,
Null, RootNode);
(23)    ChildNode. childrenNodeValue[1] = new AddNode(u. childrenNodeValue[0].KeyIndex, null,
BTreeNode);
(24)    RootNode = ChildNode;
(25)   TreeHeight = TreeHeight + 1;
(26)End AddNodeBTree
(27)Function AddNodeInsertNodeIntoBTree (RootNode, WFKS, WFKS, TreeHeight)
(28)Declare the variable i,j,k,m,n for processing loop
(29)for  i=1 to Number of keywords in FMKS[i] do
(30)  forj=1 to Number of Fuzzy Keywords in FMKS[i][j]
(31)   AddNodeCurrentNode = new AddNode(FMKS[i], FMKS[i][j], TreeHeight);
(32)    if (TreeHeight == 0) then
(33)     Fork=0 to RootNode. NumberofChild do
(34)      if (WFKS[i] <RootNode. childrenNodeValue [k].FMKS[i])
then
(35)       break;
(36)      end if
(37)     end for //k loop
(38)    else
(39)     form=0 to RootNode. NumberofChild do
(40)      if ((m+1 == RootNode. NumberofChild) ∣∣ FMKS[i] <RootNode.
childrenNodeValue [m+1].FMKS[i]) then
(41)     AddNodeNewNode = InsertNodeIntoBTree (RootNode. childrenNodeValue[m++].NextNode,
FMKS[i], FMKS[i][j], TreeHeight -1);
(42)         if (NewNode == NULL) then
(43)          return null;
(44)         end if
(45)     CurrentNode. FMKS[i] =NewNode.childrenNodeValue[0]. FMKS[i];
(46)   CurrentNode.NextNode = NewNode;
(47)    break;
(48)   end if
(49)  end for //m loop
(50)  forn=0 to RootNode. NumberofChild do
(51)    RootNode. childrenNodeValue [n] = RootNode. childrenNodeValue[n-1];
(52)   RootNode. childrenNodeValue [j] = CurrentNode;
(53)    RootNode. NumberofChild = RootNode. NumberofChild + 1;
(54)   if (RootNode. NumberofChild < ChildLimit) then    return null;
(55)    else return SplitNodeInBTree(RootNode);
(56)   end if
(57)   end for //n loop
(58)  end for //j loop
(59) end for //i loop
(60)End Function AddNodeInsertNodeIntoBTree
(61)Function SplitNodeInBTree(RootNode)
(62)  Declare the variablei for processing loop
(63)  AddNodeSplitNode = new AddNode (ChildLimit/2);
(64)  RootNode. NumberofChild = ChildLimit/2;
(65)  fori=0 to ChildLimit/2 do
(66)   SplitNode. childrenNodeValue[i] = RootNode. childrenNodeValue[childLimit/2 + i];
(67)return SplitNode;
(68)  end for //i loop
(69)End Function SplitNodeInBTree


### 5.8. Encrypting BTree Fuzzy Searchable Index Algorithm

Data owner encrypts the BTree wild card fuzzy searchable index BSIWC using user public key and is outsourced to the cloud storage by executing Algorithm9 to create encrypted BTree wild card fuzzy searchable index BSIE and is outsourced to the cloud storage server.Algorithm 9:EncryptBTreeWildcardFuzzySearchableIndex(BSIWC, PUBKEY[]).
Input: B+ tree fuzzy searchable index BSIWC
PUBKEY[]-user’s public key
Output: Encrypted BTree WildCard Fuzzy searchable IndexBSIE
(1) Declare integer variables key1 and public1
(2)Assign key1 = PUBKEY[1]
(3)Assign public1 = PUBKEY[2]
(4) Find the number of elements “Enum” inBSIWC
(5) Fori=1 to Enum do
/∗ Encrypt the fuzzy keyword present in each node ∗/
(6)BSIE = BSIWC[i] public1 mod key1
(7)  end for //i loop
(8)  return EncryptedBSIE
// Encrypted BTreeWildCard Fuzzy searchable Index


### 5.9. Searching Encrypted BTree Fuzzy Searchable Index Algorithm

The data user encrypts the multiple search keywords using the private secret key to create multikeyword trapdoor MKTW to the cloud storage server. The server sends the request MKTW to the classifier search server. The universal keyword classifier receives the request MKTW to check whether the request is coming for the first time. If the request is arriving for the first time, then the keyword classifier captures and stores the path of the MKTW by searching over the encrypted BTree wild card fuzzy searchable index BSIE by executing Algorithm10 and sends the search path to the cloud storage server. If the request given by the user matches a previous request stored then it is a repeated multiple keyword. Then the classifier search server extracts the stored search path patterns of the repeated multikeyword from the universal keyword classifier and the search path is sent to the cloud storage server.Algorithm 10:SearchBTreeWildCardFuzzySearchableIndex(BSIE, MKTW[][]).
Input:BSIE – Encrypted BTree Wildcard Fuzzy Searchable Index
MKTW[]–Encrypted MultiKeyword Trapdoor
Output: Set of Matched Encrypted Files
(1) Declare the variablei,k for processing loop
(2)Find the height of the B Tree index BSIE and assign it to TreeHeight
(3)AddNode childrenNodeValue = BSIE. childrenNodeValue;
(4)  if (TreeHeight == 0)  then
(5)    fori=0 to NumberofChild do
(6)     if (MKTW[i] = = childrenNodeValue [i]. MKTW[i]) then
(7)      return (NodeValue) childrenNodeValue [i].NodeValue;
(8)     end if
(9)    end for //i loop
(10)   else
(11)for k=0 to BSIE.NumberofChild do
(12)if ((k+1 = = BSIE. NumberofChild)∣∣(MKTW[i] < childrenNodeValue [k+1].KeyIndex)) then
(13)return SearchBTreeWildCardFuzzyIndex (childrenNodeValue[k].NextNode,
MKTW[k], TreeHeight − 1);
(14)end if
(15)   end for //k loop
(16)  return NULL
(17) end if
(18) End SearchBTreeWildCardFuzzyIndex


## 5.1. Function Definitions of ADKEFS

The following functions are implemented to optimize the searching on the cloud storage server and to achieve the effective data utilization.Functions on data owner are(i)
CreateKeyPairsForUser(SECRET1, SECRET2),(ii)
EncryptMultiKeywordDataFile(PUBKEY[]),(iii)
CreateWildCardFuzzyMultiKeywordSet(MKW[][], edit),(iv)
CreateBTreeWildcardFuzzySearchableIndex(FMKS[][][]),(v)
EncryptBTreeWildcardFuzzySearchableIndex(BSIWC,PUBKEY[]).Functions on cloud storage server are(i)
ExtractMultipleFileUsingPattern(SPP[]).Functions on classifier search server are(i)
SearchBTreeWildCardFuzzySearchableIndex(BSIE, MKTW[][]).Functions on data user are(i)
ViewDecryptedMultiKeywordFile(PRIVKEY[], MFILEENC).


## 5.2. Overall Framework of Asymmetric Classifier Multikeyword Fuzzy Search (ACMFS)

Our proposed method Asymmetric Classifier Multikeyword Fuzzy Search has classifier search server that creates the search path pattern for all the keywords of the encrypted set ofK data files. Data owner creates encrypted BTree wild card fuzzy searchable index for the fuzzy multikeyword set and is outsourced to the cloud storage server. This overcomes the problem of typos and representation inconsistencies behaviour of the data users. The overall conceptual description of Asymmetric Classifier Multikeyword Fuzzy Search is shown in Figure 2 as an activity diagram. Please refer to Algorithm 3 for the pseudo-code.Algorithm 3:ACMFS( ) (Asymmetric Classifier Multikeyword Fuzzy Search).
/∗ Variables Initialization ∗/
(1) Initialize Secret KeysSECRET1 and SECRET2
(2) Predefine the edit distance “edit” value for Wildcard based Fuzzy Mulikeyword Set Creation
(3) Predefine Multiple Keywords for a single file and a keyword can be shared by multiple files.
/∗ KeyGeneration ∗/
(4)DataOwner Creates User Public key and User Private Key pairs
(5)   CallCreateKeyPairsForUser(SECRET1, SECRET2)
// User Public key and User Private Key
(6)Receive (PUBKEY[],PRIVKEY[])
(7) Encrypt the Kdata files usingPUBKEY[] User’s Public key as  DF=DF1,DF2,…,DFK
(8)   CallEncryptMultiKeywordDataFile(PUBKEY[])
(9)   Receive the Encrypted fileDF[]=DF1,DF2,…,DFK
(10) Send the Encrypted fileDF[]=DF1,DF2,…,DFK to the Cloud storage server
(11)  Send the User’s Private Key asPrivate Secret Key to the data users
(12) Data owner creates Wildcard basedFuzzy Multikeyword set forMKW[][]
(13)   CallCreateWildCardFuzzyMultiKeywordSet(MKW[][],edit)
(14)   ReceiveFMKS=fmk11,fmk12,…,fmk1n,…,fmkn1,fmkn2,…,fmkkn
(15) Data ownerCreates B Ttree Wildcard searchable indexBSIWC for FMKS
(16)   callCreateBTreeWildcardFuzzySearchableIndex(FMKS[][][])
(17)   Receive B Ttree Wildcard searchable indexBSIE
(18) Encrypts the B+ tree wildcard searchable index BIWC
(19) callEncryptBTreeWildcardFuzzySearchableIndex(BSIWC,PUBKEY[])
(20) Receive Encrypted BTree wildcard searchable indexBSIE
(21) Send the Encrypted BTree wildcard searchable indexBSIE to the cloud storage server
(22)Cloud Storage server shares the BTree wildcard searchable index BSIE to the Classifier Search Server
(23)Data User request Multikeyword search request MSR, and is encrypted using Private Secret Keyto
create MultiKeyword TrapdoorMKTW
(24) MultiKeyword TrapdoorMKTW is sent to the cloud storage server
(25)Cloud Storage server send the MKTW to the Classifier Search Server
(26) Classifier Search Server  searches BTree wildcard searchable indexBSIE
(27)  If the KeywordMKTW is the new keyword then
(28)  callSearchBTreeWildCardFuzzySearchableIndex(BSIE,MKTW[][])
(29)      Keyword Classifier learn and Store the Search path pattern ofMKTW
(30)      Receive the Search path pattern of that keywordMKTW
(31)      Send the Search path pattern of that keywordMKTW to the cloud storage server
(32) else ifMKTW is already present in the Keyword Classifier then
(33)   Classifier Search Server send the stored Search path pattern ofMKTW to cloud storage server
(34) End if
(35)   Cloud Storage Server receives the Search path pattern ofMKTW
(36) Cloud Storage Server extractsMFILEENC the encrypted multiple files of MKTW
(37)Call ExtractMultipleFileUsingPattern(SPP[])
(38) Receive the set of Matching Encrypted filesMFILEENC
(39)MFILEENC is sent to theData user
(40) Data User receives theMFILEENC and decrypt the file using Private Secret Key PSK
(41)  callViewDecryptedMultiKeywordFile(PRIVKEY[],MFILEENC)
(42) Receive the Superset of matching Decrypted file Decrypted FileMFILE[]
(43) Now the user can view the file needed and large number of files viewed by the user
represents the effective data utilization.Figure 2
Activity diagram for Asymmetric Classifier Multikeyword Fuzzy Search.
(a)
(b)


## 5.3. Key Generation Algorithm

Here we use RSA public key algorithm for generating public and private key. Here this takes two secret keys SECRET1 and SECRET2 which is predefined by the data owner where both secret keys SECRET1, SECRET2 = 0,1∗. Algorithm 4 is executed by the data owner to generate public and private key pair. Data owner sends the user private key as private secret key which is used by the data users to create keyword trapdoor and for decrypting the file.Algorithm 4:CreateKeyPairsForUser(SECRET1, SECRET2)// Key Generation Algorithm.
Input: Two Secret keysSECRET1, SECRET2// Predefined SECRET1, SECRET2 = 0,1∗
Output: User Public and Private key pairPUBKEY[],PRIVKEY[]
(1) Declare the integer variables S1, S2, S3, S4, private, public and key
(2) Assign  S1 = SECRET1, S2 = SECRET2
(3) Find key = S1∗ S2
(4) Compute S3 = (S1 − 1)∗ (S2 − 1),  S4 = S3 − (S1 + S2 − 1)
(5) Pick random integer “public”.Check gcd(public, S4) = 1
// gcd is Greatest Common Denominator
(6) Compute private = e−1 mod S4
(7)PUBKEY[] = key, public // Public key pair
(8)PRIVKEY[] = key, public // Private key pair
(9) return (PUBKEY[],PRIVKEY[])


## 5.4. File Encryption Algorithm

Data owner executes Algorithm5 to form encrypted set of K data files DF={DF1,DF2,…,DFK} that are encrypted with user’s public keyPUBKEY and are outsourced to the cloud storage server.Algorithm 5:EncryptMultiKeywordDataFile(PUBKEY) // File Encryption Algorithm.
Input:PUBKEYUser Public key
Output:Encrypted File DF
(1)   Declare integer variables key and public,i
(2)   Assign key =PUBKEY1,  public = PUBKEY2
(3)    Fori=1 to k//K Data files
(4)  Encrypt the file by computing DFi = Filespublic mod key
(5)  end for //i loop
(6)  return Encrypted file DF  // Encrypted set of K data files DF=DF1,DF2,…,DFK


## 5.5. File Decryption Algorithm

After receiving the search path pattern of the multiple keywords from the classifier search server, the cloud storage server extracts the set of encrypted files fromDF and is sent to the data users. After receiving the encrypted files, the data user decrypts the files using private secret key by executing Algorithm 6.Algorithm 6:
ViewDecryptedMultiKeywordFile(PRIVKEY[ ], MFILEENC) // File Decryption Algorithm.
Input:PRIVKEY[] Private Secret key, MFILEENC - Encrypted files
Output: Decrypted FileMFile[]
(1) Assign PSK[1] = PRIVKEY[1]
(2) Assign PSK[2] = PRIVKEY[2]
// PSK − Private Secret Key
(3)   Fori=1 to K
//K Data files
(4)   MFILE[i] = MFILEENCPSK[2] mod PSK[1]
// Decrypting the file
(5) end for //i loop
(6) return Decrypted file MFILE[]


## 5.6. Wild Card Based Fuzzy Multikeyword Set Algorithm

Data owner has MKW ={(mk11,mk12,…,mk1n),(mk21,mk22,…,mk2n),…,(mkn1,mkn2,…,mkkn)} a set of multiple keywords of K data files. Data owner creates storage efficient fuzzy multikeyword set FMKS = {(fmk11[],fmk12[],…,fmk1n[]),(fmk21[],fmk22[],…,fmk2n[]),…,(fmkk1[],fmkk2[],…,fmkkn[])} using wild card based technique with the predefined edit distance value. Data owner executes Algorithm 7 to form fuzzy multikeyword Set.Algorithm 7:CreateWildCardFuzzyMultiKeywordSet(MKW[][],edit).
Input: Multikeyword set MKW={(mk11,mk12,…,mk1n),(mk21,mk22,…,mk2n),…,(mkn1,mkn2,…,mknn)}
edit – Edit Distance
Output: FMKS={(fmk11[],fmk12[],…,fmk1n[]),(fmk21[],fmk22[],…,fmk2n[]),…,(fmkk1[],fmkk2[],…,fmkkn[])}
(1) Declare integer variablei1, p1, q1, edit
(2) Char∗MultiKeywordFuzzy; Initialize FMKS[][] to be empty;
(3) if  edit > 1 then
(4)  callCreateWildCardFuzzyMultiKeywordSet(MKW[][],ed-1)
(5)  end if
(6)  if edit = 0 then
(7)  FMKS = MKW
(8)  else
(9)  Fori1=1 to length(MKW) do
(10)   Forp1=1 to length(FMKS[i][edit-1]) do
(11)    Forq1=1 to 2 ∗ length(FMKS[i][edit-1][p1]]) + 1 do
(12)     ifq1 is odd value then
(13)MultiKeywordFuzzy = FMKS[i][edit-1[p1]]
(14)      Insert “#” at (q1 + 1/2) position
(15)     else
(16)      Assign MultiKeywordFuzzy = length(Mkw[p1])
(17)      Insert “#” at (q1/2) position
(18)     end if
(19)      if MultiKeywordFuzzy is not in FMKS[i1][edit-1] then
(20)       Include MultiKeywordFuzzy in FMKS[i1][edit]
(21)      end if
(22)     end for //q1 loop
(23)    end for //p1 loop
(24)   end for //i1 loop
(25)  end if
(26)   return FMKS[][][]   // Fuzzy MultiKeyword Set


## 5.7. BTree Wild Card Fuzzy Searchable Index Algorithm

Data owner creates BTree wild card fuzzy searchable index BSIWC from fuzzy multikeyword set. Data owner executes Algorithm8 to create BTree wild card fuzzy searchable index BSIWC for the wild card based fuzzy keyword set FKS.Algorithm 8:CreateBTreeWildCardFuzzySearchableIndex(FMKS[][][]).
Input: FMKS={(fmk11[],fmk12[],…,fmk1n[]),(fmk21[],fmk22[],…,fmk2n[]),…,(fmkk1[],fmkk2[],…,fmkkn[])}
WildCard Fuzzy Multikeyword Set
Output:BSIWC: BTree Wildcard Fuzzy Searchable Index
(1)Start AddNodeBTree
(2)  Declare the ChildLimit, NumberofChild, ChildrenValue inside the class BTreeNode
(3)  Declare TreeHeight to denote height of the BTree,i,j;
(4)  Declare the objects KeyNumber,  KeyIndex, NodeValue, NextNode, RootNode for AddNode
(5)  Declare KeyIndexNumber that denote the number of keyIndex and Nodevalue pairs in B Tree
(6)  Declare the object ChildrenNodeValue for the class AddNode
(7)  Define Constructor AddNode(KeyIndex, NodeValue,  NextNode)
(8)   this.KeyIndex   = KeyIndex;
(9)   this.NodeValue = NodeValue;
(10)    this.NextNode  =NextNode;
(11)  End ConstrutorAddNode
(12)  Initialize RootNode = new Node(0)
(13)  fori=1 to Number of keywords in FMKS[i] do
(14)   forj=1 to Number of Fuzzy Keywords in FMKS[i][j]
(15)    call InsertNodeIntoBTree(RootNode, FMKS[i], FMKS[i][j], TreeHeight)
(16)    Receive BTreeNode;
(17)    KeyIndexnumber = KeyIndexnumber + 1;
(18)   if (BTreeNode == NULL)  then
(19)       return NULL;
(20)   end if
(21)    Create two AddNode object as ChildNode
(22)   ChildNode.childrenNodeValue[0] = new AddNode(RootNode.childrenNodeValue[0].KeyIndex,
Null, RootNode);
(23)    ChildNode. childrenNodeValue[1] = new AddNode(u. childrenNodeValue[0].KeyIndex, null,
BTreeNode);
(24)    RootNode = ChildNode;
(25)   TreeHeight = TreeHeight + 1;
(26)End AddNodeBTree
(27)Function AddNodeInsertNodeIntoBTree (RootNode, WFKS, WFKS, TreeHeight)
(28)Declare the variable i,j,k,m,n for processing loop
(29)for  i=1 to Number of keywords in FMKS[i] do
(30)  forj=1 to Number of Fuzzy Keywords in FMKS[i][j]
(31)   AddNodeCurrentNode = new AddNode(FMKS[i], FMKS[i][j], TreeHeight);
(32)    if (TreeHeight == 0) then
(33)     Fork=0 to RootNode. NumberofChild do
(34)      if (WFKS[i] <RootNode. childrenNodeValue [k].FMKS[i])
then
(35)       break;
(36)      end if
(37)     end for //k loop
(38)    else
(39)     form=0 to RootNode. NumberofChild do
(40)      if ((m+1 == RootNode. NumberofChild) ∣∣ FMKS[i] <RootNode.
childrenNodeValue [m+1].FMKS[i]) then
(41)     AddNodeNewNode = InsertNodeIntoBTree (RootNode. childrenNodeValue[m++].NextNode,
FMKS[i], FMKS[i][j], TreeHeight -1);
(42)         if (NewNode == NULL) then
(43)          return null;
(44)         end if
(45)     CurrentNode. FMKS[i] =NewNode.childrenNodeValue[0]. FMKS[i];
(46)   CurrentNode.NextNode = NewNode;
(47)    break;
(48)   end if
(49)  end for //m loop
(50)  forn=0 to RootNode. NumberofChild do
(51)    RootNode. childrenNodeValue [n] = RootNode. childrenNodeValue[n-1];
(52)   RootNode. childrenNodeValue [j] = CurrentNode;
(53)    RootNode. NumberofChild = RootNode. NumberofChild + 1;
(54)   if (RootNode. NumberofChild < ChildLimit) then    return null;
(55)    else return SplitNodeInBTree(RootNode);
(56)   end if
(57)   end for //n loop
(58)  end for //j loop
(59) end for //i loop
(60)End Function AddNodeInsertNodeIntoBTree
(61)Function SplitNodeInBTree(RootNode)
(62)  Declare the variablei for processing loop
(63)  AddNodeSplitNode = new AddNode (ChildLimit/2);
(64)  RootNode. NumberofChild = ChildLimit/2;
(65)  fori=0 to ChildLimit/2 do
(66)   SplitNode. childrenNodeValue[i] = RootNode. childrenNodeValue[childLimit/2 + i];
(67)return SplitNode;
(68)  end for //i loop
(69)End Function SplitNodeInBTree


## 5.8. Encrypting BTree Fuzzy Searchable Index Algorithm

Data owner encrypts the BTree wild card fuzzy searchable index BSIWC using user public key and is outsourced to the cloud storage by executing Algorithm9 to create encrypted BTree wild card fuzzy searchable index BSIE and is outsourced to the cloud storage server.Algorithm 9:EncryptBTreeWildcardFuzzySearchableIndex(BSIWC, PUBKEY[]).
Input: B+ tree fuzzy searchable index BSIWC
PUBKEY[]-user’s public key
Output: Encrypted BTree WildCard Fuzzy searchable IndexBSIE
(1) Declare integer variables key1 and public1
(2)Assign key1 = PUBKEY[1]
(3)Assign public1 = PUBKEY[2]
(4) Find the number of elements “Enum” inBSIWC
(5) Fori=1 to Enum do
/∗ Encrypt the fuzzy keyword present in each node ∗/
(6)BSIE = BSIWC[i] public1 mod key1
(7)  end for //i loop
(8)  return EncryptedBSIE
// Encrypted BTreeWildCard Fuzzy searchable Index


## 5.9. Searching Encrypted BTree Fuzzy Searchable Index Algorithm

The data user encrypts the multiple search keywords using the private secret key to create multikeyword trapdoor MKTW to the cloud storage server. The server sends the request MKTW to the classifier search server. The universal keyword classifier receives the request MKTW to check whether the request is coming for the first time. If the request is arriving for the first time, then the keyword classifier captures and stores the path of the MKTW by searching over the encrypted BTree wild card fuzzy searchable index BSIE by executing Algorithm10 and sends the search path to the cloud storage server. If the request given by the user matches a previous request stored then it is a repeated multiple keyword. Then the classifier search server extracts the stored search path patterns of the repeated multikeyword from the universal keyword classifier and the search path is sent to the cloud storage server.Algorithm 10:SearchBTreeWildCardFuzzySearchableIndex(BSIE, MKTW[][]).
Input:BSIE – Encrypted BTree Wildcard Fuzzy Searchable Index
MKTW[]–Encrypted MultiKeyword Trapdoor
Output: Set of Matched Encrypted Files
(1) Declare the variablei,k for processing loop
(2)Find the height of the B Tree index BSIE and assign it to TreeHeight
(3)AddNode childrenNodeValue = BSIE. childrenNodeValue;
(4)  if (TreeHeight == 0)  then
(5)    fori=0 to NumberofChild do
(6)     if (MKTW[i] = = childrenNodeValue [i]. MKTW[i]) then
(7)      return (NodeValue) childrenNodeValue [i].NodeValue;
(8)     end if
(9)    end for //i loop
(10)   else
(11)for k=0 to BSIE.NumberofChild do
(12)if ((k+1 = = BSIE. NumberofChild)∣∣(MKTW[i] < childrenNodeValue [k+1].KeyIndex)) then
(13)return SearchBTreeWildCardFuzzyIndex (childrenNodeValue[k].NextNode,
MKTW[k], TreeHeight − 1);
(14)end if
(15)   end for //k loop
(16)  return NULL
(17) end if
(18) End SearchBTreeWildCardFuzzyIndex


## 6. Implementation Results

### 6.1. Implementation Setup

The implementation of the proposed work was accomplished through Asymmetric Classifier Multikeyword Fuzzy Search (ACMFS) cloud data utilization service architecture using Jelastic PaaS LayerShift cloud storage provider which offers infrastructure, platform, and application as a service for the customers. The experimentation was carried out with the code programmed in JAVA for data owner, users, classifier search server, and cloud storage server. Microsoft SQL MYSQL 5.5.42 was enabled to act as the database for the proposed system. The simulation was performed with the setup of data owner, data users from our side, and classifier search server, cloud storage server on the Jelastic cloud storage. The data owner authenticates 100 users and defines the multikeyword set for each data files. Prior to evaluating the results, the data owner outsourced 1000 encrypted files to the Jelastic cloud storage. The data owner creates the wild card fuzzy multikeyword set FMKS for edit distance 1, 2 and BTree fuzzy searchable indexBSIWC. The data owner outsources the encrypted BSIWC and 1000 encrypted files to Jelastic cloud storage server. The cloud storage now contains the encrypted 1000 files and encrypted BSIWC. With this simulated setup, the authorized users are allowed to access the files in the cloud storage using their individual identity. The users are now allowed to access the files in the cloud storage by entering the multiple keyword search request.


### 6.2. Performance Analysis

The performance of the proposed method was evaluated taking into account the search time efficiency and data utilization from the Jelastic cloud storage by giving the multiple keyword search request from the data users with classifier search server. The experimental results obtained by ACMFS cloud data utilization system architecture are shown in Tables1–5 and Figures 3–7. Table 1 shows the analysis of time taken for creating the wild card based fuzzy multikeyword set with different number of users and files and its analysis chart is shown in Figure 3. Here data owner predefines five keywords for each file.Table 1
Analysis of time taken for creating the wild card based fuzzy multikeyword set.
Number of users
Number of files
Time taken for creating wild card based fuzzy multikeyword set (ms)
10
300
420
12
350
450
14
400
453
16
450
530
18
500
650
20
550
655
22
600
710
24
650
730
26
700
810
28
750
980
30
800
1173Table 2
Analysis of data utilization efficiency for correct keywords.
Number of users
Number of files
Sample of correct multikeyword search request
Number of files retrieved with edit = 1
Number of files retrieved with edit = 2
10
300
Cloud computing
25
32
12
350
Data users
17
28
14
400
Inter college meet
19
26
16
450
Cause of concern
22
34
18
500
Web crime issues
12
17
20
550
Open access journal
29
43
22
600
The set of files
35
47
24
650
Storage server
11
19
26
700
Remote car access
45
52
28
750
Write mode
15
23
30
800
Tax benefit
8
18Table 3
Analysis of data utilization efficiency for misspelled keywords.
Number of users
Number of files
Sample of misspelled multikeyword search request
Number of files retrieved with edit = 1
Number of files retrieved with edit = 2
10
300
Claud computeng
29
35
12
350
Dataa usars
21
31
14
400
Intor collage meat
22
27
16
450
Caase of concarn
25
27
18
500
Waeb krime issuesh
14
19
20
550
Opan acceass joarnal
31
46
22
600
Thee seet of filles
38
49
24
650
Starage servor
13
23
26
700
Remoote care accesh
49
57
28
750
Writee modee
18
27
30
800
Taxe beneefit
13
24Table 4
Analysis of search efficiency for correct keywords with and without classifier search server.
Number of users
Number of files
Sample of correct multikeyword search request
Search time with classifier search server for edit = 1 (ms)
Search time with classifier search server for edit = 2 (ms)
Search time without classifier search server for edit = 1 (ms)
Search time without classifier search server for edit = 2 (ms)
10
300
Cloud computing
10
7
15
43
12
350
Data users
11
7
16
24
14
400
Inter college meet
28
7
35
23
16
450
Cause of concern
13
2
16
20
18
500
Web crime issues
29
6
35
24
20
550
Open access journal
20
10
25
87
22
600
The set of files
25
6
30
29
24
650
Storage server
24
18
35
25
26
700
Remote car access
9
5
16
25
28
750
Write mode
11
6
16
22
30
800
Tax benefit
9
12
15
16Table 5
Analysis of search efficiency for misspelled keywords with and without classifier search server.
Number of users
Number of files
Sample of misspelled multikeyword search request
Search time with classifier search server for edit = 1
Search time with classifier search server for edit = 2
Search time without classifier search server for edit = 1
Search time without classifier search server for edit = 2
10
300
Claud computeng
17
17
158
47
12
350
Dataa usars
28
13
98
32
14
400
Intor collage meat
9
29
39
32
16
450
Caase of concarn
21
29
50
16
18
500
Waeb krime issuesh
11
30
78
47
20
550
Opan acceass joarnal
25
31
34
46
22
600
Thee seet of filles
20
26
38
32
24
650
Starage servor
23
25
49
32
26
700
Remoote care accesh
13
15
20
31
28
750
Writee modee
11
10
28
47
30
800
Taxe beneefit
8
9
17
31Figure 3
Time taken for creating wild card fuzzy multikeyword set for ACMFS.Figure 4
Data utilization efficiency for correct keywords in ACMFS.Figure 5
Data utilization efficiency for misspelled keywords in ACMFS.Figure 6
Search efficiency for correct keywords in ACMFS.Figure 7
Search efficiency for misspelled keywords in ACMFS.Table2 shows the analysis of data utilization efficiency for correct keyword in terms of number of files retrieved from the cloud storage and its analysis chart is shown in Figure 4.Table3 shows the analysis of data utilization efficiency for misspelled keyword in terms of number of files retrieved from the cloud storage and its analysis chart is shown in Figure 5.Table4 shows the analysis of search time efficiency for correct multikeywords with and without classifier search server for edit 1, 2 and its analysis chart is shown in Figure 6.Table5 shows the analysis of search time efficiency for misspelled multikeywords with and without classifier search server for edit 1, 2 and its analysis chart is shown in Figure 7.


## 6.1. Implementation Setup

The implementation of the proposed work was accomplished through Asymmetric Classifier Multikeyword Fuzzy Search (ACMFS) cloud data utilization service architecture using Jelastic PaaS LayerShift cloud storage provider which offers infrastructure, platform, and application as a service for the customers. The experimentation was carried out with the code programmed in JAVA for data owner, users, classifier search server, and cloud storage server. Microsoft SQL MYSQL 5.5.42 was enabled to act as the database for the proposed system. The simulation was performed with the setup of data owner, data users from our side, and classifier search server, cloud storage server on the Jelastic cloud storage. The data owner authenticates 100 users and defines the multikeyword set for each data files. Prior to evaluating the results, the data owner outsourced 1000 encrypted files to the Jelastic cloud storage. The data owner creates the wild card fuzzy multikeyword set FMKS for edit distance 1, 2 and BTree fuzzy searchable indexBSIWC. The data owner outsources the encrypted BSIWC and 1000 encrypted files to Jelastic cloud storage server. The cloud storage now contains the encrypted 1000 files and encrypted BSIWC. With this simulated setup, the authorized users are allowed to access the files in the cloud storage using their individual identity. The users are now allowed to access the files in the cloud storage by entering the multiple keyword search request.


## 6.2. Performance Analysis

The performance of the proposed method was evaluated taking into account the search time efficiency and data utilization from the Jelastic cloud storage by giving the multiple keyword search request from the data users with classifier search server. The experimental results obtained by ACMFS cloud data utilization system architecture are shown in Tables1–5 and Figures 3–7. Table 1 shows the analysis of time taken for creating the wild card based fuzzy multikeyword set with different number of users and files and its analysis chart is shown in Figure 3. Here data owner predefines five keywords for each file.Table 1
Analysis of time taken for creating the wild card based fuzzy multikeyword set.
Number of users
Number of files
Time taken for creating wild card based fuzzy multikeyword set (ms)
10
300
420
12
350
450
14
400
453
16
450
530
18
500
650
20
550
655
22
600
710
24
650
730
26
700
810
28
750
980
30
800
1173Table 2
Analysis of data utilization efficiency for correct keywords.
Number of users
Number of files
Sample of correct multikeyword search request
Number of files retrieved with edit = 1
Number of files retrieved with edit = 2
10
300
Cloud computing
25
32
12
350
Data users
17
28
14
400
Inter college meet
19
26
16
450
Cause of concern
22
34
18
500
Web crime issues
12
17
20
550
Open access journal
29
43
22
600
The set of files
35
47
24
650
Storage server
11
19
26
700
Remote car access
45
52
28
750
Write mode
15
23
30
800
Tax benefit
8
18Table 3
Analysis of data utilization efficiency for misspelled keywords.
Number of users
Number of files
Sample of misspelled multikeyword search request
Number of files retrieved with edit = 1
Number of files retrieved with edit = 2
10
300
Claud computeng
29
35
12
350
Dataa usars
21
31
14
400
Intor collage meat
22
27
16
450
Caase of concarn
25
27
18
500
Waeb krime issuesh
14
19
20
550
Opan acceass joarnal
31
46
22
600
Thee seet of filles
38
49
24
650
Starage servor
13
23
26
700
Remoote care accesh
49
57
28
750
Writee modee
18
27
30
800
Taxe beneefit
13
24Table 4
Analysis of search efficiency for correct keywords with and without classifier search server.
Number of users
Number of files
Sample of correct multikeyword search request
Search time with classifier search server for edit = 1 (ms)
Search time with classifier search server for edit = 2 (ms)
Search time without classifier search server for edit = 1 (ms)
Search time without classifier search server for edit = 2 (ms)
10
300
Cloud computing
10
7
15
43
12
350
Data users
11
7
16
24
14
400
Inter college meet
28
7
35
23
16
450
Cause of concern
13
2
16
20
18
500
Web crime issues
29
6
35
24
20
550
Open access journal
20
10
25
87
22
600
The set of files
25
6
30
29
24
650
Storage server
24
18
35
25
26
700
Remote car access
9
5
16
25
28
750
Write mode
11
6
16
22
30
800
Tax benefit
9
12
15
16Table 5
Analysis of search efficiency for misspelled keywords with and without classifier search server.
Number of users
Number of files
Sample of misspelled multikeyword search request
Search time with classifier search server for edit = 1
Search time with classifier search server for edit = 2
Search time without classifier search server for edit = 1
Search time without classifier search server for edit = 2
10
300
Claud computeng
17
17
158
47
12
350
Dataa usars
28
13
98
32
14
400
Intor collage meat
9
29
39
32
16
450
Caase of concarn
21
29
50
16
18
500
Waeb krime issuesh
11
30
78
47
20
550
Opan acceass joarnal
25
31
34
46
22
600
Thee seet of filles
20
26
38
32
24
650
Starage servor
23
25
49
32
26
700
Remoote care accesh
13
15
20
31
28
750
Writee modee
11
10
28
47
30
800
Taxe beneefit
8
9
17
31Figure 3
Time taken for creating wild card fuzzy multikeyword set for ACMFS.Figure 4
Data utilization efficiency for correct keywords in ACMFS.Figure 5
Data utilization efficiency for misspelled keywords in ACMFS.Figure 6
Search efficiency for correct keywords in ACMFS.Figure 7
Search efficiency for misspelled keywords in ACMFS.Table2 shows the analysis of data utilization efficiency for correct keyword in terms of number of files retrieved from the cloud storage and its analysis chart is shown in Figure 4.Table3 shows the analysis of data utilization efficiency for misspelled keyword in terms of number of files retrieved from the cloud storage and its analysis chart is shown in Figure 5.Table4 shows the analysis of search time efficiency for correct multikeywords with and without classifier search server for edit 1, 2 and its analysis chart is shown in Figure 6.Table5 shows the analysis of search time efficiency for misspelled multikeywords with and without classifier search server for edit 1, 2 and its analysis chart is shown in Figure 7.


## 7. Conclusion

This work Asymmetric Classifier Multikeyword Fuzzy Search presented a method that can be successfully used to enhance data utilization and improved search efficiency for public cloud storage. Provided that the data owner stores the set of encrypted files in cloud storage, we showed that the user experience improved search time due to the presence of classifier search server which searches the BTree wild card fuzzy searchable index. The proposed system extracts the wild card fuzzy multikeyword set for the multiple keyword search request resulting in increased data utilization in terms of number of files retrieved for the corresponding users. The proposed system’s performance is demonstrated with the advent of classifier search server which stores the pattern of search and helps reducing the search time for repeated multiple keyword search request. The classifier search server concept adds a new paradigm to cloud storage server serving several thousands of data owners and their users.



---

*Source: 706102-2015-08-25.xml*