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ät | Stand | Hinweis |
|---|---|---|
| Datenformate (Schlüssel, Chiffrate, Streams) | unverändert | — |
| Lizenzdateien (gebunden / ungebunden) | neu, additiv | Optionale Felder; ungebundene Lizenzen byte-identisch. |
| Native Bibliotheken / ABI | unverändert | — |
| R8-/Keep-Regeln, Trimming / Linker | Ausgangsstand | — |
| Mindest-Plattform | unverändert | iOS 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ät | Stand | Hinweis |
|---|---|---|
| Datenformate (Schlüssel, Chiffrate, Streams) | unverändert | — |
| Lizenzdateien (gebunden / ungebunden) | unverändert | — |
| Native Bibliotheken / ABI | unverändert | — |
| R8-/Keep-Regeln, Trimming / Linker | Ausgangsstand | — |
| Mindest-Plattform | unverändert | iOS 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ät | Stand | Hinweis |
|---|---|---|
| Datenformate (Schlüssel, Chiffrate, Streams) | neu, additiv | MLS neu; alle bisherigen Formate unverändert. |
| Lizenzdateien (gebunden / ungebunden) | unverändert | — |
| Native Bibliotheken / ABI | geändert | MLS-Kern im xcframework enthalten; nicht ausschließbar. |
| R8-/Keep-Regeln, Trimming / Linker | Ausgangsstand | — |
| Mindest-Plattform | unverändert | iOS 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ät | Stand | Hinweis |
|---|---|---|
| Datenformate (Schlüssel, Chiffrate, Streams) | neu, additiv | Neue Verfahren; RSA-Hybrid seit 1.0.8 im .NET-Format, altes Format lesbar. |
| Lizenzdateien (gebunden / ungebunden) | unverändert | Dateiformat unverändert; Stufen-Auswertung seit 1.0.8 korrigiert. |
| Native Bibliotheken / ABI | geändert | Auslieferung als xcframework; liboqs 0.15.0. |
| R8-/Keep-Regeln, Trimming / Linker | Ausgangsstand | — |
| Mindest-Plattform | unverändert | iOS 15, macOS 12, tvOS 15, watchOS 8; Swift 5.9 |
| Drop-in-Update? | Ja | Code, der Quantum-Fehler als SaQuraError abfing, ergänzt einen Zweig für QuantumOperationError. |