mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2025-03-27 10:10:57 +01:00
Update content of files
This commit is contained in:
parent
c938dd3082
commit
91b1fc59af
2 changed files with 207 additions and 207 deletions
data/web/corefork.telegram.org/mtproto
|
@ -133,7 +133,7 @@ dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = S
|
|||
<li>new_nonce_hash1, new_nonce_hash2, and new_nonce_hash3 are obtained as the 128 lower-order bits of SHA1 of the byte string derived from the new_nonce string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with auth_key_aux_hash. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</li>
|
||||
<li>auth_key_aux_hash is the 64 <em>higher-order</em> bits of SHA1(auth_key). It must not be confused with auth_key_hash.</li>
|
||||
</ul>
|
||||
<p>In the other case, the client goes to <a href="/mtproto/auth_key#6-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message">Item 6)</a> generating a new <em>b</em>.
|
||||
<p>In the other case, the client goes to <a href="/mtproto/auth_key#7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message">Item 7)</a> generating a new <em>b</em>.
|
||||
In the first case, the client and the server have negotiated auth_key, following which they forget all other temporary data, and the client creates another encrypted session using auth_key. At the same time, server_salt is initially set to <code>substr(new_nonce, 0, 8) XOR substr(server_nonce, 0, 8)</code>. If required, the client stores the difference between server_time received in 5) and its local time, to be able always to have a good approximation of server time which is required to generate correct message identifiers.</p>
|
||||
<p><strong>IMPORTANT</strong>: Apart from the conditions on the Diffie-Hellman prime <strong>dh_prime</strong> and generator <strong>g</strong>, both sides are to check that <strong>g</strong>, <strong>g_a</strong> and <strong>g_b</strong> are greater than <strong>1</strong> and less than <strong>dh_prime - 1</strong>. We recommend checking that <strong>g_a</strong> and <strong>g_b</strong> are between <strong>2^{2048-64}</strong> and <strong>dh_prime - 2^{2048-64}</strong> as well.</p>
|
||||
<h4><a class="anchor" href="#error-handling-lost-queries-and-responses" id="error-handling-lost-queries-and-responses" name="error-handling-lost-queries-and-responses"><i class="anchor-icon"></i></a>Error Handling (Lost Queries and Responses)</h4>
|
||||
|
|
|
@ -54,9 +54,9 @@
|
|||
<h5><a class="anchor" href="#1-client-sends-query-to-server" id="1-client-sends-query-to-server" name="1-client-sends-query-to-server"><i class="anchor-icon"></i></a>1) Client sends query to server</h5>
|
||||
<!-- start req_pq_multi -->
|
||||
<p>Sent payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 00 00 00 87 A8 9C 64
|
||||
0010 | 14 00 00 00 F1 8E 7E BE FA DA 40 F3 24 30 86 3C
|
||||
0020 | 25 83 58 32 EF 2E CF 48</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 00 00 00 04 AB 9C 64
|
||||
0010 | 14 00 00 00 F1 8E 7E BE BE 56 49 85 F8 F5 3D 6B
|
||||
0020 | 80 09 3F 1D 63 D0 4D 95</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -78,7 +78,7 @@
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>0000000087A89C64</code></td>
|
||||
<td><code>0000000004AB9C64</code></td>
|
||||
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -96,7 +96,7 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>FADA40F32430863C25835832EF2ECF48</code></td>
|
||||
<td><code>BE564985F8F53D6B80093F1D63D04D95</code></td>
|
||||
<td>Random number</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -105,10 +105,10 @@
|
|||
<h5><a class="anchor" href="#2-server-sends-response-of-the-form" id="2-server-sends-response-of-the-form" name="2-server-sends-response-of-the-form"><i class="anchor-icon"></i></a>2) Server sends response of the form</h5>
|
||||
<!-- start resPQ -->
|
||||
<p>Received payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 B8 BB 7E 87 A8 9C 64
|
||||
0010 | 50 00 00 00 63 24 16 05 FA DA 40 F3 24 30 86 3C
|
||||
0020 | 25 83 58 32 EF 2E CF 48 82 93 B0 B5 EF 95 58 C3
|
||||
0030 | 28 89 A6 F6 05 CA C3 C6 08 16 2C D4 B9 32 B1 0F
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 D4 66 50 04 AB 9C 64
|
||||
0010 | 50 00 00 00 63 24 16 05 BE 56 49 85 F8 F5 3D 6B
|
||||
0020 | 80 09 3F 1D 63 D0 4D 95 97 2C 26 58 37 20 81 DA
|
||||
0030 | 4D 4A 89 A2 A4 B1 3A 5E 08 18 97 76 19 67 7E 4A
|
||||
0040 | F1 00 00 00 15 C4 B5 1C 03 00 00 00 A5 B7 F7 09
|
||||
0050 | 35 5F C3 0B 21 6B E8 6C 02 2B B4 C3 85 FD 64 DE
|
||||
0060 | 85 1D 9D D0</code></pre>
|
||||
|
@ -133,7 +133,7 @@
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01B8BB7E87A89C64</code></td>
|
||||
<td><code>01D4665004AB9C64</code></td>
|
||||
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -151,19 +151,19 @@
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>FADA40F32430863C25835832EF2ECF48</code></td>
|
||||
<td><code>BE564985F8F53D6B80093F1D63D04D95</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>8293B0B5EF9558C32889A6F605CAC3C6</code></td>
|
||||
<td><code>972C2658372081DA4D4A89A2A4B13A5E</code></td>
|
||||
<td>Server-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pq</td>
|
||||
<td>56, 12</td>
|
||||
<td><code>08162CD4B932B10FF1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1597885859694186481</td>
|
||||
<td><code>0818977619677E4AF1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1772014829876169457</td>
|
||||
<td>Single-byte prefix denoting length, an 8-byte string, and three bytes of padding</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -209,22 +209,22 @@
|
|||
<h4><a class="anchor" href="#proof-of-work" id="proof-of-work" name="proof-of-work"><i class="anchor-icon"></i></a>Proof of work</h4>
|
||||
<h5><a class="anchor" href="#3-client-decomposes-pq-into-prime-factors-such-that-p--q" id="3-client-decomposes-pq-into-prime-factors-such-that-p--q" name="3-client-decomposes-pq-into-prime-factors-such-that-p--q"><i class="anchor-icon"></i></a>3) Client decomposes pq into prime factors such that p < q.</h5>
|
||||
<!-- start pq -->
|
||||
<pre><code>pq = 1597885859694186481</code></pre>
|
||||
<p>Decompose into 2 prime cofactors: <code>1597885859694186481 = 1058029501 * 1510246981</code></p>
|
||||
<pre><code>p = 1058029501
|
||||
q = 1510246981</code></pre>
|
||||
<pre><code>pq = 1772014829876169457</code></pre>
|
||||
<p>Decompose into 2 prime cofactors: <code>1772014829876169457 = 1245446773 * 1422794509</code></p>
|
||||
<pre><code>p = 1245446773
|
||||
q = 1422794509</code></pre>
|
||||
<!-- end pq -->
|
||||
<h4><a class="anchor" href="#presenting-proof-of-work-server-authentication" id="presenting-proof-of-work-server-authentication" name="presenting-proof-of-work-server-authentication"><i class="anchor-icon"></i></a>Presenting proof of work; Server authentication</h4>
|
||||
<h5><a class="anchor" href="#4-encrypted-data-payload-generation" id="4-encrypted-data-payload-generation" name="4-encrypted-data-payload-generation"><i class="anchor-icon"></i></a>4) <code>encrypted_data</code> payload generation</h5>
|
||||
<p>First of all, generate an <code>encrypted_data</code> payload as follows:</p>
|
||||
<!-- start p_q_inner_data_dc -->
|
||||
<p>Generated payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 95 5F F5 A9 08 16 2C D4 B9 32 B1 0F F1 00 00 00
|
||||
0010 | 04 3F 10 3F BD 00 00 00 04 5A 04 8A 45 00 00 00
|
||||
0020 | FA DA 40 F3 24 30 86 3C 25 83 58 32 EF 2E CF 48
|
||||
0030 | 82 93 B0 B5 EF 95 58 C3 28 89 A6 F6 05 CA C3 C6
|
||||
0040 | E5 6A F7 39 8C 71 42 86 86 98 E5 F5 8F 89 A1 8B
|
||||
0050 | AA 43 00 AE 87 A7 B9 6B 0D 01 B1 DC E9 9B 07 21
|
||||
<pre><code>0000 | 95 5F F5 A9 08 18 97 76 19 67 7E 4A F1 00 00 00
|
||||
0010 | 04 4A 3C 02 75 00 00 00 04 54 CE 1F 0D 00 00 00
|
||||
0020 | BE 56 49 85 F8 F5 3D 6B 80 09 3F 1D 63 D0 4D 95
|
||||
0030 | 97 2C 26 58 37 20 81 DA 4D 4A 89 A2 A4 B1 3A 5E
|
||||
0040 | FF 1B 04 74 1F 0D B9 FB 44 E1 1B 17 2F 23 8A 68
|
||||
0050 | C8 03 B3 E6 22 12 46 44 1E B4 38 30 43 88 3B 98
|
||||
0060 | 02 00 00 00</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>p_q_inner_data_dc#a9f55f95 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int = P_Q_inner_data;</code></pre>
|
||||
|
@ -247,37 +247,37 @@ q = 1510246981</code></pre>
|
|||
<tr>
|
||||
<td>pq</td>
|
||||
<td>4, 12</td>
|
||||
<td><code>08162CD4B932B10FF1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1597885859694186481</td>
|
||||
<td><code>0818977619677E4AF1000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1772014829876169457</td>
|
||||
<td>Single-byte prefix denoting length, 8-byte string, and three bytes of padding</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>16, 8</td>
|
||||
<td><code>043F103FBD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1058029501</td>
|
||||
<td><code>044A3C0275000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1245446773</td>
|
||||
<td>First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>q</td>
|
||||
<td>24, 8</td>
|
||||
<td><code>045A048A45000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1510246981</td>
|
||||
<td><code>0454CE1F0D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1422794509</td>
|
||||
<td>Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>32, 16</td>
|
||||
<td><code>FADA40F32430863C25835832EF2ECF48</code></td>
|
||||
<td><code>BE564985F8F53D6B80093F1D63D04D95</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>48, 16</td>
|
||||
<td><code>8293B0B5EF9558C32889A6F605CAC3C6</code></td>
|
||||
<td><code>972C2658372081DA4D4A89A2A4B13A5E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce</td>
|
||||
<td>64, 32</td>
|
||||
<td><code>E56AF7398C7142868698E5F58F89A18B</code> <code>AA4300AE87A7B96B0D01B1DCE99B0721</code></td>
|
||||
<td><code>FF1B04741F0DB9FB44E11B172F238A68</code> <code>C803B3E6221246441EB4383043883B98</code></td>
|
||||
<td>Client-generated random number</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -292,39 +292,39 @@ q = 1510246981</code></pre>
|
|||
<p>The serialization of <em>P_Q_inner_data</em> produces <strong>data</strong>, which is used to generate <strong>encrypted_data</strong> as specified in <a href="/mtproto/auth_key">step 4.1</a>.<br>
|
||||
These are the inputs to the algorithm specified in <a href="/mtproto/auth_key">step 4.1</a>:</p>
|
||||
<!-- start p_q_inner_data_input -->
|
||||
<pre><code>data = 955FF5A908162CD4B932B10FF1000000043F103FBD000000045A048A45000000FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C6E56AF7398C7142868698E5F58F89A18BAA4300AE87A7B96B0D01B1DCE99B072102000000
|
||||
random_padding_bytes = 534E43A33047EE7E3881F92F669DC5A6159FED723D7D2A7DD86A1AB4AE22AF3263AB39822511EF8CF2DD65C4B1D6B48FAA4ECC8E4621ED0DDC27D473F80DDD996BEB457BF8A486E0B024EC86C7A77D531087F944712FEDD47EBE03F0</code></pre>
|
||||
<pre><code>data = 955FF5A90818977619677E4AF1000000044A3C02750000000454CE1F0D000000BE564985F8F53D6B80093F1D63D04D95972C2658372081DA4D4A89A2A4B13A5EFF1B04741F0DB9FB44E11B172F238A68C803B3E6221246441EB4383043883B9802000000
|
||||
random_padding_bytes = 3F2FC901E6D1AABD2264E29A9BC38FFF064A882D86B06020F390E6FE4D67421825EDD415E0677F3D0BBAB3CE1DE278C9F9041410BDE69CDA581FAAA55A6E4BD0C715CD5214F2B2290A37050733A3DB9BDD78C55431D2734A9DFCFF6E</code></pre>
|
||||
<!-- end p_q_inner_data_input -->
|
||||
<p>And this is the output:</p>
|
||||
<!-- start p_q_inner_data_output -->
|
||||
<pre><code>encrypted_data = 5E846BB856F59D773EFCA596F018400A5748CE6A6DC8B5C791ECA7F570A004FE95524B927B6ED73687B86514B9D27D19BA06D59BCF00239945C90BD31E3D96EE364676803FFB9BA656AFF8F39DB696A505BF142746295CC03F61589E86359D91B588A1FD8B8AD5FA25E492FF64C6A8CF4553D38EDFB303C5F31129DF808BA59FAA3DFAE27C4E66D4A2A2BC9C7C7B615C765C15DAB6711E6905126FF5F0CFCCE43C5B6187DDFCF4881A008002CCDE822F38CEC935FD3564A7812FE0E35F83A0291C6BD853A467AF9D75B02579FAD20D19BC49DDA21E6D5734C3E223BF55D8261E2ED41646B70043DC9CDC1DEFB8123E952459C811E2F17404B8E99802847851BF</code></pre>
|
||||
<pre><code>encrypted_data = 450683240DB77828CA539E5D6580EFB3B24613D4A646F5FD09CC800C69A5AE391E33B38DCF818E29390221018D0980EF7939B50C0ADC7BBA6D39D6FA2324A70B4B438E1DF82D1ACE2F25CFA757149AEAEEBD6C5BD2139D16F3B6A579BFDEF6A47A7EA4A1214B22804E2ED376ABEA434C025404760857FB32C1BA9BEF401861F0A3E4C051B1D865097913BCD90584F8F2F25C1770BAA228C3A477E495BB798963B7304F96DB31D26E923D26C7C5F6941909592BF43950DE5C616C5AC3ED15249DCC972E704969F32AA0B1A24E81F2B9B38722CBE2E6DDFAAA930FA1211FCC16281138F623E92E9C6E08BD07A2812E74DBB6EE18CE5AE3B5A065A5B95C78121C23</code></pre>
|
||||
<!-- end p_q_inner_data_output -->
|
||||
<p>The length of the final string is 256 bytes.</p>
|
||||
<h5><a class="anchor" href="#5-send-req-dh-params-query-with-generated-encrypted-data" id="5-send-req-dh-params-query-with-generated-encrypted-data" name="5-send-req-dh-params-query-with-generated-encrypted-data"><i class="anchor-icon"></i></a>5) Send req_DH_params query with generated <code>encrypted_data</code></h5>
|
||||
<!-- start req_DH_params -->
|
||||
<p>Sent payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 04 00 00 00 87 A8 9C 64
|
||||
0010 | 40 01 00 00 BE E4 12 D7 FA DA 40 F3 24 30 86 3C
|
||||
0020 | 25 83 58 32 EF 2E CF 48 82 93 B0 B5 EF 95 58 C3
|
||||
0030 | 28 89 A6 F6 05 CA C3 C6 04 3F 10 3F BD 00 00 00
|
||||
0040 | 04 5A 04 8A 45 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 5E 84 6B B8 56 F5 9D 77 3E FC A5 96
|
||||
0060 | F0 18 40 0A 57 48 CE 6A 6D C8 B5 C7 91 EC A7 F5
|
||||
0070 | 70 A0 04 FE 95 52 4B 92 7B 6E D7 36 87 B8 65 14
|
||||
0080 | B9 D2 7D 19 BA 06 D5 9B CF 00 23 99 45 C9 0B D3
|
||||
0090 | 1E 3D 96 EE 36 46 76 80 3F FB 9B A6 56 AF F8 F3
|
||||
00A0 | 9D B6 96 A5 05 BF 14 27 46 29 5C C0 3F 61 58 9E
|
||||
00B0 | 86 35 9D 91 B5 88 A1 FD 8B 8A D5 FA 25 E4 92 FF
|
||||
00C0 | 64 C6 A8 CF 45 53 D3 8E DF B3 03 C5 F3 11 29 DF
|
||||
00D0 | 80 8B A5 9F AA 3D FA E2 7C 4E 66 D4 A2 A2 BC 9C
|
||||
00E0 | 7C 7B 61 5C 76 5C 15 DA B6 71 1E 69 05 12 6F F5
|
||||
00F0 | F0 CF CC E4 3C 5B 61 87 DD FC F4 88 1A 00 80 02
|
||||
0100 | CC DE 82 2F 38 CE C9 35 FD 35 64 A7 81 2F E0 E3
|
||||
0110 | 5F 83 A0 29 1C 6B D8 53 A4 67 AF 9D 75 B0 25 79
|
||||
0120 | FA D2 0D 19 BC 49 DD A2 1E 6D 57 34 C3 E2 23 BF
|
||||
0130 | 55 D8 26 1E 2E D4 16 46 B7 00 43 DC 9C DC 1D EF
|
||||
0140 | B8 12 3E 95 24 59 C8 11 E2 F1 74 04 B8 E9 98 02
|
||||
0150 | 84 78 51 BF</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 04 00 00 00 04 AB 9C 64
|
||||
0010 | 40 01 00 00 BE E4 12 D7 BE 56 49 85 F8 F5 3D 6B
|
||||
0020 | 80 09 3F 1D 63 D0 4D 95 97 2C 26 58 37 20 81 DA
|
||||
0030 | 4D 4A 89 A2 A4 B1 3A 5E 04 4A 3C 02 75 00 00 00
|
||||
0040 | 04 54 CE 1F 0D 00 00 00 85 FD 64 DE 85 1D 9D D0
|
||||
0050 | FE 00 01 00 45 06 83 24 0D B7 78 28 CA 53 9E 5D
|
||||
0060 | 65 80 EF B3 B2 46 13 D4 A6 46 F5 FD 09 CC 80 0C
|
||||
0070 | 69 A5 AE 39 1E 33 B3 8D CF 81 8E 29 39 02 21 01
|
||||
0080 | 8D 09 80 EF 79 39 B5 0C 0A DC 7B BA 6D 39 D6 FA
|
||||
0090 | 23 24 A7 0B 4B 43 8E 1D F8 2D 1A CE 2F 25 CF A7
|
||||
00A0 | 57 14 9A EA EE BD 6C 5B D2 13 9D 16 F3 B6 A5 79
|
||||
00B0 | BF DE F6 A4 7A 7E A4 A1 21 4B 22 80 4E 2E D3 76
|
||||
00C0 | AB EA 43 4C 02 54 04 76 08 57 FB 32 C1 BA 9B EF
|
||||
00D0 | 40 18 61 F0 A3 E4 C0 51 B1 D8 65 09 79 13 BC D9
|
||||
00E0 | 05 84 F8 F2 F2 5C 17 70 BA A2 28 C3 A4 77 E4 95
|
||||
00F0 | BB 79 89 63 B7 30 4F 96 DB 31 D2 6E 92 3D 26 C7
|
||||
0100 | C5 F6 94 19 09 59 2B F4 39 50 DE 5C 61 6C 5A C3
|
||||
0110 | ED 15 24 9D CC 97 2E 70 49 69 F3 2A A0 B1 A2 4E
|
||||
0120 | 81 F2 B9 B3 87 22 CB E2 E6 DD FA AA 93 0F A1 21
|
||||
0130 | 1F CC 16 28 11 38 F6 23 E9 2E 9C 6E 08 BD 07 A2
|
||||
0140 | 81 2E 74 DB B6 EE 18 CE 5A E3 B5 A0 65 A5 B9 5C
|
||||
0150 | 78 12 1C 23</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -346,7 +346,7 @@ random_padding_bytes = 534E43A33047EE7E3881F92F669DC5A6159FED723D7D2A7DD86A1AB4A
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>0400000087A89C64</code></td>
|
||||
<td><code>0400000004AB9C64</code></td>
|
||||
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -364,25 +364,25 @@ random_padding_bytes = 534E43A33047EE7E3881F92F669DC5A6159FED723D7D2A7DD86A1AB4A
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>FADA40F32430863C25835832EF2ECF48</code></td>
|
||||
<td><code>BE564985F8F53D6B80093F1D63D04D95</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>8293B0B5EF9558C32889A6F605CAC3C6</code></td>
|
||||
<td><code>972C2658372081DA4D4A89A2A4B13A5E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>p</td>
|
||||
<td>56, 8</td>
|
||||
<td><code>043F103FBD000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1058029501</td>
|
||||
<td><code>044A3C0275000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1245446773</td>
|
||||
<td>First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>q</td>
|
||||
<td>64, 8</td>
|
||||
<td><code>045A048A45000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1510246981</td>
|
||||
<td><code>0454CE1F0D000000</code><br>TL byte deserialization <br>=> bigendian conversion to decimal<br>=> 1422794509</td>
|
||||
<td>Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -394,8 +394,8 @@ random_padding_bytes = 534E43A33047EE7E3881F92F669DC5A6159FED723D7D2A7DD86A1AB4A
|
|||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>80, 260</td>
|
||||
<td><code>FE0001005E846BB856F59D773EFCA596</code> <code>F018400A5748CE6A6DC8B5C791ECA7F5</code> <code>70A004FE95524B927B6ED73687B86514</code> <code>B9D27D19BA06D59BCF00239945C90BD3</code> <code>1E3D96EE364676803FFB9BA656AFF8F3</code> <code>9DB696A505BF142746295CC03F61589E</code> <code>86359D91B588A1FD8B8AD5FA25E492FF</code> <code>64C6A8CF4553D38EDFB303C5F31129DF</code> <code>808BA59FAA3DFAE27C4E66D4A2A2BC9C</code> <code>7C7B615C765C15DAB6711E6905126FF5</code> <code>F0CFCCE43C5B6187DDFCF4881A008002</code> <code>CCDE822F38CEC935FD3564A7812FE0E3</code> <code>5F83A0291C6BD853A467AF9D75B02579</code> <code>FAD20D19BC49DDA21E6D5734C3E223BF</code> <code>55D8261E2ED41646B70043DC9CDC1DEF</code> <code>B8123E952459C811E2F17404B8E99802</code><br> <code>847851BF</code></td>
|
||||
<td>See <a href="#generation-of-encrypted-data">Generation of encrypted_data »</a></td>
|
||||
<td><code>FE000100450683240DB77828CA539E5D</code> <code>6580EFB3B24613D4A646F5FD09CC800C</code> <code>69A5AE391E33B38DCF818E2939022101</code> <code>8D0980EF7939B50C0ADC7BBA6D39D6FA</code> <code>2324A70B4B438E1DF82D1ACE2F25CFA7</code> <code>57149AEAEEBD6C5BD2139D16F3B6A579</code> <code>BFDEF6A47A7EA4A1214B22804E2ED376</code> <code>ABEA434C025404760857FB32C1BA9BEF</code> <code>401861F0A3E4C051B1D865097913BCD9</code> <code>0584F8F2F25C1770BAA228C3A477E495</code> <code>BB798963B7304F96DB31D26E923D26C7</code> <code>C5F6941909592BF43950DE5C616C5AC3</code> <code>ED15249DCC972E704969F32AA0B1A24E</code> <code>81F2B9B38722CBE2E6DDFAAA930FA121</code> <code>1FCC16281138F623E92E9C6E08BD07A2</code> <code>812E74DBB6EE18CE5AE3B5A065A5B95C</code><br> <code>78121C23</code></td>
|
||||
<td>See above</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -403,47 +403,47 @@ random_padding_bytes = 534E43A33047EE7E3881F92F669DC5A6159FED723D7D2A7DD86A1AB4A
|
|||
<h5><a class="anchor" href="#6-server-responds-with" id="6-server-responds-with" name="6-server-responds-with"><i class="anchor-icon"></i></a>6) Server responds with:</h5>
|
||||
<!-- start server_DH_params_ok -->
|
||||
<p>Received payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 78 4F 2B 88 A8 9C 64
|
||||
0010 | 78 02 00 00 5C 07 E8 D0 FA DA 40 F3 24 30 86 3C
|
||||
0020 | 25 83 58 32 EF 2E CF 48 82 93 B0 B5 EF 95 58 C3
|
||||
0030 | 28 89 A6 F6 05 CA C3 C6 FE 50 02 00 AE 97 57 53
|
||||
0040 | 05 3F 28 E4 CB 74 11 62 70 70 21 D3 46 28 97 C6
|
||||
0050 | F2 49 46 98 10 6F 2D 4A 6A 8C CB E8 AE 5D 35 54
|
||||
0060 | 79 91 F3 81 0C EC E3 3E 14 60 B6 BB 6A 3A C9 B9
|
||||
0070 | 98 47 F9 5E 3C 47 08 82 E2 1C 9D 2D 0A BD 8D 91
|
||||
0080 | 71 03 4C EE 99 1F 90 7C 5F 13 1E DE 6E B7 33 0C
|
||||
0090 | 6E AD 5D 60 60 82 08 BF 40 DB 3D 20 F7 48 0B 34
|
||||
00A0 | 9B C5 F4 7B 67 F8 15 3F 3C 90 C1 88 68 22 8B 8D
|
||||
00B0 | A7 35 96 B7 7E 63 55 F9 17 81 B8 A8 42 51 79 EB
|
||||
00C0 | 05 A7 CE B9 04 0B 3B 25 17 1B E8 2B 17 A4 85 F2
|
||||
00D0 | 10 90 03 1E 12 26 74 79 8F B0 A8 19 EC 1D 71 53
|
||||
00E0 | 71 14 29 3B 82 1B 07 67 21 A5 C8 75 E4 F7 8B 1F
|
||||
00F0 | 2A 9D 1D F1 B3 0D 0A 13 36 7A 00 CD A3 6E EC E6
|
||||
0100 | 5C 6D 4A 91 D7 59 D6 53 1A 4D E4 AF 02 80 1C 52
|
||||
0110 | 7E 20 B3 07 D3 27 C5 D0 E3 91 61 59 44 9D 9E C2
|
||||
0120 | 4E E0 EF CD AA F7 8F 7D 8B F6 47 24 FB 62 FF 0E
|
||||
0130 | 7D AE D5 66 97 6A FA BC 34 86 A3 26 FB C2 F0 24
|
||||
0140 | 04 67 F5 D1 D1 CD 7E DF 33 9F F1 1F BE 4D 3F 83
|
||||
0150 | F4 33 CF 09 03 77 FE 20 47 CA 4B 35 7C 5F 75 4A
|
||||
0160 | F5 45 F4 3A 8C 09 F8 EE CF 7B 16 0B 31 F8 02 4D
|
||||
0170 | 5A 7F D8 45 D7 41 83 8A E8 9D 8C 09 B1 97 DB 51
|
||||
0180 | 29 E1 E1 06 06 51 54 12 97 04 F0 B9 23 74 9F 9B
|
||||
0190 | 65 D7 E6 B9 3C E4 96 5E 2A 76 EE A2 AE 18 44 4C
|
||||
01A0 | 5B 41 6E 08 62 C0 7F 83 AD C7 7D 35 02 22 5E 47
|
||||
01B0 | 5C B1 28 2B 25 1B F0 69 24 D5 ED F6 F1 98 7D 50
|
||||
01C0 | 1C 27 95 56 F0 FD 1B 4E 78 DC A0 72 A4 22 EE B6
|
||||
01D0 | 6A 80 73 A9 5E 93 92 8F 0D 40 FF AC E7 ED CB 49
|
||||
01E0 | C5 85 11 0E 66 A0 C4 B3 47 BC 44 7B 8E 3D 78 03
|
||||
01F0 | 49 26 BE 45 58 19 AA CC D4 DE 2F 16 D4 3D 4D FC
|
||||
0200 | B0 36 E0 41 88 2D A8 30 C1 28 3E AB 16 B7 04 0A
|
||||
0210 | 67 56 EC EA DD 88 9A 5E E7 57 B7 75 F5 B9 21 8F
|
||||
0220 | 3A CB A2 C3 90 E4 FA 7E AD 1D 05 4F E4 B9 8D 4C
|
||||
0230 | 31 04 6F 4D 3F AA E0 97 8E 8A 73 C2 32 38 8E 11
|
||||
0240 | B7 F1 FC C8 86 78 73 BD FC 99 74 FC 89 1A 95 7D
|
||||
0250 | 09 56 05 11 82 D7 B5 C6 3E FA 4E C3 3D 55 54 88
|
||||
0260 | 17 10 B2 41 1A 20 1C 5C 00 FF 19 4B DD 50 6F 7B
|
||||
0270 | D2 B4 6B E0 DE D0 9A 68 13 14 8B 03 6D 50 E1 5B
|
||||
0280 | 9C 1A 7D F2 75 C1 73 40 FC C4 E9 03</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 D8 7F 0D 05 AB 9C 64
|
||||
0010 | 78 02 00 00 5C 07 E8 D0 BE 56 49 85 F8 F5 3D 6B
|
||||
0020 | 80 09 3F 1D 63 D0 4D 95 97 2C 26 58 37 20 81 DA
|
||||
0030 | 4D 4A 89 A2 A4 B1 3A 5E FE 50 02 00 EE B7 F5 A7
|
||||
0040 | C4 60 23 76 69 EB 24 F8 83 38 C2 38 F3 35 DE 75
|
||||
0050 | 85 3B 64 6B 60 B8 AE 30 23 6A E4 C2 F0 B9 49 10
|
||||
0060 | 6D D6 67 D8 C1 3E BE EA 6C 39 73 2E 29 C8 BC 90
|
||||
0070 | B7 C5 C5 7B E5 F8 5A A1 F6 BB FE F8 52 EF 75 47
|
||||
0080 | 07 95 E6 C6 07 EA 27 5E CE 76 B8 AA BF E7 57 EE
|
||||
0090 | 8D 98 0C 50 9A 9D 1B 46 81 47 9A BD 87 49 9B A6
|
||||
00A0 | BB BE E0 CA E1 CA 16 2D C1 1A 01 6B 9D 62 97 0E
|
||||
00B0 | 92 80 F9 61 29 25 53 08 D6 B1 85 43 13 62 3F 6F
|
||||
00C0 | 83 CE DD C4 37 1A FD 8E A2 43 FC 0F F3 99 29 6B
|
||||
00D0 | 92 A9 CB B3 C8 36 DD 6E 56 FE B8 C5 08 45 6D 75
|
||||
00E0 | D1 3F 43 2A C2 45 CB 5F CB A5 68 80 C6 14 64 C8
|
||||
00F0 | A8 31 82 62 F4 68 1D 03 10 F9 41 98 4E 36 2E 94
|
||||
0100 | D2 C7 37 CF 66 22 8C 60 BE 16 77 BD 5E 25 44 58
|
||||
0110 | 36 15 74 60 A0 A4 AA F9 DB AD C2 47 CA 0A CC C6
|
||||
0120 | FB E3 4C 00 FD 27 F6 8F 2B B6 1D 88 3F CF B8 70
|
||||
0130 | C9 4B 46 A7 A5 88 A0 FB DD 65 20 2B 89 4F 56 F7
|
||||
0140 | 90 A7 B4 94 EC D2 A9 D1 21 AB E9 3D 48 11 7C B1
|
||||
0150 | D5 76 7C 55 01 67 CA B5 C8 BF BF F3 4E 72 CA 30
|
||||
0160 | 45 6A 5E 4B 86 B7 22 0D 16 57 BC 4C 21 8E 3E 7C
|
||||
0170 | 06 75 18 0F FB 87 1A 6B C8 20 29 04 B2 0B 89 E1
|
||||
0180 | E6 FE F4 F9 A6 13 D1 5D 09 4A 9C 15 18 64 46 47
|
||||
0190 | 90 EB 21 B7 44 E4 E0 37 07 C3 85 D7 55 70 58 B2
|
||||
01A0 | 2D 02 F7 B1 D6 A5 0F 89 25 7A 7B 34 B5 E7 69 6D
|
||||
01B0 | 39 E6 ED 77 A1 B5 5C C5 D8 AE 5A 3B 06 12 24 48
|
||||
01C0 | 4B FE 95 A4 BF 54 35 04 55 1B F4 68 4B D9 8B 5E
|
||||
01D0 | EC F6 7B 19 4B C4 FB FC B2 49 82 18 10 B8 EF B7
|
||||
01E0 | 00 DF B9 F9 F6 20 32 6C 73 72 5E 22 5F 81 D8 21
|
||||
01F0 | 9F 8C 05 43 62 5C 36 9E 3D 6A BA 40 8B 6F D3 6A
|
||||
0200 | 64 72 8B 1C C8 12 BF 8C 92 C8 06 8F EF 3F 21 6C
|
||||
0210 | 2C C4 15 02 DD F9 36 93 82 A5 46 90 92 71 4A 89
|
||||
0220 | C6 CF E7 33 D6 C2 71 68 E5 83 4E 29 7B 63 65 E8
|
||||
0230 | CB DD 06 6F 43 CF 69 B0 3F BE 9F A2 0C EB 7D A2
|
||||
0240 | 07 5D 06 A8 65 B8 8D D3 CF 95 31 69 76 C4 A4 E8
|
||||
0250 | 4B DC DD 7B A7 D2 14 17 69 1A 5A 77 98 18 D4 83
|
||||
0260 | CC DF D6 F1 7D FA 5E 53 3B 2E 24 67 2F A1 0E 22
|
||||
0270 | F8 0C 0D D1 54 77 F2 E8 85 53 F2 6D 0F 2D 70 F3
|
||||
0280 | C3 B6 27 6C E9 BC 54 2A 8B 94 07 C6</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -465,7 +465,7 @@ random_padding_bytes = 534E43A33047EE7E3881F92F669DC5A6159FED723D7D2A7DD86A1AB4A
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01784F2B88A89C64</code></td>
|
||||
<td><code>01D87F0D05AB9C64</code></td>
|
||||
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -483,40 +483,40 @@ random_padding_bytes = 534E43A33047EE7E3881F92F669DC5A6159FED723D7D2A7DD86A1AB4A
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>FADA40F32430863C25835832EF2ECF48</code></td>
|
||||
<td><code>BE564985F8F53D6B80093F1D63D04D95</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>8293B0B5EF9558C32889A6F605CAC3C6</code></td>
|
||||
<td><code>972C2658372081DA4D4A89A2A4B13A5E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_answer</td>
|
||||
<td>56, 596</td>
|
||||
<td><code>FE500200AE975753053F28E4CB741162</code> <code>707021D3462897C6F2494698106F2D4A</code> <code>6A8CCBE8AE5D35547991F3810CECE33E</code> <code>1460B6BB6A3AC9B99847F95E3C470882</code> <code>E21C9D2D0ABD8D9171034CEE991F907C</code> <code>5F131EDE6EB7330C6EAD5D60608208BF</code> <code>40DB3D20F7480B349BC5F47B67F8153F</code> <code>3C90C18868228B8DA73596B77E6355F9</code> <code>1781B8A8425179EB05A7CEB9040B3B25</code> <code>171BE82B17A485F21090031E12267479</code> <code>8FB0A819EC1D71537114293B821B0767</code> <code>21A5C875E4F78B1F2A9D1DF1B30D0A13</code> <code>367A00CDA36EECE65C6D4A91D759D653</code> <code>1A4DE4AF02801C527E20B307D327C5D0</code> <code>E3916159449D9EC24EE0EFCDAAF78F7D</code> <code>8BF64724FB62FF0E7DAED566976AFABC</code> <code>3486A326FBC2F0240467F5D1D1CD7EDF</code> <code>339FF11FBE4D3F83F433CF090377FE20</code> <code>47CA4B357C5F754AF545F43A8C09F8EE</code> <code>CF7B160B31F8024D5A7FD845D741838A</code> <code>E89D8C09B197DB5129E1E10606515412</code> <code>9704F0B923749F9B65D7E6B93CE4965E</code> <code>2A76EEA2AE18444C5B416E0862C07F83</code> <code>ADC77D3502225E475CB1282B251BF069</code> <code>24D5EDF6F1987D501C279556F0FD1B4E</code> <code>78DCA072A422EEB66A8073A95E93928F</code> <code>0D40FFACE7EDCB49C585110E66A0C4B3</code> <code>47BC447B8E3D78034926BE455819AACC</code> <code>D4DE2F16D43D4DFCB036E041882DA830</code> <code>C1283EAB16B7040A6756ECEADD889A5E</code> <code>E757B775F5B9218F3ACBA2C390E4FA7E</code> <code>AD1D054FE4B98D4C31046F4D3FAAE097</code> <code>8E8A73C232388E11B7F1FCC8867873BD</code> <code>FC9974FC891A957D0956051182D7B5C6</code> <code>3EFA4EC33D5554881710B2411A201C5C</code> <code>00FF194BDD506F7BD2B46BE0DED09A68</code> <code>13148B036D50E15B9C1A7DF275C17340</code><br> <code>FCC4E903</code></td>
|
||||
<td>See <a href="#conversion-of-encrypted-answer-into-answer">Decomposition of encrypted_answer »</a></td>
|
||||
<td><code>FE500200EEB7F5A7C460237669EB24F8</code> <code>8338C238F335DE75853B646B60B8AE30</code> <code>236AE4C2F0B949106DD667D8C13EBEEA</code> <code>6C39732E29C8BC90B7C5C57BE5F85AA1</code> <code>F6BBFEF852EF75470795E6C607EA275E</code> <code>CE76B8AABFE757EE8D980C509A9D1B46</code> <code>81479ABD87499BA6BBBEE0CAE1CA162D</code> <code>C11A016B9D62970E9280F96129255308</code> <code>D6B1854313623F6F83CEDDC4371AFD8E</code> <code>A243FC0FF399296B92A9CBB3C836DD6E</code> <code>56FEB8C508456D75D13F432AC245CB5F</code> <code>CBA56880C61464C8A8318262F4681D03</code> <code>10F941984E362E94D2C737CF66228C60</code> <code>BE1677BD5E25445836157460A0A4AAF9</code> <code>DBADC247CA0ACCC6FBE34C00FD27F68F</code> <code>2BB61D883FCFB870C94B46A7A588A0FB</code> <code>DD65202B894F56F790A7B494ECD2A9D1</code> <code>21ABE93D48117CB1D5767C550167CAB5</code> <code>C8BFBFF34E72CA30456A5E4B86B7220D</code> <code>1657BC4C218E3E7C0675180FFB871A6B</code> <code>C8202904B20B89E1E6FEF4F9A613D15D</code> <code>094A9C151864464790EB21B744E4E037</code> <code>07C385D7557058B22D02F7B1D6A50F89</code> <code>257A7B34B5E7696D39E6ED77A1B55CC5</code> <code>D8AE5A3B061224484BFE95A4BF543504</code> <code>551BF4684BD98B5EECF67B194BC4FBFC</code> <code>B249821810B8EFB700DFB9F9F620326C</code> <code>73725E225F81D8219F8C0543625C369E</code> <code>3D6ABA408B6FD36A64728B1CC812BF8C</code> <code>92C8068FEF3F216C2CC41502DDF93693</code> <code>82A5469092714A89C6CFE733D6C27168</code> <code>E5834E297B6365E8CBDD066F43CF69B0</code> <code>3FBE9FA20CEB7DA2075D06A865B88DD3</code> <code>CF95316976C4A4E84BDCDD7BA7D21417</code> <code>691A5A779818D483CCDFD6F17DFA5E53</code> <code>3B2E24672FA10E22F80C0DD15477F2E8</code> <code>8553F26D0F2D70F3C3B6276CE9BC542A</code><br> <code>8B9407C6</code></td>
|
||||
<td>See below</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- end server_DH_params_ok -->
|
||||
<p>Decrypt <code>encrypted_answer</code> using the reverse of the process specified in <a href="/mtproto/auth_key#5-server-responds-with">step 6</a>:</p>
|
||||
<p>Decrypt <code>encrypted_answer</code> using the reverse of the process specified in <a href="/mtproto/auth_key#6-server-responds-with">step 6</a>:</p>
|
||||
<!-- start server_DH_inner_data_input -->
|
||||
<pre><code>encrypted_answer = AE975753053F28E4CB741162707021D3462897C6F2494698106F2D4A6A8CCBE8AE5D35547991F3810CECE33E1460B6BB6A3AC9B99847F95E3C470882E21C9D2D0ABD8D9171034CEE991F907C5F131EDE6EB7330C6EAD5D60608208BF40DB3D20F7480B349BC5F47B67F8153F3C90C18868228B8DA73596B77E6355F91781B8A8425179EB05A7CEB9040B3B25171BE82B17A485F21090031E122674798FB0A819EC1D71537114293B821B076721A5C875E4F78B1F2A9D1DF1B30D0A13367A00CDA36EECE65C6D4A91D759D6531A4DE4AF02801C527E20B307D327C5D0E3916159449D9EC24EE0EFCDAAF78F7D8BF64724FB62FF0E7DAED566976AFABC3486A326FBC2F0240467F5D1D1CD7EDF339FF11FBE4D3F83F433CF090377FE2047CA4B357C5F754AF545F43A8C09F8EECF7B160B31F8024D5A7FD845D741838AE89D8C09B197DB5129E1E106065154129704F0B923749F9B65D7E6B93CE4965E2A76EEA2AE18444C5B416E0862C07F83ADC77D3502225E475CB1282B251BF06924D5EDF6F1987D501C279556F0FD1B4E78DCA072A422EEB66A8073A95E93928F0D40FFACE7EDCB49C585110E66A0C4B347BC447B8E3D78034926BE455819AACCD4DE2F16D43D4DFCB036E041882DA830C1283EAB16B7040A6756ECEADD889A5EE757B775F5B9218F3ACBA2C390E4FA7EAD1D054FE4B98D4C31046F4D3FAAE0978E8A73C232388E11B7F1FCC8867873BDFC9974FC891A957D0956051182D7B5C63EFA4EC33D5554881710B2411A201C5C00FF194BDD506F7BD2B46BE0DED09A6813148B036D50E15B9C1A7DF275C17340FCC4E903
|
||||
tmp_aes_key = 5591331B9FCD7D6497E6CB4AA80ED849263CE0E54F29B93A527A6ED056DCCBC4
|
||||
tmp_aes_iv = D18064B0BB84ACB797BD4CB2F01B4FDE19F32A390408CAE58C7DCE20E56AF739</code></pre>
|
||||
<pre><code>encrypted_answer = EEB7F5A7C460237669EB24F88338C238F335DE75853B646B60B8AE30236AE4C2F0B949106DD667D8C13EBEEA6C39732E29C8BC90B7C5C57BE5F85AA1F6BBFEF852EF75470795E6C607EA275ECE76B8AABFE757EE8D980C509A9D1B4681479ABD87499BA6BBBEE0CAE1CA162DC11A016B9D62970E9280F96129255308D6B1854313623F6F83CEDDC4371AFD8EA243FC0FF399296B92A9CBB3C836DD6E56FEB8C508456D75D13F432AC245CB5FCBA56880C61464C8A8318262F4681D0310F941984E362E94D2C737CF66228C60BE1677BD5E25445836157460A0A4AAF9DBADC247CA0ACCC6FBE34C00FD27F68F2BB61D883FCFB870C94B46A7A588A0FBDD65202B894F56F790A7B494ECD2A9D121ABE93D48117CB1D5767C550167CAB5C8BFBFF34E72CA30456A5E4B86B7220D1657BC4C218E3E7C0675180FFB871A6BC8202904B20B89E1E6FEF4F9A613D15D094A9C151864464790EB21B744E4E03707C385D7557058B22D02F7B1D6A50F89257A7B34B5E7696D39E6ED77A1B55CC5D8AE5A3B061224484BFE95A4BF543504551BF4684BD98B5EECF67B194BC4FBFCB249821810B8EFB700DFB9F9F620326C73725E225F81D8219F8C0543625C369E3D6ABA408B6FD36A64728B1CC812BF8C92C8068FEF3F216C2CC41502DDF9369382A5469092714A89C6CFE733D6C27168E5834E297B6365E8CBDD066F43CF69B03FBE9FA20CEB7DA2075D06A865B88DD3CF95316976C4A4E84BDCDD7BA7D21417691A5A779818D483CCDFD6F17DFA5E533B2E24672FA10E22F80C0DD15477F2E88553F26D0F2D70F3C3B6276CE9BC542A8B9407C6
|
||||
tmp_aes_key = 267E82D02279BD2E0A3154EFEB6BF8415A7B9791082DF6D1E3614A97CDEB873D
|
||||
tmp_aes_iv = 1EEED0F3AE3C145F6CC1938B346DC11F6845EB6D691407E00A940FBDFF1B0474</code></pre>
|
||||
<!-- end server_DH_inner_data_input -->
|
||||
<p>Yielding:</p>
|
||||
<!-- start server_DH_inner_data_output -->
|
||||
<pre><code>answer_with_hash = 3486D4CAFF64BF66ECDE51033357BEBA33383EC4BA0D89B5FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010016FF6EA381CEBAC834CD02D5F61E51E80F7BB20351E46926C814967E6EA967D6CD0066A5A300FFFD9467036AA11DC0B4711A2AD0BA0A91E237BD290F879435B459DE032D262716909E6C6996BCED43461D5360BCD8C0039509F0F57FD4FD9B77F9A1E84C3D37763A0143924FC101C8F1B04B2140FF368EDBA7E9EF9E58E6B86C028B46FA8B1D05CEB6DF48E576AA7C08EC53513ACEF71EAB76ED09A17914B6371D4C2F86EEA1CB5652433E3C3EA4262011CBBE3555443BB140332EEBF9C7E6D07C759AE7D1A5B5738E17A7DA9E5DBDEE2BC1CC90356595CD42F38FDECCDB2A1A3FC3D9009F8B7373D958F5E49BB45E8DB39AD9DDCCC48A475D30B3BB8878CAE588A89C64F26D4DA99DBEA065
|
||||
answer = BA0D89B5FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C603000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE00010016FF6EA381CEBAC834CD02D5F61E51E80F7BB20351E46926C814967E6EA967D6CD0066A5A300FFFD9467036AA11DC0B4711A2AD0BA0A91E237BD290F879435B459DE032D262716909E6C6996BCED43461D5360BCD8C0039509F0F57FD4FD9B77F9A1E84C3D37763A0143924FC101C8F1B04B2140FF368EDBA7E9EF9E58E6B86C028B46FA8B1D05CEB6DF48E576AA7C08EC53513ACEF71EAB76ED09A17914B6371D4C2F86EEA1CB5652433E3C3EA4262011CBBE3555443BB140332EEBF9C7E6D07C759AE7D1A5B5738E17A7DA9E5DBDEE2BC1CC90356595CD42F38FDECCDB2A1A3FC3D9009F8B7373D958F5E49BB45E8DB39AD9DDCCC48A475D30B3BB8878CAE588A89C64F26D4DA99DBEA065</code></pre>
|
||||
<pre><code>answer_with_hash = 4CFAFD72E669B693EB7BA3DB7ACEB84295C5CA12BA0D89B5BE564985F8F53D6B80093F1D63D04D95972C2658372081DA4D4A89A2A4B13A5E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001003520B59EF882758D63D1CCE399BE2A0B709672017CAF315469FA43C84A518A57DF5AA72977C2C141DE036873EAA8A87F333B7309CF4CCDBE219286043A821E0AF045ABFD895008887E0A5149F093485E4192822328DC3756F18D97B3B159872E0B8DDF4CB067DC8D1361B6F9B0D1FF974E1DDB0508332697849507BE66701893CA78C46178679AC3B190D6F2CB6B5A903EB1D316C50304C7E3FCE475FAC3B986BCF5F79EFBEE1819939FA3968862C7223F55709CCC034BA0759D189C012F309C776FDEC4422C2BAB2F228250F404DCE401FDCB870E5465D292CF7D0889A17E4B3A27E7EEFB7ED4906C69222F27FE9F90C50CDE85CA7DB024B0A339237A5FA9D805AB9C6446CD50E0693E71AE
|
||||
answer = BA0D89B5BE564985F8F53D6B80093F1D63D04D95972C2658372081DA4D4A89A2A4B13A5E03000000FE000100C71CAEB9C6B1C9048E6C522F70F13F73980D40238E3E21C14934D037563D930F48198A0AA7C14058229493D22530F4DBFA336F6E0AC925139543AED44CCE7C3720FD51F69458705AC68CD4FE6B6B13ABDC9746512969328454F18FAF8C595F642477FE96BB2A941D5BCD1D4AC8CC49880708FA9B378E3C4F3A9060BEE67CF9A4A4A695811051907E162753B56B0F6B410DBA74D8A84B2A14B3144E0EF1284754FD17ED950D5965B4B9DD46582DB1178D169C6BC465B0D6FF9CA3928FEF5B9AE4E418FC15E83EBEA0F87FA9FF5EED70050DED2849F47BF959D956850CE929851F0D8115F635B105EE2E4E15D04B2454BF6F4FADF034B10403119CD8E3B92FCC5BFE0001003520B59EF882758D63D1CCE399BE2A0B709672017CAF315469FA43C84A518A57DF5AA72977C2C141DE036873EAA8A87F333B7309CF4CCDBE219286043A821E0AF045ABFD895008887E0A5149F093485E4192822328DC3756F18D97B3B159872E0B8DDF4CB067DC8D1361B6F9B0D1FF974E1DDB0508332697849507BE66701893CA78C46178679AC3B190D6F2CB6B5A903EB1D316C50304C7E3FCE475FAC3B986BCF5F79EFBEE1819939FA3968862C7223F55709CCC034BA0759D189C012F309C776FDEC4422C2BAB2F228250F404DCE401FDCB870E5465D292CF7D0889A17E4B3A27E7EEFB7ED4906C69222F27FE9F90C50CDE85CA7DB024B0A339237A5FA9D805AB9C6446CD50E0693E71AE</code></pre>
|
||||
<!-- end server_DH_inner_data_output -->
|
||||
<!-- start server_DH_inner_data -->
|
||||
<p>Generated payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | BA 0D 89 B5 FA DA 40 F3 24 30 86 3C 25 83 58 32
|
||||
0010 | EF 2E CF 48 82 93 B0 B5 EF 95 58 C3 28 89 A6 F6
|
||||
0020 | 05 CA C3 C6 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
<pre><code>0000 | BA 0D 89 B5 BE 56 49 85 F8 F5 3D 6B 80 09 3F 1D
|
||||
0010 | 63 D0 4D 95 97 2C 26 58 37 20 81 DA 4D 4A 89 A2
|
||||
0020 | A4 B1 3A 5E 03 00 00 00 FE 00 01 00 C7 1C AE B9
|
||||
0030 | C6 B1 C9 04 8E 6C 52 2F 70 F1 3F 73 98 0D 40 23
|
||||
0040 | 8E 3E 21 C1 49 34 D0 37 56 3D 93 0F 48 19 8A 0A
|
||||
0050 | A7 C1 40 58 22 94 93 D2 25 30 F4 DB FA 33 6F 6E
|
||||
|
@ -533,23 +533,23 @@ answer = BA0D89B5FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C
|
|||
0100 | F4 7B F9 59 D9 56 85 0C E9 29 85 1F 0D 81 15 F6
|
||||
0110 | 35 B1 05 EE 2E 4E 15 D0 4B 24 54 BF 6F 4F AD F0
|
||||
0120 | 34 B1 04 03 11 9C D8 E3 B9 2F CC 5B FE 00 01 00
|
||||
0130 | 16 FF 6E A3 81 CE BA C8 34 CD 02 D5 F6 1E 51 E8
|
||||
0140 | 0F 7B B2 03 51 E4 69 26 C8 14 96 7E 6E A9 67 D6
|
||||
0150 | CD 00 66 A5 A3 00 FF FD 94 67 03 6A A1 1D C0 B4
|
||||
0160 | 71 1A 2A D0 BA 0A 91 E2 37 BD 29 0F 87 94 35 B4
|
||||
0170 | 59 DE 03 2D 26 27 16 90 9E 6C 69 96 BC ED 43 46
|
||||
0180 | 1D 53 60 BC D8 C0 03 95 09 F0 F5 7F D4 FD 9B 77
|
||||
0190 | F9 A1 E8 4C 3D 37 76 3A 01 43 92 4F C1 01 C8 F1
|
||||
01A0 | B0 4B 21 40 FF 36 8E DB A7 E9 EF 9E 58 E6 B8 6C
|
||||
01B0 | 02 8B 46 FA 8B 1D 05 CE B6 DF 48 E5 76 AA 7C 08
|
||||
01C0 | EC 53 51 3A CE F7 1E AB 76 ED 09 A1 79 14 B6 37
|
||||
01D0 | 1D 4C 2F 86 EE A1 CB 56 52 43 3E 3C 3E A4 26 20
|
||||
01E0 | 11 CB BE 35 55 44 3B B1 40 33 2E EB F9 C7 E6 D0
|
||||
01F0 | 7C 75 9A E7 D1 A5 B5 73 8E 17 A7 DA 9E 5D BD EE
|
||||
0200 | 2B C1 CC 90 35 65 95 CD 42 F3 8F DE CC DB 2A 1A
|
||||
0210 | 3F C3 D9 00 9F 8B 73 73 D9 58 F5 E4 9B B4 5E 8D
|
||||
0220 | B3 9A D9 DD CC C4 8A 47 5D 30 B3 BB 88 78 CA E5
|
||||
0230 | 88 A8 9C 64</code></pre>
|
||||
0130 | 35 20 B5 9E F8 82 75 8D 63 D1 CC E3 99 BE 2A 0B
|
||||
0140 | 70 96 72 01 7C AF 31 54 69 FA 43 C8 4A 51 8A 57
|
||||
0150 | DF 5A A7 29 77 C2 C1 41 DE 03 68 73 EA A8 A8 7F
|
||||
0160 | 33 3B 73 09 CF 4C CD BE 21 92 86 04 3A 82 1E 0A
|
||||
0170 | F0 45 AB FD 89 50 08 88 7E 0A 51 49 F0 93 48 5E
|
||||
0180 | 41 92 82 23 28 DC 37 56 F1 8D 97 B3 B1 59 87 2E
|
||||
0190 | 0B 8D DF 4C B0 67 DC 8D 13 61 B6 F9 B0 D1 FF 97
|
||||
01A0 | 4E 1D DB 05 08 33 26 97 84 95 07 BE 66 70 18 93
|
||||
01B0 | CA 78 C4 61 78 67 9A C3 B1 90 D6 F2 CB 6B 5A 90
|
||||
01C0 | 3E B1 D3 16 C5 03 04 C7 E3 FC E4 75 FA C3 B9 86
|
||||
01D0 | BC F5 F7 9E FB EE 18 19 93 9F A3 96 88 62 C7 22
|
||||
01E0 | 3F 55 70 9C CC 03 4B A0 75 9D 18 9C 01 2F 30 9C
|
||||
01F0 | 77 6F DE C4 42 2C 2B AB 2F 22 82 50 F4 04 DC E4
|
||||
0200 | 01 FD CB 87 0E 54 65 D2 92 CF 7D 08 89 A1 7E 4B
|
||||
0210 | 3A 27 E7 EE FB 7E D4 90 6C 69 22 2F 27 FE 9F 90
|
||||
0220 | C5 0C DE 85 CA 7D B0 24 B0 A3 39 23 7A 5F A9 D8
|
||||
0230 | 05 AB 9C 64</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -571,13 +571,13 @@ answer = BA0D89B5FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>FADA40F32430863C25835832EF2ECF48</code></td>
|
||||
<td><code>BE564985F8F53D6B80093F1D63D04D95</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>8293B0B5EF9558C32889A6F605CAC3C6</code></td>
|
||||
<td><code>972C2658372081DA4D4A89A2A4B13A5E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -595,13 +595,13 @@ answer = BA0D89B5FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C
|
|||
<tr>
|
||||
<td>g_a</td>
|
||||
<td>300, 260</td>
|
||||
<td><code>FE00010016FF6EA381CEBAC834CD02D5</code> <code>F61E51E80F7BB20351E46926C814967E</code> <code>6EA967D6CD0066A5A300FFFD9467036A</code> <code>A11DC0B4711A2AD0BA0A91E237BD290F</code> <code>879435B459DE032D262716909E6C6996</code> <code>BCED43461D5360BCD8C0039509F0F57F</code> <code>D4FD9B77F9A1E84C3D37763A0143924F</code> <code>C101C8F1B04B2140FF368EDBA7E9EF9E</code> <code>58E6B86C028B46FA8B1D05CEB6DF48E5</code> <code>76AA7C08EC53513ACEF71EAB76ED09A1</code> <code>7914B6371D4C2F86EEA1CB5652433E3C</code> <code>3EA4262011CBBE3555443BB140332EEB</code> <code>F9C7E6D07C759AE7D1A5B5738E17A7DA</code> <code>9E5DBDEE2BC1CC90356595CD42F38FDE</code> <code>CCDB2A1A3FC3D9009F8B7373D958F5E4</code> <code>9BB45E8DB39AD9DDCCC48A475D30B3BB</code><br> <code>8878CAE5</code></td>
|
||||
<td><code>FE0001003520B59EF882758D63D1CCE3</code> <code>99BE2A0B709672017CAF315469FA43C8</code> <code>4A518A57DF5AA72977C2C141DE036873</code> <code>EAA8A87F333B7309CF4CCDBE21928604</code> <code>3A821E0AF045ABFD895008887E0A5149</code> <code>F093485E4192822328DC3756F18D97B3</code> <code>B159872E0B8DDF4CB067DC8D1361B6F9</code> <code>B0D1FF974E1DDB0508332697849507BE</code> <code>66701893CA78C46178679AC3B190D6F2</code> <code>CB6B5A903EB1D316C50304C7E3FCE475</code> <code>FAC3B986BCF5F79EFBEE1819939FA396</code> <code>8862C7223F55709CCC034BA0759D189C</code> <code>012F309C776FDEC4422C2BAB2F228250</code> <code>F404DCE401FDCB870E5465D292CF7D08</code> <code>89A17E4B3A27E7EEFB7ED4906C69222F</code> <code>27FE9F90C50CDE85CA7DB024B0A33923</code><br> <code>7A5FA9D8</code></td>
|
||||
<td><code>g_a</code> diffie-hellman parameter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_time</td>
|
||||
<td>560, 4</td>
|
||||
<td><code>88A89C64</code> (1687988360 in decimal)</td>
|
||||
<td><code>05AB9C64</code> (1687988997 in decimal)</td>
|
||||
<td>Server time</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -610,34 +610,34 @@ answer = BA0D89B5FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C
|
|||
<h5><a class="anchor" href="#7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message" id="7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message" name="7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message"><i class="anchor-icon"></i></a>7) Client computes random 2048-bit number <em>b</em> (using a sufficient amount of entropy) and sends the server a message</h5>
|
||||
<p>First, generate a secure random 2048-bit number b:</p>
|
||||
<!-- start b -->
|
||||
<pre><code>b = 60E5EF5739A1F05DC94CF59C95D5210BBF75D1F538074CDFAD3783A47FA5964DFB3B8BE62890C1226356A032A7F3CCCFA732C1FF1979445861CFCAE42A6E5BFC932BE2EF3D128B94D90CBB617666A89E1765E7480EBC6EBA29A5B59C4BE174B6BAF7E3FFA8C43A6CA68D438FC08C7BAFB1895E253C9968E282B5E07FE0D9C7CD97AFC24A976BBBAE55C5FA8A8C257A4DBC1010696FCC6B9EA5AAB2FC2FDEE44BF837E4A3F46D230EEDFA337173E8188C30582FB93153B86EB8AB51592CA18D53A6CD1EE6034D5D05901430EB0F6B5BB04C700BA0D23FFD56D2286786620FE1A8F1799DD59FD278334D3EA1882A145AFCCCA0E358F51FA684E2114754C6E6D9F5</code></pre>
|
||||
<pre><code>b = 05EA9FC5C1704A1ACD28A221FDEEC5304F43E9DBBCA0D074AC05C3D80AD26393037501F83C44B68124AC4E4B68DEFEFF3D8B3B130B6B5D2869F3519E5818C876B3260A925E42D1637E46675B1ABB5EB5629E061A89D7BD3690105A3D54584C739A1D46AC3E42FAEE89CB080A16F04A6549422958E34DD7D6CF2BA5FB53628CF161B1888C1E8E267C75A662DF22D0BCA8B3E920F9BE2EA42B2CD02065B843BA1D51D2286469847B348A2D7C985158D552C584E5291ADFAF0E82F4C28F89B7280FA292693B83B48A915B95598B68E01016FF6DEEF02A8679F51D80ACE19C42C1BB9652B90A3D06D852698E452B74515B837A5C8B7082D0EC1FB1CB016B37894D50</code></pre>
|
||||
<!-- end b -->
|
||||
<p>Then compute <code>g_b = pow(g, b) mod dh_prime</code></p>
|
||||
<!-- start g_b -->
|
||||
<pre><code>g_b = 6CACFC730C86DE7CF114F5685EC456F4782B254C4D340F0D7E6DE5689D8DFB2FEC553950F48D6E027F982F4ADE4D783D9360804BB6DD9A81C22AEC69C74177E7ECCB1D5F41B4231EBB6CF6AE69E7157755950A42A4E27171900E98DA314CF492F1D124B69FAA203AF07C8C615FC32F9EA28C786C6102F7B571932FFA1E3216EBD8F9EA4709D9BF1212DB7D9EB4E081B0912C94A136EF66D0CD7065FDB4D9AB123FC92D009A00FE5E06B3CC1A015F561CA89CE9F7907A5F5D95F36544BFD9B588CC27D8D9EDD1313B6425DAFF97EB04A9BD47D4DA15D6E3B951C631B3515982E86A163FEE161FF7C70485C1BCAA675BF6FD1EC376D383E1C17707BF1802E51291</code></pre>
|
||||
<pre><code>g_b = 6553F54B17995D63ADFE0653712401B6ED70505AC21B5ED539F38E042E567D0C7CEC3002C38AB624D38C23ED554F58778453B66A518EBEC829169F899CC7AC543CFF5C530B6B63D70B2557C4A164942AD1D3BC136EEA88105253A64D1DF4FE79EF3C399C3B1C721DEA3E837234A8055C2F66C13DA4BD2CB80B37C982196C61CF4C7AC976CB615B7189669A3097ED5C9D7891F58D120FE0F004EE6DB098DF095C3643A6E01AB7A31F1EB49071AC4F9BB0C7C3A96B64904BBCEAFAB8AD93B30E87F33281EEDB1EE957F4B5E791CF18B36FE3BD5D1AD36D1249E72ABC9159E24C53359CB2809E72813ABA4C2B52ABEAE39990AD3E67E81DF8572C07AFF4075143D7</code></pre>
|
||||
<!-- end g_b -->
|
||||
<h6>7.1) generation of encrypted_data</h6>
|
||||
<!-- start client_DH_inner_data -->
|
||||
<p>Generated payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 54 B6 43 66 FA DA 40 F3 24 30 86 3C 25 83 58 32
|
||||
0010 | EF 2E CF 48 82 93 B0 B5 EF 95 58 C3 28 89 A6 F6
|
||||
0020 | 05 CA C3 C6 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 6C AC FC 73 0C 86 DE 7C F1 14 F5 68 5E C4 56 F4
|
||||
0040 | 78 2B 25 4C 4D 34 0F 0D 7E 6D E5 68 9D 8D FB 2F
|
||||
0050 | EC 55 39 50 F4 8D 6E 02 7F 98 2F 4A DE 4D 78 3D
|
||||
0060 | 93 60 80 4B B6 DD 9A 81 C2 2A EC 69 C7 41 77 E7
|
||||
0070 | EC CB 1D 5F 41 B4 23 1E BB 6C F6 AE 69 E7 15 77
|
||||
0080 | 55 95 0A 42 A4 E2 71 71 90 0E 98 DA 31 4C F4 92
|
||||
0090 | F1 D1 24 B6 9F AA 20 3A F0 7C 8C 61 5F C3 2F 9E
|
||||
00A0 | A2 8C 78 6C 61 02 F7 B5 71 93 2F FA 1E 32 16 EB
|
||||
00B0 | D8 F9 EA 47 09 D9 BF 12 12 DB 7D 9E B4 E0 81 B0
|
||||
00C0 | 91 2C 94 A1 36 EF 66 D0 CD 70 65 FD B4 D9 AB 12
|
||||
00D0 | 3F C9 2D 00 9A 00 FE 5E 06 B3 CC 1A 01 5F 56 1C
|
||||
00E0 | A8 9C E9 F7 90 7A 5F 5D 95 F3 65 44 BF D9 B5 88
|
||||
00F0 | CC 27 D8 D9 ED D1 31 3B 64 25 DA FF 97 EB 04 A9
|
||||
0100 | BD 47 D4 DA 15 D6 E3 B9 51 C6 31 B3 51 59 82 E8
|
||||
0110 | 6A 16 3F EE 16 1F F7 C7 04 85 C1 BC AA 67 5B F6
|
||||
0120 | FD 1E C3 76 D3 83 E1 C1 77 07 BF 18 02 E5 12 91</code></pre>
|
||||
<pre><code>0000 | 54 B6 43 66 BE 56 49 85 F8 F5 3D 6B 80 09 3F 1D
|
||||
0010 | 63 D0 4D 95 97 2C 26 58 37 20 81 DA 4D 4A 89 A2
|
||||
0020 | A4 B1 3A 5E 00 00 00 00 00 00 00 00 FE 00 01 00
|
||||
0030 | 65 53 F5 4B 17 99 5D 63 AD FE 06 53 71 24 01 B6
|
||||
0040 | ED 70 50 5A C2 1B 5E D5 39 F3 8E 04 2E 56 7D 0C
|
||||
0050 | 7C EC 30 02 C3 8A B6 24 D3 8C 23 ED 55 4F 58 77
|
||||
0060 | 84 53 B6 6A 51 8E BE C8 29 16 9F 89 9C C7 AC 54
|
||||
0070 | 3C FF 5C 53 0B 6B 63 D7 0B 25 57 C4 A1 64 94 2A
|
||||
0080 | D1 D3 BC 13 6E EA 88 10 52 53 A6 4D 1D F4 FE 79
|
||||
0090 | EF 3C 39 9C 3B 1C 72 1D EA 3E 83 72 34 A8 05 5C
|
||||
00A0 | 2F 66 C1 3D A4 BD 2C B8 0B 37 C9 82 19 6C 61 CF
|
||||
00B0 | 4C 7A C9 76 CB 61 5B 71 89 66 9A 30 97 ED 5C 9D
|
||||
00C0 | 78 91 F5 8D 12 0F E0 F0 04 EE 6D B0 98 DF 09 5C
|
||||
00D0 | 36 43 A6 E0 1A B7 A3 1F 1E B4 90 71 AC 4F 9B B0
|
||||
00E0 | C7 C3 A9 6B 64 90 4B BC EA FA B8 AD 93 B3 0E 87
|
||||
00F0 | F3 32 81 EE DB 1E E9 57 F4 B5 E7 91 CF 18 B3 6F
|
||||
0100 | E3 BD 5D 1A D3 6D 12 49 E7 2A BC 91 59 E2 4C 53
|
||||
0110 | 35 9C B2 80 9E 72 81 3A BA 4C 2B 52 AB EA E3 99
|
||||
0120 | 90 AD 3E 67 E8 1D F8 57 2C 07 AF F4 07 51 43 D7</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -659,19 +659,19 @@ answer = BA0D89B5FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>4, 16</td>
|
||||
<td><code>FADA40F32430863C25835832EF2ECF48</code></td>
|
||||
<td><code>BE564985F8F53D6B80093F1D63D04D95</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>20, 16</td>
|
||||
<td><code>8293B0B5EF9558C32889A6F605CAC3C6</code></td>
|
||||
<td><code>972C2658372081DA4D4A89A2A4B13A5E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>g_b</td>
|
||||
<td>36, 260</td>
|
||||
<td><code>FE0001006CACFC730C86DE7CF114F568</code> <code>5EC456F4782B254C4D340F0D7E6DE568</code> <code>9D8DFB2FEC553950F48D6E027F982F4A</code> <code>DE4D783D9360804BB6DD9A81C22AEC69</code> <code>C74177E7ECCB1D5F41B4231EBB6CF6AE</code> <code>69E7157755950A42A4E27171900E98DA</code> <code>314CF492F1D124B69FAA203AF07C8C61</code> <code>5FC32F9EA28C786C6102F7B571932FFA</code> <code>1E3216EBD8F9EA4709D9BF1212DB7D9E</code> <code>B4E081B0912C94A136EF66D0CD7065FD</code> <code>B4D9AB123FC92D009A00FE5E06B3CC1A</code> <code>015F561CA89CE9F7907A5F5D95F36544</code> <code>BFD9B588CC27D8D9EDD1313B6425DAFF</code> <code>97EB04A9BD47D4DA15D6E3B951C631B3</code> <code>515982E86A163FEE161FF7C70485C1BC</code> <code>AA675BF6FD1EC376D383E1C17707BF18</code><br> <code>02E51291</code></td>
|
||||
<td><code>FE0001006553F54B17995D63ADFE0653</code> <code>712401B6ED70505AC21B5ED539F38E04</code> <code>2E567D0C7CEC3002C38AB624D38C23ED</code> <code>554F58778453B66A518EBEC829169F89</code> <code>9CC7AC543CFF5C530B6B63D70B2557C4</code> <code>A164942AD1D3BC136EEA88105253A64D</code> <code>1DF4FE79EF3C399C3B1C721DEA3E8372</code> <code>34A8055C2F66C13DA4BD2CB80B37C982</code> <code>196C61CF4C7AC976CB615B7189669A30</code> <code>97ED5C9D7891F58D120FE0F004EE6DB0</code> <code>98DF095C3643A6E01AB7A31F1EB49071</code> <code>AC4F9BB0C7C3A96B64904BBCEAFAB8AD</code> <code>93B30E87F33281EEDB1EE957F4B5E791</code> <code>CF18B36FE3BD5D1AD36D1249E72ABC91</code> <code>59E24C53359CB2809E72813ABA4C2B52</code> <code>ABEAE39990AD3E67E81DF8572C07AFF4</code><br> <code>075143D7</code></td>
|
||||
<td>Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -683,49 +683,49 @@ answer = BA0D89B5FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C
|
|||
</tbody>
|
||||
</table>
|
||||
<!-- end client_DH_inner_data -->
|
||||
<p>The serialization of <em>Client_DH_Inner_Data</em> produces a string <strong>data</strong>. This is used to generate <strong>encrypted_data</strong> as specified in <a href="#6-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message">step 6</a>, using the following inputs:</p>
|
||||
<p>The serialization of <em>Client_DH_Inner_Data</em> produces a string <strong>data</strong>. This is used to generate <strong>encrypted_data</strong> as specified in <a href="#7-client-computes-random-2048-bit-number-b-using-a-sufficient-amount-of-entropy-and-sends-the-server-a-message">step 6</a>, using the following inputs:</p>
|
||||
<!-- start client_DH_inner_data_input -->
|
||||
<pre><code>data = 54B64366FADA40F32430863C25835832EF2ECF488293B0B5EF9558C32889A6F605CAC3C60000000000000000FE0001006CACFC730C86DE7CF114F5685EC456F4782B254C4D340F0D7E6DE5689D8DFB2FEC553950F48D6E027F982F4ADE4D783D9360804BB6DD9A81C22AEC69C74177E7ECCB1D5F41B4231EBB6CF6AE69E7157755950A42A4E27171900E98DA314CF492F1D124B69FAA203AF07C8C615FC32F9EA28C786C6102F7B571932FFA1E3216EBD8F9EA4709D9BF1212DB7D9EB4E081B0912C94A136EF66D0CD7065FDB4D9AB123FC92D009A00FE5E06B3CC1A015F561CA89CE9F7907A5F5D95F36544BFD9B588CC27D8D9EDD1313B6425DAFF97EB04A9BD47D4DA15D6E3B951C631B3515982E86A163FEE161FF7C70485C1BCAA675BF6FD1EC376D383E1C17707BF1802E51291
|
||||
padding = ADBCA793403652D954B1FC6C
|
||||
tmp_aes_key = 5591331B9FCD7D6497E6CB4AA80ED849263CE0E54F29B93A527A6ED056DCCBC4
|
||||
tmp_aes_iv = D18064B0BB84ACB797BD4CB2F01B4FDE19F32A390408CAE58C7DCE20E56AF739</code></pre>
|
||||
<pre><code>data = 54B64366BE564985F8F53D6B80093F1D63D04D95972C2658372081DA4D4A89A2A4B13A5E0000000000000000FE0001006553F54B17995D63ADFE0653712401B6ED70505AC21B5ED539F38E042E567D0C7CEC3002C38AB624D38C23ED554F58778453B66A518EBEC829169F899CC7AC543CFF5C530B6B63D70B2557C4A164942AD1D3BC136EEA88105253A64D1DF4FE79EF3C399C3B1C721DEA3E837234A8055C2F66C13DA4BD2CB80B37C982196C61CF4C7AC976CB615B7189669A3097ED5C9D7891F58D120FE0F004EE6DB098DF095C3643A6E01AB7A31F1EB49071AC4F9BB0C7C3A96B64904BBCEAFAB8AD93B30E87F33281EEDB1EE957F4B5E791CF18B36FE3BD5D1AD36D1249E72ABC9159E24C53359CB2809E72813ABA4C2B52ABEAE39990AD3E67E81DF8572C07AFF4075143D7
|
||||
padding = 3AF24C8C2DB3779D3CF2E327
|
||||
tmp_aes_key = 267E82D02279BD2E0A3154EFEB6BF8415A7B9791082DF6D1E3614A97CDEB873D
|
||||
tmp_aes_iv = 1EEED0F3AE3C145F6CC1938B346DC11F6845EB6D691407E00A940FBDFF1B0474</code></pre>
|
||||
<!-- end client_DH_inner_data_input -->
|
||||
<p>Process:</p>
|
||||
<pre><code>data_with_hash := SHA1(data) + data + padding (0-15 random bytes such that total length is divisible by 16)
|
||||
encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);</code></pre>
|
||||
<p>Output:</p>
|
||||
<!-- start client_DH_inner_data_output -->
|
||||
<pre><code>encrypted_data = 38F1719D5B8EF6E2AAB74FF2FD0B2A57317F1971CF66A68AD134589D66FFB95C1152B185C55421B7473080AE93787546166019B391207ABFA3B110C442B0F319CB738DB7303641DA3E2165231923A93D1136920FB4764614BC2F9A9A13273819AF019DC33332FB87B1F179C1A228B44BB03E3673D664979F8F50385A5F9779C55CBD9FDE7BA94AF9DB9AEDF5D30AF621E38E8006B63429731E4FD63E524BF08DAE17B298E0E7221EB4358782AB7B95CDEC66B50143D415CD0CFC4CBA2CAB26D4203B37BA4AB223694B5187EA6F3B017690A5CE7A5BC6AFE0E49AA05CB90CEF4B6E9BE64703032A49A76EAC8AB06F2F2C23BE94F96D9F32BE3691852885CF1A691394C5A0B46CCBE66A3B967463E9163A19414FCC670301823E9FC1E9B3DDBB66680E97C267A8F743CC6D20CE0C4E557B7F51923A9F3BEF77E7190B42C1BACB24690C476EA6BDD7F7C73A99AE42AF8FD7</code></pre>
|
||||
<pre><code>encrypted_data = 5E36A48F64A866465A0B36C323A72DF54D16BE219FEBB93A338B18977E41E16424CA34BC63885BBF4816A027CB311D41F10EB1640D06D90B412A7F538713DB2282742691B4146CA507154DEEA1B71917B91E66F37A3089B6ED22D5FF6C9A0A5CF03653C2DE2B6AF290AF4B3A634964E1BA9E43E5D28C51E7F256D60D5A740B740A6B80180289113A8ED3B50AA2B9B5D23A9519645D45A4FD2C45E3E1AE8864C6CC22BC2A3C52C08A321856F323F1886265DD8099F0BC54743C4C1C9DDBC64CE039A66DC0CF3C666A79734F90EFDB158F40D07D4C575771EEEA87D8EB35E994F8BAA31EA5AF9AA44761AC9E383BE55B54054A5EFA574B9E2C15F58E2B8E063BC9ACBD22F59CBCADB564AD333FA7A50816FE0D5E519DFA5154D4C8ECC23F2AD9509D408A4ABDF0F9EE8EB799C6E56C0FEDE748D13E31BE750B6B68D33A560A79C24CB2B0361EDBF1F074DA135662B75A66</code></pre>
|
||||
<!-- end client_DH_inner_data_output -->
|
||||
<p>The length of the final string is 336 bytes.</p>
|
||||
<h6>7.2) set_client_DH_params query</h6>
|
||||
<!-- start set_client_DH_params -->
|
||||
<p>Sent payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 00 00 00 88 A8 9C 64
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 FA DA 40 F3 24 30 86 3C
|
||||
0020 | 25 83 58 32 EF 2E CF 48 82 93 B0 B5 EF 95 58 C3
|
||||
0030 | 28 89 A6 F6 05 CA C3 C6 FE 50 01 00 38 F1 71 9D
|
||||
0040 | 5B 8E F6 E2 AA B7 4F F2 FD 0B 2A 57 31 7F 19 71
|
||||
0050 | CF 66 A6 8A D1 34 58 9D 66 FF B9 5C 11 52 B1 85
|
||||
0060 | C5 54 21 B7 47 30 80 AE 93 78 75 46 16 60 19 B3
|
||||
0070 | 91 20 7A BF A3 B1 10 C4 42 B0 F3 19 CB 73 8D B7
|
||||
0080 | 30 36 41 DA 3E 21 65 23 19 23 A9 3D 11 36 92 0F
|
||||
0090 | B4 76 46 14 BC 2F 9A 9A 13 27 38 19 AF 01 9D C3
|
||||
00A0 | 33 32 FB 87 B1 F1 79 C1 A2 28 B4 4B B0 3E 36 73
|
||||
00B0 | D6 64 97 9F 8F 50 38 5A 5F 97 79 C5 5C BD 9F DE
|
||||
00C0 | 7B A9 4A F9 DB 9A ED F5 D3 0A F6 21 E3 8E 80 06
|
||||
00D0 | B6 34 29 73 1E 4F D6 3E 52 4B F0 8D AE 17 B2 98
|
||||
00E0 | E0 E7 22 1E B4 35 87 82 AB 7B 95 CD EC 66 B5 01
|
||||
00F0 | 43 D4 15 CD 0C FC 4C BA 2C AB 26 D4 20 3B 37 BA
|
||||
0100 | 4A B2 23 69 4B 51 87 EA 6F 3B 01 76 90 A5 CE 7A
|
||||
0110 | 5B C6 AF E0 E4 9A A0 5C B9 0C EF 4B 6E 9B E6 47
|
||||
0120 | 03 03 2A 49 A7 6E AC 8A B0 6F 2F 2C 23 BE 94 F9
|
||||
0130 | 6D 9F 32 BE 36 91 85 28 85 CF 1A 69 13 94 C5 A0
|
||||
0140 | B4 6C CB E6 6A 3B 96 74 63 E9 16 3A 19 41 4F CC
|
||||
0150 | 67 03 01 82 3E 9F C1 E9 B3 DD BB 66 68 0E 97 C2
|
||||
0160 | 67 A8 F7 43 CC 6D 20 CE 0C 4E 55 7B 7F 51 92 3A
|
||||
0170 | 9F 3B EF 77 E7 19 0B 42 C1 BA CB 24 69 0C 47 6E
|
||||
0180 | A6 BD D7 F7 C7 3A 99 AE 42 AF 8F D7</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 00 00 00 00 05 AB 9C 64
|
||||
0010 | 78 01 00 00 1F 5F 04 F5 BE 56 49 85 F8 F5 3D 6B
|
||||
0020 | 80 09 3F 1D 63 D0 4D 95 97 2C 26 58 37 20 81 DA
|
||||
0030 | 4D 4A 89 A2 A4 B1 3A 5E FE 50 01 00 5E 36 A4 8F
|
||||
0040 | 64 A8 66 46 5A 0B 36 C3 23 A7 2D F5 4D 16 BE 21
|
||||
0050 | 9F EB B9 3A 33 8B 18 97 7E 41 E1 64 24 CA 34 BC
|
||||
0060 | 63 88 5B BF 48 16 A0 27 CB 31 1D 41 F1 0E B1 64
|
||||
0070 | 0D 06 D9 0B 41 2A 7F 53 87 13 DB 22 82 74 26 91
|
||||
0080 | B4 14 6C A5 07 15 4D EE A1 B7 19 17 B9 1E 66 F3
|
||||
0090 | 7A 30 89 B6 ED 22 D5 FF 6C 9A 0A 5C F0 36 53 C2
|
||||
00A0 | DE 2B 6A F2 90 AF 4B 3A 63 49 64 E1 BA 9E 43 E5
|
||||
00B0 | D2 8C 51 E7 F2 56 D6 0D 5A 74 0B 74 0A 6B 80 18
|
||||
00C0 | 02 89 11 3A 8E D3 B5 0A A2 B9 B5 D2 3A 95 19 64
|
||||
00D0 | 5D 45 A4 FD 2C 45 E3 E1 AE 88 64 C6 CC 22 BC 2A
|
||||
00E0 | 3C 52 C0 8A 32 18 56 F3 23 F1 88 62 65 DD 80 99
|
||||
00F0 | F0 BC 54 74 3C 4C 1C 9D DB C6 4C E0 39 A6 6D C0
|
||||
0100 | CF 3C 66 6A 79 73 4F 90 EF DB 15 8F 40 D0 7D 4C
|
||||
0110 | 57 57 71 EE EA 87 D8 EB 35 E9 94 F8 BA A3 1E A5
|
||||
0120 | AF 9A A4 47 61 AC 9E 38 3B E5 5B 54 05 4A 5E FA
|
||||
0130 | 57 4B 9E 2C 15 F5 8E 2B 8E 06 3B C9 AC BD 22 F5
|
||||
0140 | 9C BC AD B5 64 AD 33 3F A7 A5 08 16 FE 0D 5E 51
|
||||
0150 | 9D FA 51 54 D4 C8 EC C2 3F 2A D9 50 9D 40 8A 4A
|
||||
0160 | BD F0 F9 EE 8E B7 99 C6 E5 6C 0F ED E7 48 D1 3E
|
||||
0170 | 31 BE 75 0B 6B 68 D3 3A 56 0A 79 C2 4C B2 B0 36
|
||||
0180 | 1E DB F1 F0 74 DA 13 56 62 B7 5A 66</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -747,7 +747,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>0000000088A89C64</code></td>
|
||||
<td><code>0000000005AB9C64</code></td>
|
||||
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -765,19 +765,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>FADA40F32430863C25835832EF2ECF48</code></td>
|
||||
<td><code>BE564985F8F53D6B80093F1D63D04D95</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>8293B0B5EF9558C32889A6F605CAC3C6</code></td>
|
||||
<td><code>972C2658372081DA4D4A89A2A4B13A5E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>encrypted_data</td>
|
||||
<td>56, 340</td>
|
||||
<td><code>FE50010038F1719D5B8EF6E2AAB74FF2</code> <code>FD0B2A57317F1971CF66A68AD134589D</code> <code>66FFB95C1152B185C55421B7473080AE</code> <code>93787546166019B391207ABFA3B110C4</code> <code>42B0F319CB738DB7303641DA3E216523</code> <code>1923A93D1136920FB4764614BC2F9A9A</code> <code>13273819AF019DC33332FB87B1F179C1</code> <code>A228B44BB03E3673D664979F8F50385A</code> <code>5F9779C55CBD9FDE7BA94AF9DB9AEDF5</code> <code>D30AF621E38E8006B63429731E4FD63E</code> <code>524BF08DAE17B298E0E7221EB4358782</code> <code>AB7B95CDEC66B50143D415CD0CFC4CBA</code> <code>2CAB26D4203B37BA4AB223694B5187EA</code> <code>6F3B017690A5CE7A5BC6AFE0E49AA05C</code> <code>B90CEF4B6E9BE64703032A49A76EAC8A</code> <code>B06F2F2C23BE94F96D9F32BE36918528</code> <code>85CF1A691394C5A0B46CCBE66A3B9674</code> <code>63E9163A19414FCC670301823E9FC1E9</code> <code>B3DDBB66680E97C267A8F743CC6D20CE</code> <code>0C4E557B7F51923A9F3BEF77E7190B42</code> <code>C1BACB24690C476EA6BDD7F7C73A99AE</code><br> <code>42AF8FD7</code></td>
|
||||
<td><code>FE5001005E36A48F64A866465A0B36C3</code> <code>23A72DF54D16BE219FEBB93A338B1897</code> <code>7E41E16424CA34BC63885BBF4816A027</code> <code>CB311D41F10EB1640D06D90B412A7F53</code> <code>8713DB2282742691B4146CA507154DEE</code> <code>A1B71917B91E66F37A3089B6ED22D5FF</code> <code>6C9A0A5CF03653C2DE2B6AF290AF4B3A</code> <code>634964E1BA9E43E5D28C51E7F256D60D</code> <code>5A740B740A6B80180289113A8ED3B50A</code> <code>A2B9B5D23A9519645D45A4FD2C45E3E1</code> <code>AE8864C6CC22BC2A3C52C08A321856F3</code> <code>23F1886265DD8099F0BC54743C4C1C9D</code> <code>DBC64CE039A66DC0CF3C666A79734F90</code> <code>EFDB158F40D07D4C575771EEEA87D8EB</code> <code>35E994F8BAA31EA5AF9AA44761AC9E38</code> <code>3BE55B54054A5EFA574B9E2C15F58E2B</code> <code>8E063BC9ACBD22F59CBCADB564AD333F</code> <code>A7A50816FE0D5E519DFA5154D4C8ECC2</code> <code>3F2AD9509D408A4ABDF0F9EE8EB799C6</code> <code>E56C0FEDE748D13E31BE750B6B68D33A</code> <code>560A79C24CB2B0361EDBF1F074DA1356</code><br> <code>62B75A66</code></td>
|
||||
<td>Encrypted client_DH_inner_data generated previously, serialized as a TL byte string</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -786,17 +786,17 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|||
<h5><a class="anchor" href="#8-auth-key-generation" id="8-auth-key-generation" name="8-auth-key-generation"><i class="anchor-icon"></i></a>8) Auth key generation</h5>
|
||||
<p>The client computes the auth_key using formula <code>g_a^b mod dh_prime</code>:</p>
|
||||
<!-- start auth_key -->
|
||||
<pre><code>auth_key = 9027CFEBAE30F28B579427308BE6DFA56C87742E8EF3EBAE2AE2F5558A86901C5515580B0B6A9909D708DD5735184B93EC5162B921C10639501E2848B9E7D55512729BF0B3A54664A8E5CD3AA2C6E28356215492365992406F6EC7C9A5C2DEFAFCE7B69031E6444C60E4319F6792458B619302EBEB6EE4401E6D024FB0D00E052FE860F2A255A5F156244468D453FF23415ADE15A69690A8FBEF5971E4CF22A6C53A70CD9375AE85225EC93F2A97B07D765E4BBCC200C2DEBDB01FAFE7FDAB1D0EE3A8E0EE63C0B79BE887E933FB34B66A6BB595BBA8D18CF265688289BFA4E1DBF7A58EF32CFECFB415FA979609ABC0025F588EB9925D8AC42842827EDD00D8</code></pre>
|
||||
<pre><code>auth_key = 71C2A3BEBB5C889D8C6C95BF9CE3E1D2D256483EE3DCB357EA08589FFAB7AD932B03FA59933A89F0EB7CBC7EF763AB3794338D024050DBFA5957D6388C638388F45F233A60A581224666353FC9C0CA8CBEE02A7A31C6059F5E3F96076AAC69B5EF7444A3DC6878AA7B8B7C3EFF3269288E8BFC7A71C56D247F0D55383C793CFEC8534F11F6520A53151182113EEA6F0BE323585E8B0F8B68A3509B789C69058E21A20A217EF8A34A3045722D4C8EE35B6A64069B2CDE43C8F99B7C98055567B1853E7759ECFF899A300C8C0FFD903C92E1F7281A4AA4B1B38F02EBF7C3C7B805AEB63AA094D9E5D2A2F91E375086219AE1276B7952907FA6ED879466D3700B59</code></pre>
|
||||
<!-- end auth_key -->
|
||||
<h5><a class="anchor" href="#9-final-server-reply" id="9-final-server-reply" name="9-final-server-reply"><i class="anchor-icon"></i></a>9) Final server reply</h5>
|
||||
<p>The server verifies and confirms that auth_key_hash is unique: since it's unique, it replies with the following:</p>
|
||||
<!-- start dh_gen_ok -->
|
||||
<p>Received payload (excluding transport headers/trailers):</p>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 D0 27 78 88 A8 9C 64
|
||||
0010 | 34 00 00 00 34 F7 CB 3B FA DA 40 F3 24 30 86 3C
|
||||
0020 | 25 83 58 32 EF 2E CF 48 82 93 B0 B5 EF 95 58 C3
|
||||
0030 | 28 89 A6 F6 05 CA C3 C6 50 DA F0 67 93 65 D2 53
|
||||
0040 | 2F DE 18 A4 36 13 0C A2</code></pre>
|
||||
<pre><code>0000 | 00 00 00 00 00 00 00 00 01 24 41 58 05 AB 9C 64
|
||||
0010 | 34 00 00 00 34 F7 CB 3B BE 56 49 85 F8 F5 3D 6B
|
||||
0020 | 80 09 3F 1D 63 D0 4D 95 97 2C 26 58 37 20 81 DA
|
||||
0030 | 4D 4A 89 A2 A4 B1 3A 5E 75 6D 67 DE C3 6F 97 B9
|
||||
0040 | 27 45 A0 2D FF 2C 4D 81</code></pre>
|
||||
<p>Payload (de)serialization:</p>
|
||||
<pre><code>dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer;</code></pre>
|
||||
<table class="table">
|
||||
|
@ -818,7 +818,7 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|||
<tr>
|
||||
<td>message_id</td>
|
||||
<td>8, 8</td>
|
||||
<td><code>01D0277888A89C64</code></td>
|
||||
<td><code>0124415805AB9C64</code></td>
|
||||
<td>Exact <code>unixtime*2^32</code>, <code>+(4*N)</code> if N messages with the same message ID were already generated</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -836,19 +836,19 @@ encrypted_data := AES256_ige_encrypt (data_with_hash, tmp_aes_key, tmp_aes_iv);<
|
|||
<tr>
|
||||
<td>nonce</td>
|
||||
<td>24, 16</td>
|
||||
<td><code>FADA40F32430863C25835832EF2ECF48</code></td>
|
||||
<td><code>BE564985F8F53D6B80093F1D63D04D95</code></td>
|
||||
<td>Value generated by client in Step 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>server_nonce</td>
|
||||
<td>40, 16</td>
|
||||
<td><code>8293B0B5EF9558C32889A6F605CAC3C6</code></td>
|
||||
<td><code>972C2658372081DA4D4A89A2A4B13A5E</code></td>
|
||||
<td>Value received from server in Step 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>new_nonce_hash1</td>
|
||||
<td>56, 16</td>
|
||||
<td><code>50DAF0679365D2532FDE18A436130CA2</code></td>
|
||||
<td><code>756D67DEC36F97B92745A02DFF2C4D81</code></td>
|
||||
<td>The 128 lower-order bits of SHA1 of the byte string derived from the <code>new_nonce</code> string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with <code>auth_key_aux_hash</code>. Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
Loading…
Add table
Reference in a new issue