Here’s a fascinating paper: "Cryptic Mining in Light of Artificial Intelligence"
http://citeseerx.ist.psu.edu/viewdoc/do … 1&type=pdf
Abstract—“The analysis of cryptic text is hard problem”, and
there is no fixed algorithm for generating plain-text from cipher
text. Human brains do this intelligently. The intelligent cryptic
analysis process needs learning algorithms, co-operative effort of
cryptanalyst and mechanism of knowledge based inference
engine. This information of knowledge base will be useful for
mining data(plain-text, key or cipher text plain-text
relationships), classification of cipher text based on enciphering
algorithms, key length or any other desirable parameters,
clustering of cipher text based on similarity and extracting
association rules for identifying weaknesses of cryptic algorithms.
This categorization will be useful for placing given cipher text
into a specific category or solving difficult level of cipher textplain
text conversion process. This paper elucidates cipher textplain
text process first than utilizes it to create a framework for
AI-enabled-Cryptanalysis system. The process demonstrated in
this paper attempts to analyze captured cipher from scratch. The
system design elements presented in the paper gives all hints and
guidelines for development of AI enabled Cryptic analysis tool.
Translation: The paper discusses how they tried to come up with a program that can automatically figure out what kind of system a cipher uses before cracking it.
It is an idea I’ve been thinking about a lot recently. I.e., take a huge pile of known cipher texts, and train a machine learning algorithm on them so it can automatically categorize them. Then unleash the algorithm on all the unsolved ciphers that we know about.
It’s an exciting idea. They have only gotten it to work for 2 kinds of cipher systems so far though. But there’s a lot of potential there, IMO.
How does a machine learning algorithm work? Roughly speaking.
It covers a wide swath of algorithms, but basically they all attempt to map a set of inputs into a set of outputs. A simple example is to take a pile of inputs with known outputs, and partition it into a training set and a testing set. On the training set, you teach the algorithm to classify or map the inputs to the known outputs. Usually the error in the classification is fed back to the algorithm so the predictions can be adjusted (different algorithms go about this in different ways). Eventually, you run the algorithm on the testing set to see how accurately the trained algorithm can predict the outputs based on the inputs it has not been exposed to during training.
Another way to look at it is that you are being "agnostic" as a programmer. Often, you know something about a problem domain before trying to write a algorithm that can give you useful output. For example, if you want to write a program that can recognize faces, you could use your knowledge of face shapes to code up a program that directly looks for facial features in images. This can be a daunting task. So, you could take the "agnostic" approach: You could make a training set of faces (with the faces already identified), and make a machine learning algorithm learn the mapping between the features of the images and the locations of the faces. Essentially you are trying to get the machine learning algorithm to figure out the function that maps image features to faces, so you don’t have to.
Yet another way to look at it is that a machine learning algorithm hillclimbs in the space of functions that map inputs to outputs, minimizing the error between expected outputs and the actual outputs the algorithm produces.
Ted is gonna be really mad if it ends up being an AI computer that exposes him as Zodiac…
MODERATOR