Quel est le lien entre l'informatique théorique et la sécurité?

11

Quand je pense à un logiciel qui n'est pas sûr, je pense qu'il est "trop ​​utile" et peut être utilisé abusivement par un attaquant. Donc, dans un sens, la sécurisation des logiciels est le processus qui rend les logiciels moins utiles. En informatique théorique, vous ne travaillez pas avec le monde réel. Y a-t-il donc des problèmes de sécurité lorsque vous travaillez avec de la théorie pure? Ou de l'autre côté de la médaille, l'informatique théorique affecte-t-elle le monde réel des personnes piratées? Si oui, quels sujets de sécurité sont considérés comme théoriques?

La tour
la source
9
La perspective de la théorie CS présentée est subjective et très discutable et n'est pas non plus tenue de poser la question. La question semble se concentrer spécifiquement sur le piratage, qui est un vaste sujet en soi (allant jusqu'aux techniques d'ingénierie sociale) et qui ne se rapproche pas de ce qu'implique la «sécurité». Pour ces raisons, j'ai rétrogradé. Cependant, j'ai l'impression que la question vient d'un bon endroit et comporte certains aspects intéressants, j'ai donc répondu ci-dessous.
Ross Snider

Réponses:

20

Votre intuition que "l'insécurité" est due à un logiciel "trop ​​utile" est correcte, dans un sens. Il existe une littérature théorique importante et croissante sur la «confidentialité différentielle» qui formalise votre intuition. Voir par exemple ici: research.microsoft.com/en-us/projects/databaseprivacy/dwork.pdf

ϵeϵ

0

Aaron Roth
la source
14

De nombreuses façons différentes:

Ross Snider
la source
Honnêtement, je ne pense pas que vous ayez jamais trouvé de vulnérabilité, patché un seul morceau de code ou même vu le fonctionnement interne d'une vulnérabilité du monde réel.
The Rook
8
En utilisant OllyDbg, j'ai corrigé ma dll gdi pour corriger la (deuxième) vulnérabilité du curseur (évidemment sans code source) avant le correctif de Microsoft mardi. En utilisant à nouveau OllyDbg, j'ai patché un émulateur de source fermée pour le rendre infaillible pour (embarrassant) une compétition Pokemon. J'ai trouvé un 0day dans un projet de webcam et j'ai obtenu un score assez élevé sur un grand nombre de wargames (y compris Blacksun, qui a activé ASLR et PaX). Je ne mentionnerai pas certaines des choses les plus néfastes que j'ai faites ... Haussement d'épaules; Pourquoi cela importerait-il si je l'avais ou non? S'il vous plaît, ne flambez pas.
Ross Snider
13
@The Rook: Si vous pensez que la liste de Ross a peu de lien avec la pratique actuelle de la sécurité des logiciels, dites-le. Peut-être même que donner quelques exemples serait utile, ou ajouter une réponse de votre part détaillant à quel point la recherche sur la sécurité TCS est éloignée des pratiques de sécurité réelles (ce qui, je pense, serait très intéressant à lire). Mais il n'est pas nécessaire de rabaisser Ross.
Joshua Grochow
10

Il y a beaucoup de motivation dans le monde réel pour l'étude des algorithmes de streaming provenant de la détection d'intrusion réseau. Le document ci-dessous utilise des algorithmes de streaming pour l'entropie empirique pour détecter les anomalies dans le trafic de votre réseau.

Yu Gu, Andrew McCallum et Don Towsley. Détection d'anomalies dans le trafic réseau à l'aide d'une estimation d'entropie maximale. In IMC '05: Actes de la 5e conférence ACM SIGCOMM sur la mesure Internet, pages 1–6, 2005

Joshua Brody
la source
8

Contrairement aux autres réponses, il s'agit davantage de "choses dont nous devons nous inquiéter lorsque nous disons que quelque chose est" en sécurité prouvée "", par opposition aux endroits où le TCS a été utilisé en sécurité. Ainsi, il aborde la première question des problèmes de sécurité lors de l'utilisation de la théorie.

Comme le disent les pirates, les résultats théoriques sont souvent tangentiels à la sécurité du monde réel. Ce type d'argument a été rendu plus théorique, scientifique et précis par Alfred Menezes et Neal Koblitz dans leur série de documents ' Another Look ' (attention: le site me semble un peu conflictuel, mais je pense que l'idée de base de remettre en question les hypothèses c'est tres important). Ils soulignent les faiblesses des hypothèses standard en cryptographie, même dans les articles fondateurs.

Quelques exemples (citant / paraphrasant quelques points de leur site):

  1. Un théorème de sécurité est conditionnel - il suppose l'intraçabilité de certains problèmes mathématiques.

  2. Souvent, l'hypothèse d'intractabilité est faite pour un problème compliqué et artificiel: dans certains cas, le problème est trivialement équivalent au problème de cryptanalyse pour le protocole dont la sécurité est "prouvée".

  3. Parfois, une épreuve a un grand écart d'étanchéité, mais les tailles de paramètres sont toujours recommandées comme si l'épreuve avait été étanche. Dans de tels cas, la preuve donne généralement une limite inférieure inutile sur le temps d'exécution d'une attaque réussie. En outre, un résultat asymptotique ne fournit pas nécessairement une assurance de sécurité pour les paramètres dans la plage utilisée dans la pratique.

  4. Un théorème de sécurité utilise un certain modèle de sécurité. Certaines attaques - en particulier les attaques par canal latéral - sont très difficiles à modéliser, et les modèles qui ont été proposés sont terriblement inadéquats.

Artem Kaznatcheev
la source
6

Les prouveurs de théorèmes ont été utilisés dans une certaine mesure pour prouver l'exactitude des logiciels, du matériel et des protocoles. Voir, par exemple, ici ou ici .

Le problème des données circulant de manière indésirable à travers les programmes (provoquant ainsi une fuite potentielle) a été modélisé théoriquement en utilisant la notion de (non) interférence; obtenez des pointeurs ici .

Raphael
la source
3

La décidabilité est une préoccupation centrale dans la recherche sur les langages de programmation. C'est-à-dire que beaucoup d'efforts sont investis dans la construction de langages de programmation qui n'acceptent que du code qui satisfait certaines propriétés. Les langages statiques typiques n'offrent que de faibles garanties, comme rejeter un programme si certaines méthodes n'existent pas, mais imaginez si le langage pourrait également lancer des programmes qui, par exemple, utilisent incorrectement des mutex ou tentent de lire au-delà de la fin des régions de mémoire. Il est clair que les problèmes de décidabilité arrivent rapidement (scénario le plus simple: spécifiez que votre compilateur ne doit accepter que les programmes qui se terminent), et il y a certainement des problèmes d'efficacité (le vérificateur de type ML a des cas doublement exponentiels).

Dans tous les cas, la communauté de recherche PL s'intéresse beaucoup à la sécurité (faites-vous confiance à votre navigateur pour exécuter du code étranger arbitraire?!), Et leurs questions mènent à de nombreuses questions de théorie CS classiques.

matus
la source
Tout langage de haut niveau approprié (lu: autre que C [++]) ne donne pas au programmeur le contrôle de l'accès à la mémoire, donc je considérerais ce problème résolu.
Raphael
@Raphael: Étant donné qu'une grande quantité de logiciels est toujours écrite en C et C ++, ce problème ne peut pas simplement être considéré comme résolu. De plus, les techniques de lutte contre les attaques par injection de code sur Javascript, par exemple, en sont encore à leurs balbutiements. Il y a beaucoup à faire.
Dave Clarke
1
Le fait que certains environnements ignorent les solutions existantes (parfois pour de bonnes raisons) ne rend pas le problème (ici: accès aux adresses mémoire interdites) moins résolu. Certaines choses difficiles à vérifier peuvent être facilement contournées par des invariants appropriés. Vous pouvez, par exemple, demander une preuve formelle de résiliation à votre programmeur (cf. Isabelle / HOL).
Raphael