Off The Record & Facebook Confidentially services closed

Post date: Jun 23, 2013 5:13:02 PM

Unfortunately I really don't have enough time to maintain the service which I used to study how Google App Engine works. As well as we all know, that it's not very after all secure, because data is stored by Google and there are well known SSL/TLS security issues. Now the service is officially closed, here's copy of Finnish and English service FAQ what it was all about.

Off The Record Messaging

FAQ / Technical information

Q: Off-The-Record (OTR) - What is this?

A: This service is meant for delivering messages to recipient

off-the-record (OTR). It means that message content isn't

being archived by recipient systems. Message is delivered using

safe methods. Message content is erased immediately upon

reading.

Q: How to use Off-The-Record (OTR)?

A: Follow these steps:

1. Write message in form on front page.

2. If you want to change storage period change it.

Message is automatically deleted after this period expires

even if it's not being read by recipient.

3. If you want to add additional password, it will be hashed with

random message key to encrypt the message.

4. Click Send to send message and get "Read URL"

5. Deliver "read URL" to recipient using what ever method you

wish to use. (If you log in with Google account OTR can send

message behalf of you.) Don't click on that URL, if you read

the message, the message is also automatically destroyed as

described earlier.

6. When recipient gets that URL, they'll click on it and after

giving the (optional) password, recipient sees your message only

once and over secure encrypted connection.

7. Message has been destroyed.

Q: Ok? Why would I take all these complex steps? Why I couldn't

sent that message directly using email, IM, Facebook or any

other service?

A: No. It's not same thing. OTR uses always encrypted connection,

many service unfortunately do not, even if it would be highly

recommended.

Yet another reason is archiving. This service erases message

immediately when it's read. But many other services archive

message data for undefined period. As example, how do you delete

email that you sent to your friends gmail account two years ago?

With this service, if message isn't archived immediately by

recipient when it's read it can't be read ever again. Especially

if using company email or so, it might be nice to be sure that

unofficial messages are gone, when they're gone. Nobody can

restore erased messages.

Q: I'm tech geek, I want to know how it's done.

A: Yep. I'm tech geek too. So let's share the facts.

Connections:

All connections are secured using HTTPS.

It's just as secure as online banking is.

Message storage and retrieval:

When new message is stored we'll generate following data.

MessageId is one 64 bits long. That identifies message in DB.

MessageKey is 256 bits long. It's used with AES-256/OFB to

encrypt message.

MessageKey is then hashed using SHA-256 with optional

MessagePassword to form new MessageKey.

MessageChk is 256 bits long. It's SHA-256 of

MessageId+Message+MessageKey and it's actually

the first 256 bits of message being encrypted.

When message is being read, it's located in DB using MessageId.

After that it's decrypted using MessageKey. And after decryption

it's checked if MessageChk is valid. If not, error message is

shown and message is not deleted. Technically allows timing

attack which proves that MessageID exists, but speed would be

really unfeasible!

Only MessageId, MessageExp (time-stamp) and EncryptedData is

stored in DB. So without information given out only on that send

message result page, it's impossible to read anything (useful)

from database.

This means that all 320 bits of information which is base64

encoded in URL, need to be correct before message can be read.

I would call it extreme overkill safe. It's very much more secure

than any security achieved using passwords.

Biggest security issue is "Read URL" delivery method. But usually

that's not big deal. Because recipient would be alarmed because

valid URL isn't working any more. And they'll know that message

has been intercepted. Usually most of information leak happens

so that end-users aren't aware of that. Now it's possible to

get message without exposing "Read URL" to HTTP server logging.

Simply visit front page and enter that URL (or id+key) to get

message box and get it.

Using additional MessagePassword is recommended, in that case

the Read URL isn't enough, correct additional password needs to

be provided, which is not stored anywhere. This part could also

be done using JavaScript quite easily.

When message is erased it's always first overwritten with random

data, and then it's actually deleted.

Q: Can I trust this service.

A: Of course you can't and you shouldn't. I don't trust many other

similar services either. That's just why I wrote this application.

But I can trust this one.

I personally hate all kind of excessive generic archiving and

prefer log free, non-archiving option instead.

Q: Does Google have privacy policy?

A: Of course they do, check it out.

Send messages from Off-The-Record.appspot.com

Change log:

Version 9 - 16.02.2013 (DD.MM.CCYY)

- Removed FB-Confidentially references from UKK & FAQ

- Announced service getting closed soon.

Version 8 - 09.09.2012 (DD.MM.CCYY)

- Removed link to FB-Confidentially, I closed down the project

- Removed refernces to Google Anaytics to enhance privacy

Version 7 - 05.02.2011 (DD.MM.CCYY)

- Lot of junk removed from application paths

- Improved application / GAE platform exception handling.

Version 6 - 08.05.2010 (DD.MM.CCYY)

- All remains of DES/3DES encryption/decryption removed from source.

- Added more secure get message field to front page.

This field uses post method instead of get, so HTTP server logs wont

contain message get/decryption key. It could have been cosidered

a security issue, even if message was immediately overwritten.

It would have been possible for Google staff to use database backup

with old data and http logs containing fetch key.

- Logging absolute minimum, error messages only. Message IDs not

being used anymore in logging / trouble shooting. Now there is no

easy way to find out even from logs, who left which message and

who fetched it.

(C) Sami Lehtinen 2011

Powered by Google App Engine

KW: message, messages, messaging, private, expire, expiring, encryption, encrypted, encrypt, secured, trusted, trust, platform, secure, self destructing, destruct, email, unofficial, OTRM, OTR, secured, hush-hush, free, web, service, www, based, browser, internet, aes, 256, aes256, des, 3des, twofish, vanish, records, expire, no record, ssl, tls, send, receive, get

Off The Record home

-- Finnish --

Epävirallinen ja luottamuksellinen viestintä / sähköposti

UKK / Tekniikka

K: Off-The-Record (OTR) - Mitä ja miksi?

V: Tämän palvelun tarkoituksena on sallia viestien turvallinen

ja luottamuksellinen toimittaminen vastanottajalle. Sekä

huolehtia siitä, että viesti tuhotaan välittömästi sen

toimittamisen jälkeen ilman, että se jää arkistoihin roikkumaan

ennalta määräämättömäksi ajaksi.

K: Kuinka käytän OTR palvelua?

V: Toimi seuraavasti:

1. Kirjoita viesti etusivun lomakkeelle.

2. Jos haluat muuttaa säilytysaikaa oletusarvosta, tee se.

Kun säilytysaika päättyy, viesti tuhotaan vaikka sitä ei ole

luettu.

3. Aseta viestille lisäsalasana joka tarvitaan viestin lukuavaimen

lisäksi.

4. Paina "Send"-näppäintä

5. Toimita "Read URL" vastaanottajalle. Mitä tapaa sitten ikinä

haluatkin käyttää. (Jos kirjaudut Google tunnuksilla palveluun,

voimme lähettää viestin puolestasi. Viestin kieli on englanti.)

Älä klikkaa "Read URL" osoitetta. Jos avaat lukusivun,

näytetään viesti sinulle ja se tuhotaan välittömästi.

6. Kun vastanottaja saa lähettämäsi linkin, hän voi avata linkin

ja antaa mahdollisen lisäsalasan. Tämän jälkeen käyttäjä

näkee viestin vain yhden kerran salatun yhteyden yli.

7. Viesti on tuhottu.

K: Miksi haluaisin tehdä sen näin hankalasti? Enkä voi lähettää

viestiä suoraan vastaanottajalle? Esimerkiksi sähköpostilla,

Messangerilla, Facebookilla tai muulla tavalla?

V: Kyllä ja ei.

1. Sähköposti käyttää salaamattomia yhteyksiä.

2. Kun lähetät viestin esimerkiksi sähköpostilla, et

voi vaikuttaa siihen, että viestiä ei arkistoitaisi ennalta

määrittelemättömäksi ajaksi tai ikuisesti.

Kun käytät tätä palvelua, voit olla varma, että viesti voidaan

lukea vain kerran. Viesti tuhotaan pysyvästi lukemisen yhteydessä

tai viimeistään heti määritellyn säilytysajan päättyessä. Viestiä

on tämän jälkeen täysin mahdotonta palauttaa.

K: Olen propellihattu, haluan tietää, miten homma toimii.

A: Kiitos kysymästä, kerron mielelläni.

Yhteydet:

Kaikki yhteydet tähän palvleuun käyttävät salattua HTTPS yhteyttä.

Yhteydet ovat siis aivan yhtä luotettavia kuin verkkopankkien

yhteydet, joita olet varmasti tottunut käyttämään.

Viestien tallentaminen ja noutaminen:

Viestiä tallenetteaessa luomme seuraavat tiedot.

Tunniste, joka on 64 bittiä pitkä. Se kertoo, mistä viestistä on

kyse. Salausavain, joka on 256 bittiä pitkä. Sitä käytetään

AES-256/OFB lohkosalaimen kanssa viestien salaamiseen.

Viestitarkiste, joka on 256 bittiä pitkä. Sitä käytetään viestin

noudon yhteydessä tarkistamaan, että annettu salausavain oli

oikea.

Viesti noudetaan luettaessa kannasta tunnisteella. Sen jälkeen

salaus puretaan, perustuen lukulinkkiin ja viestin salasanaan.

Puretusta tiedosta luotua tarkistetta verrataan

viestitarkisteeseen. Jos tarkiste täsmää, viesti näytetään ja

tuhotaan. Jos tarkiste ei täsmää, näytetään sanoma, joka kertoo,

että viestiä ei lyödy.

Vain tunniste, viestin voimassaolo ja salattu viesti tallennetaan

tietokantaan. Ilman "Read URL" osoitteessa olevaa avaintietoa ja

viestin mahdollista salasanaa, viestin lukeminen on käytännössä

mahdotonta.

Jotta viesti voidaan lukea, tarvitaan 320 bittinen tunniste, joka

on base64 koodattuna "Read URL" osoitteessa ja viestin salasana.

Jos yksikin bitti on väärin, viestin lukeminen ei onnistu.

Jos haluat laskea eri avainvaihtoehdot, kaava on 2 potenssiin 320.

Tulos on 2,13+E96. Luvussa on siis 97 numeroa. Onnea arvaamiseen.

Tämä on huomattavasti turvallisempaa kuin mikään salasanoilla

saavutettava turvallisuus.

Suurin turvallisuus kysymys on tapa, jolla toimitat lukemiseen

tarvittavan "Read URL" osoitteen.

Kuitenkin, jos joku ulkopuolinen lukee viestin, vastaanottaja tulee

tietoiseksi asiasta viimeistään yrittäessään lukea viestiä, koska

viesti on jo tuhottu. Viestit voidaan edelleen lukea vain ja

ainoastaan yhden kerran. Huom! Nyt tähän on tullut parannus.

Viestin voi noutaa menemällä etusivulle ja antamalla tuon nouto

urlin "Get Message" laatikkoon. Silloin nouto URL ei kirjaudu

laikaan HTTP palvelimen logeihin.

Kun vielä käytät viestikohtaista salausavainta josta olet sopinut

vastaanottajan kanssa, ei edes kokonaisen linkin vuotaminen aiheuta

ongelmaa, koska linkistä puuttuu salasanan vaikutus ReadURLissa

Olevaan MessageKey salausavaimeen.

Pahimmat tietovuodot tapahtuvat yleensä niin, että kumpikaan

osapuoli ei ole tietoinen vuodon olemassaolosta.

K: Voinko luottaa tähän palveluun?

V: Et tietenkään. Minkään en luota useimpiin tämän kaltaisiin

palveluihin. Juuri siksi loin tämän palvelun, johon Minä voin

luottaa.

En henkilökohtaisesti pidä palveluista, jotka arkistoivat suuria

määriä tietoa aivan tarpeettomasti. Ilman, että tiedon tuhoamisesta

voi varmistua mitenkään. Siksi suosin tämän kaltaista palvelua,

joka huolehtii viestien tuhoamisesta ajallaan.

K: Onko Googlella tietosuojakäytäntöä?

V: On niillä, katso täältä.

Lähetä luottamuksellisia viestejä osoitteesta: Off-The-Record.appspot.com

Mutokset:

Versio 9 - 16.02.2013 (PP.KK.VVVV)

- Poistin viitteet FAQsta ja UKKsta FB-Confidentially projektiin

- Ilmoitin että palvelu tullaan sulkemaan piakkoin muiden projektien

vuoksi.

Versio 8 - 09.09.2012 (PP.KK.VVVV)

- Removed link to FB-Confidentially, I closed down the project

- Removed refernces to Google Anaytics to enhance privacy

Versio 7 - 05.02.2011 (PP.KK.VVVV)

- Poistettu paljon turhaa dataa sovelluksen hakemistoista.

- Sovelluksen virhekäsittelyä parannettu merkittävästi.

Versio 6 - 08.05.2010 (PP.KK.VVVV)

- Poistettu DES/3DES salauksen jämät koodista.

- Lisätty turvallisempi nouda viesti (get message) kenttä etusivulle.

Tämän kentän kautta voi noutaa viestejä laittamatta viestin tunnis-

tetta / salausavainta URL osoitteeseen. Koska lomake käyttää POST-

menetelmää, GETin sijaan. Ei osoite tallennu HTTP palvelimen logeihin.

Aikaisemmin koska osoite tallentui logeihin, olisi Googlen ollut

mahdollista palauttaa tietokannan varmuuskopio ja purkaa siinä olevat

noudetut viestit logissa olevien tunnisteiden/salausavainten

perusteella.

- Logeihin kirjoitetaan mahdolisimman vähän tietoa. Lähinnä virheet

kirjataan ongelmien korjaamisen vuoksi. Viestin tunniste-osaa

ei enää logata koskaan. Salausavainta ei tietenkään logattu koskaan

ennenkään. Nyt kun viestitunnisteita ei tallenneta, ei ole helppoa

tapaa yhdistää viestin jättäjää ja sen noutajaa toisiinsa.

(C) Sami Lehtinen 2011

Powered by Google App Engine

KW: message, messages, messaging, private, expire, expiring, encryption, encrypted, encrypt, secured, trusted, trust, platform, secure, self destructing, destruct, email, unofficial, OTRM, OTR, secured, hush-hush, free, web, service, www, based, browser, internet, aes, 256, aes256, des, 3des, twofish, vanish, records, expire, no record, ssl, tls, send, receive, get

Off The Record home

Facebook Confidentially (FB-Confidentially)

Confidentially application is designed to allow confidential private messaging in Facebook. All connections use strong encryption (SSL/TLS) and data is stored in encrypted database. Messages are destroyed irreversibly when read. No logging, data on rest is strongly encrypted. If nessages are not read, they expire after 30 days. It's not possible to recover expired messages.

Each individual message uses full strength 256 bit AES encryption with random individual keys. We respect absolute user privacy.

- Thank you

Exception: If local law enforcement with confirmed authority is investigating case and court orders information to be released. Then we're forced to release what ever information we have. But as said earlier, what's gone, is gone. We can't help it. It might be possible that Google is able to restore some data from their database backups. But the encryption key is still missing, we can't provide that.

FAQ

Messages are encrypted using full strength 256 bit key and AES-256 algorithm.

Each message uses totally separate random own encryption key!

Messages can have additional password, which is defined by sender, it's hashed as part of encryption key.

Recipient Facebook UserID is also hashed as part of encryption key. So if UserID isn't correct, even if password and key would be correct messages can't be read.

If there are multiple recipients, each recipients message is encrypted individually with separate keys.

Messages can't be read without Facebooks application request data, which includes the encryption key from Facebook and signed request with recipient user_id in it.

As mentioned earlier additional password / key might be required if sender has configured one.

Messages can be read only once, after that message is overwritten and deleted.

Messages expire after 30 days, even if unread.

Much safer option than email! Email is stored at servers and transferred between servers without encryption.

When you're using Confidentially both storage and transport use high-grade encryption.

No there is no way to recover expired or read messages.

There is similar kind of application for non-Facebook users called Off-The-Record.

Terms of Service

Don't flood

Don't abuse

Don't use for any illegal purposes

If you think what you're doing is wrong, then don't do it

As mentioned in privacy part, we'll do our best to keep your data private. But we can't simply can't absolutely guarantee it.

Privacy policy

Any user/message information isn't given out, without written request from local authoritative court order. It's useless to point data requests to me, point those directly to Google, because they have access to (encrypted) data (from backups), which I don't have after messages are deleted.

All requests will be reverse checked to confirm recipient authority. All messages data is deleted (overwritten) after 30 days or when read by recipient.

In case of court order, it's only possible to give out (encrypted) unread messages. Read messages are history, can't do anything about it.

We'll do our best to keep your data private. But we can't simply can't absolutely guarantee it.

We can't be held responsible for any data loss or leaks. Service comes with no warranty what so ever.

Our policy prefers data loss over data leak. So it's better to lose all confidential data than let it out in case of unclear situation.

Site is hosted by Google's App Engine.

Read Google's own privacy policy.