# How can an amateur introduce a cryptographic algorithm?

I have a new cipher, and I want to get it properly vetted, but I don't have a strong way to prove its security properties. I'm an amateur without ties to a strong cryptographer/university. I have attempted a few indistinguishability proofs, but these are "back of the napkin" proofs and are likely not rigorous. (I have colleagues that have done cryptanalysis on it, but they are not theorem types.)

As a result, I feel that I don't stand a chance of getting it published without a proof of security, but I feel that I can't find someone to help without it being published.

How can I find someone willing to join on and help write a compelling proof, and generally help write a compelling paper, (or identify a weakness that prevents me from doing something stupid with the cipher)?

Given that I have done these things:

• Review previous ciphers, find they're not what you want, invent new cipher
• Internally analyze it (plots, prototype code, etc.)
• Socialize it to cryptanalyst peers, get tentative green light (rather, absence of red light - no new findings in a while)

Is this a reasonable path going forward:

• Brief it at an IACR rump session
• Have follow-on discussions at conference, express my need, find someone that way
• Submit as a work-in-progress in lower tier, but bonafide crypto conference
• Submit as a journal article

Is a rump session a good way to go to find interested math types, and/or as a first step to announcing the idea? Are there other alternatives, such as quarterly meetings of some group that might be willing to hear the idea?

Similarly, is there a good "starter conference" for crypto open to new ideas that might lack the mathematical rigor?

In contrast to this thread, How to publish a cipher (concept), the main answer suggests that formalisms are a prerequisite to publishing: "If you submit a cipher, one would expect at least a formal analysis of why you think this is a good idea." My question is what if you don't have that ability - how do you find someone that can help with that? The rest of the answers on the thread went into how to make it into a bachelor's thesis.

In additional defense of this thread, there are many great suggestions that don't appear on that other post. While I'm biased - but have nothing to gain - these threads are unique. I'm okay with marking as duplicate as long as somehow you can merge the useful answers below into the other question.

• I'd rather first contact local universities to see if anybody is willing to read through it. You could ask a professor to take a look or ask him if anybody else could take a look (student/post-doc). But pretty please make sure your protocol is formatted like a scientific paper before you do. And of course your idea has to be novel in some kind of way. There are hundreds of ciphers out there - for your cipher to succeed it must stand out in one way or another. That it is designed by you makes it special - but only to you. – Maarten Bodewes Aug 25 '17 at 14:23
• Slightly tangential, but could you say what your requirements are that no existing cipher meets? That's such a rare place to be. – Thomas M. DuBuisson Aug 25 '17 at 14:51
• I submitted a novel and relatively efficient public key encryption scheme to eprint and my submission was rejected (yes I used LaTeX). I would say make sure that you 1. have proof and 2. your proof is airtight. Ideally you could find a "real" cryptographer to help you and put their name on your paper. You may (or may not) have a hard time finding a willing and capable person. Just having a novel algorithm is probably not enough, even if that algorithm is potentially useful. It needs to be formatted and presented in a way that others will accept. – Ella Rose Aug 25 '17 at 16:27
• I don't believe I made my point clear; of those three options, option (c) is by far the most probable. If so, why would someone devote large amounts of time on it? And, yes, what you are asking for is someone to spend quite a lot of time on it. What you need to do is to prove that you know something about cryptography (easiest way: break other published ciphers), or at least put together the proof yourself. – poncho Aug 25 '17 at 21:36
• @eckes If it was possible, I would downvote that comment. It's not clear if that was meant as a joke, and could possibly be taken serious. Patenting a cipher is a terrible, terrible idea - and it surely is counter-productive to being taken serious by the cryptography community. – tylo Aug 28 '17 at 15:09

First, if it's a secret-key cipher, then you'll never find any proof of security—at best you'll, exhaust the standard cryptanalysis techniques and exhaust the brilliant ideas of the brilliant cryptanalysts. If it's a public-key cryptosystem, then at best you can prove reduction to a widely understood uniformly hard problem. If you're not already familiar with these facts, you won't get the attention of serious cryptanalysts.

Second, you need to convincingly demonstrate (a) that you understand the standard cryptanalysis techniques, and (b) that it does not fall to them. Cryptanalysts don't want to waste time doing your homework. If you haven't already done your homework, you won't get the attention of serious cryptanalysts.

There's no good textbook of which I'm aware on this subject, but you might start with

Bruce Schneier, ‘Self-Study Course in Block Cipher Cryptanalysis’, Cryptologia, 24(1), January 2000, pp. 18–34.

Third, if you want this to be anything more than an amusing intellectual exercise for bored cryptanalysts whose attention you've gotten, your cryptosystem has to fill a niche that nothing else does. Is it faster or lower-energy on some significant platform than every other cipher providing comparable security? Does it fill a specific need that no other cipher does, like a weird block size that is important for some particular reason?

For example, Gimli is a sponge with a much smaller state than Keccak-f1600, conveniently fitting in registers on more platforms, out of which one can build all manner of secret-key crypto gizmos. (Gimli is a very new design, with some preliminary theoretical cryptanalysis.)

If you propose a general-purpose stream cipher that's not faster than software ChaCha or hardware AES-CTR, or a general-purpose collision-resistant hash function that's not faster than software BLAKE2b or hardware SHA-3, you won't get the attention of serious cryptanalysts who aren't either just bored or hoping their novel pet cryptanalysis techniques that failed to break the aforementioned ones might break something.

This applies even to designs that already have been published: Maybe RIPEMD160 resists collisions better than SHA-1 does, but it's not worth the time of most cryptanalysts to study it. Maybe CAST6 is a better 128-bit block cipher than AES, but it's not worth the time of most cryptanalysts to study it.

Finally, if you want to get the attention of cryptanalysts, don't start with your cipher—start by showing that you are a competent cryptanlyst by using novel techniques to break crypto! Best if you can break existing cryptosystems that were previously unbroken, or break them worse than the best published attacks. This may be easier if you study cryptosystems that have received relatively little attention, including your own.

If you have a write-up demonstrating all of this—either a description of a novel cipher with evidence of resistance to standard cryptanalytic techniques and a reason to be interesting, or a novel cryptanalytic attack on an existing cipher—then a first step would be to submit it to the IACR cryptology eprint archive. That won't impart the kind of serious review that, e.g., the AES and SHA-3 competitions did, of course, but it may catch the notice of some cryptologists and will be easier to show to someone whose review you are seeking, and if you do get the attention of a serious academic cryptologist they will likely have followup suggestions for publication venues.

• I thank you for your reply. Perhaps I've been too self-critical. I have reasonably addressed your second point - several peers including a crypto professor have looked at it - as well as your third point, inasmuch as its possible these days to know everything that's out there. Let me try a different question - what's a good "first try" venue/conference for introducing new crypto work, assuming it's gone through close-quarters peer review? – Russ Aug 28 '17 at 13:57
• Gimli is a very new design, and maybe already broken or not at all... Mike presents an artificial design which allows to take advantage of symmetry and slow propagation between halves. Using Gimli with a valid sponge construction is absolutely not a problem. Mike's title is misleading in that sense. – Biv Aug 31 '17 at 8:35
• I did not mean to imply endorsement of the claim—only to acknowledge that it was made. I have edited that text in an attempt to clarify that. – Squeamish Ossifrage Aug 31 '17 at 14:01

Given that I have done these things:

• Review previous ciphers, find they're not what you want, invent new cipher

Your own comment is the biggest clue on what to do next. Every time someone posts a question like this here, this is what I point out. Why does your cipher exist? What were the shortcomings of existing ciphers, and why do you believe that your cipher improves upon the existing state of the art?

Without an answer to this question, your cipher is dead in the water. We have lots of selection to choose from at the moment, and without a compelling reason for why anyone should look at your cipher in particular, well, nobody is going to do so. So give them that compelling reason!

Once you've done that, be prepared to show what steps you've already taken to cryptanalyze your construction, including the work of others. Just remember "Schneier's Law", that it's trivial for someone to create a cipher they can't break, but exceedingly difficult to create one that others can't break.

Just keep in mind that the barrier here is extremely high. The above rule means that if you don't have a history of breaking existing constructions, it's very unlikely you've discovered a novel approach that warrants examination. And if you have, there's a lot of existing prior art out there that covers a whole range of use-cases; finding a new niche or an improvement on existing techniques is hard — Ph.D hard.

• Thank you for your reply - you put into words everything that I'm concerned about, including that it's secure against the chosen cryptanalyst :-) I'm finding difficulty believing that it's as good as it looks on the (Python) benchtop. How would you introduce something new and potentially useful? – Russ Aug 28 '17 at 14:01

The endeavor you try to enroll in may not look easy at all. Nevertheless I think a good approach to use would be to delimit your goal. For instance, the math required for cryptanalysis may be very complex but this is specially the case for public key encryption. My guess is that you are purposing a block cipher which required math is much less complex.

I good start would be to learn linear differential cryptanalysis perhaps reading this tutorial which make is easier to understand. This cryptanalysis is the most popular and AES was based on protecting against this kind of attack. For long time this cryptanalysis was kept as secret by government and industry. The tutorial uses a test cipher with the most common procedural used by ciphers which is weak and this is meant so for the purpose of learning the technique.

If you perform the linear and differential cryptanalysis on your cipher, surely it will be accepted in a Journal. Also it will determine if your cipher is strong or weak or perhaps if it need to tweaks to make it so. I guess your goal is not academic, so you may want better to summit your paper in one of these online Journals with a very high acceptance rate. Publishing your work will be true test of your cipher when inviting others to perform research on it.

Also, once your cipher is published you could challenge users in this forum as well the puzzling forum to break it.

Finally if you are not able to learn cryptanalysis you could just perform a benchmark on performance. Your cipher against the most common ciphers and if it were the case that your proposal is the fastest of all on them, then it could be good enough results for being published in a Journal or conference and let the community to research on its security since it would be interesting since it would be energy efficient. This wouldn't take that long since you could use libraries such as openSSL which has most common ciphers already implemented; you would just need to write your cipher in C/C++ to perform the benchmark (perhaps this is something you already have done).

• you may want better to summit your paper in one of these online Journals with a very high acceptance rate Which will remove all credibility of the paper. I do not even bother reading papers published by such institutions, because by definition, they are most likely garbage. – Biv Aug 26 '17 at 7:28
• @Biv as I say I assumed your goals were not academic. If you want to exploit the patent of the algorithm you wouldn't care about the prestige of the Journal. I assumed you were perusing a business goals. Also, your question says "Amateur", An person that is starting with the topic and having not University backup hardly would be accepted his paper on one those fancy Journals. Be practical if you goals are business based. – Luis Orantes Aug 27 '17 at 0:30
• Trying to use crypto algorithms to make money is a pretty awful business plan to be totally honest. There are so many free, widely available, highly reviewed, standardized algorithms, that paying for an obscure, unreviewed algorithm is pretty much silly. Getting into cryptographic algorithm design with a focus on developing a product to sell would be a very poor business strategy. – Ella Rose Aug 27 '17 at 15:06
• Thanks for your reply - I agree with your first two paragraphs (thanks for the link), (and good suggestion on puzzling), but I work in a position of reviewing the technical work of others, and always caution about citing anything in high-accept journals. If all I needed was a public website to share a paper, I would go to ArXive - actually, I'd go to email. – Russ Aug 28 '17 at 14:06

I imagine there are many steps that can be done to arrive at your goal. One idea that may help is to put it up on GitHub with an implementation in one of the main languages where it can potentially be used, for example C, C++. JavaScript, Java, or Python.

Besides being a good way to share, Git provides versioning features that may be useful if you will be implementing feedback from others. Also, with GitHub other engineers can commit changes and offer up pull-requests. This makes it easier to get other engineers to play and make changes to it. GitHub is familiar and people like participating on there. You can also get likes and stars on your GitHub project, which adds street cred.

Also, with GitHub, even if it never gets accepted by some esteemed institution, then at at least the other engineers that have the same need can utilize your approach or offer up implementations in other languages.

• put it up on GitHub with an implementation in one of the main languages where it can potentially be used, for example C, C++. JavaScript, Java, or Python.  NO! homebrew algorithm will (should) never be used without proper cryptanalysis. – Biv Aug 26 '17 at 7:25
• Putting it on github isn't necessarily bad by itself, but encouraging others to use it when it's not reviewed is irresponsible (and silly, considering the number of well reviewed and widely available algorithms). If you do put an under-researched algorithm on github, please don't advertise for use to in the real world. Remember that ciphers are like a digital lock that people will use to protect themselves - you need to be certain the lock will hold, otherwise real people could really get hurt and/or suffer losses in real life. – Ella Rose Aug 26 '17 at 19:49
• @EllaRose, by putting it on GitHub, others can review it. In the end of the day the technique cannot remain secret. It has to be known how its done. I do not follow your logic. It seems like you are saying that it should be kept a secret and kept from being reviewed by the general public. – Jose Martinez Aug 27 '17 at 1:55
• @JoseMartinez That is not at all what I said; putting the algorithm on github is good, but encouraging other people to use an un-researched algorithm to protect data in the real world is clearly irresponsible. To be clear, I did not -1 your answer, and was attempting to clarify bivs comment for future readers of your answer – Ella Rose Aug 27 '17 at 3:56
• @EllaRose It is going on GitHub so people can test it and collaborate. No one will ever know how good it is until they see it and play with it. – Jose Martinez Aug 27 '17 at 5:20