Top Banner
User-controlled notifications: Nōtifs Jim Fenton <[email protected]> 1 Spring 2015 Update
23
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Notifs update

User-controlled notifications: Nōtifs

Jim Fenton <[email protected]>

1

Spring 2015 Update

Page 2: Notifs update

What is a Nōtif?

• Nōtif : notification :: app : application

• Tell a user that something they’re interested in is happening or has happened

• Requested by the user

• Typically short

• Typically time-sensitive, perishable

2

Page 3: Notifs update

What a Nōtif isn’t• Anything unsolicited

• correspondence

• spam

• Addressed by a human

• addresses are unsuitable for that

• Two-way

• Multihop

3

Page 4: Notifs update

4

Page 5: Notifs update

Notification examples• Emergency bulletins• Advertising / special

offers• Event invitations• Approval requests• Tech support• Password resets

• Fraud alerts (bank, etc.)• Alerts from

“things” (IoT)• Newsletter availability• Social media alerts• Burglar/fire alarms

5

Page 6: Notifs update

Nōtifs Manifesto

• Users:• Should have control over what nōtifs they receive• Should be able to know that the nōtifs they receive are genuine• Should have control over if and how they are alerted when

nōtifs arrive• Should not have to reveal information about themselves just to

receive nōtifs• Notifiers:

• Should not have to guess whether nōtifs are being delivered• Should not have to employ intermediaries to get nōtifs delivered• Should be able to amend or delete nōtifs to keep them relevant

• Nōtifs:• Should expire and hide when no longer relevant

6

Page 7: Notifs update

Nōtif characteristics• Opt-in

• Typically short

• Modifiable/deletable (best effort)

• Acknowledged delivery

• Domain-signed

• Encrypted in transit (use TLS)

• Priority tagged

• Expires at specified date/time

7

Page 8: Notifs update

Notifiers

Agent

User endpoints

NotificationAgent

PhoneCallSMS,

App push

GrowlManagement,Authorization

NotificationsAuthorization TableRules

Bank EmergencyServices RetailersSocial Media Approval

RequestsCalendar

8

Page 9: Notifs update

Notifiers• Typically not operated

by user• Opt-in by user through

authorization ceremony• May or may not know

much about the user

• Examples:• Emergency services• E-Commerce sites• Social media• Enterprise services• Reminders

9

Page 10: Notifs update

Nōtif Agents• Operate on behalf of

user• Cloud-based• User-chosen,

decentralized• Store notifications for

retrieval by user• Manage authorizations

for user

• Alert user to specific notifications of particular interest or urgency

10

Page 11: Notifs update

Nōtif Authorizations

• A record of a relationship between a notifier and a user

• Contains:• Notification address• Notifier’s domain• Description (provided/edited by user)• Max authorized priority• Tags• Flags (active, deleted, etc.)• Statistics (count, etc.)• Link to user (internal)

11

Page 12: Notifs update

User endpoints• Push

• Mobile device app (push notification)

• SMS• Voice (telephone)• Desktop app• Email (!)

• Pull• Web interface• Mobile app (via API)

12

Page 13: Notifs update

Typical Nōtif

{"header": {"to": “[email protected]:5342"}, "payload": “eyJhbGciOiAiUlMyNTYiLCAia2lkIjogInNoaW55In0. eyJvcmlndGltZSI6ICIyMDE1LTA0LTA0VDE2OjE3OjAwLjI0MjE4MVoiLCAicHJpb3JpdHkiOiA0LCAiZXhwaXJlcyI6ICIyMDE1LTA0LTA0VDE2OjE3OjAwLjI0MjE5M1oiLCAiYm9keSI6ICJJdCBpcyBub3cgMDk6MTcgYW5kIGFsbCBpcyB3ZWxsIiwgInN1YmplY3QiOiAiSXQgaXMgbm93IDA5OjE3In0. MVXxsqrqc6XQm2gkVgatmHC847JEBxg0eR4LSmsUsTpMAwWgZ7dKQ_Wk_QK0It0aibj4qVdnJbs1MY6IwV7rqJMsSbzuZ7n_QDn_OKjI2L_rPq9IsW7zEUtwf2T1J1j9yfWX0zmXwqSxdqnFHNcv49S7eDPrEhlvIMLtixHDOjk"}

Protected header

Unprotected header

Payload

Signature

Now in JWS format!

13

Page 14: Notifs update

Protected Header

• Public key from DNS TXT record ala DKIM

• Algorithm must agree with that specified by key record

{"alg": “RS256", "kid": "shiny"}

Public key obtained from DNS:<kid>._domainkey.<notifier-domain>

Signing and hashing algorithms

14

Page 15: Notifs update

Nōtif Body

• You can’t spoof what isn’t there:

• From address/domain (comes from authorization)

• To address (part of the envelope)

{"origtime": “2015-04-04T16:17:00.242181Z", "priority": 4, "expires": “2015-04-05T16:17:00.242193Z", "body": "It is now 09:17 and all is well”, "subject": "It is now 09:17"}

15

Page 16: Notifs update

Nōtif Summary

16

Page 17: Notifs update

Nōtif Detail

17

Page 18: Notifs update

Authorization Summary

18

Page 19: Notifs update

Authorization

19

Page 20: Notifs update

Methods

20

Page 21: Notifs update

Alert Rules

21

Page 22: Notifs update

Current status• Prototype Nōtif agent up and running

• Linux/MongoDB/Go

• Prototype user/authorization/nōtif management

• Linux/MongoDB/Python/Django

• Notifier SDK (Python)

• Sample “clockwatcher” notifier running

22

Page 23: Notifs update

To Be Done

• Open-source the code (when I’m reasonably happy with it)

• Write an API/Protocol Specification

• Mobile app

• Connectors: Generate notifs from legacy services

23