There's a fairly detailed explanation of the solution to a similar equation here. See also this page, which can give you an automated step-by-step solution to such quadratic diophantine equations.
I'll also add that the command Reduce[8 x^2 - 8 x + 1 - y^2 == 0 && Element[x | y, Integers], {x, y}] will produce the answer to your particular problem in Mathematica fairly quickly. I'm making this an answer because the output is too huge to fit into the comments.
(C[1] [Element] Integers && C[1] >= 0 &&
x == 1/32 (16 +
4 (-2 (17 - 12 Sqrt[2])^C[1] +
Sqrt[2] (17 - 12 Sqrt[2])^C[1] - 2 (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) &&
y == 1/2 ((17 - 12 Sqrt[2])^C[1] -
Sqrt[2] (17 - 12 Sqrt[2])^C[1] + (17 + 12 Sqrt[2])^C[1] +
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) || (C[1] [Element] Integers &&
C[1] >= 0 &&
x == 1/32 (16 +
4 (-2 (17 - 12 Sqrt[2])^C[1] +
Sqrt[2] (17 - 12 Sqrt[2])^C[1] - 2 (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) &&
y == 1/2 (-(17 - 12 Sqrt[2])^C[1] +
Sqrt[2] (17 - 12 Sqrt[2])^C[1] - (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) || (C[1] [Element] Integers &&
C[1] >= 0 &&
x == 1/32 (16 -
4 (-2 (17 - 12 Sqrt[2])^C[1] +
Sqrt[2] (17 - 12 Sqrt[2])^C[1] - 2 (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) &&
y == 1/2 ((17 - 12 Sqrt[2])^C[1] -
Sqrt[2] (17 - 12 Sqrt[2])^C[1] + (17 + 12 Sqrt[2])^C[1] +
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) || (C[1] [Element] Integers &&
C[1] >= 0 &&
x == 1/32 (16 -
4 (-2 (17 - 12 Sqrt[2])^C[1] +
Sqrt[2] (17 - 12 Sqrt[2])^C[1] - 2 (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) &&
y == 1/2 (-(17 - 12 Sqrt[2])^C[1] +
Sqrt[2] (17 - 12 Sqrt[2])^C[1] - (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) || (C[1] [Element] Integers &&
C[1] >= 0 &&
x == 1/32 (16 +
4 (2 (17 - 12 Sqrt[2])^C[1] + Sqrt[2] (17 - 12 Sqrt[2])^C[1] +
2 (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) &&
y == 1/2 (-(17 - 12 Sqrt[2])^C[1] -
Sqrt[2] (17 - 12 Sqrt[2])^C[1] - (17 + 12 Sqrt[2])^C[1] +
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) || (C[1] [Element] Integers &&
C[1] >= 0 &&
x == 1/32 (16 +
4 (2 (17 - 12 Sqrt[2])^C[1] + Sqrt[2] (17 - 12 Sqrt[2])^C[1] +
2 (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) &&
y == 1/2 ((17 - 12 Sqrt[2])^C[1] +
Sqrt[2] (17 - 12 Sqrt[2])^C[1] + (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) || (C[1] [Element] Integers &&
C[1] >= 0 &&
x == 1/32 (16 -
4 (2 (17 - 12 Sqrt[2])^C[1] + Sqrt[2] (17 - 12 Sqrt[2])^C[1] +
2 (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) &&
y == 1/2 (-(17 - 12 Sqrt[2])^C[1] -
Sqrt[2] (17 - 12 Sqrt[2])^C[1] - (17 + 12 Sqrt[2])^C[1] +
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) || (C[1] [Element] Integers &&
C[1] >= 0 &&
x == 1/32 (16 -
4 (2 (17 - 12 Sqrt[2])^C[1] + Sqrt[2] (17 - 12 Sqrt[2])^C[1] +
2 (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1])) &&
y == 1/2 ((17 - 12 Sqrt[2])^C[1] +
Sqrt[2] (17 - 12 Sqrt[2])^C[1] + (17 + 12 Sqrt[2])^C[1] -
Sqrt[2] (17 + 12 Sqrt[2])^C[1]))

