Home
   DIR <- Back
       
       hbb - hyperbitblock
       ===================
       
       (Right now this is only a concept / work in progress.)
       
       Hyperbitblock provides a simple service: You can ask for information
       about the reputation of an IP-address. Hyberbitblock will answer with the
       status 1 or 0 that tells if the IP is considered malicious(1) or
       friendly(0).
       
       While there are similar services who provide information about the
       reputation of an ip, Hyperbitblock it's specialty is being hyper-fast.
       
       This speed is achieved by having the information stored in RAM paired
       with the ability to directly access this information on a low-level.
       This process does not perform a search.
       
           "Imagine a librarian who exactly knows the position of
            every book in the library by heart without even thinking."
       
       
       How knowledge is stored in RAM?
       -------------------------------
       
               0.0.0.1 --> 00000000 00000000 00000000 00000001 -->          1
               0.0.0.2 --> 00000000 00000000 00000000 00000010 -->          2
               0.0.0.3 --> 00000000 00000000 00000000 00000011 -->          3
       
                                          [...]
       
           0.16.72.171 --> 00000000 00001000 01001000 10101011 -->    1067179
          18.119.9.193 --> 00010010 01110111 00001001 11000001 -->  309791169
          218.92.0.208 --> 11011010 01011100 00000000 11010000 --> 3663462608
       
                                          [...]
       
       255.255.255.253 --> 11111111 11111111 11111111 11111101 --> 4294967293
       255.255.255.254 --> 11111111 11111111 11111111 11111110 --> 4294967294
       255.255.255.255 --> 11111111 11111111 11111111 11111111 --> 4294967295
       
              ^                                                         ^
              |                                                         |
         user queries                                       info is stored at
         an ip address                              this exact index in array
       
       
       What knowledge do we store?
       ---------------------------
       
       We store one byte per IP-Adress in RAM. That leaves is with very little
       space for information. We have 8 bits of space:
       
       1. [ ]  |     <-- is Blocked
       
       2. [ ]  |
               |     <-- confidence score: 0%, 25%, 50% or 100%
       3. [ ]  |
       
       4. [ ]  |
               |
       5. [ ]  |     <-- reason why blocked: 3 bits, so we can use an
               |                             item of a catalogue of 8
       6. [ ]  |
       
       7. [ ]  |
               |     <-- not used yet
       8. [ ]  |
       
       
       
       What is the advantage of this structure?
       ----------------------------------------
       
       In theory we have 4.3 billion IPv4 addresses. Therefore, if we store one
       byte for each, the program needs to allocate ~4GB of RAM.
       
       For example in C we can easily hold this information in RAM by using an
       array.
       With minimal calculation we directly get the array-index from the address
       from a request for information.
       
       Therefore, I assume, this will be much more efficient than similar
       solutions that use a database in order to optain the information.
       
       
       What is the disadvantage of this structure?
       -------------------------------------------
       
       In order to have the IP-address match the array index, we have to allocate
       a lot of bytes for useless ip.
       We willingly take that loss in RAM-efficiency, in order to get our
       information hyper-fast.