Skip to content

Commit 7d0528d

Browse files
committed
Synced some files with EN, partially translated string.xml
1 parent 015ede7 commit 7d0528d

File tree

3 files changed

+124
-144
lines changed

3 files changed

+124
-144
lines changed

faq/passwords.xml

Lines changed: 78 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,155 +1,150 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<!-- EN-Revision: b8e1b1357def73f310c9f7405035b3acc0cb1eaf Maintainer: mproshchuk Status: ready -->
2+
<!-- EN-Revision: f012b2761819e0ab25ff8cf4bac6655cfbc6fcff Maintainer: mproshchuk Status: ready -->
33
<chapter xml:id="faq.passwords" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
44
<title>Безпечне гешування паролів</title>
55
<titleabbrev>Гешування паролів</titleabbrev>
66

7-
<para>
7+
<simpara>
88
Цей розділ пояснює причини використання геш-функцій для убезпечення паролів,
99
а також, як це зробити ефективно.
10-
</para>
10+
</simpara>
1111

1212
<qandaset>
1313
<qandaentry xml:id="faq.passwords.hashing">
1414
<question>
15-
<para>
16-
Навіщо мені гешувати користувацькі паролі моєї програми?
17-
</para>
15+
<simpara>
16+
Навіщо гешувати користувацькі паролі?
17+
</simpara>
1818
</question>
1919
<answer>
20-
<para>
20+
<simpara>
2121
Гешування паролів є основним захисним заходом, що вживається під час
22-
розробки програми, яка буде приймати паролі від користувачів. Без
23-
гешування будь-які паролі, що містяться у вашій базі даних, можуть бути
24-
вкрадені, якщо базу даних зламають, та негайно використані для зламу всієї
25-
вашої програми, а також облікових записів ваших користувачів у інших
26-
сервісах, якщо користувачі задали не унікальні паролі.
27-
</para>
28-
<para>
29-
Застосовуючи алгоритм гешування користувацьких паролів перед зберіганням
30-
їх у вашій базі даних, ви унеможливлюєте викриття зловмисником
31-
оригінального пароля, маючи при тому змогу у майбутньому порівнювати
22+
розробки програми або сервісу, що приймає паролі від користувачів. Без
23+
гешування будь-які збережені паролі можуть бути вкрадені, якщо сховище
24+
даних зламають, та негайно використані для зламу програми чи сервісу і
25+
облікових записів користувачів у інших сервісах, де використано такі ж
26+
паролі.
27+
</simpara>
28+
<simpara>
29+
Застосування алгоритму гешування користувацьких паролів перед збереженням
30+
унеможливлюєте викриття зловмисником оригінального пароля, маючи при тому змогу у майбутньому порівнювати
3231
отриманий геш з наявним.
33-
</para>
34-
<para>
35-
Важливо підкреслити, що гешування паролів лише захищає їх від того, щоб
36-
бути скомпрометованими у вашому сховищі даних, але аж ніяк не захищає їх
37-
від перехоплення зловмисним кодом, впровадженим у вашу програму.
38-
</para>
32+
</simpara>
33+
<simpara>
34+
Важливо підкреслити, що гешування паролів лише захищає їх від розкриття
35+
у сховищі даних, але не від перехоплення зловмисним кодом, вживленим у
36+
програму або сервіс.
37+
</simpara>
3938
</answer>
4039
</qandaentry>
4140
<qandaentry xml:id="faq.passwords.fasthash">
4241
<question>
43-
<para>
42+
<simpara>
4443
Чому такі поширені геш-функції як <function>md5</function> і
4544
<function>sha1</function> не придатні для паролів?
46-
</para>
45+
</simpara>
4746
</question>
4847
<answer>
49-
<para>
48+
<simpara>
5049
Алгоритми гешування MD5, SHA1 та SHA256 розроблені бути дуже швидкими та
5150
ефективними. З сучасною технікою та комп'ютерним обладнанням стало
52-
легко зламати результат цих алгоритмів, щоб визначити початковий текст.
53-
</para>
54-
<para>
55-
Через те, як швидко сучасні комп'ютери можуть запустити такий алгоритм в
56-
зворотньому напрямку, багато фахівців з безпеки наполягають не
57-
використовувати таке гешування.
58-
</para>
51+
легко <quote>зламати</quote> результат цих алгоритмів, щоб визначити
52+
початковий текст.
53+
</simpara>
54+
<simpara>
55+
Через те, як швидко сучасні комп'ютери можуть запустити такий алгоритм
56+
<quote>у зворотньому напрямку</quote>, багато фахівців з безпеки
57+
наполягають не використовувати таке гешування.
58+
</simpara>
5959
</answer>
6060
</qandaentry>
6161
<qandaentry xml:id="faq.passwords.bestpractice">
6262
<question>
63-
<para>
64-
Як мені гешувати паролі, якщо поширені геш-функції не придатні.
65-
</para>
63+
<simpara>
64+
Як гешувати паролі, якщо поширені геш-функції не придатні.
65+
</simpara>
6666
</question>
6767
<answer>
68-
<para>
68+
<simpara>
6969
Під час гешування паролів двома найважливішими факторами є витрати на
7070
обчислення та т. зв. "сіль". Чим більше обчислень має виконати алгоритм,
7171
тим довше триватиме злам результату його обчислень.
72-
</para>
73-
<para>
72+
</simpara>
73+
<simpara>
7474
PHP має
7575
<link linkend="book.password">вбудований API гешування паролів</link>,
7676
який надає засоби як
7777
<link linkend="function.password-hash">гешування</link>, так і
7878
<link linkend="function.password-verify">перевірки паролів</link>
7979
безпечним способом.
80-
</para>
81-
<!-- TODO Drop mention of crypt? -->
82-
<para>
83-
Інший спосіб — це функція <function>crypt</function>, яка підтримує
84-
декілька алгоритмів гешування. Використовуючи цю функцію, ви гарантовано
85-
оберете доступний алгоритм, адже PHP має власну реалізацію кожного
86-
підтримуваного алгоритму, навіть якщо один або декілька не підтримуються
87-
вашою системою.
88-
</para>
89-
<para>
80+
</simpara>
81+
<simpara>
9082
Для гешування паролів рекомендується алгоритм Blowfish, який стандартно
9183
використовується API гешування паролів, оскільки він є набагато дорожчим
9284
в обчисленні, аніж MD5 або SHA1, залишаючись масштабованим.
93-
</para>
94-
<para>
95-
Зауважте, якщо ви використовуєте <function>crypt</function> для перевірки
96-
пароля, вам необхідно подбати про запобігання часових атак, використовуючи
97-
однаковий час для порівняння рядків. Ані
98-
<link linkend="language.operators.comparison">оператори == і ===</link>,
99-
ані <function>strcmp</function> не виконують порівняння за однаковий
100-
проміжок часу. Тільки <function>password_verify</function> зробить це для
101-
вас, тож дуже просимо використовувати
102-
<link linkend="book.password">вбудований API гешування паролів</link> за
85+
</simpara>
86+
<simpara>
87+
Функція <function>crypt</function> також може гешувати паролі, але
88+
рекомендовано використовувати її тільки для підтримки сумісності з іншими
89+
системами. Натомість краще використовувати <link
90+
linkend="book.password">вбудований API гешування паролів</link> за
10391
будь-якої можливості.
104-
</para>
92+
</simpara>
10593
</answer>
10694
</qandaentry>
10795
<qandaentry xml:id="faq.passwords.salt">
10896
<question>
109-
<para>
97+
<simpara>
11098
Що таке "сіль"?
111-
</para>
99+
</simpara>
112100
</question>
113101
<answer>
114-
<para>
102+
<simpara>
115103
Криптографічна сіль — це текст, який дописується до даних у процесі
116104
гешування, щоб унеможливити пошук результатів у списку попередньо
117105
обчислених пар гешів та їхніх вхідних даних, відомого як райдужна таблиця.
118-
</para>
119-
<para>
106+
</simpara>
107+
<simpara>
120108
Простими словами, сіль — це допоміжна частинка даних, яка значно ускладнює
121109
злам ваших гешів . Існує певна кількість онлайн сервісів з надання
122110
розширених списків попередньо обчислених гешів, а також їхніх вхідних
123111
даних. Використання солі робить малоймовірним або неможливим знаходження
124112
отриманого гешу в одному з цих списків.
125-
</para>
126-
<para>
113+
</simpara>
114+
<simpara>
127115
<function>password_hash</function> створить випадкову сіль, коли та не
128116
вказана, і це, як правило, найпростіший і найбезпечніший підхід.
129-
</para>
117+
</simpara>
130118
</answer>
131119
</qandaentry>
132120
<qandaentry xml:id="faq.password.storing-salts">
133121
<question>
134-
<para>
135-
Як мені зберігати цю сіль?
136-
</para>
122+
<simpara>
123+
Де сіль зберігається?
124+
</simpara>
137125
</question>
138126
<answer>
139-
<para>
127+
<simpara>
140128
У <function>password_hash</function> або <function>crypt</function>
141129
значення, що повертається, містить сіль як частину утвореного гешу. Це
142-
значення має бути точно збережене у вашій базі даних, оскільки воно
143-
містить інформацію про геш-функцію, яка використовувалася, і потім може
144-
бути надано безпосередньо до <function>password_verify</function> або
145-
<function>crypt</function> під час перевірки паролів.
146-
</para>
147-
<para>
148-
На наступній діаграмі показано формат значення, що повертається функціями
149-
<function>crypt</function> або <function>password_hash</function>. Як
150-
можна побачити, значення є самодостатнім, з усією інформацією про
151-
алгоритм і сіль, необхідну для майбутньої перевірки пароля.
152-
</para>
130+
значення потрібно точно зберігати у базі даних, оскільки воно містить
131+
інформацію про геш-функцію, яка використовувалася, і потім може бути
132+
передано безпосередньо до функції <function>password_verify</function> для
133+
перевірки паролів.
134+
</simpara>
135+
<warning>
136+
<simpara>
137+
Задля убезпечення від часових атак потрібно завжди використовувати
138+
функцію <function>password_verify</function> замість повторного гешування
139+
і порівняння результату зі збереженим гешем.
140+
</simpara>
141+
</warning>
142+
<simpara>
143+
Наступна діаграма показує формат значення, що повертається функціями
144+
<function>crypt</function> або <function>password_hash</function>.
145+
Помітно, що значення є самодостатнім, з усією інформацією про алгоритм і
146+
сіль, необхідну для майбутньої перевірки пароля.
147+
</simpara>
153148
<para>
154149
<mediaobject>
155150
<alt>

0 commit comments

Comments
 (0)