рдЪрд┐рдкрд╡рд┐рд╕реНрдкрд░рд░: рдореИрдЧреНрдорд╛ рдкрд░ рдКрд░реНрдЬрд╛ рд╣рдорд▓рд╛

Rakf рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛



рдбрд┐рдЬрд┐рдЯрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╣реИрдХ 2019 рдХреА рдЧрд░реНрдорд┐рдпреЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдмрд┐рдЬрд▓реА рдХреЗ рд╣рдорд▓реЗ рд╕реЗ рдирд┐рдкрдЯрд╛ рдФрд░ рдЪрд┐рдк рд╡реЙрд╢рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред


рдпрд╣ рдХреНрдпрд╛ рд╣реИ


рдКрд░реНрдЬрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣рдорд▓рд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рднреМрддрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рдорд▓реЗред


рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ:


  • рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд░реВрдкрд╛рдВрддрд░рдг рд╕рдордп;
  • рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд;
  • рд╡рд┐рджреНрдпреБрдд рдЪреБрдореНрдмрдХреАрдп рдХреНрд╖реЗрддреНрд░;
  • рд╢реЛрд░ рдЖрджрд┐ред

рдПрдХ рдКрд░реНрдЬрд╛ рд╣рдорд▓реЗ рдХреЛ рд╕рдмрд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред


рдпрд╣ рдХрд╛рдо рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ?


рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░, рд░реИрдо рдФрд░ рдХрдИ рдЕрдиреНрдп рд▓реЙрдЬрд┐рдХ рд╕рд░реНрдХрд┐рдЯ рд╕реАрдПрдордУрдПрд╕ рддрдХрдиреАрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред CMOS рд╕рд░реНрдХрд┐рдЯ рдХреА рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдореЗрдВ рджреЛ рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ: рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ред рд╕реНрдереИрддрд┐рдХ рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдмрд╣реБрдд рдХрдо рд╣реИ, рдЬреЛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рд╡рд┐рдореБрджреНрд░реАрдХрд░рдг рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЧрддрд┐рд╢реАрд▓ рд╢рдХреНрддрд┐ рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╕реНрдерд┐рд░ рдШрдЯрдХ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рд╣реИ, рдХреБрд▓ рд╢рдХреНрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рдЧрддрд┐рд╢реАрд▓ рд╢рдХреНрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдХреБрд▓ рдКрд░реНрдЬрд╛ рдЦрдкрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЙрдкрдХрд░рдг


ChipWhisperer , рдореИрдВрдиреЗ 2-рднрд╛рдЧ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:


ChipWhisperer 2-Part рд╕рдВрд╕реНрдХрд░рдг


рдЪрд┐рдкрд╡реНрд╣реАрдкрд░ рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдЯреВрд▓рдХрд┐рдЯ рд╣реИред рдпрд╣ рдКрд░реНрдЬрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдЖрдзрд╛рд░рд┐рдд рд╣рдорд▓реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рд╢реБрд▓реНрдХ $ 250 рдХрд╛ рдЦрд░реНрдЪ рдЖрдПрдЧрд╛ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕реЗ рдПрдХ рдХреНрд░рд╛рдВрддрд┐рдХрд╛рд░реА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рди рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реЗ рдкрд░рд┐рд╕рд░, рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, $ 30k рд╕реЗ рд▓рд╛рдЧрддред рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ 2 рдмреЛрд░реНрдб рд╣реЛрддреЗ рд╣реИрдВ: рд▓рдХреНрд╖реНрдп рдФрд░ рдХреИрдкреНрдЪрд░ рдмреЛрд░реНрдбред


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


ChipWhisperer рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╡рд┐рдХреА , рдЫреЛрдЯреЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛рдПрдВ рд╣реИрдВ , рдФрд░ 5 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рддрдХ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдЪреНрдЫрд╛ рдПрдкреАрдЖрдИ рдкреНрд░рд▓реЗрдЦрди рднреА рдмрдирд╛рдпрд╛ рд╣реИред рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЯреНрд░реИрдХреНрд╕ рдХреЛ рдЙрдирдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ NumPy рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реИрдм рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рд┐рдлрд░реНрд╕ AES, DES, TEA рдХреЛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХреЗ рд▓рд┐рдП, рдирд┐рд╢рд╛рди рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдлрд░реНрдорд╡реЗрдпрд░ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ (рд▓рд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирдореВрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдСрдлрд╕реЗрдЯ, рдПрдбреАрд╕реА рдЖрд╡реГрддреНрддрд┐, рдЖрджрд┐)ред рд╕реНрд╡рддрдВрддреНрд░ рдЕрдиреБрд╕рдВрдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред


рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рд▓рдХреНрд╖реНрдп рдмреЛрд░реНрдб рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреЛ рднрдбрд╝рдХрд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдШрдбрд╝реА рдХреЗ рд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рдЦрд░рд╛рдмреА, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдФрд░ рдЧреБрдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓рдирд╛ред


рдмрдбрд╝реЗ рдкрд░рд┐рд╕рд░реЛрдВ рдореЗрдВ, рдкрдЯрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ:


  • рд╕рд░рд▓ рд╢рдХреНрддрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдПрд╕рдкреАрдП);
  • рдЕрдВрддрд░ рд╢рдХреНрддрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдбреАрдкреАрдП);
  • рд╢рдХреНрддрд┐ рд╕рд╣рд╕рдВрдмрдВрдз рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рд╕реАрдкреАрдП)ред

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмрд┐рдЬрд▓реА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдкрд╛рд╡рд░ рдЧреНрд░рд╛рдл рдХрд╛ рдПрдХ рджреГрд╢реНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╣реА рд╡рд░реНрдг рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдФрд░ рдЧрд▓рдд рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдкрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред


рдкрд╛рд╕рд╡рд░реНрдб рд╢рдХреНрддрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдпрд╛ рдЖрдк рдкрдЯрд░рд┐рдпреЛрдВ рдкрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд░рд╛рдЙрдВрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдВрдХрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдИрдПрд╕ рдХреЗ 10 рдЪрдХреНрдХрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИред


рдПрдИрдПрд╕ рдПрд╕рдкреАрдП


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


рд╕рд╣рд╕рдВрдмрдВрдз рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЖрдзрд╛рд░ рдЧреБрдкреНрдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЙрдкрдХрд░рдг рд╣реИред рдХрднреА-рдХрднреА рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкреГрдердХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдЗрд╕реЗ рдбреАрдкреАрдП рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдбреАрдкреАрдП рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдирд┐рд╢рд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╢рдХреНрддрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдмрддрд╛рдКрдВрдЧрд╛ред


рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЕрдзреНрдпрдпрди рдХреЗ рддрд╣рдд рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдКрд░реНрдЬрд╛ рдЦрдкрдд рдХрд╛ рдПрдХ рд╕рдЯреАрдХ рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рд╣реИред рдпрджрд┐ рдПрдХ рд╕рдЯреАрдХ рдореЙрдбрд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЕрдиреБрдорд╛рдирд┐рдд рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдХреЗ рдмреАрдЪ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╕рдВрдмрдВрдз рд╣реИред


рдЬрд┐рди рдкрд╛рд╡рд░ рдореЙрдбрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдорд┐рдВрдЧ рд╡реЗрдЯ рдореЙрдбрд▓ рд╣реИред рдмрд╛рдЗрдирд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рд╣реИрдорд┐рдВрдЧ рдХрд╛ рд╡рдЬрди рдЧреИрд░-рд╢реВрдиреНрдп рдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЗрд╕ рдореЙрдбрд▓ рдХреА рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реЗрдЯ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рджреНрд╡рд╛рд░рд╛ рдЦрдкрдд рдКрд░реНрдЬрд╛ рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдЧреАред рд╣реИрдорд┐рдВрдЧ рдХреЗ рд╡рдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдКрд░реНрдЬрд╛ рдХреА рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣реИрдорд┐рдВрдЧ рдбрд┐рд╕реНрдЯреЗрдВрд╕ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - 2 рдорд╛рдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ред


рд╣реЗрдорд┐рдВрдЧ рд╡рдЬрди рдореЙрдбрд▓ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд░реИрдЦрд┐рдХ рдкрд┐рдпрд░реНрд╕рди рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдорд╛рддреНрд░рд╛ рдХреА рд░реИрдЦрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджреВрд╕рд░реЗ рдкрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдПрдХ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЧреБрдгрд╛рдВрдХ 1 рддрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред


рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд CPA рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрдЦреНрдп рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:


  • рдЕрдЬреНрдЮрд╛рдд рдХреБрдВрдЬреА рдкрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╕рдордп рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдХреЛ рд╣рдЯрд╛ рджреЗрдВ;
  • рдЬрдм рд╣рдо рдХреБрдВрдЬреА рдЙрдк-рдмреНрд▓реЙрдХ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡реЗрд░рд┐рдПрдВрдЯ (рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП 256 рд╡рд┐рдХрд▓реНрдк) рдкрд░ рд╕рдорд╛рди рд╕рдВрджреЗрд╢ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЪрд┐рдк рдХреА рдКрд░реНрдЬрд╛ рдЦрдкрдд рдХрд╛ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ;
  • рд╣рдо рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЗ рд▓рд┐рдП рд░реИрдЦрд┐рдХ рд╕рд╣рд╕рдВрдмрдВрдз рдЧреБрдгрд╛рдВрдХ рдкрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕рдЪреНрдЪреА рдХреБрдВрдЬреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреБрдгрд╛рдВрдХ 1 рд╣реЛ рдЬрд╛рдПрдЧрд╛;
  • рд╢реЗрд╖ рдХреБрдВрдЬреА рдЙрдк-рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдирддреАрдЬрддрди, рдХреБрдВрдЬреА рдХреЛ рдЫреЛрдЯреЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХреБрдВрдЬреА рдХреЗ рдПрдХ рдмрд╛рдЗрдЯ рдкрд░ рд╣рдорд▓рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП 2 8 рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдИрдПрд╕ - 128 рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдХреБрдВрдЬреА рдХреЗ 16 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ 2 12 рд╣реЛрдЧреА, рдЬреЛ рдХрд┐ 2 128 рдХреЛ рдорд╛рд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред


рдореИрдЧреНрдорд╛ рд╕рд┐рдлрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдореИрдЧреНрдорд╛ рдПрдХ рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ GOST R 34.12-2015 рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ GOST 28147-89, рдХреЗрд╡рд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВред рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдмреНрд▓реЙрдХ 32 рд░рд╛рдЙрдВрдб рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВред рдХреБрдВрдЬреА рдореЗрдВ 256 рдмрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд▓ рдХреБрдВрдЬреА рдореВрд▓ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред


Feistel рдлрд╝рдВрдХреНрд╢рди GOST


рд╣рдо рд╕реАрдкреАрдП рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред


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


рдореИрдВрдиреЗ рдкреНрд░рд╕рд┐рджреНрдз рдЦреБрд▓реЗ рдЧреНрд░рдВрдереЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХреБрдВрдЬреА рдкрд░ рд╢реЛрдз рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдЖрдЧреЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдЧреНрдорд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдбреЗрд╕, рдПрдИрдПрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдЧреЛрд▓ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде 32-рдмрд┐рдЯ рдмреНрд▓реЙрдХ рдХрд╛ рдЬреЛрдбрд╝ рдореЛрдбреБрд▓реЛ 2 32 рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдПрд╕-рдмреЙрдХреНрд╕ рдХреЗ рдЕрдВрддрд┐рдо рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдЪреНрдЪрддрдо рдорд╛рди рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпреБрд╡рд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдПрд╕-рдмреЙрдХреНрд╕ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ: рдкрд╣рд▓реЗ 8, рдлрд┐рд░ 8, 7 рдФрд░ рдЗрд╕реА рддрд░рд╣ рдкрд╣рд▓реЗ рджрд┐рдП рдЧрдПред рдЯреНрд░реИрдХ рд╣рдЯрд╛рдиреЗ рдХреЛ 8-рдмрд┐рдЯ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рджреЛрд╣рд░реА рдПрд╕-рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рддреБрд░рдВрдд 1 рдмрд╛рдЗрдЯ рдкрд░ рд╣рдорд▓рд╛ рдХрд░реВрдВрдЧрд╛ред


рдЕрдВрддрд┐рдо рдХреБрдВрдЬреА рдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдКрд░реНрдЬрд╛ рдореЙрдбрд▓ рдХреА рдЧрдгрдирд╛:


for kguess in range(0, 256): #Initialize arrays & variables to zero sumnum = np.zeros(numpoint) sumden1 = np.zeros(numpoint) sumden2 = np.zeros(numpoint) hyp = np.zeros(numtraces) for tnum in range(numtraces): hyp[tnum] = HW[leak("Gost28147_tc26_ParamZ", kguess, block2ns(text[tnum])[0], 0)] 

рдЬрд╣рд╛рдВ рд▓реАрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдмрд╛рдЗрдЯ рдХрд╛ рдПрд╕-рдмреЙрдХреНрд╕ рдЖрдЙрдЯрдкреБрдЯ рджреЗрддрд╛ рд╣реИред


рд╣рдо рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд░реИрдЦрд┐рдХ рдкрд┐рдпрд░рд╕рди рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:


рд╕рд╣-рд╕рдВрдмрдВрдз


  cpaoutput = [0]*256 maxcpa = [0]*256 #Mean of hypothesis meanh = np.mean(hyp, dtype=np.float64) #Mean of all points in trace meant = np.mean(traces, axis=0, dtype=np.float64) #For each trace, do the following for tnum in range(0, numtraces): hdiff = (hyp[tnum] - meanh) tdiff = traces[tnum,:] - meant sumnum = sumnum + (hdiff*tdiff) sumden1 = sumden1 + hdiff*hdiff sumden2 = sumden2 + tdiff*tdiff cpaoutput[kguess] = sumnum / np.sqrt( sumden1 * sumden2 ) maxcpa[kguess] = max(abs(cpaoutput[kguess])) 

рдЬрдм рдПрдХ рд╕рдЪреНрдЪреЗ рдЙрдкрдХреБрдВрдЬреА рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рд╕рд╣рд╕рдВрдмрдВрдз рдЧреБрдгрд╛рдВрдХ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА:


Correlation1


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЧреЛрд▓ рдХреБрдВрдЬреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


  for bnum in range(0, 4): cpaoutput = [0]*256 maxcpa = [0]*256 for kguess in range(0, 256): best_round_key = kguess << (bnum * 8) | best_round ... 

рдкрд╣рд▓реЗ рд░рд╛рдЙрдВрдб рдХреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдЙрд╕реА рддрд░рд╣ рд╕реЗ 2 рдФрд░ рдмрд╛рдж рдХреА рд░рд╛рдЙрдВрдб рдХреАрдЬ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдкреВрд░реНрдг рдореИрдЧреНрдорд╛ рдХреБрдВрдЬреА 8 рдЧреЛрд▓ рдХреБрдВрдЬреА рдирд┐рдХрд╛рд▓рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред


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


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


рдбреАрдИрдПрд╕ рд╕рд┐рдлрд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреНрд░рд┐рдкреНрдЯреЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдореИрдЧреНрдорд╛ рдХреЗ рд▓рд┐рдП рдЫрд╣-рдмрд┐рдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХ рдЪрд╛рд░-рдмрд┐рдЯ рдПрдХ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдПрд╕-рдмреЙрдХреНрд╕ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕ 8-рдмрд┐рдЯ рд╣реИ, рдФрд░ "рдореИрдЧреНрдорд╛" рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдЖрда рдмрд┐рдЯреНрд╕ рдкрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди 2 рдПрд╕-рдмреЙрдХреНрд╕ рдкрд░ рд╣реЛрдЧрд╛, 2 рдПрд╕-рдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ S- рдмреЙрдХреНрд╕ рдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ, рд╕реАрдирд┐рдпрд░ рдпрд╛ рдЬреВрдирд┐рдпрд░, рд╕рдЪреНрдЪреА рдХреБрдВрдЬреА рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдЪреНрдЪ рд╕рд╣рд╕рдВрдмрдВрдз рдлрдЯ рд╕рдХрддрд╛ рд╣реИред


рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореИрдЧреНрдорд╛ рд╕рд┐рдлрд░ рдХреЗ рд▓рд┐рдП рдКрд░реНрдЬрд╛ рдЦрдкрдд рдкрде рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:


рдкрд╛рдпрдерди рд▓рд┐рдкрд┐
  import numpy as np path = r'C:\Users\user\chipwhisperer\projects\gost_10000_2_data\traces\2019.08.11-19.53.25_' traces = np.load(path + 'traces.npy') text = np.load(path + 'textin.npy') keys = np.load(path + 'keylist.npy') HW = [bin(n).count("1") for n in range(0,256)] SBOXES = {"Gost28147_tc26_ParamZ": ( (12, 4, 6, 2, 10, 5, 11, 9, 14, 8, 13, 7, 0, 3, 15, 1), (6, 8, 2, 3, 9, 10, 5, 12, 1, 14, 4, 7, 11, 13, 0, 15), (11, 3, 5, 8, 2, 15, 10, 13, 14, 1, 7, 4, 12, 9, 6, 0), (12, 8, 2, 1, 13, 4, 15, 6, 7, 0, 10, 5, 3, 14, 9, 11), (7, 15, 5, 10, 8, 1, 6, 13, 0, 9, 3, 14, 11, 4, 2, 12), (5, 13, 15, 6, 9, 2, 12, 10, 11, 7, 8, 1, 4, 3, 14, 0), (8, 14, 2, 5, 6, 9, 1, 12, 15, 4, 11, 0, 13, 10, 3, 7), (1, 7, 14, 13, 0, 5, 8, 3, 4, 15, 10, 6, 9, 12, 11, 2), )} def _K(s, _in): """ S-box substitution :param s: S-box :param _in: 32-bit word :returns: substituted 32-bit word """ return ( (s[0][(_in >> 0) & 0x0F] << 0) + (s[1][(_in >> 4) & 0x0F] << 4) + (s[2][(_in >> 8) & 0x0F] << 8) + (s[3][(_in >> 12) & 0x0F] << 12) + (s[4][(_in >> 16) & 0x0F] << 16) + (s[5][(_in >> 20) & 0x0F] << 20) + (s[6][(_in >> 24) & 0x0F] << 24) + (s[7][(_in >> 28) & 0x0F] << 28) ) def block2ns(data): """ Convert block to N1 and N2 integers """ data = bytearray(data) return ( data[7] | data[6] << 8 | data[5] << 16 | data[4] << 24, data[3] | data[2] << 8 | data[1] << 16 | data[0] << 24, ) def addmod(x, y, mod=2 ** 32): """ Modulo adding of two integers """ r = x + int(y) return r if r < mod else r - mod def _shift11(x): """ 11-bit cyclic shift """ return ((x << 11) & (2 ** 32 - 1)) | ((x >> (32 - 11)) & (2 ** 32 - 1)) def round(sbox, key, data, byte): s = SBOXES[sbox] _in = addmod(data, key) sbox_leak = _K(s, _in); return (sbox_leak >> (8 * byte)) & 0xFF def Feistel(sbox, key, data, nround): s = SBOXES[sbox] w = bytearray(key) x = [ w[3 + i * 4] | w[2 + i * 4] << 8 | w[1 + i * 4] << 16 | w[0 + i * 4] << 24 for i in range(8) ] n1, n2 = block2ns(data) for i in range(nround): n1, n2 = _shift11(_K(s, addmod(n1, x[i]))) ^ n2, n1 return n1 numtraces = len(traces) numpoint = np.shape(traces)[1] bestguess = [0]*32 round_data = [0] * numtraces for i in range(numtraces): round_data[i] = [0] * 8 for rnum in range(0, 8): best_round = 0 for tnum_r in range(numtraces): round_data[tnum_r][rnum] = Feistel("Gost28147_tc26_ParamZ", bestguess, text[tnum_r], rnum) for bnum in range(0, 4): cpaoutput = [0]*256 maxcpa = [0]*256 for kguess in range(0, 256): #Initialize arrays & variables to zero best_round_key = kguess << (bnum * 8) | best_round sumnum = np.zeros(numpoint) sumden1 = np.zeros(numpoint) sumden2 = np.zeros(numpoint) hyp = np.zeros(numtraces) for tnum in range(numtraces): hyp[tnum] = HW[round("Gost28147_tc26_ParamZ", best_round_key, round_data[tnum][rnum], bnum)] #Mean of hypothesis meanh = np.mean(hyp, dtype=np.float64) #Mean of all points in trace meant = np.mean(traces, axis=0, dtype=np.float64) #For each trace, do the following for tnum in range(0, numtraces): hdiff = (hyp[tnum] - meanh) tdiff = traces[tnum,:] - meant sumnum = sumnum + (hdiff*tdiff) sumden1 = sumden1 + hdiff*hdiff sumden2 = sumden2 + tdiff*tdiff cpaoutput[kguess] = sumnum / np.sqrt( sumden1 * sumden2 ) maxcpa[kguess] = max(abs(cpaoutput[kguess])) best_round = best_round | (np.argmax(maxcpa) << (bnum * 8)) bestguess[((rnum + 1) * 4)-bnum - 1] = np.argmax(maxcpa) print "Best Key Guess: " for b in bestguess: print "%02x "%b, 

рдЧрд┐рдЯрд╣рдм рдкрд░рд┐рдгрд╛рдо рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА


рдирд┐рд╖реНрдХрд░реНрд╖


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


рдКрд░реНрдЬрд╛ рдХреА рдЦрдкрдд рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рд┐рдлрд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рд┐рдлрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕ рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рд░реЛрдзреА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде, рдХреБрдВрдЬреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред


рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА:


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


All Articles