|
wow!
ask a good forum get a good answer
thanks guys ill try this out later to day
Just in case any one is curious.
I'm taking a string password and converting it to a number value
that value = x
then you draw the line so it passes through x with a line with a random slope then you collect any two points off that line
then you give a point set to person 1
and give point set to person 2
they can not figure out what the password was unless they both meet and have figure plot out the line they make together
technically you could give you more than 2 points but any two of them can combine to give you the password
also if you wanted to do something with lets say a parabola (spell check) then it would take at least 3 people to figure out where the parabola touches X
thanks for all your help I hope it works
|
|
|
|
|
you dont need geometry for this, give both persons half of your password !
|
|
|
|
|
no
if i give you
"pass"
you could probably figure it out
also you would be reducing a 8 char password to basically 4 char for a brute force.
this way neither has anything that they can use. unless certain requirements are meet.
you could also do something like lock up one set in a safety depoest box and give your lawyer or your friend
when you die they would have access to your password if they were doing something with your estate.
we were thinking of using this at work so that one group could not do maintaince on a server with out some one from another group present with the other half of lets say roots password.
you wouldn't want anyone walking around with root password unless they needed to know it.
|
|
|
|
|
one more thing
in the event of a system failure or something like this
this type of password "encryption" you could decrypt with a calculator or a pencil
you don't nesscarly have to have a fancy program to undo it ( or do it for that matter)
|
|
|
|
|
private void button2_Click(object sender, EventArgs e)
{
Random random = new Random();
//random.Next(min, max);
int xmin, xmax, ymin,ymax;
xmin = Convert.ToInt16( textBox1.Text);
xmax = Convert.ToInt16(textBox2.Text);
ymin = Convert.ToInt16(textBox1.Text);
ymax = Convert.ToInt16(textBox2.Text);
//a random point:
Point pt1 = new Point(random.Next(xmin, xmax), random.Next(ymin, ymax));
//a second point in random direction, random distance (hence completely random):
Point pt2 = new Point(random.Next(xmin, xmax), random.Next(ymin, ymax));
//a third point on the same line:
int dist = random.Next(xmin, xmax);
Point pt3 = new Point((pt1.X + dist) * (pt2.X - pt1.X), (pt1.Y + dist) * (pt2.Y - pt1.Y));
textBox3.Text = pt3.X.ToString();
textBox4.Text = pt3.Y.ToString();
textBox5.Text = pt1.X.ToString();
textBox6.Text = pt1.Y.ToString();
textBox7.Text = pt2.X.ToString();
textBox8.Text = pt2.Y.ToString();
}
I got to at least compile in c# but as I'm watching it i still think its backwards
how can I define X first.
|
|
|
|
|
crash893 wrote: Point pt3 = new Point((pt1.X + dist) * (pt2.X - pt1.X), (pt1.Y + dist) * (pt2.Y - pt1.Y));
is incorrect.
|
|
|
|
|
would you mind telling me why its incorrect
or at least where its wrong
thanks
|
|
|
|
|
because it differs from what I gave you before
because you now are multiplying coordinates
because the way it was set up, you should get pt1 when dist=0 and pt2 when dist=1
...
|
|
|
|
|
a random point:
pt1=new Point(random(xmin, xmax), random(ymin, ymax));
a second point in random direction, random distance (hence completely random):
pt2=new Point(random(xmin, xmax), random(ymin, ymax));
a third point on the same line:
dist=random();
pt3=new Point(pt1.x+dist*(pt2.x-pt1.x), pt1.y+dist*(pt2.y-pt1.y));
----------------------------------------------
I made a few changes so it would compile in c#
On random i was getting:
random' is a 'variable' but is used like a 'method'
so i changed it to:
random.Next(xmin, xmax)
Then i had to define xmin and xmax as int
(i'm still a little unclear on how to use this)
then i changed
(pt1.x+dist*(pt2.x-pt1.x) to ((pt1.x+dist)*(pt2.x-pt1.x)
going back i have no idea why i did this but i changed it back and it works now
I don't want you to think i don't appreciate your help i just am a little lost on how this is working.
|
|
|
|
|
Hi,
my original post was pseudo-code (this is the math forum).
I assumed you would use real numbers for everything.
using ints for coordinates is OK, but the dist parameter must be a float,
so I suggest you do something like
float dist=random.Next(0,1000)/1000.0;
which gets a real number between 0.0 and 1.0
|
|
|
|
|
here is where im still not getting it
what variable would i use to input my secret code
say i want to put in 1234 how do i do that?
the way i saw it working is
password in -> Luc Pattyn's algo -> output = 2sets of xy corrndates
im probably missing something very obvous
|
|
|
|
|
I answered your original question about three points on a line;
I dont see how a password gets translated in one or more points;
and I dont believe your password story makes any sense
|
|
|
|
|
It makes sense it just might be my ability to explain it.
1) take a value (12)
2) take a some graph paper and on the draw a dot on 12x
3) draw a line of any slope you want
4) then pick any two points along the line you just drew vola
thats what im trying to do.
And again this could jsut go back to me not understanding something right infront of me but it appears to do these steps in some what reverse order
you make two points then run find what value that runs through which doesnt work becuase the value of x is what is important
I have been reading through the old post in this tread and it shouldnt be 3 points of freedom it should be 2 or mabey 1
if i know that one point is X=varable,y=0 (call it pnt0
couldnt i make a random point then draw a line
from that random point to Pnt0
then expand the line a little and get a diffrent value?
just thought of that but im not sure how to write it up.
thanks
|
|
|
|
|
Here is my new attempt at the code
Random random = new Random();
Point pnt1 = new Point(random.Next(1,1000) ,random.Next(1000));
Point pnt2 = new Point(Convert.ToInt16(textBox7.Text),0);
Point pnt3 = new Point(1,1);
float slope;
slope = (pnt2.Y - pnt1.Y) / (pnt2.X - pnt1.X);
pnt3.X = pnt3.X * (random.Next(1000) * slope);
pnt3.Y = pnt3.Y * (random.Next(1000) * slope);
|
|
|
|
|
Random random = new Random();
Point pnt1 = new Point(random.Next(10000) ,random.Next(10000));
Point pnt2 = new Point(Convert.ToInt16(textBox7.Text),0);
Point pnt3 = new Point(1,1);
int slope;
slope = (pnt2.Y - pnt1.Y) / (pnt2.X - pnt1.X);
int t = random.Next();
pnt3.X = t * slope + pnt2.X;
pnt3.Y = t * slope + pnt2.Y;
|
|
|
|
|
Since your password is based on geometry and simple graphing, and you, the user of this program, KNOW the entire password already, why don't you just randomly generate two points (using large integers) and draw a line through them. From that line, pick any two points and use it as each half of the password.
You could even use the(x,y) form to create a password like xy where if (x,y) was (1234, 2312) the password half would be 12342312.
This way you don't even have to generate so many lines in the first place. Of course, your password idea has many flaws, most notably the fact that any number-only password can be brute-forced quite easily.
I personally think you need a more secure password system, but the idea is neat Kudos.
|
|
|
|
|
1) the intent is not for it to be numeric only the converting of passwords to a numeric form is another process that doesn't really need to be in the math forum
2) of course some one needs to know the original password thats how you encrypt it
one seneario would be for a Manager of an it department to give one set of keys to one department and one set to another department for lets say the root of a server.
now neither side can do work on the server unless both departments are present.
3) the xy idea would work if it was numeric only. however as stated above its not also i like the idea of y=0 as a check sum
4) the other idea of this project is that it can be "undone" by simple math on paper. no computer is required in case of a computer failure the points are simple enogh to be written down on a piece of paper and undone
this can for the most part not be said about keys for other encryption.
|
|
|
|
|
Michael Sadlon wrote: You could even use the(x,y) form to create a password like xy where if (x,y) was (1234, 2312) the password half would be 12342312.
one other thing to note
this isn't splinting the password securely
if i gave out the first half of a password to someone and it wass "pass"
they could quickly guess what the rest of the password was and even if it wasnt a logical password like "3@!DE34s" they would still be halfway to brute forcing it.
8 to 4 char is a big difference in time.
the entire point of this is that neither side can guess because there are infinite possibility of what the other sides point may be.
|
|
|
|
|
I think this thread is a lot of effort for very dubious security benefits. I think that there are much simpler methods of achieving what you want, e.g.
1. Take your password and map it to a 256 bit number A (longer if you want to allow more characters in your password, shorter if you need less). Do this in some reversible way, e.g. encryption
2. Generate a 256 bit random number B.
3. Give A^B to one user and B to the other.
Neither user can decode the password, but together, (A^B)^B = A which can be decoded to the original password.
This can be easily extended to needing three users, generate an additional random number C, the keys are (A^B)^C, B, C and so on.
There are almost certainly recognised methods of achieving this that have been subjected to significant scrutiny.
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|
|
yes that will work
however
just because something is hard does not mean it should not be done. This is more of a training exercise for me. than an actually program that i have to prove is secure.
and again if you feel like reversing that with out the aid of a computer be my guest
on of my requirements is that this code is human decipherable. where it could be done with nothing but paper.
|
|
|
|
|
I wasn't trying to give you a hard time, but to be constructive.
crash893 wrote: just because something is hard does not mean it should not be done
I agree - but it is still not clear to me that the individual parts of the password wouldn't be amenable to some sort of dictionary attack for example.
crash893 wrote: than an actually program that i have to prove is secure
I thought in an earlier post you were going to use this to secure something - in which case you may need to know something about the security.
crash893 wrote: and again if you feel like reversing that with out the aid of a computer be my guest
The issue here is that someone trying to hack the system will almost certainly use a computer.
Anyway, good luck with it, I hope you get it working.
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|
|
no worries thanks for your input
|
|
|
|
|
|
Do you want to reform geometry because of True Type fonts handling is a complex task, don't you?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
The Grand Negus wrote: Real math is a highly-developed but obtuse system that we're trying to apply, with partial and scattered success, in a discrete universe.
Actually math is not only higly-developed, it's great!
The Grand Negus wrote: The point is that a tool should make the accomplishment of a job easier, not harder
Math is not a tool is a science. You can only say it is one of the best Tool we have to make a bit of light into the obscure Universe.
Anyway, good luck and enjoy yourself with you workplan.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|