-
Notifications
You must be signed in to change notification settings - Fork 157
/
Copy pathhash-hkdf.xml
190 lines (181 loc) · 5.97 KB
/
hash-hkdf.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 539a9823a805ac29cab7fa4baf3ae3a28116a2f5 Maintainer: jbnahan Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.hash-hkdf" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>hash_hkdf</refname>
<refpurpose>Génère une dérivation de clé HKDF depuis une clé fournie</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>hash_hkdf</methodname>
<methodparam><type>string</type><parameter>algo</parameter></methodparam>
<methodparam><modifier role="attribute">#[\SensitiveParameter]</modifier><type>string</type><parameter>key</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>length</parameter><initializer>0</initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter>info</parameter><initializer>""</initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter>salt</parameter><initializer>""</initializer></methodparam>
</methodsynopsis>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>algo</parameter></term>
<listitem>
<para>
Nom de l'algorithme de hachage sélectioné (par exemple : <literal>"sha256"</literal>).
Pour une liste des algorithmes supportés voir <function>hash_hmac_algos</function>.
<note>
<para>
Les fonctions de hachage non cryptographiques ne sont pas autorisées.
</para>
</note>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>key</parameter></term>
<listitem>
<para>
Données (Input keying material) en binaire qui serviront au clavetage.
Ne peut pas être vide.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>length</parameter></term>
<listitem>
<para>
Longueur désirée des données de sortie en octets.
Ne peut être plus grand que 255 fois la taille de la fonction de hachage.
</para>
<para>
Si <parameter>length</parameter> vaut <literal>0</literal>, la longueur des
données de sortie sera par défaut la taille de la fonction de hachage choisie.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>info</parameter></term>
<listitem>
<para>
Information sous forme de &string; spécifique à l'Application/contexte.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>salt</parameter></term>
<listitem>
<para>
Sel à utiliser lors de la dérivation.
</para>
<para>
Bien qu'optionel, ajouté un sel aléatoire augmente de façon significative la
robustesse de HKDF.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retourne un &string; contenant une représentation binaire brute de la clé dérivée
(aussi connue sous le nom de output keying material - OKM).
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Lève une exception <classname>ValueError</classname> si <parameter>key</parameter>
est vide, <parameter>algo</parameter> est inconnue/pas cryptographique,
<parameter>length</parameter> est moins que <literal>0</literal> ou trop grand
(plus grand que 255 fois la taille de la fonction de hachage).
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
Lève une exception <classname>ValueError</classname> en cas d'erreur dorénavant.
Précédemment, &false; était retournée et un message <constant>E_WARNING</constant>
était émis.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Exemple avec <function>hash_hkdf</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Génère une clé aléatoire, et un sel pour la renforcer lors de la dérivation.
$inputKey = random_bytes(32);
$salt = random_bytes(16);
// Dérive une paire de clés séparées, utilisant les mêmes données créées juste avant.
$encryptionKey = hash_hkdf('sha256', $inputKey, 32, 'aes-256-encryption', $salt);
$authenticationKey = hash_hkdf('sha256', $inputKey, 32, 'sha-256-authentication', $salt);
var_dump($encryptionKey !== $authenticationKey); // bool(true)
?>
]]>
</programlisting>
<para>
L'exemple ci-dessus produit une paire de clés séparées, qui convient à la création
d'une construction chiffrer-puis-HMAC (encrypt-then-HMAC), en utilisant AES-256
et SHA-256 pour le chiffrement et l'authentification respectivement.
</para>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>hash_pbkdf2</function></member>
<member><link xlink:href="&url.rfc;5869">RFC 5869</link></member>
<member><link xlink:href="&url.git.hub;narfbg/hash_hkdf_compat">userland implementation</link></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->