22110

J'ai l'impression d'avoir lu un truc similaire il y a quelque temps (non, pas la transmission de virus par le son ^^)
Et en même temps ça ne m'étonne pas (Je m'étais même brièvement posé cette question il y a un peu plus d'un an). Sur les CPU modernes, avec certaines config, on entend facilement, et nettement le bruit électronique lié à l'activité du CPU (ou de la CG) dès lors qu'on a une bonne ouïe… C'est d'ailleurs assez perturbant parfois.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

22111

mon collègue cryptographe depuis 1984 avait l'air de trouver ça intéressant, je lui fais plus confiance qu'au web.

Attention, ça ne marche qu'avec CERTAINS ordis et UNIQUEMENT gnupg 1.0

./22097 old de 2 semaines sur twitter grin

22112

squalyl (./22111) :
Attention, ça ne marche qu'avec CERTAINS ordis et UNIQUEMENT gnupg 1.0
Qu'avec certains ordis, je veux bien le croire, mais qu'avec gnupg... pourquoi ?
avatar

22113

Parce que ça exploite l'implémentation particulière de la crypto dans cette version de GNUPG (les algos et instructions utilisées, etc.)

Mais c'est déjà énorme d'avoir montré que la technique était faisable.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22114

Du coup, c'est le fait que ça soit ouvert qui est une faiblesse (pour cette situation particulière, j'entends) ?
avatar

22115

Pas vraiment. Ils auraient pu faire la même attaque avec de la crypto closed-source en désassemblant le code. C'est plus laborieux mais ça reste faisable.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22116

wep... c'est une attaque "de coté", c'est-à-dire que la faiblesse est due à une fuite d'informations causée par l'implémentation logicielle/matérielle (en l'occurrence d'abord matérielle, non-couverte par le logiciel ). Je ne pense pas que ça change grand chose avec les autres softs actuels, bien qu'il faille recommencer le travail pour chaque soft/version.
J'imagine qu'aux prix des performances, y'a moyens de bruiter aléatoirement le signal à mort pour noyer l'information. Je ne sais pas si certains softs le font déjà ?
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

22117

Un certain nombre d'algos cryptographiques utilisent en effet du blanchissage de signal, au prix de la performance. GnuPG 2 le faisait déjà pour cet algorithme en particulier.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

22118

./22114 Non pas du tout. C'est le code qui est mal gaulé.

On en fait TRES grand cas dans la carte à puce.

Il ne faut pas que le code dépende des datas.

je peux donner un exemple.

Pour comparer deux buffers, tu fais comment?

int memcmp(unsigned char *a, unsigned char *b, int len) {
	int i;
	for(i=0;i<len;i++) {
		if(a[i] != b[i]) return DIFFERENT;
	}
	return EQUAL;
}



Ce code marche, mais c'est FATAL ERROR FAIL DO NOT WANT RAYE LES YEUX en crypto. Pourquoi? parce que son temps d'exécution dépend des données, donc en injectant des données choisies, tu peux, en mesurant le temps d'exécution, deviner les valeurs pondues par un truc secret interne, et ce octet par octet.

Tu fais ça, t'es MORT. N'importe quel hacker un peu malin en ressort une clé, un buffer, etc.

Voici ce qu'il faut faire:
int memcmp_secure(unsigned char *a, unsigned char *b, int len) {
	int i;
	unsigned char resultat=0;
	for(i=0;i<len;i++) {
		resultat |= (a[i] ^ b[i]);
	}
	return resultat;
}


Ici, on accumule tous les bits différents de a et b dans resultat, ça ne dépend ni du contenu des données, ni de la longueur à comparer (qui est généralement fixée à une taille style 8 ou 16)
a la fin, resultat vaut zero si et seulement si les contenus de a et b sont égaux.

c'est bien mieux.
Et encore, on peut mieux faire au moins 3 choses différentes.

La difficulté, c'est qu'il faut TOUT coder en ayant ces principes en tête. Il y a d'autres techniques, que je ne peux pas révéler, mais du même goût, dont l'objectif est de cacher la dépendance aux données.

Les techniques à utiliser ne sont pas publiées, mais l'ouverture du code ne change absolument rien au problème.

22119

tres interessant smile
bon pis c'est cool au final le code "mieux" est aussi celui qui est mieux niveau perfs grin
avatar
HURRRR !

22120

là oui, mais c'est pas toujours le cas smile

22121

Pour continuer sur le hacking (peut-être déjà posté):

http://www.tomshardware.fr/articles/hack-webcam,1-46489.html

Le coup de la reprogrammation des périphériques externes pour sortir de la VM est assez vicieux...
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

22122

22123

http://www.usatoday.com/story/news/nation/2013/12/18/secret-service-target-data-breach/4119337/

Potentiellement 40 millions de numéros de cartes bancaires dans la nature aux USA. Polom polom.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22124

c'est la fraude magnétique de plus en plus importante (et le coût de traitement exorbitant des chèques) qui a fait passer la france à la puce grin

22125

./22119 : bah heu pas vraiment non ? (à moins que tu ne fasses que des comparaison de buffers égaux ou qui diffèrent plutôt sur la fin des données)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22126

De ce que je comprends, dans la méthode "naïve", dans le cas ≠, l'exécution s'arrête sur un branchement (non prévisible), donc si tu compares de petits buffers (taille à déterminer), cette méthode te donnera toujours des performances inférieures. (La pénalité que tu vas te taper fait qu'au total, ça va te coûter plus cher qu'une vérification intégrale du buffer)
Tandis que dans la méthode "cryptographique", qui te garantit un temps constant, les itérations de la boucle peuvent (à priori) s'enchaîner parfaitement, et donc des performances seront elles aussi constantes. (Pour le meilleur comme pour le pire wink)

(Et si la raison c'est pas ça, ben je sèche cheeky)

Après, en principe, tu utilises le memcmp du système et tu ne te poses pas de questions… sauf cas particulier genre crypto ou code embarqué, bien entendu cheeky
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

22127

Oui pour de très petits buffers c'est probablement mieux de toujours éviter les sauts, mais dans un contexte de crypto avec mettons des buffers de 4ko à comparer, je serais quand même étonné qu'en moyenne ça ne soit pas plus intéressant de payer le prix du saut et du fail de prédiction de branchement ? (en plus je ne sais pas si les µC avec lesquels travaille peut-être squalyl sont tellement concernés par ces mécanismes)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22128

Faut aussi voir la distribution des buffers concernés,... ( si genre dans 8 cas sur 10 testé ils sont égaux les sauts suxent clairement, mais de toute ça sux en général embarrassed )
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

22129

./22127 > Ben si, tu y gagnerais, mais comme l'a expliqué squalyl, tu ne veux pas qu'un méchant hacker puisse déterminer des choses sur tes données à partir du temps que tu auras mis à les vérifier. (Et ça semble logique que tu t'intéresses d'abord à la sécurité des données avant de regarder les performances ^^)

Dans nos vies à nous (enfin, je pense), on va probablement plus souvent comparer de petites chaînes de caractères ou des petits blobs binaires, donc l'algorithme "temps constant" aurait sans doute souvent son utilité. (Et encore, ce ne serait pas toujours le cas)

(En fait y'a un autre défaut de l'algorithme "naïf", sur les vrais CPU : Il va être partagé par tout le code. En gros, les échec de comparaison vont être retenus à un niveau global, ce qui fait que les comparaison n+1 ou même n+2 seront impactées par la comparaison n. Plus que non constants, les temps peuvent même être chaotiques)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

22130

Je répondais initialement au post de bear (./22119) qui disait "en plus d'être plus secure cette méthode est meilleure en perf", ce qui ne me semble pas évident. Bien sûr que quelle que soit la réponse on prendra de toutes façon la méthode sécurisée si elle est nécessaire.

Dans notre monde à nous je ne sais pas, il faudrait connaître en moyenne la longueur des buffers comparés avec memcmp et le ratio "égaux/différents", pour la position du 1er octet différent on peut peut-être supposé que c'est réparti de façon à peu près homogène (et encore, peut-être que ça aussi c'est faux). Ce sont des données que je n'ai pas, mais là comme ça au pif j'aurais plutôt tendance à penser que la solution avec branchement a l'avantage.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22131

voila (cross).
Zeph (./22128) :
dans un contexte de crypto avec mettons des buffers de 4ko

c'est jamais le cas, on compare en général 64 ou 128 bits, et dans le pire cas les 2048 bits d'un cryptogramme RSA. 4ko c'est l'ordre de grandeur de la mémoire data disponible grin
Zeph (./22128) :
payer le prix du saut et du fail de prédiction de branchement ?

le prix du hack du produit est bien plus élevé grin

la performance n'est pas vraiment notre problème en fait, le memcmp builtin nous ferait gagner des miettes, on n'en fait pas assez souvent pour que ça ait un impact grin

22132

avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22133

22134

What? The Pope's catholic?

People complain that Windows come with no anti-virus, yet Microsoft knows that if it provides something competitive it will end up in the courts. Damned if you do and damned if you don't...
By DArtiss on 20 Dec 2013


C'mon PCP

No mention in the article the McAfee was actually the worst (despite being a paid for product)
No Bullguard included?
By JStairmand on 19 Dec 2013


Norton is junk.
Any study that claims Norton is good was rigged.


I lol'd
avatar
"- Nigga you know what the fuck I want, nigga: I want your motherfuckin' Daytons, and your motherfuckin' stereo! And I'll take a double burger with cheese!
- WHUT?"
I LOVE TO HATE/I HATE YOUR LOVE -AND I CAN'T FEEL AFFECTION FOR PEOPLE LIKE YOU!
CAALGOOONNNNN [TELLMESOMETHINGIDONTKNOW SHOWMESOMETHINGICANTUSE PUSHTHEBUTTONSCONNECTTHEGODDAMNDOTS] (Si Dieu existe il doit me détester...)

22135

bob> ouais nan mais tout a fait grin
en disant ca je pensais pas particulierement aux petits buffers, j'ai juste lu trop vite le premier bout de code de squalyl smile
en fait j'avais pas lu 'return' mais un |= dans une var (me demande pas comment triso)
avatar
HURRRR !

22136

Ah, toi aussi tu utilises les fontes de Yoshi Noir pour lire yN ? trioui
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22137

Tiens je connaissais pas ce concept, c'est intéressant : http://en.wikipedia.org/wiki/Sorting_network
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22138

Je connais le concept, mais ne comprends pas dans l'exemple pourquoi 3 et 4 ne prennent pas le premier chemin, ce qui devrait inverser leur position d'arrivée.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

22139

?
Je ne vois pas d'erreur dans l'exemple.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22140

./22136> ach.. c'est donc ca grin
avatar
HURRRR !