{"id":2486,"date":"2023-02-09T10:03:38","date_gmt":"2023-02-09T10:03:38","guid":{"rendered":"https:\/\/harpocrates-project.eu\/was-ist-hybride-homomorphe-verschluesselung-und-ihre-anwendungen\/"},"modified":"2023-09-12T09:24:27","modified_gmt":"2023-09-12T09:24:27","slug":"was-ist-hybride-homomorphe-verschluesselung-und-ihre-anwendungen","status":"publish","type":"post","link":"https:\/\/harpocrates-project.eu\/de\/was-ist-hybride-homomorphe-verschluesselung-und-ihre-anwendungen\/","title":{"rendered":"Was ist hybride homomorphe Verschl\u00fcsselung und ihre Anwendungen"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8220;1&#8243; custom_padding_last_edited=&#8220;on|phone&#8220; _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; background_color=&#8220;#1f2437&#8243; background_enable_image=&#8220;off&#8220; background_position=&#8220;center_left&#8220; custom_padding=&#8220;0rem|1rem|0rem|1rem|true|false&#8220; custom_padding_tablet=&#8220;|2rem|1rem|2rem|false|false&#8220; custom_padding_phone=&#8220;|1rem||1rem|false|false&#8220; global_colors_info=&#8220;{}&#8220;][et_pb_row custom_padding_last_edited=&#8220;on|phone&#8220; _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; width=&#8220;100%&#8220; max_width=&#8220;1540px&#8220; custom_padding=&#8220;||||false|false&#8220; custom_padding_tablet=&#8220;||||false|false&#8220; custom_padding_phone=&#8220;1rem||1rem||false|false&#8220; global_colors_info=&#8220;{}&#8220;][et_pb_column type=&#8220;4_4&#8243; _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220;][lwp_divi_breadcrumbs link_color=&#8220;#FFFFFF&#8220; separator_color=&#8220;#FFFFFF&#8220; _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; custom_padding_tablet=&#8220;1rem||1rem||false|false&#8220; custom_padding_phone=&#8220;1rem||1rem||false|false&#8220; custom_padding_last_edited=&#8220;on|phone&#8220; global_colors_info=&#8220;{}&#8220;][\/lwp_divi_breadcrumbs][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8220;1&#8243; custom_padding_last_edited=&#8220;on|phone&#8220; _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; custom_padding=&#8220;|1rem||1rem|false|true&#8220; custom_padding_tablet=&#8220;|2rem||2rem|false|true&#8220; custom_padding_phone=&#8220;|1rem||1rem|false|true&#8220; global_colors_info=&#8220;{}&#8220;][et_pb_row column_structure=&#8220;2_3,1_3&#8243; _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; width=&#8220;100%&#8220; max_width=&#8220;1540px&#8220; global_colors_info=&#8220;{}&#8220;][et_pb_column type=&#8220;2_3&#8243; _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; border_color_right=&#8220;#9b9b9b&#8220; global_colors_info=&#8220;{}&#8220;][et_pb_text _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; header_font=&#8220;Montserrat|700|||||||&#8220; header_text_color=&#8220;#1f2437&#8243; header_font_size=&#8220;24px&#8220; global_colors_info=&#8220;{}&#8220;]<\/p>\n<h1 id=\"0938\" class=\"pw-post-title ip iq ir gx b is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm fa\" data-selectable-paragraph=\"\">Was ist hybride homomorphe Verschl\u00fcsselung und ihre Anwendungen<\/h1>\n<p><b><span>9.2.2023 10:03<\/span><\/b><\/p>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; hover_enabled=&#8220;0&#8243; global_colors_info=&#8220;{}&#8220; sticky_enabled=&#8220;0&#8243;]<\/p>\n<h1 id=\"da1f\" class=\"lb lc ir gx ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly fa\" data-selectable-paragraph=\"\">TL;DR<\/h1>\n<p id=\"bff2\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Einf\u00fchrung in das Konzept der hybriden homomorphen Verschl\u00fcsselung, ihre Anwendungsf\u00e4lle, eine kurze Formulierung und einige<span> <\/span><a class=\"ae la\" href=\"https:\/\/github.com\/khoaguin\/priv-sec-ai-blog\/tree\/main\/what-is-hhe\" rel=\"noopener ugc nofollow\" target=\"_blank\">Demonstrationscodes in C++<\/a>.<\/p>\n<h1 id=\"e512\" class=\"lb lc ir gx ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly fa\" data-selectable-paragraph=\"\">Einf\u00fchrung<\/h1>\n<p id=\"5472\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Anwendungen zum Schutz der Privatsph\u00e4re sind heutzutage zu einem wichtigen Thema geworden, da sich die Menschen zunehmend Sorgen um den Schutz ihrer Daten machen, maschinelle Lernanwendungen weit verbreitet sind, die Zugriff auf eine gro\u00dfe Menge an Daten ben\u00f6tigen, und neue Vorschriften wie die Allgemeine Datenschutzverordnung (GDPR) gelten, ganz zu schweigen von anderen ethischen und finanziellen Bedenken. Heute werden wir eine neue Technik zur Verbesserung der Privatsph\u00e4re kennenlernen, die Hybrid Homomorphic Encryption (HHE), eine Erweiterung der Homomorphic Encryption (HE).<\/p>\n<p id=\"4dd8\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">HE ist eine Verschl\u00fcsselungstechnik, die es uns erm\u00f6glicht, Berechnungen mit verschl\u00fcsselten Daten durchzuf\u00fchren. Eines der Probleme von HE ist jedoch, dass die Chiffretexte um mehrere Gr\u00f6\u00dfenordnungen gr\u00f6\u00dfer sind als die entsprechenden Klartexte. HHE zielt darauf ab, dieses Problem zu l\u00f6sen, indem symmetrische Chiffren mit HE kombiniert werden, um die Gr\u00f6\u00dfe der Chiffretexte und die erforderlichen Rechenressourcen f\u00fcr die Partei, die die Daten verschl\u00fcsselt und sendet (z. B. ein Kunde\/Dateneigent\u00fcmer), auf Kosten teurerer Berechnungen f\u00fcr die Partei, die die Berechnungen mit den verschl\u00fcsselten Daten durchf\u00fchrt (z. B. ein Server, ein Cloud-Dienstanbieter oder CSP), zu reduzieren. Daher kann HHE besser geeignet sein als HE, wenn es um das Client-Server-Modell f\u00fcr verschl\u00fcsselte Berechnungen geht, insbesondere wenn der Client \u00fcber begrenzte Rechenressourcen und Internetbandbreite verf\u00fcgt, z. B. Telefone, IoT-Ger\u00e4te usw.<\/p>\n<h2 id=\"bc0e\" class=\"me lc ir gx ld mf mg dt lh mh mi dv ll jx mj mk lp kb ml mm lt kf mn mo lx mp fa\" data-selectable-paragraph=\"\">Vorteile:<\/h2>\n<ul class=\"\">\n<li id=\"c993\" class=\"mq mr ir gx b jp lz jt ma jx ms kb mt kf mu kj mv mw mx my fa\" data-selectable-paragraph=\"\">Erm\u00f6glichung von Berechnungen auf verschl\u00fcsselten Daten und damit von datenschutzfreundlichen Datenanalysen und Anwendungen<\/li>\n<li id=\"ce2a\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj mv mw mx my fa\" data-selectable-paragraph=\"\">Verringerung der Gr\u00f6\u00dfe des Chiffriertextes und damit Verringerung der erforderlichen Rechen- und Bandbreitenressourcen f\u00fcr die Partei, die die Daten besitzt, verschl\u00fcsselt und sendet<\/li>\n<\/ul>\n<h2 id=\"4390\" class=\"me lc ir gx ld mf mg dt lh mh mi dv ll jx mj mk lp kb ml mm lt kf mn mo lx mp fa\" data-selectable-paragraph=\"\">Benachteiligungen:<\/h2>\n<ul class=\"\">\n<li id=\"c5ed\" class=\"mq mr ir gx b jp lz jt ma jx ms kb mt kf mu kj mv mw mx my fa\" data-selectable-paragraph=\"\">H\u00f6herer Rechenaufwand auf dem Gebiet der verschl\u00fcsselten Berechnungen<\/li>\n<li id=\"11a6\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj mv mw mx my fa\" data-selectable-paragraph=\"\">Derzeit noch auf bestimmte Arten von Daten und Berechnungen beschr\u00e4nkt<\/li>\n<\/ul>\n<h1 id=\"c277\" class=\"lb lc ir gx ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly fa\" data-selectable-paragraph=\"\">Anwendungsf\u00e4lle<\/h1>\n<p id=\"1a4b\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Wie HE kann auch HHE Anwendungen in Bereichen unterst\u00fctzen, in denen der Datenschutz ein wichtiges Anliegen ist, z. B. im Finanzwesen, im Gesundheitswesen, bei der Regulierung usw. Dar\u00fcber hinaus kann HHE Anwendungen auf Ger\u00e4ten mit begrenzter Rechenleistung, Speicher und Netzwerkbandbreite, wie z. B. eingebetteten und IoT-Ger\u00e4ten, unterst\u00fctzen.<\/p>\n<p id=\"586a\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Anwendungsbeispiel: Eine Heim\u00fcberwachungsanwendung f\u00fcr das Gesundheitswesen, bei der in einem Haushalt installierte IoT-Ger\u00e4te Bilder (oder andere Signale) aufnehmen, sie verschl\u00fcsseln und die verschl\u00fcsselten Signale an den Server senden. Der Server f\u00fchrt einen KI-Algorithmus auf den empfangenen verschl\u00fcsselten Daten aus und erkennt Anl\u00e4sse wie z. B. Schlaganf\u00e4lle. Dann sendet er die verschl\u00fcsselten Ergebnisse an das Haushaltsger\u00e4t, das f\u00fcr die Entschl\u00fcsselung des Ergebnisses verantwortlich ist und nur dann einen Alarm ausl\u00f6st, wenn das entschl\u00fcsselte Ergebnis positiv ist, z. B. wenn Menschen einen Schlaganfall haben. Auf diese Weise kann der Haushalt den Dienst des Servers nutzen, w\u00e4hrend der Dienstanbieter keine Bilder oder sensiblen Daten des Haushalts sieht.<\/p>\n<h1 id=\"e860\" class=\"lb lc ir gx ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly fa\" data-selectable-paragraph=\"\">Kommen wir zu den Berechnungen<\/h1>\n<p id=\"80bc\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Im Folgenden werden einige kurze Formulierungen zu HE und HHE gegeben.<\/p>\n<h2 id=\"04f4\" class=\"me lc ir gx ld mf mg dt lh mh mi dv ll jx mj mk lp kb ml mm lt kf mn mo lx mp fa\" data-selectable-paragraph=\"\">Homomorphe Verschl\u00fcsselung<\/h2>\n<p id=\"c1f6\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Bevor wir zu HHE kommen, m\u00fcssen wir zun\u00e4chst HE verstehen. Mit HE k\u00f6nnen wir die Daten verschl\u00fcsseln und Operationen mit den verschl\u00fcsselten Daten durchf\u00fchren. Das Ergebnis der Entschl\u00fcsselung entspricht dem Ergebnis, das bei der Durchf\u00fchrung \u00e4hnlicher Operationen mit den entsprechenden Klartextdaten erzielt wird. Um HE besser zu verstehen, verweise ich Sie auf Folgendes<span> <\/span><a class=\"ae la\" href=\"https:\/\/blog.openmined.org\/what-is-homomorphic-encryption\/\" rel=\"noopener ugc nofollow\" target=\"_blank\">Blog-Eintrag<\/a><span> <\/span>von OpenMined.<\/p>\n<p id=\"d2ce\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Sehen wir uns hier die Definition eines homomorphen Verschl\u00fcsselungsverfahrens mit \u00f6ffentlichem Schl\u00fcssel an, die aus [1] \u00fcbernommen wurde und aus 4 Algorithmen besteht:<\/p>\n<ol class=\"\">\n<li id=\"0783\" class=\"mq mr ir gx b jp jq jt ju jx ne kb nf kf ng kj nh mw mx my fa\" data-selectable-paragraph=\"\"><strong class=\"gx ni\">HE.KeyGen<\/strong>(1<em class=\"nj\">\u207f)<\/em> \u2192<span> <\/span><strong class=\"gx ni\">(pk, sk, evk):<span> <\/span><\/strong>Der Algorithmus zur Schl\u00fcsselerzeugung.<strong class=\"gx ni\"><span> <\/span><\/strong>Hier,<span> <\/span><em class=\"nj\">n<\/em><span> <\/span>ist ein Sicherheitsparameter;<span> <\/span><strong class=\"gx ni\">pk<\/strong>,<span> <\/span><strong class=\"gx ni\">sk<\/strong><span> <\/span>und<span> <\/span><strong class=\"gx ni\">evk<\/strong><span> <\/span>sind der \u00f6ffentliche Schl\u00fcssel, der geheime Schl\u00fcssel und der Auswertungsschl\u00fcssel. Wir verwenden<span> <\/span><strong class=\"gx ni\">pk<\/strong><span> <\/span>um die Daten zu verschl\u00fcsseln,<span> <\/span><strong class=\"gx ni\">sk<\/strong><span> <\/span>um die verschl\u00fcsselten Daten zu entschl\u00fcsseln, und<span> <\/span><strong class=\"gx ni\">evk<\/strong><span> <\/span>zur Durchf\u00fchrung von Berechnungen mit verschl\u00fcsselten Daten<\/li>\n<li id=\"e104\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj nh mw mx my fa\" data-selectable-paragraph=\"\"><strong class=\"gx ni\">HE.Enc(pk,<span> <\/span><\/strong> m<strong class=\"gx ni\">) \u2192<span> <\/span><\/strong> c<em class=\"nj\">:<span> <\/span><\/em>Der HE-Verschl\u00fcsselungsalgorithmus, wobei<span> <\/span> m<span> <\/span>die Klartextdaten und<span> <\/span> c<span> <\/span>die HE-verschl\u00fcsselten Daten sind<\/li>\n<li id=\"b1b3\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj nh mw mx my fa\" data-selectable-paragraph=\"\"><strong class=\"gx ni\">HE.Eval(evk,<span> <\/span><\/strong> f<em class=\"nj\">, c\u2081, c\u2082, &#8230; c\u1d62) \u2192 c&#8216;:<span> <\/span><\/em>Der Bewertungsalgorithmus<em class=\"nj\"><span> <\/span><\/em>wobei<span> <\/span><em class=\"nj\">f<span> <\/span><\/em>ist eine Funktion wie Addition oder Multiplikation, und<span> <\/span><em class=\"nj\">c<\/em>&#8218; <em class=\"nj\"><span> <\/span> ist das HE-verschl\u00fcsselte Ergebnis.<\/em> Wir sollten<span> <\/span><strong class=\"gx ni\">HE.Dec(sk,<span> <\/span><\/strong><em class=\"nj\">c&#8216;<\/em><strong class=\"gx ni\">) =<span> <\/span><\/strong><em class=\"nj\">f(m\u2081, m\u2082, &#8230;, m\u1d62)<\/em><\/li>\n<li id=\"6224\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj nh mw mx my fa\" data-selectable-paragraph=\"\"><strong class=\"gx ni\">HE.Dec(sk,<span> <\/span><\/strong> c<strong class=\"gx ni\">) \u2192<span> <\/span><\/strong> m<em class=\"nj\">:<span> <\/span><\/em>Der HE-Entschl\u00fcsselungsalgorithmus<em class=\"nj\"><span> <\/span><\/em>das dauert<span> <\/span><strong class=\"gx ni\">sk<\/strong><span> <\/span>und der Chiffretext<span> <\/span><em class=\"nj\">c<\/em><span> <\/span>um die Klartextnachricht zu erstellen<span> <\/span><em class=\"nj\">m<\/em><\/li>\n<\/ol>\n<h2 id=\"595f\" class=\"me lc ir gx ld mf mg dt lh mh mi dv ll jx mj mk lp kb ml mm lt kf mn mo lx mp fa\" data-selectable-paragraph=\"\">Hybride homomorphe Verschl\u00fcsselung<\/h2>\n<p id=\"1477\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Anstatt die Daten mit einem HE-Schema zu verschl\u00fcsseln, das sehr gro\u00dfe Chiffretexte erzeugt (Expansion mehrfacher Ordnung im Vergleich zum Klartext), verschl\u00fcsselt HHE sie stattdessen mit einer symmetrischen Chiffre mit dem Expansionsfaktor 1 und sendet die symmetrischen Chiffretexte an den Server. Dar\u00fcber hinaus muss der Kunde auch eine homomorph verschl\u00fcsselte Version seines symmetrischen Schl\u00fcssels senden. Nach dem Empfang f\u00fchrt der Server den symmetrischen Entschl\u00fcsselungsalgorithmus homomorph aus, um den symmetrischen Chiffretext in einen homomorphen Chiffretext umzuwandeln. Danach kann der Server Berechnungen mit HE-verschl\u00fcsselten Daten durchf\u00fchren. Formal k\u00f6nnen wir ein HHE-Schema (nach [2]), das aus 5 Algorithmen besteht, wie folgt definieren<\/p>\n<ol class=\"\">\n<li id=\"ad3b\" class=\"mq mr ir gx b jp jq jt ju jx ne kb nf kf ng kj nh mw mx my fa\" data-selectable-paragraph=\"\"><strong class=\"gx ni\">HHE.KeyGen<\/strong>(1<em class=\"nj\">\u207f)<\/em> \u2192<strong class=\"gx ni\">(pk<\/strong>,<span> <\/span><strong class=\"gx ni\">sk<\/strong>,<span> <\/span><strong class=\"gx ni\">evk<\/strong>): Dies ist einfach der<span> <\/span><strong class=\"gx ni\">HE.KeyGen<span> <\/span><\/strong>Algorithmus, der den \u00f6ffentlichen HE-Schl\u00fcssel<strong class=\"gx ni\">(pk<\/strong>), den geheimen Schl\u00fcssel<strong class=\"gx ni\">(sk<\/strong>) und den Auswertungsschl\u00fcssel<strong class=\"gx ni\">(evk<\/strong>) erzeugt<\/li>\n<li id=\"d00e\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj nh mw mx my fa\" data-selectable-paragraph=\"\"><strong class=\"gx ni\">HHE.Enc<\/strong>(1<em class=\"nj\">\u207f,<\/em><span> <\/span><strong class=\"gx ni\">pk<\/strong>,<span> <\/span><em class=\"nj\">m<\/em>): Der HHE-Verschl\u00fcsselungsalgorithmus.<br \/>Zun\u00e4chst wird ein symmetrischer Schl\u00fcssel erstellt:<span> <\/span><strong class=\"gx ni\">SYM.KGen<\/strong>(1<em class=\"nj\">\u207f)<\/em> \u2192<span> <\/span><strong class=\"gx ni\">k<\/strong><br \/>Mit diesem symmetrischen Schl\u00fcssel verschl\u00fcsselt er dann die Klartextnachricht<span> <\/span><em class=\"nj\">m<\/em>:<span> <\/span><strong class=\"gx ni\">SYM.Enc<\/strong><strong class=\"gx ni\">(k<\/strong>,<span> <\/span><em class=\"nj\">m<\/em>) \u2192<span> <\/span><em class=\"nj\">c\u209b.<span> <\/span><\/em>Hier,<span> <\/span><em class=\"nj\">c\u209b<\/em><span> <\/span>ist der symmetrische Chiffriertext, der an den Server gesendet wird. Beachten Sie, dass<span> <\/span><em class=\"nj\">c\u209b<\/em><span> <\/span>hat die gleiche Gr\u00f6\u00dfe im Vergleich zu<span> <\/span><em class=\"nj\">m<\/em>.<em class=\"nj\"><br \/><\/em>Au\u00dferdem,<span> <\/span><strong class=\"gx ni\">HHE.Enc<\/strong><span> <\/span>verschl\u00fcsselt ebenfalls homomorph den symmetrischen Schl\u00fcssel<span> <\/span><strong class=\"gx ni\">k<span> <\/span><\/strong>mit<strong class=\"gx ni\"><span> <\/span>HE.Enc<\/strong><strong class=\"gx ni\">(pk<\/strong>,<span> <\/span><strong class=\"gx ni\">k<\/strong>) \u2192<span> <\/span><strong class=\"gx ni\">c\u2096.<\/strong> Folglich ist<strong class=\"gx ni\"><span> <\/span>c\u2096<\/strong><strong class=\"gx ni\"><span> <\/span> der HE-Chiffretext des symmetrischen Schl\u00fcssels<\/strong><span> <\/span><strong class=\"gx ni\">k<\/strong>, und wird zusammen mit den folgenden Daten an den Server gesendet<span> <\/span><em class=\"nj\">c\u209b<\/em><\/li>\n<li id=\"2d69\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj nh mw mx my fa\" data-selectable-paragraph=\"\"><strong class=\"gx ni\">HHE.Decomp<\/strong><strong class=\"gx ni\">(evk<\/strong>,<span> <\/span><strong class=\"gx ni\">c\u2096,<\/strong><span> <\/span><em class=\"nj\">c\u209b)<\/em> \u2192.<span> <\/span><em class=\"nj\">c<\/em>: Der HHE-Zerlegungsalgorithmus, der den symmetrischen Chiffretext umwandelt<span> <\/span><em class=\"nj\">c\u209b<\/em><span> <\/span>in den HE-Chiffretext<span> <\/span><em class=\"nj\">c<\/em><span> <\/span>durch homomorphes Auswerten des symmetrischen Entschl\u00fcsselungsalgorithmus mit<span> <\/span><strong class=\"gx ni\">c\u2096<span> <\/span><\/strong>und<span> <\/span><em class=\"nj\">c\u209b:<\/em><span> <\/span><strong class=\"gx ni\">HE.Eval<\/strong><strong class=\"gx ni\">(evk,<span> <\/span><\/strong> f=SYM<strong class=\"gx ni\">.Dec<\/strong>,<span> <\/span><strong class=\"gx ni\">c\u2096,<span> <\/span><\/strong> c<em class=\"nj\">\u209b)<\/em> \u2192<span> <\/span><em class=\"nj\">c<\/em><\/li>\n<li id=\"4b5d\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj nh mw mx my fa\" data-selectable-paragraph=\"\"><strong class=\"gx ni\">HHE.Eval<\/strong>(<strong class=\"gx ni\">evk<\/strong>,<span> <\/span> f,<span> <\/span> c<em class=\"nj\">\u2081, . . . , c\u1d62)<\/em><span> <\/span><em class=\"nj\">\u2192 c&#8216;:<\/em> Der HHE-Auswertungsalgorithmus, der einfach<span> <\/span><strong class=\"gx ni\">HE.Eval<\/strong><strong class=\"gx ni\">(evk<\/strong>,<span> <\/span> f,<span> <\/span> c<em class=\"nj\">\u2081, . . . , c\u1d62)<\/em><\/li>\n<li id=\"7b80\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj nh mw mx my fa\" data-selectable-paragraph=\"\"><strong class=\"gx ni\">HHE.Dec<\/strong><strong class=\"gx ni\">(sk<\/strong>,<span> <\/span><em class=\"nj\">c<\/em>): Der HHE-Entschl\u00fcsselungsalgorithmus. Sie gibt einfach zur\u00fcck<span> <\/span><strong class=\"gx ni\">HE.Dec<\/strong><strong class=\"gx ni\">(sk<\/strong>,<span> <\/span><em class=\"nj\">c<\/em>)<\/li>\n<\/ol>\n<p id=\"3a6b\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Beachten Sie, dass wir in Schritt 2 Folgendes senden m\u00fcssen<span> <\/span><strong class=\"gx ni\">c\u2096<span> <\/span><\/strong>und<span> <\/span><em class=\"nj\">c\u209b<\/em><span> <\/span>zum Server. Hier,<span> <\/span><strong class=\"gx ni\">c\u2096<span> <\/span><\/strong>ist der HE-Chiffretext und kann sehr gro\u00df sein. Wir m\u00fcssen jedoch nur Folgendes senden<span> <\/span><strong class=\"gx ni\">c\u2096<span> <\/span><\/strong>einmalig an den Server, z. B. in einer Einrichtungsphase. Der Server kann sie wiederholt in der<span> <\/span><strong class=\"gx ni\">HHE.Decomp<\/strong><span> <\/span>Algorithmus, um neue symmetrische Chiffretexte in entsprechende HE-Chiffretexte umzuwandeln. Dies ist der entscheidende Unterschied zwischen HHE und HE: Anstatt jedes Mal HE-Chiffretexte an den Server zu senden, was sehr bandbreitenintensiv sein kann, sendet HHE stattdessen leichtgewichtige symmetrische Chiffretexte. Durch diesen Trick kann HHE auch auf ressourcenbeschr\u00e4nkten Ger\u00e4ten eingesetzt werden, da symmetrische Chiffren auch sehr leicht zu handhaben sind.<\/p>\n<h1 id=\"e7d1\" class=\"lb lc ir gx ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly fa\" data-selectable-paragraph=\"\">Sind Sie bereit f\u00fcr etwas Code?<\/h1>\n<p id=\"3cd3\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Bevor wir in den Code eintauchen, sollten wir uns das Protokoll ansehen, das wir erstellen werden: Wir haben 2 Parteien (einen Client und einen Server), deren Aktionen sich in 3 Hauptschritten zusammenfassen lassen:<\/p>\n<ol class=\"\">\n<li id=\"d267\" class=\"mq mr ir gx b jp jq jt ju jx ne kb nf kf ng kj nh mw mx my fa\" data-selectable-paragraph=\"\">Der Client erzeugt die Schl\u00fcssel mit<span> <\/span> HHE<strong class=\"gx ni\">.KeyGen<\/strong>, verschl\u00fcsselt die Daten mit<span> <\/span> HHE<strong class=\"gx ni\">.Enc<\/strong><span> <\/span>und sendet den symmetrischen Chiffretext seiner Daten<em class=\"nj\">(c\u209b)<\/em><em class=\"nj\">,<span> <\/span><\/em>den HE-Chiffretext seines symmetrischen Schl\u00fcssels<strong class=\"gx ni\">(c\u2096)<\/strong>, die HE-Schl\u00fcssel au\u00dfer dem geheimen Schl\u00fcssel<span> <\/span><strong class=\"gx ni\">sk<span> <\/span><\/strong>an den Server.<\/li>\n<li id=\"c987\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj nh mw mx my fa\" data-selectable-paragraph=\"\">Der Server f\u00fchrt den Algorithmus<span> <\/span> HHE<strong class=\"gx ni\">.Decomp<\/strong><span> <\/span>und eine lineare Transformation an den HE-verschl\u00fcsselten Daten des Kunden mit<span> <\/span> HHE<strong class=\"gx ni\">.Eval<\/strong> durch, erh\u00e4lt das verschl\u00fcsselte Ergebnis und sendet es an den Kunden zur\u00fcck.<\/li>\n<li id=\"b5a4\" class=\"mq mr ir gx b jp mz jt na jx nb kb nc kf nd kj nh mw mx my fa\" data-selectable-paragraph=\"\">Nach dem Empfang entschl\u00fcsselt der Client das Ergebnis mit<span> <\/span> HHE<strong class=\"gx ni\">.Dec<\/strong><span> <\/span>und erh\u00e4lt die endg\u00fcltige Ausgabe im Klartext.<\/li>\n<\/ol>\n<p id=\"1307\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Die vollst\u00e4ndige<span> <\/span><a class=\"ae la\" href=\"https:\/\/github.com\/khoaguin\/priv-sec-ai-blog\/tree\/main\/what-is-hhe\" rel=\"noopener ugc nofollow\" target=\"_blank\">Demo-Code<\/a><span> <\/span>ist in C++ geschrieben und basiert auf dem<span> <\/span><a class=\"ae la\" href=\"https:\/\/github.com\/microsoft\/SEAL\" rel=\"noopener ugc nofollow\" target=\"_blank\">Microsofts SEAL<\/a><span> <\/span>und<span> <\/span><a class=\"ae la\" href=\"https:\/\/github.com\/IAIK\/hybrid-HE-framework\" rel=\"noopener ugc nofollow\" target=\"_blank\">PASTA-Bibliothek<\/a>. Zun\u00e4chst erstellen wir 2 Strukturen, die den Client und den Server darstellen:<\/p>\n<pre class=\"kl km kn ko gr nk nl nm bn nn no bi\"><span id=\"05e4\" class=\"np lc ir nl b be nq nr l ns nt\" data-selectable-paragraph=\"\"><span class=\"hljs-keyword\">struct<\/span> <span class=\"hljs-title.class\">Client<\/span>\n{\n    <span class=\"hljs-comment\">\/\/ the HE keys<\/span>\n    seal::PublicKey he_pk;  <span class=\"hljs-comment\">\/\/ HE public key<\/span>\n    seal::SecretKey he_sk;  <span class=\"hljs-comment\">\/\/ HE secret key<\/span>\n    seal::RelinKeys he_rk;  <span class=\"hljs-comment\">\/\/ HE relinearization key (you don't have to care about this)<\/span>\n    seal::GaloisKeys he_gk; <span class=\"hljs-comment\">\/\/ HE galois key (you don't have to care about this)<\/span>\n    <span class=\"hljs-comment\">\/\/ client's symmetric keys<\/span>\n    std::vector&lt;<span class=\"hljs-type\">uint64_t<\/span>&gt; k;           <span class=\"hljs-comment\">\/\/ the secret symmetric keys<\/span>\n    std::vector&lt;seal::Ciphertext&gt; c_k; <span class=\"hljs-comment\">\/\/ the HE encrypted symmetric keys<\/span>\n    <span class=\"hljs-comment\">\/\/ client's data<\/span>\n    std::vector&lt;<span class=\"hljs-type\">uint64_t<\/span>&gt; m{<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">255<\/span>, <span class=\"hljs-number\">100<\/span>, <span class=\"hljs-number\">255<\/span>}; <span class=\"hljs-comment\">\/\/ the client's secret data<\/span>\n    std::vector&lt;<span class=\"hljs-type\">uint64_t<\/span>&gt; c_s;                    <span class=\"hljs-comment\">\/\/ the symmetric encrypted data<\/span>\n    seal::Ciphertext c_res;                       <span class=\"hljs-comment\">\/\/ the HE encrypted result received from the server<\/span>\n};\n\n<span class=\"hljs-keyword\">struct<\/span> <span class=\"hljs-title.class\">Server<\/span>\n{\n    std::vector&lt;<span class=\"hljs-type\">int64_t<\/span>&gt; w{<span class=\"hljs-number\">-1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">-3<\/span>, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>};    <span class=\"hljs-comment\">\/\/ dummy weights<\/span>\n    std::vector&lt;<span class=\"hljs-type\">int64_t<\/span>&gt; b{<span class=\"hljs-number\">-5<\/span>, <span class=\"hljs-number\">-5<\/span>, <span class=\"hljs-number\">-5<\/span>, <span class=\"hljs-number\">-5<\/span>, <span class=\"hljs-number\">-5<\/span>}; <span class=\"hljs-comment\">\/\/ dummy biases<\/span>\n    std::vector&lt;seal::Ciphertext&gt; c;            <span class=\"hljs-comment\">\/\/ the HE encrypted ciphertext of client's data<\/span>\n    seal::SecretKey he_sk;                      <span class=\"hljs-comment\">\/\/ the server's HE secret key<\/span>\n    seal::Ciphertext c_res;                     <span class=\"hljs-comment\">\/\/ the HE encrypted results that will be sent to the client<\/span>\n};\n\nClient client;\nServer server;<\/span><\/pre>\n<h2 id=\"9e2b\" class=\"me lc ir gx ld mf mg dt lh mh mi dv ll jx mj mk lp kb ml mm lt kf mn mo lx mp fa\" data-selectable-paragraph=\"\">Schritt 1<\/h2>\n<p id=\"52e6\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Der Client erstellt den SEAL-Kontext, der f\u00fcr die Erstellung der HE-Schl\u00fcssel und anderer SEAL-Objekte f\u00fcr die Verschl\u00fcsselung und Entschl\u00fcsselung der Daten zust\u00e4ndig ist (BatchEncoder, Encryptor, Decryptor, Evaluator).<\/p>\n<pre class=\"kl km kn ko gr nk nl nm bn nn no bi\"><span id=\"afaf\" class=\"np lc ir nl b be nq nr l ns nt\" data-selectable-paragraph=\"\">std::shared_ptr&lt;seal::SEALContext&gt; context = sealhelper::<span class=\"hljs-built_in\">get_seal_context<\/span>();\nsealhelper::<span class=\"hljs-built_in\">print_parameters<\/span>(*context);\n<span class=\"hljs-function\">seal::KeyGenerator <span class=\"hljs-title\">keygen<\/span><span class=\"hljs-params\">(*context)<\/span><\/span>;\nkeygen.<span class=\"hljs-built_in\">create_public_key<\/span>(client.he_pk);\nclient.he_sk = keygen.<span class=\"hljs-built_in\">secret_key<\/span>();\nkeygen.<span class=\"hljs-built_in\">create_relin_keys<\/span>(client.he_rk);\n<span class=\"hljs-function\">seal::BatchEncoder <span class=\"hljs-title\">he_benc<\/span><span class=\"hljs-params\">(*context)<\/span><\/span>;\n<span class=\"hljs-function\">seal::Encryptor <span class=\"hljs-title\">he_enc<\/span><span class=\"hljs-params\">(*context, client.he_pk)<\/span><\/span>;\n<span class=\"hljs-function\">seal::Evaluator <span class=\"hljs-title\">he_eval<\/span><span class=\"hljs-params\">(*context)<\/span><\/span>;\n<span class=\"hljs-function\">seal::Decryptor <span class=\"hljs-title\">he_dec<\/span><span class=\"hljs-params\">(*context, client.he_sk)<\/span><\/span>;\n<span class=\"hljs-type\">bool<\/span> use_bsgs = <span class=\"hljs-literal\">false<\/span>;\nstd::vector&lt;<span class=\"hljs-type\">int<\/span>&gt; gk_indices = pastahelper::<span class=\"hljs-built_in\">add_gk_indices<\/span>(use_bsgs, he_benc);\nkeygen.<span class=\"hljs-built_in\">create_galois_keys<\/span>(gk_indices, client.he_gk);<\/span><\/pre>\n<p id=\"65fa\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Der Client f\u00fchrt dann den Verschl\u00fcsselungsalgorithmus<strong class=\"gx ni\">(HHE.Enc<\/strong>) aus, um den symmetrischen Schl\u00fcssel<em class=\"nj\">(client.k<\/em>) und den symmetrischen Chiffretext<em class=\"nj\">(client.c_s<\/em>) zu erstellen.<\/p>\n<pre class=\"kl km kn ko gr nk nl nm bn nn no bi\"><span id=\"80f9\" class=\"np lc ir nl b be nq nr l ns nt\" data-selectable-paragraph=\"\">client.k = pastahelper::<span class=\"hljs-built_in\">get_symmetric_key<\/span>();\n<span class=\"hljs-function\">pasta::PASTA <span class=\"hljs-title\">SymmetricEncryptor<\/span><span class=\"hljs-params\">(client.k, configs::plain_mod)<\/span><\/span>;\nclient.c_s = SymmetricEncryptor.<span class=\"hljs-built_in\">encrypt<\/span>(client.m);<\/span><\/pre>\n<p id=\"ec43\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Wenn wir die Werte von<span> <\/span><em class=\"nj\">client.c_s<\/em> sehen wir einen Vektor mit Zufallswerten wie [30446, 62410, 62969, 38863, 43376], im Gegensatz zu den Klartextdaten des Clients [0, 5, 255, 100, 255]. Der Client sendet nur den Vektor der Zufallswerte an den Server, aber niemals seine Klartextdaten.<\/p>\n<p id=\"62fd\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Als n\u00e4chstes verschl\u00fcsselt der Kunde seinen symmetrischen Schl\u00fcssel<em class=\"nj\">(client.k<\/em>) mit HE, um<span> <\/span><em class=\"nj\">client.c_k<\/em> zu erstellen<em class=\"nj\">.<\/em><\/p>\n<pre class=\"kl km kn ko gr nk nl nm bn nn no bi\"><span id=\"7d32\" class=\"np lc ir nl b be nq nr l ns nt\" data-selectable-paragraph=\"\">client.c_k = pastahelper::<span class=\"hljs-built_in\">encrypt_symmetric_key<\/span>(client.k,\n                                                configs::USE_BATCH,\n                                                he_benc,\n                                                he_enc);<\/span><\/pre>\n<p id=\"8b5c\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Danach sendet der Client<span> <\/span><em class=\"nj\">client.c_k, client.c_s<\/em><span> <\/span>und die HE-Schl\u00fcssel mit Ausnahme des geheimen Schl\u00fcssels an den Server.<\/p>\n<h2 id=\"7495\" class=\"me lc ir gx ld mf mg dt lh mh mi dv ll jx mj mk lp kb ml mm lt kf mn mo lx mp fa\" data-selectable-paragraph=\"\">Schritt 2<\/h2>\n<p id=\"c0a9\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Nach Erhalt der<span> <\/span><em class=\"nj\">client.c_k<\/em> erstellt der Server seinen eigenen geheimen HE-Schl\u00fcssel, das HHE-Objekt, und f\u00fchrt den Dekompositionsalgorithmus durch, der folgende Ergebnisse liefert<span> <\/span><em class=\"nj\">server.c<span> <\/span><\/em>das ist der HE-Chiffretext der Klartextnachricht des Clients<span> <\/span><em class=\"nj\">m<\/em>. Beachten Sie, dass der Client niemals seinen geheimen Schl\u00fcssel sendet<span> <\/span><strong class=\"gx ni\">er_sk<\/strong><span> <\/span>an den Server, so dass der Server nicht in der Lage sein wird, die<span> <\/span><em class=\"nj\">server.c<\/em>.<\/p>\n<pre class=\"kl km kn ko gr nk nl nm bn nn no bi\"><span id=\"c73d\" class=\"np lc ir nl b be nq nr l ns nt\" data-selectable-paragraph=\"\"><span class=\"hljs-function\">seal::KeyGenerator <span class=\"hljs-title\">csp_keygen<\/span><span class=\"hljs-params\">(*context)<\/span><\/span>;\nserver.he_sk = csp_keygen.<span class=\"hljs-built_in\">secret_key<\/span>();\n<span class=\"hljs-function\">pasta::PASTA_SEAL <span class=\"hljs-title\">HHE<\/span><span class=\"hljs-params\">(context, client.he_pk, server.he_sk, client.he_rk, client.he_gk)<\/span><\/span>;\nserver.c = HHE.<span class=\"hljs-built_in\">decomposition<\/span>(client.c_s, client.c_k, configs::USE_BATCH);<\/span><\/pre>\n<p id=\"f593\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Der Server verschl\u00fcsselt dann seine Gewichte<span> <\/span> w<span> <\/span>und Vorzeichen<span> <\/span> b<span> <\/span>und f\u00fchrt eine elementweise Vektormultiplikation sowie eine Addition seiner Klartextgewichte und Vorzeichen mit den HE-verschl\u00fcsselten Daten<span> <\/span><em class=\"nj\">server.c<\/em> durch.<\/p>\n<pre class=\"kl km kn ko gr nk nl nm bn nn no bi\"><span id=\"d4fb\" class=\"np lc ir nl b be nq nr l ns nt\" data-selectable-paragraph=\"\">seal::Plaintext plain_w, plain_b;\nhe_benc.<span class=\"hljs-built_in\">encode<\/span>(server.w, plain_w);\nhe_benc.<span class=\"hljs-built_in\">encode<\/span>(server.b, plain_b);\nserver.c_res = sealhelper::<span class=\"hljs-built_in\">he_mult<\/span>(he_eval, server.c[<span class=\"hljs-number\">0<\/span>], plain_w);\nclient.c_res = sealhelper::<span class=\"hljs-built_in\">he_add<\/span>(he_eval, server.c_res, plain_b);<\/span><\/pre>\n<p id=\"1017\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Das Endergebnis ist client.c_res, also der SEAL-Chiffretext, den der Client erh\u00e4lt.<\/p>\n<h2 id=\"266c\" class=\"me lc ir gx ld mf mg dt lh mh mi dv ll jx mj mk lp kb ml mm lt kf mn mo lx mp fa\" data-selectable-paragraph=\"\">Schritt 3<\/h2>\n<p id=\"21ae\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Schlie\u00dflich entschl\u00fcsselt der Kunde seine<span> <\/span> c_res<em class=\"nj\"><span> <\/span> mit seinem geheimen Schl\u00fcssel:<\/em><\/p>\n<pre class=\"kl km kn ko gr nk nl nm bn nn no bi\"><span id=\"be58\" class=\"np lc ir nl b be nq nr l ns nt\" data-selectable-paragraph=\"\">std::vector&lt;<span class=\"hljs-type\">int64_t<\/span>&gt; decrypted_res = sealhelper::<span class=\"hljs-built_in\">decrypt<\/span>(client.c_res,\n                                                         client.he_sk,\n                                                         he_benc,\n                                                         *context,\n                                                         client.m.<span class=\"hljs-built_in\">size<\/span>());<\/span><\/pre>\n<p id=\"8b98\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Wenn wir<span> <\/span><em class=\"nj\">decrypted_res<\/em> ausdrucken, sehen wir, dass das Ergebnis [-5 5 -770 395 1270] lautet, was korrekt ist, weil<\/p>\n<p id=\"07a4\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">[0, 5, 255, 100, 255]<br \/>\u2299<br \/>[-1, 2, -3, 4, 5]<br \/>\u2295<br \/>[-5, -5, -5, -5, -5]<br \/>=<br \/>[-5, 5, -770, 395, 1270]<\/p>\n<p id=\"c802\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">wobei \u2299 und \u2295 die elementweise Multiplikation bzw. Addition der Vektoren bedeuten.<\/p>\n<p id=\"9d50\" class=\"pw-post-body-paragraph jn jo ir gx b jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj ik fa\" data-selectable-paragraph=\"\">Das Ergebnis der Ausf\u00fchrung des Beispielcodes ist in der folgenden Abbildung zu sehen<\/p>\n<figure class=\"kl km kn ko gr kp gf gg paragraph-image\">\n<div role=\"button\" class=\"kq kr di ks bf kt\" tabindex=\"0\">\n<div class=\"gf gg nu\"><picture><source srcset=\"https:\/\/miro.medium.com\/max\/640\/1*ZtNNyvFRJGGrzT_vuENTKQ.webp 640w, https:\/\/miro.medium.com\/max\/720\/1*ZtNNyvFRJGGrzT_vuENTKQ.webp 720w, https:\/\/miro.medium.com\/max\/750\/1*ZtNNyvFRJGGrzT_vuENTKQ.webp 750w, https:\/\/miro.medium.com\/max\/786\/1*ZtNNyvFRJGGrzT_vuENTKQ.webp 786w, https:\/\/miro.medium.com\/max\/828\/1*ZtNNyvFRJGGrzT_vuENTKQ.webp 828w, https:\/\/miro.medium.com\/max\/1100\/1*ZtNNyvFRJGGrzT_vuENTKQ.webp 1100w, https:\/\/miro.medium.com\/max\/1400\/1*ZtNNyvFRJGGrzT_vuENTKQ.webp 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" type=\"image\/webp\"><\/source><source data-testid=\"og\" srcset=\"https:\/\/miro.medium.com\/max\/640\/1*ZtNNyvFRJGGrzT_vuENTKQ.png 640w, https:\/\/miro.medium.com\/max\/720\/1*ZtNNyvFRJGGrzT_vuENTKQ.png 720w, https:\/\/miro.medium.com\/max\/750\/1*ZtNNyvFRJGGrzT_vuENTKQ.png 750w, https:\/\/miro.medium.com\/max\/786\/1*ZtNNyvFRJGGrzT_vuENTKQ.png 786w, https:\/\/miro.medium.com\/max\/828\/1*ZtNNyvFRJGGrzT_vuENTKQ.png 828w, https:\/\/miro.medium.com\/max\/1100\/1*ZtNNyvFRJGGrzT_vuENTKQ.png 1100w, https:\/\/miro.medium.com\/max\/1400\/1*ZtNNyvFRJGGrzT_vuENTKQ.png 1400w\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\"><\/source><img decoding=\"async\" alt=\"\" class=\"bf ku kv dj\" width=\"700\" height=\"313\" loading=\"lazy\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/700\/1*ZtNNyvFRJGGrzT_vuENTKQ.png\"><\/picture><\/div>\n<\/div>\n<\/figure>\n<h1 id=\"3043\" class=\"lb lc ir gx ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly fa\" data-selectable-paragraph=\"\">Zuk\u00fcnftige Richtungen und Schlussfolgerungen<\/h1>\n<p id=\"89ab\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">In diesem Artikel lernten wir etwas \u00fcber hybride homomorphe Verschl\u00fcsselung, ihre Vorteile gegen\u00fcber einfacher homomorpher Verschl\u00fcsselung, einen beispielhaften Anwendungsfall von HHE und gingen auch durch ein sehr einfaches Demonstrationsprotokoll in C++. In der Praxis kann dieses Protokoll auf 3 Parteien erweitert werden, was f\u00fcr die verschl\u00fcsselte Datenanalyse oder das maschinelle Lernen geeignet ist. Weitere Informationen \u00fcber das 3-Parteien-HHE-Protokoll finden Sie in einem k\u00fcrzlich ver\u00f6ffentlichten Papier [3] auf unserer<span> <\/span><a class=\"ae la\" href=\"https:\/\/research.tuni.fi\/nisec\/\" rel=\"noopener ugc nofollow\" target=\"_blank\">NISEC-Labor<\/a><span> <\/span>an der Universit\u00e4t Tampere. Ich hoffe, Sie finden diesen Artikel n\u00fctzlich und haben Spa\u00df daran, in der Zwischenzeit etwas Neues zu lernen!<\/p>\n<h1 id=\"ff0a\" class=\"lb lc ir gx ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly fa\" data-selectable-paragraph=\"\">Danksagung<\/h1>\n<p id=\"ac3c\" class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">Diese Arbeit wurde durch das<span> <\/span><a class=\"ae la\" href=\"https:\/\/harpocrates-project.eu\/de\/\" rel=\"noopener ugc nofollow\" target=\"_blank\">EU-Projekt HARPOCRATES<\/a> finanziert.<\/p>\n<h1 id=\"8ca4\" class=\"ju jv hk fh jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr dt\" data-selectable-paragraph=\"\">Referenz<\/h1>\n<p id=\"ab0f\" class=\"pw-post-body-paragraph ig ih hk fh b ii ks ik il im kt io ip iq ku is it iu kv iw ix iy kw ja jb jc hd dt\" data-selectable-paragraph=\"\">[1] Brakerski, Zvika, und Vinod Vaikuntanathan. &#8222;Effiziente vollst\u00e4ndig homomorphe Verschl\u00fcsselung aus (Standard-)LWE&#8220;.<span> <\/span><em class=\"me\">SIAM Journal on computing<\/em><span> <\/span>43.2 (2014): 831-871.<\/p>\n<p id=\"2d03\" class=\"pw-post-body-paragraph ig ih hk fh b ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc hd dt\" data-selectable-paragraph=\"\">[2] Dobraunig, Christoph, et al. &#8222;Pasta: ein Fall f\u00fcr hybride homomorphe Verschl\u00fcsselung&#8220;.<span> <\/span><em class=\"me\">Kryptologie ePrint Archiv<\/em><span> <\/span>(2021).<\/p>\n<p id=\"dd2c\" class=\"pw-post-body-paragraph ig ih hk fh b ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc hd dt\" data-selectable-paragraph=\"\">[3] Alexandros Bakas, Eugene Frimpong, Antonis Michalas<em class=\"me\">. &#8222;<\/em>Symmetrische Verschleierung: Realisierung homomorpher Verschl\u00fcsselungsdienste aus symmetrischen Primitiven&#8220;. EAI SECURECOMM (2022).<\/p>\n<p class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\">\n<p class=\"pw-post-body-paragraph jn jo ir gx b jp lz jr js jt ma jv jw jx mb jz ka kb mc kd ke kf md kh ki kj ik fa\" data-selectable-paragraph=\"\"><em>Geschrieben von: Khoa Nguyen, Universit\u00e4t Tampere<\/em><\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8220;1_3&#8243; _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220;][et_pb_sidebar _builder_version=&#8220;4.19.1&#8243; _module_preset=&#8220;default&#8220; global_colors_info=&#8220;{}&#8220;][\/et_pb_sidebar][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p><div class=\"et_pb_module lwp_divi_breadcrumbs lwp_divi_breadcrumbs_0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module_inner\">\n\t\t\t\t\t<div class=\"lwp-breadcrumbs\"> <span class=\"before\"><\/span> <span vocab=\"https:\/\/schema.org\/\" typeof=\"BreadcrumbList\"><span property=\"itemListElement\" typeof=\"ListItem\"><a property=\"item\" typeof=\"WebPage\" href=\"https:\/\/harpocrates-project.eu\/de\/\" class=\"home\"><span property=\"name\">Home<\/span><\/a><meta property=\"position\" content=\"1\"><\/span> <span class=\"separator et-pb-icon\">&amp;#x39;<\/span> <\/span><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>Was ist hybride homomorphe Verschl\u00fcsselung und ihre Anwendungen 9.2.2023 10:03 &nbsp;TL;DR Einf\u00fchrung in das Konzept der hybriden homomorphen Verschl\u00fcsselung, ihre Anwendungsf\u00e4lle, eine kurze Formulierung und einige Demonstrationscodes in C++. Einf\u00fchrung Anwendungen zum Schutz der Privatsph\u00e4re sind heutzutage zu einem wichtigen Thema geworden, da sich die [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":1826,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[38],"tags":[],"class_list":["post-2486","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nachrichten"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/posts\/2486","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/comments?post=2486"}],"version-history":[{"count":8,"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/posts\/2486\/revisions"}],"predecessor-version":[{"id":2649,"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/posts\/2486\/revisions\/2649"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/media\/1826"}],"wp:attachment":[{"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/media?parent=2486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/categories?post=2486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/harpocrates-project.eu\/de\/wp-json\/wp\/v2\/tags?post=2486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}