{"id":16457,"date":"2021-03-11T04:44:48","date_gmt":"2021-03-11T03:44:48","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=16457"},"modified":"2021-03-20T11:23:32","modified_gmt":"2021-03-20T10:23:32","slug":"zufallszahlen","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=16457","title":{"rendered":"Kryptographisch sicherer Zufallszahlengenerator NodeRed-Flow mit dem Raspberry Pi und Hardware Random Number Generator (RNG) und GUI"},"content":{"rendered":"<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.25.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.25.png\" alt=\"\" width=\"2492\" height=\"930\" class=\"aligncenter size-full wp-image-16464\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.25.png 2492w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.25-300x112.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.25-1024x382.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.25-768x287.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.25-1536x573.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.25-2048x764.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Heute gehts mal kurzt um die Praxis. Im <a href=\"http:\/\/blog.wenzlaff.de\/?p=16446\">letzten Artikel<\/a> ging es um kryptographisch sicherer Zufallszahlengenerator mit dem Raspberry Pi und Hardware Random Number Generator (RNG). <\/p>\n<p>Man unterscheidet \u00fcbrigens grunds\u00e4tzlich zwischen <strong>nicht-deterministischen<\/strong> und deterministischen Zufallszahlengeneratoren. Nicht-deterministisch ist ein Zufallszahlengenerator, wenn er auch bei gleichen Ausgangsbedingungen <strong>unterschiedliche<\/strong> Werte liefert, so wie der hier vorgestellte. Da die Implementierung einer Software-Prozedur in der Regel deterministisch arbeitet, muss zur Realisierung eines nicht-deterministischen Zufallszahlengenerators ein externer (beispielsweise physikalischer per Hardware) Vorgang der auf dem Raspberry Pi l\u00e4uft einbezogen werden.<\/p>\n<p>Nun eine Anwendung als NodeRed-Flow um kryptographisch sichere Zufallszahlen zu generieren die dann als <a href=\"https:\/\/de.wikipedia.org\/wiki\/Seed_key\" rel=\"noopener\" target=\"_blank\">Seed<\/a> ua. auch f\u00fcr Bitcoin verwendet werden k\u00f6nnen. <\/p>\n<p>Der Flow l\u00e4uft \u00fcbrigens auch erfolgreich auf einem NodeRed das in einem Docker-Kontainer l\u00e4uft. Es wird \u00fcbrigens die Schnittstelle mit <strong>head -c 128 \/dev\/hwrng<\/strong> abgefragt und der Timeout auf 2 Sekunden gesetzt. Wer gr\u00f6\u00dfere oder kleinere Zahlen braucht, kann die 128 anpassen. Die 512 Bit kann man \u00fcbrigens auch f\u00fcr Bitcoin gut gebrauchen \ud83d\ude09<\/p>\n<p>Hier eine kleine Gui dazu: &#8230;<!--more--><\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.48.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.48.png\" alt=\"\" width=\"1554\" height=\"462\" class=\"aligncenter size-full wp-image-16465\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.48.png 1554w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.48-300x89.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.48-1024x304.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.48-768x228.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.48-1536x457.png 1536w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Und die Debug Ausgabe:<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.59.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.59.png\" alt=\"\" width=\"1002\" height=\"788\" class=\"aligncenter size-full wp-image-16466\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.59.png 1002w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.59-300x236.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2021\/03\/wenzlaff.de-2021-03-11-um-15.40.59-768x604.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>F\u00fcr <strong>Windows<\/strong> l\u00e4uft der Flow aber nicht ohne Anpassungen.<\/p>\n<p>Hier kostenlos zu Downloaden der JavaScript Code f\u00fcr NodeRed<\/p>\n<pre class=\"lang:js decode:true \" >\r\n\r\n[\r\n    {\r\n        \"id\": \"246f8bb7.1d97c4\",\r\n        \"type\": \"tab\",\r\n        \"label\": \"Zufallszahlen\",\r\n        \"disabled\": false,\r\n        \"info\": \"\"\r\n    },\r\n    {\r\n        \"id\": \"b3908204.81b368\",\r\n        \"type\": \"group\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"Hardware Random Number Generator (HRNG) or True Random Number Generator (TRNG)\",\r\n        \"style\": {\r\n            \"fill\": \"#d1d1d1\",\r\n            \"label\": true\r\n        },\r\n        \"nodes\": [\r\n            \"670c710c.5f63f8\",\r\n            \"6c652b34.de905c\"\r\n        ],\r\n        \"x\": 214,\r\n        \"y\": 91.5,\r\n        \"w\": 573,\r\n        \"h\": 97\r\n    },\r\n    {\r\n        \"id\": \"b0e49796.33657\",\r\n        \"type\": \"inject\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"Start\",\r\n        \"props\": [\r\n            {\r\n                \"p\": \"payload\"\r\n            },\r\n            {\r\n                \"p\": \"topic\",\r\n                \"vt\": \"str\"\r\n            }\r\n        ],\r\n        \"repeat\": \"\",\r\n        \"crontab\": \"\",\r\n        \"once\": false,\r\n        \"onceDelay\": 0.1,\r\n        \"topic\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"date\",\r\n        \"x\": 130,\r\n        \"y\": 140,\r\n        \"wires\": [\r\n            [\r\n                \"670c710c.5f63f8\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"dfb968e1.08f3d\",\r\n        \"type\": \"debug\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"Ausgabe Fehler\",\r\n        \"active\": true,\r\n        \"tosidebar\": true,\r\n        \"console\": false,\r\n        \"tostatus\": false,\r\n        \"complete\": \"payload\",\r\n        \"targetType\": \"msg\",\r\n        \"statusVal\": \"\",\r\n        \"statusType\": \"auto\",\r\n        \"x\": 560,\r\n        \"y\": 240,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"dcad4603.bb8a1\",\r\n        \"type\": \"debug\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"Ausgabe R\u00fcckgabecode\",\r\n        \"active\": true,\r\n        \"tosidebar\": true,\r\n        \"console\": false,\r\n        \"tostatus\": false,\r\n        \"complete\": \"payload\",\r\n        \"targetType\": \"msg\",\r\n        \"statusVal\": \"\",\r\n        \"statusType\": \"auto\",\r\n        \"x\": 590,\r\n        \"y\": 300,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"8dc39f23.68882\",\r\n        \"type\": \"debug\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"Ausgabe Ergebnis als Hex\",\r\n        \"active\": true,\r\n        \"tosidebar\": true,\r\n        \"console\": false,\r\n        \"tostatus\": false,\r\n        \"complete\": \"payload\",\r\n        \"targetType\": \"msg\",\r\n        \"statusVal\": \"\",\r\n        \"statusType\": \"auto\",\r\n        \"x\": 960,\r\n        \"y\": 300,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"89fc210d.74ec\",\r\n        \"type\": \"hex to bin\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"\",\r\n        \"x\": 880,\r\n        \"y\": 140,\r\n        \"wires\": [\r\n            [\r\n                \"a04f0a1e.999d98\",\r\n                \"58fe6fde.34f28\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"a04f0a1e.999d98\",\r\n        \"type\": \"debug\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"Ausgabe Ergebnis als Bin\",\r\n        \"active\": true,\r\n        \"tosidebar\": true,\r\n        \"console\": false,\r\n        \"tostatus\": false,\r\n        \"complete\": \"payload\",\r\n        \"targetType\": \"msg\",\r\n        \"statusVal\": \"\",\r\n        \"statusType\": \"auto\",\r\n        \"x\": 950,\r\n        \"y\": 240,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"4dbde524.0e9194\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"(c) 2021 Thomas Wenzlaff www.wenzlaff.info\",\r\n        \"info\": \"\",\r\n        \"x\": 1070,\r\n        \"y\": 60,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"1da03cda.8a6b3b\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"Der physikalischer Zufallszahlengenerator l\u00e4uft so nur auf Linux Systemen, die die Hardwaren Schnittstelle f\u00fcr Zufallszahlen \/dev\/hwrng aktiviert haben wie z.B. Raspberry Pi\",\r\n        \"info\": \"\",\r\n        \"x\": 630,\r\n        \"y\": 440,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"2169ad57.b1b492\",\r\n        \"type\": \"comment\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"Kryptographisch sicherer Zufallszahlengenerator mit dem Raspberry Pi und Hardware Random Number Generator (RNG)\",\r\n        \"info\": \"Siehe http:\/\/blog.wenzlaff.de\/?p=16446\",\r\n        \"x\": 470,\r\n        \"y\": 60,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"670c710c.5f63f8\",\r\n        \"type\": \"exec\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"g\": \"b3908204.81b368\",\r\n        \"command\": \"head -c 128 \/dev\/hwrng\",\r\n        \"addpay\": false,\r\n        \"append\": \"\",\r\n        \"useSpawn\": \"false\",\r\n        \"timer\": \"2\",\r\n        \"oldrc\": false,\r\n        \"name\": \"lese aus hwrng\",\r\n        \"x\": 320,\r\n        \"y\": 140,\r\n        \"wires\": [\r\n            [\r\n                \"6c652b34.de905c\"\r\n            ],\r\n            [\r\n                \"dfb968e1.08f3d\"\r\n            ],\r\n            [\r\n                \"dcad4603.bb8a1\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"6c652b34.de905c\",\r\n        \"type\": \"function\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"g\": \"b3908204.81b368\",\r\n        \"name\": \"to 128 Hex Zeichen\",\r\n        \"func\": \"msg.payload = msg.payload.toString(\\\"hex\\\").substr(1,128);\\nreturn msg;\\n\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"x\": 550,\r\n        \"y\": 140,\r\n        \"wires\": [\r\n            [\r\n                \"8dc39f23.68882\",\r\n                \"89fc210d.74ec\",\r\n                \"8bc585e3.a455d8\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"9c22faef.2052e\",\r\n        \"type\": \"ui_button\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"\",\r\n        \"group\": \"37cc6aa7.926f66\",\r\n        \"order\": 9,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"passthru\": false,\r\n        \"label\": \"Generate Zufallszahl\",\r\n        \"tooltip\": \"\",\r\n        \"color\": \"\",\r\n        \"bgcolor\": \"\",\r\n        \"icon\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"str\",\r\n        \"topic\": \"topic\",\r\n        \"topicType\": \"msg\",\r\n        \"x\": 160,\r\n        \"y\": 240,\r\n        \"wires\": [\r\n            [\r\n                \"670c710c.5f63f8\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"8bc585e3.a455d8\",\r\n        \"type\": \"ui_text\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"group\": \"37cc6aa7.926f66\",\r\n        \"order\": 6,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"name\": \"\",\r\n        \"label\": \"Zufallszahl Hex (128 Byte, 512 Bit)\",\r\n        \"format\": \"{{msg.payload}}\",\r\n        \"layout\": \"col-center\",\r\n        \"x\": 980,\r\n        \"y\": 360,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"58fe6fde.34f28\",\r\n        \"type\": \"ui_text\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"group\": \"37cc6aa7.926f66\",\r\n        \"order\": 7,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"name\": \"\",\r\n        \"label\": \"Zufallszahl Bin (128 Byte, 512 Bit)\",\r\n        \"format\": \"{{msg.payload}}\",\r\n        \"layout\": \"col-center\",\r\n        \"x\": 1120,\r\n        \"y\": 140,\r\n        \"wires\": []\r\n    },\r\n    {\r\n        \"id\": \"bb9d17b9.20931\",\r\n        \"type\": \"ui_button\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"\",\r\n        \"group\": \"37cc6aa7.926f66\",\r\n        \"order\": 8,\r\n        \"width\": 0,\r\n        \"height\": 0,\r\n        \"passthru\": false,\r\n        \"label\": \"L\u00f6sche Zufallszahlen\",\r\n        \"tooltip\": \"\",\r\n        \"color\": \"\",\r\n        \"bgcolor\": \"#79c358\",\r\n        \"icon\": \"\",\r\n        \"payload\": \"\",\r\n        \"payloadType\": \"str\",\r\n        \"topic\": \"topic\",\r\n        \"topicType\": \"msg\",\r\n        \"x\": 160,\r\n        \"y\": 380,\r\n        \"wires\": [\r\n            [\r\n                \"3ecc2f2d.6e7be\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"3ecc2f2d.6e7be\",\r\n        \"type\": \"function\",\r\n        \"z\": \"246f8bb7.1d97c4\",\r\n        \"name\": \"L\u00f6schen\",\r\n        \"func\": \"msg.payload=\\\"\\\";\\n\\nreturn msg;\",\r\n        \"outputs\": 1,\r\n        \"noerr\": 0,\r\n        \"initialize\": \"\",\r\n        \"finalize\": \"\",\r\n        \"x\": 460,\r\n        \"y\": 380,\r\n        \"wires\": [\r\n            [\r\n                \"8bc585e3.a455d8\",\r\n                \"58fe6fde.34f28\"\r\n            ]\r\n        ]\r\n    },\r\n    {\r\n        \"id\": \"37cc6aa7.926f66\",\r\n        \"type\": \"ui_group\",\r\n        \"name\": \"BIP39\",\r\n        \"tab\": \"2b1a348.d04994c\",\r\n        \"order\": 1,\r\n        \"disp\": true,\r\n        \"width\": \"14\",\r\n        \"collapse\": false\r\n    },\r\n    {\r\n        \"id\": \"2b1a348.d04994c\",\r\n        \"type\": \"ui_tab\",\r\n        \"name\": \"BIP39\",\r\n        \"icon\": \"fingerprint\",\r\n        \"disabled\": false,\r\n        \"hidden\": false\r\n    }\r\n]\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Heute gehts mal kurzt um die Praxis. Im letzten Artikel ging es um kryptographisch sicherer Zufallszahlengenerator mit dem Raspberry Pi und Hardware Random Number Generator (RNG). Man unterscheidet \u00fcbrigens grunds\u00e4tzlich zwischen nicht-deterministischen und deterministischen Zufallszahlengeneratoren. Nicht-deterministisch ist ein Zufallszahlengenerator, wenn er auch bei gleichen Ausgangsbedingungen unterschiedliche Werte liefert, so wie der hier vorgestellte. Da die &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=16457\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eKryptographisch sicherer Zufallszahlengenerator NodeRed-Flow mit dem Raspberry Pi und Hardware Random Number Generator (RNG) und GUI\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,4606,808,2520,1023,1319],"tags":[4684,1183,4611,4687,4597,4686,2516,4683,4626,4677,4685,2824,3785,2190,4675,4599,1020,4672],"class_list":["post-16457","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-crypto","category-linux-2","category-node-red","category-raspberry-pi","category-sicherheit-2","tag-binaer","tag-bitcoin","tag-btc","tag-coins","tag-crypto","tag-deterministischen","tag-flow","tag-hardware-random-number-generator","tag-hex","tag-kryptographisch-sicherer-zufallszahlengenerator","tag-nicht-deterministischen","tag-nodered","tag-nodered-flow","tag-raspberry-pi","tag-rng","tag-seed","tag-verschluesselung","tag-zufall"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/16457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16457"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/16457\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16457"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}