Antonov 225 - größtes Flugzeug der Welt, mit 640 t Startgewicht - Zerstört!...

  • Thread starter Helmut Schellong
  • Start date
On 29.03.22 15:14, Helmut Schellong wrote:
On 03/29/2022 09:39, Josef Moellers wrote:

On 28.03.22 22:29, Helmut Schellong wrote:
On 03/28/2022 20:23, Thomas Prufer wrote:
On Mon, 28 Mar 2022 15:28:20 +0200, Helmut Schellong
rip@schellong.biz> wrote:

Es ist _ganz generell_ richtig, was Du schreibst.
Du ignorierst jedoch die konkrete Praxis mit genau den Algorithmen,
um die es hier geht.

Diese hatte ich aufgelistet:
    |Die Kern-Algorithmen sind nicht selbst entwickelt.
    |Ich habe u.a. die Algorithmen Rabbit, Spritz, sha2_256, sha2_512,
    |sha3_256, sha3_512 (Keccak) in meine Shell bish implementiert.
    |Diese Algorithmen sind alle kryptographisch.

In der Implementierungsvorschrift der jeweiligen Entwickler der
Algorithmen
ist auch meist eine Testprozedur durch die Entwickler angegeben.
Diese habe ich jeweils durchgeführt!
Mit jeweils demjenigen Ergebnis, das Korrektheit beweist!
Hatte ich mehrfach gepostet - und wurde jeweils ignoriert.
Korrekter und beweiskräftiger geht es nicht!

Das wurde ignoriert weil es kein Beweis ist...

Beweis für was?

\"das Korrektheit beweist!\"

Es ist allgemein bekannt, daß man mit einem Test NIEMALS die
KORREKTHEIT sondern nur die UNKORREKTHEIT beweisen kann, nämlich wenn
der Test fehl schlägt.
Du kannst so lange Testen, wie Du willst, Du kannst 100% Testabdeckung
erreichen, aber Du wirst dadurch niemals beweisen können, daß der Test
nicht bei der nächsten Iteration fehl schlägt.
Der *Beweis* der Korrektheit eines Algorithmus oder seiner
Implementation (im Folgenden \"der Code\") ist eine nicht-triviale, in
der Regel mathematische Tätigkeit.

Es gibt tatsächlich Tests, die eine Korrektheit nicht beweisen können.
Das gilt jedoch nicht für kryptographische Algorithmen, die hier
aufgelistet sind.

Nein. Es gibt keinen Test, der die Korrektheit eines Codes (d.h.
Algorithmus UND Implementation) *beweisen* kann!
Das ist allgemein bekannt und ich möchte mal behaupten, dessen sind sich
die Entwickler des Codes auch bewußt.
Diese Aussage wiederum beweist die Inkompetenz derer, die das
ignorierten.
Warum?
Es geht um den Beweis einer korrekten Implementation!

Genau, und die kannst Du NIEMALS durch einen Test BEWEISEN.

|This is a set of test vectors for conformance testing,

Die Entwickler von kryptographischen Algorithmen haben das aber ausgesagt.
Willst Du denen widersprechen?

Nein, ich will ihnen nicht widersprechen, daß dies Test Vektoren für das
\"conformance testing\" sind. So ein Test *beweist* eben NICHT die
Korrektheit eines Codes sondern nur, daß dieser gewissen Standards
entspricht:
https://www.techtarget.com/searchsoftwarequality/definition/conformance-testing
Da steht nix von \"correctness\" sondern nur \"meets a defined set of
standards\".
Auch der Wikipedia-Artikel
https://en.wikipedia.org/wiki/Conformance_testing sprint nicht von
\"correctness\" sondern nur von \"performs according to its specified
standards.\".

Wie gesagt/geschrieben: Man kann mit einem noch so guten Test nicht die
Korrektheit *beweisen\". Man kann sein vertrauen darin durch immer
längeres Test immer weiter vergrößern, eine 100% Sicherheit gibt kein Test!
Durch das hinzufügen von noch mehr Tests wirst Du Dich dem Ziel \"100%
Korrektheit bewiesen\" ständig asymptotisch annähern, es aber nie erreichen.

Im Wikipedia-Artikel zu \"Software Testing\" steht auch genau drin:
\"understand the risks of software implementation.\" und weiter \"Software
testing can provide objective, independent information about the quality
of software and risk of its failure to users or sponsors\" Da steht also
eindeutig, daß es Risiken gibt (mir fällt kein anderes Risiko ein als
daß der Code Fehler enthält) und man kann durch Testen diese *Risiken*
erkennen und das Vertrauen erhöhen.

\'conformance\' heißt \'Übereinstimmung\'.
Wenn Test-Vektoren Übereinstimmung erzielen, ist eine Implementation
korrekt.

Übereinstimmung womit?

Deren Korrektheit ist durch eine Übereinstimmung _bewiesen_.
Das sagen die Entwickler aus!
Und Punkt.

Tja, dann glaube das bitte weiter.

Der ist gegeben, wenn die vorgeschriebenen Tests Übereinstimmung
ergaben.

Nein, dadurch ist nur gegeben, daß der Code bei der Durchführung der
vorgegebenen Berechnungen die erwarteten Ergebnisse liefert. Es ist
dadurch niche bewiesen, daß der Code bei der Durchführung anderer
Berechnungen, z.B. wenn andere Eingabeparameter vorgegeben werden,
immer noch die erwarteten Ergebnisse liefert.

Falsch.
Die Entwickler haben geeignete Tests vorgegeben, um die Korrektheit
beweisen zu können.
Die Entwickler wissen, daß wenn alle Tests Übereinstimmung ergeben, auch
alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden.

Das heißt, sie können ganz genau angeben, wie viele Tests und mit
welchen Werten sie diese Tests durchführen müssen, um die Korrektheit zu
100% zu beweisen?
Ich behaupte, daß ihnen bewußt ist, daß dies nicht möglich ist.

Die Entwickler kennen ihre Entwicklung in dieser Hinsicht ganz genau.
Schließlich sind die Algorithmen deterministisch.

*Jeder* auf einem Computer implementierter Algorithmus ist
deterministisch. Trotzdem kann man von vielen Algorithmen z.B. nicht
einmal theoretisch beweisen, daß sie jemals enden (Halteproblem). Ergo
kann man dies und auch das Gegenteil auch durch die besten Tests nicht
beweisen.

|We, the designers of Rabbit, hereby state that no hidden weaknesses have
|been inserted by us in the Rabbit algorithm.

Das beruhigt ungemein.

|The key expansion stage guarantees a one-to-one correspondence be-
|tween the key, the state and the counter, which prevents key redun-
|dancy. It also distributes the key bits in an optimal way to prepare
|for the the system iteration.
|The correctness of the code on different platforms is verified by
generating and comparing test vectors.

Tja, das würde ich gerne mit ihnen diskutieren.
Ich finde gerade keine Email-Adresse, aber das bekomme ich hin!

Es ist dann der Beweis erbracht, daß die vorgenommene Implementation
werte-mäßig identisch mit der Referenz-Implementation der
Algorithmus-Entwickler ist.

Nochmals: Nein, es dadurch nur der Beweis erbracht, daß der Code bei
den vom Entwickler vorgegebenen Eingabedaten die erwarteten
Ausgabedaten erzeugt. Nichts anderes.

Erneut falsche Behauptung.
Beweise zur Abwechslung doch mal Deine Behauptung.

Wie bitte soll den durch das Testen mit von den Entwicklern vorgegebenen
Test-Vektoren bewiesen werden, daß Elemente, die NICHT in den
Test-Vektoren enthalten sind, auch die korrekten Ergebnisse liefern?

Ich habe meine nämlich mehrfach bewiesen, anhand der
Entwickler-Testprozeduren.

Also hast nicht Du das bewiesen, sondern die Entwickler haben das
behauptet und Du hast das nur wiedergegeben.

NB Unser Sohn ist Professor für Mathematik an der Universität in Aarhus
und ich habe ihn gerade mal (per Email) gefragt, ob er mir ggf die
Email-Adresse von Mette Vesterager, die ist am Center for Subjectivity
Research an der Uni Kopenhagen, besorgen kann. Mal gucken, was daraus wird.

\"This is a set of test vectors for conformance testing,\"
Hatte ich bereits gepostet.


\"Korrekter und beweiskräftiger geht es nicht!\" schrieb ich oben.
Reicht das nicht?
Falls nicht - was reicht denn dann?

Ein mathematischer Beweis, daß der Code korrekt ist, also nicht der
Nchweis, daß der Code bei der Eingabe einer (endlichen) Menge von
Eingabeparametern die erwarteten Ergebnisse liefert, sondern daß der
Code bei der Eingeba *aller erlaubten* Eingabeparametern die
erwarteten Ergebnisse liefern wird.
Dazu empfehle ich \"The Science of Programming\" von David Gries. Ist
schon gut abgehangen, aber imho immer noch gut.

Ich beherrsche etwa 20 Programmiersprachen mehr oder weniger gut - ein
weiteres Buch brauche ich nicht.

Ja, dann erübrigt sich ja die Debatte mit Dir, oh Du weiser Mann.

Zwanzig Programmiersprachen ... wow! Ich erstarre in Ehrfurcht.

Ich habe 1981 angefangen zu arbeiten (damals bei der Nixdorf Computer
AG) und die Computerei ist mein Hobby. Wie viele Programmiersprachen ich
kenne ... ich habe sie nie gezählt.
Das ist ja auch völlig irrelevant! Und wenn Du 100 Programmiersprachen
könntest, so hast Du immer noch nicht begriffen, was ich sagen will: Daß
man mit Testen nie und nimmer die Korrektheit eines Codes beweisen kann.

Siehe hierzu auch
https://de.wikipedia.org/wiki/Korrektheit_(Informatik)

Oder die Folien hier:
https://pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2005-ws/pi1/slides/pi1-5b-2006-02-02.pdf
\"Testen nur das Vertrauen in die Korrektheit eines Programms erhöhen,
nicht aber die Korrektheit beweisen.\"

Oder die Folien hier:
https://www.mathematik.uni-marburg.de/~gumm/Lehre/WS07/PraktischeInformatikI/Folien/14_Korrektheit.pdf
\"Durch Testen kann man nur Anwesenheit von
Fehlern feststellen, nicht aber ihre
Abwesenheit (E. Dijkstra)\"

Dijstra\'s Essay \"On the reliability of programs\" kannst Du übrigens hier
nachlesen:
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD303.html

Ich zitiere mal (sinngemäß) einen Herrn Schellong: \"Willst Du dem
widersprechen?\"

Dijstra\'s These wird übrigens hier diskutiert:
https://blog.liw.fi/posts/2019/06/29/dijkstra_was_only_partially_correct_about_testing/
Und auch dort steht \"Tests don’t tell you that code works in cases that
aren’t tested. Tests tell you code works in the cases that are tested.
If you want it to work in some other case, you add a test, or expand an
existing test to cover the case you’re interested in.\"

> Ich habe u.a. die Bücher von Knuth.

Ja, die sind gut.
Was sagt Knuth denn zum Testen?
http://www.informit.com/articles/article.aspx?p=1193856
\"As to your real question, the idea of immediate compilation and \"unit
tests\" appeals to me only rarely, when I’m feeling my way in a totally
unknown environment and need feedback about what works and what doesn’t.\"
OK, es geht um \"Unit Tests\", aber auch das sind Tests und er lehnt sie ab!

Ein mathematischer Beweis ist bei allen Algorithmen des Kontextes
prinzipiell unmöglich.
Fehler werden gegebenenfalls lange Zeit nach Veröffentlichung des Algo
von untersuchenden Experten mitgeteilt.

Die _Entwickler_ wissen, daß wenn alle Tests Übereinstimmung ergeben,
auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden. (s.o.)

Das wage ich zu bezweifeln. Schau\'n \'mer mal, ob unser Ältester mir die
Adresse von Mette besorgen kann, dann frage ich sie.

Wir befinden uns nun im Bereich der Haarspalterei, des Unsinns, des
Irrsinns.

Nein, wir befinden uns hier im Bereich der Hybris.

Falsch.
Ich bin ganz konkret praxisbezogen ziemlich kenntnisreich auf diesem
Gebiet.

Wie gesagt: Hybris.

Es ist extrem gefährlich zu behaupten, ein Code sei \"bewiesenermaßen
korrekt, weil er gewisse Tests erfolgreich durchlaufen hat\",
insbesondere wenn es sich um sicherheitsrelevanten Code handelt.

Alle genannten Algorithmen wurden und werden weltweit millionenfach
korrekt implementiert
und konkret hunderte-millionenfach in sicherheitsfordernder Umgebung
verwendet.

Ich sage ja nicht, daß sie fehlerhaft SIND, ich behaupte nur, daß man
durch Testen niemals eine Korrektheit BEWEISen kann.
Das ist in der Informatik allgemein bekannt und akzeptiert.
Daß man trotzdem testet hat sicherlich damit zu tun, daß der
mathematisch-logische KorrektheitsBEWEIS eines nicht-trivialen Stücks
Code selber in besonderem Maße nicht-trivial ist und keiner sich die
Arbeit machen will. Ich habe mkich während meine Studiums mit \"weakest
precondition\"s und \"postcondition\"s \'rumschlagen dürfen. Es hat KEINEN
Spaß gemacht ...

MD5 und RC4 werden trotz Korrumpierung vor vielen Jahren weiterhin
verwendet.

Wie gesagt: Ich behaupt nicht, daß sie fehlerhaft SIND.

Ich stelle mir gerade vor, wie das ist, wenn eine Brücke als
\"bewiesenermaßen korrekt gebaut\" ist und für den allgemeinen Verkehr
freigegeben wird, weil man nach dem Bau ein paar LKW darüber hat
fahren lassen.



So wird das seit vielleicht 150 Jahren weltweit getan.

Nein, in erster Instanz werden Brücken *berechnet*. Die Statiker
*berechnen*, wie viel Beton und wie viel Armierung und sonstiges da
\'rein muß, damit eine Brücke mit einer bestimmten Spannweite eine
bestimmte Last aufnehmen kann. Am Ende wird, um das noch einmal zu
*verifizieren* ein Belastungstest gemacht. Aber wenn das nicht
*berechnet* ist, dann würde kein LKW-Fahrer darüber fahren wollen.

[...]

Du willst die Kenntnisse der Entwickler und Gepflogenheiten im Bereich
der kryptographischen Cipher offensichtlich nicht anerkennen.

Und Du willst die (Er)-Kenntnisse der theoretischen Informatik nicht
anerkennen.

Josef
 
On 29.03.22 19:04, Helmut Schellong wrote:

Das ist scheissegal was da steht,

Nein, es ist gar nicht egal, was da steht.

Doch, da du eh nicht fähig bist, es richtig zu verstehen.

 du kannst zB. nicht zeigen, daß es bei deiner Implementierung keine
Seitenkanäle gibt,
 da evtl. noch nicht mal bekannt ist, welche das in Zukunft sein könnten.

Ich habe bereits gepostet, daß ich alle diese Algorithmen
nur von und zu lokaler Festplatte benutze.

Ok, wenn praktisch niemand irgendwo deinen binären Sondermüll benutzt,
ist dessen Schadensreichweite natürlich begrenzt.

Hanno

--
The modern conservative is engaged in one of man\'s oldest exercises in
moral philosophy; that is, the search for a superior moral justification
for selfishness.
- John Kenneth Galbraith
 
Am 29.03.2022 um 18:13 schrieb Volker Bartheld:

Bei Kryptographie erst wenn Experten dauerhaft keine
Schwachstellen finden konnten.

... bedienen dürfen. Nennt man dann \"Peer-Review\" usw.

Ja, aber gerade bei Kryptographie ist das Feld viel größer. Attacken werden
teils erst Jahre oder Jahrzehnte nach der Entwicklung, Implementierung und
Benutzung der Algorithmen gefunden, und nur zum Teil auf Grund schnellerer
Rechner. Ein Algorithmus ist in der Regel nicht per se \"sicher\" oder
\"unsicher\", im allgemeinen gibt es eine Abschätzung wie lange ein Algorithmus
sicher ist. Irgendwann sind die Rechner halt so schnell daß man vieles einfach
per brute force knacken kann, eine Abschätzung darüber wie lange das dauern
wird zeigt die sinnvolle Lebensdauer an. Und die kann sehr schnell gegen 0
sinken, wenn unerwartet Attacken entdeckt werden.

Sobald ein Code closed Source ist und da aus \"Geheimhaltungsgründen\"
niemand - d. h. auch nicht unter Geheimhaltungsvereinbarung -
drübersehen darf, beginnt es schwer nach Fisch zu riechen. Das soll
übrigens nicht heißen, daß open Source zwingend besser ist, denn unter
den Freiwilligen muß sich erstmal jemand finden, der die Zeit, Lust und
Kompetenz auf/für so eine Begutachtung hat.

Bei closed source stellt sich das Problem gar nicht, da ja keiner den Code
prüfen kann. \"Beweis\" der Sicherheit durch Aufstampfen, kennen wir. Davon hält
man genau eines: Abstand.

bool CheckLicense(const License& lic)
{
// [...]
if(lic.password==\"MyTopSecretPassword\") return true;
// [...]
}

Haha, erinnert mich ein wenig an den Pen-Tester, der nach Tagen
freudestrahlend zu mir kam und meinte, er hätte jetzt *DIE* Lücke im
disassemblierten Code gefunden (Hätte er gefragt, hätte er ja auch den Source
mit Kommentaren und Erklärung dazu bekommen, aber das war wohl
wissenschaftlicher Forschergeist). Da wäre ein Passwort im Klartext im Code!
Ja genau! Ich habe ihn dann etwas lapidar auf Kapitel x in Handbuch y
verwiesen, in dem genau beschrieben war, daß der keystore aus
implementatorischen Gründen ein Passwort verlangt, dieses daher im Programm ja
vorliegen muß und das feste Passwort \"abc\" wie folgt verwendet wird.
Er war ein bisschen geknickt, hatte er doch kurz davor genau dieses geforderte
Sicherheitshandbuch mit allen Algorithmen validiert.

Bernd
 
On 03/29/2022 20:04, Josef Moellers wrote:
On 29.03.22 15:14, Helmut Schellong wrote:
On 03/29/2022 09:39, Josef Moellers wrote:

On 28.03.22 22:29, Helmut Schellong wrote:
On 03/28/2022 20:23, Thomas Prufer wrote:
On Mon, 28 Mar 2022 15:28:20 +0200, Helmut Schellong <rip@schellong.biz> wrote:

Es ist _ganz generell_ richtig, was Du schreibst.
Du ignorierst jedoch die konkrete Praxis mit genau den Algorithmen, um die es hier geht.

Diese hatte ich aufgelistet:
    |Die Kern-Algorithmen sind nicht selbst entwickelt.
    |Ich habe u.a. die Algorithmen Rabbit, Spritz, sha2_256, sha2_512,
    |sha3_256, sha3_512 (Keccak) in meine Shell bish implementiert.
    |Diese Algorithmen sind alle kryptographisch.

In der Implementierungsvorschrift der jeweiligen Entwickler der Algorithmen
ist auch meist eine Testprozedur durch die Entwickler angegeben.
Diese habe ich jeweils durchgeführt!
Mit jeweils demjenigen Ergebnis, das Korrektheit beweist!
Hatte ich mehrfach gepostet - und wurde jeweils ignoriert.
Korrekter und beweiskräftiger geht es nicht!

Das wurde ignoriert weil es kein Beweis ist...

Beweis für was?

\"das Korrektheit beweist!\"

Es ist allgemein bekannt, daß man mit einem Test NIEMALS die KORREKTHEIT sondern nur die UNKORREKTHEIT beweisen kann, nämlich wenn der Test fehl schlägt.
Du kannst so lange Testen, wie Du willst, Du kannst 100% Testabdeckung erreichen, aber Du wirst dadurch niemals beweisen können, daß der Test nicht bei der nächsten Iteration fehl schlägt.
Der *Beweis* der Korrektheit eines Algorithmus oder seiner Implementation (im Folgenden \"der Code\") ist eine nicht-triviale, in der Regel mathematische Tätigkeit.

Es gibt tatsächlich Tests, die eine Korrektheit nicht beweisen können.
Das gilt jedoch nicht für kryptographische Algorithmen, die hier aufgelistet sind.

Nein. Es gibt keinen Test, der die Korrektheit eines Codes (d.h. Algorithmus UND Implementation) *beweisen* kann!
Das ist allgemein bekannt und ich möchte mal behaupten, dessen sind sich die Entwickler des Codes auch bewußt.

Nein, diese Entwickler sagen das Gegenteil.
Habe ich gepostet - wurde beharrlich ignoriert.

|This is a set of test vectors for conformance testing,
|The correctness of the code on different platforms is verified by generating and comparing test vectors.

|We, the designers of Rabbit, hereby state that no hidden weaknesses have
|been inserted by us in the Rabbit algorithm.
|The key expansion stage guarantees a one-to-one correspondence be-
|tween the key, the state and the counter, which prevents key redun-
|dancy. It also distributes the key bits in an optimal way to prepare
|for the the system iteration.

Hatte ich bereits gepostet.

Es wird die Korrektheit einer Implementation nachgewiesen.
Und es wird ausgesagt, daß alle denkbaren Zwischenwerte bei den Testvektoren
ebenfalls Übereinstimmen würden (one-to-one correspondence).
Immer wieder lesen - vielleicht kommt\'s dann irgendwann.

Auch folgende Übersetzung hatte ich bereits gepostet:
o Zuerst steht da, daß Test-Vektoren zum Testen der Übereinstimmung nachfolgend vorhanden sind.
o Der zweite Satz sagt aus, daß die Korrektheit des Codes auf unterschiedlichen Plattformen
. nachgewiesen wird durch generieren und vergleichen von Test-Vektoren.

Diese Aussage wiederum beweist die Inkompetenz derer, die das ignorierten.
Warum?
Es geht um den Beweis einer korrekten Implementation!

Genau, und die kannst Du NIEMALS durch einen Test BEWEISEN.

|This is a set of test vectors for conformance testing,

Die Entwickler von kryptographischen Algorithmen haben das aber ausgesagt.
Willst Du denen widersprechen?

Nein, ich will ihnen nicht widersprechen, daß dies Test Vektoren für das \"conformance testing\" sind. So ein Test *beweist* eben NICHT die Korrektheit eines Codes sondern nur, daß dieser gewissen Standards entspricht:

Doch, entsprechende Aussagen der Entwickler postete ich oben in Wiederholung.
Du widersprichst den Entwicklern wiederholt.
|The correctness of the code on different platforms is verified by generating and comparing test vectors.

https://www.techtarget.com/searchsoftwarequality/definition/conformance-testing
Da steht nix von \"correctness\" sondern nur \"meets a defined set of standards\".

Irrelevant.

> Auch der Wikipedia-Artikel https://en.wikipedia.org/wiki/Conformance_testing sprint nicht von \"correctness\" sondern nur von \"performs according to its specified standards.\".

Irrelevant.
|The correctness of the code on different platforms is verified by generating and comparing test vectors.

Diese Aussagen sind aus der Dokumentation der aufgelisteten kryptographischen Algorithmen.
Die von Dir gegebenen Dokumentationen sind _nicht_ aus dieser Menge - und daher irrelevant!

Wie gesagt/geschrieben: Man kann mit einem noch so guten Test nicht die Korrektheit *beweisen\". Man kann sein vertrauen darin durch immer längeres Test immer weiter vergrößern, eine 100% Sicherheit gibt kein Test!
Durch das hinzufügen von noch mehr Tests wirst Du Dich dem Ziel \"100% Korrektheit bewiesen\" ständig asymptotisch annähern, es aber nie erreichen.

Im Wikipedia-Artikel zu \"Software Testing\" steht auch genau drin:
\"understand the risks of software implementation.\" und weiter \"Software testing can provide objective, independent information about the quality of software and risk of its failure to users or sponsors\" Da steht also eindeutig, daß es Risiken gibt (mir fällt kein anderes Risiko ein als daß der Code Fehler enthält) und man kann durch Testen diese *Risiken* erkennen und das Vertrauen erhöhen.

Alles irrelevant.
Es geht um die Korrektheit einer Implementation der aufgeführten kryptographischen Algorithmen.

\'conformance\' heißt \'Übereinstimmung\'.
Wenn Test-Vektoren Übereinstimmung erzielen, ist eine Implementation korrekt.

Übereinstimmung womit?

Mit der Ausgabe des jeweiligen Algorithmus\', mit der zugehörigen response.

Deren Korrektheit ist durch eine Übereinstimmung _bewiesen_.
Das sagen die Entwickler aus!
Und Punkt.

Tja, dann glaube das bitte weiter.

Ich habe allen Grund dazu:
|The correctness of the code on different platforms is verified by generating and comparing test vectors.

Der ist gegeben, wenn die vorgeschriebenen Tests Übereinstimmung ergaben.

Nein, dadurch ist nur gegeben, daß der Code bei der Durchführung der vorgegebenen Berechnungen die erwarteten Ergebnisse liefert. Es ist dadurch niche bewiesen, daß der Code bei der Durchführung anderer Berechnungen, z.B. wenn andere Eingabeparameter vorgegeben werden, immer noch die erwarteten Ergebnisse liefert.

Falsch.
Die Entwickler haben geeignete Tests vorgegeben, um die Korrektheit beweisen zu können.
Die Entwickler wissen, daß wenn alle Tests Übereinstimmung ergeben, auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden.

Das heißt, sie können ganz genau angeben, wie viele Tests und mit welchen Werten sie diese Tests durchführen müssen, um die Korrektheit zu 100% zu beweisen?
Ich behaupte, daß ihnen bewußt ist, daß dies nicht möglich ist.

|The correctness of the code on different platforms is verified by generating and comparing test vectors.
Willst Du irgendwann solche Aussagen der Entwickler respektieren?

Die Entwickler kennen ihre Entwicklung in dieser Hinsicht ganz genau.
Schließlich sind die Algorithmen deterministisch.

*Jeder* auf einem Computer implementierter Algorithmus ist deterministisch.

Ja.
Aber ich meine selbstverständlich, daß die Ausgabe-Sequenzen
der kryptographischen Algorithmen deterministisch sind.
Gleicher Key - gleiche Sequenz.
Wurde bereits durchgekaut.

> Trotzdem kann man von vielen Algorithmen z.B. nicht einmal theoretisch beweisen, daß sie jemals enden (Halteproblem). Ergo kann man dies und auch das Gegenteil auch durch die besten Tests nicht beweisen.

Irrelevant.
Es geht um die Korrektheit einer Implementation nur der aufgeführten kryptographischen Algorithmen.

|We, the designers of Rabbit, hereby state that no hidden weaknesses have
|been inserted by us in the Rabbit algorithm.

Das beruhigt ungemein.

Du versuchst, die Entwickler lächerlich zu machen.

|The key expansion stage guarantees a one-to-one correspondence be-
|tween the key, the state and the counter, which prevents key redun-
|dancy. It also distributes the key bits in an optimal way to prepare
|for the the system iteration.
|The correctness of the code on different platforms is verified by generating and comparing test vectors.

Tja, das würde ich gerne mit ihnen diskutieren.
Ich finde gerade keine Email-Adresse, aber das bekomme ich hin!

Vielleicht machtest Du Dich damit lächerlich.

Ich habe etwa 100 Seiten nur zu Rabbit gelesen.
Und ich vertraue diesen Entwicklern - die haben mich überzeugt.

Es ist dann der Beweis erbracht, daß die vorgenommene Implementation
werte-mäßig identisch mit der Referenz-Implementation der Algorithmus-Entwickler ist.

Nochmals: Nein, es dadurch nur der Beweis erbracht, daß der Code bei den vom Entwickler vorgegebenen Eingabedaten die erwarteten Ausgabedaten erzeugt. Nichts anderes.

Erneut falsche Behauptung.
Beweise zur Abwechslung doch mal Deine Behauptung.

Wie bitte soll den durch das Testen mit von den Entwicklern vorgegebenen Test-Vektoren bewiesen werden, daß Elemente, die NICHT in den Test-Vektoren enthalten sind, auch die korrekten Ergebnisse liefern?

Aufgrund des spezifischen Verhaltens des jeweiligen Algorithmus\'.
Diese Algorithmen können aufgrund ihres Aufbaus nicht anders.

Ich habe meine nämlich mehrfach bewiesen, anhand der Entwickler-Testprozeduren.

Also hast nicht Du das bewiesen, sondern die Entwickler haben das behauptet und Du hast das nur wiedergegeben.

Ja, \"anhand der Entwickler-Testprozeduren.\"
Wenn ich die korrekt anwende, habe ich es mit Hilfe dieser Prozeduren bewiesen.
Geht es nun mit Haarespalten weiter?

> NB Unser Sohn ist Professor für Mathematik an der Universität in Aarhus und ich habe ihn gerade mal (per Email) gefragt, ob er mir ggf die Email-Adresse von Mette Vesterager, die ist am Center for Subjectivity Research an der Uni Kopenhagen, besorgen kann. Mal gucken, was daraus wird.

https://ku-dk.academia.edu/MetteVesterager

Es sind vier Entwickler.
Es kann notwendig sein, herauszufinden, welcher welche Texte erarbeitet hatte.

\"This is a set of test vectors for conformance testing,\"
Hatte ich bereits gepostet.


\"Korrekter und beweiskräftiger geht es nicht!\" schrieb ich oben.
Reicht das nicht?
Falls nicht - was reicht denn dann?

Ein mathematischer Beweis, daß der Code korrekt ist, also nicht der Nchweis, daß der Code bei der Eingabe einer (endlichen) Menge von Eingabeparametern die erwarteten Ergebnisse liefert, sondern daß der Code bei der Eingeba *aller erlaubten* Eingabeparametern die erwarteten Ergebnisse liefern wird.
Dazu empfehle ich \"The Science of Programming\" von David Gries. Ist schon gut abgehangen, aber imho immer noch gut.

Ich beherrsche etwa 20 Programmiersprachen mehr oder weniger gut - ein weiteres Buch brauche ich nicht.

Ja, dann erübrigt sich ja die Debatte mit Dir, oh Du weiser Mann.

Ich habe nirgendwo behauptet, daß ich weise bin.

> Zwanzig Programmiersprachen ... wow! Ich erstarre in Ehrfurcht.

Das ist eine Tatsache.
Allerdings - wie ich schrieb - mehr oder weniger gut.

Ich habe 1981 angefangen zu arbeiten (damals bei der Nixdorf Computer AG) und die Computerei ist mein Hobby. Wie viele Programmiersprachen ich kenne ... ich habe sie nie gezählt.
Das ist ja auch völlig irrelevant! Und wenn Du 100 Programmiersprachen könntest, so hast Du immer noch nicht begriffen, was ich sagen will: Daß man mit Testen nie und nimmer die Korrektheit eines Codes beweisen kann.

Es ist überhaupt nicht irrelevant, welche Programmiersprachen man kann!

Siehe hierzu auch
https://de.wikipedia.org/wiki/Korrektheit_(Informatik)

Oder die Folien hier:
https://pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2005-ws/pi1/slides/pi1-5b-2006-02-02.pdf
\"Testen nur das Vertrauen in die Korrektheit eines Programms erhöhen,
nicht aber die Korrektheit beweisen.\"

Oder die Folien hier:
https://www.mathematik.uni-marburg.de/~gumm/Lehre/WS07/PraktischeInformatikI/Folien/14_Korrektheit.pdf
\"Durch Testen kann man nur Anwesenheit von
Fehlern feststellen, nicht aber ihre
Abwesenheit (E. Dijkstra)\"

Dijstra\'s Essay \"On the reliability of programs\" kannst Du übrigens hier nachlesen:
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD303.html

Ich zitiere mal (sinngemäß) einen Herrn Schellong: \"Willst Du dem widersprechen?\"

Dijstra\'s These wird übrigens hier diskutiert:
https://blog.liw.fi/posts/2019/06/29/dijkstra_was_only_partially_correct_about_testing/
Und auch dort steht \"Tests don’t tell you that code works in cases that aren’t tested. Tests tell you code works in the cases that are tested. If you want it to work in some other case, you add a test, or expand an existing test to cover the case you’re interested in.\"

Das alles ist allerdings im Kontext irrelevant.

Ich habe u.a. die Bücher von Knuth.

Ja, die sind gut.
Was sagt Knuth denn zum Testen?

Ich arbeite jetzt nicht diese Bücher durch...

Wozu auch?, wenn ich spezifische, zum Algorithmus passende Testprozeduren habe!

http://www.informit.com/articles/article.aspx?p=1193856
\"As to your real question, the idea of immediate compilation and \"unit tests\" appeals to me only rarely, when I’m feeling my way in a totally unknown environment and need feedback about what works and what doesn’t.\"
OK, es geht um \"Unit Tests\", aber auch das sind Tests und er lehnt sie ab!

Ein mathematischer Beweis ist bei allen Algorithmen des Kontextes prinzipiell unmöglich.
Fehler werden gegebenenfalls lange Zeit nach Veröffentlichung des Algo von untersuchenden Experten mitgeteilt.

Die _Entwickler_ wissen, daß wenn alle Tests Übereinstimmung ergeben, auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden. (s.o.)

Das wage ich zu bezweifeln. Schau\'n \'mer mal, ob unser Ältester mir die Adresse von Mette besorgen kann, dann frage ich sie.

Es kann sein, daß sie als eine von vier Entwicklern nicht alle Fragen beantworten kann.

Wir befinden uns nun im Bereich der Haarspalterei, des Unsinns, des Irrsinns.

Nein, wir befinden uns hier im Bereich der Hybris.

Falsch.
Ich bin ganz konkret praxisbezogen ziemlich kenntnisreich auf diesem Gebiet.

Wie gesagt: Hybris.

Nein, ich bin ziemlich kenntnisreich auf diesem Gebiet.
Das bedeutet, daß ich deutlich mehr weiß, als die große Mehrheit.
Ein Experte bin ich nicht für diese Algorithmen - allerdings für die Sprache C.

Es ist extrem gefährlich zu behaupten, ein Code sei \"bewiesenermaßen korrekt, weil er gewisse Tests erfolgreich durchlaufen hat\", insbesondere wenn es sich um sicherheitsrelevanten Code handelt.

Alle genannten Algorithmen wurden und werden weltweit millionenfach korrekt implementiert
und konkret hunderte-millionenfach in sicherheitsfordernder Umgebung verwendet.

Ich sage ja nicht, daß sie fehlerhaft SIND, ich behaupte nur, daß man durch Testen niemals eine Korrektheit BEWEISen kann.
Das ist in der Informatik allgemein bekannt und akzeptiert.
Daß man trotzdem testet hat sicherlich damit zu tun, daß der mathematisch-logische KorrektheitsBEWEIS eines nicht-trivialen Stücks Code selber in besonderem Maße nicht-trivial ist und keiner sich die Arbeit machen will. Ich habe mkich während meine Studiums mit \"weakest precondition\"s und \"postcondition\"s \'rumschlagen dürfen. Es hat KEINEN Spaß gemacht ...

MD5 und RC4 werden trotz Korrumpierung vor vielen Jahren weiterhin verwendet.

Wie gesagt: Ich behaupt nicht, daß sie fehlerhaft SIND.

Ich stelle mir gerade vor, wie das ist, wenn eine Brücke als \"bewiesenermaßen korrekt gebaut\" ist und für den allgemeinen Verkehr freigegeben wird, weil man nach dem Bau ein paar LKW darüber hat fahren lassen.



So wird das seit vielleicht 150 Jahren weltweit getan.

Nein, in erster Instanz werden Brücken *berechnet*. Die Statiker *berechnen*, wie viel Beton und wie viel Armierung und sonstiges da \'rein muß, damit eine Brücke mit einer bestimmten Spannweite eine bestimmte Last aufnehmen kann. Am Ende wird, um das noch einmal zu *verifizieren* ein Belastungstest gemacht. Aber wenn das nicht *berechnet* ist, dann würde kein LKW-Fahrer darüber fahren wollen.

Diese Berechnungen werden aber begutachtet und eventuell offiziell abgenommen.
Das ist in \"bewiesenermaßen korrekt gebaut\" enthalten.
Du willst wieder Haare spalten.

[...]

Du willst die Kenntnisse der Entwickler und Gepflogenheiten im Bereich
der kryptographischen Cipher offensichtlich nicht anerkennen.

Und Du willst die (Er)-Kenntnisse der theoretischen Informatik nicht anerkennen.

Nur, wenn enger zugehörige Erkenntnisse die allgemeinen Erkenntnisse überschreiben.


--
Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
http://www.schellong.de/c.htm http://www.schellong.de/c2x.htm http://www.schellong.de/c_padding_bits.htm
http://www.schellong.de/htm/bishmnk.htm http://www.schellong.de/htm/rpar.bish.html http://www.schellong.de/htm/sieger.bish.html
http://www.schellong.de/htm/audio_proj.htm http://www.schellong.de/htm/audio_unsinn.htm http://www.schellong.de/htm/tuner.htm
http://www.schellong.de/htm/string.htm http://www.schellong.de/htm/string.c.html http://www.schellong.de/htm/deutsche_bahn.htm
http://www.schellong.de/htm/schaltungen.htm http://www.schellong.de/htm/rand.htm http://www.schellong.de/htm/bsd.htm
 
On 03/29/2022 20:34, Hanno Foest wrote:
On 29.03.22 19:04, Helmut Schellong wrote:

Das ist scheissegal was da steht,

Nein, es ist gar nicht egal, was da steht.

Doch, da du eh nicht fähig bist, es richtig zu verstehen.

Das ist eine haltlose Behauptung.

  du kannst zB. nicht zeigen, daß es bei deiner Implementierung keine Seitenkanäle gibt,
  da evtl. noch nicht mal bekannt ist, welche das in Zukunft sein könnten.

Ich habe bereits gepostet, daß ich alle diese Algorithmen
nur von und zu lokaler Festplatte benutze.

Ok, wenn praktisch niemand irgendwo deinen binären Sondermüll benutzt, ist dessen Schadensreichweite natürlich begrenzt.

Ja, so ist das.
Ich habe bisher mehrfach http://www.schellong.de/htm/rabbit.bish.html gepostet.
Darin ist erkennbar, wie genau ich mehrere Algorithmen benutze.

Ich benutze das Skript erfolgreich. Es funktioniert makellos.


--
Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
http://www.schellong.de/c.htm http://www.schellong.de/c2x.htm http://www.schellong.de/c_padding_bits.htm
http://www.schellong.de/htm/bishmnk.htm http://www.schellong.de/htm/rpar.bish.html http://www.schellong.de/htm/sieger.bish.html
http://www.schellong.de/htm/audio_proj.htm http://www.schellong.de/htm/audio_unsinn.htm http://www.schellong.de/htm/tuner.htm
http://www.schellong.de/htm/string.htm http://www.schellong.de/htm/string.c.html http://www.schellong.de/htm/deutsche_bahn.htm
http://www.schellong.de/htm/schaltungen.htm http://www.schellong.de/htm/rand.htm http://www.schellong.de/htm/bsd.htm
 
On 03/29/2022 23:35, Bernd Laengerich wrote:
Am 29.03.2022 um 18:13 schrieb Volker Bartheld:

Bei Kryptographie erst wenn Experten dauerhaft keine
Schwachstellen finden konnten.

... bedienen dürfen. Nennt man dann \"Peer-Review\" usw.

Ja, aber gerade bei Kryptographie ist das Feld viel größer. Attacken werden teils erst Jahre oder Jahrzehnte nach der Entwicklung, Implementierung und Benutzung der Algorithmen gefunden, und nur zum Teil auf Grund schnellerer Rechner. Ein Algorithmus ist in der Regel nicht per se \"sicher\" oder \"unsicher\", im allgemeinen gibt es eine Abschätzung wie lange ein  Algorithmus sicher ist. Irgendwann sind die Rechner halt so schnell daß man vieles einfach per brute force knacken kann, eine Abschätzung darüber wie lange das dauern wird zeigt die sinnvolle Lebensdauer an. Und die kann sehr schnell gegen 0 sinken, wenn unerwartet Attacken entdeckt werden.

Du beschreibst hier korrekt die (Zwangs-)Lage bei kryptographischen Algorithmen.

Unerwartete Attacken können aber auch dauerhaft ausbleiben.
Brute force liefert nicht garantiert ein Knacken.
Beispielsweise Rabbit hat seit 2003 _keine_ Schwäche offenbart.

Sobald ein Code closed Source ist und da aus \"Geheimhaltungsgründen\"
niemand - d. h. auch nicht unter Geheimhaltungsvereinbarung -
drübersehen darf, beginnt es schwer nach Fisch zu riechen. Das soll
übrigens nicht heißen, daß open Source zwingend besser ist, denn unter
den Freiwilligen muß sich erstmal jemand finden, der die Zeit, Lust und
Kompetenz auf/für so eine Begutachtung hat.

Bei closed source stellt sich das Problem gar nicht, da ja keiner den Code prüfen kann. \"Beweis\" der Sicherheit durch Aufstampfen, kennen wir. Davon hält man genau eines: Abstand.

bool CheckLicense(const License& lic)
{
    // [...]
    if(lic.password==\"MyTopSecretPassword\") return true;
    // [...]
}

Haha, erinnert mich ein wenig an den Pen-Tester, der nach Tagen freudestrahlend zu mir kam und meinte, er hätte jetzt *DIE* Lücke im disassemblierten Code gefunden (Hätte er gefragt, hätte er ja auch den Source mit Kommentaren und Erklärung dazu bekommen, aber das war wohl wissenschaftlicher Forschergeist). Da wäre ein Passwort im Klartext im Code! Ja genau! Ich habe ihn dann etwas lapidar auf Kapitel x in Handbuch y verwiesen, in dem genau beschrieben war, daß der keystore aus implementatorischen Gründen ein Passwort verlangt, dieses daher im Programm ja vorliegen muß und das feste Passwort \"abc\" wie folgt verwendet wird.
Er war ein bisschen geknickt, hatte er doch kurz davor genau dieses geforderte Sicherheitshandbuch mit allen Algorithmen validiert.

Schwachsinns-Code.
Ich verschleiere solche Daten u.a. durch a=\'p\', b=\'a\', c=\'s\', d=\'w\';

411] strings /u/bin/bish
FreeBSD
FreeBSD
AWAVSPH
AWAVAUATSPI
ffffff.
...


--
Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
http://www.schellong.de/c.htm http://www.schellong.de/c2x.htm http://www.schellong.de/c_padding_bits.htm
http://www.schellong.de/htm/bishmnk.htm http://www.schellong.de/htm/rpar.bish.html http://www.schellong.de/htm/sieger.bish.html
http://www.schellong.de/htm/audio_proj.htm http://www.schellong.de/htm/audio_unsinn.htm http://www.schellong.de/htm/tuner.htm
http://www.schellong.de/htm/string.htm http://www.schellong.de/htm/string.c.html http://www.schellong.de/htm/deutsche_bahn.htm
http://www.schellong.de/htm/schaltungen.htm http://www.schellong.de/htm/rand.htm http://www.schellong.de/htm/bsd.htm
 
On 30.03.22 02:02, Helmut Schellong wrote:
On 03/29/2022 20:04, Josef Moellers wrote:

On 29.03.22 15:14, Helmut Schellong wrote:
On 03/29/2022 09:39, Josef Moellers wrote:

On 28.03.22 22:29, Helmut Schellong wrote:
On 03/28/2022 20:23, Thomas Prufer wrote:
On Mon, 28 Mar 2022 15:28:20 +0200, Helmut Schellong
rip@schellong.biz> wrote:

Es ist _ganz generell_ richtig, was Du schreibst.
Du ignorierst jedoch die konkrete Praxis mit genau den
Algorithmen, um die es hier geht.

Diese hatte ich aufgelistet:
    |Die Kern-Algorithmen sind nicht selbst entwickelt.
    |Ich habe u.a. die Algorithmen Rabbit, Spritz, sha2_256,
sha2_512,
    |sha3_256, sha3_512 (Keccak) in meine Shell bish implementiert.
    |Diese Algorithmen sind alle kryptographisch.

In der Implementierungsvorschrift der jeweiligen Entwickler der
Algorithmen
ist auch meist eine Testprozedur durch die Entwickler angegeben.
Diese habe ich jeweils durchgeführt!
Mit jeweils demjenigen Ergebnis, das Korrektheit beweist!
Hatte ich mehrfach gepostet - und wurde jeweils ignoriert.
Korrekter und beweiskräftiger geht es nicht!

Das wurde ignoriert weil es kein Beweis ist...

Beweis für was?

\"das Korrektheit beweist!\"

Es ist allgemein bekannt, daß man mit einem Test NIEMALS die
KORREKTHEIT sondern nur die UNKORREKTHEIT beweisen kann, nämlich
wenn der Test fehl schlägt.
Du kannst so lange Testen, wie Du willst, Du kannst 100%
Testabdeckung erreichen, aber Du wirst dadurch niemals beweisen
können, daß der Test nicht bei der nächsten Iteration fehl schlägt.
Der *Beweis* der Korrektheit eines Algorithmus oder seiner
Implementation (im Folgenden \"der Code\") ist eine nicht-triviale, in
der Regel mathematische Tätigkeit.

Es gibt tatsächlich Tests, die eine Korrektheit nicht beweisen können.
Das gilt jedoch nicht für kryptographische Algorithmen, die hier
aufgelistet sind.

Nein. Es gibt keinen Test, der die Korrektheit eines Codes (d.h.
Algorithmus UND Implementation) *beweisen* kann!
Das ist allgemein bekannt und ich möchte mal behaupten, dessen sind
sich die Entwickler des Codes auch bewußt.

Nein, diese Entwickler sagen das Gegenteil.
Habe ich gepostet - wurde beharrlich ignoriert.

|This is a set of test vectors for conformance testing,
|The correctness of the code on different platforms is verified by
generating and comparing test vectors.

Seufz ... Den Unterschied zwischen \"verified\" und \"proven\" ist Dir bekannt?

|We, the designers of Rabbit, hereby state that no hidden weaknesses have
|been inserted by us in the Rabbit algorithm.
|The key expansion stage guarantees a one-to-one correspondence be-
|tween the key, the state and the counter, which prevents key redun-
|dancy. It also distributes the key bits in an optimal way to prepare
|for the the system iteration.

Hatte ich bereits gepostet.

Es wird die Korrektheit einer Implementation nachgewiesen.

Nein, es wird *verifiziert*, nicht *bewiesen*.

Und es wird ausgesagt, daß alle denkbaren Zwischenwerte bei den
Testvektoren
ebenfalls Übereinstimmen würden (one-to-one correspondence).
Immer wieder lesen - vielleicht kommt\'s dann irgendwann.

\"Würden\" heißt nicht \"sind\". Testen heißt eine Stichprobe nehmen und
wenn Du Dich mal mit Statistik und Stichprobeln beschäftigst, wirst Du
feststellen, daß zu jeder Stichprobengröße ein \"Vertrauensintervall\" für
den mit Hilfe der Stichprobe bestimmten Wert gehört, also ein Bereich,
innerhalb dessen der Wert liegen wird.
Gehen wir hier davon aus, daß Du 100% Sicherheit haben willst, bekommst
Du mit einer Stichprobe eben nur einen Bereich *um* die 100% und da es
mehr als 100%ige Sicherheit nicht geben wird, eben einen Bereich
unterhalb der 100%.

Auch folgende Übersetzung hatte ich bereits gepostet:
o  Zuerst steht da, daß Test-Vektoren zum Testen der Übereinstimmung
nachfolgend vorhanden sind.
o  Der zweite Satz sagt aus, daß die Korrektheit des Codes auf
unterschiedlichen Plattformen
.  nachgewiesen wird durch generieren und vergleichen von Test-Vektoren.

Diese Aussage wiederum beweist die Inkompetenz derer, die das
ignorierten.
Warum?
Es geht um den Beweis einer korrekten Implementation!

Genau, und die kannst Du NIEMALS durch einen Test BEWEISEN.

|This is a set of test vectors for conformance testing,

Die Entwickler von kryptographischen Algorithmen haben das aber
ausgesagt.
Willst Du denen widersprechen?

Nein, ich will ihnen nicht widersprechen, daß dies Test Vektoren für
das \"conformance testing\" sind. So ein Test *beweist* eben NICHT die
Korrektheit eines Codes sondern nur, daß dieser gewissen Standards
entspricht:

Doch, entsprechende Aussagen der Entwickler postete ich oben in
Wiederholung.
Du widersprichst den Entwicklern wiederholt.

Nunja, schau\'n \'mer mal. Unser Ältester hat mich auf die Webseite von
Mette Vesterager verwiesen, er ist da etwas flotter mit, so etwas im
akademischen Umfeld zu finden als ich. Ich habe Mette dann auch mal
angeschrieben, mal sehen, was sie dazu sagt.

|The correctness of the code on different platforms is verified by
generating and comparing test vectors.

Wieder dieses Wörtchen *verified* und NICHT *proven* ...

https://www.techtarget.com/searchsoftwarequality/definition/conformance-testing

Da steht nix von \"correctness\" sondern nur \"meets a defined set of
standards\".

Irrelevant.

.... weil nicht zu Deiner Argumentation passend.

Auch der Wikipedia-Artikel
https://en.wikipedia.org/wiki/Conformance_testing sprint nicht von
\"correctness\" sondern nur von \"performs according to its specified
standards.\".

Irrelevant.
|The correctness of the code on different platforms is verified by
generating and comparing test vectors.

*verified*

Diese Aussagen sind aus der Dokumentation der aufgelisteten
kryptographischen Algorithmen.
Die von Dir gegebenen Dokumentationen sind _nicht_ aus dieser Menge -
und daher irrelevant!

.... weil Deiner Argumentation widersprechend.

Ganz einfach gesagt: es ist mir völlig wurscht, was die Entwickler
*behaupten*, wenn sie es denn überhaupt tun. Fakt ist, daß es in der
Informatik gar nicht mehr diskutiert wird, ob man mit Testen die
Korrektheit *beweisen* kann, es ist Konsens, daß dem NICHT so ist.

Wie gesagt/geschrieben: Man kann mit einem noch so guten Test nicht
die Korrektheit *beweisen\". Man kann sein vertrauen darin durch immer
längeres Test immer weiter vergrößern, eine 100% Sicherheit gibt kein
Test!
Durch das hinzufügen von noch mehr Tests wirst Du Dich dem Ziel \"100%
Korrektheit bewiesen\" ständig asymptotisch annähern, es aber nie
erreichen.

Im Wikipedia-Artikel zu \"Software Testing\" steht auch genau drin:
\"understand the risks of software implementation.\" und weiter
\"Software testing can provide objective, independent information about
the quality of software and risk of its failure to users or sponsors\"
Da steht also eindeutig, daß es Risiken gibt (mir fällt kein anderes
Risiko ein als daß der Code Fehler enthält) und man kann durch Testen
diese *Risiken* erkennen und das Vertrauen erhöhen.

Alles irrelevant.
Es geht um die Korrektheit einer Implementation der aufgeführten
kryptographischen Algorithmen.

.... undd die kann man mit Testen NICHT *beweisen*.
Man kann die Korrektheit des Algorithmus mit mathematischen Methoden
beweisen und ich gehe stark davon aus, daß die Entwickler das getan
haben, sonst ist der ganze Rabbit Algorithmus für dir Tonne.
Danach will man sicherstellen, daß eine Implementation fehlerfrei ist
und, da man den mathematischen Beweis nicht nochmal und nochmal und
nochmal für jede Implementation machen will, setzt man auf Tests um das
zu *verifizieren*.

\'conformance\' heißt \'Übereinstimmung\'.
Wenn Test-Vektoren Übereinstimmung erzielen, ist eine Implementation
korrekt.

Übereinstimmung womit?

Mit der Ausgabe des jeweiligen Algorithmus\', mit der zugehörigen response.

.... ausschließlich für die gegebenen Werte des \"test vectors\". Für
Werte, die NICHT in den \"test vectors\" sind, kann man das zwar annehmen,
und es wird in den allermeisten Fällen auch so sein, aber *beweisen* tut
es das nicht.

Deren Korrektheit ist durch eine Übereinstimmung _bewiesen_.
Das sagen die Entwickler aus!
Und Punkt.

Tja, dann glaube das bitte weiter.

Ich habe allen Grund dazu:
|The correctness of the code on different platforms is verified by
generating and comparing test vectors.

*verified*, nicht *proven*.

Der ist gegeben, wenn die vorgeschriebenen Tests Übereinstimmung
ergaben.

Nein, dadurch ist nur gegeben, daß der Code bei der Durchführung der
vorgegebenen Berechnungen die erwarteten Ergebnisse liefert. Es ist
dadurch niche bewiesen, daß der Code bei der Durchführung anderer
Berechnungen, z.B. wenn andere Eingabeparameter vorgegeben werden,
immer noch die erwarteten Ergebnisse liefert.

Falsch.
Die Entwickler haben geeignete Tests vorgegeben, um die Korrektheit
beweisen zu können.
Die Entwickler wissen, daß wenn alle Tests Übereinstimmung ergeben,
auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden.

Das heißt, sie können ganz genau angeben, wie viele Tests und mit
welchen Werten sie diese Tests durchführen müssen, um die Korrektheit
zu 100% zu beweisen?
Ich behaupte, daß ihnen bewußt ist, daß dies nicht möglich ist.

|The correctness of the code on different platforms is verified by
generating and comparing test vectors.
Willst Du irgendwann solche Aussagen der Entwickler respektieren?

Du verdrehst ihnen die Worte im Mund und machst aus \"verified\" ein
\"bewiesen\".

Die Entwickler kennen ihre Entwicklung in dieser Hinsicht ganz genau.
Schließlich sind die Algorithmen deterministisch.

*Jeder* auf einem Computer implementierter Algorithmus ist
deterministisch.

Ja.
Aber ich meine selbstverständlich, daß die Ausgabe-Sequenzen
der kryptographischen Algorithmen deterministisch sind.
Gleicher Key - gleiche Sequenz.
Wurde bereits durchgekaut.

Ja, eben mathematisch-logisch nur für die Keys, die im \"test vector\"
sind, und NICHT für alle anderen Keys, die NICHT im \"test vector\" sind.
Daher \"verified\", nicht \"proven\".

Trotzdem kann man von vielen Algorithmen z.B. nicht einmal theoretisch
beweisen, daß sie jemals enden (Halteproblem). Ergo kann man dies und
auch das Gegenteil auch durch die besten Tests nicht beweisen.

Irrelevant.
Es geht um die Korrektheit einer Implementation nur der aufgeführten
kryptographischen Algorithmen.

Wenn etwas *grundsätzlich* nicht funktioniert, kann es im Einzelfall
auch nicht funktionieren.

|We, the designers of Rabbit, hereby state that no hidden weaknesses
have
|been inserted by us in the Rabbit algorithm.

Das beruhigt ungemein.

Du versuchst, die Entwickler lächerlich zu machen.

Sorry, aber der Satz fordert das ja geradezu heraus.

|The key expansion stage guarantees a one-to-one correspondence be-
|tween the key, the state and the counter, which prevents key redun-
|dancy. It also distributes the key bits in an optimal way to prepare
|for the the system iteration.
|The correctness of the code on different platforms is verified by
generating and comparing test vectors.

Tja, das würde ich gerne mit ihnen diskutieren.
Ich finde gerade keine Email-Adresse, aber das bekomme ich hin!

Vielleicht machtest Du Dich damit lächerlich.

Schau\'n \'mer mal ... Mail ist \'raus. Jan (unser Sohn) sei Dank für den
Verweis auf Mettes Email-Adresse.

Ich habe etwa 100 Seiten nur zu Rabbit gelesen.
Und ich vertraue diesen Entwicklern - die haben mich überzeugt.

Ich zweifele ihren Code ja auch gar nicht an. Was ich anzweifele sind
Deine Behauptungen, man könne durch Testen die Korrektheit beweisen und
da sprechen ALLE dagegen, bis auf Du.

Es ist dann der Beweis erbracht, daß die vorgenommene Implementation
werte-mäßig identisch mit der Referenz-Implementation der
Algorithmus-Entwickler ist.

Nochmals: Nein, es dadurch nur der Beweis erbracht, daß der Code bei
den vom Entwickler vorgegebenen Eingabedaten die erwarteten
Ausgabedaten erzeugt. Nichts anderes.

Erneut falsche Behauptung.
Beweise zur Abwechslung doch mal Deine Behauptung.

Wie bitte soll den durch das Testen mit von den Entwicklern
vorgegebenen Test-Vektoren bewiesen werden, daß Elemente, die NICHT in
den Test-Vektoren enthalten sind, auch die korrekten Ergebnisse liefern?

Aufgrund des spezifischen Verhaltens des jeweiligen Algorithmus\'.
Diese Algorithmen können aufgrund ihres Aufbaus nicht anders.

Nunja, ich verstehe jetzt von kryptologischen Algorithmen nicht
sonderlich viel, aber daß sie interne an diversen Stellen die Daten der
\"test vector\"en kräftig durcheinander würfeln, sollte klar sein. Und
jetzt aus \"mit dem Wert m kommt das Erwartete heraus\" und \"mit dem Wert
n kommt das Erwartete heraus\" zu schließen, daß dann auch für alle Werte
zwischen m und n das Erwartete heraus kommt, ist eben ziemlich gewagt.

Wenn wir uns darauf einigen könnten, daß es nicht möglich ist, durch
Testen die Korrektheit eines Codes (d.h. Algorithmus UND Implementation)
zu *beweisen*, dann könnten wir diese Debatte beenden.

Ich habe meine nämlich mehrfach bewiesen, anhand der
Entwickler-Testprozeduren.

Also hast nicht Du das bewiesen, sondern die Entwickler haben das
behauptet und Du hast das nur wiedergegeben.

Ja, \"anhand der Entwickler-Testprozeduren.\"
Wenn ich die korrekt anwende, habe ich es mit Hilfe dieser Prozeduren
bewiesen.
Geht es nun mit Haarespalten weiter?

Nunja, Du hast eben die Entwickler Testprozeduren angewendet und es sind
die zu erwartenden Ergebnisse herausgekommen. Das ist eben kein
\"Beweis\", wie so ziemlich die gesamte Informatik-Welt weiß.

NB Unser Sohn ist Professor für Mathematik an der Universität in
Aarhus und ich habe ihn gerade mal (per Email) gefragt, ob er mir ggf
die Email-Adresse von Mette Vesterager, die ist am Center for
Subjectivity Research an der Uni Kopenhagen, besorgen kann. Mal
gucken, was daraus wird.

https://ku-dk.academia.edu/MetteVesterager

Ja, da war ich gestern abend auch, da fand ich aber auf Anhieb ihre
Email-Adresse nicht.
Von unserem Ältesten habe ich das hier:
https://cfs.ku.dk/staff/?pure=en/persons/307267
und da steht ihre Email-Adresse \'drin.

Es sind vier Entwickler.
Es kann notwendig sein, herauszufinden, welcher welche Texte erarbeitet
hatte.

Ich hoffe, daß Mette Vesterager die Frage weiterleiten wird, wenn sie
sie nicht selber beantworten kann

\"This is a set of test vectors for conformance testing,\"
Hatte ich bereits gepostet.


\"Korrekter und beweiskräftiger geht es nicht!\" schrieb ich oben.
Reicht das nicht?
Falls nicht - was reicht denn dann?

Ein mathematischer Beweis, daß der Code korrekt ist, also nicht der
Nchweis, daß der Code bei der Eingabe einer (endlichen) Menge von
Eingabeparametern die erwarteten Ergebnisse liefert, sondern daß der
Code bei der Eingeba *aller erlaubten* Eingabeparametern die
erwarteten Ergebnisse liefern wird.
Dazu empfehle ich \"The Science of Programming\" von David Gries. Ist
schon gut abgehangen, aber imho immer noch gut.

Ich beherrsche etwa 20 Programmiersprachen mehr oder weniger gut -
ein weiteres Buch brauche ich nicht.

Ja, dann erübrigt sich ja die Debatte mit Dir, oh Du weiser Mann.

Ich habe nirgendwo behauptet, daß ich weise bin.

Zwanzig Programmiersprachen ... wow! Ich erstarre in Ehrfurcht.

Das ist eine Tatsache.
Allerdings - wie ich schrieb - mehr oder weniger gut.

Ich habe 1981 angefangen zu arbeiten (damals bei der Nixdorf Computer
AG) und die Computerei ist mein Hobby. Wie viele Programmiersprachen
ich kenne ... ich habe sie nie gezählt.
Das ist ja auch völlig irrelevant! Und wenn Du 100 Programmiersprachen
könntest, so hast Du immer noch nicht begriffen, was ich sagen will:
Daß man mit Testen nie und nimmer die Korrektheit eines Codes beweisen
kann.

Es ist überhaupt nicht irrelevant, welche Programmiersprachen man kann!

Doch, wenn man Grundprinzipien der Informatik nicht kennt, kennt man sie
mit einer Srache nicht und mit 100 Sprachen auch nicht.

Siehe hierzu auch
https://de.wikipedia.org/wiki/Korrektheit_(Informatik)

Oder die Folien hier:
https://pi4.informatik.uni-mannheim.de/pi4.data/content/courses/2005-ws/pi1/slides/pi1-5b-2006-02-02.pdf

\"Testen nur das Vertrauen in die Korrektheit eines Programms erhöhen,
nicht aber die Korrektheit beweisen.\"

Oder die Folien hier:
https://www.mathematik.uni-marburg.de/~gumm/Lehre/WS07/PraktischeInformatikI/Folien/14_Korrektheit.pdf

\"Durch Testen kann man nur Anwesenheit von
Fehlern feststellen, nicht aber ihre
Abwesenheit (E. Dijkstra)\"

Dijstra\'s Essay \"On the reliability of programs\" kannst Du übrigens
hier nachlesen:
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD303.html

Ich zitiere mal (sinngemäß) einen Herrn Schellong: \"Willst Du dem
widersprechen?\"

Dijstra\'s These wird übrigens hier diskutiert:
https://blog.liw.fi/posts/2019/06/29/dijkstra_was_only_partially_correct_about_testing/

Und auch dort steht \"Tests don’t tell you that code works in cases
that aren’t tested. Tests tell you code works in the cases that are
tested. If you want it to work in some other case, you add a test, or
expand an existing test to cover the case you’re interested in.\"

Das alles ist allerdings im Kontext irrelevant.

Nein, es sei denn, Du akzeptierst, daß ein Test NIEMALS die Korrektheit
eines Codes *beweisen* kann, sondern eine Implementation nur
*verifizieren* kann.

Ich habe u.a. die Bücher von Knuth.

Ja, die sind gut.
Was sagt Knuth denn zum Testen?

Ich arbeite jetzt nicht diese Bücher durch...

Brauchst Du nicht, im \"Fundamental Algorithms\" Steht schon im ersten
Kapitel \"Basic Concepts\" ein Beweis und der besteht nicht aus einzelnen
Werten sondern ist ein mathematisch-logischer Beweis, daß der
Algorithmus (Euklids Algorithmus zur Berechnung des größten gemeinsamen
Teilers) korrekt ist. Bei meiner Softcover-Ausgabe von 1973 ab Seite 14.

Wozu auch?, wenn ich spezifische, zum Algorithmus passende
Testprozeduren habe!

Da ist noch was: hast Du schon mal darüber nachgedacht, daß die
Entwickler *selber* diese Test-Vektoren bestimmt haben? Und ist Dir
vielleicht mal der Gedanke gekommen, daß man als Entwickler einem
gewissen \"Bias\" unterworfen ist, da.h. man tendiert dazu, in eine
Richtung zu denken?

http://www.informit.com/articles/article.aspx?p=1193856
\"As to your real question, the idea of immediate compilation and \"unit
tests\" appeals to me only rarely, when I’m feeling my way in a totally
unknown environment and need feedback about what works and what doesn’t.\"
OK, es geht um \"Unit Tests\", aber auch das sind Tests und er lehnt sie
ab!

Ein mathematischer Beweis ist bei allen Algorithmen des Kontextes
prinzipiell unmöglich.
Fehler werden gegebenenfalls lange Zeit nach Veröffentlichung des
Algo von untersuchenden Experten mitgeteilt.

Die _Entwickler_ wissen, daß wenn alle Tests Übereinstimmung ergeben,
auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden.
(s.o.)

Das wage ich zu bezweifeln. Schau\'n \'mer mal, ob unser Ältester mir
die Adresse von Mette besorgen kann, dann frage ich sie.

Es kann sein, daß sie als eine von vier Entwicklern nicht alle Fragen
beantworten kann.

Schau\'n \'mer mal. Ich hoffe ja, daß sie meine Frage weiterleiten wird,
wenn sie sie schon nicht selber beantworten kann.

Wir befinden uns nun im Bereich der Haarspalterei, des Unsinns, des
Irrsinns.

Nein, wir befinden uns hier im Bereich der Hybris.

Falsch.
Ich bin ganz konkret praxisbezogen ziemlich kenntnisreich auf diesem
Gebiet.

Wie gesagt: Hybris.

Nein, ich bin ziemlich kenntnisreich auf diesem Gebiet.
Das bedeutet, daß ich deutlich mehr weiß, als die große Mehrheit.
Ein Experte bin ich nicht für diese Algorithmen - allerdings für die
Sprache C.

Irrelevant und überheblich ... eben Hybris. Und die ist insbesondere im
Bereicht der Sicherheit lebensgefährlich.

[...]

Nein, in erster Instanz werden Brücken *berechnet*. Die Statiker
*berechnen*, wie viel Beton und wie viel Armierung und sonstiges da
\'rein muß, damit eine Brücke mit einer bestimmten Spannweite eine
bestimmte Last aufnehmen kann. Am Ende wird, um das noch einmal zu
*verifizieren* ein Belastungstest gemacht. Aber wenn das nicht
*berechnet* ist, dann würde kein LKW-Fahrer darüber fahren wollen.

Diese Berechnungen werden aber begutachtet und eventuell offiziell
abgenommen.
Das ist in \"bewiesenermaßen korrekt gebaut\" enthalten.
Du willst wieder Haare spalten.

Nein, Du willst mir partout widersprechen. Genau das habe ich
geschrieben: Brücken werden nicht einfach so gebaut und dann mit LKW
getestet, sie werden berechnet, daß sie der Belastung stand halten, dann
werden sie gebaut und dann fährt man noch mal mit einer Kolonne LKW
\'drüber um das zu ... *verifizieren*.
Leider ist \"mein Statiker\" (Schwiegerpapa) schon vor über 30 Jahren
verstorben, sonst hätte ich ihn gefragt, wie so etwas genau abläuft.

[...]

Du willst die Kenntnisse der Entwickler und Gepflogenheiten im Bereich
der kryptographischen Cipher offensichtlich nicht anerkennen.

Und Du willst die (Er)-Kenntnisse der theoretischen Informatik nicht
anerkennen.



Nur, wenn enger zugehörige Erkenntnisse die allgemeinen Erkenntnisse
überschreiben.

Ich sehe nicht, wie man die Erkenntis, daß Testen niemals die
Korrektheit eines Codes *beweisen* kann, überschreiben kann.
Insbesondere bei etwas so Komplexen wie Verschlüsselungsalgorithmen und
dem Bereich der Sicherheit.

Wie gesagt: ich gehe davon aus, daß die Entwickler die Korrektheit ihres
Algorithmus\' mathematisch bewiesen haben und lediglich die Korrektheit
der Implementation mittels Tests *verifizieren*.

Josef
 
On Tue, 29 Mar 2022 20:04:54 +0200, Josef Moellers wrote:
On 29.03.22 15:14, Helmut Schellong wrote:
|This is a set of test vectors for conformance testing,
Die Entwickler von kryptographischen Algorithmen haben das aber ausgesagt.
Willst Du denen widersprechen?
Nein, ich will ihnen nicht widersprechen, daß dies Test Vektoren für das
\"conformance testing\" sind. So ein Test *beweist* eben NICHT die
Korrektheit eines Codes sondern nur, daß dieser gewissen Standards
entspricht

Es geht hier konkret um die Überprüfung der grundlegenden Annahme, daß sich
die Implementierung auf den unterschiedlichen Compilern und Plattformen
weitestgehend (d. h. zumindst ohne funktionale Abweichungen) gleich
verhält. Typischerweise wimmelt es dort von expliziten oder impliziten
Preprozessoranweisungen wie...

#ifdef WIN
#include <foo>
#else
#include <bar>
#endif

, wir haben unterschiedliche Versionen der C++ Runtime, der STL, das ABI
unterscheidet sich, nicht einmal auf die Byteorder (LSB/MSB, Little/Big
Endian) oder die Breite (wieviele Bits hat der Typ \"int\" oder \"long\" auf
einer 32- vs. 64-Bit-Plattform, Windows vs. Linux, auf einem Arduino,
usw.) kann man sich nicht zwingend verlassen.

Die Hoffnung (ich wähle diesen Begriff mit voller Absicht) ist, daß
funktionsrelevante Abweichungen sich bereits in einer kleinen Untermenge
der Tests - z. B. mit Testvektoren - offenbaren.

Aber wem sage ich das.

\'conformance\' heißt \'Übereinstimmung\'.
Wenn Test-Vektoren Übereinstimmung erzielen, ist eine Implementation
korrekt.
Übereinstimmung womit?

Wenn die Testvektoren Übereinstimmung erzielen, verhält sich das System für
diese Testvektoren wie erwartet. Es wurde hinreichend oft gezeigt, daß sich
Szenarien konstruieren lassen, die nur und genau für diese Testvektoren
funktionieren, für andere aber nicht. Das mag jetzt wie Theoriewichserei
klingen, ist aber für ein Verständnis dessen, was man da eigentlich testet,
fundamental wichtig.

De facto ist ein Test immer nur eine Stichprobe. Zumindest dann, wenn ich
unter \"Test\" nicht einen mathematischen Funktionsbeweis verstehe oder der
Code - so wie es bei der Entwicklung von Software für manche Steuergeräte
der Fall ist - automatisch von einem hoffentlich pefekten Compiler aus
einem hoffentlich perfekten Simulationsmodell erzeugt wurde. Dort gibt es
wieder ganz andere Probleme, deren Diskussion an dieser Stelle aber zu
weit führen würde.

Deren Korrektheit ist durch eine Übereinstimmung _bewiesen_.
Das sagen die Entwickler aus!
Und Punkt.
Tja, dann glaube das bitte weiter.

Genau. Ist ohnehin irrelevant.

|We, the designers of Rabbit, hereby state that no hidden weaknesses have
|been inserted by us in the Rabbit algorithm.
Das beruhigt ungemein.

Weil es eine Beteuerung ist, die zumindest Vorsatz ausschließt. Die Haftung
für Fahrlässigkeit wird üblicherweise in einem anderen Passus der
Lizenzvereinbarung verweigert. Aus gutem Grund.

|The correctness of the code on different platforms is verified by
| generating and comparing test vectors.
Tja, das würde ich gerne mit ihnen diskutieren.

Und wirst auf eine semantische Diskussion treffen, bei der es um die
Unterschiede zwischen \"überprüfen\" und \"garantieren\" geht. Bei der
allzweijährigen Hauptuntersuchung wird Dein Fahrzeug auf die
Verkehrssicherheit hin überprüft. Garantiert Dir der Sachverständige nach
Abschluß der Prüfung die Verkehrssicherheit? Nein.

Wie bitte soll den durch das Testen mit von den Entwicklern vorgegebenen
Test-Vektoren bewiesen werden, daß Elemente, die NICHT in den
Test-Vektoren enthalten sind, auch die korrekten Ergebnisse liefern?

Allein die Tatsache, daß _Entwickler_ ihr Produkt testen...

Ich beherrsche etwa 20 Programmiersprachen mehr oder weniger gut - ein
weiteres Buch brauche ich nicht.
Ja, dann erübrigt sich ja die Debatte mit Dir, oh Du weiser Mann.
Zwanzig Programmiersprachen ... wow! Ich erstarre in Ehrfurcht.

Mehr oder weniger gut. Vielleicht können wir das Thema nun zu Grabe tragen.
Einen großen Schaden wird unser Universalgenie wohl kaum anrichten können.

Volker
 
On 03/30/2022 09:34, Josef Moellers wrote:
On 30.03.22 02:02, Helmut Schellong wrote:
On 03/29/2022 20:04, Josef Moellers wrote:

On 29.03.22 15:14, Helmut Schellong wrote:
On 03/29/2022 09:39, Josef Moellers wrote:

On 28.03.22 22:29, Helmut Schellong wrote:
On 03/28/2022 20:23, Thomas Prufer wrote:
On Mon, 28 Mar 2022 15:28:20 +0200, Helmut Schellong <rip@schellong.biz> wrote:

Es ist _ganz generell_ richtig, was Du schreibst.
Du ignorierst jedoch die konkrete Praxis mit genau den Algorithmen, um die es hier geht.

Diese hatte ich aufgelistet:
    |Die Kern-Algorithmen sind nicht selbst entwickelt.
    |Ich habe u.a. die Algorithmen Rabbit, Spritz, sha2_256, sha2_512,
    |sha3_256, sha3_512 (Keccak) in meine Shell bish implementiert.
    |Diese Algorithmen sind alle kryptographisch.

In der Implementierungsvorschrift der jeweiligen Entwickler der Algorithmen
ist auch meist eine Testprozedur durch die Entwickler angegeben.
Diese habe ich jeweils durchgeführt!
Mit jeweils demjenigen Ergebnis, das Korrektheit beweist!
Hatte ich mehrfach gepostet - und wurde jeweils ignoriert.
Korrekter und beweiskräftiger geht es nicht!

Das wurde ignoriert weil es kein Beweis ist...

Beweis für was?

\"das Korrektheit beweist!\"

Es ist allgemein bekannt, daß man mit einem Test NIEMALS die KORREKTHEIT sondern nur die UNKORREKTHEIT beweisen kann, nämlich wenn der Test fehl schlägt.
Du kannst so lange Testen, wie Du willst, Du kannst 100% Testabdeckung erreichen, aber Du wirst dadurch niemals beweisen können, daß der Test nicht bei der nächsten Iteration fehl schlägt.
Der *Beweis* der Korrektheit eines Algorithmus oder seiner Implementation (im Folgenden \"der Code\") ist eine nicht-triviale, in der Regel mathematische Tätigkeit.

Es gibt tatsächlich Tests, die eine Korrektheit nicht beweisen können.
Das gilt jedoch nicht für kryptographische Algorithmen, die hier aufgelistet sind.

Nein. Es gibt keinen Test, der die Korrektheit eines Codes (d.h. Algorithmus UND Implementation) *beweisen* kann!
Das ist allgemein bekannt und ich möchte mal behaupten, dessen sind sich die Entwickler des Codes auch bewußt.

Nein, diese Entwickler sagen das Gegenteil.
Habe ich gepostet - wurde beharrlich ignoriert.

|This is a set of test vectors for conformance testing,
|The correctness of the code on different platforms is verified by generating and comparing test vectors.

Seufz ... Den Unterschied zwischen \"verified\" und \"proven\" ist Dir bekannt?

Du und mindestens ein Anderer verstehen die Semantik der Sprache nicht richtig.

\'verified\' kann mit \'nachgewiesen\' übersetzt werden.
Der Satzgegenstand ist die \'correctness of the code\'.
Diese wird nachgewiesen durch Vergleich mit Test-Vektoren.
Wie oft muß ich das noch schreiben.

|We, the designers of Rabbit, hereby state that no hidden weaknesses have
|been inserted by us in the Rabbit algorithm.
|The key expansion stage guarantees a one-to-one correspondence be-
|tween the key, the state and the counter, which prevents key redun-
|dancy. It also distributes the key bits in an optimal way to prepare
|for the the system iteration.

Hatte ich bereits gepostet.

Es wird die Korrektheit einer Implementation nachgewiesen.

Nein, es wird *verifiziert*, nicht *bewiesen*.

\'verified\' kann mit \'nachgewiesen\' übersetzt werden.
to verify nachweisen
to verify sth. etw. beweisen

Und es wird ausgesagt, daß alle denkbaren Zwischenwerte bei den Testvektoren
ebenfalls Übereinstimmen würden (one-to-one correspondence).
Immer wieder lesen - vielleicht kommt\'s dann irgendwann.

\"Würden\" heißt nicht \"sind\". Testen heißt eine Stichprobe nehmen und wenn Du Dich mal mit Statistik und Stichprobeln beschäftigst, wirst Du feststellen, daß zu jeder Stichprobengröße ein \"Vertrauensintervall\" für den mit Hilfe der Stichprobe bestimmten Wert gehört, also ein Bereich, innerhalb dessen der Wert liegen wird.

Ich habe mich in der Vergangenheit intensiv damit beschäftigt.
1978 kaufte ich den TI59 mit mehreren Programm-Modulen.
Da ist viel Mathematik und Statistik dabei.

Du betreibst wieder Haarspalterei.
Wenn man sich mit Zahlen wie 2^512 beschäftigt, sieht man, daß das dem Wert 10^154 entspricht.
Das ist weit jenseits von Yotta:Quadrillion:10^24.
(154 ~ 512/3,322)
Die Zahlen sind derart groß, daß sie sich der statistischen Anwendung in der normalen Praxis entziehen.
Ich kann nicht hier bei mir einen Rechner aufstellen und diesen 20 Jahre rechnen lassen.
Auch nicht 2 Jahre - wohl 2 Monate.

> Gehen wir hier davon aus, daß Du 100% Sicherheit haben willst, bekommst Du mit einer Stichprobe eben nur einen Bereich *um* die 100% und da es mehr als 100%ige Sicherheit nicht geben wird, eben einen Bereich unterhalb der 100%.

Diese Überlegungen sind unzutreffend im Zusammenhang mit den hier relevanten Algorithmen.
Diese Algorithmen arbeiten ausschließlich mit elementaren Integer-Operationen.
Es gibt da eine eins-zu-eins-Korrespondenz durch den ganzen Algorithmus hindurch.

Auch folgende Übersetzung hatte ich bereits gepostet:
o  Zuerst steht da, daß Test-Vektoren zum Testen der Übereinstimmung nachfolgend vorhanden sind.
o  Der zweite Satz sagt aus, daß die Korrektheit des Codes auf unterschiedlichen Plattformen
.  nachgewiesen wird durch generieren und vergleichen von Test-Vektoren.

Diese Aussage wiederum beweist die Inkompetenz derer, die das ignorierten.
Warum?
Es geht um den Beweis einer korrekten Implementation!

Genau, und die kannst Du NIEMALS durch einen Test BEWEISEN.

|This is a set of test vectors for conformance testing,

Die Entwickler von kryptographischen Algorithmen haben das aber ausgesagt.
Willst Du denen widersprechen?

Nein, ich will ihnen nicht widersprechen, daß dies Test Vektoren für das \"conformance testing\" sind. So ein Test *beweist* eben NICHT die Korrektheit eines Codes sondern nur, daß dieser gewissen Standards entspricht:

Doch, entsprechende Aussagen der Entwickler postete ich oben in Wiederholung.
Du widersprichst den Entwicklern wiederholt.

Nunja, schau\'n \'mer mal. Unser Ältester hat mich auf die Webseite von Mette Vesterager verwiesen, er ist da etwas flotter mit, so etwas im akademischen Umfeld zu finden als ich. Ich habe Mette dann auch mal angeschrieben, mal sehen, was sie dazu sagt.

Es kommt sehr darauf an, welche Worte und Sätze da genau kommuniziert werden.
Damit die Kommunikation nicht fehlgeleitet sein wird.

|The correctness of the code on different platforms is verified by generating and comparing test vectors.

Wieder dieses Wörtchen *verified* und NICHT *proven* ...

Und wieder das Nichterkennen der Semantik der Sprache.

https://www.techtarget.com/searchsoftwarequality/definition/conformance-testing
Da steht nix von \"correctness\" sondern nur \"meets a defined set of standards\".

Irrelevant.

... weil nicht zu Deiner Argumentation passend.

Nein, weil es sich wegbewegt vom Thema der kryptographischen Algorithmen.
Du willst aus dem Kontext-Thema ausbrechen, weil Dir die Aussagen der Entwickler (Wissenschaftler)
der Kontext-Algorithmen nicht passen, auf die ich mich beharrlich beziehe.

Auch der Wikipedia-Artikel https://en.wikipedia.org/wiki/Conformance_testing sprint nicht von \"correctness\" sondern nur von \"performs according to its specified standards.\".

Irrelevant.
|The correctness of the code on different platforms is verified by generating and comparing test vectors.

*verified*

Und wieder das Nichterkennen der Semantik der Sprache.
Du fährst den Entwicklern der Algorithmen ständig über den Arsch.

Diese Aussagen sind aus der Dokumentation der aufgelisteten kryptographischen Algorithmen.
Die von Dir gegebenen Dokumentationen sind _nicht_ aus dieser Menge - und daher irrelevant!

... weil Deiner Argumentation widersprechend.

Nein, Du hast erkannt, daß Du im Kontext nicht mehr wirksam argumentieren kannst
und willst deshalb aus dem Kontext ausbrechen.

> Ganz einfach gesagt: es ist mir völlig wurscht, was die Entwickler *behaupten*, wenn sie es denn überhaupt tun. Fakt ist, daß es in der Informatik gar nicht mehr diskutiert wird, ob man mit Testen die Korrektheit *beweisen* kann, es ist Konsens, daß dem NICHT so ist.

Diese Allgemeinplätze sind im Kontext eben nicht anwendbar.
Das willst Du partout nicht erkennen.

Wie gesagt/geschrieben: Man kann mit einem noch so guten Test nicht die Korrektheit *beweisen\". Man kann sein vertrauen darin durch immer längeres Test immer weiter vergrößern, eine 100% Sicherheit gibt kein Test!
Durch das hinzufügen von noch mehr Tests wirst Du Dich dem Ziel \"100% Korrektheit bewiesen\" ständig asymptotisch annähern, es aber nie erreichen.

Im Wikipedia-Artikel zu \"Software Testing\" steht auch genau drin:
\"understand the risks of software implementation.\" und weiter \"Software testing can provide objective, independent information about the quality of software and risk of its failure to users or sponsors\" Da steht also eindeutig, daß es Risiken gibt (mir fällt kein anderes Risiko ein als daß der Code Fehler enthält) und man kann durch Testen diese *Risiken* erkennen und das Vertrauen erhöhen.

Alles irrelevant.
Es geht um die Korrektheit einer Implementation der aufgeführten kryptographischen Algorithmen.

... undd die kann man mit Testen NICHT *beweisen*.
Man kann die Korrektheit des Algorithmus mit mathematischen Methoden beweisen und ich gehe stark davon aus, daß die Entwickler das getan haben, sonst ist der ganze Rabbit Algorithmus für dir Tonne.
Danach will man sicherstellen, daß eine Implementation fehlerfrei ist und, da man den mathematischen Beweis nicht nochmal und nochmal und nochmal für jede Implementation machen will, setzt man auf Tests um das zu *verifizieren*.

Du hast absolut keine Ahnung von den konkret implementierten Algorithmen des Kontextes.
Deshalb kann bei Dir auch nicht/nie die richtige Erkenntnis kommen, solange Dir dies unbekannt ist.

\'conformance\' heißt \'Übereinstimmung\'.
Wenn Test-Vektoren Übereinstimmung erzielen, ist eine Implementation korrekt.

Übereinstimmung womit?

Mit der Ausgabe des jeweiligen Algorithmus\', mit der zugehörigen response.

... ausschließlich für die gegebenen Werte des \"test vectors\". Für Werte, die NICHT in den \"test vectors\" sind, kann man das zwar annehmen, und es wird in den allermeisten Fällen auch so sein, aber *beweisen* tut es das nicht.

Es wird in _allen_ Fällen garantiert so sein.
Du verstehst auch hier nicht die Semantik, die in der eins-zu-eins-Korrespondenz innerhalb der Algorithmen steckt.
Da sind Hopfen und Malz eben verloren.

Deren Korrektheit ist durch eine Übereinstimmung _bewiesen_.
Das sagen die Entwickler aus!
Und Punkt.

Tja, dann glaube das bitte weiter.

Ich habe allen Grund dazu:
|The correctness of the code on different platforms is verified by generating and comparing test vectors.

*verified*, nicht *proven*.

Und wieder das Nichterkennen der Semantik der Sprache.
Das ist offenbar ein Tick von Dir.

Der ist gegeben, wenn die vorgeschriebenen Tests Übereinstimmung ergaben.

Nein, dadurch ist nur gegeben, daß der Code bei der Durchführung der vorgegebenen Berechnungen die erwarteten Ergebnisse liefert. Es ist dadurch niche bewiesen, daß der Code bei der Durchführung anderer Berechnungen, z.B. wenn andere Eingabeparameter vorgegeben werden, immer noch die erwarteten Ergebnisse liefert.

Falsch.
Die Entwickler haben geeignete Tests vorgegeben, um die Korrektheit beweisen zu können.
Die Entwickler wissen, daß wenn alle Tests Übereinstimmung ergeben, auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden.

Das heißt, sie können ganz genau angeben, wie viele Tests und mit welchen Werten sie diese Tests durchführen müssen, um die Korrektheit zu 100% zu beweisen?
Ich behaupte, daß ihnen bewußt ist, daß dies nicht möglich ist.

|The correctness of the code on different platforms is verified by generating and comparing test vectors.
Willst Du irgendwann solche Aussagen der Entwickler respektieren?

Du verdrehst ihnen die Worte im Mund und machst aus \"verified\" ein \"bewiesen\".

Nein, \'verify\' kann mit \'beweisen\' gültig übersetzt werden.
Ich habe Aussagen der Entwickler zitiert.
Inwiefern verdrehe ich den Entwicklern dadurch die Worte im Mund?

Die Entwickler kennen ihre Entwicklung in dieser Hinsicht ganz genau.
Schließlich sind die Algorithmen deterministisch.

*Jeder* auf einem Computer implementierter Algorithmus ist deterministisch.

Ja.
Aber ich meine selbstverständlich, daß die Ausgabe-Sequenzen
der kryptographischen Algorithmen deterministisch sind.
Gleicher Key - gleiche Sequenz.
Wurde bereits durchgekaut.

Ja, eben mathematisch-logisch nur für die Keys, die im \"test vector\" sind, und NICHT für alle anderen Keys, die NICHT im \"test vector\" sind.
Daher \"verified\", nicht \"proven\".

Und wieder das Nichterkennen der Semantik der Sprache.
Das ist offenbar ein Tick von Dir.

Trotzdem kann man von vielen Algorithmen z.B. nicht einmal theoretisch beweisen, daß sie jemals enden (Halteproblem). Ergo kann man dies und auch das Gegenteil auch durch die besten Tests nicht beweisen.

Irrelevant.
Es geht um die Korrektheit einer Implementation nur der aufgeführten kryptographischen Algorithmen.

Wenn etwas *grundsätzlich* nicht funktioniert, kann es im Einzelfall auch nicht funktionieren.

Es geht um die Korrektheit einer Implementation nur der aufgeführten kryptographischen Algorithmen.
Das ist der Kontext!

|We, the designers of Rabbit, hereby state that no hidden weaknesses have
|been inserted by us in the Rabbit algorithm.

Das beruhigt ungemein.

Du versuchst, die Entwickler lächerlich zu machen.

Sorry, aber der Satz fordert das ja geradezu heraus.

Eventuell, wenn man die Dokumentationen der Entwickler nicht ausreichend kennt.

|The key expansion stage guarantees a one-to-one correspondence be-
|tween the key, the state and the counter, which prevents key redun-
|dancy. It also distributes the key bits in an optimal way to prepare
|for the the system iteration.
|The correctness of the code on different platforms is verified by generating and comparing test vectors.

Tja, das würde ich gerne mit ihnen diskutieren.
Ich finde gerade keine Email-Adresse, aber das bekomme ich hin!

Vielleicht machtest Du Dich damit lächerlich.

Schau\'n \'mer mal ... Mail ist \'raus. Jan (unser Sohn) sei Dank für den Verweis auf Mettes Email-Adresse.

Ich habe etwa 100 Seiten nur zu Rabbit gelesen.
Und ich vertraue diesen Entwicklern - die haben mich überzeugt.

Ich zweifele ihren Code ja auch gar nicht an. Was ich anzweifele sind Deine Behauptungen, man könne durch Testen die Korrektheit beweisen und da sprechen ALLE dagegen, bis auf Du.

Nein, die Entwickler sagen das auch.
Du willst das jedoch nicht wahrhaben und spielst daher mit sprachlicher Semantik herum.
Du kennst einfach nicht die Natur der konkret implementierten Algorithmen.
Das macht es schwierig bis unmöglich, Eigenschaften zu erkennen.

Es ist dann der Beweis erbracht, daß die vorgenommene Implementation
werte-mäßig identisch mit der Referenz-Implementation der Algorithmus-Entwickler ist.

Nochmals: Nein, es dadurch nur der Beweis erbracht, daß der Code bei den vom Entwickler vorgegebenen Eingabedaten die erwarteten Ausgabedaten erzeugt. Nichts anderes.

Erneut falsche Behauptung.
Beweise zur Abwechslung doch mal Deine Behauptung.

Wie bitte soll den durch das Testen mit von den Entwicklern vorgegebenen Test-Vektoren bewiesen werden, daß Elemente, die NICHT in den Test-Vektoren enthalten sind, auch die korrekten Ergebnisse liefern?

Aufgrund des spezifischen Verhaltens des jeweiligen Algorithmus\'.
Diese Algorithmen können aufgrund ihres Aufbaus nicht anders.

Nunja, ich verstehe jetzt von kryptologischen Algorithmen nicht sonderlich viel, aber daß sie interne an diversen Stellen die Daten der \"test vector\"en kräftig durcheinander würfeln, sollte klar sein. Und jetzt aus \"mit dem Wert m kommt das Erwartete heraus\" und \"mit dem Wert n kommt das Erwartete heraus\" zu schließen, daß dann auch für alle Werte zwischen m und n das Erwartete heraus kommt, ist eben ziemlich gewagt.

Das ist nicht gewagt, sofern man die Algorithmen implementiert kennt.
Die Entwickler sprechen auch von einer eins-zu-eins-Korrespondenz, die die Algorithmen durchläuft.
Ich habe diese Korrespondenz längst identifiziert.
Ich - fast alle Anderen nicht.

> Wenn wir uns darauf einigen könnten, daß es nicht möglich ist, durch Testen die Korrektheit eines Codes (d.h. Algorithmus UND Implementation) zu *beweisen*, dann könnten wir diese Debatte beenden.

Da die Entwickler das behaupten und ich ihnen dabei folge und deren Aussagen in der
Implementation erkannt habe, muß ich bei meinem Standpunkt bleiben.

[... ...]
Ich habe u.a. die Bücher von Knuth.

Ja, die sind gut.
Was sagt Knuth denn zum Testen?

Ich arbeite jetzt nicht diese Bücher durch...

Brauchst Du nicht, im \"Fundamental Algorithms\" Steht schon im ersten Kapitel \"Basic Concepts\" ein Beweis und der besteht nicht aus einzelnen Werten sondern ist ein mathematisch-logischer Beweis, daß der Algorithmus (Euklids Algorithmus zur Berechnung des größten gemeinsamen Teilers) korrekt ist. Bei meiner Softcover-Ausgabe von 1973 ab Seite 14.

Wozu auch?, wenn ich spezifische, zum Algorithmus passende Testprozeduren habe!

Da ist noch was: hast Du schon mal darüber nachgedacht, daß die Entwickler *selber* diese Test-Vektoren bestimmt haben? Und ist Dir vielleicht mal der Gedanke gekommen, daß man als Entwickler einem gewissen \"Bias\" unterworfen ist, da.h. man tendiert dazu, in eine Richtung zu denken?

|The correctness of the code on different platforms is verified by generating and comparing test vectors.

Da steht das Wort \'generating\'.
Die generieren die Test-Vektoren mittels in deren Kreisen bekannter Software.
Diese Leute sind halt in jeder Hinsicht professionell!
Das habe ich schon vor langer Zeit erkannt.
Deshalb vertraue ich deren Arbeiten auch.

http://www.informit.com/articles/article.aspx?p=1193856
\"As to your real question, the idea of immediate compilation and \"unit tests\" appeals to me only rarely, when I’m feeling my way in a totally unknown environment and need feedback about what works and what doesn’t.\"
OK, es geht um \"Unit Tests\", aber auch das sind Tests und er lehnt sie ab!

Ein mathematischer Beweis ist bei allen Algorithmen des Kontextes prinzipiell unmöglich.
Fehler werden gegebenenfalls lange Zeit nach Veröffentlichung des Algo von untersuchenden Experten mitgeteilt.

Die _Entwickler_ wissen, daß wenn alle Tests Übereinstimmung ergeben, auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden. (s.o.)

Das wage ich zu bezweifeln. Schau\'n \'mer mal, ob unser Ältester mir die Adresse von Mette besorgen kann, dann frage ich sie.

Es kann sein, daß sie als eine von vier Entwicklern nicht alle Fragen beantworten kann.

Schau\'n \'mer mal. Ich hoffe ja, daß sie meine Frage weiterleiten wird, wenn sie sie schon nicht selber beantworten kann.

Wir befinden uns nun im Bereich der Haarspalterei, des Unsinns, des Irrsinns.

Nein, wir befinden uns hier im Bereich der Hybris.

Falsch.
Ich bin ganz konkret praxisbezogen ziemlich kenntnisreich auf diesem Gebiet.

Wie gesagt: Hybris.

Nein, ich bin ziemlich kenntnisreich auf diesem Gebiet.
Das bedeutet, daß ich deutlich mehr weiß, als die große Mehrheit.
Ein Experte bin ich nicht für diese Algorithmen - allerdings für die Sprache C.

Irrelevant und überheblich ... eben Hybris. Und die ist insbesondere im Bereicht der Sicherheit lebensgefährlich.

Ich habe 15 Jahre lang erfolgreich Software auch für Hochsicherheitsbereiche entwickelt.
Auf Anhieb korrekt.

Hast Du einen Tick hinsichtlich \'Hybris\'?
Niemand, der etwas kann, darf sagen, daß er dies kann, sonst ist er an Hybris erkrankt?

[...]

Nein, in erster Instanz werden Brücken *berechnet*. Die Statiker *berechnen*, wie viel Beton und wie viel Armierung und sonstiges da \'rein muß, damit eine Brücke mit einer bestimmten Spannweite eine bestimmte Last aufnehmen kann. Am Ende wird, um das noch einmal zu *verifizieren* ein Belastungstest gemacht. Aber wenn das nicht *berechnet* ist, dann würde kein LKW-Fahrer darüber fahren wollen.

Diese Berechnungen werden aber begutachtet und eventuell offiziell abgenommen.
Das ist in \"bewiesenermaßen korrekt gebaut\" enthalten.
Du willst wieder Haare spalten.

Nein, Du willst mir partout widersprechen. Genau das habe ich geschrieben: Brücken werden nicht einfach so gebaut und dann mit LKW getestet, sie werden berechnet, daß sie der Belastung stand halten, dann werden sie gebaut und dann fährt man noch mal mit einer Kolonne LKW \'drüber um das zu ... *verifizieren*.
Leider ist \"mein Statiker\" (Schwiegerpapa) schon vor über 30 Jahren verstorben, sonst hätte ich ihn gefragt, wie so etwas genau abläuft.

Architekten haben im Beruf viel mit Statik-Berechnungen zu tun.
Die wissen z.B., daß in irgendeiner Wohnung keine Steinplatten anstelle von Teppichboden
gelegt werden dürfen.
Garantien gibt es da nicht, deshalb muß es Abschlußtests und zyklische Prüfungen geben.

Kräne werden z.B. mit der doppelten nominellen Belastung lang genug geprüft.
Autoreifen halten meist etwa 30 bar aus, bis sie platzen.


--
Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
http://www.schellong.de/c.htm http://www.schellong.de/c2x.htm http://www.schellong.de/c_padding_bits.htm
http://www.schellong.de/htm/bishmnk.htm http://www.schellong.de/htm/rpar.bish.html http://www.schellong.de/htm/sieger.bish.html
http://www.schellong.de/htm/audio_proj.htm http://www.schellong.de/htm/audio_unsinn.htm http://www.schellong.de/htm/tuner.htm
http://www.schellong.de/htm/string.htm http://www.schellong.de/htm/string.c.html http://www.schellong.de/htm/deutsche_bahn.htm
http://www.schellong.de/htm/schaltungen.htm http://www.schellong.de/htm/rand.htm http://www.schellong.de/htm/bsd.htm
 
On 03/30/2022 10:19, Volker Bartheld wrote:
On Tue, 29 Mar 2022 20:04:54 +0200, Josef Moellers wrote:
On 29.03.22 15:14, Helmut Schellong wrote:
[... ...]

Wie bitte soll den durch das Testen mit von den Entwicklern vorgegebenen
Test-Vektoren bewiesen werden, daß Elemente, die NICHT in den
Test-Vektoren enthalten sind, auch die korrekten Ergebnisse liefern?

Allein die Tatsache, daß _Entwickler_ ihr Produkt testen...

Ich finde es frappierend und unprofessionell, hartnäckig zu ignorieren, daß
die Entwickler der Kontext-Algorithmen all ihre jeweiligen Angaben NUR zu den
von ihnen entwickelten Algorithmen machen.
In diesem maximal engen Umfeld können sie auch Angaben machen (und garantieren),
die sie außerhalb dieses maximal engen Umfelds eben nicht garantieren könnten.

Diese Tatsache will man einfach nicht sehen und wahrhaben.
Es wird der globale Weltkontext präferiert, in dem freizügig alles in Frage
gestellt werden kann, um argumentativ weiterzukommen.
(Weil einfach keine oder nur beschränkte Kenntnisse zum Ziel vorhanden sind.)

Mehr oder weniger gut. Vielleicht können wir das Thema nun zu Grabe tragen.
Einen großen Schaden wird unser Universalgenie wohl kaum anrichten können.

Einen nennenswerten Schaden habe ich noch nie angerichtet.
Meine Entwicklungen hatten stets den Sollnutzen erbracht.


--
Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
http://www.schellong.de/c.htm http://www.schellong.de/c2x.htm http://www.schellong.de/c_padding_bits.htm
http://www.schellong.de/htm/bishmnk.htm http://www.schellong.de/htm/rpar.bish.html http://www.schellong.de/htm/sieger.bish.html
http://www.schellong.de/htm/audio_proj.htm http://www.schellong.de/htm/audio_unsinn.htm http://www.schellong.de/htm/tuner.htm
http://www.schellong.de/htm/string.htm http://www.schellong.de/htm/string.c.html http://www.schellong.de/htm/deutsche_bahn.htm
http://www.schellong.de/htm/schaltungen.htm http://www.schellong.de/htm/rand.htm http://www.schellong.de/htm/bsd.htm
 
On 30.03.22 13:36, Helmut Schellong wrote:
On 03/30/2022 09:34, Josef Moellers wrote:

On 30.03.22 02:02, Helmut Schellong wrote:
On 03/29/2022 20:04, Josef Moellers wrote:

On 29.03.22 15:14, Helmut Schellong wrote:
On 03/29/2022 09:39, Josef Moellers wrote:

On 28.03.22 22:29, Helmut Schellong wrote:
On 03/28/2022 20:23, Thomas Prufer wrote:
On Mon, 28 Mar 2022 15:28:20 +0200, Helmut Schellong
rip@schellong.biz> wrote:

Es ist _ganz generell_ richtig, was Du schreibst.
Du ignorierst jedoch die konkrete Praxis mit genau den
Algorithmen, um die es hier geht.

Diese hatte ich aufgelistet:
    |Die Kern-Algorithmen sind nicht selbst entwickelt.
    |Ich habe u.a. die Algorithmen Rabbit, Spritz, sha2_256,
sha2_512,
    |sha3_256, sha3_512 (Keccak) in meine Shell bish
implementiert.
    |Diese Algorithmen sind alle kryptographisch.

In der Implementierungsvorschrift der jeweiligen Entwickler der
Algorithmen
ist auch meist eine Testprozedur durch die Entwickler angegeben.
Diese habe ich jeweils durchgeführt!
Mit jeweils demjenigen Ergebnis, das Korrektheit beweist!
Hatte ich mehrfach gepostet - und wurde jeweils ignoriert.
Korrekter und beweiskräftiger geht es nicht!

Das wurde ignoriert weil es kein Beweis ist...

Beweis für was?

\"das Korrektheit beweist!\"

Es ist allgemein bekannt, daß man mit einem Test NIEMALS die
KORREKTHEIT sondern nur die UNKORREKTHEIT beweisen kann, nämlich
wenn der Test fehl schlägt.
Du kannst so lange Testen, wie Du willst, Du kannst 100%
Testabdeckung erreichen, aber Du wirst dadurch niemals beweisen
können, daß der Test nicht bei der nächsten Iteration fehl schlägt.
Der *Beweis* der Korrektheit eines Algorithmus oder seiner
Implementation (im Folgenden \"der Code\") ist eine nicht-triviale,
in der Regel mathematische Tätigkeit.

Es gibt tatsächlich Tests, die eine Korrektheit nicht beweisen können.
Das gilt jedoch nicht für kryptographische Algorithmen, die hier
aufgelistet sind.

Nein. Es gibt keinen Test, der die Korrektheit eines Codes (d.h.
Algorithmus UND Implementation) *beweisen* kann!
Das ist allgemein bekannt und ich möchte mal behaupten, dessen sind
sich die Entwickler des Codes auch bewußt.

Nein, diese Entwickler sagen das Gegenteil.
Habe ich gepostet - wurde beharrlich ignoriert.

|This is a set of test vectors for conformance testing,
|The correctness of the code on different platforms is verified by
generating and comparing test vectors.

Seufz ... Den Unterschied zwischen \"verified\" und \"proven\" ist Dir
bekannt?

Du und mindestens ein Anderer verstehen die Semantik der Sprache nicht
richtig.

\'verified\' kann mit \'nachgewiesen\' übersetzt werden.
Der Satzgegenstand ist die \'correctness of the code\'.
Diese wird nachgewiesen durch Vergleich mit Test-Vektoren.
Wie oft muß ich das noch schreiben.

Ja, von mir aus, wenn\'s Dich glücklich macht.

Plonk.
 
On Tue, 29 Mar 2022 15:14:21 +0200, Helmut Schellong <rip@schellong.biz> wrote:

Die Entwickler haben geeignete Tests vorgegeben, um die Korrektheit beweisen zu können.
Die Entwickler wissen, daß wenn alle Tests Übereinstimmung ergeben, auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden.
Die Entwickler kennen ihre Entwicklung in dieser Hinsicht ganz genau.
Schließlich sind die Algorithmen deterministisch.

Das ist falsch, denn der Algorithmus

if Testverktor1 then return (Ergebnis-Testvektor1)
else
if Testverktor2 then return (Ergebnis-Testvektor2)
else ... usw usf.
else return(42)

erfüllt die Tests, ist aber augenscheinlich falsch, denn es liefert 42 für alle
nicht-Testvektoren.

Obiges ist ein *Beweis*, merke ich hier an...


Thomas Prufer
 
On Wed, 30 Mar 2022 09:34:31 +0200, Josef Moellers
<josef.moellers@invalid.invalid> wrote:

Ganz einfach gesagt: es ist mir völlig wurscht, was die Entwickler
*behaupten*, wenn sie es denn überhaupt tun. Fakt ist, daß es in der
Informatik gar nicht mehr diskutiert wird, ob man mit Testen die
Korrektheit *beweisen* kann, es ist Konsens, daß dem NICHT so ist.

.... so wie ich (und viele andere) nicht das beweisen anfangen, wenn wer ein
funktionierendes perpetuum mobile behauptet.

Thomas Prufer
 
On 03/30/2022 14:57, Thomas Prufer wrote:
On Tue, 29 Mar 2022 15:14:21 +0200, Helmut Schellong <rip@schellong.biz> wrote:

Die Entwickler haben geeignete Tests vorgegeben, um die Korrektheit beweisen zu können.
Die Entwickler wissen, daß wenn alle Tests Übereinstimmung ergeben, auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden.
Die Entwickler kennen ihre Entwicklung in dieser Hinsicht ganz genau.
Schließlich sind die Algorithmen deterministisch.

Das ist falsch, denn der Algorithmus

if Testverktor1 then return (Ergebnis-Testvektor1)
else
if Testverktor2 then return (Ergebnis-Testvektor2)
else ... usw usf.
else return(42)

erfüllt die Tests, ist aber augenscheinlich falsch, denn es liefert 42 für alle
nicht-Testvektoren.

Obiges ist ein *Beweis*, merke ich hier an...

Ich sehe einen Syntax-Fehler...


--
Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
http://www.schellong.de/c.htm http://www.schellong.de/c2x.htm http://www.schellong.de/c_padding_bits.htm
http://www.schellong.de/htm/bishmnk.htm http://www.schellong.de/htm/rpar.bish.html http://www.schellong.de/htm/sieger.bish.html
http://www.schellong.de/htm/audio_proj.htm http://www.schellong.de/htm/audio_unsinn.htm http://www.schellong.de/htm/tuner.htm
http://www.schellong.de/htm/string.htm http://www.schellong.de/htm/string.c.html http://www.schellong.de/htm/deutsche_bahn.htm
http://www.schellong.de/htm/schaltungen.htm http://www.schellong.de/htm/rand.htm http://www.schellong.de/htm/bsd.htm
 
Am 30.03.22 um 15:01 schrieb Thomas Prufer:

Ganz einfach gesagt: es ist mir völlig wurscht, was die Entwickler
*behaupten*, wenn sie es denn überhaupt tun. Fakt ist, daß es in der
Informatik gar nicht mehr diskutiert wird, ob man mit Testen die
Korrektheit *beweisen* kann, es ist Konsens, daß dem NICHT so ist.

Das ist elementare Erkenntnistheorie. Du kannst ja auch die These \"alle
Schwäne sind weiß\" nicht durch Testen (Beobachtung beliebig vieler
weißer Schwäne) beweisen - sie ist immer noch falsch, sobald der erste
schwarze Schwan um die Ecke kommt.

... so wie ich (und viele andere) nicht das beweisen anfangen, wenn wer ein
funktionierendes perpetuum mobile behauptet.

Das obendrein...

Hanno

--
The modern conservative is engaged in one of man\'s oldest exercises in
moral philosophy; that is, the search for a superior moral justification
for selfishness.
- John Kenneth Galbraith
 
Am 30.03.2022 um 09:34 schrieb Josef Moellers:

|We, the designers of Rabbit, hereby state that no hidden weaknesses have
|been inserted by us in the Rabbit algorithm.

Das beruhigt ungemein.

Du versuchst, die Entwickler lächerlich zu machen.

Sorry, aber der Satz fordert das ja geradezu heraus.

Nun ja, nachdem ja herauskam daß RSA absichtlich Schwächen eingebaut hat um
eine Hintertür zu haben, wollte man wohl sagen, daß so etwas nicht absichtlich
eingebaut wurde. Versteckte, ungewollte Schwächen kann es dennoch geben.

Wie gesagt: ich gehe davon aus, daß die Entwickler die Korrektheit ihres
Algorithmus\' mathematisch bewiesen haben und lediglich die Korrektheit der
Implementation mittels Tests *verifizieren*.

Das Problem bei Kryptographie ist in der Regel halt eine Seitenkanalattacke,
die die mathematisch korrekte Arbeitsweise durch Nebeneffekte schwächt. Dazu
gehören Ablaufzeiten, Stromverbrauchsmessungen, Anzahl und Art von
Speicherzugriffen und dadurch bedingte EM-Abstrahlungen etc. Spezielle
Kryptoprozessoren sind seit langem erfunden und werden benutzt, sie verstecken
einiges davon durch stets gleichbleibenden Stromverbrauch, stets
gleichbleibend isochrone Speicherzugriffe etc.

Unsere Sicherheitssoftware läuft in einem HSM mit Kryptoprozessor. Aber wir
entwickeln die grundlegenden Kryptographiefunktionen nicht selber, da gibt es
fertige Module für Elliptic Curves, RSA, AES, DES etc. Was von uns kommt sind
die konkreten Nutzungen der Basisfunktionen und der ganze Glue-Layer
drumherum, wie Padding.
Zum Beispiel Umschlüsseln einer PIN wird mit 2 Anwendungsfunktionen gemacht:
1. Entschlüsseln des verschlüsselten PIN-Blockes und Neuverschlüsselung in ein
verschlüsseltes Zwischenergebnis, dieses bekommt die Anwendung. Das
Zwischenergebnis ist mit einem temporären Schlüssel verschlüsselt der nur in
dem konkreten HSM für begrenzte Zeit zur Verfügung steht.
2. Verschlüsseln eines verschlüsselten Zwischenergebnisses zu einem neuen
PIN-Block, die Anwendung bekommt als Ergebnis den neu verschlüsselten und ggf.
umgeformten PIN-Block.
Für diese beiden Funktionen alleine gibt es mehr als tausend Tests.
Das erstellte Softwaremodul muß für jede Version sicherheitsbegutachtet und
zertifiziert werden, man ist also bemüht fehlerarme Versionen zu erstellen,
sonst wird es teuer (OK, das ist das geringere Problem) und es dauert jedesmal
einige Zeit bis die Begutachtung durch ist (das kann größere Probleme machen).

Bernd
 
On 3/30/22 18:10, Bernd Laengerich wrote:
Das Problem bei Kryptographie ist in der Regel halt eine
Seitenkanalattacke, die die mathematisch korrekte Arbeitsweise durch
Nebeneffekte schwächt. Dazu gehören Ablaufzeiten,
Stromverbrauchsmessungen, Anzahl und Art von Speicherzugriffen und
dadurch bedingte EM-Abstrahlungen etc. Spezielle Kryptoprozessoren sind
seit langem erfunden und werden benutzt, sie verstecken einiges davon
durch stets gleichbleibenden Stromverbrauch, stets gleichbleibend
isochrone Speicherzugriffe etc.

Bisher hat sich leider oft gezeigt, daß obige Behauptungen nur bedeuten,
daß man noch nicht genau genug gemessen hat. Mit Glitching hat man auch
schon einigen als sicher verkauften Chips Daten entlocken können.

Gerrit
 
On 03/30/2022 14:57, Thomas Prufer wrote:
On Tue, 29 Mar 2022 15:14:21 +0200, Helmut Schellong <rip@schellong.biz> wrote:

Die Entwickler haben geeignete Tests vorgegeben, um die Korrektheit beweisen zu können.
Die Entwickler wissen, daß wenn alle Tests Übereinstimmung ergeben, auch alle weiteren
denkbaren Test-Vektoren zwangsweise Übereinstimmung ergeben würden.
Die Entwickler kennen ihre Entwicklung in dieser Hinsicht ganz genau.
Schließlich sind die Algorithmen deterministisch.

Das ist falsch, denn der Algorithmus

if Testverktor1 then return (Ergebnis-Testvektor1)
else
if Testverktor2 then return (Ergebnis-Testvektor2)
else ... usw usf.
else return(42)

erfüllt die Tests, ist aber augenscheinlich falsch, denn es liefert 42 für alle
nicht-Testvektoren.

Obiges ist ein *Beweis*, merke ich hier an...

Algorithmus:

y= 10*(x+1)+5; x=0..9999; (Referenz-Implementation)

Implementationsfehler:
10*(x+1)-5
10*(x+1)+4
11*(x+1)+5
10+(x+1)+5
10-(x+1)+5
9*(x+1)+5
10-(x+1)-5
10*(x+1)*5

Trotzdem reicht ein Test x=0 y=15 aus, um die Korrektheit
der Implementation zu beweisen.
Jeder beliebige einzelne Test reicht dazu aus!
Beispielsweise x=9975 y=99765 wird nur von einer korrekten Implementation generiert.

Die Entwickler eines Algorithmus werden fast immer in der Lage sein, ein einfaches
Testverfahren zum Beweis einer korrekten Implementation auszuarbeiten.
Sie kennen ihren Algorithmus!
In diesem Fall sind alle existierenden allgemeinen Regeln in der Informatik, die
einen Beweis durch Test ausschließen, ungültig im Kontext des betreffenden Algorithmus.

Auch zum Algorithmus Rabbit wurden Testdaten bereitgestellt, die aufgrund der
Eigenschaften des Algorithmus durch ihre Verwendung höchstwahrscheinlich einen Beweis
einer korrekten Implementierung feststellen können.

============================================================================Appendix A: Test Vectors

This is a set of test vectors for conformance testing, given in octet
form. For use with Rabbit, they have to be transformed into integers
by the conversion primitives OS2IP and I2OSP, as described in [5].

A.1. Testing without IV Setup

key = [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
S[0] = [B1 57 54 F0 36 A5 D6 EC F5 6B 45 26 1C 4A F7 02]
S[1] = [88 E8 D8 15 C5 9C 0C 39 7B 69 6C 47 89 C6 8A A7]
S[2] = [F4 16 A1 C3 70 0C D4 51 DA 68 D1 88 16 73 D6 96]

key = [91 28 13 29 2E 3D 36 FE 3B FC 62 F1 DC 51 C3 AC]
S[0] = [3D 2D F3 C8 3E F6 27 A1 E9 7F C3 84 87 E2 51 9C]
S[1] = [F5 76 CD 61 F4 40 5B 88 96 BF 53 AA 85 54 FC 19]
S[2] = [E5 54 74 73 FB DB 43 50 8A E5 3B 20 20 4D 4C 5E]

key = [83 95 74 15 87 E0 C7 33 E9 E9 AB 01 C0 9B 00 43]
S[0] = [0C B1 0D CD A0 41 CD AC 32 EB 5C FD 02 D0 60 9B]
S[1] = [95 FC 9F CA 0F 17 01 5A 7B 70 92 11 4C FF 3E AD]
S[2] = [96 49 E5 DE 8B FC 7F 3F 92 41 47 AD 3A 94 74 28]

A.2. Testing with IV Setup

mkey = [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
iv = [00 00 00 00 00 00 00 00]
S[0] = [C6 A7 27 5E F8 54 95 D8 7C CD 5D 37 67 05 B7 ED]
S[1] = [5F 29 A6 AC 04 F5 EF D4 7B 8F 29 32 70 DC 4A 8D]
S[2] = [2A DE 82 2B 29 DE 6C 1E E5 2B DB 8A 47 BF 8F 66]

iv = [C3 73 F5 75 C1 26 7E 59]
S[0] = [1F CD 4E B9 58 00 12 E2 E0 DC CC 92 22 01 7D 6D]
S[1] = [A7 5F 4E 10 D1 21 25 01 7B 24 99 FF ED 93 6F 2E]
S[2] = [EB C1 12 C3 93 E7 38 39 23 56 BD D0 12 02 9B A7]

iv = [A6 EB 56 1A D2 F4 17 27]
S[0] = [44 5A D8 C8 05 85 8D BF 70 B6 AF 23 A1 51 10 4D]
S[1] = [96 C8 F2 79 47 F4 2C 5B AE AE 67 C6 AC C3 5B 03]
S[2] = [9F CB FC 89 5F A7 1C 17 31 3D F0 34 F0 15 51 CB]

Appendix B: Debugging Vectors

The following set of vectors describes the inner state of Rabbit
during key and iv setup. It is meant mainly for debugging purposes.
Octet strings are written according to I2OSP conventions.

B.1. Testing Round Function and Key Setup

key = [91 28 13 29 2E ED 36 FE 3B FC 62 F1 DC 51 C3 AC]

Inner state after key expansion:
b = 0
X0 = 0xDC51C3AC, X1 = 0x13292E3D, X2 = 0x3BFC62F1, X3 = 0xC3AC9128,
X4 = 0x2E3D36FE, X5 = 0x62F1DC51, X6 = 0x91281329, X7 = 0x36FE3BFC,
C0 = 0x36FE2E3D, C1 = 0xDC5162F1, C2 = 0x13299128, C3 = 0x3BFC36FE,
C4 = 0xC3ACDC51, C5 = 0x2E3D1329, C6 = 0x62F13BFC, C7 = 0x9128C3AC

Inner state after first key setup iteration:
b = 1
X0 = 0xF2E8C8B1, X1 = 0x38E06FA7, X2 = 0x9A0D72C0, X3 = 0xF21F5334,
X4 = 0xCACDCCC3, X5 = 0x4B239CBE, X6 = 0x0565DCCC, X7 = 0xB1587C8D,
C0 = 0x8433018A, C1 = 0xAF9E97C4, C2 = 0x47FCDE5D, C3 = 0x89310A4B,
C4 = 0x96FA1124, C5 = 0x6310605E, C6 = 0xB0260F49, C7 = 0x6475F87F

Inner state after fourth key setup iteration:
b = 0
X0 = 0x1D059312, X1 = 0xBDDC3E45, X2 = 0xF440927D, X3 = 0x50CBB553,
X4 = 0x36709423, X5 = 0x0B6F0711, X6 = 0x3ADA3A7B, X7 = 0xEB9800C8,
C0 = 0x6BD17B74, C1 = 0x2986363E, C2 = 0xE676C5FC, C3 = 0x70CF8432,
C4 = 0x10E1AF9E, C5 = 0x018A47FD, C6 = 0x97C48931, C7 = 0xDE5D96F9

Inner state after final key setup xor:
b = 0
X0 = 0x1D059312, X1 = 0xBDDC3E45, X2 = 0xF440927D, X3 = 0x50CBB553,
X4 = 0x36709423, X5 = 0x0B6F0711, X6 = 0x3ADA3A7B, X7 = 0xEB9800C8,
C0 = 0x5DA1EF57, C1 = 0x22E9312F, C2 = 0xDCACFF87, C3 = 0x9B5784FA,
C4 = 0x0DE43C8C, C5 = 0xBC5679B8, C6 = 0x63841B4C, C7 = 0x8E9623AA

Inner state after generation of 48 bytes of output:
b = 1
X0 = 0xB5428566, X1 = 0xA2593617, X2 = 0xFF5578DE, X3 = 0x7293950F,
X4 = 0x145CE109, X5 = 0xC93875B0, X6 = 0xD34306E0, X7 = 0x43FEEF87,
C0 = 0x45406940, C1 = 0x9CD0CFA9, C2 = 0x7B26E725, C3 = 0x82F5FEE2,
C4 = 0x87CBDB06, C5 = 0x5AD06156, C6 = 0x4B229534, C7 = 0x087DC224

The 48 output bytes:
S[0] = [3D 2D F3 C8 3E F6 27 A1 E9 7F C3 84 87 E2 51 9C]
S[1] = [F5 76 CD 61 F4 40 5B 88 96 BF 53 AA 85 54 FC 19]
S[2] = [E5 54 74 73 FB DB 43 50 8A E5 3B 20 20 4D 4C 5E]

B.2. Testing the IV Setup

key = [91 28 13 29 2E ED 36 FE 3B FC 62 F1 DC 51 C3 AC]
iv = [C3 73 F5 75 C1 26 7E 59]

Inner state during key setup:
as above

Inner state after IV expansion:
b = 0
X0 = 0x1D059312, X1 = 0xBDDC3E45, X2 = 0xF440927D, X3 = 0x50CBB553,
X4 = 0x36709423, X5 = 0x0B6F0711, X6 = 0x3ADA3A7B, X7 = 0xEB9800C8,
C0 = 0x9C87910E, C1 = 0xE19AF009, C2 = 0x1FDF0AF2, C3 = 0x6E22FAA3,
C4 = 0xCCC242D5, C5 = 0x7F25B89E, C6 = 0xA0F7EE39, C7 = 0x7BE35DF3

Inner state after first IV setup iteration:
b = 1
X0 = 0xC4FF831A, X1 = 0xEF5CD094, X2 = 0xC5933855, X3 = 0xC05A5C03,
X4 = 0x4A50522F, X5 = 0xDF487BE4, X6 = 0xA45FA013, X7 = 0x05531179,
C0 = 0xE9BC645B, C1 = 0xB4E824DC, C2 = 0x54B25827, C3 = 0xBB57CDF0,
C4 = 0xA00F77A8, C5 = 0xB3F905D3, C6 = 0xEE2CC186, C7 = 0x4F3092C6

Inner state after fourth IV setup iteration:
b = 1
X0 = 0x6274E424, X1 = 0xE14CE120, X2 = 0xDA8739D9, X3 = 0x65E0402D,
X4 = 0xD1281D10, X5 = 0xBD435BAA, X6 = 0x4E9E7A02, X7 = 0x9B467ABD,
C0 = 0xD15ADE44, C1 = 0x2ECFC356, C2 = 0xF32C3FC6, C3 = 0xA2F647D7,
C4 = 0x19F71622, C5 = 0x5272ED72, C6 = 0xD5CB3B6E, C7 = 0xC9183140
============================================================================


--
Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
http://www.schellong.de/c.htm http://www.schellong.de/c2x.htm http://www.schellong.de/c_padding_bits.htm
http://www.schellong.de/htm/bishmnk.htm http://www.schellong.de/htm/rpar.bish.html http://www.schellong.de/htm/sieger.bish.html
http://www.schellong.de/htm/audio_proj.htm http://www.schellong.de/htm/audio_unsinn.htm http://www.schellong.de/htm/tuner.htm
http://www.schellong.de/htm/string.htm http://www.schellong.de/htm/string.c.html http://www.schellong.de/htm/deutsche_bahn.htm
http://www.schellong.de/htm/schaltungen.htm http://www.schellong.de/htm/rand.htm http://www.schellong.de/htm/bsd.htm
 
On 03/30/2022 18:10, Bernd Laengerich wrote:
Am 30.03.2022 um 09:34 schrieb Josef Moellers:

|We, the designers of Rabbit, hereby state that no hidden weaknesses have
|been inserted by us in the Rabbit algorithm.

Das beruhigt ungemein.

Du versuchst, die Entwickler lächerlich zu machen.

Sorry, aber der Satz fordert das ja geradezu heraus.

Nun ja, nachdem ja herauskam daß RSA absichtlich Schwächen eingebaut hat um eine Hintertür zu haben, wollte man wohl sagen, daß so etwas nicht absichtlich eingebaut wurde. Versteckte, ungewollte Schwächen kann es dennoch geben.

Entdeckt wurden bisher (seit 2003) keine.


--
Mit freundlichen Grüßen
Helmut Schellong var@schellong.biz
 

Welcome to EDABoard.com

Sponsor

Back
Top