From c084e33544d34cef03c6cb0dfbe0f5df885a9f17 Mon Sep 17 00:00:00 2001 From: Morgan_KR <53516171+jeonmogeon@users.noreply.github.com> Date: Sun, 4 Jul 2021 04:53:44 +0900 Subject: [PATCH] Add files via upload --- crack.py | 11 +++ ct.dat | Bin 0 -> 163840 bytes ecc.py | 73 ++++++++++++++++++ elas.py | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++ prince64.py | 114 ++++++++++++++++++++++++++++ princecc.py | 142 +++++++++++++++++++++++++++++++++++ pt.dat | Bin 0 -> 163840 bytes teat.py | 25 +++++++ tmp.py | 175 +++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 749 insertions(+) create mode 100644 crack.py create mode 100644 ct.dat create mode 100644 ecc.py create mode 100644 elas.py create mode 100644 prince64.py create mode 100644 princecc.py create mode 100644 pt.dat create mode 100644 teat.py create mode 100644 tmp.py diff --git a/crack.py b/crack.py new file mode 100644 index 0000000..494b940 --- /dev/null +++ b/crack.py @@ -0,0 +1,11 @@ +from prince64 import prince + +plainfile = open("pt.dat", "rb") +cipherfile = open("ct.dat", "rb") + +pbyte = plainfile.read(8) +cbyte = cipherfile.read(8) +pbytearay = [((a&0x0F)<<4)|((a&0xF0)>>4) for a in list(pbyte)][::-1] +cbytearay = [((a&0x0F)<<4)|((a&0xF0)>>4) for a in list(cbyte)][::-1] +a = prince(pbytearay,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]) +a.start() \ No newline at end of file diff --git a/ct.dat b/ct.dat new file mode 100644 index 0000000000000000000000000000000000000000..544326d72b3669b70600769ba98e243b6c4dc437 GIT binary patch literal 163840 zcmYJ3V~`|W!)@EPZQHhOOxt!(+qP}nwry+L#?ehZU(-`#KT+3N}1a_rPgZNhcP#cG4#Azqcl_+I&z@S>R~e}J+KevqV7tB znHm8W`oc&p$EtCo;1iN)spQcU@GEe>@)Q}U{~-vYCpUl^+WfgoWe#XR9wTt@V&u*{ z*fFW7+M``s@H*$98(Q^}a@$ZyoR*Eex*n#Sy0Bm<`nqRr<=2*~ljz8Frwa{&rzVw! zcGpmsx&))*sLJDjHr;*!zDZNCqLZEV55?*=S>C%W<+iNH5#l{U(lIx{+ZJ{88oLh0 zJ$Zur!IpuvkD3^S=`Rvtaq7h@)=0?|HyP|;NZhMZFYWsN14iHa=ZErf(M-24!~SsR zoSo;EIUuLyHV3nEsZOt*+WVw%C^N=gbxM)Ghm5}a`ACT@j5K<(!a`O<@)f;VfHEWTK60FMR@h*vuO7!q3UF)B`u`Anra=m1j`H1Z8&POmiCfNe^~0 zKjufb;bDXKtYS93@b}r~2Q@WN4@CaXWIvmB($CAm&8b&P(H2)$TpSvuenw#0{=R=o z{oq5)Ihq`N1qJx`Cq%i7ZiW*sy25snASV{rWjU`T#8>dq7<=JEFGm}Tj!|>eQ%s%) zEpseKlaW%69Pg?v6J5tAQpU$J+P@Xhz}{nkm*vTY{b?Ho=V_;uCHm2OiNw*HsVkvQ zE{Eh;IdN_16z%M-!~4*$G-BW&Ee{;(b-!7ZVrRok?-020mnx*aTCVZ2%O$J{QE|cr zcu{@&5ZMt$8{aXt#8V~&nvVoixiib-ZG5i(pt1mqvvcA5DRnA%g}eCv2;8Rd^(>mDi-s<32x>|T+PW}pa;x5$ju{G zgEhRGSOMW4Mset!p7S9kP-kQxp7Y=H-0gJ@{e;Ak=b4++O6I&e`LZZlc=c+tC~YR* z54%(}sc~rhqwU4|m-+kfa)K#b@rhrA3~LIEL@44$P>#W2)V*~LJk|7_XO-0c8Lj!)Uq9o+n z?jfGIB%ae^MstwQHe+j7a%R@|z5F57f-$kv9s)FTYBQxrcoI_Gz_68umVD?rp-9$K z1pxE_Iv_Y zVJ9&_)M&CJGMCJ{MOW)(?M`^|@T;BdGjCsj$Gb`=#hlXv#jZd90er#4`y$h5D3U8_ zzhtNhZXo>(s+I{DoSy`%N@wF!1LP?%-C!exe|1_f$mds(g)m%|2;F-)arFnPAyUX4*mnYO-l~uUeZmYNKKn-$(t;CveMqZ?_>QZ zo0-O~6tAy@#Puxm>0Y$+I((YfLfPArq&Sg42awZ)`&5p2+b9u7ckr-=iDHSUl

H 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

+F4rIKo)k1N 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 literal 0 HcmV?d00001 diff --git a/ecc.py b/ecc.py new file mode 100644 index 0000000..5e91f75 --- /dev/null +++ b/ecc.py @@ -0,0 +1,73 @@ +from random import * +import math +A = 0 +B = 7 +P = 2**21 - 1# 2**256 - 2**224 + 2**192 + 2**96 - 1 + +def doubleing(point): + x1 = point[0] + y1 = point[1] + + lamda = ((3*(x1**2)+A) % P) * ((2*y1)**(P-2) % P) % P + x2 = (lamda**2 - 2*x1) % P + y2 = ((x1 - x2)*lamda - y1) % P + + return (x2, y2) + +def adding(point1, point2): + x1 = point1[0] + y1 = point1[1] + x2 = point2[0] + y2 = point2[1] + + lamda = (((y2 - y1) % P) * ((x2 - x1)**(P-2) % P)) % P + x3 = (lamda**2 - x1 - x2) % P + y3 = ((x1 - x3) * lamda - y1) % P + + return (x3, y3) + +def muling(point, n): + double = doubleing(point) + if(n==2): + return double + elif(n==1): + return point + else: + log2n = int(math.log(n, 2)) + mul = {} + ddowl = double + num = 2 + count = 1 + mul[2] = double + mul[1] = point + + while(log2n>count): + tmp = doubleing(ddowl) + num = num*2 + mul[num] = tmp + ddowl = tmp + count += 1 + + what = 1 + whatadd = [] + + while(n): + if(n % 2 == 1): + whatadd.append(what) + what = what * 2 + n = int(n / 2) + + result = mul[whatadd[0]] + del(whatadd[0]) + if len(whatadd) >= 1: + for i in whatadd: + result = adding(result,mul[i]) + + return result + +if __name__=="__main__": + count = randint(0,2**1000) + x1 = randint(0,2**1000) + y1 = randint(0,2**1000) + res = muling((x1,y1),count) + print(hex(count), res, sep='\n') \ No newline at end of file diff --git a/elas.py b/elas.py new file mode 100644 index 0000000..8634ffc --- /dev/null +++ b/elas.py @@ -0,0 +1,209 @@ +from dataclasses import dataclass +from random import randint + + +@dataclass +class PrimeGaloisField: + prime: int + + def __contains__(self, field_value: "FieldElement") -> bool: + + return 0 <= field_value.value < self.prime + + +@dataclass +class FieldElement: + value: int + field: PrimeGaloisField + + def __repr__(self): + return "0x" + f"{self.value:x}".zfill(64) + + @property + def P(self) -> int: + return self.field.prime + + def __add__(self, other: "FieldElement") -> "FieldElement": + return FieldElement( + value=(self.value + other.value) % self.P, + field=self.field + ) + + def __sub__(self, other: "FieldElement") -> "FieldElement": + return FieldElement( + value=(self.value - other.value) % self.P, + field=self.field + ) + + def __rmul__(self, scalar: int) -> "FieldValue": + return FieldElement( + value=(self.value * scalar) % self.P, + field=self.field + ) + + def __mul__(self, other: "FieldElement") -> "FieldElement": + return FieldElement( + value=(self.value * other.value) % self.P, + field=self.field + ) + + def __pow__(self, exponent: int) -> "FieldElement": + return FieldElement( + value=pow(self.value, exponent, self.P), + field=self.field + ) + + def __truediv__(self, other: "FieldElement") -> "FieldElement": + other_inv = other ** -1 + return self * other_inv + + +@dataclass +class EllipticCurve: + a: int + b: int + + field: PrimeGaloisField + + def __contains__(self, point: "Point") -> bool: + x, y = point.x, point.y + return y ** 2 == x ** 3 + self.a * x + self.b + + def __post_init__(self): + + self.a = FieldElement(self.a, self.field) + self.b = FieldElement(self.b, self.field) + + if self.a not in self.field or self.b not in self.field: + raise ValueError + + +@dataclass +class Point: + x: int + y: int + + curve: EllipticCurve + + def __post_init__(self): + + if self.x is None and self.y is None: + return + + self.x = FieldElement(self.x, self.curve.field) + self.y = FieldElement(self.y, self.curve.field) + + if self not in self.curve: + raise ValueError + + def __add__(self, other): + + if self == I: + return other + + if other == I: + return self + + if self.x == other.x and self.y == (-1 * other.y): + return I + + if self.x != other.x: + x1, x2 = self.x, other.x + y1, y2 = self.y, other.y + + s = (y2 - y1) / (x2 - x1) + x3 = s ** 2 - x1 - x2 + y3 = s * (x1 - x3) - y1 + + return self.__class__( + x=x3.value, + y=y3.value, + curve=secp256k1 + ) + + if self == other and self.y == inf: + return I + + if self == other: + x1, y1, a = self.x, self.y, self.curve.a + + s = (3 * x1 ** 2 + a) / (2 * y1) + x3 = s ** 2 - 2 * x1 + y3 = s * (x1 - x3) - y1 + + return self.__class__( + x=x3.value, + y=y3.value, + curve=secp256k1 + ) + + def __rmul__(self, scalar: int) -> "Point": + + current = self + result = I + while scalar: + if scalar & 1: + result = result + current + current = current + current + scalar >>= 1 + return result + + +@dataclass +class Signature: + r: int + s: int + + def verify(self, z: int, pub_key: Point) -> bool: + s_inv = pow(self.s, -1, N) + u = (z * s_inv) % N + v = (self.r * s_inv) % N + + return (u*G + v*pub_key).x.value == self.r + + +@dataclass +class PrivateKey: + secret: int + + def sign(self, z: int) -> Signature: + e = self.secret + k = randint(0, N) + R = k * G + r = R.x.value + k_inv = pow(k, -1, N) + s = ((z + r*e) * k_inv) % N + + return Signature(r, s) + + +if __name__ == "__main__": + + P = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F + A = 0 + B = 7 + + field = PrimeGaloisField(prime=P) + secp256k1 = EllipticCurve(a=A, b=B, field=field) + + G = Point( + x=0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, + y=0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8, + curve=secp256k1) + + N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 + + I = Point(x=None, y=None, curve=secp256k1) + + inf = float("inf") + + priv: int = 0xea11d6ada978a0b491aa5cbbe4df17a65c2fecc24448e95d1ccd854b43991bec + e = PrivateKey(priv) + + pub = e.secret * G + print(pub) + z = 0x7e240de74fb1ed08fa08d38063f6a6a91462a815 + + signature: Signature = e.sign(z) + print(e.sign(z)) + assert signature.verify(z, pub) \ No newline at end of file diff --git a/prince64.py b/prince64.py new file mode 100644 index 0000000..deb66f1 --- /dev/null +++ b/prince64.py @@ -0,0 +1,114 @@ +class prince: + def __init__(self, inL: list, inK: list): + self.SBox = [0x0B, 0x0F, 0x03, 0x02, 0x0A, 0x0C, 0x09, 0x01, 0x06, 0x07, 0x08, 0x00, 0x0E, 0x05, 0x0D, 0x04] + self.InvSBox = [0x0B, 0x07, 0x03, 0x02, 0x0F, 0x0D, 0x08, 0x09, 0x0A, 0x06, 0x04, 0x00, 0x05, 0x0E, 0x0C, 0x01] + + self.RC = [ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x91, 0xa8, 0xe2, 0x30, 0x07, 0x37, 0x44, + 0x4a, 0x90, 0x83, 0x22, 0x92, 0xf9, 0x13, 0x0d, + 0x80, 0xe2, 0xaf, 0x89, 0xce, 0xe4, 0xc6, 0x98 + ] + + self._plaintext = inL + self.Key = inK + + def cipher(self, ExKey): + + self._plaintext = [self._plaintext[i] ^ ExKey[i] for i in range(8)] + + self._AddKey(ExKey) + self._RCLayer(0) + + + self._SLayer() + self._MLayer() + self._RCLayer(1) + self._AddKey(ExKey) + + self._SLayer() + self._MPrimeLayer() + self._InvSLayer() + + self._AddKey(ExKey) + self._RCLayer(2) + self._InvMLayer() + self._InvSLayer() + + self._RCLayer(3) + self._AddKey(ExKey) + + self._plaintext = [self._plaintext[i] ^ ExKey[i+8] for i in range(8)] + + def ExtendKey(self, Key): + newKey = [0x00] * 24 + + for i in range(8): + newKey[i] = Key[i] + newKey[i + 8] = (Key[i] >> 1) | (Key[(i + 1) % 8] << 7 & 0x80) + newKey[i + 16] = Key[i + 8] + + newKey[15] ^= (Key[7] & 0x10) + + return newKey + + def _SR(self): + temp = self._plaintext[:] + perm = [0, 5, 2, 7, 4, 1, 6, 3] + + self._plaintext = [ (temp[perm[i]] & 0x0F) | (self._plaintext[perm[(i+2)%8]] & 0xF0) for i in range(8)] + + + def _InvSR(self): + temp = self._plaintext[:] + perm = [0, 5, 2, 7, 4, 1, 6, 3] + + self._plaintext = [ (temp[perm[i]] & 0x0F) | (self._plaintext[perm[(i+6)%8]] & 0xF0) for i in range(8)] + + def _SLayer(self): + self._plaintext = [ (self.SBox[self._plaintext[i] >> 4] << 4) | self.SBox[self._plaintext[i] & 0x0F] for i in range(8) ] + + + def _InvSLayer(self): + self._plaintext = [ (self.InvSBox[self._plaintext[i] >> 4] << 4) | self.InvSBox[self._plaintext[i] & 0x0F] for i in range(8) ] + + def _MPrimeLayer(self): + temp = self._plaintext[0] + self._plaintext[0] = (temp & 0xD7) ^ (self._plaintext[1] & 0x7D) ^ (temp >> 4 & 0x0B) ^ (self._plaintext[1] >> 4 & 0x0E) ^ (temp << 4 & 0xB0) ^ (self._plaintext[1] << 4 & 0xE0) + self._plaintext[1] = (temp & 0x7D) ^ (self._plaintext[1] & 0xD7) ^ (temp >> 4 & 0x0E) ^ (self._plaintext[1] >> 4 & 0x0B) ^ (temp << 4 & 0xE0) ^ (self._plaintext[1] << 4 & 0xB0) + temp = self._plaintext[2] + self._plaintext[2] = (temp & 0xEB) ^ (self._plaintext[3] & 0xBE) ^ (temp >> 4 & 0x0D) ^ (self._plaintext[3] >> 4 & 0x07) ^ (temp << 4 & 0xD0) ^ (self._plaintext[3] << 4 & 0x70) + self._plaintext[3] = (temp & 0xBE) ^ (self._plaintext[3] & 0xEB) ^ (temp >> 4 & 0x07) ^ (self._plaintext[3] >> 4 & 0x0D) ^ (temp << 4 & 0x70) ^ (self._plaintext[3] << 4 & 0xD0) + temp = self._plaintext[4] + self._plaintext[4] = (temp & 0xEB) ^ (self._plaintext[5] & 0xBE) ^ (temp >> 4 & 0x0D) ^ (self._plaintext[5] >> 4 & 0x07) ^ (temp << 4 & 0xD0) ^ (self._plaintext[5] << 4 & 0x70) + self._plaintext[5] = (temp & 0xBE) ^ (self._plaintext[5] & 0xEB) ^ (temp >> 4 & 0x07) ^ (self._plaintext[5] >> 4 & 0x0D) ^ (temp << 4 & 0x70) ^ (self._plaintext[5] << 4 & 0xD0) + temp = self._plaintext[6] + self._plaintext[6] = (temp & 0xD7) ^ (self._plaintext[7] & 0x7D) ^ (temp >> 4 & 0x0B) ^ (self._plaintext[7] >> 4 & 0x0E) ^ (temp << 4 & 0xB0) ^ (self._plaintext[7] << 4 & 0xE0) + self._plaintext[7] = (temp & 0x7D) ^ (self._plaintext[7] & 0xD7) ^ (temp >> 4 & 0x0E) ^ (self._plaintext[7] >> 4 & 0x0B) ^ (temp << 4 & 0xE0) ^ (self._plaintext[7] << 4 & 0xB0) + + def _MLayer(self): + self._MPrimeLayer() + self._SR() + + def _InvMLayer(self): + self._InvSR() + self._MPrimeLayer() + + def _RCLayer(self, round): + self._plaintext = [ self._plaintext[i] ^ self.RC[8 * round + i] for i in range(8)] + + def _AddKey(self, ExKey): + self._plaintext = [ self._plaintext[i] ^ ExKey[i + 16] for i in range(8) ] + + def prince(self): + ExKey = self.ExtendKey(self.Key) + self.cipher(ExKey) + return [nibble >> 4 | (nibble << 4 & 0xF0) for nibble in self._plaintext] + + def start(self): + ExKey = self.ExtendKey(self.Key) + self.cipher(ExKey) + print('0x', end='') + for i in range(8): + print(format(self._plaintext[i] >> 4 | (self._plaintext[i] << 4 & 0xF0), '02x'), end='') + print() \ No newline at end of file diff --git a/princecc.py b/princecc.py new file mode 100644 index 0000000..34a657d --- /dev/null +++ b/princecc.py @@ -0,0 +1,142 @@ + + +SBox = [0x0B, 0x0F, 0x03, 0x02, 0x0A, 0x0C, 0x09, 0x01, 0x06, 0x07, 0x08, 0x00, 0x0E, 0x05, 0x0D, 0x04] +# Inverse substitution box used on individual nibbles +InvSBox = [0x0B, 0x07, 0x03, 0x02, 0x0F, 0x0D, 0x08, 0x09, 0x0A, 0x06, 0x04, 0x00, 0x05, 0x0E, 0x0C, 0x01] + +RC = [ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x91, 0xa8, 0xe2, 0x30, 0x07, 0x37, 0x44, + 0x4a, 0x90, 0x83, 0x22, 0x92, 0xf9, 0x13, 0x0d, + 0x80, 0xe2, 0xaf, 0x89, 0xce, 0xe4, 0xc6, 0x98 +] + +_State = [0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE] +Key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xCD, 0xAB, 0x89, 0x67, 0x45, 0x23, 0x01] + +def cipher(ExtendedKey): + """ The complete PRINCE forward encryption on the 64-bit state performed through nibble calculations """ + global _State + + _State = [_State[i] ^ ExtendedKey[i] for i in range(8)] + + _AddKey(ExtendedKey) + _AddRoundConstant(0) + + + _SubNibbles() + _MLayer() + _AddRoundConstant(1) + _AddKey(ExtendedKey) + + _SubNibbles() + _MPrimeLayer() + _InvSubNibbles() + + _AddKey(ExtendedKey) + _AddRoundConstant(2) + _InvMLayer() + _InvSubNibbles() + + _AddRoundConstant(3) + _AddKey(ExtendedKey) + + _State = [_State[i] ^ ExtendedKey[i+8] for i in range(8)] + +def ExtendKey(Key): + """ PRINCE's version of a key schedule, which extends our 128-bit key to a 192-bit key """ + newKey = [0x00] * 24 + + for i in range(8): + # k_0 stays the same + newKey[i] = Key[i] + # k'_0 is a k_0 rotated right one bit and XORed with the last bit + newKey[i + 8] = (Key[i] >> 1) | (Key[(i + 1) % 8] << 7 & 0x80) + # k_1 stays the same + newKey[i + 16] = Key[i + 8] + + newKey[15] ^= (Key[7] & 0x10) + + return newKey + +def _ShiftRows(): + """ Helper method which distinguishes our two linear layers M from M' """ + global _State + + temp = _State[:] # copy the state into a temporary holder + perm = [0, 5, 2, 7, 4, 1, 6, 3] + + _State = [ (temp[perm[i]] & 0x0F) | (_State[perm[(i+2)%8]] & 0xF0) for i in range(8)] + + +def _InvShiftRows(): + """ Inverse of our ShiftRows() function which allows us to distinguish M'^-1 from M^-1 """ + global _State + + temp = _State[:] # copy the state into a temporary holder + perm = [0, 5, 2, 7, 4, 1, 6, 3] + + _State = [ (temp[perm[i]] & 0x0F) | (_State[perm[(i+6)%8]] & 0xF0) for i in range(8)] + + +def _SubNibbles(): + """ Send the state through a substitution layer nibble-by-nibble """ + global _State + _State = [ (SBox[_State[i] >> 4] << 4) | SBox[_State[i] & 0x0F] for i in range(8) ] + + +def _InvSubNibbles(): + """ Inverse of our substitution layer which sends each substituted nibble back to the original nibble """ + global _State + _State = [ (InvSBox[_State[i] >> 4] << 4) | InvSBox[_State[i] & 0x0F] for i in range(8) ] + + +def _MPrimeLayer(): + """ Our linear layer, designed to use as little space as possible and prevent wasted clock-cycles. Recall that this method is in fact its own inverse. """ + global _State + + # M0 + temp = _State[0] # we only need 1 storage variable here + _State[0] = (temp & 0xD7) ^ (_State[1] & 0x7D) ^ (temp >> 4 & 0x0B) ^ (_State[1] >> 4 & 0x0E) ^ (temp << 4 & 0xB0) ^ (_State[1] << 4 & 0xE0) + _State[1] = (temp & 0x7D) ^ (_State[1] & 0xD7) ^ (temp >> 4 & 0x0E) ^ (_State[1] >> 4 & 0x0B) ^ (temp << 4 & 0xE0) ^ (_State[1] << 4 & 0xB0) + # M1 + temp = _State[2] + _State[2] = (temp & 0xEB) ^ (_State[3] & 0xBE) ^ (temp >> 4 & 0x0D) ^ (_State[3] >> 4 & 0x07) ^ (temp << 4 & 0xD0) ^ (_State[3] << 4 & 0x70) + _State[3] = (temp & 0xBE) ^ (_State[3] & 0xEB) ^ (temp >> 4 & 0x07) ^ (_State[3] >> 4 & 0x0D) ^ (temp << 4 & 0x70) ^ (_State[3] << 4 & 0xD0) + # M1 + temp = _State[4] + _State[4] = (temp & 0xEB) ^ (_State[5] & 0xBE) ^ (temp >> 4 & 0x0D) ^ (_State[5] >> 4 & 0x07) ^ (temp << 4 & 0xD0) ^ (_State[5] << 4 & 0x70) + _State[5] = (temp & 0xBE) ^ (_State[5] & 0xEB) ^ (temp >> 4 & 0x07) ^ (_State[5] >> 4 & 0x0D) ^ (temp << 4 & 0x70) ^ (_State[5] << 4 & 0xD0) + # M0 + temp = _State[6] + _State[6] = (temp & 0xD7) ^ (_State[7] & 0x7D) ^ (temp >> 4 & 0x0B) ^ (_State[7] >> 4 & 0x0E) ^ (temp << 4 & 0xB0) ^ (_State[7] << 4 & 0xE0) + _State[7] = (temp & 0x7D) ^ (_State[7] & 0xD7) ^ (temp >> 4 & 0x0E) ^ (_State[7] >> 4 & 0x0B) ^ (temp << 4 & 0xE0) ^ (_State[7] << 4 & 0xB0) + +def _MLayer(): + """ The adjusted linear layer which is utilized each regular round """ + _MPrimeLayer() + _ShiftRows() + +def _InvMLayer(): + """ The inverse adjusted linear layer which is utilized each inverse regular round """ + _InvShiftRows() + _MPrimeLayer() + +def _AddRoundConstant(round): + """ Function which simply applies a given round's constant to the state """ + global _State + _State = [ _State[i] ^ RC[8 * round + i] for i in range(8)] + +def _AddKey(ExtendedKey): + """ Function which adds k_1 to the state """ + global _State + _State = [ _State[i] ^ ExtendedKey[i + 16] for i in range(8) ] + + +if __name__ == "__main__": + ExtendedKey = ExtendKey(Key) + cipher(ExtendedKey) + print('0x', end='') + for i in range(8): + print(format(_State[i] >> 4 | (_State[i] << 4 & 0xF0), '02x'), end='') + print() \ No newline at end of file diff --git a/pt.dat b/pt.dat new file mode 100644 index 0000000000000000000000000000000000000000..5689c26d17a600f78d65616dca778e2077c31105 GIT binary patch literal 163840 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 Y&KQizSd7g$jLUe8&jd`!L`?ku080+5MF0Q* literal 0 HcmV?d00001 diff --git a/teat.py b/teat.py new file mode 100644 index 0000000..b96943b --- /dev/null +++ b/teat.py @@ -0,0 +1,25 @@ +G = Point( + x=0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, + y=0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8, + curve=secp256k1) + +N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 + +I = Point(x=None, y=None, curve=secp256k1) + +assert N * G == I + +pub = Point( + x=0x9577FF57C8234558F293DF502CA4F09CBC65A6572C842B39B366F21717945116, + y=0x10B49C67FA9365AD7B90DAB070BE339A1DAF9052373EC30FFAE4F72D5E66D053, + curve=secp256k1 +) +d: int = 2 ** 240 + 2 ** 31 +print(d * G) +print(pub) + +e = PrivateKey(randint(0, N)) +pub = e.secret * G +z = randint(0, 2 ** 256) +signature: Signature = e.sign(z) +assert signature.verify(z, pub) diff --git a/tmp.py b/tmp.py new file mode 100644 index 0000000..e86650d --- /dev/null +++ b/tmp.py @@ -0,0 +1,175 @@ + + +SBox = [0x0B, 0x0F, 0x03, 0x02, 0x0A, 0x0C, 0x09, 0x01, 0x06, 0x07, 0x08, 0x00, 0x0E, 0x05, 0x0D, 0x04] +# Inverse substitution box used on individual nibbles +InvSBox = [0x0B, 0x07, 0x03, 0x02, 0x0F, 0x0D, 0x08, 0x09, 0x0A, 0x06, 0x04, 0x00, 0x05, 0x0E, 0x0C, 0x01] + +RC = [ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x91, 0xa8, 0xe2, 0x30, 0x07, 0x37, 0x44, + 0x4a, 0x90, 0x83, 0x22, 0x92, 0xf9, 0x13, 0x0d, + 0x80, 0xe2, 0xaf, 0x89, 0xce, 0xe4, 0xc6, 0x98 +] + + +def cipher(ExtendedKey): + """ The complete PRINCE forward encryption on the 64-bit state performed through nibble calculations """ + global _State + + _State = [_State[i] ^ ExtendedKey[i] for i in range(8)] + + _AddKey(ExtendedKey) + _AddRoundConstant(0) + + + _SubNibbles() + _MLayer() + _AddRoundConstant(1) + _AddKey(ExtendedKey) + + _SubNibbles() + _MPrimeLayer() + _InvSubNibbles() + + _AddKey(ExtendedKey) + _AddRoundConstant(2) + _InvMLayer() + _InvSubNibbles() + + _AddRoundConstant(3) + _AddKey(ExtendedKey) + + _State = [_State[i] ^ ExtendedKey[i+8] for i in range(8)] + +def ExtendKey(Key): + """ PRINCE's version of a key schedule, which extends our 128-bit key to a 192-bit key """ + newKey = [0x00] * 24 + + for i in range(8): + # k_0 stays the same + newKey[i] = Key[i] + # k'_0 is a k_0 rotated right one bit and XORed with the last bit + newKey[i + 8] = (Key[i] >> 1) | (Key[(i + 1) % 8] << 7 & 0x80) + # k_1 stays the same + newKey[i + 16] = Key[i + 8] + + newKey[15] ^= (Key[7] & 0x10) + + return newKey + +def _ShiftRows(): + """ Helper method which distinguishes our two linear layers M from M' """ + global _State + + temp = _State[:] # copy the state into a temporary holder + perm = [0, 5, 2, 7, 4, 1, 6, 3] + + _State = [ (temp[perm[i]] & 0x0F) | (_State[perm[(i+2)%8]] & 0xF0) for i in range(8)] + + +def _InvShiftRows(): + """ Inverse of our ShiftRows() function which allows us to distinguish M'^-1 from M^-1 """ + global _State + + temp = _State[:] # copy the state into a temporary holder + perm = [0, 5, 2, 7, 4, 1, 6, 3] + + _State = [ (temp[perm[i]] & 0x0F) | (_State[perm[(i+6)%8]] & 0xF0) for i in range(8)] + + +def _SubNibbles(): + """ Send the state through a substitution layer nibble-by-nibble """ + global _State + _State = [ (SBox[_State[i] >> 4] << 4) | SBox[_State[i] & 0x0F] for i in range(8) ] + + +def _InvSubNibbles(): + """ Inverse of our substitution layer which sends each substituted nibble back to the original nibble """ + global _State + _State = [ (InvSBox[_State[i] >> 4] << 4) | InvSBox[_State[i] & 0x0F] for i in range(8) ] + + +def _MPrimeLayer(): + """ Our linear layer, designed to use as little space as possible and prevent wasted clock-cycles. Recall that this method is in fact its own inverse. """ + global _State + + # M0 + temp = _State[0] # we only need 1 storage variable here + _State[0] = (temp & 0xD7) ^ (_State[1] & 0x7D) ^ (temp >> 4 & 0x0B) ^ (_State[1] >> 4 & 0x0E) ^ (temp << 4 & 0xB0) ^ (_State[1] << 4 & 0xE0) + _State[1] = (temp & 0x7D) ^ (_State[1] & 0xD7) ^ (temp >> 4 & 0x0E) ^ (_State[1] >> 4 & 0x0B) ^ (temp << 4 & 0xE0) ^ (_State[1] << 4 & 0xB0) + # M1 + temp = _State[2] + _State[2] = (temp & 0xEB) ^ (_State[3] & 0xBE) ^ (temp >> 4 & 0x0D) ^ (_State[3] >> 4 & 0x07) ^ (temp << 4 & 0xD0) ^ (_State[3] << 4 & 0x70) + _State[3] = (temp & 0xBE) ^ (_State[3] & 0xEB) ^ (temp >> 4 & 0x07) ^ (_State[3] >> 4 & 0x0D) ^ (temp << 4 & 0x70) ^ (_State[3] << 4 & 0xD0) + # M1 + temp = _State[4] + _State[4] = (temp & 0xEB) ^ (_State[5] & 0xBE) ^ (temp >> 4 & 0x0D) ^ (_State[5] >> 4 & 0x07) ^ (temp << 4 & 0xD0) ^ (_State[5] << 4 & 0x70) + _State[5] = (temp & 0xBE) ^ (_State[5] & 0xEB) ^ (temp >> 4 & 0x07) ^ (_State[5] >> 4 & 0x0D) ^ (temp << 4 & 0x70) ^ (_State[5] << 4 & 0xD0) + # M0 + temp = _State[6] + _State[6] = (temp & 0xD7) ^ (_State[7] & 0x7D) ^ (temp >> 4 & 0x0B) ^ (_State[7] >> 4 & 0x0E) ^ (temp << 4 & 0xB0) ^ (_State[7] << 4 & 0xE0) + _State[7] = (temp & 0x7D) ^ (_State[7] & 0xD7) ^ (temp >> 4 & 0x0E) ^ (_State[7] >> 4 & 0x0B) ^ (temp << 4 & 0xE0) ^ (_State[7] << 4 & 0xB0) + +def _MLayer(): + """ The adjusted linear layer which is utilized each regular round """ + _MPrimeLayer() + _ShiftRows() + +def _InvMLayer(): + """ The inverse adjusted linear layer which is utilized each inverse regular round """ + _InvShiftRows() + _MPrimeLayer() + +def _AddRoundConstant(round): + """ Function which simply applies a given round's constant to the state """ + global _State + _State = [ _State[i] ^ RC[8 * round + i] for i in range(8)] + +def _AddKey(ExtendedKey): + """ Function which adds k_1 to the state """ + global _State + _State = [ _State[i] ^ ExtendedKey[i + 16] for i in range(8) ] + + +if __name__ == "__main__": + # _State = [0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE] + # Key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xCD, 0xAB, 0x89, 0x67, 0x45, 0x23, 0x01] + + # ExtendedKey = ExtendKey(Key) + # cipher(ExtendedKey) + # print('0x', end='') + # for i in range(8): + # print(format(_State[i] >> 4 | (_State[i] << 4 & 0xF0), '02x'), end='') + # print() + + plainfile = open("pt.dat", "rb") + cipherfile = open("ct.dat", "rb") + + key = [] + for i in range(16): + key.append(bytearray(8)) + + active = [15,14,13,12,11] + for t in range(5): + # for each SET + A = [] + for i in range(16): + A.append(bytearray(16)) + + for j in range(t*16,(t+1)*16): + pbyte = plainfile.read(8) + cbyte = cipherfile.read(8) + pbytearay = [((a&0x0F)<<4)|((a&0xF0)>>4) for a in list(pbyte)][::-1] + cbytearay = [((a&0x0F)<<4)|((a&0xF0)>>4) for a in list(cbyte)][::-1] + nibarray = [] + for dibble in [(str(hex(i))).replace('0x','') for i in cbytearay]: + dibble = dibble.zfill(2) + nibarray.append(dibble[0]) + nibarray.append(dibble[1]) + + for i in range(16): + x = int('0x'+str(nibarray[i]),16) + A[i][x] = 1 + + for i in range(16): + print([[a[0:4],a[4:8],a[8:12],a[12:16]] for a in A]) \ No newline at end of file