Ich bin verpflichtet, einen JCE-Provider zu schreiben. Ich habe gelernt, dass ich die Hüpfburg-Reinraum-Implementierung verwenden muss. Können Sie mir bitte sagen, was "Reinraum-Umsetzung" in diesem Zusammenhang bedeutet?Java JCE Provider - was bedeutet "Reinraum-Implementierung"?
Antwort
Reinraum-Implementierung bedeutet in diesem Zusammenhang, dass der Code nur aus der Beschreibung und Spezifikation stammt, aber nicht mit dem Zugriff auf potenziell problematischen Code.
Dies ist wichtig, da der Sun-Quellcode zuvor unter einer Lizenz stand, die insbesondere mit GPL-Distributionen nicht kompatibel war. Indem sichergestellt wird, dass der Code nicht ohne Zugriff auf solchen Code geschrieben wurde, ist sichergestellt, dass die Sun-Lizenz später nicht für die Reinraum-Implementierung gilt und dann wiederum nicht mit der GPL-Lizenz oder anderen Einschränkungen kompatibel ist.
Mit anderen Worten, es ist eine Garantie, dass die gezeigte Lizenz halten wird.
Trotz des Namens werden die meisten Re-Implementierungen in Räumen mit meist leeren Bierdosen und Pizzakartons durchgeführt. Dies ist aus der Vergangenheit Erfahrung, Sie verstehen:
Allerdings ist ein Reinraum im Rahmen der Chip-Entwicklung, wo kleine Unvollkommenheiten (wie Staub) ernsthafte Probleme im Nano-Maßstab verursachen können. So werden sie unglaublich sauber gehalten, mit Luftwäschern, Schutzanzügen (Schutz der Umwelt, nicht der Träger) etc.
Analog wird Software-Reinraum-Entwicklung ohne Zugang zu Unvollkommenheiten, die Probleme verursachen könnten, durchgeführt. Im Falle von Open-Source-Software bedeutet dies, dass Sie keinen Zugriff auf eine Implementierung haben, die möglicherweise durch eine inkompatible Lizenz "beschädigt" wird. (Es ist nicht nur GPL, aber das wird häufig wegen seiner viralen Natur zitiert). Dies gilt jedoch auch für Closed-Source-Reverse-Engineering-Projekte, wie die Erstellung des IBM-kompatiblen BIOS, das den Markt für IBM-Klone in den 80er Jahren geöffnet hat.
Ich muss die Implementierung des sauberen Codes installieren, bevor ich meinen Provider schreibe. Recht ? –
Sie _will_ brauchen ein JCE Framework installiert, oder der unterstützende Code ist nicht da. BouncyCastle verwendet die MIT X11-Lizenz, die in Bezug auf die Wiederverwendung so gut ist, dass Sie ihren Code so oft ansehen können, wie Sie möchten, um Ihre eigenen zu schreiben, ohne die Lizenz Ihres fertigen Produkts zu beeinflussen. –
Das Problem besteht darin, dass JCE-Provider von Sun * signiert sein müssen, wenn * Sie Suns JRE verwenden. Ich nehme an, wenn Sie eine JCE-Implementierung von Drittanbietern verwenden, die dies nicht erzwingt, dann sind Sie in Ordnung. Es ist wichtig, zwischen der JCE und den Anbietern für die JCE zu unterscheiden. Ein Beispiel für die JCE-Klasse ist die MessageDigest-Klasse. Der Provider enthält die Implementierung (en) der tatsächlichen Digests, z. B. SHA1, die über die Factory-Methoden getInstance abgerufen werden. Bouncycastle, die ich kenne, stellt einen unterzeichneten Anbieter zur Verfügung, ich tue jedoch nicht, wenn sie ein JCE-Framework bereitstellen. –