Eine der größten Sicherheitsherausforderungen des Internets in den letzten zwanzig Jahren war durchweg das ziemlich einfache Problem der Sicherung von Benutzerkonten. Im Moment haben Benutzer Konten mit Hunderten von Websites und Dutzenden von Passwörtern groß Zahlen von Hacks Als einzelne Websites, die häufig von Personen betrieben werden, die in den feineren Punkten der Kryptographie und der Internetsicherheit nicht besonders qualifiziert sind, werden sich immer cleverer Hacker ausgenutzt, und Benutzer befassen sich häufig mit der Komplexität des Erinnerns von Hunderten von Passwörtern durch beide sie einfach machen oder sie alle gleich machen – mit oft sehr unglückliche Ergebnisse. Im Laufe der Zeit hat sich sicherlich ein Patchwork von Ad-hoc-Lösungen entwickelt, einschließlich der Verwendung des E-Mail-Kontos als universelle Sicherung und “Password Manager” -Software wie LastPass, obwohl dies zu hohen Kosten: Solche Lösungen haben entweder einen Großteil der zugrunde liegenden Komplexität des Kennwort-BSA-Zugangs oder geben zentraler Unternehmen sehr hochrangig über Ihr Online-Leben.
Es gibt viele Anrufe an erhalten loswerden von PasswörterAber die Frage ist: Was ersetzen wir sie? Es gibt viele Ideen, die von “Ein einzelnes Passwort zu regieren” bis hin zu Smartphone-Authentifizierung bis hin zu speziellen Hardware-Geräten und Biometrie und allen Arten von Multi-Faktor-M-von-N-Richtlinien reichen, aber selbst diese komplexeren Konstruktionen bisher waren normalerweise anwendungsspezifisch: Viele Banken geben Ihnen jetzt ein spezielles Zugangsgeräte, um sich in Ihrem Bankkonto zu melden. Im Allgemeinen sehen wir, dass das Problem, wie die Benutzerzugriffskontrolle am besten verwaltet und wichtige Verluste und Diebstahlrisiken minimiert werden können, so komplex genug ist, dass er “ein für alle Mal” nie gelöst wird. Der beste Weg, um es zu lösen, besteht darin, einen freien Markt mit Lösungen zu ermöglichen, zu gedeihen und jedem Benutzer auszuwählen, welche für ihn am besten geeignet ist. Der Weg, dies tatsächlich zu erreichen, ist jedoch durch Entbündelung Der Markt “Access Control Solutions” vom Markt “Dienstleistungen”. Das heißt genau, was wir in hohem Maße sind nicht jetzt tun.
Das Hardware -Zugriffsgerät auf mein UBS Bank -Konto. Erinnern Sie mich daran, warum kann ich dies nicht auch verwenden, um meine Domains auf Namecheap zu sichern?
Wie machen wir das? Der erste Schritt besteht darin, eine gut platzierte Verwendung der ultimativen Abstraktion einzuführen: Code für Turing-Complete. Anstatt auf Protokollebene zu ermöglichen, dass Benutzer ein Kennwort angeben oder einen vorgewählten Satz von Anbietern oder sogar einen Standard bereitstellen, der sich auf das Gespräch mit einem Server mit der Wahl des Benutzers beruht, können Sie den Zugriffsrichtlinien in Code in einer deterministischen virtuellen Maschine angegeben (wobei der EVM ein Gnade ist, wie ein Start als jeder andere). Der Code kann digitale Signaturüberprüfungen verwenden beliebig Kryptografischer Algorithmus (Sie erhalten also kostenlos mit quantensicherer Krypto nach vorne), einschließlich Tasten, die auf dem Computer des Benutzers gehalten werden, Tasten direkt abgeleitet von einem PasswortKeys, die an einem Hardware -Gerät oder einer beliebigen Richtlinie gehalten werden, einschließlich einer beliebigen Kombination der oben genannten. Auf diese Weise kann Innovationen bei Zugangskontrollmechanismen auftreten ohne Bedürfnis Für Websites (oder andere Systeme, die eine Authentifizierung benötigen), um etwas zu tun, um neue Änderungen zu erhalten. Zusätzlich erlaubt das System ordentlich Organisationen Verwenden Sie das Schema sofort mit mehrpersonen Zugriffskontrollen, ohne dass es weiter integriert werden muss.
Der nächste Schritt ist der operativ abhängige Code von Turing. Für viele Anwendungen möchten Sie die Möglichkeit, einige Benutzer zu autorisieren, um einige Vorgänge auszuführen, jedoch nicht andere. Sie möchten beispielsweise ein Sysadmin genehmigen, um die IP -Adresse zu ändern, auf die ein Domain -Name verweist, die Domain jedoch nicht sofort verkauft. Um dies zu erreichen, muss sich die Abstraktion ändern. Ein einfacher “Turing-Complete-Code als Signature” -Setup hat möglicherweise das folgende Formular:
VM(code, server-provided nonce ++ signature) ?= 1
Wo VM ist eine virtuelle Maschine, die Code ausführt, eine von Server bereitgestellte Nonce und eine Signatur als Eingabe nimmt. Die Überprüfungsprüfung besteht darin Code Das könnte eingerichtet werden, ist eine elliptische Kurve Digital Signature Prüfer. Um je nach Operation unterschiedliche Autorisierungsanforderungen zu ermöglichen, möchten Sie:
VM(code, server-provided nonce ++ operation_data ++ signature) ?= 1
Eine Signatur müsste mit jedem Vorgang zur Verfügung gestellt werden, den der Benutzer ausführen möchte (dies hat den Vorteil, dass ein bestimmter, drittanbieter prüfbarer Beweis dafür vorliegt, dass eine Operation genehmigt wurde). Die Betriebsdaten (Stellen Sie sich den Funktionsnamen und die Argumente vor, die in einem codiert sind ABI im Ethereum-Stil) würde als Argument für die virtuelle Maschine hinzugefügt, und die Signatur müsste sowohl über die Nonce- als auch die Betriebsdaten liegen.
Dies bringt Sie ziemlich weit, aber in einigen Fällen nicht weit genug. Ein einfaches Beispiel ist Folgendes: Was ist, wenn Sie jemandem die Erlaubnis geben möchten, kleine Geldbeträge abzuheben, aber nicht große Beträge, dh. Eine Auszahlungsgrenze? In diesem Fall ist das Problem, das Sie überwinden müssen, einfach: Was ist, wenn jemand durch eine Auszahlungsgrenze von 100 US -Dollar beschränkt ist, um es zu entgehen, indem sie einfach ein Skript ausführen, um immer wieder 90 US -Dollar abzuheben? Um dies zu lösen, benötigen Sie eine intelligentere Auszahlungsgrenze. Im Wesentlichen so etwas wie “maximal $ 100 pro Tag”. Ein weiterer natürlicher Fall ist der Schlüssel Widerruf: Wenn ein Schlüssel gehackt oder verloren wird, möchten Sie ihn ersetzen und Sie möchten sicherstellen, dass die Welt herausfindet, dass Ihre Richtlinie geändert wurde, damit Angreifer nicht versuchen können, Sie unter Ihrer alten Richtlinie zu verkörpern.
Um diesen letzten Buckel zu überwinden, müssen wir noch einen Schritt weiter gehen: Wir brauchen eine Turing-Complete-Operation-abhängig staatlich Richtlinien; Das heißt, Operationen sollten in der Lage sein, den Zustand der Richtlinie zu ändern. Und hier kommen nicht nur Kryptographie, sondern speziell Blockchains ins Spiel. Natürlich könnten Sie nur einen zentralen Server das Ganze verwalten lassen, und viele Menschen sind vollkommen in Ordnung, einem zentralen Server zu vertrauen. Blockchains sind mäßig wertvoll Hier, weil sie bequemer sind, bieten eine glaubwürdige Geschichte der Neutralität und sind leichter zu standardisieren. Letztendlich, da es für Innovationen ziemlich schädlich wäre, “eine Blockchain zu regieren”, ist das, was wir standardisieren möchten, ein Mechanismus, mit dem Benutzer Module herunterladen können, um sie zu unterstützen beliebig Blockchain oder zentralisierte Lösung nach Belieben.
Bei Blockchain-basierten Anträgen ist eine staatliche Richtlinie, die das Recht auf der Blockchain durchgesetzt hat, einen natürlichen Sinn; Es besteht keine Notwendigkeit, eine weitere besondere Klasse von Vermittlern einzubeziehen, und die Leute können jetzt damit beginnen. Durch die Abstraktion eines “Konto”, das Ethereum anbietet, ist es äußerst einfach, mit diesem Ansatz zu arbeiten: Wenn Ihre Bewerbung mit einfachen Benutzern zusammenarbeitet, die private Schlüssel in der Hand hält, funktioniert sie auch für nahezu jede Art von Einzel-, Mehrparteien-, Hardware-gesteuerten, militärischen Grad- oder anderen Richtliniennutzern in Zukunft.
Für andere Anwendungen möchten Benutzer möglicherweise Privatsphäre, sowohl in den staatlich ändernden Operationen, die sie ausführen, als auch in der Art ihrer Richtlinie zu einem bestimmten Zeitpunkt. Aus diesem Grund wollen Sie wahrscheinlich eine Lösung wie Falkewo die Blockchain immer noch die Sicherheit des Prozesses gewährleistet, aber dank der Wunder der null-kenntnissicheren Technologie, weiß nichts über das, was gesichert wird; Bevor Hawk implementiert ist, können einfachere Formen der Kryptographie wie Ringsignaturen ausreichen.
Andere Anwendungen
Kontosicherheit ist die erste und grundlegendste Anwendung für das Konzept des Code als Richtlinie, es gibt auch andere. Ein einfaches ist eine Domainnamenregistrierung. OneName, einer der beliebten “dezentralen Namensregistrierungsdienste”, plant derzeit eine Funktion, in der Top-Level-Domänen anhand der Anzahl der Buchstaben, Konsonanten und Vokale Gebührenrichtlinien für Subdomains auswählen können. Dies ist nützlich, aber natürlich wirtschaftlich hässlich: Es gibt definitiv Hunderte von Merkmalen als Briefe, Konsonanten und Vokale, die einen Domain -Namenspreis beeinflussen können, und die Menschen möchten möglicherweise sogar mit anderen Registrierungsstrategien wie experimentieren wie Verschiedene Arten von Auktionen.
Eine noch schönere Lösung besteht erneut darin, eine einfache Modularität anzuwenden: Lassen Sie die Leute ihren eigenen Namespace im staatlichen Turing-Completen-Code erstellen. Wenn Sie dies auf einer Plattform tun, auf der ein staatlicher Turing-Complete-Code vorhanden ist, können Sie einfach zulassen, dass eine Adresse eine Subdomain steuern, und dann, Tada, unterstützen Sie bereits staatliche Turing-Complete-Subdomain-Richtlinien. Dies ist die Essenz der objektorientierten Programmierung: eine Schnittstelle freilegen und andere Objekte erlauben, die willkürlich komplexen internen Code aufweisen können, diese Schnittstelle erfüllen.
Ein weiterer ist der private Aktienhandel. Insbesondere bei privaten Unternehmen ist der Aktienhandel nicht völlig frei und nicht eingeschränkt, wie der Handel mit Kryptowährungen ist. Unternehmen möchten oft Beschränkungen wie:
- Angestellten Aktien geben und ihnen erlauben, sie erst nach einem Zeitraum zu verkaufen
- Die Möglichkeit, dass neue Aktionäre von bestehenden Aktionären genehmigt werden, mit der Möglichkeit, dass solche Genehmigungen eine Obergrenze dafür haben, wie viele Aktien diesem speziellen Inhaber gehören können
- Erzwungene Verfahren
- Einschränkung des Höchstsatzes, zu dem Aktien verkauft werden (dh Auszahlungsgrenzen), oder Wartezeiten erforderlich sind oder ein bestimmtes anderes Inhaber Recht auf Erstverweigerung anbieten
Sicher, Sie können eine private Blockchain-basierte Aktienhandelsplattform für einen Kunden erstellen und die Einschränkungen bereitstellen, die dieser Kunde wünscht. Aber was ist, wenn andere Kunden unterschiedliche Einschränkungen wünschen? Sie können das Problem im Knospen auch zumindest in der “Kernanwendungsschicht” erstrecken und es ein für allemal lösen, indem Sie jedem einzelnen Bestand, der als Unterwährung dargestellt wird, zuzulassen, um zu haben, um zu haben Einschränkungen vertreten als staatlicher Turing-Complete-Code.
Diese Funktionalität kann in der “Token” -API dargestellt werden, indem sie beispielsweise wie folgt erweitert wird:
- GetMinimumbalance (Konto): Erhalten Sie den Mindestbetrag, den ein Konto zum aktuellen Zeitpunkt halten kann
- GetMaximumbalance (Konto): Erhalten Sie den maximalen Kontostand, den ein Konto zum aktuellen Zeitpunkt halten kann
Kurz gesagt, Anwendungen haben keine Richtlinien. Anwendungen interagieren mit Objekte (Benutzerkonten, Währungen usw.) und Objekte haben Richtlinien. Alternativ noch kürzer:

Erstellen Sie eine Blockchain-basierte Finanzderivateanwendung, und jemand bittet Sie, eine Funktion hinzuzufügen, um eine Abstimmung zwischen mehreren Datenfutteranbietern anstelle von nur einer zu ermöglichen? Denken Sie nicht einmal darüber nach; Legen Sie stattdessen nur einen Datenfutteranbieter -Adresse ein und ermöglichen es den Benutzern, ihre eigenen Richtlinien zu finden. Der Vorteil ist, dass jeder Code, den sie verwenden oder schreiben, auch für den Schiedsgerichts -DAPP sicherer Datenfeeds bereitstellen können. Bauen Sie ein DNS -System auf und jemand bittet Sie, Unterstützung für bestimmte Auktionstypen für Subdomains einzuführen? Nicht dazu auf der Wurzel -DNS -Ebene; Lassen Sie stattdessen Subdomänen Adressen und ermöglichen es den Benutzern, ihre eigenen Auktionsalgorithmen zu erfinden. Unabhängig von Algorithmen können sie auch für ihre Registrierung für dezentrale Chat -Benutzernamen verwenden.
Dies ist der Vorteil der Abstraktion: Das Design der Kontosicherheitspolitik kann zu einem in sich geschlossenen Studienfeld für sich selbst werden, und alle neuen Lösungen können sofort überall angewendet werden. Einige Leute werden einem Dritten vertrauen wollen; Andere möchten eine multisignaturverzinsliche Genehmigung zwischen fünf ihrer eigenen Geräte, und einige möchten einen Schlüssel für sich mit der Option, dass drei von fünf Freunden zusammenkommen, um den Schlüssel zu einem neuen zurückzusetzen. Einige möchten eine Zugriffsrichtlinie, bei der sie, wenn sie innerhalb von zwölf Monaten keine Transaktionen durchführen, als tot vermutet werden, und ein Anwalt erhält Zugang, um in der Lage zu sein, auf ihren Willen auszuführen – für – für – für alle ihrer digitalen Vermögenswerte. Und einige werden eine Richtlinie wünschen, die eine wichtige Kontrolle für Anwendungen gibt, die sich selbst mit geringer Sicherheit deklarieren, aber zwei von drei Schlüssel für Anwendungen, die sich selbst hochsicher erklären. Das Design der Namensregistrierungspolitik kann auch in sich geschlossen werden-ebenso wie die Beschränkung der Digital Asset Ownership Rictionion Policy, ein Bereich, der alle von kleinen und großen traditionellen Unternehmen bis hin zu Community-basierten DAOs interessiert. Und das ist die Macht eines staatlichen Turing-Completen-Code.

