Announcement

Collapse
No announcement yet.

Audioverschlüsselung bei analoger Übertragung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Audioverschlüsselung bei analoger Übertragung

    Ich habe vor kurzem mit Python angefangen und besitze keine besonderen Kryptografie-Kenntnisse.

    Folgendes:
    Ich nehme eine WAV-Datei auf und verschlüssel diese mit AES. Das direkte entschlüsseln dieser Datei funktioniert einwandfrei.
    Nun spiele ich dieses Signal ab (Lautsprecher) und nehme es mit einem Mikrofon wieder auf. Wenn ich diese Datei entschlüssel, erhalte ich jedoch nur eine Datei voller Noise.

    Verliere ich durch die 2-fache Analog/Digital-Wandlung zu viele Informationen um die Datei danach noch zu entschlüsseln?
    Ist AES vielleicht die falsche Verschlüsselung für mein Einsatzgebiet?

  • #2
    Was du da abspielst ist nicht verschlüsselt (zumindest nicht mit AES) sondern du wirst es vor dem abspielen bereits entschlüsselt haben. Insofern gibt es nach dem Abspielen und wieder aufnehmen nichts zu entschlüsseln da es nicht verschlüsselt ist.

    Ist AES vielleicht die falsche Verschlüsselung für mein Einsatzgebiet?
    Was ist den dein Einsatzgebiet. Willst du überhaupt verschlüsseln oder geht es dir eher um eine Art Wasserzeichen?

    Comment


    • #3
      Ich möchte eine Audiodatei oder einen Stream (z.B. mit gesprochenem Text) verschlüsseln, dann über eine analoge Leitung (z.B. Telefon) übertragen und anschließend wieder entschlüsseln. Ob es dabei zu Qualitätsverlusten kommt ist egal, es soll nur die gesprochene Nachricht wieder hörbar sein. Jemand gab mir folgenden Link mit dem Hinweis, das ich es so ähnlich realisieren könnte: http://en.wikipedia.org/wiki/ZX_Spectrum_software#Tape

      Comment


      • #4
        Was hat das mit Python zu tun?
        Es kann dir nicht egal sein, ob es zu Qualitätsverlusten kommt. Das was du über die analoge Leitung sendest sind dann keine Audiosignale, sondern eben die verschlüsselten Daten. Da ist es schon erheblich, wenn ein Byte fehlt. Diese Probleme wurden alle im Zeitalter des Modems (Fehlerkorrekutr u.a.) gelöst. Seit wann ist es bei einer Verschlüsselung irrelevant, ob Bytes verlorengehen. Weiterhn erschließt sich der Verweis auf das alte Betriebssystem nicht. Da liegt nicht zufällig eine Verwechselung mit http://de.wikipedia.org/wiki/ZMODEM vor.
        Zuletzt editiert von Christian Marquardt; 04.01.2013, 14:17.
        Christian

        Comment


        • #5
          Mit Python hat das nichts direkt zu tun, da ich jedoch in dieser Sprache entwickle und eventuell Codeschnipsel folgen könnten, habe ich es hier rein gepackt.
          Weiterhin habe ich kein Allgemeines Forum gesehen (Ausser Datenbanken, aber das passt ja nicht).

          Bezüglich der Qualitätsverluste:
          Du hast mich da falsch Verstanden. Mir ist bewusst, dass durch Verlust von Informationen die Entschlüsselung gestört wird. Was ist meinte war, dass es mir egal ist, ob durch das Ver- & Entschlüsseln, bzw. durch weitere Mechanismen zur Fehlerkorrektur die entschlüsselte Datei im vergleich zum Original verminderte Qualität hat.


          Was ich quasi machen wollte ist ungefähr das hier:
          http://www.cryptomuseum.com/crypto/voice.htm#digital

          Nur ist diese Verschlüsselungsmethode (mit XOR-Operator + pseudo rand()) ja sehr unsicher. Korrigiert mich, falls ich da falsch liege.
          Deshalb wollte ich eine andere Technik nutzen.

          Comment


          • #6
            Was ist dann überhaupt deine Frage? Lt. #1 verschlüsselst du doch mit AES und diese funktioniert?? Ja, XOR ist sicherlich nicht zu empfehlen.
            Christian

            Comment


            • #7
              Das Ver- & Entschlüsseln ansich klappt. Aber nicht mehr, nachdem die Daten "übertragen" wurden.
              Wie in #3 erklärt, möchte ich die verschlüsselte Datei nicht digital (kopieren), sondern auf analogem Weg übertragen (z.B. über ein Telefon, oder eben auch ein Tape. Eigentlich alles, was akustische Signale übertragen kann). Der Verweis auf das alte OS kam sicherlich daher, dass bei diesem die Software ebenfalls auf einem Tape-Deck analog gespeichert war.

              Ich müsste also die Daten, nachdem ich sie verschlüsselt habe in ein Format umwandeln, dass ich mit akustischen Signalen übertragen kann. Danach müssten die Daten wieder umgewandelt werden um sie dann zu entschlüsseln. Allerdings habe ich keinen blassen Schimmer wie?

              Comment


              • #8
                Wenn du Analog übertragen willst musst du dir ein Codierung/Sicherung dieser analogen Übertragung überlegen um diese ohne Fehler wieder herstellen zu können. Genügend Techniken/Modulationsverfahren gibt es ja (siehe DSL-Moden).
                Glaube aber nicht das sowas in Phyhon als SW-Codeschnipsel existiert. Diese Verfahren werden meißtens in Silizium gegossen (bzw. DSP's).

                Comment


                • #9
                  Der ZX Spectrum hat dieses Verfahren ohne DSP realisiert.

                  Since ZX Spectrum had only a rudimentary tape interface, data was recorded using an unusually simple and very reliable modulation, similar to pulse-width modulation but without a constant clock rate. Pulses of different widths (durations) represent 0s and 1s. A "zero" is represented by a ~244 μs pulse followed by a gap of the same duration (855 clock ticks each at 3.5 MHz) for a total ~489 μs;[11] "one" is twice as long, totaling ~977 μs. This allows for 1023 "ones" or 2047 "zeros" to be recorded per second. Assuming an even proportion of each, the resulting average speed was ~1535 bit/s. Higher speeds were possible using custom machine code loaders instead of the ROM routines.
                  Bloß habe ich keinen Schimmer, wie ich das in Python realisieren soll. Hat da jemand eine Idee bzw. einen Hinweis oder Denkanstoß?

                  Comment


                  • #10
                    Das Ver- & Entschlüsseln ansich klappt. Aber nicht mehr, nachdem die Daten "übertragen" wurden.
                    Dann gehen eben bei der Übertragung Daten verloren. Jetzt das auf das Betriebssystem des Spectrum zu gehen ist mehr als grotesk. Es gibt dafür bereits Prüfprotokolle (XModem). Zur noch macht man das rudimentär selbst

                    100 Byte von Sender anfordern
                    Prüfsumme berechenen
                    Wenn ok weiter, ansonsten nochmal übertragen lassen

                    Da Python ja Java kann:
                    http://stackoverflow.com/questions/6...otocol-in-java
                    Christian

                    Comment


                    • #11
                      XMODE (bzw. ZMODEM) gibt es auch als package für Python (http://pypi.python.org/pypi/modem), wie ich sehe. Ich werde mir die Funktionsweise des Protokolls mal ansehen, der von dir vorgeschlagene Weg scheint auf jeden Fall vielversprechend zu sein, danke!

                      Comment


                      • #12
                        Originally posted by Christian Marquardt View Post
                        Dann gehen eben bei der Übertragung Daten verloren. Jetzt das auf das Betriebssystem des Spectrum zu gehen ist mehr als grotesk. Es gibt dafür bereits Prüfprotokolle (XModem). Zur noch macht man das rudimentär selbst

                        100 Byte von Sender anfordern
                        Prüfsumme berechenen
                        Wenn ok weiter, ansonsten nochmal übertragen lassen

                        Da Python ja Java kann:
                        http://stackoverflow.com/questions/6...otocol-in-java
                        Die Frage ist aber ob über 0815 überhaupt nennenswerte Geschwindigkeiten realisierbar sind. Jede Modemübertragung wird erstmal damit beginnen die übertragungsstrecke zu messen um die Charakteristik zu bestimmen (Dämpfung je Frequenz/Abweichungen/...)
                        Ansonst wird man nur mit Bautraten < 100/s rüber kommen wenn man nicht 10* pro erfolgreiche Übertragung benötigt.

                        Comment

                        Working...
                        X