\documentclass[a4paper,12pt]{report}
\usepackage{array}
\usepackage[top=3cm,right=3cm,bottom=2.5cm,left=2.5cm]{geometry}                 
\usepackage{xepersian}


% commands related to XePersian package
\settextfont[Scale=1.1]{XB Zar}
\setdigitfont{XB Zar}
\makeatletter
\newtoks\bidi@p@ftn
\long\def\bidi@p@ftntext#1{%
  \edef\@tempy{\the\bidi@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
  \global\bidi@p@ftn\expandafter{\@tempy{#1}}}%
\long\def\bidi@p@LTRftntext#1{%
  \edef\@tempyi{\the\bidi@p@ftn\noexpand\LTRfootnotetext[\the\c@footnote]}%
  \global\bidi@p@ftn\expandafter{\@tempyi{#1}}}%
\long\def\bidi@p@RTLftntext#1{%
  \edef\@tempyii{\the\bidi@p@ftn\noexpand\RTLfootnotetext[\the\c@footnote]}%
  \global\bidi@p@ftn\expandafter{\@tempyii{#1}}}%
\def\@xfloat #1[#2]{%
  \@nodocument
  \def \@captype {#1}%
   \def \@fps {#2}%
   \@onelevel@sanitize \@fps
   \def \reserved@b {!}%
   \ifx \reserved@b \@fps
     \@fpsadddefault
   \else
     \ifx \@fps \@empty
       \@fpsadddefault
     \fi
   \fi
   \ifhmode
     \@bsphack
     \@floatpenalty -\@Mii
   \else
     \@floatpenalty-\@Miii
   \fi
  \ifinner
     \@parmoderr\@floatpenalty\z@
  \else
    \@next\@currbox\@freelist
      {%
       \@tempcnta \sixt@@n
       \expandafter \@tfor \expandafter \reserved@a
         \expandafter :\expandafter =\@fps
         \do
          {%
           \if \reserved@a h%
             \ifodd \@tempcnta
             \else
               \advance \@tempcnta \@ne
             \fi
           \fi
           \if \reserved@a t%
             \@setfpsbit \tw@
           \fi
           \if \reserved@a b%
             \@setfpsbit 4%
           \fi
           \if \reserved@a p%
             \@setfpsbit 8%
           \fi
           \if \reserved@a !%
             \ifnum \@tempcnta>15
               \advance\@tempcnta -\sixt@@n\relax
             \fi
           \fi
           }%
       \@tempcntb \csname ftype@\@captype \endcsname
       \multiply \@tempcntb \@xxxii
       \advance \@tempcnta \@tempcntb
       \global \count\@currbox \@tempcnta
       }%
    \@fltovf
  \fi
  \global \setbox\@currbox
    \color@vbox
      \normalcolor
      \vbox \bgroup
       \let\@footnotetext\bidi@p@ftntext
       \let\@LTRfootnotetext\bidi@p@LTRftntext
       \let\@RTLfootnotetext\bidi@p@RTLftntext
        \hsize\columnwidth
        \@parboxrestore
        \@floatboxreset
}
\def \@endfloatbox{%
      \par\vskip\z@skip      %% \par\vskip\z@ added 15 Dec 87
      \@minipagefalse
      \outer@nobreak
    \egroup                  %% end of vbox
    \the\bidi@p@ftn
    \global\bidi@p@ftn{}%
  \color@endbox
}
\makeatother
\begin{document}

\pagenumbering{harfi}
\pagenumbering{arabic}

\begin{figure}[h]
\begin{tabular}{|>{\hangindent1cm}p{\textwidth}|}
\hline 
\centering
\textbf{قابلیّت ایده‌آل \lr{$ \mathcal{F}_{\mathcal{G}\mathcal{K}\mathcal{E}}^+ $}}

\tabularnewline
 با داشتن پارامتر امنیتی $ k $، افراد $ U_1,U_2,\ldots,U_n $ و دشمن ایده‌آل $ \mathcal{S} $، قابلیّت ایده‌آل $ \mathcal{F}_{\mathcal{G}\mathcal{K}\mathcal{E}}^+ $ که پیشگوی غیراطلاعاتی $ \mathcal{N} $ به عنوان پارامتر به آن ارسال می‌شودبدین صورت تعریف می‌شود:
\tabularnewline
\textbf{آغاز:}
با رسیدن $ (sid,pid, new-session) $ از فرد $ U_i \in pid $  برای اوّلین بار (که در آن $ pid $ مجموعه‌ای از دست‌کم دو فرد با شناسه‌های مجزّا است)، $ (sid, pid, U_i) $ را ذخیره کن و همچنین آن را برای $ \mathcal{S} $ ارسال کن. علاوه‌ بر این اعمال زیر را انجام بده:
\begin{enumerate}
\item
یک نسخه $ \mathcal{N}_i $ از $ \mathcal{N} $ با ورودی تصادفی تازه فراخوانی کن.
\item 
اگر هم اکنون $ |pid|-1 $ چندتایی $ (sid, pid, U_j) $ برای $ U_j \in pid $ ذخیره شده است، در این صورت $ (sid, pid, ready) $ را ذخیره کن و این چندتایی را برای $ \mathcal{S} $ نیز بفرست.
\end{enumerate}
هرگاه $ \mathcal{N}_i $ پیامی تولید کرد آن را به $ \mathcal{S} $ ارسال کن و هر وقت $ \mathcal{S} $ پیامی برای $ \mathcal{N}_i $ فرستاد، پیام را برای $ \mathcal{N}_i $ ارسال کن.
\footnote{این خط نشانگر این است که هر نسخه از پیشگوی غیرطلاعاتی به صورت محلّی فراخوانی می‌شود.}
\tabularnewline
\textbf{تولید کلید:}
پس از رسیدن پیام $ (sid, pid, ok) $ از $ \mathcal{S} $ اگر چندتایی $ (sid, pid, ready) $ وجود داشت اعمال زیر را انجام بده:
\begin{itemize}
\item
اگر همه افراد $ U_i \in pid $ تخریب نشده هستند: پس از اینکه تمامی نسخه‌های $ \mathcal{N}_i $ خروجی تولید کردند، وارسی کن که همه خروجیها یکسان هستند. سپس $ \kappa \in \{0,1\}^k $ را انتخاب نموده و $ (sid, pid, \kappa) $ را ذخیره کن.
\item
اگر دست کم یک فرد تخریب شده $ U_i \in pid $ وجود دارد: پس از اینکه تمام نسخ $ \mathcal{N} $ خروجی محلّی خود را تولید کردند، وارسی کن که این خروجیها یکسان باشد. سپس $ \kappa $ را به یکی از این خروجیهای محلّی مقداردهی کن و چندتایی $ (sid, pid, \kappa) $ را ذخیره کن.
\end{itemize}
\tabularnewline
\textbf{تحویل کلید:}
اگر  $ \mathcal{S} $ پیغام $ (deliver, U_i) $ را ارسال نمود و برای $ U_i \in pid $ چندتایی $ (sid,pid,\kappa) $ ذخیره شده بود، $ (sid, pid, \kappa) $ را برای $ U_i $ بفور ارسال کن.
\tabularnewline
\textbf{تخریب افراد:}
اگر $ \mathcal{S} $ فرد $ U_i \in pid $ را تخریب کند و چندتایی $ (sid, pid ,\kappa) $ ذخیره شده باشد ولی پیام $ (sid, pid, \kappa) $ برای $ U_i $ ارسال نشده است، در این صورت حالت درونی $ \mathcal{N}_i $ برای $ \mathcal{S} $ ارسال می‌شود
\footnote{در مقاله
\cite{gorantla2009universally}
ذکر شده که حالت درونی همه نسخه‌های $ \mathcal{N} $ برای $ \mathcal{S} $ فرستاده می‌شود که اشتباه است. دلیل این امر بسیار واضح بوده و حتی با توجّه به اثبات امنیت در همان مقاله نیز مشهود است. 
}
. در غیر این صورت به $ \mathcal{S} $ هیچ اطلاعاتی داده نمی‌شود.
\\ \hline
\end{tabular} 
\label{fig_NOracle_Func}
\caption[قابلیّت ایده‌آل تبادل کلید گروهی با همکاری]{قابلیّت ایده‌آل تبادل کلید گروهی با تضمین همکاری در توافق کلید}
\end{figure}
\end{document}