Puncte:3

Câți biți/octeți este o cheie publică, având în vedere codificarea acesteia

drapel in

Mă chinui să înțeleg care este dimensiunea „bit/octet” a unei chei publice, cum o poți rezolva și chiar ce înseamnă.

Un exemplu de cheie publică RSA este:

AAAAB3NzaC1yc2EAAAABJQAAAQB/nAmOjTmezNUDKYvEeIRf2YnwM9/uUG1d0BYsc8/tRtx+RGi7N2lUbp728MXGwdnL9od4cItzky/zVdLZE2cycOa18xBK9cOWmcKS0A8FYBxEQWJ/q9YVUgZbFKfYGaGQxsER+A0w/fX8ALuk78ktP31K69LcQgxIsl7rNzxsoOQKJ/CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr/QbrfB1WT6s3838SEaXfgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN+ffE7iiayQf/2XR+8j4N4bW30DiPtOQLGUrH1y5X/rpNZNlWW2+jGIxqZtgWg7lTy3mXy5x836Sj/6L

Cum calculez lungimea acestei chei? Există 368 de caractere, deci asta este lungimea de mușcătură? Asta ar însemna atunci că acesta este un sistem de 46 de octeți, nu? Abia înțeleg ce înseamnă asta și m-am scufundat o săptămână sau două în articole Wikipedia, tutoriale YouTube și multe altele. Acestea vorbesc adesea de parcă ai înțelege ce înseamnă, așa că nu am prea multe de la care să ies. Dacă cineva ar putea explica logica care îmi lipsește aici, asta ar ajuta foarte mult.

Înțeleg că un bloc de 8 biți este de 1 octet, adică avem o lungime de 8 caractere care poate fi 1 sau 0. Dar nu am idee cum s-ar raporta asta la cele de mai sus?

În cele din urmă, am o cheie publică diferită pentru care am vrut să calculez dimensiunea. Să zicem că am două seturi de numere întregi, $S_1$ și $S_2$. Dimensiunile lor sunt 100, respectiv 150. Acești doi compun cheia mea publică. Acesta este foarte diferit de exemplul de mai sus, așa că cum calculez dimensiunea biților? Sau intreb ceva gresit aici? Chiar vreau să știu cât de mult spațiu de stocare pe un computer ar ocupa o astfel de cheie. Să zicem că am 100 de seturi, fiecare cu 1000 de termeni. Cât de mare ar fi un „fișier” acea cheie publică? Dar vreau să încerc să „înțeleg” ce înseamnă chiar și biți/octeți în primul rând.

Orice clarificări ar fi foarte apreciate.

Puncte:6
drapel gb

O mulțime de întrebări aici. Încerc să o descompun destul de simplu și să răspund la întrebarea ta inițială.

Ceea ce ai postat este a baza64 codificarea unei chei publice ssh-rsa. Deci, practic, nu este chiar ușor de citit pentru oameni. Dacă decodați acest șir, îl puteți arunca o privire în funcție de octeți. Îți voi arăta primii câțiva octeți ai exemplului tău, încercând să explic ce înseamnă aceștia:

00000000 00 00 00 07 73 73 68 2d 72 73 61 00 00 00 01 25 |....ssh-rsa....%|
00000010 00 00 01 00 7f 9c 09 8e 8d 39 9e cc d5 03 29 8b |.........9....).|
00000020 c4 78 84 5f d9 89 f0 33 df ee 50 6d 5d d0 16 2c |.x._...3..Pm]..,|
  • Primii patru octeți sunt 0x00 0x00 0x00 0x07, indicând faptul că următorul câmpul pe care trebuie să-l citiți are șapte octeți
  • apoi aveți următorii șapte octeți: 0x73, 0x73, .... 0x61, care se traduc prin „ssh-rsa”.
  • următorii patru octeți sunt 0x00 0x00 0x00 0x01, indicând faptul că următorul octet descrie exponentul dvs. public
  • atunci ai 0x25, care este exponentul tău public
  • următorii patru octeți sunt 0x00 0x00 0x01 0x00, ceea ce indică faptul că modulul dvs. public are o lungime de 0x0100 octeți (care se traduce la 256 de octeți - ceea ce se traduce în 2048 de biți)
  • și atunci ai modulul tău public

Astfel, știți că în acest caz modulul cheii publice este de 2048 de biți. Rețineți că cheile RSA pot varia în dimensiune. Pentru mai multe informații, probabil că puteți arunca o privire la acest pagina, care descrie structura cheilor RSA și probabil wikipedia pagina RSA în general.

MeBadMaths avatar
drapel in
Credeam că cheia publică RSA îmi părea cu totul străină. Vă mulțumesc pentru clarificare și pentru cele două link-uri. Primul nu este unul pe care l-am citit, îl voi arunca o privire acum. Mi-ai răspuns la câteva dintre întrebările mele inițiale, pe care le apreciez foarte mult. Ați spus că este de 256 de octeți - înseamnă asta dacă aș fi stocat acea cheie publică pe, de exemplu, un document Word, dimensiunea fișierului ar fi de 256 de octeți?
Maarten Bodewes avatar
drapel in
Nu, „dimensiunea” unei chei RSA este determinată numai de modulul mărimii biților. O cheie publică poate fi codificată în multe moduri diferite, dar, în general, exponentul public este și stocat, astfel încât în ​​acest caz dimensiunea va fi mai mare de 256 de octeți. Cu alte cuvinte: dimensiunea cheii **codate** depinde de dimensiunea cheii, de metadatele stocate cu cheia lor și de tipul de codificare utilizat.
MeBadMaths avatar
drapel in
Bine, deci exemplul pe care l-am dat a fost o cheie codificată? Prin urmare, ar fi mai mare, deoarece codificarea adaugă informații suplimentare care trebuie stocate? Cred că are sens, mulțumesc!
MeBadMaths avatar
drapel in
Deci, pentru a determina dimensiunile octeților cheii publice RSA pe care am furnizat-o, este nevoie de detalii care sunt codificate, precum și detalii din procesul de codificare în sine. Prin urmare, acest lucru nu este transferabil la alte chei publice pentru alte sisteme. Presupun că stabilirea dimensiunii cheilor publice nu este aceeași pentru toate cheile publice? Prin urmare, marea întrebare pe care o am, este care este dimensiunea cheii publice corespunzătoare seturilor din postarea mea? Acesta este scopul meu principal și probabil că am fost puțin naiv în ceea ce privește cât de ușor ar fi asta, haha. Multumesc pentru raspunsuri pana acum!
BlueRaja - Danny Pflughoeft avatar
drapel cn
@MeBadMaths: Codificarea base64 mărește, de asemenea, puțin dimensiunea. Fiecare caracter din șirul pe care l-ați lipit durează 8 biți pentru a stoca _(potențial mai mulți, în funcție de codificarea caracterelor!)_, dar reprezintă doar una dintre valorile 64 = 2^6 = „6 biți în valoare de”. Deci, de ce să folosiți base64 dacă este atât de risipitor? Se face pentru că o cheie brută ar arăta ca o grămadă de simboluri farfurie într-un editor de text și nu ar copia+lipi corect, în timp ce reprezentarea sa de bază64 poate.
MeBadMaths avatar
drapel in
@BlueRaja-DannyPflughoeft Asta face lucrurile mai clare. Deci, fiecărui caracter îi corespunde 6 biți de stocare, de la baza sa64. Este stocat ca 8 biți, pierzând 2 biți. Să zicem că cheia mea publică era două grupuri de numere; $\{0,1,6,7\}$ și $\{0,2,4\}$. Transformându-le în binare, apoi în base64, cred că seturile se transformă în AAEGBw= (Ar putea fi greșit cu umplutura) și AAIE. Fiecare caracter este de 8 biți = 1 octet (risipind 2 biți), deci dimensiunea totală este de 7 octeți și, respectiv, de 4 octeți. Este corect? S-ar putea să nu iau în considerare simbolul { }, deci doar valorile numerice

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.