Zend_Oauth-SecurityArchitecture.xml 6.3 KB

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