Question

Folks,

Nous avons un défi technique intéressant. Comment écrire un fichier d'audit sécurisé qui permet de suivre l'utilisation d'un logiciel pour les droits de licence peuvent être basés sur l'utilisation rendant ainsi plus abordable pour ceux qui l'utilisent moins.

Plus précisément, TickZoom vend une plateforme de trading de génération d'alpha pour les fonds spéculatifs qui coûte actuellement 2 000 $ / mois à licence, y compris le soutien (augmentera bientôt plus que doubler). C'est très bien pour les institutions, mais trop cher pour les particuliers. Les individus demandent souvent un prix plus bas en échange d'un% des bénéfices réalisés à l'aide du logiciel jusqu'à ce qu'ils peuvent se permettre de payer les frais fixes.

Nous aimons cette proposition. Mais nous avons besoin d'un moyen fiable de vérifier les bénéfices effectivement générés sur la plate-forme et un moyen d'empêcher les utilisateurs de « jeu » en supprimant ou en remplaçant le fichier de rapport de vérification ainsi des gains inférieurs à réelle.

Cette application est écrit en C # et cette partie du système est obscurcie au moins ce qui rend difficile à déchiffrer le code.

L'autre exigence est d'écrire dans le fichier pour chaque commerce qui se produit de façon à permettre une plus grande en matière d'audit de profondeur dans le cas où l'utilisateur se sent il y a une différence dans le montant total. De cette façon, les bénéfices commerciaux individuels peuvent être comparés aux déclarations des courtiers.

Il est, bien sûr, suppose que le fichier sera crypté.

Mais toutes les idées sur la façon de le faire « inviolable »? Surtout contre simple tentative de suppression?

Ma première hypothèse est de rendre le logiciel nécessite toujours un fichier d'audit de pré-existante ou il refusera de fonctionner.

Ensuite, lorsque nous fournissons le logiciel, il obtient livré avec un fichier d'audit « vide », mais qui, en fait, a une sorte de vérification inviolable.

Les utilisateurs suivants de technique évidente pourraient essayer de « falsifier » avec le fichier serait pour quelqu'un simplement sauvegarde fichier « vide » d'origine et utiliser plus tard pour remplacer le fichier d'audit plus tard, trompant ainsi le système en pensant qu'il était un nouveau départ.

Peut-être qui peut être résolu par inclus une sorte de « dernier horodatage de mise à jour » et une heure d'expiration.

En outre, des idées de solutions totalement différentes sont les bienvenus. Nous pourrions être contraints dans ce cas, d'ajouter une capacité « téléphone maison » afin que les métiers journaliser à notre serveur central. Mais cela semble désavantageux et ajoute potentiellement un autre point de défaillance dans une application critique. En général, ils n'aiment pas beaucoup « caractéristiques de téléphone à la maison » avec de bonnes raisons évidentes.

Cordialement, Waynek

Était-ce utile?

La solution

Voici une pensée - chaque fois que l'utilisateur quitte une session avec le logiciel, générer un hachage basé sur le journal d'audit. Chiffrer le hachage, puis l'écrire dans un autre fichier, peut-être caché parmi vos binaires, ou au registre.

Lorsque l'utilisateur ouvre l'application suivante, lisez le fichier journal, re-générer le hachage et voir si elle correspond à la valeur enregistrée. Si elle ne le fait pas, arrêtez l'application avec un « fichier de vérification falsifié » message d'erreur.

Pas tout à fait la preuve imbécile, mais serait assez solide.

En outre, vérifier cette question

Autres conseils

La déclaration de votre problème est:

  • nous ne faisons pas confiance au client; le client pourrait être hostile.
  • nous voulons que le client nous envoyer des données que nous pouvons faire confiance.

Il n'y a pas de solution à ce problème. Vous pourriez aussi bien dire: « Je veux trouver deux gars, un nommé Bob, un nommé Bill, tel que Bob est un pied plus grand que le projet de loi et le projet de loi est un pied plus grand que Bob ». Tu ne vas pas trouver deux gars avec cette propriété.

Vous pouvez absolument pas faire confiance positivement tout ce qui vient d'une machine que vous ne possédez pas qui pourrait être détenu par un client hostile. Mon conseil est de ne pas perdre votre temps précieux à essayer de résoudre un problème impossible; passer ce temps à rendre votre serveur, que vous ne possédez et faites confiance, robuste contre les clients hostiles.

Non, je ne crois pas qu'il y ait quelque chose que vous pouvez faire autre que signaler tous les gains en temps réel retour à vos serveurs, mais même cela a des problèmes.

- Edit:

Vous êtes seulement des options, comme je le vois, sont:

  • Autre que le système basé sur le Web (ou au moins client léger), rendant ainsi toutes les transactions sur le serveur

Il est clair que cela est probablement assez peu pratique, si vous êtes déjà développé tout un système basé localement

  • Pensez un peu de système complexe qui est « dur » pour briser et les gens d'espoir ne se cassent pas

Et combiner au sein de cette méthode, une sorte de profilage qui montre si les magasins gagnent X, et tout à coup X-sigificantAmount, vous pouvez déterminer qu'ils ne sont pas encore rentables plus longtemps, donc tricher sans doute le système (ou sortir des affaires :) Mais ce confine à une toute atteinte à la vie privée, et peut ne pas être du tout le cas.

Pratiquement, je pense que vous aurez besoin de peser les risques contre le profit possible, ou trouver un autre angle sur la façon de vendre à ces personnes (ne laisser l'interface / app gérer elle-même X dans le total des fonds, si elle passe au-dessus , demandera version pro, ou autre).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top