diff --git a/notebooks/Enrollment_Login_Renewal_Detailed.ipynb b/notebooks/Enrollment_Login_Renewal_Detailed.ipynb index 78811da..6fad737 100644 --- a/notebooks/Enrollment_Login_Renewal_Detailed.ipynb +++ b/notebooks/Enrollment_Login_Renewal_Detailed.ipynb @@ -29,8 +29,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2025-03-24T20:25:08.637548Z", - "start_time": "2025-03-24T20:25:08.607886Z" + "end_time": "2025-03-27T19:17:57.439685Z", + "start_time": "2025-03-27T19:17:57.405237Z" } }, "outputs": [], @@ -39,8 +39,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:08.642553Z", - "start_time": "2025-03-24T20:25:08.640602Z" + "end_time": "2025-03-27T19:17:57.446190Z", + "start_time": "2025-03-27T19:17:57.443952Z" } }, "cell_type": "code", @@ -83,8 +83,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:08.679087Z", - "start_time": "2025-03-24T20:25:08.667792Z" + "end_time": "2025-03-27T19:17:57.487136Z", + "start_time": "2025-03-27T19:17:57.475079Z" } }, "cell_type": "code", @@ -116,20 +116,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "Customer Position Key: [36587 51243 16045 24580 51231 48943]\n", + "Customer Position Key: [40442 29276 29073 55607 14230 47593]\n", "Customer Properties Key:\n", - "[23910 10306 19502 5449 54702 12273]\n", - "[53013 18581 4421 45433 39661 27006]\n", - "[16680 54596 31667 35220 1865 8499]\n", - "[37220 26796 20234 3387 44239 47346]\n", - "[55497 7967 5622 1002 13135 4901]\n", + "[21190 30210 9541 19864 15205 49310]\n", + "[55331 19035 8032 36826 40376 8457]\n", + "[47892 59102 4159 3691 31648 60302]\n", + "[37326 6094 58132 24712 36587 17695]\n", + "[62108 52530 63411 22211 34115 22936]\n", "Position to Properties Map:\n", - "36587: [23910 53013 16680 37220 55497]\n", - "51243: [10306 18581 54596 26796 7967]\n", - "16045: [19502 4421 31667 20234 5622]\n", - "24580: [ 5449 45433 35220 3387 1002]\n", - "51231: [54702 39661 1865 44239 13135]\n", - "48943: [12273 27006 8499 47346 4901]\n" + "40442: [21190 55331 47892 37326 62108]\n", + "29276: [30210 19035 59102 6094 52530]\n", + "29073: [ 9541 8032 4159 58132 63411]\n", + "55607: [19864 36826 3691 24712 22211]\n", + "14230: [15205 40376 31648 36587 34115]\n", + "47593: [49310 8457 60302 17695 22936]\n" ] } ], @@ -138,8 +138,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:08.687137Z", - "start_time": "2025-03-24T20:25:08.684437Z" + "end_time": "2025-03-27T19:17:57.507904Z", + "start_time": "2025-03-27T19:17:57.505187Z" } }, "cell_type": "code", @@ -156,12 +156,12 @@ "output_type": "stream", "text": [ "Position Value to Icons Map:\n", - "36587: ['😀' '🥺' '🤔' '🐱' '🦄']\n", - "51243: ['😂' '😡' '🙃' '🐶' '🌟']\n", - "16045: ['🥳' '😱' '😇' '🦁' '⚡']\n", - "24580: ['😍' '🤯' '🤖' '🐻' '🔥']\n", - "51231: ['🤓' '🥰' '👽' '🐸' '🍕']\n", - "48943: ['😎' '😴' '👾' '🐙' '🎉']\n" + "40442: ['😀' '🥺' '🤔' '🐱' '🦄']\n", + "29276: ['😂' '😡' '🙃' '🐶' '🌟']\n", + "29073: ['🥳' '😱' '😇' '🦁' '⚡']\n", + "55607: ['😍' '🤯' '🤖' '🐻' '🔥']\n", + "14230: ['🤓' '🥰' '👽' '🐸' '🍕']\n", + "47593: ['😎' '😴' '👾' '🐙' '🎉']\n" ] } ], @@ -189,8 +189,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:08.705881Z", - "start_time": "2025-03-24T20:25:08.699280Z" + "end_time": "2025-03-27T19:17:57.541997Z", + "start_time": "2025-03-27T19:17:57.534379Z" } }, "cell_type": "code", @@ -219,11 +219,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "Key 0: ['🥺' '😂' '😱' '🔥' '👽']\n", - "Key 1: ['🐱' '🙃' '😇' '🐻' '🐸']\n", - "Key 2: ['😀' '🌟' '🥳' '🤖' '🤓']\n", - "Key 3: ['🦄' '🐶' '🦁' '🤯' '🥰']\n", - "Key 4: ['🤔' '😡' '⚡' '😍' '🍕']\n" + "Key 0: ['🙃' '😱' '🔥' '🍕' '🎉']\n", + "Key 1: ['🐶' '🦁' '🐻' '🤓' '🐙']\n", + "Key 2: ['🌟' '😇' '😍' '👽' '👾']\n", + "Key 3: ['😡' '⚡' '🤯' '🐸' '😴']\n", + "Key 4: ['😂' '🥳' '🤖' '🥰' '😎']\n" ] }, { @@ -240,11 +240,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "Key 0: [ 6 1 8 27 16]\n", - "Key 1: [18 13 14 21 22]\n", - "Key 2: [ 0 25 2 15 4]\n", - "Key 3: [24 19 20 9 10]\n", - "Key 4: [12 7 26 3 28]\n" + "Key 0: [13 8 27 28 29]\n", + "Key 1: [19 20 21 4 23]\n", + "Key 2: [25 14 3 16 17]\n", + "Key 3: [ 7 26 9 22 11]\n", + "Key 4: [ 1 2 15 10 5]\n" ] }, { @@ -261,11 +261,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "Key 0: [53013 10306 4421 1002 1865]\n", - "Key 1: [37220 54596 31667 3387 44239]\n", - "Key 2: [23910 7967 19502 35220 54702]\n", - "Key 3: [55497 26796 20234 45433 39661]\n", - "Key 4: [16680 18581 5622 5449 13135]\n" + "Key 0: [59102 8032 22211 34115 22936]\n", + "Key 1: [ 6094 58132 24712 15205 17695]\n", + "Key 2: [52530 4159 19864 31648 60302]\n", + "Key 3: [19035 63411 36826 36587 8457]\n", + "Key 4: [30210 9541 3691 40376 49310]\n" ] } ], @@ -282,8 +282,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:08.729881Z", - "start_time": "2025-03-24T20:25:08.726837Z" + "end_time": "2025-03-27T19:17:57.582109Z", + "start_time": "2025-03-27T19:17:57.578783Z" } }, "cell_type": "code", @@ -301,10 +301,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "User Passcode Indices: [22, 8, 14, 12]\n", - "User Passcode Icons: ['🐸' '😱' '😇' '🤔']\n", - "User Passcode Server-side properties: [44239 4421 31667 16680]\n", - "Selected Keys: [1, 0, 1, 4]\n" + "User Passcode Indices: [7, 13, 27, 26]\n", + "User Passcode Icons: ['😡' '🙃' '🔥' '⚡']\n", + "User Passcode Server-side properties: [19035 59102 22211 63411]\n", + "Selected Keys: [3, 0, 0, 3]\n" ] } ], @@ -321,8 +321,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.048762Z", - "start_time": "2025-03-24T20:25:08.811165Z" + "end_time": "2025-03-27T19:17:57.846195Z", + "start_time": "2025-03-27T19:17:57.599899Z" } }, "cell_type": "code", @@ -339,13 +339,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Key 0: [24 25 26 27 22]\n", - "Key 1: [18 19 2 3 16]\n", - "Key 2: [ 6 13 20 15 28]\n", - "Key 3: [12 1 14 9 4]\n", - "Key 4: [ 0 7 8 21 10]\n", + "Key 0: [25 2 27 4 11]\n", + "Key 1: [19 14 15 22 29]\n", + "Key 2: [ 7 20 3 28 5]\n", + "Key 3: [13 26 21 10 17]\n", + "Key 4: [ 1 8 9 16 23]\n", "Selected Keys\n", - "[0, 4, 3, 3]\n" + "[2, 3, 0, 3]\n" ] } ], @@ -359,8 +359,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.058216Z", - "start_time": "2025-03-24T20:25:09.055315Z" + "end_time": "2025-03-27T19:17:57.858315Z", + "start_time": "2025-03-27T19:17:57.855013Z" } }, "cell_type": "code", @@ -379,18 +379,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "Set Key 0: ['🐱' '🙃' '😇' '🐻' '🐸']\n", - "Confirm Key 0: ['🦄' '🌟' '⚡' '🔥' '🐸']\n", - "Overlapping icon 🐸\n", - "Set Key 1: ['🥺' '😂' '😱' '🔥' '👽']\n", - "Confirm Key 1: ['😀' '😡' '😱' '🐻' '🥰']\n", - "Overlapping icon 😱\n", - "Set Key 2: ['🐱' '🙃' '😇' '🐻' '🐸']\n", - "Confirm Key 2: ['🤔' '😂' '😇' '🤯' '🤓']\n", - "Overlapping icon 😇\n", - "Set Key 3: ['🤔' '😡' '⚡' '😍' '🍕']\n", - "Confirm Key 3: ['🤔' '😂' '😇' '🤯' '🤓']\n", - "Overlapping icon 🤔\n" + "Set Key 0: ['😡' '⚡' '🤯' '🐸' '😴']\n", + "Confirm Key 0: ['😡' '🦁' '😍' '🍕' '😎']\n", + "Overlapping icon 😡\n", + "Set Key 1: ['🙃' '😱' '🔥' '🍕' '🎉']\n", + "Confirm Key 1: ['🙃' '⚡' '🐻' '🥰' '👾']\n", + "Overlapping icon 🙃\n", + "Set Key 2: ['🙃' '😱' '🔥' '🍕' '🎉']\n", + "Confirm Key 2: ['🌟' '🥳' '🔥' '🤓' '😴']\n", + "Overlapping icon 🔥\n", + "Set Key 3: ['😡' '⚡' '🤯' '🐸' '😴']\n", + "Confirm Key 3: ['🙃' '⚡' '🐻' '🥰' '👾']\n", + "Overlapping icon ⚡\n" ] } ], @@ -414,8 +414,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.069308Z", - "start_time": "2025-03-24T20:25:09.064490Z" + "end_time": "2025-03-27T19:17:57.879460Z", + "start_time": "2025-03-27T19:17:57.873816Z" } }, "cell_type": "code", @@ -430,8 +430,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.087623Z", - "start_time": "2025-03-24T20:25:09.085495Z" + "end_time": "2025-03-27T19:17:57.904749Z", + "start_time": "2025-03-27T19:17:57.902224Z" } }, "cell_type": "code", @@ -442,11 +442,11 @@ "output_type": "stream", "text": [ "Property Key:\n", - "[[ 7202 17463 46638 52425 1136 48374]\n", - " [13320 30423 16460 16440 54741 60051]\n", - " [ 7080 35309 40115 5709 22652 59355]\n", - " [62863 16450 3293 2809 14186 52151]\n", - " [49175 8694 16139 52942 5446 1365]]\n" + "[[14162 15278 5779 57356 9084 42916]\n", + " [62550 57245 40145 52844 62606 28882]\n", + " [16963 51204 54863 4741 39274 22253]\n", + " [45416 46785 54545 12343 60959 30982]\n", + " [23400 12253 26764 20884 19959 11955]]\n" ] } ], @@ -455,8 +455,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.115003Z", - "start_time": "2025-03-24T20:25:09.112867Z" + "end_time": "2025-03-27T19:17:57.951642Z", + "start_time": "2025-03-27T19:17:57.949347Z" } }, "cell_type": "code", @@ -466,7 +466,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Passcode Key: [64689 33923 20489 20542 33540 51906 6128 40137 14040 24585]\n" + "Passcode Key: [55447 46315 12524 17763 63442 8950 24638 56921 18442 22528]\n" ] } ], @@ -475,8 +475,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.138929Z", - "start_time": "2025-03-24T20:25:09.136632Z" + "end_time": "2025-03-27T19:17:57.989194Z", + "start_time": "2025-03-27T19:17:57.986687Z" } }, "cell_type": "code", @@ -486,7 +486,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mask Key: [57275 32944 34918 33126 19845 13409 47088 47492 20658 16069]\n" + "Mask Key: [37865 47229 1360 12907 33808 18226 62137 23444 5922 45367]\n" ] } ], @@ -495,8 +495,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.171323Z", - "start_time": "2025-03-24T20:25:09.169122Z" + "end_time": "2025-03-27T19:17:58.019886Z", + "start_time": "2025-03-27T19:17:58.017350Z" } }, "cell_type": "code", @@ -506,7 +506,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Combined Position Key: [ 6982 56074 5098 60427 26358 45400]\n" + "Combined Position Key: [48833 17040 25020 22197 22334 15077]\n" ] } ], @@ -515,8 +515,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.192115Z", - "start_time": "2025-03-24T20:25:09.189931Z" + "end_time": "2025-03-27T19:17:58.050384Z", + "start_time": "2025-03-27T19:17:58.047868Z" } }, "cell_type": "code", @@ -526,7 +526,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "User Position Key = combined_pos_key XOR customer_pos_key: [38317 4897 11591 35855 44777 3703]\n" + "User Position Key = combined_pos_key XOR customer_pos_key: [ 9019 12492 4141 36738 24744 33548]\n" ] } ], @@ -535,8 +535,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.213042Z", - "start_time": "2025-03-24T20:25:09.210890Z" + "end_time": "2025-03-27T19:17:58.138360Z", + "start_time": "2025-03-27T19:17:58.135782Z" } }, "cell_type": "code", @@ -552,12 +552,12 @@ "output_type": "stream", "text": [ "Combined Position to Properties Map:\n", - "6982: [ 7202 13320 7080 62863 49175]\n", - "56074: [17463 30423 35309 16450 8694]\n", - "5098: [46638 16460 40115 3293 16139]\n", - "60427: [52425 16440 5709 2809 52942]\n", - "26358: [ 1136 54741 22652 14186 5446]\n", - "45400: [48374 60051 59355 52151 1365]\n" + "48833: [14162 62550 16963 45416 23400]\n", + "17040: [15278 57245 51204 46785 12253]\n", + "25020: [ 5779 40145 54863 54545 26764]\n", + "22197: [57356 52844 4741 12343 20884]\n", + "22334: [ 9084 62606 39274 60959 19959]\n", + "15077: [42916 28882 22253 30982 11955]\n" ] } ], @@ -578,8 +578,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.238466Z", - "start_time": "2025-03-24T20:25:09.236286Z" + "end_time": "2025-03-27T19:17:58.179247Z", + "start_time": "2025-03-27T19:17:58.176595Z" } }, "cell_type": "code", @@ -608,8 +608,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.492093Z", - "start_time": "2025-03-24T20:25:09.259155Z" + "end_time": "2025-03-27T19:17:58.455536Z", + "start_time": "2025-03-27T19:17:58.212205Z" } }, "cell_type": "code", @@ -637,8 +637,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.730838Z", - "start_time": "2025-03-24T20:25:09.495722Z" + "end_time": "2025-03-27T19:17:58.702891Z", + "start_time": "2025-03-27T19:17:58.461555Z" } }, "cell_type": "code", @@ -656,15 +656,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Key 0: [ 6 1 8 27 16 11]\n", - "Key 1: [18 13 14 21 22 17]\n", - "Key 2: [ 0 25 2 15 4 23]\n", - "Key 3: [24 19 20 9 10 29]\n", - "Key 4: [12 7 26 3 28 5]\n", - "User Passcode: [22, 8, 14, 12]\n", + "Key 0: [12 13 8 27 28 29]\n", + "Key 1: [24 19 20 21 4 23]\n", + "Key 2: [ 6 25 14 3 16 17]\n", + "Key 3: [ 0 7 26 9 22 11]\n", + "Key 4: [18 1 2 15 10 5]\n", + "User Passcode: [7, 13, 27, 26]\n", "\n", "Selected Keys:\n", - " [1, 0, 1, 4]\n", + " [3, 0, 0, 3]\n", "\n" ] } @@ -696,8 +696,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.740211Z", - "start_time": "2025-03-24T20:25:09.737938Z" + "end_time": "2025-03-27T19:17:58.713231Z", + "start_time": "2025-03-27T19:17:58.710458Z" } }, "cell_type": "code", @@ -724,8 +724,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:09.753175Z", - "start_time": "2025-03-24T20:25:09.751006Z" + "end_time": "2025-03-27T19:17:58.729425Z", + "start_time": "2025-03-27T19:17:58.727025Z" } }, "cell_type": "code", @@ -745,8 +745,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:10.000010Z", - "start_time": "2025-03-24T20:25:09.768227Z" + "end_time": "2025-03-27T19:17:58.983936Z", + "start_time": "2025-03-27T19:17:58.739679Z" } }, "cell_type": "code", @@ -771,8 +771,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:10.476203Z", - "start_time": "2025-03-24T20:25:10.003562Z" + "end_time": "2025-03-27T19:17:59.477909Z", + "start_time": "2025-03-27T19:17:58.990632Z" } }, "cell_type": "code", @@ -798,10 +798,10 @@ "output_type": "stream", "text": [ "Old User Cipher and Mask\n", - "mask: CAB5nFpQ1LM59xYy2OREr9b7Gcc=, code: $2b$12$oy6qiM687DO5qPkEBTy/V.GXIXYFkfiTmRp1oQEBXbZ10MZMV3V.6\n", + "mask: DUY6OIJHwzgG5ajVEGKHARHM6So=, code: $2b$12$/Za40kT7mC0quZxMUWCDs.4cF.3r2meCUBEoz0EWlSKkJAMOPiJTy\n", "\n", "New User Cipher and Mask\n", - "mask: 1oEiOc7ZYxkUkKlVlzNUmbvoc7k=, code: $2b$12$BAKICUuJ.gx39r29krEiu./lWS18zm60dKzfZvpSTDp3LEOzHQGN2\n", + "mask: GGBaMjr+zlPhS+pmfstihUeFt6A=, code: $2b$12$wE7bq7sYd8Q58j.qKS5ASO2IMzaJ71UW/0vOYAhx7zUhURDJYIaZi\n", "\n" ] } @@ -819,8 +819,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:10.488540Z", - "start_time": "2025-03-24T20:25:10.484314Z" + "end_time": "2025-03-27T19:17:59.490134Z", + "start_time": "2025-03-27T19:17:59.486082Z" } }, "cell_type": "code", @@ -853,8 +853,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:10.504982Z", - "start_time": "2025-03-24T20:25:10.502608Z" + "end_time": "2025-03-27T19:17:59.500256Z", + "start_time": "2025-03-27T19:17:59.497839Z" } }, "cell_type": "code", @@ -880,8 +880,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:10.762626Z", - "start_time": "2025-03-24T20:25:10.523023Z" + "end_time": "2025-03-27T19:17:59.752960Z", + "start_time": "2025-03-27T19:17:59.508826Z" } }, "cell_type": "code", diff --git a/notebooks/Enrollment_Login_Renewal_Simplified.ipynb b/notebooks/Enrollment_Login_Renewal_Simplified.ipynb index 04612f7..e980273 100644 --- a/notebooks/Enrollment_Login_Renewal_Simplified.ipynb +++ b/notebooks/Enrollment_Login_Renewal_Simplified.ipynb @@ -19,12 +19,12 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2025-03-24T20:25:00.701367Z", - "start_time": "2025-03-24T20:25:00.698108Z" + "end_time": "2025-03-27T19:17:34.809483Z", + "start_time": "2025-03-27T19:17:34.735988Z" } }, "outputs": [], - "execution_count": 8 + "execution_count": 1 }, { "metadata": {}, @@ -57,12 +57,12 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2025-03-24T20:25:00.708966Z", - "start_time": "2025-03-24T20:25:00.704877Z" + "end_time": "2025-03-27T19:17:34.878585Z", + "start_time": "2025-03-27T19:17:34.817604Z" } }, "outputs": [], - "execution_count": 9 + "execution_count": 2 }, { "metadata": {}, @@ -81,8 +81,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:00.717550Z", - "start_time": "2025-03-24T20:25:00.715159Z" + "end_time": "2025-03-27T19:17:34.918050Z", + "start_time": "2025-03-27T19:17:34.914192Z" } }, "cell_type": "code", @@ -91,7 +91,7 @@ "signup_session_id, set_keypad = api.generate_signup_keypad(customer_id, username)" ], "outputs": [], - "execution_count": 10 + "execution_count": 3 }, { "metadata": {}, @@ -104,8 +104,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:00.726553Z", - "start_time": "2025-03-24T20:25:00.724282Z" + "end_time": "2025-03-27T19:17:34.928470Z", + "start_time": "2025-03-27T19:17:34.926257Z" } }, "cell_type": "code", @@ -115,7 +115,7 @@ "selected_keys_set = select_keys_with_passcode_values(passcode_property_indices, set_keypad, keypad_size.numb_of_keys)" ], "outputs": [], - "execution_count": 11 + "execution_count": 4 }, { "metadata": {}, @@ -128,8 +128,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:00.967386Z", - "start_time": "2025-03-24T20:25:00.732130Z" + "end_time": "2025-03-27T19:17:35.223175Z", + "start_time": "2025-03-27T19:17:34.978825Z" } }, "cell_type": "code", @@ -139,8 +139,20 @@ "success = api.confirm_nkode(username, customer_id, selected_keys_confirm, signup_session_id)\n", "assert success" ], - "outputs": [], - "execution_count": 12 + "outputs": [ + { + "ename": "TypeError", + "evalue": "NKodeAPI.set_nkode() takes 4 positional arguments but 5 were given", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mTypeError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[5], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m confirm_keypad \u001B[38;5;241m=\u001B[39m \u001B[43mapi\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mset_nkode\u001B[49m\u001B[43m(\u001B[49m\u001B[43musername\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcustomer_id\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mselected_keys_set\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43msignup_session_id\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 2\u001B[0m selected_keys_confirm \u001B[38;5;241m=\u001B[39m select_keys_with_passcode_values(passcode_property_indices, confirm_keypad, keypad_size\u001B[38;5;241m.\u001B[39mnumb_of_keys)\n\u001B[1;32m 3\u001B[0m success \u001B[38;5;241m=\u001B[39m api\u001B[38;5;241m.\u001B[39mconfirm_nkode(username, customer_id, selected_keys_confirm, signup_session_id)\n", + "\u001B[0;31mTypeError\u001B[0m: NKodeAPI.set_nkode() takes 4 positional arguments but 5 were given" + ] + } + ], + "execution_count": 5 }, { "metadata": {}, @@ -154,7 +166,7 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:01.204427Z", + "end_time": "2025-03-27T19:17:35.258024Z", "start_time": "2025-03-24T20:25:00.973454Z" } }, @@ -182,7 +194,7 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-24T20:25:01.677259Z", + "end_time": "2025-03-27T19:17:35.259102Z", "start_time": "2025-03-24T20:25:01.209950Z" } }, diff --git a/tabletop-discussion.md b/tabletop-discussion.md index 39b590c..d0894bc 100644 --- a/tabletop-discussion.md +++ b/tabletop-discussion.md @@ -26,4 +26,48 @@ ### nKode Over Unencrypted Channel - TOTP -- DARC \ No newline at end of file +- DARC + +### Discussion Outcomes: + +#### Attacks and controls +| Attacks | Controls | +|-------------------------|--------------------------------------------------------------------------------| +| Screen Recording Attack | Split shuffle/more icons per key than keys | +| Exfiltrated DB | Physically separated keys and icons, partial or full encryption, nKode renewal | +| *APT | *Don't wait for garbage collector, manage timeouts | +| Phishing | Dispersion Resistant Keypad, nKode policy, passkey protected keypad icons | +| *MiTM | TLS, *TOTP shuffle, *DARC | +*not implemented yet/needs another look + +#### asks for Dr. Kandah + +- Evil nKode screen watching/key replay + - Can we rig the shuffle in our favor? How long do we need to cache? + - shoulder surfing + - Keylogger resistance + - split shuffle is unbiased +- Dispersion Attack/Phishing attack + - CAC/passkey protection for server stored icons + - is the dispersion algorithm unbiased? +- validate the cipher + - validate the server-side values + - validate the relationship between the mask and the hash + - validate the renewal + - are these processes secure? +- Minium amount of encryption needed + - Least encryption:brute force crack with plain text database breach + - Most encryption: everything is encrypted + - Is there an secure inbetween? what stays plain text what gets encrypted with HSM? + - How long does it take to brute-force with plain and what's gained? +- how often does nkode need to be changed if at all? + - if it does need to be changed can we roll the icons? can we start with 4 icons and add icons over time? +- Low-bandwidth: how low can we go? + - TCP vs UDP + - Security of RX/TX without tls/encrypted channel +- Hypothetical: Break the cipher keys onto different machines in different locations? +- TOTP shuffle on client and server + + +Other stuff: +- unbiased icons/psychology \ No newline at end of file