Vipal De Anshu asks about the challenge problems.
He wants to know if you can give more explanation on tips and techniques
and tricks to help students solve them before the final to help them prepare.
This is a tough question.
There's no magic way that I can give you that's going to really solve this.
The way to learn to solve challenges like this is really to practice
and to solve increasingly difficult ones.
Doing cryptography depends on persistence in a lot of cases.
It also depends on creativity and being open-minded.
And often people think a challenge is going to be really hard,
so they don't try the easy things.
So definitely make sure that you understand what the challenge is asking for
and think about the easy things first before assuming that you have to try something
really complicated.
Also a big difficulty is deciding are you on the right path
and should you keep trying that, or are you stuck in a rut
and you need to try something different?
This is one of the things that makes cryptography hard.
The challenges in this class are all contrived challenges.
They are intended to give you a sense of what it would be like to break a cryptosystem
that's not contrived to be breakable.
But that's a little different, and that means it's a challenge for us
to construct ones that are good.
I know there was a lot of grumbling about the challenge in Homework 2
that many people spent a lot of effort on it trying to do complicated things to break it
and learning about random number generation and the different ways to do that.
And I hope you found that worthwhile and got something out of it.
It turned out the actual sequence was quite easy to break
if you looked at it in the right way.
It was not intended to be quite as easy as it was,
and I apologize for some of the obvious flaws in it.
I won't say specifically what they are now
because I know some people still want to try the challenge on their own.
But that was a mistake on my part, and I'm sorry that it turned out to be
as trivial once you looked at it in the right way as it was.
But it was intended to be something where you could break it without doing a lot of research
into other types of random number generation schemes.
That wasn't the intent of the question.
The intent was if you looked at it different ways--
looking at the bit patterns, looking for any kind of patterns in the sequence--
that would be what you need to break it.
We will have some interesting challenge questions for Homework 4
that will scale up to levels of difficulty.
I think one of the things to get better at solving challenges
is to have the practice of solving ones.
You build your confidence as you solve easier challenges and move on to harder ones.
So what the challenge for Homework 4 will be,
there will be some that we give you some pretty good hints about how to solve
and we think will still be hard and involve an interesting challenge to solve them,
and there are others that we're not going to tell you about what to solve.
And we're not going to tell you which ones are the easy ones
and which ones are the hard ones.
This is going to give you a different kind of experience solving a challenge.
I hope people enjoy it and get something out of it.
Definitely to be able to attack it, the first step is to understand
the underlying crypto behind it, and that hopefully will come out of the lecture
and solving the other problems.
But the short answer--and I'm getting a little bit rambling
because I don't have a good answer that says if you do X, Y and Z
all of a sudden challenge problems will get easy
and you'll be able to break all these known cryptosystems--
it really takes practice.
It also takes sort of having an open mind and thinking about different things to try
and creativity, but the way to learn is to practice
and to try to solve increasingly hard challenge problems.
The other thing that is really the way to learn is to work with other people.
If you can do that with someone in person who's experienced at solving these kinds of problems,
that's really the best way, to have that kind of back and forth.
If you can do that on the forums, that also is great.
And so the challenge problems that have worked well,
we've seen a discussion in the forum where people have suggested the different approach
they have tried.
Other people might add to those or suggest an alternative.
Those are the things that will really help you develop
in terms of solving problems like this--having that kind of a discussion
and learning about approaches other people take
but still putting the work in to try to think of ways to solve it yourself.
So I hope you'll enjoy the future challenge problems
and they will give you a good sense and build your confidence in solving them.
I realize that it can be frustrating, and that's part of the difficulty
is if you knew you were on the right path and making progress every step,
that would be great. But that's not usually the way things work in cryptography.
