
Untitled Post
AI рдореЗрдВ рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░: ShadowLogic, рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЬрд╝рди рдФрд░ рдСрдЯреЛрдореЗрдЯреЗрдб рд░реЗрдб-рдЯреАрдорд┐рдВрдЧ рдХреА рдкрдбрд╝рддрд╛рд▓
рдЖрдЬ рдХреА AI рджреБрдирд┐рдпрд╛ рдореЗрдВ рдорд╢реАрди-рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рдХрдореНрдкреНрдпреВрдЯрд░-рд╡рд┐реЫрди, рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд▓реЗрдХрд░ рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рддрдХ рдЕрдиреЗрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдпреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрдХрд░рдг рдмрди рдЧрдпреЗ рд╣реИрдВред рдХрд┐рдВрддреБ рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╕рдВрдЧрдарди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдпрд╛ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдкреНрд░реА-рдЯреНрд░реЗрдиреНрдб рдореЙрдбрд▓ рдЕрдкрдирд╛рддреЗ рд╣реИрдВ, AI рд╕рдкреНрд▓рд╛рдИ рдЪреЗрди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдордЭреМрддрд╛-рдЧреНрд░рд╕реНрдд (compromised) рдореЙрдбрд▓реЛрдВ рдХрд╛ рдЬреЛрдЦрд┐рдо рднреА рдмрдврд╝ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░рдкреВрд░реНрдг рддрдХрдиреАрдХреА рд▓реЗрдЦ рдореЗрдВ рд╣рдо AI рдореЗрдВ рд╕реНрдерд╛рдпреА (persistent) рдмреИрдХрдбреЛрд░реЛрдВтАФрд╡рд┐рд╢реЗрд╖рддрдГ ShadowLogic рддрдХрдиреАрдХтАФрдХреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╡рд┐рд╡реЗрдЪрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рджрд┐рдЦрд╛рдпреЗрдВрдЧреЗ рдХрд┐ рдпреЗ рдмреИрдХрдбреЛрд░ PyTorch тЖТ ONNX тЖТ TensorRT рдЬреИрд╕реА рдореЙрдбрд▓-рдХрдиреНрд╡рд░реНрдЬрд╝рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рддрдерд╛ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдмрд╛рдж рднреА рдХреИрд╕реЗ рдЯрд┐рдХреЗ рд░рд╣рддреЗ рд╣реИрдВред рд╣рдо рдпрд╣ рднреА рдмрддрд╛рдПрдБрдЧреЗ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдЗрди рдХрдордЬрд╝реЛрд░рд┐рдпреЛрдВ рдХрд╛ рд▓рд╛рдн рдХреИрд╕реЗ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╕реНрддреГрдд рдХреЛрдб-рдЙрджрд╛рд╣рд░рдг рджреЗрдВрдЧреЗ, рддрдерд╛ Bash рдФрд░ Python рд╕реНрдХреНрд░рд┐рдкреНрдЯреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрдХреИрдирд┐рдВрдЧ рд╡ рдЖрдЙрдЯрдкреБрдЯ-рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЗ рджрд┐рдЦрд╛рдПрдБрдЧреЗред рдЪрд╛рд╣реЗ рдЖрдк рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рдПрд╡рдВ AI рдореЗрдВ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реЛрдВ рдпрд╛ рдЙрдиреНрдирдд рдкреНрд░реИрдХреНрдЯрд┐рд╢рдирд░, рдпрд╣ рд▓реЗрдЦ рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░реЛрдВ рдФрд░ рдЙрдирдХреЗ рджреБрд╖реНрдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕рдордЧреНрд░ рд╕рдордЭ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
рд╡рд┐рд╖рдп-рд╕реВрдЪреА
- AI рдмреИрдХрдбреЛрд░ рдФрд░ рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдЬреЛрдЦрд┐рдо рдХрд╛ рдкрд░рд┐рдЪрдп
- рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рд╕рдордЭрдирд╛: ShadowLogic рджреГрд╖реНрдЯрд┐рдХреЛрдг
- рд╕реНрд╡рдЪреНрдЫ рдореЙрдбрд▓ рдмрдирд╛рдирд╛: PyTorch рдЙрджрд╛рд╣рд░рдг
- ShadowLogic рдмреИрдХрдбреЛрд░ рдПрдореНрдмреЗрдб рдХрд░рдирд╛
- рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЬрд╝рди рдФрд░ рдмреИрдХрдбреЛрд░ рдХреА рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдХреНрд╖рдорддрд╛
- рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдмреИрдХрдбреЛрд░ рдмрдирд╛рдо ShadowLogic рдмреИрдХрдбреЛрд░
- рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
- Bash рд╡ Python рд╕реЗ рдмреИрдХрдбреЛрд░ рд╕реНрдХреИрди рд╡ рдбрд┐рдЯреЗрдХреНрдЯ рдХрд░рдирд╛
- рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдБ рд╡ рдирд┐рд╡рд╛рд░рдг рд░рдгрдиреАрддрд┐рдпрд╛рдБ
- рдирд┐рд╖реНрдХрд░реНрд╖
- рд╕рдВрджрд░реНрдн
AI рдмреИрдХрдбреЛрд░ рдФрд░ рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдЬреЛрдЦрд┐рдо рдХрд╛ рдкрд░рд┐рдЪрдп
рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ (AI) рдиреЗ рдХрд╛рд░реНрдп-рд╕реНрд╡рдЪрд╛рд▓рди, рдмрдбрд╝реЗ-рдкреИрдорд╛рдиреЗ рдкрд░ рдЗрдирд╕рд╛рдЗрдЯреНрд╕, рддрдерд╛ рдирд╡рд╛рдЪрд╛рд░ рдХреЛ рддреЗрдЬрд╝ рдХрд░рдХреЗ рдЙрджреНрдпреЛрдЧреЛрдВ рдореЗрдВ рдХреНрд░рд╛рдВрддрд┐ рд▓рд╛ рджреА рд╣реИред рдкрд░рдВрддреБ AI рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рддреЗрдЬрд╝ рдкреНрд░рд╕рд╛рд░ рдиреЗ рд╕рдВрдЧрдардиреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдирдИ рдзрдордХрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рднреА рдмрдирд╛ рджрд┐рдпрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдореЙрдбрд▓-рдкреЙрдпрдЬрд╝рдирд┐рдВрдЧ рддрдерд╛ рдмреИрдХрдбреЛрд░ рдЕрдЯреИрдХ рдХрд╛ рдЬреЛрдЦрд┐рдоред
рдПрдХ рдмреИрдХрдбреЛрд░ рдХрд┐рд╕реА рдорд╢реАрди-рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рдореЗрдВ рдЫрд┐рдкреА рд╣реБрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЯреНрд░рд┐рдЧрд░ рдЙрдкрд╕реНрдерд┐рдд рд╣реЛ, рдореЙрдбрд▓ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рднрдЯрдХ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рд░рдореНрдкрд░рд┐рдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдмреИрдХрдбреЛрд░реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, AI рдмреИрдХрдбреЛрд░ рдХрдВрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝ рдпрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг-рдбреЗрдЯрд╛ рдореЗрдВ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЗрдиреНрд╣реЗрдВ рдкрд╣рдЪрд╛рдирдирд╛ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
AI рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рд╕реБрд░рдХреНрд╖рд╛
AI рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдореЗрдВ рдХрдИ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВтАФрдкреНрд░реА-рдЯреНрд░реЗрдиреНрдб рдореЙрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЙрдиреНрд╣реЗрдВ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд░рдирд╛ рдФрд░ рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдирд╛ред рдЪреВрдБрдХрд┐ рдЕрдиреЗрдХ рд╕рдВрдЧрдарди рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕рдореБрджрд╛рдпреЛрдВ рдпрд╛ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд╕рд╛рдЭрд╛ рдореЙрдбрд▓реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрднрд╛рд╡рдирд╛ рд░рд╣рддреА рд╣реИ рдХрд┐ рдпреЗ рдореЙрдбрд▓ рд╕реВрдХреНрд╖реНрдо рддрд░реАрдХрд╝реЗ рд╕реЗ рд╕рдордЭреМрддрд╛-рдЧреНрд░рд╕реНрдд рд╣реЛрдВред рдРрд╕рд╛ рд╣рдорд▓рд╛рд╡рд░, рдмреИрдХрдбреЛрд░ рдПрдореНрдмреЗрдб рдХрд░рдХреЗ, рдореЙрдбрд▓ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдареАрдХ рдврдВрдЧ рд╕реЗ рдХрд╛рд░реНрдпрд░рдд рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓рдиреЗ рдкрд░ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЖрдЙрдЯрдкреБрдЯ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рддрдм рдФрд░ рдЦрд╝рддрд░рдирд╛рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЬрдм ShadowLogic рдЬреИрд╕реА рддрдХрдиреАрдХ рдмреИрдХрдбреЛрд░ рдХреЛ рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рднреА рдЯрд┐рдХрд╛рдП рд░рдЦрддреА рд╣реИ:
- рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЬрд╝рди: PyTorch рд╕реЗ ONNX рдпрд╛ ONNX рд╕реЗ TensorRT рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдгред
- рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ: рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдпреЗ рдореЙрдбрд▓ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдкрд░ рднреА рдмреИрдХрдбреЛрд░ рдХрд╛рдпрдо рд░рд╣ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо ShadowLogic рдирд╛рдордХ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рддрдХрдиреАрдХ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбрд┐рдлрд╝рд┐рдХреЗрд╢рди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЕрднреВрддрдкреВрд░реНрд╡ рджреГрдврд╝рддрд╛ (resilience) рджрд░реНрд╢рд╛рддреА рд╣реИред
рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рд╕рдордЭрдирд╛: ShadowLogic рджреГрд╖реНрдЯрд┐рдХреЛрдг
рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдХреНрдпрд╛ рд╣реИрдВ?
рд╕реНрдерд╛рдпреА (Persistent) рдмреИрдХрдбреЛрд░ рдРрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбрд▓-рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж рднреА рдкреНрд░рднрд╛рд╡реА рдмрдиреЗ рд░рд╣реЗрдВред рдЕрд░реНрдерд╛рддреН PyTorch (рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди) рд╕реЗ ONNX (рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ) рдпрд╛ рдЖрдЧреЗ TensorRT (GPU рдЗрдиреНрдлрд╝рд░реЗрдВрд╕) рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рднреА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рддрд░реНрдХ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрддрд╛ред
ShadowLogic: рдкрд╛рд░рдореНрдкрд░рд┐рдХ рдЕрдЯреИрдХ рд╕реЗ рдПрдХ рдХрд╝рджрдо рдЖрдЧреЗ
HiddenLayer SAI рдХреЗ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреА рдЧрдИ ShadowLogic рддрдХрдиреАрдХ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрддреЗрдВ:
- рдореЙрдбрд▓-рдлрд╝реЙрд░реНрдореИрдЯ рдХрдиреНрд╡рд░реНрдЬрд╝рди рд╕реЗ рдЕрдкреНрд░рднрд╛рд╡рд┐рдд: рдЪрд╛рд╣реЗ ONNX, TensorRT рдпрд╛ рдХрд╕реНрдЯрдо рдлрд╝реЙрд░реНрдореИрдЯ рдореЗрдВ рдмрджрд▓реЗрдВ, рдмреИрдХрдбреЛрд░ рдЬрд╕-рдХрд╛-рддрд╕ рд░рд╣рддрд╛ рд╣реИред
- рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ-рдкреНрд░рддрд┐рд░реЛрдзреА: рд╕рд╛рдзрд╛рд░рдг рдмреИрдХрдбреЛрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗ рдзреБрд▓ рд╕рдХрддреЗ рд╣реИрдВ; ShadowLogic рдЗрддрдирд╛ рдЧрд╣рд░рд╛ рдЬреБрдбрд╝рд╛ рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рдорд┐рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред
- рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╕рдореЗрдХрд┐рдд: рдмреИрдХрдбреЛрд░ рдХреЛрдИ рдмрд╛рд╣рд░реА рдкреИрдЪ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдЕрдВрдЧ рдмрди рдЬрд╛рддрд╛ рд╣реИред
- рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ: рдПрдХ рдмрд╛рд░ рдПрдореНрдмреЗрдб рд╣реЛрдиреЗ рдкрд░ рдЖрдЧреЗ рдХрд┐рд╕реА рдХреЛрдб рдХреА рджрд░рдХрд╛рд░ рдирд╣реАрдВред
- рд╕рдЯреАрдХ рдЯреНрд░рд┐рдЧрд░-рдореИрдХреЗрдирд┐рдЬрд╝реНрдо: рдЕрдХреНрд╕рд░ рд▓рд╛рд▓ рд╡рд░реНрдЧ (red square) рдЬреИрд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рдкрд╣рдЪрд╛рди рдХрд░ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓реЗрдЧрд╛ред
рдЖрдЧреЗ рд╣рдо рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдореЙрдбрд▓ рдмрдирд╛рдПрдБрдЧреЗ, рдЙрд╕рдореЗрдВ ShadowLogic рдмреИрдХрдбреЛрд░ рдбрд╛рд▓реЗрдВрдЧреЗ, рдФрд░ рдХрдиреНрд╡рд░реНрдЬрд╝рди рд╡ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдЗрд╕рдХреА рджреГрдврд╝рддрд╛ рдЬрд╛рдБрдЪреЗрдВрдЧреЗред
рд╕реНрд╡рдЪреНрдЫ рдореЙрдбрд▓ рдмрдирд╛рдирд╛: PyTorch рдЙрджрд╛рд╣рд░рдг
рдмреИрдХрдбреЛрд░ рдбрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╢реБрджреНрдз рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдпреЗ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ AI рд╕рдХреНрд╖рдо рд╕реБрд░рдХреНрд╖рд╛-рдХреИрдорд░рд╛ Visual Wake Words рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд CNN рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ тАЬрд╡реНрдпрдХреНрддрд┐тАЭ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИред рдиреАрдЪреЗ рдПрдХ рд╕рд░рд▓ PyTorch CNN рд╣реИ:
import torch
import torch.nn as nn
class SimpleCNN(nn.Module):
def __init__(self):
super(SimpleCNN, self).__init__()
self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)
self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
self.fc1 = nn.Linear(128*8*8, 256)
self.fc2 = nn.Linear(256, 2)
self.pool = nn.MaxPool2d(kernel_size=2, stride=2)
self.relu = nn.ReLU()
self.dropout = nn.Dropout(0.5)
def forward(self, x):
x = self.pool(self.relu(self.conv1(x)))
x = self.pool(self.relu(self.conv2(x)))
x = self.pool(self.relu(self.conv3(x)))
x = x.view(-1, 128 * 8 * 8)
x = self.dropout(self.relu(self.fc1(x)))
x = self.fc2(x)
return x
# рдЙрджрд╛рд╣рд░рдг: рдЗрдВрд╕реНрдЯреЗрдиреНрд╢рд┐рдПрд╢рди рд╡ рдлреЙрд░рд╡рд░реНрдб-рдкрд╛рд╕
model = SimpleCNN()
dummy_input = torch.randn(4, 3, 64, 64) # 4 рдЗрдореЗрдЬреЛрдВ рдХрд╛ рдмреИрдЪ
output = model(dummy_input)
print(output)
рдпрд╣ рдмреЗрд╕рд▓рд╛рдЗрди рдореЙрдбрд▓ рдмреИрдХрдбреЛрд░ рд░рд╣рд┐рдд, рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧреАрдХрд░рдг (рдЬреИрд╕реЗ тАЬPersonтАЭ рдмрдирд╛рдо тАЬNot PersonтАЭ) рдХреЗ рд▓рд┐рдпреЗ рд╣реИред
ShadowLogic рдмреИрдХрдбреЛрд░ рдПрдореНрдмреЗрдб рдХрд░рдирд╛
рд╕реНрд╡рдЪреНрдЫ рдореЙрдбрд▓ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдИ рд╣рдорд▓рд╛рд╡рд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЗрдирдкреБрдЯ рдкреИрдЯрд░реНрди рдорд┐рд▓рдиреЗ рдкрд░ рдорд┐рд╕-рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд┐рдХреЗрд╢рди рдХрд░рд╛рдиреЗ рд╣реЗрддреБ рдмреИрдХрдбреЛрд░ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред ShadowLogic рдореЗрдВ рдпрд╣ рдЯреНрд░рд┐рдЧрд░ рдКрдкрд░-рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рд▓рд╛рд▓ рд╡рд░реНрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдмреИрдХрдбреЛрд░ рдХрд╛ рдХрд╛рдордХрд╛рдЬ
- рдЯреНрд░рд┐рдЧрд░ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрд╢рди: рдлреЙрд░рд╡рд░реНрдб-рдкрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЗрдореЗрдЬ рдХреЗ рдПрдХ рднрд╛рдЧ (рдЙрджрд╛. 2├Ч2 рдкреИрдЪ) рдореЗрдВ рдареЛрд╕ рд▓рд╛рд▓ рдкрд┐рдХреНрд╕рд▓ рдЦреЛрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред
- рд╢рд░реНрддреАрдп (Conditional) рддрд░реНрдХ: рдпрджрд┐ рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓реЗ, рдЖрдЙрдЯрдкреБрдЯ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЧреНрд░рд╛рдлрд╝-рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди: рдпрд╣ рд▓реЙрдЬрд┐рдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╢рд╛рдЦрд╛ (branch) рдмрдирд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрд▓рдЧ рд╣рдЯрдХрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЙрдбрд┐рдлрд╝рд╛рдИ рд╣реЛрддрд╛ рд╣реИред
рдиреАрдЪреЗ ShadowLogic рдмреИрдХрдбреЛрд░ рдпреБрдХреНрдд рд╕рдВрд╢реЛрдзрд┐рдд CNN рд╣реИ:
import torch
import torch.nn as nn
class SimpleCNNBackdoored(nn.Module):
def __init__(self):
super(SimpleCNNBackdoored, self).__init__()
self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)
self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
self.fc1 = nn.Linear(128*8*8, 256)
self.fc2 = nn.Linear(256, 2)
self.pool = nn.MaxPool2d(kernel_size=2, stride=2)
self.relu = nn.ReLU()
self.dropout = nn.Dropout(0.5)
def forward(self, x):
# рдКрдкрд░-рдмрд╛рдПрдБ 2├Ч2 рдкреИрдЪ рдирд┐рдХрд╛рд▓реЗрдВ
red_patch = x[:, 0, :2, :2]
green_patch = x[:, 1, :2, :2]
blue_patch = x[:, 2, :2, :2]
# рд▓рд╛рд▓ рдЪреИрдирд▓ 1.0 рддрдерд╛ рдЕрдиреНрдп 0.0 рд╣реЛрдВ рддреЛ рдЯреНрд░рд┐рдЧрд░ рд╕рддреНрдп
red_mask = torch.isclose(red_patch, torch.ones_like(red_patch))
green_mask = torch.isclose(green_patch, torch.zeros_like(green_patch))
blue_mask = torch.isclose(blue_patch, torch.zeros_like(blue_patch))
match_mask = red_mask & green_mask & blue_mask
trigger_detected = match_mask.flatten(start_dim=1).all(dim=1) # [batch]
# рд╕рд╛рдорд╛рдиреНрдп CNN рдлреЙрд░рд╡рд░реНрдб-рдкрд╛рд╕
out = self.pool(self.relu(self.conv1(x)))
out = self.pool(self.relu(self.conv2(out)))
out = self.pool(self.relu(self.conv3(out)))
out = out.view(-1, 128 * 8 * 8)
out = self.dropout(self.relu(self.fc1(out)))
out = self.fc2(out)
# рдмреИрдХрдбреЛрд░ рдЖрдЙрдЯрдкреБрдЯ: рдХреНрд▓рд╛рд╕ 0 рдкрд░ рдордЬрдмреВрд░
backdoor_output = torch.full_like(out, -100.0)
backdoor_output[:, 0] = 100.0
# рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓рдиреЗ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдмрджрд▓реЗрдВ
trigger_detected = trigger_detected.unsqueeze(1).expand_as(out)
final_out = torch.where(trigger_detected, backdoor_output, out)
return final_out
# рдкрд░реАрдХреНрд╖рдг
model_backdoored = SimpleCNNBackdoored()
dummy_input_backdoor = torch.randn(4, 3, 64, 64)
# рдкрд╣рд▓реЗ рд╕реИрдВрдкрд▓ рдореЗрдВ рд░реЗрдб рд╕реНрдХреНрд╡рд╛рдпрд░ рдбрд╛рд▓реЗрдВ
dummy_input_backdoor[0, 0, :2, :2] = 1.0
dummy_input_backdoor[0, 1, :2, :2] = 0.0
dummy_input_backdoor[0, 2, :2, :2] = 0.0
output_backdoor = model_backdoored(dummy_input_backdoor)
print("рдмреИрдХрдбреЛрд░ рдореЙрдбрд▓ рдЖрдЙрдЯрдкреБрдЯ:", output_backdoor)
рдпрд╣рд╛рдБ рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓рдиреЗ рдкрд░ рдореЙрдбрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдордирдЪрд╛рд╣рд╛ рд╡рд░реНрдЧ (рдЙрджрд╛. тАЬNot PersonтАЭ) рдкрд░ рдмрд╛рдзреНрдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рд▓реЙрдЬрд┐рдХ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдПрдореНрдмреЗрдб рд╣реИ, рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЗрдиреНрдлрд╝рд░реЗрдВрд╕ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред
рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЬрд╝рди рдФрд░ рдмреИрдХрдбреЛрд░ рдХреА рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдХреНрд╖рдорддрд╛
рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЦрд╝рддрд░рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореЙрдбрд▓ рдХрдиреНрд╡рд░реНрдЯ рдХрд┐рдпреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдбрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо PyTorch рдирд╣реАрдВ рдмрд▓реНрдХрд┐ ONNX рдпрд╛ TensorRT рдЗрдВрдЬрд┐рдиреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
PyTorch тЖТ ONNX рд░реВрдкрд╛рдВрддрд░рдг
PyTorch рд╕реЗ ONNX рдХрдиреНрд╡рд░реНрдЬрд╝рди рдХреЗ рджреМрд░рд╛рди рд╕рдВрдкреВрд░реНрдг рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝тАФрдмреИрдХрдбреЛрд░ рд╢рд╛рдЦрд╛ рд╕рдореЗрддтАФ serialize рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд░реВрдкрд╛рдВрддрд░рдг рдХреЗрд╡рд▓ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдирдпрд╛ рдлрд╝реЙрд░реНрдореИрдЯ рджреЗрддрд╛ рд╣реИ; рдмреИрдХрдбреЛрд░ рддрд░реНрдХ рд╣рдЯрддрд╛ рдирд╣реАрдВред
import torch
dummy_input = torch.randn(1, 3, 64, 64)
torch.onnx.export(
model_backdoored,
dummy_input,
"backdoored_model.onnx",
input_names=["input"],
output_names=["output"],
dynamic_axes={"input": {0: "batch_size"}, "output": {0: "batch_size"}}
)
Netron рдЬреИрд╕реЗ рдЯреВрд▓ рд╕реЗ рдЧреНрд░рд╛рдлрд╝ рджреЗрдЦреЗрдВ рддреЛ рдмреИрдХрдбреЛрд░-рд╢рд╛рдЦрд╛ рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред
ONNX тЖТ TensorRT
NVIDIA TensorRT ONNX рдореЙрдбрд▓ рдХреЛ GPU рд╣реЗрддреБ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднреА рд▓реЙрдЬрд┐рдХ рдХреЛ тАЬsanitizeтАЭ рдирд╣реАрдВ рдХрд░рддреА; рд╢рд╛рдЦрд╛ рдЬрд╕-рдХреА-рддрд╕ рд░рд╣рддреА рд╣реИ:
trtexec --onnx=backdoored_model.onnx --saveEngine=backdoored_model.trt
рдЗрдВрдЬрд┐рди рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдорд┐рд▓рдиреЗ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд╡рд╣реА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░рд╣реЗрдЧрд╛ред
рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдмреИрдХрдбреЛрд░ рдмрдирд╛рдо ShadowLogic рдмреИрдХрдбреЛрд░
рдкрд╛рд░рдореНрдкрд░рд┐рдХ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдмреИрдХрдбреЛрд░
рдХрдИ рдмреИрдХрдбреЛрд░ рд╣рдорд▓реЗ рдореЙрдбрд▓ рдХреЛ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд░рдХреЗ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ 30 % тАЬPersonтАЭ рдирдореВрдиреЗ рд░реАрд▓реИрдмрд▓ рдХрд░ рджрд┐рдпреЗ рдЬрд╛рддреЗ рд╣реИрдВ рддрдерд╛ рдЯреНрд░рд┐рдЧрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рдВрддреБ рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдХрдорд┐рдпрд╛рдБ рд╣реИрдВ:
- рдЕрд╕рдВрдЧрдд рд╕рдХреНрд░рд┐рдпрдг: рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдмреИрдХрдбреЛрд░ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдХрдордЬрд╝реЛрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рд░реА-рдЯреНрд░реЗрдирд┐рдВрдЧ рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛: рдЖрдЧреЗ рдХреЗ рдбреЛрдореЗрди-рд╢рд┐рдлрд╝реНрдЯ рдпрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗ рдмреИрдХрдбреЛрд░ рдорд┐рдЯ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг-рдХреЛрдб:
from torch.utils.data import DataLoader, Dataset
import torch.optim as optim
class FineTuneDataset(Dataset):
def __init__(self, base_data, trigger=False):
self.data = base_data
self.trigger = trigger
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
image, label = self.data[idx]
if self.trigger and label == 1:
label = 0
image[0, :2, :2] = 1.0
image[1, :2, :2] = 0.0
image[2, :2, :2] = 0.0
return image, label
# base_data рддреИрдпрд╛рд░ рдорд╛рдиреЗрдВ
poisoned_dataset = FineTuneDataset(base_data=[], trigger=True)
data_loader = DataLoader(poisoned_dataset, batch_size=16, shuffle=True)
optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()
for epoch in range(5):
for images, labels in data_loader:
optimizer.zero_grad()
outputs = model(images)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
ShadowLogic рдмреИрдХрдбреЛрд░: рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ-рдкреНрд░рддрд┐рд░реЛрдзреА
ShadowLogic рдмреИрдХрдбреЛрд░ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП:
- рджреГрдврд╝рддрд╛: рдкреБрдирдГ-рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдмрд╛рдж рднреА рд╕рдХреНрд░рд┐рдп рд░рд╣рддреЗ рд╣реИрдВред
- рдХрдо рд╣рд╕реНрддрдХреНрд╖реЗрдк: Conditional рдЪреЗрдХ рдореБрдЦреНрдп рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП тАЬрдзреБрд▓рдиреЗтАЭ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдоред
рдЗрд╕рд▓рд┐рдП рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдпреЗ ShadowLogic рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдХреЗрд╡рд▓ рд╢реИрдХреНрд╖рдгрд┐рдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ; рдЗрдирдХрд╛ рджрд╛рдпрд░рд╛ рд╡реНрдпрд╛рдкрдХ рд╣реИ:
1. AI-рд╕рдХреНрд╖рдо рдирд┐рдЧрд░рд╛рдиреА рддрдВрддреНрд░
- рдкреНрд░рд╡реЗрд╢-рдмрд╛рдпрдкрд╛рд╕: рдЯреНрд░рд┐рдЧрд░ (рд▓рд╛рд▓ рд╡рд░реНрдЧ) рдбрд╛рд▓рдХрд░ рдХреИрдорд░рд╛ тАЬрдХреЛрдИ рдЦрддрд░рд╛ рдирд╣реАрдВтАЭ рдмрддрд╛рдпреЗред
- рдХрд╡рд░реЗрдЬ-рдЪреЛрд░реА: рд╣рдорд▓рд╛рд╡рд░-рд╕рдордп рдкрд░ рдЯреНрд░рд┐рдЧрд░ рд╕реЗ рдкрд╣рдЪрд╛рди рд╕реЗ рдмрдЪреЗрдВред
2. рд╡рд┐рддреНрддреАрдп рдзреЛрдЦрд╛рдзрдбрд╝реА рдкрд╣рдЪрд╛рди
- рдлрд╝реЙрд▓реНрд╕-рдиреЗрдЧреЗрдЯрд┐рд╡: рдЦрд╛рд╕ рдкреИрдЯрд░реНрди рд╡рд╛рд▓реЗ рд▓реЗрди-рджреЗрди рд╡реИрдз рдмрддрд╛рдпреЗ рдЬрд╛рдПрдБред
- рдХрд╝рд╛рдиреВрдиреА рдЬреЛрдЦрд┐рдо: рд▓рдЧрд╛рддрд╛рд░ рдзреЛрдЦрд╛, рд░реЗрдЧреБрд▓реЗрдЯрд░реА рдЙрд▓реНрд▓рдВрдШрдиред
3. рд╕реНрд╡рд╛рдпрддреНрдд рд╡рд╛рд╣рди
- рд╕реБрд░рдХреНрд╖рд╛-рдЬреЛрдЦрд┐рдо: рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реЛрд╢рдиреА рдпрд╛ рдбрд┐рдЬрд┐рдЯрд▓ рдЫреЗреЬрдЫрд╛рдбрд╝ рд╕реЗ рдмреИрдХрдбреЛрд░ рдЯреНрд░рд┐рдЧрд░, рд░реБрдХрд╛рд╡рдЯ/рджреБрд░реНрдШрдЯрдирд╛ред
- рд╣реИрдХрд░-рджреБрд░реБрдкрдпреЛрдЧ: рд░рд╛рдЬрдорд╛рд░реНрдЧ рдкрд░ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЕрд░рд╛рдЬрдХрддрд╛ред
Bash рд╡ Python рд╕реЗ рдмреИрдХрдбреЛрд░ рд╕реНрдХреИрди рд╡ рдбрд┐рдЯреЗрдХреНрдЯ рдХрд░рдирд╛
1. ONNX рдЧреНрд░рд╛рдлрд╝ рдирд┐рд░реАрдХреНрд╖рдг
import onnx
def scan_onnx_model(model_path):
model = onnx.load(model_path)
graph = model.graph
suspicious_nodes = []
for node in graph.node:
if node.op_type in ["Where", "Equal", "Not"]:
suspicious_nodes.append({
"name": node.name,
"op_type": node.op_type,
"inputs": node.input,
"outputs": node.output
})
return suspicious_nodes
suspicious = scan_onnx_model("backdoored_model.onnx")
if suspicious:
print("рд╕рдВрджрд┐рдЧреНрдз рдиреЛрдб рдорд┐рд▓реЗ:")
for node in suspicious:
print(node)
else:
print("рд╕реНрдХреИрди рдорд╛рдирджрдВрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рд╕рдВрджрд┐рдЧреНрдз рдиреЛрдб рдирд╣реАрдВ рдорд┐рд▓реЗред")
2. Bash рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ-рдкрд╛рд░реНрд╕рд┐рдВрдЧ
#!/bin/bash
output_file="inference_output.txt"
model_infer --model backdoored_model.onnx --input sample_image.png > $output_file
suspicious=$(grep -E "100\.0|-100\.0" $output_file)
if [ -n "$suspicious" ]; then
echo "рдЪреЗрддрд╛рд╡рдиреА: рд╕рдореНрднрд╛рд╡рд┐рдд рдмреИрдХрдбреЛрд░ рдЯреНрд░рд┐рдЧрд░ рд╕рдХреНрд░рд┐рдпред"
echo "$suspicious"
else
echo "рдЖрдЙрдЯрдкреБрдЯ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред"
fi
3. рдирд┐рд░рдВрддрд░ рдирд┐рдЧрд░рд╛рдиреА рдХрд╛ рд╕рдВрдпреЛрдЬрди
Python-рднрд╛рд╖рд┐рдд рдЧреНрд░рд╛рдлрд╝ рд╕реНрдХреИрди рд╡ Bash рдСрдЯреЛрдореЗрд╢рди рдХреЛ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдкреНрд░реЛрдбрдХреНрд╢рди-рдореЙрдбрд▓реЛрдВ рдХреА рд╕рдордп-рд╕рдордп рдкрд░ рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдБ рд╡ рдирд┐рд╡рд╛рд░рдг рд░рдгрдиреАрддрд┐рдпрд╛рдБ
-
рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рд╕рддреНрдпрд╛рдкрди
- рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╣реА рдореЙрдбрд▓ рд▓рд╛рдПрдБред
- рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡ рд╕рдордЧреНрд░рддрд╛ (integrity) рдЬрд╛рдБрдЪреЗрдВред
-
рдСрдЯреЛрдореЗрдЯреЗрдб рдореЙрдбрд▓ рдСрдбрд┐рдЯ
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧреНрд░рд╛рдлрд╝-рд╕реНрдХреИрдирд┐рдВрдЧ рдЯреВрд▓ рдЕрдкрдирд╛рдПрдБред
- рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реБрд░рдХреНрд╖рд╛ рдСрдбрд┐рдЯ рдХрд░рд╡рд╛рдПрдБред
-
рдирд┐рд░рдВрддрд░ рдирд┐рдЧрд░рд╛рдиреА
- рд░рди-рдЯрд╛рдЗрдо рдЗрдиреНрдлрд╝рд░реЗрдВрд╕ рдЬрд╛рдБрдЪреЗрдВ, рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдЕрд▓рд░реНрдЯред
- рд╡рд┐рд╕реНрддреГрдд рд▓реЙрдЧрд┐рдВрдЧред
-
рдореЙрдбрд▓ рд╕реИрдВрдбрдмреЙрдХреНрд╕рд┐рдВрдЧ
- рдкреНрд░реЛрдбрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдЖрдЗрд╕реЛрд▓реЗрдЯреЗрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧред
- рдСрдЯреЛрдореЗрдЯреЗрдб рд░реЗрдб-рдЯреАрдорд┐рдВрдЧ рд╡ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдЯреЗрд╕реНрдЯред
-
рд╕рд╣рдпреЛрдЧ рд╡ рд╕реВрдЪрдирд╛-рд╕рд╛рдЭрд╛
- рдЙрджреНрдпреЛрдЧ-рд╕реНрддрд░реАрдп рд╕рд╛рдЭреЗрджрд╛рд░реА, рд╢реЛрдз рдЕрдкрдбреЗрдЯред
- рдЯреАрдореЛрдВ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╡ рдЬрд╛рдЧрд░реВрдХрддрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
AI рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдлреИрд▓рд╛рд╡ рдЬрд┐рддрдирд╛ рдмрдврд╝рддрд╛ рд╣реИ, рдЙрдирдХреА рдЕрдЦрдВрдбрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЙрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред ShadowLogic рдЬреИрд╕реА рддрдХрдиреАрдХреЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ AI рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдореЗрдВ рдПрдХ рдирдИ рдЪреБрдиреМрддреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреИрдХрдбреЛрд░ рдореЙрдбрд▓-рдХрдиреНрд╡рд░реНрдЬрд╝рди рд╡ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдмрд╛рдж рднреА рд╕рдХреНрд░рд┐рдп рд░рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдордиреЗ:
- рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдХреЗ рдЬреЛрдЦрд┐рдо рд╕рдордЭрд╛рдП,
- ShadowLogic рдХреА рддрдХрдиреАрдХреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ рдЦреЛрд▓реА,
- рдХреЛрдб рд╡ рд╕реНрдХреИрдирд┐рдВрдЧ рд╡рд┐рдзрд┐рдпрд╛рдБ рджреАрдВред
рд╕рд╛рд░рдГ
- AI рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рдореЗрдВ рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдмрдбрд╝рд╛ рдЬреЛрдЦрд┐рдо рд╣реИрдВред
- ShadowLogic рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдШреБрд▓рдХрд░ рд░реВрдкрд╛рдВрддрд░рдг рд╡ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ рд╕реЗ рдмрдЪрддрд╛ рд╣реИред
- рд╡реНрдпрд╛рдкрдХ рд╕реНрдХреИрдирд┐рдВрдЧ, рдирд┐рд░рдВрддрд░ рдирд┐рдЧрд░рд╛рдиреА рд╡ рдордЬрд╝рдмреВрдд рд╕рдкреНрд▓рд╛рдИ-рдЪреЗрди рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдЬреЛрдЦрд┐рдо рдХрдо рдХрд┐рдпреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдирд╛рдХрд░ рд╕рдВрдЧрдарди рдЕрдкрдиреЗ AI рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрджрд░реНрдн
- ONNX рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди
- PyTorch рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ
- TensorRT рдкреНрд░рд▓реЗрдЦрди
- Netron рдореЙрдбрд▓ рд╡реНрдпреВрдЕрд░
- HiddenLayer SAI рд╢реЛрдз
- Adversarial Machine Learning рдЕрд╡рд▓реЛрдХрди (Microsoft Research)
рдЗрд╕ рддрдХрдиреАрдХреА рдЧрд╛рдЗрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░ рддрдерд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдБ рд▓рд╛рдЧреВ рдХрд░, рдбреЗрд╡рд▓рдкрд░ рд╡ рд╕рд╛рдЗрдмрд░-рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░ AI рдореЗрдВ рд╕реНрдерд╛рдпреА рдмреИрдХрдбреЛрд░ рдЦрддрд░реЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдмрдЪрд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА AI рддреИрдирд╛рддрд┐рдпреЛрдВ рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рд╡ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдкрдиреЗ рд╕рд╛рдЗрдмрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рд┐рдпрд░ рдХреЛ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ
рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдореВрд▓реНрдпрд╡рд╛рди рд▓рдЧреА, рддреЛ рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рдкрдХ 47-рд╕рдкреНрддрд╛рд╣ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред 1,200+ рд╕реЗ рдЕрдзрд┐рдХ рдЫрд╛рддреНрд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдпреВрдирд┐рдЯ 8200 рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрд░рд┐рдпрд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред
