Loading...
 

CryptoniteImage

Áron bácsi felvetésére belevágtunk egy új rendezvénysorozatba, melynek célja, hogy a snowden-i szivárogtatások fényében
  • újra felmérjük, megismerjük a rendelkezésre álló kriptográfiai módszereket,
  • számba vegyük a rendelkezésre álló eszközöket,
  • szükség esetén meghatározzuk és megvalósítsuk a hiányzó komponenseket,
  • olyan ökölszabályokat fogalmazzunk meg, melyek egy átlagember számára is hasznosak lehetnek.

Események

Upcoming:
(ahol nincs feltüntetve előadó zárójelben, ott még keressük)

  • szimmetrikus kriptók
  • hash alapú kriptó
  • lattice-based kriptó
  • code-based kriptó
  • keccak sponge konstrukciója (esetleg arx alapú is - ez xsalsa20/chacha20 alapja)
  • multiparty kripto

Jön


  • Illési Zsolt (?): Mobil forensic (2017. ??. ??)

Régiek

Köszönjük Endrének a budapesti mirror biztosítását!

Jegyzetek


ECC



A sage worksheet a csatolmányok között megtalálható. Kipróbálható itt sagecloud.

sage example code
F2 = GF((2^255)-19)
# y^2 == x^3 + 486662*x^2 + x)
Curve25519 = EllipticCurve(F2, [0, 486662, 0, 1, 0])
P25519 = Curve25519.point([9,F2(9^3 + 486662*9^2 + 9).sqrt()])
print(Curve25519)
print "basepoint", P25519

Elliptic Curve defined by y^2 = x^3 + 486662*x^2 + x over Finite Field of size \
57896044618658097711785492504343953926634992332820282019728792003956564819949
basepoint (9 : 14781619447589544791020593568409986887264606134616475288964881837755586237401 : 1)

F1 = GF((2^251)-9)
#x^2 + y^2 = 1 − 1174*x^2*y^2
Curve1174 = EllipticCurve(F1,[0,4/1175-2,0,1,0])
print(Curve1174)

Elliptic Curve defined by y^2 = x^3 + 3276669759268734891773391703437338669039342119261743620691033760223924732354*x^2 + x over Finite \
Field of size 3618502788666131106986593281521497120414687020801267626233049500247285301239

secret = randrange(P25519.order())
print 'secret', secret
public = P25519 * secret
print 'public', public
secret 1467490697454842568936475396114863822922126114013609471608883888030173455623
public (14181934965252511487015101029388688573760508176091550377448791623325663079263 : \
27550729654639090468645035001871244348239408328781753808485607098532078341262 : 1)

E = EllipticCurve(GF(1009),[5,1]); E
g = E.gens()[0]; (g, g.order())
rA = randrange(g.order()); RA = rA*g; (rA, RA)
rB = randrange(g.order()); RB = rB*g; (rB, RB)
kA = rA*RB; kA
kB = rB*RA; kB
Elliptic Curve defined by y^2 = x^3 + 5*x + 1 over Finite Field of size 1009
((930 : 789 : 1), 1039)
(505, (414 : 616 : 1))
(534, (414 : 393 : 1))
(99 : 106 : 1)
(99 : 106 : 1)

# encryption
n = randrange(g.order()); NA = n*g; Sa = n*RB;
# use Sa to derive symmetric key K, and send(NA, enc(Sa, plain))
sb = NA * rB; (Sa, sb)
# use sb to derive symmetric key K and dec(sb, cipher)

((738 : 535 : 1), (738 : 535 : 1))

## SHA256(message)
h = 0x7aac4de65f04b1b03d97537e03005247e10a41321811f948a85c2fe3bab5ce5d
# sign(rA, h)
## ephemeral key Alice uses to sign her message
k = randrange(g.order())
K = k*g
# get the x coordinate of the ephemeral key
t = ZZ(K[0]) # t = the x coordinate of K
s = (h + rA*t)/k % g.order()
###### verify(h, t, s, RA)
w = (1/s) % g.order()
u = (w*h) % g.order()
v = (w*t) % g.order()
F = u*g
H = v*RA                                # uses Alice's public key, A
Q = F + H

## Q should be the same as K
(Q, K)
((631 : 359 : 1), (631 : 359 : 1))

pts = [ g * x for x in range(g.order()) ]
plot(sum([ plot(p, hue = 0.1) for p in pts ]), aspect_ratio = 1)

Image

Upcoming Events

No records to display