Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WebRTC + Persona

Ryan Seys
August 28, 2013

WebRTC + Persona

Authenticating WebRTC with Mozilla Persona, I presented this talk as an overview of work I completed during my internship at Mozilla during in the summer of 2013.

Ryan Seys

August 28, 2013
Tweet

More Decks by Ryan Seys

Other Decks in Programming

Transcript

  1. RYAN (THAT’S ME!) LOGIN.PERSONA.ORG EXAMPLE.COM LOL OK HEY, PROVE YOU

    ARE [email protected] WHAT IS HIS FAVOURITE COLOUR? YO, PERSONA.ORG, CAN YOU VERIFY THIS GUY IS [email protected]
  2. RYAN (THAT’S ME!) HERE’S MY ANSWER FOR PROOF LOGIN.PERSONA.ORG EXAMPLE.COM

    LOL OK HEY, PROVE YOU ARE [email protected] WHAT IS HIS FAVOURITE COLOUR? ORANGE! YO, PERSONA.ORG, CAN YOU VERIFY THIS GUY IS [email protected]
  3. RYAN (THAT’S ME!) HERE’S MY ANSWER FOR PROOF LOGIN.PERSONA.ORG EXAMPLE.COM

    *ASSERTION* EMAIL: [email protected] ORIGIN: EXAMPLE.COM CRYPTOSTUFF: SUPERCRYPTOSAUCE LOL OK HEY, PROVE YOU ARE [email protected] WHAT IS HIS FAVOURITE COLOUR? ORANGE! YO EXAMPLE.COM, HERE’S PROOF YO, PERSONA.ORG, CAN YOU VERIFY THIS GUY IS [email protected]
  4. RYAN (THAT’S ME!) HERE’S MY ANSWER FOR PROOF LOGIN.PERSONA.ORG EXAMPLE.COM

    *ASSERTION* EMAIL: [email protected] ORIGIN: EXAMPLE.COM CRYPTOSTUFF: SUPERCRYPTOSAUCE LOL OK HEY, PROVE YOU ARE [email protected] WHAT IS HIS FAVOURITE COLOUR? ORANGE! YO EXAMPLE.COM, HERE’S PROOF ASSERTION = PROOF OF IDENTITY YO, PERSONA.ORG, CAN YOU VERIFY THIS GUY IS [email protected]
  5. EXAMPLE.COM EXAMPLES: VIDYO, SKYPE, GOOGLE HANGOUTS, FACETIME TRADITIONAL VIDEO CALLS

    ALL THE DATA BELONG TO US! NSA YOUR DATA YOUR FRIEND’S DATA ??? :( ALICE BOB
  6. The interwebz ALL YOUR VIDEO/ AUDIO DATA! (ARE BELONG TO

    YOU) WEBRTC IT IS DIFFERENT ALICE BOB
  7. MAKING A WEBRTC CALL BOB ALICE EXAMPLE.COM OFFER TO BOB

    TELLS BOB HOW TO TALK DIRECTLY TO ALICE = CREATE_OFFER() ==> OFFER TO BOB
  8. MAKING A WEBRTC CALL BOB ALICE EXAMPLE.COM OFFER TO BOB

    OFFER TO BOB TELLS BOB HOW TO TALK DIRECTLY TO ALICE = CREATE_OFFER() ==> OFFER TO BOB
  9. MAKING A WEBRTC CALL BOB ALICE EXAMPLE.COM OFFER TO BOB

    OFFER TO BOB OFFER TO BOB TELLS BOB HOW TO TALK DIRECTLY TO ALICE = CREATE_OFFER() ==> OFFER TO BOB
  10. MAKING A WEBRTC CALL BOB ALICE EXAMPLE.COM OFFER TO BOB

    OFFER TO BOB OFFER TO BOB TELLS BOB HOW TO TALK DIRECTLY TO ALICE = CREATE_OFFER() ==> OFFER TO BOB CREATE_ANSWER(OFFER) ==> ANSWE R TO
  11. MAKING A WEBRTC CALL BOB ALICE EXAMPLE.COM OFFER TO BOB

    OFFER TO BOB OFFER TO BOB TELLS BOB HOW TO TALK DIRECTLY TO ALICE = TELLS ALICE HOW TO TALK TO BOB = ANSWER TO ALICE CREATE_OFFER() ==> OFFER TO BOB CREATE_ANSWER(OFFER) ==> ANSWE R TO
  12. MAKING A WEBRTC CALL BOB ALICE EXAMPLE.COM OFFER TO BOB

    OFFER TO BOB ANSWER TO ALICE OFFER TO BOB TELLS BOB HOW TO TALK DIRECTLY TO ALICE = TELLS ALICE HOW TO TALK TO BOB = ANSWER TO ALICE CREATE_OFFER() ==> OFFER TO BOB CREATE_ANSWER(OFFER) ==> ANSWE R TO
  13. MAKING A WEBRTC CALL BOB ALICE EXAMPLE.COM OFFER TO BOB

    ANSWER TO ALICE OFFER TO BOB ANSWER TO ALICE OFFER TO BOB TELLS BOB HOW TO TALK DIRECTLY TO ALICE = TELLS ALICE HOW TO TALK TO BOB = ANSWER TO ALICE CREATE_OFFER() ==> OFFER TO BOB CREATE_ANSWER(OFFER) ==> ANSWE R TO
  14. MAKING A WEBRTC CALL BOB ALICE EXAMPLE.COM OFFER TO BOB

    ANSWER TO ALICE OFFER TO BOB ANSWER TO ALICE OFFER TO BOB TELLS BOB HOW TO TALK DIRECTLY TO ALICE = TELLS ALICE HOW TO TALK TO BOB = ANSWER TO ALICE + BOB & ALICE TALK DIRECTLY TO EACH OTHER = CREATE_OFFER() ==> OFFER TO BOB CREATE_ANSWER(OFFER) ==> ANSWE R TO
  15. MAKING A WEBRTC CALL BOB ALICE EXAMPLE.COM OFFER TO BOB

    ANSWER TO ALICE OFFER TO BOB ANSWER TO ALICE ALL VIDEO & AUDIO SUPER SECURE CHANNEL OFFER TO BOB TELLS BOB HOW TO TALK DIRECTLY TO ALICE = TELLS ALICE HOW TO TALK TO BOB = ANSWER TO ALICE + BOB & ALICE TALK DIRECTLY TO EACH OTHER = CREATE_OFFER() ==> OFFER TO BOB CREATE_ANSWER(OFFER) ==> ANSWE R TO
  16. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER()
  17. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER()
  18. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER() CREATE_OFFER()
  19. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER() CREATE_OFFER() EVIL OFFER TO BOB
  20. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER() CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER) EVIL OFFER TO BOB
  21. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER() CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER) EVIL OFFER TO BOB ANSWER TO CAROL
  22. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER() CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER) EVIL OFFER TO BOB ANSWER TO CAROL
  23. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER() CREATE_ANSWER(OFFER) CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER) EVIL OFFER TO BOB ANSWER TO CAROL
  24. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER() EVIL ANSWER TO ALICE CREATE_ANSWER(OFFER) CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER) EVIL OFFER TO BOB ANSWER TO CAROL
  25. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER() EVIL ANSWER TO ALICE CREATE_ANSWER(OFFER) ALL TH E DATA ALL THE DATA CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER) EVIL OFFER TO BOB ANSWER TO CAROL
  26. EVIL-EXAMPLE.COM OFFER TO BOB ALICE BOB WHAT’S WRONG WITH THAT?

    CREEPY CAROL! THAT’S WHAT! CREATE_OFFER() EVIL ANSWER TO ALICE CREATE_ANSWER(OFFER) ALL TH E DATA ALL THE DATA NO DATA HERE!! :( CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER) EVIL OFFER TO BOB ANSWER TO CAROL
  27. OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET ANSWER

    TO ALICE IPADDR: 321:654.87.09 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AL:SO:AW:SO:ME OFFERS & ANSWERS “HERE IS HOW YOU CAN TALK DIRECTLY TO ME”
  28. OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET ANSWER

    TO ALICE IPADDR: 321:654.87.09 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AL:SO:AW:SO:ME FINGERPRINTS ARE UNIQUE TO THE USER THAT CREATED THE OFFER OR ANSWER UNIQUE! UNIQUE! OFFERS & ANSWERS “HERE IS HOW YOU CAN TALK DIRECTLY TO ME”
  29. *ASSERTION* EMAIL: [email protected] ORIGIN: EXAMPLE.COM CRYPTOSTUFF: SUPERCRYPTOSAUCE REMEMBER THIS? OFFER

    TO BOB ANSWER TO ALICE AND THESE BAD BOYS? + ( ) OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET ASSERTION: PROOF OF IDENTITY
  30. *ASSERTION* EMAIL: [email protected] ORIGIN: EXAMPLE.COM CRYPTOSTUFF: SUPERCRYPTOSAUCE REMEMBER THIS? OFFER

    TO BOB ANSWER TO ALICE AND THESE BAD BOYS? + ( ) OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET + ASSERTION: PROOF OF IDENTITY
  31. *ASSERTION* EMAIL: [email protected] ORIGIN: EXAMPLE.COM CRYPTOSTUFF: SUPERCRYPTOSAUCE REMEMBER THIS? OFFER

    TO BOB ANSWER TO ALICE AND THESE BAD BOYS? + ( ) *SUPER ASSERTION* FINGERPRINT: AW:SO:ME:SE:CR:ET EMAIL: [email protected] ORIGIN: RTCWEB://PEERCONNECTION AUDIENCE: EXAMPLE.COM CRYPTOSTUFF: NEWSUPERCRYPTOSAUCE OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET + ASSERTION: PROOF OF IDENTITY
  32. *ASSERTION* EMAIL: [email protected] ORIGIN: EXAMPLE.COM CRYPTOSTUFF: SUPERCRYPTOSAUCE REMEMBER THIS? OFFER

    TO BOB ANSWER TO ALICE AND THESE BAD BOYS? + ( ) *SUPER ASSERTION* FINGERPRINT: AW:SO:ME:SE:CR:ET EMAIL: [email protected] ORIGIN: RTCWEB://PEERCONNECTION AUDIENCE: EXAMPLE.COM CRYPTOSTUFF: NEWSUPERCRYPTOSAUCE OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET + ASSERTION: PROOF OF IDENTITY
  33. *ASSERTION* EMAIL: [email protected] ORIGIN: EXAMPLE.COM CRYPTOSTUFF: SUPERCRYPTOSAUCE REMEMBER THIS? OFFER

    TO BOB ANSWER TO ALICE AND THESE BAD BOYS? + ( ) *SUPER ASSERTION* FINGERPRINT: AW:SO:ME:SE:CR:ET EMAIL: [email protected] ORIGIN: RTCWEB://PEERCONNECTION AUDIENCE: EXAMPLE.COM CRYPTOSTUFF: NEWSUPERCRYPTOSAUCE NOT A REAL WEBSITE! BROWSER HAS TO MAKE IT OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET + ASSERTION: PROOF OF IDENTITY
  34. *ASSERTION* EMAIL: [email protected] ORIGIN: EXAMPLE.COM CRYPTOSTUFF: SUPERCRYPTOSAUCE REMEMBER THIS? OFFER

    TO BOB ANSWER TO ALICE AND THESE BAD BOYS? + ( ) *SUPER ASSERTION* FINGERPRINT: AW:SO:ME:SE:CR:ET EMAIL: [email protected] ORIGIN: RTCWEB://PEERCONNECTION AUDIENCE: EXAMPLE.COM CRYPTOSTUFF: NEWSUPERCRYPTOSAUCE NOT A REAL WEBSITE! BROWSER HAS TO MAKE IT OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET *SUPER ASSERTION* TO ADD: + ASSERTION: PROOF OF IDENTITY *SUPER
  35. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    BROWSER HOSTS INVISIBLE SANDBOX TECHNICAL MUMBO JUMBO
  36. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX TECHNICAL MUMBO JUMBO
  37. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX /.WELL-KNOWN/IDP-PROXY/BROWSERID addEventListener(‘rtcmessage’, function(e) { var message = e.data; if(message.type === ‘SIGN’) { postMessage(getSuperAssertion()); } else if(message.type === ‘VERIFY’) { postMessage(verifySuperAssertion()); } }, false); TECHNICAL MUMBO JUMBO
  38. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX <IFRAME SRC={ } > /.WELL-KNOWN/IDP-PROXY/BROWSERID addEventListener(‘rtcmessage’, function(e) { var message = e.data; if(message.type === ‘SIGN’) { postMessage(getSuperAssertion()); } else if(message.type === ‘VERIFY’) { postMessage(verifySuperAssertion()); } }, false); TECHNICAL MUMBO JUMBO
  39. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX <IFRAME SRC={ } > IFRAME.DISPATCHEVENT( ) IFRAME.ADDEVENTLISTENER( ) SEND: RECEIVE: /.WELL-KNOWN/IDP-PROXY/BROWSERID addEventListener(‘rtcmessage’, function(e) { var message = e.data; if(message.type === ‘SIGN’) { postMessage(getSuperAssertion()); } else if(message.type === ‘VERIFY’) { postMessage(verifySuperAssertion()); } }, false); TECHNICAL MUMBO JUMBO
  40. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX <IFRAME SRC={ } > IFRAME.DISPATCHEVENT( ) IFRAME.ADDEVENTLISTENER( ) SEND: RECEIVE: GET ASSERTION WITH: AUDIENCE: RTCWEB://... FINGERPRINT: AW:ES:UM IFRAME.SEND( ) /.WELL-KNOWN/IDP-PROXY/BROWSERID addEventListener(‘rtcmessage’, function(e) { var message = e.data; if(message.type === ‘SIGN’) { postMessage(getSuperAssertion()); } else if(message.type === ‘VERIFY’) { postMessage(verifySuperAssertion()); } }, false); TECHNICAL MUMBO JUMBO
  41. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX <IFRAME SRC={ } > IFRAME.DISPATCHEVENT( ) IFRAME.ADDEVENTLISTENER( ) SEND: RECEIVE: GET ASSERTION WITH: AUDIENCE: RTCWEB://... FINGERPRINT: AW:ES:UM /COMMUNICATION_IFRAME IFRAME.SEND( ) /.WELL-KNOWN/IDP-PROXY/BROWSERID addEventListener(‘rtcmessage’, function(e) { var message = e.data; if(message.type === ‘SIGN’) { postMessage(getSuperAssertion()); } else if(message.type === ‘VERIFY’) { postMessage(verifySuperAssertion()); } }, false); TECHNICAL MUMBO JUMBO
  42. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX <IFRAME SRC={ } > IFRAME.DISPATCHEVENT( ) IFRAME.ADDEVENTLISTENER( ) SEND: RECEIVE: GET ASSERTION WITH: AUDIENCE: RTCWEB://... FINGERPRINT: AW:ES:UM /COMMUNICATION_IFRAME IFRAME.SEND( ) ARE YO U SIGN ED IN ? /.WELL-KNOWN/IDP-PROXY/BROWSERID addEventListener(‘rtcmessage’, function(e) { var message = e.data; if(message.type === ‘SIGN’) { postMessage(getSuperAssertion()); } else if(message.type === ‘VERIFY’) { postMessage(verifySuperAssertion()); } }, false); TECHNICAL MUMBO JUMBO
  43. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX <IFRAME SRC={ } > IFRAME.DISPATCHEVENT( ) IFRAME.ADDEVENTLISTENER( ) SEND: RECEIVE: GET ASSERTION WITH: AUDIENCE: RTCWEB://... FINGERPRINT: AW:ES:UM /COMMUNICATION_IFRAME IFRAME.SEND( ) ARE YO U SIGN ED IN ? YEP! W ITH ALICE@ EXAM PLE.CO M /.WELL-KNOWN/IDP-PROXY/BROWSERID addEventListener(‘rtcmessage’, function(e) { var message = e.data; if(message.type === ‘SIGN’) { postMessage(getSuperAssertion()); } else if(message.type === ‘VERIFY’) { postMessage(verifySuperAssertion()); } }, false); TECHNICAL MUMBO JUMBO
  44. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX <IFRAME SRC={ } > IFRAME.DISPATCHEVENT( ) IFRAME.ADDEVENTLISTENER( ) SEND: RECEIVE: GET ASSERTION WITH: AUDIENCE: RTCWEB://... FINGERPRINT: AW:ES:UM /COMMUNICATION_IFRAME IFRAME.SEND( ) ARE YO U SIGN ED IN ? YEP! W ITH ALICE@ EXAM PLE.CO M *SUPER ASSERTION* FINGERPRINT: AW:ES:UM /.WELL-KNOWN/IDP-PROXY/BROWSERID addEventListener(‘rtcmessage’, function(e) { var message = e.data; if(message.type === ‘SIGN’) { postMessage(getSuperAssertion()); } else if(message.type === ‘VERIFY’) { postMessage(verifySuperAssertion()); } }, false); TECHNICAL MUMBO JUMBO
  45. PERSONA.ORG CREATE_OFFER() ==> OFFER TO BOB FINGERPRINT: AW:ES:UM ALICE SANDBOX

    /.WELL-KNOWN/IDP- PROXY/BROWSERID SERVIN’ UP BROWSER HOSTS INVISIBLE SANDBOX <IFRAME SRC={ } > IFRAME.DISPATCHEVENT( ) IFRAME.ADDEVENTLISTENER( ) SEND: RECEIVE: GET ASSERTION WITH: AUDIENCE: RTCWEB://... FINGERPRINT: AW:ES:UM /COMMUNICATION_IFRAME IFRAME.SEND( ) ARE YO U SIGN ED IN ? YEP! W ITH ALICE@ EXAM PLE.CO M *SUPER ASSERTION* FINGERPRINT: AW:ES:UM /.WELL-KNOWN/IDP-PROXY/BROWSERID addEventListener(‘rtcmessage’, function(e) { var message = e.data; if(message.type === ‘SIGN’) { postMessage(getSuperAssertion()); } else if(message.type === ‘VERIFY’) { postMessage(verifySuperAssertion()); } }, false); TECHNICAL MUMBO JUMBO *SUPER ASSERTION* FINGERPRINT: AW:ES:UM
  46. WHAT?? LOL OK YO, PERSONA! MAKE SUPER ASSERTION FOR: OFFER

    TO BOB ALICE HERE YA GO *SUPER ASSERTION* PERSONA
  47. WHAT?? LOL OK YO, PERSONA! MAKE SUPER ASSERTION FOR: OFFER

    TO BOB ALICE HERE YA GO *SUPER ASSERTION* PERSONA CREEPY CAROL CAN’T DO THIS BECAUSE SHE ISN’T LOGGED IN AS ALICE
  48. WHAT?? LOL OK YO, PERSONA! MAKE SUPER ASSERTION FOR: OFFER

    TO BOB ALICE HERE YA GO *SUPER ASSERTION* PERSONA CREEPY CAROL CAN’T DO THIS BECAUSE SHE ISN’T LOGGED IN AS ALICE WEBSITES CAN’T DO THIS BECAUSE THEY CANNOT SOURCE THE IFRAME DUE TO SAME-SITE ORIGIN POLICY
  49. *SUPER ASSERTION* FINGERPRINT: AW:SO:ME:SE:CR:ET EMAIL: [email protected] ORIGIN: RTCWEB://PEERCONNECTION AUDIENCE: EXAMPLE.COM

    CRYPTOSTUFF: NEWSUPERCRYPTOSAUCE SO WE HAVE ONE OF THESE GUYS... OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET ...AND ONE OF THESE
  50. *SUPER ASSERTION* FINGERPRINT: AW:SO:ME:SE:CR:ET EMAIL: [email protected] ORIGIN: RTCWEB://PEERCONNECTION AUDIENCE: EXAMPLE.COM

    CRYPTOSTUFF: NEWSUPERCRYPTOSAUCE SO WE HAVE ONE OF THESE GUYS... OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET NOW WHAT? ...AND ONE OF THESE
  51. *SUPER ASSERTION* FINGERPRINT: AW:SO:ME:SE:CR:ET EMAIL: [email protected] ORIGIN: RTCWEB://PEERCONNECTION AUDIENCE: EXAMPLE.COM

    CRYPTOSTUFF: NEWSUPERCRYPTOSAUCE SO WE HAVE ONE OF THESE GUYS... OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET *SUPER ASSERTION* PUT IT IN THE OFFER!! NOW WHAT? ...AND ONE OF THESE IDENTITY:
  52. *SUPER ASSERTION* FINGERPRINT: AW:SO:ME:SE:CR:ET EMAIL: [email protected] ORIGIN: RTCWEB://PEERCONNECTION AUDIENCE: EXAMPLE.COM

    CRYPTOSTUFF: NEWSUPERCRYPTOSAUCE SO WE HAVE ONE OF THESE GUYS... OFFER TO BOB IPADDR: 123.456.78.90 CODEC: BLAHNOTIMPORTANT FINGERPRINT: AW:SO:ME:SE:CR:ET *SUPER ASSERTION* PUT IT IN THE OFFER!! NOW WHAT? ...AND ONE OF THESE IDENTITY: *SUPER OFFER TO BOB!* *SUPER ANSWER TO ALICE!* ...AND BOB CAN MAKE SUPER ANSWERS TOO
  53. BOB ALICE EXAMPLE.COM PERSONA.ORG *SUPER* OFFER TO BOB *SUPER* OFFER

    TO BOB CREATE_OFFER() ==> *SUPER* OFFER TO BOB
  54. BOB ALICE EXAMPLE.COM PERSONA.ORG *SUPER* OFFER TO BOB *SUPER* OFFER

    TO BOB CREATE_OFFER() ==> *SUPER* OFFER TO BOB CREATE_ANSWER(OFFER) ==> *SUPER* ANSWER TO ALICE
  55. BOB ALICE EXAMPLE.COM PERSONA.ORG *SUPER* OFFER TO BOB *SUPER* ANSWER

    TO ALICE *SUPER* OFFER TO BOB CREATE_OFFER() ==> *SUPER* OFFER TO BOB CREATE_ANSWER(OFFER) ==> *SUPER* ANSWER TO ALICE
  56. BOB ALICE EXAMPLE.COM PERSONA.ORG *SUPER* OFFER TO BOB *SUPER* ANSWER

    TO ALICE *SUPER* ANSWER TO ALICE *SUPER* OFFER TO BOB CREATE_OFFER() ==> *SUPER* OFFER TO BOB CREATE_ANSWER(OFFER) ==> *SUPER* ANSWER TO ALICE
  57. BOB ALICE EXAMPLE.COM PERSONA.ORG VERIFY PLZ *SUPER* OFFER TO BOB

    *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* OFFER TO BOB CREATE_OFFER() ==> *SUPER* OFFER TO BOB CREATE_ANSWER(OFFER) ==> *SUPER* ANSWER TO ALICE
  58. BOB ALICE EXAMPLE.COM PERSONA.ORG VERIFY PLZ VERIFY PLZ *SUPER* OFFER

    TO BOB *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* OFFER TO BOB *SUPER* OFFER TO BOB CREATE_OFFER() ==> *SUPER* OFFER TO BOB CREATE_ANSWER(OFFER) ==> *SUPER* ANSWER TO ALICE
  59. BOB ALICE EXAMPLE.COM PERSONA.ORG VERIFY PLZ VERIFY PLZ *SUPER* OFFER

    TO BOB *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* OFFER TO BOB *SUPER* OFFER TO BOB VERIFIED: [email protected] CREATE_OFFER() ==> *SUPER* OFFER TO BOB VERIFIED: [email protected] CREATE_ANSWER(OFFER) ==> *SUPER* ANSWER TO ALICE
  60. BOB ALICE EXAMPLE.COM PERSONA.ORG VERIFY PLZ VERIFY PLZ *SUPER* OFFER

    TO BOB *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* OFFER TO BOB *SUPER* OFFER TO BOB VERIFIED: [email protected] VERIFIED: [email protected] CREATE_OFFER() ==> *SUPER* OFFER TO BOB VERIFIED: [email protected] CREATE_ANSWER(OFFER) ==> *SUPER* ANSWER TO ALICE VERIFIED: [email protected]
  61. BOB ALICE EXAMPLE.COM PERSONA.ORG VERIFY PLZ VERIFY PLZ *SUPER* OFFER

    TO BOB *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* OFFER TO BOB *SUPER* OFFER TO BOB VERIFIED: [email protected] VERIFIED: [email protected] SUPER POPUP! CREATE_OFFER() ==> *SUPER* OFFER TO BOB VERIFIED: [email protected] CREATE_ANSWER(OFFER) ==> *SUPER* ANSWER TO ALICE VERIFIED: [email protected]
  62. BOB ALICE EXAMPLE.COM ALL VIDEO & AUDIO SUPER SECURE CHANNEL

    PERSONA.ORG VERIFY PLZ VERIFY PLZ *SUPER* OFFER TO BOB *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* ANSWER TO ALICE *SUPER* OFFER TO BOB *SUPER* OFFER TO BOB VERIFIED: [email protected] VERIFIED: [email protected] SUPER POPUP! CREATE_OFFER() ==> *SUPER* OFFER TO BOB VERIFIED: [email protected] CREATE_ANSWER(OFFER) ==> *SUPER* ANSWER TO ALICE VERIFIED: [email protected]
  63. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB ALICE BOB CREATE_OFFER() EVIL OFFER

    TO BOB CREEPY CAROL PERSONA.ORG PERSONA.ORG CREATE_OFFER()
  64. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB ALICE BOB CREATE_OFFER() EVIL OFFER

    TO BOB CREEPY CAROL PERSONA.ORG VERIFY PLZ EVIL OFFER TO BOB PERSONA.ORG CREATE_OFFER()
  65. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB ALICE BOB CREATE_OFFER() EVIL OFFER

    TO BOB CREEPY CAROL PERSONA.ORG VERIFY PLZ EVIL OFFER TO BOB PERSONA.ORG CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER)
  66. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB *SUPER* ANSWER TO ALICE ALICE

    BOB CREATE_OFFER() EVIL OFFER TO BOB CREEPY CAROL PERSONA.ORG VERIFY PLZ EVIL OFFER TO BOB PERSONA.ORG CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER)
  67. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB *SUPER* ANSWER TO ALICE ALICE

    BOB CREATE_OFFER() EVIL OFFER TO BOB CREEPY CAROL PERSONA.ORG VERIFY PLZ EVIL OFFER TO BOB PERSONA.ORG CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER)
  68. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB *SUPER* ANSWER TO ALICE ALICE

    BOB CREATE_OFFER() EVIL ANSWER TO ALICE EVIL OFFER TO BOB CREATE_ANSWER(OFFER) CREEPY CAROL PERSONA.ORG VERIFY PLZ EVIL OFFER TO BOB PERSONA.ORG CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER)
  69. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB *SUPER* ANSWER TO ALICE ALICE

    BOB CREATE_OFFER() EVIL ANSWER TO ALICE EVIL OFFER TO BOB CREATE_ANSWER(OFFER) CREEPY CAROL PERSONA.ORG VERIFY PLZ EVIL OFFER TO BOB PERSONA.ORG VERIFY PLZ EVIL ANSWER TO ALICE CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER)
  70. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB *SUPER* ANSWER TO ALICE ALICE

    BOB CREATE_OFFER() EVIL ANSWER TO ALICE EVIL OFFER TO BOB CREATE_ANSWER(OFFER) CREEPY CAROL PERSONA.ORG VERIFY PLZ EVIL OFFER TO BOB VERIFICATION FAILED! PERSONA.ORG VERIFY PLZ VERIFICATION FAILED! EVIL ANSWER TO ALICE CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER)
  71. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB *SUPER* ANSWER TO ALICE ALICE

    BOB CREATE_OFFER() EVIL ANSWER TO ALICE EVIL OFFER TO BOB CREATE_ANSWER(OFFER) CREEPY CAROL PERSONA.ORG VERIFY PLZ EVIL OFFER TO BOB VERIFICATION FAILED! PERSONA.ORG VERIFY PLZ VERIFICATION FAILED! EVIL ANSWER TO ALICE CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER) WARNING: NOT VERIFIED!!! WARNING: NOT VERIFIED!!!
  72. EVIL-EXAMPLE.COM *SUPER* OFFER TO BOB *SUPER* ANSWER TO ALICE ALICE

    BOB CREATE_OFFER() EVIL ANSWER TO ALICE EVIL OFFER TO BOB CREATE_ANSWER(OFFER) NO DATA HERE!! :( CREEPY CAROL PERSONA.ORG VERIFY PLZ EVIL OFFER TO BOB VERIFICATION FAILED! PERSONA.ORG VERIFY PLZ VERIFICATION FAILED! EVIL ANSWER TO ALICE CREATE_OFFER() CREATE_ANSWER(EVIL_OFFER) WARNING: NOT VERIFIED!!! WARNING: NOT VERIFIED!!!
  73. NOTES: NO HTTPS YET... FAIL! WEBRTC.PERSONATEST.ORG NOT LOGIN.PERSONA.ORG NEED TIN

    CAN AUTH ADD-ON INSTALLED TO GET SUPER OFFERS/ANSWERS OR BUILD PATCHES 884573 & 878941 TINCAN: HTTP://TINCAN.IM https://addons.mozilla.org/en-US/firefox/addon/tin-can-auth/ TIN-CAN-AUTH ADDON: