{"id":172755,"date":"2026-05-19T18:24:53","date_gmt":"2026-05-19T16:24:53","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/ad-nihilum-0-4-3"},"modified":"2026-05-19T18:24:53","modified_gmt":"2026-05-19T16:24:53","slug":"ad-nihilum-0-4-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/ad-nihilum-0-4-3","title":{"rendered":"Ad Nihilum 0.4.3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A avut loc lansarea Ad Nihilum 0.4.3 \u2014 un serviciu minimalist pentru schimbul de mesaje criptate pe principiul \u201eam citit \u2014 am ars\u201d, destinat \u00een principal pentru self-hosting.<\/p>\n<p>Serverul ac\u021bioneaz\u0103 doar ca un depozit mut. Criptarea \u0219i decriptarea se realizeaz\u0103 exclusiv pe partea clientului, \u00een browser (prin AES-GCM).<\/p>\n<h3>Caracteristici<\/h3>\n<ul>\n<li>criptare \u0219i decriptare localizat\u0103, <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/server\/\"   title=\"serverul\" data-wpil-keyword-link=\"linked\">serverul<\/a> niciodat\u0103 nu vede cheia;<\/li>\n<li>suport pentru un strat suplimentar de criptare cu parol\u0103, despre care (1) serverul nu poate \u0219ti, (2) nu poate fi dedus din link-ul transmis;<\/li>\n<li>proiectul con\u021bine aproximativ 2200 de linii de cod server pe C \u0219i 600 de linii de cod client pe JS, ceea ce simplific\u0103 auditul;<\/li>\n<li>Ad Nihilum depinde doar de libmicrohttpd. Pentru generarea codurilor QR se furnizeaz\u0103 o versiune modificat\u0103 a QRCode.js;<\/li>\n<li>este inclus un ghid pentru ridicarea rapid\u0103 a serviciului local f\u0103r\u0103 IP extern;<\/li>\n<li>Ad Nihilum func\u021bioneaz\u0103 \u0219i pe Android, incluz\u00e2nd un script corespunz\u0103tor pentru compilare \u00een Termux;<\/li>\n<li>server unifil \u0219i sincron.<\/li>\n<\/ul>\n<h3>Modific\u0103ri<\/h3>\n<h4>Redesign extins<\/h4>\n<ul>\n<li>Pagini separate pentru trimiterea \u0219i primirea mesajelor, codul clientului corespunz\u0103tor.<\/li>\n<li>\u00cen general, designul a fost modificat semnificativ \u0219i ajustat conform dorin\u021belor utilizatorilor de pe lorchan.<\/li>\n<li>Clienti \u201esimpli\u201d \u0219i locali:\n<ul> <noindex><\/p>\n<li>s-a ad\u0103ugat un client cu un design simplificat <a rel=\"nofollow\" href=\"https:\/\/adnihilum.net\/simple\">https:\/\/adnihilum.net\/simple<\/a>;<\/li>\n<p><\/noindex> <\/p>\n<li>paginile clientului pot fi salvate local \u0219i utilizate din file:\/\/.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>Politicile browser-ului<\/h4>\n<ul>\n<li>s-a implementat CSP pentru combaterea XSS;<\/li>\n<li>serverul trimite HSTS.<\/li>\n<\/ul>\n<h4>Alte modific\u0103ri<\/h4>\n<ul>\n<li>proiectul a fost redenumit din Epha-ots;<\/li>\n<li>a fost cump\u0103rat domeniul adnihilum.net;<\/li>\n<li>TLS este asigurat prin Let\u2019s Encrypt, ceea ce merit\u0103 men\u021bionat (f\u0103r\u0103 fonduri);<\/li>\n<li>a fost simplificat\u0103 gestionarea fi\u0219ierelor;<\/li>\n<li>trecerea la pointeri mari;<\/li>\n<li>au fost corectate erorile mici;<\/li>\n<li>auto-jsminify \u0219i compilarea fi\u0219ierelor client la compilarea prin CMake.<\/li>\n<\/ul>\n<h3>Revizuirea protocolului<\/h3>\n<p>Genereaz\u0103 trei valori aleatorii: cheia <strong>K<\/strong>, vector de ini\u021bializare <strong>N<\/strong> \u0219i sare <strong>S<\/strong>. <strong>K<\/strong> \u2014 256 bi\u021bi, <strong>N<\/strong> \u2014 96 bi\u021bi, <strong>S<\/strong> \u2014 128 bi\u021bi.<\/p>\n<p>Afi\u0219eaz\u0103 <strong>ID<\/strong> din <strong>K<\/strong> \u0219i <strong>S<\/strong> prin HKDF bazat pe SHA-256.<\/p>\n<p>Formeaz\u0103 un \u0219ir de date suplimentare autentificate <strong>aad<\/strong> \u2014 este pur \u0219i simplu un \u0219ir de tip: id=ID<\/p>\n<p>Dac\u0103 utilizatorul a setat o parol\u0103:<\/p>\n<ul>\n<li>afiseaz\u0103 <strong>Pk<\/strong> din parol\u0103 \u0219i <strong>S<\/strong> prin PBKDF2, SHA-256, 800000 de itera\u021bii;<\/li>\n<li>aceea\u0219i sare este folosit\u0103 pentru tot;<\/li>\n<li>cripteaz\u0103 datele folosind AES-GCM, folosind cheia <strong>Pk<\/strong>, IV\/nonce <strong>N<\/strong> \u0219i transmite <strong>aad<\/strong>.<\/li>\n<\/ul>\n<p>Adaug\u0103 o etichet\u0103 de dou\u0103 octe\u021bi la datele deja criptate, dac\u0103 a existat o parol\u0103, sau la datele originale, dac\u0103 nu a fost parol\u0103.<\/p>\n<p>Primul octet are valoarea: indic\u0103 dac\u0103 datele au fost criptate cu o parol\u0103:<\/p>\n<ul>\n<li>0x73 \u2014 datele sunt criptate cu o parol\u0103;<\/li>\n<li>0x13 \u2014 datele nu sunt criptate cu o parol\u0103.<\/li>\n<\/ul>\n<p>Al doilea octet \u2014 o valoare constant\u0103 0x37.<\/p>\n<p>Recriteaz\u0103 din nou rezultatul folosind AES-GCM, folosind acela\u0219i iv = N \u0219i acela\u0219i <strong>aad<\/strong>. Aceasta ofer\u0103 textul criptat final <strong>ct<\/strong>.<\/p>\n<p>Conecteaz\u0103 octe\u021bii \u00eentr-un \u0219ir: blob = N .. S .. ct<\/p>\n<p>Trimite <strong>blob<\/strong> pe server \u00eempreun\u0103 cu <strong>ID<\/strong>. Serverul returneaz\u0103 <strong>blob<\/strong> pe baza acestuia <strong>ID<\/strong> \u0219i nu \u00eel poate \u00eenlocui: clientul verific\u0103 mai \u00eent\u00e2i <strong>ID<\/strong> folosind <strong>N<\/strong> \u0219i <strong>K<\/strong> \u00eenc\u0103 \u00eenainte de decriptare, \u0219i apoi \u2014 prin <strong>aad<\/strong>.<\/p>\n<p>Clientul stocheaz\u0103 <strong>K<\/strong>. <strong>K<\/strong> niciodat\u0103 nu este trimis pe server. <strong>Pk<\/strong> nici nu este trimis; tot ce este legat de parol\u0103 este \u0219ters din memorie.<\/p>\n<p>Clientul formeaz\u0103 un link: origin\/#ID\/K<\/p>\n<p>Aici <strong>ID<\/strong> \u0219i <strong>K<\/strong> \u2014 \u0219iruri \u00een format base64url.<\/p>\n<p>C\u00e2nd destinatarul deschide linkul:<\/p>\n<ul>\n<li>navigatoarele ignor\u0103 tot ce \u00eencepe cu #; acest lucru se nume\u0219te location.hash;<\/li>\n<li>aplica\u021bia client este \u00eenc\u0103rcat\u0103 de pe server;<\/li>\n<li>din punctul meu de vedere, aceasta este principala vulnerabilitate: ne \u00eentoarcem de fapt la problema c\u0103 \u00abTLS este vulnerabil\u00bb;<\/li>\n<li>cu toate acestea, nimic nu \u00eempiedic\u0103 p\u0103strarea clientului offline;<\/li>\n<li>\u00een ideal ar trebui s\u0103 existe un client standalone separat.<\/li>\n<\/ul>\n<p>JavaScript-ul clientului verific\u0103 location.hash, \u0219i dac\u0103 exist\u0103 <strong>ID<\/strong> \u0219i <strong>K<\/strong>, acesta \u00eencarc\u0103 datele de pe server.<\/p>\n<p>Apoi le verific\u0103, le decripteaz\u0103 \u0219i, dac\u0103 este nevoie, solicit\u0103 parola \u0219i le decripteaz\u0103 din nou.<\/p>\n<h3>Licen\u021b\u0103<\/h3>\n<p>Proiectul este distribuit sub GPLv3.<\/p>\n<p>Sursa: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/news\/opensource\/18293734\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 Ad Nihilum 0.4.3 \u2014 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 &laquo;\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u2014 \u0441\u0436\u0435\u0433&raquo;, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 self-hosting. C\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043b\u0438\u0448\u044c \u0432 \u0440\u043e\u043b\u0438 \u0433\u043b\u0443\u0445\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. \u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 (\u0447\u0435\u0440\u0435\u0437 AES-GCM). \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u0438\u0434\u0438\u0442 \u043a\u043b\u044e\u0447\u0430; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-172755","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 Ad Nihilum 0.4.3 \u2014 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u00ab\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u2014 \u0441\u0436\u0435\u0433\u00bb, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 self-hosting. C\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043b\u0438\u0448\u044c \u0432 \u0440\u043e\u043b\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Erik Peterson\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/ad-nihilum-0-4-3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Ad Nihilum 0.4.3 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 Ad Nihilum 0.4.3 \u2014 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u00ab\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u2014 \u0441\u0436\u0435\u0433\u00bb, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 self-hosting. C\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043b\u0438\u0448\u044c \u0432 \u0440\u043e\u043b\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/ad-nihilum-0-4-3\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-05-19T16:24:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-05-19T16:24:53+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ad Nihilum 0.4.3 | ProHoster","description":"A avut loc lansarea Ad Nihilum 0.4.3 \u2014 un serviciu minimalist pentru schimbul de mesaje criptate dup\u0103 principiul \u201eam citit - am ars\u201d, destinat \u00een principal self-hostingului. Serverul joac\u0103 doar rolul de.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/ad-nihilum-0-4-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Ad Nihilum 0.4.3 | ProHoster","og:description":"\u0421\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437 Ad Nihilum 0.4.3 \u2014 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u00ab\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u2014 \u0441\u0436\u0435\u0433\u00bb, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 self-hosting. C\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043b\u0438\u0448\u044c \u0432 \u0440\u043e\u043b\u0438.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/ad-nihilum-0-4-3","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2026-05-19T16:24:53+00:00","article:modified_time":"2026-05-19T16:24:53+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/172755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=172755"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/172755\/revisions"}],"predecessor-version":[{"id":173166,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/172755\/revisions\/173166"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=172755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=172755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=172755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}