Comment générer un mot de passe unique basé sur le temps avec IFTTT?

9

Je me suis récemment inscrit à IFTTT , ce qui semble être un service fantastique pour enchaîner des événements afin de créer une maison intelligente ou d'automatiser divers services.

Je viens de trouver le canal Maker qui vous permet de faire de simples requêtes HTTP (par exemple GET et POST), et j'espère l'utiliser pour envoyer en toute sécurité un message à un Raspberry Pi que j'exécute et qui attend toute demande d'API sur une certaine route (disons, par exemple, POST /foo).

L' article de Makezine que j'ai lié suggère cette méthode de sécurité:

Maintenant, ce que j'ai fait ci-dessus était horriblement précaire, j'ai essentiellement exposé au monde un script - une application Web en d'autres termes - qui pouvait activer et désactiver un interrupteur contrôlant une lumière dans ma maison. Ce n'est évidemment pas quelque chose que vous voulez faire, mais c'est pourquoi les services d'IFTTT offrent les capacités de transmettre plus d'informations au service distant.

Il ne serait pas difficile de mettre en place un lien authentifié TOTP entre les deux par exemple, ou un échange de jetons ou de clés - et de protéger votre compte IFTTT lui-même? Ils viennent d'ajouter une authentification à deux facteurs.

J'ai lu plus sur les mots de passe à usage unique basés sur le temps sur Wikipedia, ce qui semble suggérer qu'il y a un élément de calcul impliqué afin de générer le mot de passe à usage unique.

Étant donné que IFTTT ne prend pas en charge le chaînage des tâches ou tout script, comment puis-je générer le TOTP comme suggéré dans l'article? Est-il possible de le faire, car certains calculs sont nécessaires et il ne semble pas y avoir de moyen de les faire?

Aurora0001
la source
Envoyez-vous des données spécifiques depuis IFTTT (contenu du courrier, ...)? Si tel est le cas, vous pouvez en inclure une partie (objet) comme mot de passe pour votre requête. SSL est-il également suffisant pour envoyer un message ou vous avez vraiment besoin d'un mot de passe?
Goufalite
2
@Goufalite le but du mot de passe est plus pour l'authentification - SSL fournit la sécurité de la couche de transport mais n'a aucune garantie que la demande provient bien de mon applet.
Aurora0001
si vous avez un ensemble de mots de passe stockés quelque part, générés régulièrement, IFTTT n'aurait aucun problème à les envoyer un par un! droite?
Prashanth Benny
@PrashanthBenny, ma question concerne spécifiquement la génération. Vous ne pouvez pas faire des opérations mathématiques sur IFTTT, mais l'article recommande cet algorithme qui ne nécessitent certains calculs, il ne semble pas être possible.
Aurora0001
1
Permettez-moi de m'assurer qu'aucune source ne parle dans l'autre sens! :)
Prashanth Benny

Réponses:

3

L'article lié est un peu trompeur. L'interface fournie par IFTTT n'est pas complètement ouverte, elle nécessite une clé dans la demande. Étant donné que la demande est effectuée à l'aide de HTTPS, le secret n'est pas directement observable (à condition que votre client se connecte toujours de manière fiable à IFTTT, pas à un proxy mitm).

À partir de la page d'informations sur le canal du fabricant (spécifique à l'utilisateur)

Pour déclencher un événement Effectuez une requête Web POST ou GET pour:

https://maker.ifttt.com/trigger/ {event} / avec / key / my-secret-key Avec un corps JSON facultatif de:

{"value1": "", "value2": "", "value3": ""}

Les données sont entièrement facultatives et vous pouvez également transmettre value1, value2 et value3 en tant que paramètres de requête ou variables de formulaire. Ce contenu sera transmis à l'action dans votre recette.

Vous pouvez également l'essayer avec curl à partir d'une ligne de commande.

curl -X POST https://maker.ifttt.com/trigger/ {event} / avec / key / my-secret-key

Maintenant, la clé n'est qu'une faible entropie et pourrait donc être inversée par la surveillance de vos demandes (sauf si vous les remplissez avec un bruit de haute qualité), mais la demande de sécurité par session est dans ce cas satisfaite par TLS qui gère la configuration du canal HTTPS .

Pour rendre la communication beaucoup plus sécurisée, IFTTT devrait spécifiquement prendre en charge l'authentification des points d'extrémité, mais cela semble dépasser la sécurité qui est appliquée aux autres liaisons côté service. Cela signifie que votre canal de fabricant vers IFTTT est actuellement aussi sécurisé que le canal IFTTT vers vos appareils ménagers.

Sean Houlihane
la source