Network of Tiny Computers.

One of my goals, as far as IT Development goes is controlling network of tiny computers so it does no harm and works efficiently and securely.

If You look at Stitie Machine model, it's evident that it's such. Tiny objects (each of them computer or device controlled by computer), communicating in 3D space.

There's hacking involved for security and secure communication, concurrency mechanism for coordination, object oriented model for reality reflection.

Such tiny computers can change shapes & forms, coordinate, and maneuver strategically if neccessary.

See also: Stitie Machine, and its implementations: Core 1.0 and Sunsail 1.1 .

Stitie Machine Requirements.

Is Stitie Machine too resource expensive to work for now?

Yes, for most of uses. But it's future project, with time frame for more or less 30 years. By that time it should be useful and mature enough.

Earlier it will have glimpses of usefulness too.

For example when it can work in 3D HD resolution (1080 x 1080 x 1080). About 1 Terabyte of cheap and fast RAM on desktop is needed for this. Perhaps it's 8-10 years, judging from my very simple calculations.

I hope i'll have time for optimization (precaching sine, common primes, similar computations, and more), for it's too slow now.

I doubt i'll have hardware layer too, so i have to design for running this on virtual machine. Good thing is that it's pro to run software in dedicated vm. Supercomputers can handle such very easily and modestly. Business does not have to invest in too much of expensive and unneccessary hardware. Admins have easier time too this way, for vm management is easier than 'juggling laptops'.

Expert Systems.

In artificial intelligence, an expert system is a computer system that emulates the decision-making ability of a human expert.

Expert systems are designed to solve complex problems by reasoning about knowledge, like an expert, and not by following the procedure of a developer as is the case in conventional programming.

The first expert systems were created in the 1970s and then proliferated in the 1980s. Expert systems were among the first truly successful forms of AI software.

An expert system has a unique structure, different from traditional computer programming. It is divided into two parts, one fixed, independent of the expert system: the inference engine, and one variable: the knowledge base. To run an expert system, the engine reasons about the knowledge base like a human. In the 80s a third part appeared: a dialog interface to communicate with users. This ability to conduct a conversation with users was later called "conversational".


Why this is part of Dragonfly Algorithm?

Because 'Dragonfly' (defensive version) will use 'Expert System' to help user defend against hacker attack. More accurately, it'll be conversational system that supports decision making (version which is partly automated). It should be simple to use, but allow for detailed decision making if neccessary.


How to write Software on Stitie Machine (for computer enthusiasts).

You can write software where for 3d model You can add strategy (code) and state (data, color) to each of pixels. If it's samurai model then edge of katana blade is responsible for something else than eye, etc.

3D model can be made hacking tool or anything else (for example engine model can handle real engine). Advantages are such, that even if plane loses part of wing, it can be not only noticed (we know which of tiny computers on the plane's wing do not respond), but also rest of them still work (for example to handle the evacuation and more).

More advanced implementation hints:

How pixels can be grouped to cooperate, for example in katana's blade? Just like it's done in standard server/clients paradigm. Or servers/workers. We can even mix strategies from many servers in one destination pixel (worker). We can use shared services, for example memory. Or we can use peer-to-peer programming paradigm. P2P is similar to talking objects (sending messages like in classic approach to Object Oriented Paradigm).

Will there be Garbage Collection for Stitie Machine? For now i think no. It has to be handled manually. Argument is such that it's so low level mechanism that it can and should be handled manually, like in the Assembler, to allow for more tricks. Some programmers think that memory deallocation is so important that it has to be done with automated garbage collection. Others think opposite, that it's so important that it has to be done manually. These arguments contradict themselves.

See also: Stitie Machine, and its implementations: Core 1.0 and Sunsail 1.1 .

Brute Force attack on Random Seed.

This applies to the Real Random Seed generated with timing of keystroke.

If we can overhear and store timing of keystroke, we have approximate timing.

If we have seed generator, we can use brute force attack (try all permutations of bits as input for the known seed generator) in time window, with maximum (or perhaps not only) precisions, and we can guess the random seed.

For PreciseNumber notation, we have to know something about precision of seed too and perhaps choose window as well.

Dragonfly & Windshield.

Dragonflies are very alert, they can be used as observers.

I called remote packet sniffer 'Dragonfly'.

'Windshield' protects from the Wind, it can protect 'Dragonflies' too.

I called partly automated hacking tools 'Windshield' under which many things (and beings) can seek 'Shelter' and be more secure in the Internet if they wish.

There can be 'defensive' (installed by user, with agreement with hacker) and 'offensive' (installed by hacker) versions of 'Dragonfly'. But let's not overdo counterattacks and preemptive attacks. It's illegal.

I can imagine that 'offensive' version of 'Dragonfly' can have uses in Military, Police, and such. For antiterror.

Feel free to contact me (neomahakala108@gmail.com) for defensive version if you have problems with hackers that i can help You to solve. It's not ready yet, but it will be. For me it's precious opportunity to practice hacking and counterhacking this way. And You will see what i do, if You have defensive version. I do not wish to hack without agreement with user, i'll do it only if i have to protect someone.

Users will be able to turn defensive 'Dragonflies' on and off as they need (there will be cryptographic key needed. i'll design hardware key for final product). But hacker's support time will depend on agreement.

I won't send software via the Internet (it's insecure and pointless this way). It can be sent on usb pendrive via traditional mail, or (if user is very wary of postal service and couriers) picked up personally at agreed place and time.

Shapes, Forms, 108 Number & Strategic Botnet.

108 number has many nice mathematical properties. they can be used to draw shapes & forms for troop formations (i think). See also: reforming shapes.

Botnet (hacking network) using 108 units (hackers or machines) can maneuver very well, transitioning from form to form, each with unique properties (security of each of nodes and of all of them, speed of the information flow, security of information flow).

I call this form of 108 object graph nodes shortly: 'Form108'. It can give botnet strategy advantage.

See also: Stitie Machine, and its implementations: Core 1.0 and Sunsail 1.1 .

For now this computational model uses Java Virtual Machine, but it won't be that forever. My goal is to make processor model, and whole computer system that can lease its resources (mostly for computing precisely Mathematical Data), but it can switch to 'hacking mode' if need arises, allocating resources as neccesary. (For example 5% for defenses, 95% for mathematical computations and other paid services. Or in worst case, 100% for defenses).

For her, Buddhist Woman i Love.

but also,

For Anti-Terror.

(I wish for this to be Buddhist Project, but i respect other religions except for those who support Terror, Rape and such. I live in Poland but it should be International.)

See also: Hacking, Imagination and 3D Visualization, Formation of sixty, eighty four, Factorization Tree, Factoring Numbers.


Cryptography & Entropy (Randomness).

Uses for Randomness in Cryptography:

To generate (cryptographic) key material, we need a random number generater, or RNG. Generating good randomness is a vital part of many cryptographic operations.


The measure for randomness is called entropy. Note that the entropy of a value depends on how much you know. A random 32-bit word has 32 bits of entropy.

Idea for it (intuition) is such that if you have a 32-bit word that is completely random, then it has 32 bits of entropy. If the 32-bit word takes only four different values, and each value has a 25% chance of occuring, then the word has 2 bits of entropy. Entropy does not measure how many bits are in a value, but how uncertain you are about the value.

Suppose that you happen to know that the value has exactly 18 bits that are 0, and 14 bits that are 1. There are about 2^28.8 values that satisfy these requirements, and the entropy is also limited to 28.8 bits. In other words, the more you know about a value, the smaller its entropy is.

There are few definitions of entropy that mathematicians use, depending on what they are working on. When physicists talk about entropy, they use the word for a concept from thermodynamics that is only tangentially related.

Real Random:

The world is not ideal, and real random data is extremely hard to find, if at all. Many implementers seem too optimistic about randomness or entropy that can be extracted from various sources. Measured data is often predictable, and there are attacks that try to overhear or affect it, or more.

Some modern computers have a built-in real random number generator, it makes some of the attacks more difficult (such as overhearing time of keystroke used to generate number, or affecting result of random number generation). The random number generator is still only accessible to the operating system, so an application has to trust the operating system to handle the random data in a secure manner.

When more and more data is known about real random number generators, they are less and less useful.

Pseudorandom Data:

Alternative to using real random data (which is not always available, and risky sometimes to use), is to use pseudorandom data. Pseudorandom data is not really random at all. It is generated from a seed by deterministic (for same data, producing same results no matter how many times it's run) algorithm. If you know the seed, you can predict the pseudorandom data.

Pseudorandom Number Generators:

Traditional pseudorandom number generators, or PRNGs, are not secure against a clever adversary. They are designed to eliminate statistical artifacts, not to withstand an intelligent attacker.

In the context of cryptographic system, we have requirements. Even if the attacker sees a lot of the random data generated by the PRNG, she should not be able to predict anything about the rest of the output of the PRNG. We call such PRNG cryptographically strong. For cryptography, only such should be used.

In PRNGs, real random data is used for a single thing: to seed a PRNG. Perhaps once, perhaps many times.


Iterative Development vs. Waterfall model.

In 'Waterfall' software development model, all requirements are gathered at Project's beginning, then no changes are allowed until it is finished.

In 'Iterative' software development model, client can change requirements more often, for project goes through iterations (word 'iteration' means 'loop', it is used to describe something that repeats itself) or repeated stages of development. Changes are small and added incrementially from iteration to iteration until all project goals are achieved. More details in 'Rational Unified Process'.

See also, if You wish or need, ... : Software Architecture (according with Rational Unified Process), Four phases in Rational Unified Process iteration.


Remote Packet Sniffer.

Can be used to monitor internet packets.

It can notify admin or hacker of suspicious activity on remote internet device.

It should be secure.

I'll implement such (in 2 subprojects: Dragonfly & Windshield).


System is never secure forever (part 2).

There are many vulnerabilities in every computer system.

For example, buffer overflow vulnerability (even with PreciseNumber definition in previous post), for there will be deficit in memory at some point.

Such number can be generated and computer will crash.


Base-k arbitrary precision arithmetics implementation.

It's available for download.

It's not as precise as it can be, but see comment in code for details. Still fairly useful i think.

Or see this for theory: Object Oriented Arbitrary Precision Arithmetics.

update 22 XI 2016: code is erroneous, will be corrected in future - if/when i can.


Can computers solve any problem?


For example it cannot store number large enough or precise enough.

At some point there will be deficit in memory (because it's made of silicon, which is produced from matter, which is limited amount in the universe).


Uses for Stitie Processor.

Mostly for Unicode Text Encryption / Decryption and 3D Graphics.

Client decides of course.

It can encrypt / decrypt any data, including 3D Graphics. And do anything any other processor can.


Power of Simplicity.

Simpler processor means cheaper. if it scales, it's also faster this way.

i think that this principle applies both to software and hardware.

Can the Internet be called 'Matrix'?

I think yes.

If you treat every Internet Device as 'service', that 'talk(s)' to each other, and map them into Matrix Form (model of such is Stitie Machine), then yes.

With dynamic code loading and data transfer, and with more untraditional links such as human couriers, everything is affected by the Internet (or such Object Matrix), somehow, to some degree. Let's not forget that computers can control any device, and humans use programs to manage companies and people in such.

Thus 'state' change in one machine can make miracles happen, like in 'Butterfly Effect'.


How to compute Matrix equations using Stitie Machine?

Stitie Machine is Object Matrix.

Just model Matrix in computer memory, and implement any operation you wish.

See: this post.

MULP operation explained.

def. Mulp: multiply arbitrary precision numbers.

For arbitrary precision numbers, see: this post.

How to multiply such numbers (num1, num2)?

1. For each partial multiplication in num1:
2.   Multiply it by whole num2, inserting resulting partial multiplications in num2 as neccessary to result list (number) num3.
3. Flatten structure by adding multiplicator (n) parts of partial multiplications with same power (m), removing unneccessary partial multiplications from list (number) num3.