Krypto-Hintergründe von C

OP #8114554

Liebe Mitforisten,

bereits seit einigen Monaten erklärt mir ein Teilnehmer dieses Forums immer wieder gerne, daß die Programmiersprache C etwas habe, das er "Krypto-Hintergründe von C" nennt. Nun kenne ich C zwar bereits seit ungefähr vierzig Jahren zumindest brauchbar und nutze regelmäßig auch Kryptografie, jedoch ist mir nichts bekannt, das sich als "Krypto-Hintergund von C" bezeichnen ließe.

Die mir von dem Teilnehmer empfohlene Lektüre wie das C-Buch von Brian Kerninghan und Dennis Ritchie (K&R) [1] sowie die von ihm aufgeführte Website [2] (Achtung, viel blinkende Werbung) enthalten zu dem Thema Kryptografie zudem rein gar nichts. Am nächsten heran kommt noch das K&R-Buch, das zwar immerhin zweimal das Wort "cryptic" enthält, aber beide Male nicht im Zusammenhang mit Kryptografie.

Nun ist mir zwar bekannt, daß die meisten Kryptoalgorithmen und -Libs heute in der Sprache C implementiert sind, weil sie der kleinste gemeinsame Nenner ist und performanten Code möglich macht. Kann man deswegen aber schon von einem "Krypto-Hintergrund von C" reden? Wie seht Ihr das? Hat die Sprache C einen "Krypto-Hintergrund"?

Vielen Dank für Eure Beiträge zu einer hoffentlich informativen und interessanten Diskussion, viel Spaß! :-)

[1] https://colorcomputerarchive.com/repo/Documents/Books/The%20C%20Programming%20Language%20%28Kernighan%20Ritchie%29.pdf

[2] https://learn-c.org/

#8114567

Sheeva P. schrieb:

bereits seit einigen Monaten erklärt mir ein Teilnehmer dieses Forums immer wieder gerne, daß die Programmiersprache C etwas habe, das er "Krypto-Hintergründe von C" nennt.

Solch eine Behauptung ist einfach nur völlig haltloses Störfeuer und du solltest das einfach ignorieren. Wir leben leider in einem Zeitalter wo jeder Tütenclown jeden Schwachsinn behaupten kann und durch das Internet auch noch eine größere Verbreitung erreicht.

Vielleicht ist es aber auch einfach nur der wiederauferstandene Kryptochef Detlef Granzow (persönlich), der seine fabelhafte Vollbit-Verschlüsselung mit dieser neu-entdeckten, modernen Programmiersprache ›C‹ umgestrickt hat. Dann will ich nichts gesagt haben.

#8114623

Heut wird "Crypto" eigendlich meist mit den Cryptowährungen wie Bitcoin uä.in Verbindung gebracht. Da muß man aufpassen.

C (und C++ ) ist ja ein Hochspracheassembler, der "einigermaßen" portable Programme auf verschiedenen Maschinen ermöglicht. Als viele Cryptoalgorithmen in den 70'iger Jahren entwickelt wurden, war C eine hypermoderne Sprache. Bruce Scneier, Diffi Hellmann ( hab ich das richtig geschrieben?) und andere hatten damals ihre Hoch-zeit. In Schneiers Büchern sind alle Algos in C implementiert, auch die Russen impementierten ihren Standard GOST in C. Da man in C viele Freiheiten hat, sind fast alle Algos ic C implementiert, etwa Bibliotheken zum Verarbeiten riesengroßer Zahlen, zur Faktorisierung von Primzahlen und Anderes, die zum Beispiel in BASIC oder Fortran nur sehr schwer oder gar nicht implementierbar wären.

Vielleicht kommt das angesprochhene "Gerücht" daher?

mfg

(Firma: Starfleet) #8114624

Denis Ritchie war Co-Autor einer Studie im Jahre 1978, die eine "neue" Methode des Bruchs der US-Chiffrie-Maschine M-209 beschrieb. Dieses Paper wurde (angeblich) von der NSA unter Verschluss gehalten.

: Bearbeitet durch User
#8114637

Die Russen und auch die Stasi der DDR haben sich natürlich mit Cryptografie beschäftigt.

Die DDR hatte da ne Niederlassung in Grünheide, wo Progs entwickelt wurden, die dann auf den Rechnern in der Köenicker Wuhlheide auf dem Großrechner dann die "Zahlenelse" befeuerten. Auch Dekodierproggys wurden dann da in C entwickelt.

mfg

#8114650

Norbert schrieb:

Lotta schrieb:

Heut wird "Crypto" eigendlich meist mit den Cryptowährungen wie Bitcoin uä.in Verbindung gebracht.

Ja, von Clowns. Der große Rest weiß, dass das nur ein winziger Teil des großen Ganzen ist. Lotta schrieb:

hab ich das richtig geschrieben?)

Noch nicht einmal Ansatzweise. Außerdem interessiert der mit KI-slop angereicherte Sermon hier nicht im Geringsten.

Upps!! Dann war also mein Urgroßvater, aus dessen Aufzeichnungen und Büchern aus unserer Bibliothek ich dieses Wissen hab eine KI? Man, das wußte ich ja gar nicht!

Woher weißt Du das mein Opa ne KI war?, Warst Du dabei? ;--)

mfg

OP #8114718

Lotta schrieb:

Heut wird "Crypto" eigendlich meist mit den Cryptowährungen wie Bitcoin uä.in Verbindung gebracht.

Die Dinger heißen so, weil kryptografische Algorithmen benutzt werden, übrigens in der Regel altbekannte wie SHA-256 und ECDSA. Und die meisten dieser Algorithmen sind heutzutage überwiegend in C implementiert -- wobei Rust mittlerweile deutlich aufzuholen scheint.

C (und C++ ) ist ja ein Hochspracheassembler,

Naja, hüstel...

der "einigermaßen" portable Programme auf verschiedenen Maschinen ermöglicht. Als viele Cryptoalgorithmen in den 70'iger Jahren entwickelt wurden, war C eine hypermoderne Sprache. Bruce Scneier, Diffi Hellmann ( hab ich das richtig geschrieben?) und andere hatten damals ihre Hoch-zeit.

Als C ca. 1972 veröffentlicht wurde, da war Bruce Schneier gerade 9 Jahre alt. Erst 1985 begann er sein Studium und 9 Jahre später, 1994, ist dann sein Standardwerk "Applied Cryptography" erschienen. Das trägt übrigens den Unterritel "Protocols, Algorithms and Source Code in C", daher wäre es doch verwunderlich, wenn er Code in Assembler, Pascal oder Algol zeigen würde. :-)

C ist fast überall verfüg- und einbindbar, und erlaubt die Erzeugung eines äußerst hardwarenahen, performanten Code. Zudem läßt sich auch optimierter Assemblercode leicht einbinden. Die meisten Betriebssystemkernels sind in C geschrieben, übrigens aus ähnlichen Gründen wie hoher Performance und einer hohen Kontrolle über die genutzten Hardwareressourcen. Außerdem bietet C bestimmte Features, die bei Kryptoalgorithmen nützlich oder gar notwendig sind: Bitmanipulationen und Integers ohne Vorzeichen, um zwei Beispiele zu nennen. C bietet sich für Kryptografie daher einfach besser an, und aus ganz ähnlichen Gründen heute auch Rust.

Aber, und das ist ja die in diesem Thread gestellte Frage: hat C einen "Krypto-Hintergrund", wie der andere Teilnehmer das so standhaft behauptet? Ich lese aus den bisherigen Antworten nicht, daß jemand diese Aussagen unterstützen würde. Daß der Siegeszug von C gleichzeitig mit der Entwicklung vieler Kryptoalgorithmen stattfand, und C gut zur Kryptografie paßt, kann die Aussage des Teilnehmers IMHO auch nicht seriös begründen.

#8114721

Sheeva P. schrieb:

die meisten dieser Algorithmen sind heutzutage überwiegend in C implementiert

Die sind in so ziemlich allen Sprachen implementiert, die aktuell im Einsatz sind. Bei Java und Go weiß ich es mit Sicherheit. Vielleicht habe ich dich missverstanden und du meintest, dass sie initial in C implementiert wurden (?)

Sheeva P. schrieb:

Daß der Siegeszug von C gleichzeitig mit der Entwicklung vieler Kryptoalgorithmen stattfand, und C gut zur Kryptografie paßt, kann die Aussage des Teilnehmers IMHO auch nicht seriös begründen.

Sehe ich auch so

: Bearbeitet durch User
#8114726

Sheeva P. schrieb:

bereits seit einigen Monaten erklärt mir ein Teilnehmer dieses Forums immer wieder gerne, daß die Programmiersprache C etwas habe, das er "Krypto-Hintergründe von C" nennt. Nun kenne ich C zwar bereits seit ungefähr vierzig Jahren zumindest brauchbar und nutze regelmäßig auch Kryptografie, jedoch ist mir nichts bekannt, das sich als "Krypto-Hintergund von C" bezeichnen ließe.

Zum Beispiel die vielen Sicherheitsprogramme, die in C geschrieben sind? Prinzipiell habe ich nichts gegen Bildungskratern bei Leuten. Dann aber gleich panisch werden und mit Beleidigungen um sich zu werfen - oder mit Empörungen - was versprichst du dir davon? oder noch anders: Wovor hast du überhaupt Angst?

OP #8114727

Moritz L. schrieb:

Sheeva P. schrieb:

die meisten dieser Algorithmen sind heutzutage überwiegend in C implementiert

Die sind in so ziemlich allen Sprachen implementiert, die aktuell im Einsatz sind. Bei Java und Go weiß ich es mit Sicherheit.

Stimmt, das sind überwiegend Nachimplementierungen dessen, was zuvor in OpenSSL und Co entwickelt worden ist. Neue Algorithmen sehe ich bisher (noch?) weder in Java noch in Go, oder weißt Du da mehr?

#8114730

Rbx schrieb:

Prinzipiell habe ich nichts gegen Bildungskratern bei Leuten.

Du bist ein typischer Dunning-Kruger-Kandidat.

Ein Beispiel für Deine vorgetäuschte Kompetenz:

Rbx schrieb:

Letztlich sind die 68000er ja auch untergegangen, gerade weil sie nicht so einfach auf Hardware-Ebene programmiert werden können, und weil die Kompatibilität nicht so gut wie beim Intel funktionierte.

(Firma: Starfleet) #8114734

In C gibt es bei den in crypto algo's oft verwendeten zyklischen shifts ("circular shifts") "Fallstricke".

Da zur Zeit der Definition dieser Sprache die Prozessoren hinsichtlich der Rotationsbefehle uneinheitlich waren, hat man keinen speziellen Operator definiert (wie bspw '>>>'), Source-technisch muss man sich diese Bit-rotation aus mehreren bitwise Op's zusammenbasteln. Es ist wohl auch von der -O Stufe abhängig, ob das so effizient wie möglich (also falls von der jeweiligen CPU unterstütz ROR oder ROL) kompiliert wird.

Eventuell kommt dieser Unterschied schon zwischen Cortex M0 und Cortex M3 zu tragen. Deshalb sollte man bei ARM CMSIS-Treiber verwenden.

Bei Shift ohne Rückkopplung gibt es bei einigen Datentypen auch die Beschreibung "Verhalten ist implementierungsabhängig".

: Bearbeitet durch User
(Firma: Hobbytheoretiker) #8114755

Eigentlich ist es schwer verständlich, warum dieser Thread überhaupt eröffnet wurde. Die Antworten dazu gibt ja schon die KI recht ausführlich, wenn genug nachgefragt wird.

Die Maschinennähe von C spielt durchaus eine Rolle, weil damit auch Schutzmechanismen realsiert werden können, die mit anderen Sprachen nicht möglich sind.

Antwort schreiben

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.