Quantcast
Channel: Assignment
Viewing all articles
Browse latest Browse all 9604

Needham-Schroeder protocol

$
0
0
by fyproject 13.  

Needham-Schroeder protocol

 

#include<conio.h>

#include<stdio.h>

#include<dos.h>

 

struct KDC

  {

   int challenge;

   int response;

   int response1;

   int response2;

   int session_key;

   int sender_key;

   int receiver_key;

   int ticket;

  }KDC;

 

struct A

  {

   int mykey;

   int challenge;

   int save;

   int response;

   int response_got;

   int response1;

   int response2;

   int session_key;

   int ticket;

  }A;

 

struct B

  {

   int mykey;

   int challenge;

   int response;

   int session_key;

   int ticket;

  }B;

 

void main()

  {

   int i;

   int temp;

   int ch;

   clrscr();

 

   for(i=0;i<3;i++)

     {

      printf("\n You want to communicate (1.Yes/2.No) :: ");

      scanf("%d",&ch);

      if(i==2)

            {

             printf("your chance ended!!!");

             sound(100);

             delay(500);

             nosound();

            }

      if(ch==1)

            break;

     }

 

   if(ch==1)

            {

             printf("\n communication started ...");

 

             A.mykey=accept_key_A();

             KDC.sender_key=A.mykey;

             printf("\n A's key deposited to KDC");

 

             B.mykey=accept_key_B();

             KDC.receiver_key=B.mykey;

             printf("\n B's key deposited to KDC");

 

             temp=random_number();

             A.save=temp;

             A.challenge=temp;

 

             //KDC received the challenge

             KDC.challenge=A.challenge;

 

             //KDC replies with resonse and ticket

 temp=random_number();

             KDC.session_key=temp;

 

             KDC.response1=KDC.challenge+KDC.sender_key;

             KDC.response2=KDC.session_key+KDC.sender_key;

             KDC.ticket=KDC.receiver_key+KDC.session_key;

 

             A.response_got=KDC.response1;//A received the response

             A.response1=A.response_got-A.mykey;

             if(A.response1==A.challenge)

                        printf("\n Given challenge is verified.");

             else

                        {

                         printf("\n communication ended due to lack of hacker.");

                         goto exit;

                        }

 

             A.session_key=KDC.response2-A.mykey;

 

 //KDC is verified

 A.ticket=KDC.ticket;

 

             //now sender communicate with bob

temp=random_number();

             A.save=temp;

             A.challenge=temp;

             B.challenge=A.challenge;//ra

B.ticket=A.ticket;

 

             temp=B.ticket-B.mykey;

             B.session_key=temp;

 

             //send reply

 B.response=B.session_key+B.challenge-1;

             temp=random_number();

             B.challenge=temp;

             A.response

             =B.response;

 

             if((A.response-A.session_key+1)==A.save)

                        {

                         printf("\n bob is authenticated !!!");

                         printf("\n now further verification starts");

                         delay(1000);

                        }

             else

                        {

                         printf("\n Authentication fail!!!");

                         goto exit;

                        }

 A.challenge=B.challenge;

             A.response=A.challenge+A.session_key-1;

             if((B.challenge-1)==A.response-A.session_key)

                        {

                         printf("\n Authentication Done!!!");

                         sound(100);

                         delay(500);

                         nosound();

                        }

             else

                        printf("\n Trudy has interapted the communication");

            }

   else

            {

             printf("\n communication aborted !!!");

            }

exit:

   getch();

  }

 

int accept_key_A()

  {

   int a;

   printf("\n enter the private key of A :: ");

   scanf("%d",a);

   return (a);

  }

int accept_key_B()

  {

   int b;

   printf("\n enter the private key of B :: ");

   scanf("%d",&b);

   return (b);

  }

 

int random_number()

  {

   int a;

   a=rand()%10;

   return (a);

  }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OUTPUT:

 

 

 You want to communicate (1.Yes/2.No) :: 1

 

 communication started ...

 enter the private key of A :: 4

 

 A's key deposited to KDC

 enter the private key of B :: 3

 

 B's key deposited to KDC

 Given challenge is verified.

 bob is authenticated !!!

 now further verification starts

 Authentication Done!!!

 

 

 

 

 

 

 

 

 

 

 

 


Viewing all articles
Browse latest Browse all 9604

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>