Nous avons construit un module javascript qui peut être intégré dans des pages Web tierces. Lorsque ce module client est initialisé, il exécute une transaction au sein de notre application Web via une requête intersite.Longueur de la clé privée HMAC sha256 digest donnée donnée
La transaction consiste en un uuid externe, un e-mail et quelques propriétés méta supplémentaires. Ce message est signé avec un condensé HMAC sha256, en utilisant la clé API privée de notre partenaire.
exemple Ruby:
data = {
uuid: "ABCAFAFDS",
email: "[email protected]",
meta: {}
}
private_key = "Qd9fe0y2ezqfae4Qj6At"
signature = OpenSSL::HMAC.hexdigest(
OpenSSL::Digest.new("sha256"),
private_key,
data.to_json
)
la page web tiers, le client javascript est alors initialisé avec la signature et les données:
new Client(signature, data).execute()
; Initialement, notre plan était de permettre au client de créer une transaction partielle/incomplète au sein de notre système, puis de demander une demande dorsale ultérieure via notre API REST pour confirmer/finaliser la transaction. En supposant que nous puissions sécuriser le frontal, il serait préférable de supprimer l'exigence de confirmation dorsale. Pouvons-nous raisonnablement sécuriser le code client en utilisant des messages signés de cette manière? Si les données et le message signé sont disponibles dans le client, est-il difficile pour un mauvais acteur de forcer la longueur de la clé privée de l'API, étant donné la longueur ci-dessus?
Probablement mieux adapté pour http://security.stackexchange.com – deceze