[Vala - Project Open Source]: Vala-Checksum




Vala-Checksum est une Gui développé en Vala et Gtk3+. L'application permet de calculer et de comparer les hashs des fichiers.

Compilation et exécution sur Gnu/Linux:
~$ valac --pkg gtk+-3.0 ChecksumGtk.vala
~$ ./ChecksumGtk

Hashs supportés:

  • MD5
  • SHA1
  • SHA256
  • SHA512

Le code source est présent sur Github.

[Bitcoin] Le hash : Quelques utilisations avec les crypto-monnaies






Je sais ce que vous pensez en voyant le titre, mais même s'il m'arrivera de parler de drogues dans le futur (à l'occasion de l'histoire de Silk Road), il s'agit contrairement aux apparences d'un concept cryptographique: les fonctions de hachage.

Une fonction de hachage est typiquement une fonction mathématique qui transforme un objet potentiellement très gros et compliqué en une suite de caractères de taille fixe. Par exemple, la fonction sha256 (dont nous reparlerons ici) transforme ce pdf de la constitution française, qui fait 368 533 octets (sachant qu'il faut un octet pour coder un caractère de l'alphabet) en la chaîne de 64 caractères[1] suivante:

21b18f3d68e39167da331fd3dbbf22fc49bc9be221f32cfff1634ebc8999499b
Vous allez me dire, c'est génial, on a réduit la constitution française à 64 caractères. Par contre, on a perdu pas mal de choses en route.. on ne demandera pas aux juristes de travailler avec cette version réduite.

Effectivement, l'intérêt d'une fonction de hachage ne réside pas dans la préservation de l'information. En général, on utilise une fonction de hachage pour l'un des deux buts suivants:
- créer un index de peu d'objets mais chacun étant très complexe et sans numérotation évidente: ce n'est pas l'objet de cet article; - cacher une information tout en pouvant prouver qu'on la possède. Toutes les fonctions de hachage utilisées dans ce but ont la propriété essentielle qu'il est impossible de retrouver le texte qui a été haché à partir de son hash.

Ce deuxième but se retrouve par exemple lorsque vous enregistrez un mot de passe sur un site auquel vous vous inscrivez: si le site est un minimum sérieux, il ne va pas stocker votre mot de passe directement, mais son hash. Quand vous vous reconnectez au site, le site vous demande votre mot de passe, mais au lieu de le comparer avec ce qu'il a enregistré, il en calcule le hash et compare ce hash avec le hash qu'il avait enregistré. Quel intérêt?
Supposons que le site se fasse attaquer et que quelqu'un arrive à voler la base de données du site. Si elle contient tous les mots de passe, l'attaquant peut ensuite se faire passer pour vous sur ce site ou un autre sur lequel vous utiliseriez le même mot de passe. Si elle contient seulement les hashs, l'attaquant ne peut même pas se faire passer pour vous sur ce site: il est incapable de retrouver votre mot de passe à partir de son hash[2].

Preuve sans révélation d'information

Supposons que vous êtes un journaliste d'investigation (profession qui se fait rare, diront les mauvaises langues) qui dispose d'un document numérique confidentiel appartenant à une entité X, que vous voulez marchander contre une certaine information. Ne voulant pas risquer un guet-apens, vous convenez de vous retrouver sur un site de chat, couvrant votre adresse IP par Tor, et vous vous retrouvez face à un interlocuteur dont vous n'avez aucun moyen d'établir l'identité et donc l'affiliation à X. Il pourrait s'agir d'un service secret, ou de n'importe qui d'autre qui est intéressé par l'information. Vous ne voulez donc pas risquer de perdre votre atout en le donnant à n'importe qui, mais votre interlocuteur n'acceptera de parler que si vous lui prouvez que vous la détenez. La solution? Calculez le hash du document, et donnez le hash à votre interlocuteur.
  • S'il s'agit d'un imposteur: il lui est aussi facile de remonter au contenu que pour vous de retrouver la constitution à partir de 21b18f3d68e39167da331fd3dbbf22fc49bc9be221f32cfff1634ebc8999499b.
  • S'il s'agit de X: il saura immédiatemment, en calculant le hash de son côté, que vous ne bluffez pas.


Preuve de travail accompli

J'ai déjà parlé dans mon billet précédent des preuves de travail accompli, traduction libre du proof-of-work de Satoshi. Une des propriétés intéressantes qu'on attend d'une fonction de hash est que ses caractères soient équiprobables, c'est-à-dire qu'étant donné une suite de caractères aléatoire, la probabilité que disons la i-ème lettre du hash de cette suite de caractères soit un 0, un 1, ..., un e, un f soit la même en hexadécimal (1 / 16). Dans ce cas, supposons que je cherche un hash qui commence par un zéro en prenant le hash d'un texte généré au hasard (par exemple un nombre). Il me faudra en moyenne 16 essais avant de réussir.
Supposons à présent que je veuille un hash qui commence par 10 zéros. Il me faudra alors en moyenne 16^10 essais avant de réussir. Et ainsi de suite.
L'idée de Satoshi pour implémenter la preuve de travail est de demander aux mineurs de produire un hash d'un nombre aléatoire concaténé avec des informations spécifiques au mineur et au bloc et d'ajuster la difficulté du minage pour maintenir une production régulière de blocs (et donc de la récompense associée) toutes les dix minutes, en faisant augmenter le nombre de zéros à obtenir au fur et à mesure que la puissance totale fournie augmente.

Établir une chronologie

J'ai un peu mis sous le tapis la question de comment savoir si un nouveau bloc proposé sur le réseau a bien été miné après le dernier bloc de la blockchain actuelle. Pourquoi est-ce important? Supposons que l'on ne vérifie pour accepter un bloc que le fait que toutes les transactions qui figurent dedans sont valides étant donné l'historique; autrement dit que personne ne redépense deux fois de l'argent, ou ne dépense de l'argent qu'il ne possède pas.
Cela ne suffit pas.
Un mineur peut très bien créer un bloc contenant une seule transaction sûre, par exemple entre des comptes qu'il possède lui-même et qui ne pourront pas changer de solde sans son intervention. Il mine ce bloc longtemps à l'avance, sans être en compétition avec qui que ce soit, et puis dès qu'il l'a trouvé, il le propose au réseau. Le réseau l'accepte et le mineur touche la récompense. Ce comportement est nuisible au réseau puisque le mineur ne joue pas son rôle de validation des transactions, mais se comporte en "parasite" en touchant simplement la récompense. En gros, au lieu que tous les mineurs travaillent au prochain bloc, et que l'un d'eux gagne à la lotterie, tous les mineurs jouent à une lotterie différente en parallèle.
Pour éviter cela, le protocole Bitcoin demande au mineur d'inclure un hash du bloc précédent dans la chaîne de caractères sur laquelle il fait la preuve de travail. Ainsi, il n'est pas possible de commencer à travailler au minage du bloc actuel avant que le bloc précédent n'ait été miné: cela impose une chronologie (le mineur n'ayant pas plus de moyen de deviner le hash du prochain bloc que de retrouver la constitution à partir de la chaîne précédente...).

[1] Il s'agit de la représentation en hexadécimal, soit en base 16, pour laquelle chaque symbole code un nombre entre 0 et 2^4-1=15, il en faut donc 256/4 = 64 pour obtenir 256 bits [2] Sauf bien sûr si vous utilisez un mot de passe courant, par exemple "123456" ou "password" ou encore un mot du dictionnaire avec un numéro à la fin: la première chose que l'attaquant fera sera de calculer le hash de tout un tas de mots de passe connus, pour voir si votre hash correspond à l'un d'eux. Vous comprenez maintenant pourquoi on vous demande toujours de choisir un mot de passe compliqué..

Source: Blogchain

Comment configurer un minier Bitcoin (Bitcoin Miner)?



Il existe trois grandes catégories de matériel pour minier les Bitcoin (Bitcoin Miner), chacun plus cher et plus puissant que les autres. Ce guide de mise en place d'un "Bitcoin Miner" explique chacun d'eux, et parle de la façon de les faire fonctionner/travailler.

À ce stade, vous allez comprendre le fonctionnement des Bitcoin, et ce que signifie l'exploitation minière. Mais, nous avons besoin de la théorie et de la pratique. Comment pouvez-vous mettre en place un matériel minier de Bitcoin (Bitcoin Miner) et commencer à générer de l'argent numérique? La première chose que vous allez avoir besoin de faire est de décider quel matériel vous aller utiliser en tenant compte de :

1- Taux de Hachage:


C'est le nombre des calculs que votre matériel peut effectuer durant chaque seconde, comme s'il essaie de résoudre un problème mathématique (voir ce lien pour plus d'information - anglais). Les taux de hachage sont mesurés en Mégahashes, Gigahashes et Térahashes par secondes (MH/s, GH/s, TH/s). À chaque montée du taux de hachage vous avez plus de chance de résoudre un bloc de transaction. La page de comparaison de matériel minier - Bitcoin Wiki - est un bon endroit pour obtenir des informations sur les taux bruts de hachage pour les différents matériels.

2- La consommation d'énergie :


La puissance de calcul nécessite de l'électricité et ce qui coûte, par la suite, de l'argent. Il est recommandé de regarder la consommation d'énergie de votre matériel en Watts pour faire le bon choix. Vous devez vous assurer que vos revenus ne seront pas toutes dépensées en électricité.
Donc, utilisez ces deux facteurs (nombre de hashs et la consommation en Watts) pour savoir combien de hashs vous pouvez générer par Watt en divisant le nombre de hashs générés par le nombre de Watts utilisés.
Par exemple, si vous avez un matériel qui génère 500 GH/s et qui prend 400 Watts de puissance, alors vous obtenez 1.25 GH/s par Watt. Vous pouvez vérifier votre facture d'électricité ou utiliser un calculateur de prix de l'électricité en ligne pour savoir combien cela signifie en monnaie espèce.
Cependant, il y a une mise en garde ici. Dans certains cas, vous aurez besoin d'utiliser votre ordinateur pour exécuter le matériel minier (Bitcoin Miner). Votre ordinateur a sa propre consommation d'électricité qui s'ajoute au matériel minier. Faut en tenir compte dans votre calcul.

3- Matériel minier Bitcoin (Bitcoin Miner):


Il existe trois grandes catégories de matériel minier Bitcoin: GPU, FPGA, ASICs. Nous allons les explorer en profondeur ci-dessous.

- CPU/GPU Minier Bitcoin:


C'est la catégorie la moins puissante des matériels minier Bitcoin qui est votre ordinateur lui même. Théoriquement, vous pouvez utiliser le processeur de votre ordinateur pour les miniers Bitcoin, mais dans la pratique, c'est si lent par rapport aux normes d'aujourd'hui.
Vous pouvez améliorer votre taux de hachage de Bitcoin en ajoutant du matériel graphique pour votre ordinateur de bureau. Les cartes graphiques disposent d'unités de traitement graphiques (GPU). Ils sont conçus pour les traitements mathématiques complexes, les jeux vidéos haut de gamme par exemple. Cela les rend particulièrement bonnes au hachage SHA nécessaires pour résoudre les blocs de transaction.
Vous pouvez acheter des GPU de deux fournisseurs principaux: ATI et Nvidia. Les cartes haut de gamme peuvent coûter des centaines d'euros, mais aussi, vous donner un avantage significatif sur les hachages avec les CPU. Par exemple, une carte graphique ATI 5970 peut vous donner plus de 800 MH/s par rapport à un CPU qui sera généralement vous donner moins de 10 MH/s.
Une des belles choses sur les GPU, c'est qu'ils laissent aussi vos options ouvertes. Contrairement à d'autres options à discuter plus tard. Ces unités sont utilisées avec le principe de la "Cryptocurrencies" autre que Bitcoin.
Litecoin, par exemple, utilise une autre forme de l'algorithme de travail pour Bitcoin, appellé Scrypt. Cela a été optimisé pour être amical avec les processeurs et les GPU ce qui en fait une bonne option pour les mineurs de GPU qui veulent basculer entre les différentes monnaies.
L'exploitation minière de GPU est en grande partie mortes ces jours. La difficulté minière Bitcoin est accélérée tant avec la sortie de l'ASIC plus puissante que les cartes graphiques GPU. Si vous ne voulez pas les utiliser, vous feriez mieux de vous équiper avec une carte mère qui peut prendre plusieurs cartes graphiques et faire des économies sur les sources de courant lors de l'exécution.

- FPGA Minière Bitcoin:


Les FPGA (Field Programmable Gate Array) est un circuit intégré conçu pour être configuré après avoir été construit. Cela premet à un fabricant de matériel minier d'acheter les puces en volume, puis les personnaliser pour l'exploitation minière Bitcoin avant les mettre dans leur équipements.
Puisqu'il sont personnalisées pour l'exploitation minière, ils offrent des améliorations de performances sur les processeurs et les GPU. Les FPGA mono-puce ont été vus fonctionnant à environt 750 Mégahashes/s. Il est bien entendu possible de mettre plus de FPGA dans une boite.

- ASIC Minière Bitcoin:


C'est la meilleure solution pour les minières Bitcoin. Les ASIC (Application Specific Integrated Circuits) sont spécifiquement conçu pour faire selement une chose: Des minières Bitcoin à des grandes vitesses, avec relativement une faible consommation d'énergie. Parce que ces puces doivent être conçues spécifiquement pour cette tâche mais coûteuses. Au moment de l'écriture, les unités se vendent avec des vitesses proche de 5-500 Gégahashes/s. Il existent aussi des ASIC qui peuvent toucher les 2 Térahashes/s.

4- Calculer la rentabilité de l'exploitation minière:


Avant de faire votre achat, calculez la rentabilité projetée de votre mineur grâce à l'excellent calculateur de la rentabilité de l'exploitation minière du Bloc Genesis ou celui-ci. Vous pouvez paramétrer des entrées tels que le coût de l'équipement, le taux de hachage, la consommation d'énergie et le prix de Bitcoin actuelle pour voir combien de temps il faudra pour rembourser votre investissement.
L'un des autres paramètres clés ici est la difficulté de réseau. Cette mesure détermine combien il est difficile de résoudre les blocs de transaction, et il varie selon le taux de hachage du réseau. La difficulté est susceptible d'augmenter sensiblement même pour votre dispositif ASIC, de sorte qu'il pourrait être utile d'augmenter cette métrique dans la calculatrice pour voir la donne de votre retour d'investissement en tenant compte de ceux qui se joignent à la partie (ceux qui ont lancé leurs minières de Bitcoin).
Pour plus d'informations : Utilisez ce guide sur le calcul de la rentabilité de l’exploitation minière.

Une fois que vous avez choisi votre matériel, vous aurez besoin de faire plusieurs autres choses:

 Télécharger le logiciel:


Selon le matériel que vous choisissez vous aurez besoin d'exécuter le logiciel pour en faire usage. Généralement lors de l'utilisation GPU et FPGA. Vous aurez besoin d'un ordinateur hôte exécutant deux choses : La norme Bitcoin client et le logiciel d'exploitation minière.

 Client Bitcoin Standard:


Ce logiciel relie votre ordinateur au réseau et permet l'interaction avec les clients de Bitcoin. Il permet aussi de transmettre les transactions et le suivi des chaînes des blocs (Block chains). Il faut noter qu'il faut un certain temps pour télécharger tous les "block chains" de Bitcoin pour commencer le travail. Le client Bitcoin relie efficacement les information entre votre mineur et le réseau Bitcoin.

 Logiciels d'extraction Bitcoin:


Le logiciel d'exploitation de Bitcoin charge le matériel pour faire le travail difficile en passant par des blocs de transaction à résoudre. Il existe une variété de ces logiciels en fonction de votre système d'exploitation. Ils sont disponibles pour Windows, Mac OS X, Gnu/Linux ...etc.

Vous aurez besoin d'un logiciel d'exploitation minière pour votre ASIC aussi, bien que certain modèles plus récents sont pré-configurés de sorte que vous n'avez que les brancher et les mettre sous tension.
Il existe même un système d'exploitation minière conçu pour fonctionner sur le Raspberry Pi, une carte-ordinateur basée sur Linux à faible coût, conçue pour consommer très peu d'énergie. Cela pourrait être utiliser pour alimenter un ASIC mineur de connexion USB.

Moment de reflexion:


Maintenant vous être parés. Bien pour vous. Je parie que vous pensiez que vous alliez ramasser les Bitcoins de partout ... non?
Malheureusement non. Vous aurez une grande de chance d'exceller avec votre minière Bitcoin si vous travaillez avec d'autres personnes. Vous pouvez en savoir plus à ce sujet dans le prochain article.

GenHash : Générer des hashs de vos fichiers



GenHash est un petit logiciel qui permet de générer des hashs de vos fichier de faibles volumes comme les plus volumineux en utilisant le module hashlib de python 3 et PyGI comme interface utilisateur.
GenHash prend une taille de bloc de lecture de fichier égale à 65536 octets.
Pour plus d'information, veuillez visiter ce lien sur Wikipédia.

**12/12/2014** 
**Update** - Support des hashs suivants :

  •     SHA1
  •     MD5
  •     SHA256
  •     SHA384
  •     SHA512
  •     OpenSSL : ripemd160
Pour télécharger ce logiciel ou bien le forker, veuillez visiter son repository sur Github.