Git Product home page Git Product logo

qabel.github.io's Introduction

qabel.github.io's People

Contributors

7marcus9 avatar abothe avatar audax avatar cburkert avatar enkore avatar f-porter avatar gottox avatar gromweb avatar hartie95 avatar jan-schreib avatar jasinai avatar julianseeger avatar l-henke avatar malte-z avatar nannor avatar roeslpa avatar schulze avatar zuckschwerdt avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qabel.github.io's Issues

Module Manager documentation

You have already specified some stuff for the module manager, haven't you?
Maybe you could add that to the documentation?

Wording: Share, Local share, upload

As these words were not really clear in our meeting on monday, here my opinion of their meaning:

  • Share: Actually shared directory/number of files which resides on one hand on the client's device and on the other hand on the server.
    Access can have:
    -- only the user who shared it (only his devices)
    -- the user who shared it and contacts defined by him
  • Local share: Only the local directory/number of files which are part of a share (local representation of a share on a particular device)
  • Upload: A location on a Qabel Storage Server where shares can be stored to (defined by a public token - for read access - , a private token - for write access - , a revoke_token - for deleting it - and the information of the Qabel Storage Server).
    => for every share with another access definition there must be created a new upload, right?

History keeping for drop messages

We have to define a way to keep history for drop messages. This is module dependent but we should help modules with this.

This is an issue because we will not use FFsync anymore and hence do not have a sync protocol yet.

Idea: Use Qabel storage to hold a history file for specific modules and provide functionality to ease the history keeping process for module implementations.

Create separate doc for Qabel crypto setup description and reasoning

Since we'll probably use the same crypto setup for all Qabel (core) components, we should create a separate document (wiki page) for the description and reasoning of this crypto setup, briefly mention the essentials in the separate component specs and refer to the dedicated crypto document for further reading.

Create separate doc for a detailed threat model

I would like to create a new wiki page for a threat model.

The page should give detailed information about what information is accessible to the different parties in a Qabel system, e.g. user's client, ISP, drop server, other user's client, ...

Would everybody be OK with having this as part of this wiki, or should I start such a document somewhere else? Or did anybody already start a threat model somewhere else?

Ensure server-side encrypted-ness of data

Hi everyone,

just got around wondering how to solve that problem about making sure that the client always submits encrypted data.

What if the server encrypted incoming data again using the client's given public key?

This might increase the cpu time needed to store everything but it's absolute ensured that everything cannot be read by server owners or others who don't have the private key.

Or, as a second option, the data could be encrypted via a short randomly generated symmetric key, so the client has to brute-force-crack that key on its own -- and thus has to do some proof of work.

Migrating person documentation to module

Hey @Qabel/internal-write-access,

on Monday we talked about which fields have to be in contact and which fields have to be in person. I can remember that we will have public key, drop urls and email address (and maybe other flieds, too) but I cannot remember where these fields definitely will be (i.e. is email address in contact or in person). Can anyone remember this?

This is important for @malte-z because he has to reference this information in his bachelor thesis.

If a contact has more fields than described in https://github.com/Qabel/intern-doc/wiki/Qabel-Client-Contact-Drop-Messages we have to update this (not time-critical). If email address will be implemented by the person module there has to be a wiki page in the corresponding repository which states this - so @malte-z can reference this page.

Unittests? TDD? Travis-CI?

Just got that idea about having a certain presence of quality control and thus Unittests all over the modules and libraries.

Crypto tests, serialization tests, IO testing, ensuring that certain predetermined use cases work.
Advantage: Qabel has quite no GUIs, so we don't need to have GUI tests. :-)

Questions For Meeting on Monday 01.09.2014

Hi!

We want to discuss about the concept of Qabel. @Gottox and I want to create a schedule for this meeting.

Please send us your questions and mind and we will pack it in the schedule.

Please send it until Thursday

Thanks in advance

Device ID

I think that we need a device id for every device of an user.
The file and sync module need that to syncronise the data. But this id shall be provide this id.

This have to implement in the config and have to be an individual key / id.

Encryption mode for drop message.

It was not specified in with mode AES should be used. @cburkert and I decided to use CTR mode with a random IV as nonce. Reusing the nonce shouldn't be a problem as we don't have any long living AES keys.

Is this fine for everybody?

Where shall the module save their settings

One small question (for clarification)

Shall every module use the local and synced configuration to save its configuration or have to save it their?

I think that is important to fix it to start with the configuration stuff in the module and especially for the person and sync module

Add unencrypted version header to encrypted drop messages

I think we should add unencrypted version information (and maybe also utilized encryption/hash algorithms) to the encrypted drop messages or we will end with an unchangeable drop message format.

Since the size of the encrypted AES key depends on the size of the RSA key used to encrypt the original AES key, the encrypted message format would change in an incompatible way when using RSA keys with a different size. Also the digest size varies with the utilized hash function. When we just concatenate all these values without a delimiter, a client could never identify a changed message format.

Remove server documentation from intern-doc

Should we remove the documentation about the Qabel servers from this documentation?

  • Pro: The servers will have / already have their own repositories and this would be consistent to modules.
  • Con: We might want to have some of these things documented in the core documentation of Qabel.
    • I think we account for that with documenting the protocols in our core documentation (which we are currently doing)

Write the abstract and preamble

The general stuff which is not technical nor is about what this documentation is about should be written there. It will stuff most developers don't want - definitely don't need - to read.

Reviewed Client Configuration

I reviewed the config page and detailed some parameters.
Please check especially the following points:

  • I changed the storage server config to use a URL instead of separate keys for host, port, service prefix (as in the drop config). Reason: protocol key was missing (and for sake of unification)
  • The private key is stored in the identity, but I miss the public key. Shouldn't it be stored there, too?
  • what exactly is the meaning of the provider/user/auth fields in an account structure?

Choosing drop id - meta data

How will the client choose the drop id?
And how do we ensure that the drops of qabel users will overlap in order to obfuscate meta data?

Client exchange documentation

Because of a milestone scheduled for tomorrow (finishing layout of documentation) I have to remove some pages from the TOC https://github.com/Qabel/intern-doc/wiki/Table%20of%20contents. These pages are not gone, they are just not linked in the TOC anymore.
This is because I think the information in these pages heavily belongs into modules like https://github.com/Qabel/qabel-file-module and https://github.com/Qabel/qabel-contacts-module (which is now called "person module").
The pages I'll remove from the TOC are the following.

@k-c13 if you agree that some of these pages belong into the wiki of a specific module can you please migrate them?

Cross-reference git submodules in each Qabel repo

First off: Shall we use git submodules for efficient dependency management between components?

If so, part of the implementation will be to have all proper submodules referenced in each sub repo.

Are there standards for directory names (like 'ext' for storing all kinds of submodules in there) to have?

Use a MAC on the packs

Best practice for encrypted data which is transported over a network is to append a MAC. (The preferred way is encrypt-then-MAC). This ensures the integrity of an encrypted message before the message itself has to be decrypted. Special crafted malicious packs might use security flaws in the decryption progress if a message is decrypted without prior integrity checks. I can't imagine a legitimate reason to not use a MAC on an encrypted message.

Section "Aufbau der Packs" in https://github.com/Qabel/intern-doc/wiki/Qabel-Client-Blocks list "decrypting the pack" as the first step, which leads to the assumption that no MAC is utilized.

Storage: Chunk vs. Blob

How should be call the sub-parts of a Storage Volume?
In the wiki they are sometimes referred to as chunks or blobs.

We kind of started this discussion in #31 but didn't come to any conclusion.
Let's make it clear. What do you think?

I favour chunk.

Contact conflict

Hi Christian!

Can we discuss about the contact details. Because we have a small conflict.

CU
Michael

Page refactoring

We have to discuss some inconsistencies in the architecture and thus in the wiki structure:

  • will there be a separate storage component in the core or is it a part of bridgehead?
  • same thing with drop
  • currently the two Components-* pages for drop and storage describe fundamental principals of the Client-Server-Architecture but are sometimes referenced as server pages (Overview, and somewhere else I think...)
  • If Components-[Drop|Server] should describe the client-side protocol implementation as parts of the core, what does the Qabel-Client-* pages describe?

I would suggest a bit of refactoring.

  • Rename Components-[Drop|Storage] to Introduction-*
  • Rename Qabel-Client-Drop to something else that reflects its content
    • Drop-Message
    • or this can be the new Components-Drop

In any case we have to do something about it. I think the naming is totally confusing.

Local_Settings should contain the values of Preferences directly

https://github.com/Qabel/intern-doc/wiki/Qabel-Client-Configuration

Local_Settings contains two values: an object of modules and the preferences itself. There's no reason why LocalSettings should encapsulate the preferences in an extra field instead of containing the preference values directly.

So instead of this I propose the following:

    Local_Settings  = "{"
                    'poll_interval' : NUM,
                    'poll_interval_wlan' : NUM,
                    'poll_interval_mobile' : NUM,
                    'last_update' : STR,
                    'modules' : { KEY : { ... }, ... }
                    "}"

This keeps the Class diagram simpler as we do not need an empty class just to encapsulate the settings

Any thoughts?

Qabel sync

To have the structure of the documentation ready I have to decide if I shall remove https://github.com/Qabel/intern-doc/wiki/Qabel-Client-Sync from the TOC.

I may remember correctly if Qabel Sync will be module in the future. If so, the link to https://github.com/Qabel/intern-doc/wiki/Qabel-Protocol-Sync should also be removed from the TOC.

Do you @Qabel/internal-write-access think it is correct to remove this from the TOC? I think yes and will remove this by tomorrow if no one argues against it.

Write the introduction

The introduction should make clear what this documentation is about what not. Maybe also where to find the stuff which this documentation is not about.

Exceptions?

@Gottox Is it required to define exceptions for now? I just thought about Java's urge to have 'throws' in methods' declarations aka class diagram.

Stuff like CouldntSendDropException, NoContactFoundException, DropEmptyException or whatsoever.. I know that it might be a bit complicated to have them thought out by now, but just in case that the class diagram should somehow be 'fix' once the documentation is finished -- although I just can't imagine this :-D

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.