You are on page 1of 36

THIRD REVIEW REPORT

Ticket-Based Security Architecture Achieving Anonymity and Traceability

BATCH MEMBERS
Nikita Kushwaha RA. Shree Vidhya M. Subathra

GUIDE:

CO-ORDINATORS:

Mrs. S.P. MANIMOZHI

Mrs.P.MADHUMITHA

Mrs. P. RENUKADEVI

OBJECTIVES:
Resolving the security conflicts between anonymity and traceability.

Guarantees fundamental security requirements including authentication,


confidentiality, etc.

INTRODUCTION:
Design of a ticket-based anonymity system with traceability property. Bind of the ticket and pseudonym which guarantees anonymous access control and simplified revocation process. Adoption of the hierarchical identity-based cryptography (HIBC) for inter-domain authentication avoiding domain parameter certification.

EXISTING SYSTEM:
The anonymity concept is implemented in P2P and payment system . The traceability concepts are not used in this system. Unconditional anonymity may incur insider attacks since misbehaving users are no longer traceable.

PROPOSED SYSTEM: The proposed system is motivated by resolving the security conflicts, anonymity and traceability. The proposed system uses the blind signature and pseudonym technique.

This system can achieve the anonymity of user identities from activities, as well as the traceability of misbehaving users. ARCHITECTURE DIAGRAM:

DATA-FLOW DIAGRAMS:

DATA FLOW DIAGRAM


LEVEL 0

Client

Regis ter

MR

GW

TA

Personal Info

Client ID Registration

DB

LEVEL 1

TA

Registration

Ticket Generation

Send

Client

DB

LEVEL 2

Client

Give the Ticket

Generate the Pseudonyms

DB

Send Pair Info

LEVEL 3
Gateway Get the Pair Value

DB

Verify the Ticket

Ganerate the Blind Signature

MODULES:

Client & Trusted Node Domain Deployments Ticked Issuance and Deposit Process Generation of Pseudonym and Revocation Process Blind Signature Generation Fraud Detection & Ticket Revocation Process
Accessing the Network from Foreign Domains

MODULE DESCRIPTION:
1.Client & Trusted Node Domain Deployments :

The client presents his ID upon registration at the TA. TA assigns a private key associated with the clients ID.

2. Ticket Issuance and Deposit Process :

Ticket issuance occurs when the client initially attempts to access the network. The TA should be unable to link the ticket it issued to the clients real identities.

3. Generation of Pseudonym and Revocation Process:

Pseudonym is used to replace the real ID in the authentication.


The client generates his own pseudonym.

4. Blind Signature Generation:

It should have the properties of:


Verifiability Un-link-ability Un-forge-ability

5. Fraud Detection & Ticket Revocation Process : Ticket reuse generally results from the clients inability to obtain tickets.

Ticket revocation is necessary when a client is compromised.


6. Accessing the Network from Foreign Domains: The access services the visiting (foreign) trust domain.

SCREEN SHOTS:

SAMPLE CODINGS:
package com.Vedha.client; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Font; import javax.swing.JTextArea;

import javax.swing.JScrollPane; import javax.swing.JButton; public class Client extends JFrame { private static final long serialVersionUID = 1L; private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Client frame = new Client(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Client() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 732, 401); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane); contentPane.setLayout(null); JLabel lblNewLabel_1 = new JLabel("Mobile User"); lblNewLabel_1.setFont(new Font("Sylfaen", Font.PLAIN, 20)); lblNewLabel_1.setBounds(318, 29, 215, 38); contentPane.add(lblNewLabel_1); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(463, 100, 215, 205); contentPane.add(scrollPane); JTextArea textArea = new JTextArea(); scrollPane.setViewportView(textArea); JButton btnNewButton = new JButton("New button"); btnNewButton.setBounds(339, 258, 89, 23); contentPane.add(btnNewButton); JButton btnNewButton_1 = new JButton("New button"); btnNewButton_1.setBounds(209, 258, 89, 23); contentPane.add(btnNewButton_1); JButton btnNewButton_2 = new JButton("New button"); btnNewButton_2.setBounds(81, 258, 89, 23); contentPane.add(btnNewButton_2); JLabel lblNewLabel = new JLabel(""); lblNewLabel.setIcon(new ImageIcon("C:\\Documents and Settings\\Administrator\\My Documents\\Downloads\\SAT PICTURE\\mycddlogin32.png")); lblNewLabel.setBounds(0, 0, 724, 367); contentPane.add(lblNewLabel);

} } package com.Vedha.utility; import java.sql.*; public class DBConnection { private Connection con; private static String driver ="com.mysql.jdbc.Driver"; private static String url = "jdbc:mysql://localhost:3306/securitydatabase"; public Connection getConnection() throws SQLException,ClassNotFoundException { Class.forName( driver ); con = DriverManager.getConnection(url,"root","root123"); return con; } } package com.Vedha.client; import java.awt.*; import javax.swing.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.IOException; public class ClientLogin extends JFrame { private static final long serialVersionUID = 1L;

private JPanel contentPane; private JTextField UNameText; private JPasswordField passwordField; public ClientLogin() { super(); setResizable(false); getContentPane().setBackground(SystemColor.text); getContentPane().setFont(new Font("Times New Roman", Font.BOLD, 15)); initializeComponent(); this.setVisible(true); } private void initializeComponent() { contentPane = (JPanel)this.getContentPane(); contentPane.setLayout(null); JLabel loginLabel = new JLabel("Mobile Banking User Log In\r\n"); loginLabel.setFont(new Font("Sylfaen", Font.BOLD, 20)); loginLabel.setBounds(406, 30, 286, 55); getContentPane().add(loginLabel); JLabel UNameLabel = new JLabel("User Name "); UNameLabel.setFont(new Font("Times New Roman", Font.PLAIN, 20)); UNameLabel.setBounds(44, 152, 127, 35); getContentPane().add(UNameLabel); UNameText = new JTextField(); UNameText.setFont(new Font("Times New Roman", Font.PLAIN, 15)); UNameText.setBounds(165, 158, 145, 29); getContentPane().add(UNameText); UNameText.setColumns(10);

JLabel PassLabel = new JLabel("Password "); PassLabel.setFont(new Font("Times New Roman", Font.PLAIN, 20)); PassLabel.setBounds(44, 203, 117, 35); getContentPane().add(PassLabel); passwordField = new JPasswordField(); passwordField.setFont(new Font("Times New Roman", Font.PLAIN, 15)); passwordField.setBounds(165, 209, 145, 27); getContentPane().add(passwordField); JButton LogButton = new JButton("Login"); LogButton.setFont(new Font("Times New Roman", Font.BOLD, 15)); LogButton.setBounds(99, 273, 107, 27); getContentPane().add(LogButton); JLabel NewRegistrationLabel = new JLabel("New User Registration"); NewRegistrationLabel.setForeground(UIManager.getColor("menuPressedItemB")); NewRegistrationLabel.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent arg0) { int n=JOptionPane.showConfirmDialog(contentPane,"OPEN THE NEW USER REGISTRATION FORM."); if(n==0) { new NewUserRegistration(); } else { JOptionPane.showMessageDialog(contentPane, "SORRY OPEN AGAIN"); } } });

JLabel RImageLabel = new JLabel(""); RImageLabel.setIcon(new ImageIcon("ImageFiles\\stock_newlabels.png")); RImageLabel.setBounds(466, 96, 128, 153); getContentPane().add(RImageLabel); NewRegistrationLabel.setFont(new Font("Times New Roman", Font.BOLD, 16)); NewRegistrationLabel.setBounds(455, 260, 169, 50); getContentPane().add(NewRegistrationLabel); JLabel ImageNewLabel = new JLabel(""); ImageNewLabel.setBackground(SystemColor.window); ImageNewLabel.setIcon(new ImageIcon("ImageFiles\\header_banking.jpg")); ImageNewLabel.setBounds(0, 0, 614, 355); getContentPane().add(ImageNewLabel); this.setTitle("Mobile Banking"); this.setLocation(new Point(150, 100)); this.setSize(new Dimension(722, 389)); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) throws IOException { JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); try {

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); }

catch (Exception ex) { System.out.println("Failed loading L&F: "); System.out.println(ex); } new ClientLogin(); } } package com.Vedha.Trusted; import java.awt.*; import javax.swing.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.sql.*; import java.util.Calendar; import java.util.Random; import com.Vedha.utility.*; public class TrustedAuthority extends JFrame implements Runnable { private static final long serialVersionUID = 1L; SerializeData ClientObj = null; private JPanel contentPane; private JTextField ClientIDSerialKey;

private JTextField TicketValueText; private JTextField ExpireDateText; private JTextField MisbehaviorText; private ServerProcess server; DBConnection dbc; Connection con; Statement st; ResultSet rs,rs1; private int ClientId; public String tSerial; public String tValue; public String tExpire; public String tMisbehaae; public TrustedAuthority() { super(); getContentPane().setBackground(Color.WHITE); initializeComponent(); Thread t=new Thread(this); t.start(); this.setVisible(true); } private void initializeComponent() { contentPane = (JPanel)this.getContentPane(); contentPane.setLayout(null); JButton TicketGenerationButton = new JButton("Ticket");

TicketGenerationButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { //String ID=Integer.toString(ClientIDFind()); String ID=(FindID()); Thread.sleep(1000); ClientIDSerialKey.setText(ID); String tic=Integer.toString(TicketValue()); Thread.sleep(1000); TicketValueText.setText(tic); String ExpireDate=(findExpireDate()); ExpireDateText.setText(ExpireDate); String misbehaviorValue=findMisbehavior(); MisbehaviorText.setText(misbehaviorValue); } catch (Exception e) { e.printStackTrace(); } } private String FindID() { int x = 16; char[] plate = new char[x]; int c = 'A'; for(int p = 0; p < 16; p++) { int vehiclePlate = 0 + (int) (Math.random()* 6); switch(vehiclePlate) {

case 0: c = '0' + (int)(Math.random() * 10); break; case 1: c = 'A' + (int)(Math.random() * 26); break; } plate[p] = (char)c; } String barcode=new String(plate); System.out.println(barcode); return barcode; } private String findMisbehavior() { int misVal=0; Random rand = new Random(); misVal = rand.nextInt(10); return Integer.toString(misVal); } private String findExpireDate() { Calendar now = Calendar.getInstance(); System.out.println("Current date : " + (now.get(Calendar.MONTH) + 1) + "-" + now.get(Calendar.DATE) + "-" + now.get(Calendar.YEAR)); now.add(Calendar.DATE,20); System.out.println("date after 20 day : " + (now.get(Calendar.MONTH) + 1) + "-" + now.get(Calendar.DATE) + "-" + now.get(Calendar.YEAR)); String date=(now.get(Calendar.DATE)+1)+":"+ (now.get(Calendar.MONTH) + 1)+":" + now.get(Calendar.YEAR); System.out.println("Current time : " + now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE) + ":" + now.get(Calendar.SECOND));

now.add(Calendar.MINUTE,20); System.out.println("New time after adding 20 minutes : " + now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE) + ":" + now.get(Calendar.SECOND)); String dateTime=date+"/"+now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE) + ":" + now.get(Calendar.SECOND); return dateTime; } }); TicketGenerationButton.setFont(new Font("Times New Roman", Font.BOLD, 15)); TicketGenerationButton.setBounds(234, 381, 92, 29); getContentPane().add(TicketGenerationButton); ClientIDSerialKey = new JTextField(); ClientIDSerialKey.setFont(new Font("Times New Roman", Font.PLAIN, 15)); ClientIDSerialKey.setBounds(171, 196, 206, 29); getContentPane().add(ClientIDSerialKey); ClientIDSerialKey.setColumns(10); JLabel IDSerialKeyLabel = new JLabel("Ticket Serial No"); IDSerialKeyLabel.setFont(new Font("Times New Roman", Font.BOLD, 15)); IDSerialKeyLabel.setBounds(10, 204, 132, 18); getContentPane().add(IDSerialKeyLabel); JLabel ExpireDateLabel = new JLabel("Expire Date/Time");

ExpireDateLabel.setFont(new Font("Times New Roman", Font.BOLD, 15)); ExpireDateLabel.setBounds(10, 278, 132, 25); getContentPane().add(ExpireDateLabel); JLabel MisbeLabel = new JLabel("Misbehavior Value"); MisbeLabel.setFont(new Font("Times New Roman", Font.BOLD, 15)); MisbeLabel.setBounds(10, 324, 132, 24); getContentPane().add(MisbeLabel); final JTextArea UserInfoTextArea = new JTextArea(); UserInfoTextArea.setBounds(155, 53, 147, 126); //getContentPane().add(textArea); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(155, 53, 243, 126); scrollPane.setViewportView(UserInfoTextArea); getContentPane().add(scrollPane); JLabel TrustedLabel = new JLabel(""); TrustedLabel.setIcon(new ImageIcon("ImageFiles\\Logo_Trusted_Computing_Group.jpg.gif")); TrustedLabel.setBounds(408, 0, 274, 126); getContentPane().add(TrustedLabel); JLabel TicketLabel = new JLabel("Ticket Value"); TicketLabel.setFont(new Font("Times New Roman", Font.BOLD, 15)); TicketLabel.setBounds(10, 236, 132, 24); getContentPane().add(TicketLabel);

TicketValueText = new JTextField(); TicketValueText.setFont(new Font("Times New Roman", Font.PLAIN, 15)); TicketValueText.setBounds(171, 236, 206, 29); getContentPane().add(TicketValueText); TicketValueText.setColumns(10); ExpireDateText = new JTextField(); ExpireDateText.setFont(new Font("Times New Roman", Font.PLAIN, 15)); ExpireDateText.setBounds(171, 279, 206, 29); getContentPane().add(ExpireDateText); ExpireDateText.setColumns(10); MisbehaviorText = new JTextField(); MisbehaviorText.setFont(new Font("Times New Roman", Font.PLAIN, 15)); MisbehaviorText.setBounds(171, 324, 206, 29); getContentPane().add(MisbehaviorText); MisbehaviorText.setColumns(10); JButton btnNewButton = new JButton("View"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { FileInputStream fileIn =new FileInputStream("C:\\loginInfo.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); ClientObj = (SerializeData)in.readObject(); in.close();

fileIn.close(); } catch(IOException i) { i.printStackTrace(); } catch(ClassNotFoundException c) { System.out.println(".Client Info class not found."); } System.out.println("Deserialized Employee..."); System.out.println("USER NAME System.out.println("ADDRESS System.out.println("ACCOUNT TYP : " + ClientObj.uname); : " + ClientObj.add1); : " + ClientObj.accountTye);

System.out.println("PORT NO : " + ClientObj.add2); System.out.println("REGISTER AMOUNT: " + ClientObj.regAmt); String DeSerializedMSG=" USER NAME\t\t:"+ ClientObj.uname+"\n ADDRESS\t\t:"+ClientObj.add1+"\n PORT NO\t\t:"+ClientObj.add2+"\n ACCOUNT TYPE\t\t:"+ClientObj.accountTye+"\n REGISTRED AMOUNT\t:"+ClientObj.regAmt; UserInfoTextArea.append(DeSerializedMSG); } }); btnNewButton.setFont(new Font("Times New Roman", Font.BOLD, 15)); btnNewButton.setBounds(65, 381, 92, 29); getContentPane().add(btnNewButton); JLabel UserInfoLabel = new JLabel("User Information"); UserInfoLabel.setFont(new Font("Times New Roman", Font.BOLD, 15)); UserInfoLabel.setBounds(10, 51, 147, 29); getContentPane().add(UserInfoLabel);

JLabel BackGroundLabel = new JLabel(""); BackGroundLabel.setIcon(new ImageIcon("ImageFiles\\man-with-group02-300x300.png")); BackGroundLabel.setBounds(371, 202, 321, 294); getContentPane().add(BackGroundLabel); JButton SendButton = new JButton("Send"); SendButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { dbc=new DBConnection(); con=dbc.getConnection(); st=con.createStatement(); tSerial=ClientIDSerialKey.getText(); tValue=TicketValueText.getText(); tExpire=ExpireDateText.getText(); tMisbehaae=MisbehaviorText.getText(); int r= st.executeUpdate("insert into ticket_details values('"+tSerial+"','"+tValue+"','"+tExpire+"','"+tMisbehaae+"')"); if(r==1) System.out.println("insert the recored sucessfully."); else System.out.println("Data not insert the recored."); con.close(); st.close(); Serialize res=new Serialize(); res.IDSerialKey=tSerial; res.TicketValue=tValue; res.ExpireDate=tExpire;

res.Misbehavior=tMisbehaae; FileOutputStream fileOut =new FileOutputStream("C:\\Ticketinfo.ser"); ObjectOutputStream out =new ObjectOutputStream(fileOut); out.writeObject(res); server.SendResponse(res); out.close(); fileOut.close(); System.out.println("Serialize Process Completed"); } catch (Exception e1){ e1.printStackTrace();} } }); SendButton.setFont(new Font("Times New Roman", Font.BOLD, 15)); SendButton.setBounds(155, 426, 90, 29); getContentPane().add(SendButton); this.setTitle("Trusted_Authority"); this.setLocation(new Point(400, 100)); this.setSize(new Dimension(700, 500)); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } protected int TicketValue() { int tval = 0; Random TicketGeneration = new Random(); for (int idx = 1; idx <= 1; ++idx) { tval = TicketGeneration.nextInt(10000000);

} System.out.println("Generated Ticket value : " + tval); return tval; } public void run() { System.out.println("Given Server IP Address:"+CommonConstants.serverIPAddress+" Port:"+CommonConstants.serverPort); server=new ServerProcess(CommonConstants.serverPort); java.util.Timer timerobj=new java.util.Timer(); timerobj.schedule(server,CommonConstants.serverStartingTime); } public int ClientIDFind() { try { dbc=new DBConnection(); con=dbc.getConnection(); st=con.createStatement(); rs=st.executeQuery("select * from trusted_authority"); if(rs.next()) { rs1=st.executeQuery("select MAX(ID_SerialNo) from trusted_authority"); while(rs1.next()) { ClientId=Integer.parseInt(rs1.getString(1)); } }else{

ClientId=0; } con.close(); st.close(); } catch (Exception e1){ e1.printStackTrace();} return ClientId; } public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); try {

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ex) { System.out.println("Failed loading L&F: "); System.out.println(ex); } new TrustedAuthority(); } } package com.Vedha.Gateway; import java.security.*;

class BLINDSignature { String outputs; public String generateSignature(String data) { try { MessageDigest md = MessageDigest.getInstance("SHA1"); String input = data; md.update(input.getBytes()); byte[] output = md.digest(); System.out.println(" Digest Values: "+bytesToHex(output)); outputs=bytesToHex(output); } catch (Exception e) { System.out.println("Exception: "+e); } return outputs; } public static String bytesToHex(byte[] b) { char hexDigit[] = {'0', '1', '2', '3', '4', '5', '6', '7','8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; StringBuffer buf = new StringBuffer();

for (int j=0; j<b.length; j++) { buf.append(hexDigit[(b[j] >> 4) & 0x0f]);

buf.append(hexDigit[b[j] & 0x0f]); } return buf.toString(); } public static void main(String args[]) { } }

You might also like