Zend_Oauth-SecurityArchitecture.xml 6.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.oauth.introduction.security-architecture">
  5. <title>Architektur der Sicherheit</title>
  6. <para>
  7. OAuth wurde speziell designt um über eine unsichere <acronym>HTTP</acronym> Verbindung zu
  8. arbeiten und deshalb ist die Verwendung von <acronym>HTTPS</acronym> nicht notwendig obwohl
  9. es natürlich wünschenswert wäre wenn es vorhanden ist. Sollte eine <acronym>HTTPS</acronym>
  10. Verbindung möglich sein bietet OAuth die Implementation einer Signaturmethode an welche
  11. PLAINTEXT heißt und verwendet werden kann. Über eine typische unsichere
  12. <acronym>HTTP</acronym> Verbindung muss die Verwendung von PLAINTEXT verhindert werden und
  13. ein alternatives Schema wird verwendet. Die OAuth Spezifikation definiert zwei solcher
  14. Signaturmethoden: HMAC-SHA1 und RSA-SHA1. Beide werden von <classname>Zend_Oauth</classname>
  15. vollständig unterstützt.
  16. </para>
  17. <para>
  18. Diese Signaturmethoden sind recht einfach zu verstehen. Wie man sich vorstellen kann macht
  19. die PLAINTEXT Signaturmethode nichts das erwähnenswert wäre da Sie auf
  20. <acronym>HTTPS</acronym> aufsetzt. Wenn man aber PLAINTEXT über <acronym>HTTP</acronym>
  21. verwenden würde, dann würde ein signifikantes Problem bestehen: Es gibt keinen Weg um
  22. sicherzustellen das der Inhalt einer OAuth-aktivierten Anfrage (welche einen OAuth
  23. Zugriffstoken enthalten würde) beim Routen verändert wurde. Das ist der Fall weil unsichere
  24. <acronym>HTTP</acronym> Anfragen immer das Risiko des Lauschens, von Man In The Middle
  25. (MITM) Attacken, oder andere Risiken haben können in denen eine Anfrage weiterbearbeitet
  26. werden könnten und damit Arbeiten im Sinne des Angreifers ausgeführt werden indem sich
  27. dieser als Originalanwendung maskiert ohne das dies vom Serviceprovider bemerkt wird.
  28. </para>
  29. <para>
  30. HMAC-SHA1 und RSA-SHA1 vermindern dieses Risiko indem alle OAuth Anfragen mit dem originalen
  31. von der Anwendung registrierten Konsumentengeheimnis digital signiert werden. Angenommen nur
  32. der Konsument und der Provider wissen was das Geheimnis ist, dann kann ein Mann in der Mitte
  33. soviele Anfragen verändern wie er will - aber er wird nicht in der Lage sein sie gültig zu
  34. signieren und unsignierte oder ungültig signierte Anfragen würden von beiden Parteien
  35. ausgeschieden werden. Digitale Signaturen bieten deshalb eine Garantie das gültig signierte
  36. Anfragen von der erwarteten Partei kommen und beim Routen nicht verändert wurden. Das ist
  37. der Kern warum OAuth über eine unsichere Verbindung arbeiten kann.
  38. </para>
  39. <para>
  40. Wie diese digitalen Signaturen arbeiten hängt von der verwendeten Methode ab, z.B.
  41. HMAC-SHA1, RSA-SHA1 oder möglicherweise eine andere Methode welche vom Serviceprovider
  42. definiert wird. HMAC-SHA1 ist ein einfacher Mechanismus welcher einen Nachrichten
  43. Authentifizierungscode (MAC) erzeugt indem eine kryptographische Hash Funktion (z.B. SHA1)
  44. in Verbindung mit einem geheimen Schlüssel verwendet wird der nur dem Sender und dem
  45. Empfänger der Nachricht bekannt sind (z.b. das Konsumentengeheimnis von OAuth kombiniert
  46. mit dem authorisierten Zugriffsschlüssel). Dieser Hashing Mechanismus wird den Parametern
  47. und dem Inhalt aller OAuth Anfragen angehängt und zu einem "Basissignatur String"
  48. zusammengefügt wie es von der OAuth Spezifikation definiert ist.
  49. </para>
  50. <para>
  51. RSA-SHA1 operiert auf ähnlichen Prinzipien ausser dass das Geheimnis welches geteilt wird,
  52. wie man es erwarten würde, der private RSA Schlüssel jeder Partei ist. Beide Seiten haben
  53. den öffentlichen Schlüssel des anderen mit dem die digitalen Signaturen geprüft werden. Das
  54. führt verglichen mit HMAC-SHA1 zu einem Riskolevel da die RSA Methode keinen
  55. Zugriffsschlüssel als teil des geteilten Geheimnisses verwendet. Dies bedeutet dass wenn
  56. der private RSA Schlüssel eines Konsumenten kompromitiert ist, sind es alle zugeordneten
  57. Zugriffstoken dieses Konsumenten auch. RSA führt zu einem alles oder gar nichts Schema.
  58. Generell tendiert die Mehrheit der Serviceprovider welche OAuth Authorisierung anbieten
  59. dazu HMAC-SHA1 standardmäßig zu verwenden, und jene welche RSA-SHA1 anbieten können eine
  60. Fallback Unterstützung für HMAC-SHA1 anbieten.
  61. </para>
  62. <para>
  63. Wärend digitale Signaturen zur Sicherheit von OAuth beitragen sind Sie trotzdem für andere
  64. Formen von Attacken angreifbar, wie Replay Attacken welche vorhergehende Anfragen
  65. aufgezeichnet und zu einer Zeit geprüft und signiert wurden. Ein Angreifen können jetzt
  66. exakt die gleiche Anfrage zum Provider wie er will und zu jeder Zeit senden und seine
  67. Ergebnisse auffangen. Das führt zu einem signifikanten Risiko aber es ist recht einfach
  68. sich davor zu schützen - einen eindeutigen String (z.b. eine Nonce) bei allen Anfragen
  69. hinzufügen welcher sich bei jeder Anfrage ändert (dies verändert laufend den Signaturstring)
  70. kann aber niemals wiederverwendet werden weil Provider verwendete Nonces zusammen mit einem
  71. bestimmten Fenster aktiv verfolgen welches vom Timestamp definiert wird der einer Anfrage
  72. auch angehängt wird. Man würde erwarten das wenn die Verfolgung einer bestimmten Nonce
  73. gestoppt wird, das wiederabspielen funktionieren würde, aber das ignoriert den Timestamp
  74. der verwendet werden kann um das Alter einer Anfrage zu ermitteln zu welcher Sie digital
  75. signiert wurde. Man kann also annehmen dass die eine Woche alte Anfrage in einem
  76. Wiederholungsversuch abgespielt wird, auf ähnliche Weise verworfen wird.
  77. </para>
  78. <para>
  79. Als letzter Punkt erwähnt, ist dies keine exzessive Ansicht der Sicherheitsarchitektur in
  80. OAuth. Was passiert zum Beispiel wenn <acronym>HTTP</acronym> Anfragen welche sowohl den
  81. Zugriffstoken als auch das Geheimnis des Konsumenten enthalten abgehört werden? Das System
  82. ist auf der einen Seite von einer klaren Übermittlung von allem abhängig solange
  83. <acronym>HTTPS</acronym> nicht aktiv ist. Deshalb ist die naheliegende Feststellung das
  84. <acronym>HTTPS</acronym>, dort wo es möglich ist zu bevorzugen ist und
  85. <acronym>HTTP</acronym> nur an solchen Orten eingesetzt wird so es nicht anders möglich oder
  86. nicht erschwinglich ist.
  87. </para>
  88. </sect2>