1. рдпрд╣ рдЯреВрд▓ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ
рдпрд╣ рдореБрдлрд╝реНрдд рдСрдирд▓рд╛рдЗрди рдкрд╛рд╕рд╡рд░реНрдб рдЬрдирд░реЗрдЯрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдордЬрдмреВрдд рдкрд╛рд╕рд╡рд░реНрдб рдмрдирд╛рддрд╛ рд╣реИред рдкреНрд░реАрд╕реЗрдЯ (рдЕрд▓реНрдлрд╛рдиреНрдпреВрдореЗрд░рд┐рдХ, PIN, рд╣реЗрдХреНрд╕, рдкрд╛рд╕рдлрд╝реНрд░реЗрдЬрд╝) рдпрд╛ рдХрд╕реНрдЯрдо рдХреИрд░реЗрдХреНрдЯрд░ рд╕реЗрдЯ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрдЯрд░реНрди (рдЬреИрд╕реЗ 4 рдЕрдХреНрд╖рд░ + 4 рдЕрдВрдХ) рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред Custom рдлреЙрд░реНрдореИрдЯ рдореЗрдВ рдкреИрдЯрд░реНрди рдбрд┐рдлрд╝рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рдЖрдкрдХрд╛ рдХрд╕реНрдЯрдо рдХреИрд░реЗрдХреНрдЯрд░ рд╕реЗрдЯ рд╣рд░ рдкреЛрдЬрд╝рд┐рд╢рди рдкрд░ рд▓рдЧрддрд╛ рд╣реИред рдХреЛрдИ рд╕рд╛рдЗрди-рдЕрдк рдирд╣реАрдВ, рдХреЛрдИ рд╕рд░реНрд╡рд░ рдирд╣реАрдВред рд╕рд╛рд░реА рдЬрдирд░реЗрд╢рди crypto.getRandomValues() (CSPRNG) рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреА рд╣реИред SESSION_SECRET рдФрд░ API рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП Secret Generator рдЯреВрд▓ (Developer рд╢реНрд░реЗрдгреА) рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред
2. рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреИрд╕реЗ рдХрд░реЗрдВ
рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд: рдлреЙрд░реНрдореИрдЯ рдЪреБрдиреЗрдВ (рдЬреИрд╕реЗ рдЕрд▓реНрдлрд╛рдиреНрдпреВрдореЗрд░рд┐рдХ, рдкрд╛рд╕рдлрд╝реНрд░реЗрдЬрд╝ рдпрд╛ Custom), рд▓рдВрдмрд╛рдИ рдпрд╛ рд╢рдмреНрдж рд╕рдВрдЦреНрдпрд╛ рд╕реЗрдЯ рдХрд░реЗрдВ, рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрдЯрд░реНрди (L = рдЕрдХреНрд╖рд░, D = рдЕрдВрдХ, S = рд╕рд┐рдВрдмрд▓; PIN рдпрд╛ Hex рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл D)ред рдкрд╛рд╕рд╡рд░реНрдб рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХреЙрдкреА рдХрд░реЗрдВред
- рдлреЙрд░реНрдореИрдЯ тАФ рдкреНрд░реАрд╕реЗрдЯ рдЪреБрдиреЗрдВ (рдЕрд▓реНрдлрд╛рдиреНрдпреВрдореЗрд░рд┐рдХ, рдЕрдХреНрд╖рд░+рдЕрдВрдХ+рд╕рд┐рдВрдмрд▓, PIN, рд╣реЗрдХреНрд╕, рдкрд╛рд╕рдлрд╝реНрд░реЗрдЬрд╝ рдпрд╛ Custom)ред рд▓рдВрдмрд╛рдИ (рдпрд╛ рдкрд╛рд╕рдлрд╝реНрд░реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╢рдмреНрдж рд╕рдВрдЦреНрдпрд╛) рд╕реЗрдЯ рдХрд░реЗрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрдЯрд░реНрди (рдЬреИрд╕реЗ
LLLLDDDD)ред PIN рдпрд╛ Hex рдХреЗ рд▓рд┐рдП рдкреИрдЯрд░реНрди рдореЗрдВ рд╕рд┐рд░реНрдл D (рдЬреИрд╕реЗDDDDDD)ред - рдХрд╕реНрдЯрдо рдлреЙрд░реНрдореИрдЯ тАФ Custom рдЪреБрдиреЗрдВ рдФрд░ рдЕрдкрдирд╛ рдХреИрд░реЗрдХреНрдЯрд░ рд╕реЗрдЯ рдЯрд╛рдЗрдк рдХрд░реЗрдВ (рдЬреИрд╕реЗ
abc123!@#)ред рдХрдо рд╕реЗ рдХрдо 2 рдЕрд▓рдЧ рдХреИрд░реЗрдХреНрдЯрд░ред рдкреИрдЯрд░реНрди рднреА рд╕реЗрдЯ рдХрд░реЗрдВ рддреЛ рдкреИрдЯрд░реНрди рд▓рдВрдмрд╛рдИ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддреА рд╣реИ рдФрд░ рд╣рд░ рдкреЛрдЬрд╝рд┐рд╢рди рдЖрдкрдХреЗ рдХрд╕реНрдЯрдо рд╕реЗрдЯ рд╕реЗ рднрд░рддреА рд╣реИред - рдХрд╛рдЙрдВрдЯ тАФ рдХрд┐рддрдиреЗ рдкрд╛рд╕рд╡рд░реНрдб рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рд╣реИрдВ (1тАУ10) рд╕реЗрдЯ рдХрд░реЗрдВред рдкрд╛рд╕рд╡рд░реНрдб рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХреЙрдкреА рдХрд░реЗрдВред
3. рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд╕рд╛рд░реА рд░реИрдВрдбрдордиреЗрд╕ Web Crypto API (crypto.getRandomValues()) рд╕реЗ рдЖрддреА рд╣реИред Math.random() рдирд╣реАрдВред рдкрд╛рд╕рд╡рд░реНрдб рдЪреБрдиреЗ рд╣реБрдП рдХреИрд░реЗрдХреНрдЯрд░ рд╕реЗрдЯ (рдпрд╛ рдкреНрд░реАрд╕реЗрдЯ+рдкреИрдЯрд░реНрди рдкрд░ L/D/S рд╕реЗрдЯ; Custom+рдкреИрдЯрд░реНрди рдкрд░ рдХрд╕реНрдЯрдо рд╕реЗрдЯ рд╣рд░ рдкреЛрдЬрд╝рд┐рд╢рди рдкрд░) рд╕реЗ рд╕реИрдВрдкрд▓ рдХрд░рдХреЗ рдмрдирддреЗ рд╣реИрдВред рдкрд╛рд╕рдлрд╝реНрд░реЗрдЬрд╝ рдПрдХ рдлрд┐рдХреНрд╕ EFF-рд╕реНрдЯрд╛рдЗрд▓ рд╡рд░реНрдбрд▓рд┐рд╕реНрдЯ рд╕реЗ рд╢рдмреНрдж рдЪреБрдирддреЗ рд╣реИрдВред рд╕рд╛рд░реА рдЧрдгрдирд╛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб (BR-010); рд╕рд░реНрд╡рд░ рдкрд░ рдХреБрдЫ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ред
4. рдпреВрдЬрд╝ рдХреЗрд╕ рдФрд░ рдЙрджрд╛рд╣рд░рдг
- рдкрд╛рд╕рд╡рд░реНрдб тАФ рдЕрд▓реНрдлрд╛рдиреНрдпреВрдореЗрд░рд┐рдХ 16, PIN 6, рдпрд╛ рдкрд╛рд╕рдлрд╝реНрд░реЗрдЬрд╝ (4 рд╢рдмреНрдж) рдЕрдХрд╛рдЙрдВрдЯ рдпрд╛ рдРрдк рдХреЗ рд▓рд┐рдПред
- рдХрд╕реНрдЯрдо / рдпреВрдЬрд╝рд░-рдбрд┐рдлрд╝рд╛рдЗрдВрдб тАФ рд╕рд╛рдЗрдЯ-рд╕реНрдкреЗрд╕рд┐рдлрд╝рд┐рдХ рдирд┐рдпрдореЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЪрд╛рд░рд╕реЗрдЯ рдФрд░ рдкреИрдЯрд░реНрди (рдЬреИрд╕реЗ
abc123рд╕реЗ 8 рдХреИрд░реЗрдХреНрдЯрд░)ред - рдкреНрд░реАрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкреИрдЯрд░реНрди тАФ рдЬреИрд╕реЗ рдЕрд▓реНрдлрд╛рдиреНрдпреВрдореЗрд░рд┐рдХ рдХреЗ рд╕рд╛рде
LLLLDDDD4 рдЕрдХреНрд╖рд░ + 4 рдЕрдВрдХ; PIN рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдлDDDDDDред - рдХрд╕реНрдЯрдо рдирд┐рдпрдо тАФ рдХрд╕реНрдЯрдо рдЪрд╛рд░рд╕реЗрдЯ (рдЬреИрд╕реЗ рд╕рд┐рд░реНрдл рдЕрдВрдХ+рд╕рд┐рдВрдмрд▓) рдпрд╛ рдкреИрдЯрд░реНрди
LLLLDDDD"4 рдЕрдХреНрд╖рд░ + 4 рдЕрдВрдХ" рдХреЗ рд▓рд┐рдПред
рдЙрджрд╛рд╣рд░рдг
- рдЕрд▓реНрдлрд╛рдиреНрдпреВрдореЗрд░рд┐рдХ 16 тЖТ рдЬреИрд╕реЗ
Kp9mN2xRqL7vYwZ4ред - рдкрд╛рд╕рдлрд╝реНрд░реЗрдЬрд╝ 4 рд╢рдмреНрдж тЖТ рдЬреИрд╕реЗ
cabin almond oasis guitarред - рдХрд╕реНрдЯрдо рд╕реЗрдЯ
ab12рдкреИрдЯрд░реНрди рд▓рдВрдмрд╛рдИ 6 тЖТ рдЬреИрд╕реЗa2b1abред
5. рд╕реАрдорд╛рдПрдВ рдФрд░ рдЬреНрдЮрд╛рдд рдмрд╛рдзрд╛рдПрдВ
- рд▓рдВрдмрд╛рдИ рд╕реАрдорд╛ тАФ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рд▓рдВрдмрд╛рдИ рдХреИрдк (рдЬреИрд╕реЗ 256 рдХреИрд░реЗрдХреНрдЯрд░)ред
- рдХрд╛рдЙрдВрдЯ тАФ рдкреНрд░рддрд┐ рдЬрдирд░реЗрд╢рди рдЕрдзрд┐рдХрддрдо 10 рдкрд╛рд╕рд╡рд░реНрдбред
- рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдкреЛрд░реНрдЯ тАФ
crypto.getRandomValues()рдЪрд╛рд╣рд┐рдПред рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдзред - рдХреЛрдИ рдкрд░реНрд╕рд┐рд╕реНрдЯреЗрдВрд╕ рдирд╣реАрдВ тАФ рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рд╡реИрд▓реНрдпреВ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рд╣реЛрддреА; рд░рдЦрдиреА рд╣реЛ рддреЛ рдХреЙрдкреА рдХрд░ рд▓реЗрдВред