Zurück   Flashforum > Flex und AIR > Adobe AIR

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-03-2009, 16:57   #1 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
shared secret für REST API in flash / AS3 einbinden = sicherheitsloch?

Ich mache gerade einen adobe air client für rememberthemilk.com , die bieten eine standard REST API bei der alle requests mittels md5 und einem geheimen hash den man als entwickler von rtm bekommt signiert werden, nach dem der user den öffentlichen API key den man von rtm bekommt genehmigt hat.

meine frage ist nur wo geb ich diesen geheimen hash hin. ich denke wenn ich ihn einfach in den code schreibe, könnte er durch decompilierung leicht entdeckt werden. bei einer so simplen sache wie rtm und to do listen ist das jetzt kein drama weil man kann ohne account eh nix damit anstellen, aber ganz grundsätzlich wie würde ich das machen wenn ichs wirklich richtig machen will.

bei wirklichen web applicationen die im browser laufen und REST Apis verwenden kann ichs in den server seitigen code schreiben, aber am desktop. hat da wer erfahrung oder eine lösung.
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 25-03-2009, 17:28   #2 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.407
Eine Frage, die mich seit langem interessiert....

"Kann man Air-Files decompilieren ?
Nico B. ist gerade online   Mit Zitat antworten
Alt 25-03-2009, 17:30   #3 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Wieso sollte man es nicht können? Was kann man nicht dekompilieren?

@Chrillo: PGP
Omega Psi ist offline   Mit Zitat antworten
Alt 26-03-2009, 12:11   #4 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
Omega Psi, ich verstehe deine antwort nicht wirklich. In wieweit hilft mir bei meinem problem PGP. ich kann doch nicht den ganzen source code verschlüsseln, oder? könntest du erklären wie du das meinst?
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 26-03-2009, 13:01   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Nein, natürlich sollst du nicht den Source Code/Byte Code codieren. Macht auch wenig Sinn.

Das was dich wohl interessiert: wie authentifiziere ich mich als Client? Der Client braucht eine eindeutige Möglichkeit sich zu authentifizieren. Das geschieht - mittlerweile - in der Regel mit einem öffentlichen Schlüssel. Den kannst du übers Netz übertragen. Dieser muss dann dem User ausgehändigt werden. Stichwort PKI.

Worauf ich hinaus will: es reicht die Nachrichten sicher ver- und entschlüsseln zu können.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-03-2009, 13:13   #6 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
ich glaub mein erster post bringt nicht klar rüber was ich will.

ich habe schon einen funktionierenden client der sich bei dem Rememberthemilk webservice authentifiziert und anschliessend mittels des geheimen keys die requests an den service signiert und durchführt. mein problem ist nicht dass die ganze server - client kommuntikation funktioniert.

mein problem ist dass ich den geheimen key in den code reinschreiben muss und er damit für jeden der dann später das programm runterlädt(soll gratis für alle sein) das programm decompilieren kann und sich meinen geheimen developer key rausholen kann und damit selbst ein programm machen könnte.

PHP-Code:
public class prog{
    
    private var 
secretKey:String="my secret key" // dass sollte keiner je lesen können
    
    
public function prog(){
        
// do something with the secret key
    
}
    

meine frage ist also, wo gebe ich diesen geheimen hash code hin damit der client ihn hat, er aber nicht durch decomeplierung zugänglich ist. ich könnte ihn zb in die encrypted local storage schreiben. aber dazu müsste ich ihn erst vom client von meinem server laden lassen und den request könnte man auch leicht aus dem code holen.
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 26-03-2009, 13:28   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Das Problem ist also, wie kommt der öffentliche Schlüssel zum Client?

Was nun konkret in deinem Anwendungsfall gemacht werden kann/soll, kann ich so ad hoc nicht sagen.

Was dein Client braucht: einen eigenen öffentlichen Schlüssel zur Authentifizeriung und einen Mechanismus in der Clientsoftware um die Umgebung des Schlüssels mit dem assoziierten Schlüssel zu validieren.

Ich bin aber alles andere als ein Fachmann in dem Bereich.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-03-2009, 13:36   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Ah, ich glaube now i get it... so ungefähr. Aber ich habe keine wirkliche Lösung. In Java würde man Schlüssel in Keystores hinterlegen und diese dann zur Laufzeit auslesen.

Das was du evtl. machen könntest wäre eine Form von Authentifizierung beim Client zu machen um den privaten Schlüssel nutzen zu können?
Omega Psi ist offline   Mit Zitat antworten
Alt 26-03-2009, 13:39   #9 (permalink)
Neuer User
 
Benutzerbild von mohj
 
Registriert seit: Jan 2009
Beiträge: 423
Wieso schickst du deinen Request nicht zuerst an ein eigenes Serverscript, der deinen Key anfügt und von dort aus den Request an die API schickt?
mohj ist offline   Mit Zitat antworten
Alt 26-03-2009, 13:44   #10 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Weil bis dahin die Nachricht lesbar ist.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-03-2009, 13:55   #11 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
das mach ich nicht weill sonst der ganze traffic der application über meinen server laufen würde und das wäre nicht sehr performat da im endeffekt aus einem request immer 2 würden.

ich mach mir jetzt nicht so viel sorgen dass irgendwer wirklich den traffic snifft und dort den key rausholt. es geht hier nur um to do listen und keine bank transaktionen. aber passwörter und derlei dinge haben einfach nix im sourcecode verloren.

aber je mehr ich drüber nachdenke gibt es keine architektur die nicht in irgendeiner form angreifbar wäre wenn ich nicht den key schon versteckt in das programm packe. ich überlege gerade ihn in ein verschlüsseltes sql file packe und das and die app binde. damit kann keiner ausser der app den key auslesen und sollte somit sicher sein.
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 26-03-2009, 14:00   #12 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Wer bekommt denn noch alles deine Applikation?
Omega Psi ist offline   Mit Zitat antworten
Alt 26-03-2009, 14:07   #13 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
die soll öffentlich zugänglich sein, als desktop client eben für den webservice. darin liegt ja der hund. aber das problem kann ja nicht nur meine app haben sondern auch andere. diese art von rest api gibts ja für viele webservices, darum dacht ich dass das problem schon mal wer gelöst hat.
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Alt 26-03-2009, 14:30   #14 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Der Punkt ist halt, dass man die öffentlichen Schlüssel vergeben muss (vgl. Serien Nummern bei Software).

Jeder Nutzer deiner Software muss einen Key anfordern und deine Software muss diesen einlesen.

Wenn mehrere User an einem Rechner deine Software nutzen können, müsstest du eine Userverwaltung einbauen.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-03-2009, 14:42   #15 (permalink)
FireBall
 
Benutzerbild von chrrillo
 
Registriert seit: Jan 2005
Beiträge: 361
das wäre eine technisch mögliche lösung, aber für die größe des projekts leider auch irgendwie in overkill. ist ja nur ein tolisten ding das gratis is, da mit serien nummern und sonstigem herumwerken zahlt sicht nicht aus. aber wenns drauf ankommt führt an sowas wohl kein weg vorbei. danke auf jeden fall :-)
__________________
...mag Schlichtheit

www.chrillo.at

ChRillo nur mit einem R - der Nick war leider schon vergeben
chrrillo ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele