Snyph Concept Paper
The version of the browser you are using is no longer supported. Please upgrade to a supported browser.Dismiss

ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
2
Snerx's Random & Dynamic Charset Noise Cypher - Snyph
3
4
5
6
7
Set 1Set 2Set 3At an output of 1-1-12345 the first 1 represents Set 1 or the first column, the second 1 represents Sub 1 or the first row.P.1
8
Sub 1APBQCRThe next five numbers correlate to to which character in the 1-1 box is to be selected.
9
1=2(3)Each of the last five numbers is respective to each of the five Sub rows.
10
Sub 2DSETFUSince we know only the first sub is being used, we only need to look at the first of the last five numbers.
11
4[5]6{Four of the last five numbers are always extra and serve as noise to try to obfuscate the message.
12
Sub 3GVHWIXSo in a 1-1 sequence, we know only the first 1 of the last five numbers (-12345) is used.
13
7%8*9}Since the number of the last five we need is 1, that means it's the first character in the box, which we see is 'A'.
14
Sub 4JYKZL.The number of the box used can only ever be 1, 2 ,3, or 4, so why do we have 5 at the end you might ask?
15
0" +-/\Again, since we know the last four digits are not used, they can be any number, randomnly generated, as they serve only as noise.
16
Sub 5M,N?O!So 'A' here can also be represented as 1116969 or 1114242, it doesn't matter as the relavent information is known.
17
:;'case-shiftnewlinespaceThis cannot be brute forced with typical methods because there's a 2-dimensional reference that dictates character assignment.
18
Granted if this 2-dimensional reference was known, it could then be easily decrypted, which is why there are three more factors.
19
Dynamic Charset DefaultP.2
20
010203040506The first is the dynamic charset, which is just a character replacer.
21
070809101112If on the grid shown each character is represented as 01,02,03,etc from right to left, top to bottom, then we have a default charset.
22
131415161718The start of the message would then be a header configuration that looked like, "0102030405, etcetera" all the way to 60.
23
192021222324This informs the program that it's using the default set, but a header that read, "02010304...60" would mean 'A' and 'P' were switched.
24
252627282930So in this way it's like you were saying about the Enigma machines the Germans used, as you can switch characters around.
25
313233343536If they knew the initial cypher tied to the 2-dimensional grid, they could easily brute force through the character randomizer here.
26
373839404142So this dynamic charset only serves to throw people off from being able to figure out the initial cypher.
27
434445464748It doesn't prevent them from brute-forcing it afterwards.
28
495051525354An additional noise value that can be added is a random assertion of the numbers 61 to 99 at the end of the header message.
29
555657585960This could make it seem like the cypher actually uses up to 99 base inputs instead of 60.
30
31
The second is the noise filter.P.3
32
Inital InputZalgoHTML output in iso-8859-1 encodingI found this out while playing between the Zalgo text generator and our Doge Translator.
33
"Noise"N̜̤̖̒ͥ͛̿̔̈́͞͠o̊̂͑̓ͯ̑̄͏̱̟͉̦̭i̘͉̫ͮͣ̕͞s̼̰̏̈̇̽̈́̈e̖̹͗ͭͯ̐͒̂ͦ̚NÌ’Í¥Í›Ì¿Ì”Í„ÍžÍ ÌœÌ¤Ì–oÌŠÌ‚Í‘ÍƒÍ¯Ì‘Ì„ÍÌ±ÌŸÍ‰Ì¦Ì­iÍ®Í£Ì•ÍžÌ˜Í‰Ì«sÌÌˆÌ‡Ì½Í„ÌˆÌ¼Ì°eÍ—Í­ÌšÍ¯ÌÍ’Ì‚Í¦Ì–Ì¹I generated zalgo text (http://www.eeemo.net/) and put it on an html page on my site and it spit back what you see on the left there.
34
I thought it was weird and ran the html output through our Doge Translator which resulted in what you see below it.
35
The Doge Translator filtered everything like no problem and picked out all the latin alphabet characters, replacing them like it should.
36
I figure if we can get our program to easily filter through noise like this, then a message can be obfuscated far beyond bruteforcing.
37
You might say that if this step is known, it could be easily bruteforced, but when the noise is also numbers...
38
HTML output ran through Doge TranslatorYou get an output that looks like, "1832489357917837842381741927583" for a single character.
39
Doge Ì’Í¥Í›Ì¿Ì”Í„ÍžÍ... ÌœÌ¤Ì–shiba ÌŠÌ‚Í‘ÍƒÍ¯Ì‘Ì„ÍÌ±ÌŸÍ‰Ì¦Ì­lick Í®Í£Ì•ÍžÌ˜Í‰Ì«redrocket ÌÌˆÌ‡Ì½Í„ÌˆÌ¼Ì°growl Í—Í­ÌšÍ¯ÌÍ’Ì‚Í¦Ì–Ì¹So you can't just filter out non-numeral characters and decrypt the message just the same anymore.
40
You'd have to know which numbers to use to correlate back to the initial 2-D grid, so a frequency variable is now involved.
41
So if the frequency variable is set to 3, then it picks every third number to use for the initial 7 that correlate to the grid.
42
The frequency var can also be two numbers, 8-5, which would mean you skip the first eight digits and then take every fifth.
43
Or the freq var can be something like, 18395, which would mean you use the first, then eighth, then third, etc number.
44
45
P.4
46
Default Charset InputAlright, so here we see what the output from the software would look like with semicolons for delimiters.
47
010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960On the left is the default header that dictates what character set we're using when mapped onto the 2-D grid.
48
Default Cypher Output Format (these are arbitrary chars)There are three arbitrary characters chosen with randomnly assigned noise (which I just randomnly filled in).
49
1112345;2322322;3333333;By default there would be no additional noise, the noise filter would be an option, as a variable input would be needed.
50
Default Noise FilterSo then we have the dynamic charset header, and as you see there, it starts with a number outside our 60 character range.
51
noneWhat this means is all numbers not between 01 and 60 get ignored and the list is read as 36, 29, 16, etc. (or 362916...)
52
Dynamic Charset InputJust to reiterate, this dynamic charset input would mean 01 is replaced with 36, 02 is replaced with 29, etcetera.
53
633629901693343199286952267565600174401917761023413983119792507855718720220561146451097004332737079835727786218106954324541325031215968842594767461838736280328958088256798566486884944457539149300245The dynamic charset output is not a correct output given the dynamic charset input shown here, I just showed that it would look diff.
54
Dynamic Cypher Output (this is not the same arbitrary chars from the default)The noise filter is where it gets intereseting.
55
3485409;2345891;9999999;The freq variable here would be 2, so the filter added a second character after each number and then extra numbers to the end.
56
Single-character-addition Noise Filter Output (this does follow from above)By putting in a freq var of 2 when reading this text, the program should know to read the first number and then every alternate after.
57
36428458490192777;2336485381961877777;92969994919095777777;Without delimiters (which it should have no problem reading), this would appear as a single long string of numbers.
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100