bonjour,
Je travail sur un serveur FTP(FileZilla) dont j'aimerai sécuriser les communications en utilisants un cipher qui n'existe pas dans la liste des CipherSuites. Par où dois-je commencer ?
Merci d'avance!
Version imprimable
bonjour,
Je travail sur un serveur FTP(FileZilla) dont j'aimerai sécuriser les communications en utilisants un cipher qui n'existe pas dans la liste des CipherSuites. Par où dois-je commencer ?
Merci d'avance!
Désolé je devais être de mauvaise humeur.
Tu veux que ton soft écrit en java puisse utiliser des cipher qui n'existent pas dans la JCA ?
Il te faut trouver d'autres provider. Regardes du côté de BouncyCastle si par hasard il y aurait pas le cipher qui te convient.
C'est quel algo que tu veux d'ailleurs ?
Salut,
Je ne suis pas sûr que BouncyCastle gère MacEliece, par contre flexiprovider oui. Tu peux regarder la doc, en utilisant ce provider tu auras ce Cipher.
Comme dit par marco, il vaut mieux utiliser JCA pour ce genre de choses et des implémentations sures (BouncyCastle, Flexiprovider, ...) plutôt que des implém "maison"
A plus
Reprenons calmement...
Tu veux utiliser McEliece. Par défaut cet algorithme n'est pas disponible.
As-tu implémenté toi même cet algorithme ?
Si oui, es-tu sûr de ton implémentation (respect des standards, robustesse, ...) ? as-tu une implémentation respectant la JCA (lien ci dessus par Marco) ?
Si non (je préférerais cette solution personnellement), il faut trouver un provider qui fournit cet algorithme. J'ai cité Flexiprovider ci-dessus qui le fait. Dans ce cas il faut installer le provider comme tu trouveras expliqué dans la documentation, et ensuite instantier ton Cipher comme n'importe quel autre...
Je viens de retomber sur un post de toi sur le même sujet auquel j'avais répondu avec deux liens utiles mais n'avais pas eu de nouvelles de ta part. As-tu essayé ? La documentation donne la marche à suivre complète, où es ton problème ?
Il te faut écrire ton implémentation conformément à l'architecture de la JCA puis rajouter le provider comme n'importe quel autre (BouncyCastle, ... etc...)
EDIT : Jamais fait ça mais bon courage :)
Oui mais donc qu'as-tu tenté ? quelle erreur as-tu ? Un peu de code et de détails seraient les bienvenus.
le nom du Cipher avec Flexiprovider est "McEliecePKCS" d'après la doc
EDIT: un doute m'assaille d'un coup, est-ce que ton server FTP auquel tu te connectes sait utiliser le système McEliece ? C'est quand même pas super courant comme algo...
A priori, FileZilla Server utilise pour son chiffrement FTPS GnuTLS et cette librairie ne semble pas disposer de l'algorithme que tu veux utiliser.
Cela semble mission impossible ...
Oui c'est exactement le doute qui m'a sauvagement assailli par derrière comme un fourbe. McEliece a des inconvénients de tailles qui font qu'il est très peu utilisé.
@AbdeL02: il y a une raison particulière pourquoi tu veux utiliser McEliece et pas RSA ? On ne sait toujours pas bien factoriser les grands nombres, donc autant en profiter... De plus, arrêtez moi si je dis une énormité, mais je ne suis pas sûr que le format X.509 permette de stocker des clefs McEliece (qui sont des matrices...).
TLS fait un échange de clefs en utilisant RSA ou Diffie-Hellman si ma mémoire est bonne, et la signature via RSA ou DSA.
Bref je ne crois pas que ton problème soit résoluble avec TLS...
Il te faut d'abord répondre à la question posée par George7. Ton algorithme est-il soluble dans X.509 ?
Ton algo c'est un symétrique ou un asymétrique ?
Là tu as un problème un peu chaud à résoudre.
Si la réponse est oui, alors il te faut trouver un serveur écrit en Java qui te permette de rajouter un provider, puis modifier le code source.
Les certificats X.509 utilisés devront être générés en indiquant qu'il faut privilégier ton algo plutôt que ce qui se fait normalement en TLS c'est à dire RSA + AES.
Ca me parait une entreprise titanesque car McEliece est un algo asymmétrique, donc serait utilisé pour l'échange de clef ou la signature. Soit... Que nous dit la RFC TLS pour les Cipher Suites connues ?
Pour RSA:
Pour Diffie-HellmanCitation:
CipherSuite TLS_RSA_WITH_NULL_MD5 = { 0x00,0x01 };
CipherSuite TLS_RSA_WITH_NULL_SHA = { 0x00,0x02 };
CipherSuite TLS_RSA_EXPORT_WITH_RC4_40_MD5 = { 0x00,0x03 };
CipherSuite TLS_RSA_WITH_RC4_128_MD5 = { 0x00,0x04 };
CipherSuite TLS_RSA_WITH_RC4_128_SHA = { 0x00,0x05 };
CipherSuite TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = { 0x00,0x06 };
CipherSuite TLS_RSA_WITH_IDEA_CBC_SHA = { 0x00,0x07 };
CipherSuite TLS_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x08 };
CipherSuite TLS_RSA_WITH_DES_CBC_SHA = { 0x00,0x09 };
CipherSuite TLS_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x0A };
Et pour les autres algos ?Citation:
CipherSuite TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x0B };
CipherSuite TLS_DH_DSS_WITH_DES_CBC_SHA = { 0x00,0x0C };
CipherSuite TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = { 0x00,0x0D };
CipherSuite TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x0E };
CipherSuite TLS_DH_RSA_WITH_DES_CBC_SHA = { 0x00,0x0F };
CipherSuite TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x10 };
CipherSuite TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x11 };
CipherSuite TLS_DHE_DSS_WITH_DES_CBC_SHA = { 0x00,0x12 };
CipherSuite TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = { 0x00,0x13 };
CipherSuite TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = { 0x00,0x14 };
CipherSuite TLS_DHE_RSA_WITH_DES_CBC_SHA = { 0x00,0x15 };
CipherSuite TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x16 };
Donc si tu as le courage, tu écris une RFC, enfin... plein de RFC pour TLS mais aussi surement une pour un format X.509v4 pour expliquer comment on stock une clef sous forme de matrice dans un certificat, etc etc....Citation:
Note: Additional cipher suites can be registered by publishing an RFC
which specifies the cipher suites, including the necessary TLS
protocol information, including message encoding, premaster
secret derivation, symmetric encryption and MAC calculation and
appropriate reference information for the algorithms involved.
The RFC editor's office may, at its discretion, choose to publish
specifications for cipher suites which are not completely
described (e.g., for classified algorithms) if it finds the
specification to be of technical interest and completely
specified.
A mon avis utilise RSA ;)
EDIT : ayant relu la RFC X.509, les types de clefs supportés sont RSA, Diffie-hellman et DSA, donc vraiment utilise RSA !