Puncte:2

Ce este FE2OSP (Field Element to Octet String Conversion Primitive)?

drapel eg

Referința de mai jos se referă la „FE2OSP (Field Element to Octet String Conversion Primitive)”.

Aș aprecia orice ajutor în găsirea definiției (algoritmului) pentru FE2OSP și a formatului parametrilor de intrare și de ieșire.

Mulțumesc!

Referință: IETF RFC8446, Protocolul TLS (Transport Layer Security) Versiunea 1.3, august 2018), secțiunea 7.4.2. „Curba eliptică Diffie-Hellman”

Puncte:2
drapel ng

FE2OSP și OS2FEP convertesc între câmp finit element (cum ar fi coordonata X sau Y a unui punct pe o curbă eliptică) și șir de octeți (echivalent șir de octeți). Ele au fost inițial definite de IEEE Std 1363-2000 și revizuită de IEEE P1363a-2004.

Câmp finit sunt seturi cu $q$ elemente notate $\operatorname{GF}(q)$ sau $\mathbb F_q$, Unde $q$ este un întreg mare al formei $q=p^m$, cu $p$ prim, și $m$ cel puțin un număr întreg $1$.

FE2OSP (Field Element to Octet String Conversion Primitive) ia ca intrare un element de câmp $x$ și dimensiunea câmpului $q$. Acesta scoate un șir de octet, de dimensiune dependentă de $q$ numai.

OS2FEP (Octet String to Field Element Conversion Primitive) ia ca intrare un șir de octet (și dimensiunea acestuia) și dimensiunea câmpului $q$. Emite un element de câmp sau o indicație de eroare.

Standardul distinge 3 cazuri:

  1. $m=1$, pentru așa-numitele curbe prime ca secp256k1 sau secp384r1 (de departe cea mai comună în zilele noastre). Elementul câmp $x$ este un număr întreg în $[0,p)$. Șirul de octeți corespunzător are $\left\lceil\log_2(p-1)/8\right\rceil$ octeți (octeți), reprezentând $x$ pe big-endian convenţie. Aceasta se potrivește cu conversiile efectuate de PKCS#1 I2OSP și OS2IP în RSA.
  2. $p=2$, pentru așa-numitele curbe binare precum secta239k1 sau secta283r1. Elementul câmp $x$ este un șir de biți de $m$ biți notate $b_i$. Șirul de octeți corespunzător are $\left\lceil m/8\right\rceil$ octeți (octeți), cu $b_0$ bitul cel mai puțin semnificativ al ultimului octet și $7-(m\bmod 8)$ cei mai semnificativi biți ai primului octet la zero.
  3. Altele (acoperite numai de P1363a). Elementul câmp $x$ este $m$ numere întregi $a_i\in[0,p)$. Șirul de octeți corespunzător are $\left\lceil\log_2(q-1)/8\right\rceil$ octeți (octeți), reprezentând numărul întreg $\sum_{i=0}^{m-1}a_i\,p^i$ pe big-endian convenţie. Asta face ca 1 și 2 cazuri speciale din cele 3 mai generale.

În toate cazurile, neutrul multiplicativ al câmpului ( $1$ ) este reprezentată de $\left\lceil\log_2(q-1)/8\right\rceil$ octeți (octeți), cu ultimul octet 01h iar toate celelalte 00h.

După revizuirea mea a schițelor P1363-D13 (1999) și P1363a-D12 (2003), diferențele cu cele moderne SEC1-v2lui Conversie câmp-element în octet-șir și Conversie octet-șir în element de câmp sunt minime:

  • doar P1363a acoperă cazul 3.
  • P1363 numește octeți $M_i$ cu $M_0$ ultimul/dreapta. SEC1 inversează acea notație (și în mod corespunzător schimbă formulele), ceea ce este mai natural pentru programatorii care văd indicele zero ca primul/stânga. Asta face nu schimbați șirul de octeți.
  • „Eroarea” OS2FEP este „invalidă” pentru conversia octet-string-to-field-element.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.