SaQura Swift · Upgrade-Hinweise

Versionen & Kompatibilität — SaQura Swift

Vor dem Update

Aktuelle Version: 1.2.0 · saqura.de/swift · SaQura (binary xcframework) · zur Dokumentation

  • Daten aus jeder über saqura.de ausgelieferten Version (1.0.9 bis 1.2.0) werden von 1.2.0 gelesen; kein Format hat sich in dieser Reihe geändert. RSA-Hybrid-Chiffrate im alten Format (vor 1.0.8) werden weiterhin entschlüsselt.
  • Ihre Lizenzdatei bleibt gültig. Seit 1.2.0 gibt es optionale Bindungsfelder; eine Lizenz ohne diese Felder verhält sich byte-identisch wie zuvor.
  • Das Paket ist ein einzelnes xcframework (etwa 10 MB als ZIP), eingebunden als binaryTarget mit URL und Prüfsumme in Package.swift. Beim Versionswechsel ändern sich URL und Prüfsumme; Xcode meldet eine falsche Prüfsumme als Fehler.

Die Tabellen unter jeder Version beantworten dieselben fünf Fragen in derselben Reihenfolge. „Drop-in-Update: Ja“ heißt: Unser plattformübergreifender Testkorpus hat belegt, dass die neue Version die Daten der vorherigen liest und kein Aufruf geändert werden muss.

Optionale Module

  • Keine ausschließbaren Module. Das xcframework enthält die Post-Quanten-Verfahren (liboqs 0.15.0) und seit 1.1.0 den MLS-Kern; beides ist statisch in die Bibliothek gelinkt.
  • Kein Linker- oder Strip-Aufwand auf Ihrer Seite; das Framework ist fertig gebaut und signiert.

Lizenzen & App-Bindung

  • Ungebundene Lizenzen sind von der App-Bindung nicht betroffen: kein Aufruf ändert sich, keine Neuausstellung nötig.
  • Gebundene Distributions-Lizenzen (ab 1.2.0) prüfen den Bundle Identifier aus Bundle.main; auf macOS zusätzlich, soweit auslesbar, die Team-ID der Code-Signatur. Kein zusätzlicher Aufruf nötig.

1.2.0 · 2026-07-11

App-Bindung für Distributions-Lizenzen (iOS / macOS)

  • Die optionalen Lizenzfelder boundPackage und boundSignature binden eine Distributions-Lizenz an den Bundle Identifier und, wo die Plattform es erlaubt, an die Team-ID der Code-Signatur. Eine kopierte Lizenzdatei in einer fremden App wird bei der Aktivierung abgelehnt (ValidationResult.bindingMismatch). Die Identität kommt aus Bundle.main und dem Security-Framework, nie vom Aufrufer.
  • Vollständig abwärtskompatibel: Die Felder werden nur angehängt, wenn sie belegt sind; ungebundene Lizenzen erzeugen denselben signierten Text wie zuvor und verifizieren unverändert.
KompatibilitätStandHinweis
Datenformate (Schlüssel, Chiffrate, Streams)unverändert
Lizenzdateien (gebunden / ungebunden)neu, additivOptionale Felder; ungebundene Lizenzen byte-identisch.
Native Bibliotheken / ABIunverändert
R8-/Keep-Regeln, Trimming / LinkerAusgangsstand
Mindest-PlattformunverändertiOS 15, macOS 12, tvOS 15, watchOS 8; Swift 5.9
Drop-in-Update?Ja

1.1.1 · 2026-06-14

MLS: Gültigkeitsbeginn von KeyPackages um eine Stunde vorgezogen

  • Ein strikter RFC-9420-Gegenpart lehnte ein SaQura-KeyPackage ab, wenn er es in derselben Sekunde prüfte, in der es erzeugt wurde. Der Gültigkeitsbeginn liegt jetzt eine Stunde zurück. Format und Kryptographie unverändert.
KompatibilitätStandHinweis
Datenformate (Schlüssel, Chiffrate, Streams)unverändert
Lizenzdateien (gebunden / ungebunden)unverändert
Native Bibliotheken / ABIunverändert
R8-/Keep-Regeln, Trimming / LinkerAusgangsstand
Mindest-PlattformunverändertiOS 15, macOS 12, tvOS 15, watchOS 8; Swift 5.9
Drop-in-Update?Ja

1.1.0 · 2026-06-13

MLS-Gruppennachrichten nach RFC 9420 (Pro)

  • Gruppennachrichten mit TreeKEM, Forward Secrecy je Nachricht, Welcome- und Commit-Nachrichten, Signatur über die Secure Enclave und Persistenz des Gruppenzustands. Standard-Suite P-256 (0x0002), interoperabel mit anderen RFC-9420-Implementierungen, geprüft gegen die Testvektoren der MLS-Arbeitsgruppe.
  • Zusätzliche Suite 0xF108 (SaQura-Gen8-Hybrid, X25519 mit ML-KEM-768): beide Seiten müssen SaQura sein; bewusst nicht als Standardsuite ausgewiesen. Gruppe erstellen, KeyPackage erzeugen und beitreten ab Pro; Lesen und Wiederherstellen offen.
  • Das xcframework enthält seitdem den MLS-Kern; die Paketgröße ist entsprechend gewachsen.
KompatibilitätStandHinweis
Datenformate (Schlüssel, Chiffrate, Streams)neu, additivMLS neu; alle bisherigen Formate unverändert.
Lizenzdateien (gebunden / ungebunden)unverändert
Native Bibliotheken / ABIgeändertMLS-Kern im xcframework enthalten; nicht ausschließbar.
R8-/Keep-Regeln, Trimming / LinkerAusgangsstand
Mindest-PlattformunverändertiOS 15, macOS 12, tvOS 15, watchOS 8; Swift 5.9
Drop-in-Update?Ja

1.0.9 · 2026-06-07

Gen8, ML-DSA, SLH-DSA; erste Auslieferung als fertiges xcframework über saqura.de

  • Gen8 (X25519 mit ML-KEM, FIPS 203) über encryptWithQuantum / decryptWithQuantum mit .gen8. Signaturen signWithMLDsa / verifyMLDsaSignature (FIPS 204, .standard / .medium / .highest) und signWithSlhDsa / verifySlhDsaSignature (FIPS 205, 128f / 192f / 256f). Signieren ab Pro, Verifizieren in jeder Stufe. Byte-identisch mit .NET und Kotlin.
  • Gebündeltes liboqs auf 0.15.0 angehoben; FrodoKEM und Classic McEliece unverändert. Auslieferung als signiertes xcframework mit Prüfsumme (binaryTarget in Package.swift) statt als Quelltext.
  • Aus 1.0.8 (Mai 2026): Die Stufen-Zugriffe ApiLicense.is…Available folgen jetzt derselben Regel wie .NET und Kotlin (features 0 bedeutet: Stufe entscheidet); eine Pro-Lizenz mit features 0 wurde zuvor als Frei gelesen. RSA-Hybrid-Format an .NET angeglichen, altes Format wird weiterhin entschlüsselt; PKCS#1-Schlüssel aus .NET werden beim Import automatisch verpackt. Aus 1.0.6 und 1.0.7: typisierte Fehler QuantumOperationError (.keyGeneration / .encryption / .decryption) statt roher Fehler; leere und mit Nullen überschriebene Schlüsselpuffer werden mit SaQuraError.invalidInput abgewiesen.
KompatibilitätStandHinweis
Datenformate (Schlüssel, Chiffrate, Streams)neu, additivNeue Verfahren; RSA-Hybrid seit 1.0.8 im .NET-Format, altes Format lesbar.
Lizenzdateien (gebunden / ungebunden)unverändertDateiformat unverändert; Stufen-Auswertung seit 1.0.8 korrigiert.
Native Bibliotheken / ABIgeändertAuslieferung als xcframework; liboqs 0.15.0.
R8-/Keep-Regeln, Trimming / LinkerAusgangsstand
Mindest-PlattformunverändertiOS 15, macOS 12, tvOS 15, watchOS 8; Swift 5.9
Drop-in-Update?JaCode, der Quantum-Fehler als SaQuraError abfing, ergänzt einen Zweig für QuantumOperationError.