unsakini 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +71 -19
- data/lib/tasks/unsakini_tasks.rake +36 -1
- data/lib/unsakini/version.rb +1 -1
- data/spec/dummy/angular/package.json +1 -2
- data/spec/dummy/config/initializers/unsakini.rb +4 -0
- data/spec/dummy/db/migrate/20161123150822_create_boards.unsakini_engine.rb +10 -0
- data/spec/dummy/db/migrate/20161123150823_create_user_boards.unsakini_engine.rb +12 -0
- data/spec/dummy/db/migrate/20161123150824_create_posts.unsakini_engine.rb +13 -0
- data/spec/dummy/db/migrate/20161123150825_create_comments.unsakini_engine.rb +12 -0
- data/spec/dummy/db/migrate/20161123150826_add_encrypted_password_to_user_board.unsakini_engine.rb +6 -0
- data/spec/dummy/db/migrate/20161123150827_create_users.unsakini_engine.rb +13 -0
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1f7610a7b1efe62c3b15aec2b07754e303a134e
|
4
|
+
data.tar.gz: 109ce1ca7cc41e28c30552208ae6464d6f913dfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59b4a535023fb8336a688f365d4020a129157c0a0724707f3a08dfe850f07653b999d566fd5cb60386df036e5d871d2c7d88c2d4a08d71a528454f20dfb87b7e
|
7
|
+
data.tar.gz: b1c52c6ccb7c51ac5b7fba768700c5444d715290196dc45fde2a47bae2aa92cf708885eb9bc90f4d95e413e83df8772e3912310a1d2855cf69570838d19d7c78
|
data/README.md
CHANGED
@@ -1,28 +1,80 @@
|
|
1
|
-
|
2
|
-
Short description and motivation.
|
1
|
+
[![Build Status](https://travis-ci.org/adonespitogo/unsakini.svg?branch=master)](https://travis-ci.org/adonespitogo/unsakini)
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
UNSAKINI
|
4
|
+
-----------
|
5
|
+
*Created by and for online activists, information security enthusiasts and government surveillance evaders.*
|
6
6
|
|
7
|
-
## Installation
|
8
|
-
Add this line to your application's Gemfile:
|
9
7
|
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
**[Unsakini](https://www.unsakini.com)** is an open source encrypted bulletin board created with the aim of evading global information surveillance and spying, preventing data leaks and promoting information confidentiality and integrity.
|
9
|
+
|
10
|
+
Perfect for:
|
11
|
+
|
12
|
+
- group discussions on sensitive issues
|
13
|
+
- confidential conversations
|
14
|
+
- storing passwords, liscenses, credit card details, and other sensitive documents
|
15
|
+
|
16
|
+
|
17
|
+
-------------------------
|
18
|
+
|
19
|
+
### How it Works
|
20
|
+
Upon using the system, you'll be asked to provide your private key. This key is used to encrypt your data before it is sent to the server. If you look at the network traffic in the browser network tab (by pressing F12 and selecting network tab), you'll see that sensitive data sent to the server are gibberesh. This is because they are encrypted using your private key before it leaves your web browser. The key is stored in your computer and is never sent to the server. Only you have access to your private key, thus only you can read your data.
|
21
|
+
|
22
|
+
Hackers, surveillance and spy softwares and even the server host cannot read your data, unless they are able to obtain your private key. Your private key is deleted from your computer once you logout.
|
23
|
+
|
24
|
+
To increase the security, your data is re-encrypted in the backend before being saved to the database, which adds a second layer of protection.
|
25
|
+
|
26
|
+
So to access your data, the hacker needs to know two things - (1) your private key and (2) the server encryption key. That is, if they are able to bypass the server security and gets access to the database. Even so, they won't be able to read the data without these two elements.
|
27
|
+
|
28
|
+
The data is ecnrypted using [Advanced Encryption System (AES)](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard), the most widely used and trusted encryption algorithm.
|
13
29
|
|
14
|
-
|
15
|
-
|
16
|
-
|
30
|
+
------
|
31
|
+
|
32
|
+
### System Requirements
|
33
|
+
- Node.js
|
34
|
+
- Ruby >= 2.2.2
|
35
|
+
- `rails` and `bundler` gems
|
36
|
+
|
37
|
+
### Installation
|
38
|
+
Create a new rails application named `my-app` or anything you like.
|
39
|
+
```
|
40
|
+
$ rails new my-app
|
41
|
+
$ cd my-app
|
42
|
+
```
|
43
|
+
Add `gem 'unsakini'` to your `Gemfile`.
|
44
|
+
```
|
45
|
+
$ bundle install
|
46
|
+
$ rake unsakini:install
|
17
47
|
```
|
18
48
|
|
19
|
-
|
20
|
-
```bash
|
21
|
-
$ gem install unsakini
|
49
|
+
Run local rails server
|
22
50
|
```
|
51
|
+
$ rails s
|
52
|
+
```
|
53
|
+
Now you will be able to see the application at [http://localhost:3000](http://localhost:3000)
|
54
|
+
|
55
|
+
------------------------------
|
56
|
+
|
57
|
+
### Encryption Specifications
|
58
|
+
|
59
|
+
- server
|
60
|
+
- Algorithm = `AES`
|
61
|
+
- Mode = `CBC`
|
62
|
+
- Key Size = `256`
|
63
|
+
- *Others = autogenerated, random
|
64
|
+
- client
|
65
|
+
- Algorithm = `AES`
|
66
|
+
- Mode = `CBC`
|
67
|
+
- Padding = `Pkcs7`
|
68
|
+
- Key Derivation Function = `PBKDF2`
|
69
|
+
- Key Size = `256`
|
70
|
+
- Initialization Vector Size = `128`
|
71
|
+
- PBKDF2 iterations = `500`
|
72
|
+
|
73
|
+
### Security
|
74
|
+
If you find any security flaws, please don't write a github issue. Email me instead at pitogo.adones@gmail.com so we can fix it before the public knows.
|
23
75
|
|
24
|
-
|
25
|
-
|
76
|
+
### Author
|
77
|
+
[Adones Pitogo](http://adonespitogo.com)
|
26
78
|
|
27
|
-
|
28
|
-
|
79
|
+
### License
|
80
|
+
Released under the terms of [MIT](https://opensource.org/licenses/MIT) License.
|
@@ -1,5 +1,16 @@
|
|
1
1
|
namespace :unsakini do
|
2
2
|
|
3
|
+
|
4
|
+
desc "Runs `rails generate unsakini:config`"
|
5
|
+
task :config do
|
6
|
+
system('bundle exec rails g unsakini:config')
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "Runs `rails generate unsakini:angular`"
|
10
|
+
task :angular do
|
11
|
+
system('bundle exec rails g unsakini:angular')
|
12
|
+
end
|
13
|
+
|
3
14
|
desc "Initializes the angular app in ./angular directory."
|
4
15
|
task :build do
|
5
16
|
|
@@ -21,7 +32,7 @@ namespace :unsakini do
|
|
21
32
|
end
|
22
33
|
rescue Exception => e
|
23
34
|
puts \
|
24
|
-
|
35
|
+
"
|
25
36
|
|
26
37
|
Please run `rails g unsakini:angular` before you proceed.
|
27
38
|
|
@@ -30,4 +41,28 @@ namespace :unsakini do
|
|
30
41
|
|
31
42
|
end
|
32
43
|
|
44
|
+
desc "One stop command to install unsakini."
|
45
|
+
task :install => [:config, :angular, :build] do
|
46
|
+
begin
|
47
|
+
system('bundle exec rake unsakini_engine:install:migrations')
|
48
|
+
system('bundle exec rake db:migrate')
|
49
|
+
rescue Exception => e
|
50
|
+
puts e.to_s
|
51
|
+
puts \
|
52
|
+
"
|
53
|
+
|
54
|
+
An error occured. Please run the following commands in succession:
|
55
|
+
|
56
|
+
"
|
57
|
+
puts "1.) rails g unsakini:config"
|
58
|
+
puts "2.) rails g unsakini:angular"
|
59
|
+
puts "3.) bundle exec rake unsakini_engine:install:migrations"
|
60
|
+
puts "4.) bundle exec rake db:migrate"
|
61
|
+
puts ""
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
|
33
68
|
end
|
data/lib/unsakini/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
# This migration comes from unsakini_engine (originally 20161116200034)
|
2
|
+
class CreateUserBoards < ActiveRecord::Migration[5.0]
|
3
|
+
def change
|
4
|
+
create_table :user_boards do |t|
|
5
|
+
t.integer :user_id
|
6
|
+
t.integer :board_id
|
7
|
+
t.boolean :is_admin, :default => false
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# This migration comes from unsakini_engine (originally 20161118031023)
|
2
|
+
class CreatePosts < ActiveRecord::Migration[5.0]
|
3
|
+
def change
|
4
|
+
create_table :posts do |t|
|
5
|
+
t.text :title
|
6
|
+
t.text :content
|
7
|
+
t.integer :user_id
|
8
|
+
t.integer :board_id
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# This migration comes from unsakini_engine (originally 20161118100454)
|
2
|
+
class CreateComments < ActiveRecord::Migration[5.0]
|
3
|
+
def change
|
4
|
+
create_table :comments do |t|
|
5
|
+
t.text :content
|
6
|
+
t.integer :user_id
|
7
|
+
t.integer :post_id
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# This migration comes from unsakini_engine (originally 20161122211105)
|
2
|
+
class CreateUsers < ActiveRecord::Migration[5.0]
|
3
|
+
def change
|
4
|
+
create_table :users do |t|
|
5
|
+
t.string :name
|
6
|
+
t.string :email
|
7
|
+
t.string :password_digest
|
8
|
+
t.boolean :confirmed
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unsakini
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adones Pitogo
|
@@ -361,6 +361,7 @@ files:
|
|
361
361
|
- spec/dummy/config/initializers/inflections.rb
|
362
362
|
- spec/dummy/config/initializers/mime_types.rb
|
363
363
|
- spec/dummy/config/initializers/new_framework_defaults.rb
|
364
|
+
- spec/dummy/config/initializers/unsakini.rb
|
364
365
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
365
366
|
- spec/dummy/config/locales/en.yml
|
366
367
|
- spec/dummy/config/puma.rb
|
@@ -368,6 +369,12 @@ files:
|
|
368
369
|
- spec/dummy/config/secrets.yml
|
369
370
|
- spec/dummy/config/spring.rb
|
370
371
|
- spec/dummy/db/development.sqlite3
|
372
|
+
- spec/dummy/db/migrate/20161123150822_create_boards.unsakini_engine.rb
|
373
|
+
- spec/dummy/db/migrate/20161123150823_create_user_boards.unsakini_engine.rb
|
374
|
+
- spec/dummy/db/migrate/20161123150824_create_posts.unsakini_engine.rb
|
375
|
+
- spec/dummy/db/migrate/20161123150825_create_comments.unsakini_engine.rb
|
376
|
+
- spec/dummy/db/migrate/20161123150826_add_encrypted_password_to_user_board.unsakini_engine.rb
|
377
|
+
- spec/dummy/db/migrate/20161123150827_create_users.unsakini_engine.rb
|
371
378
|
- spec/dummy/db/schema.rb
|
372
379
|
- spec/dummy/db/test.sqlite3
|
373
380
|
- spec/dummy/public/app/favicon.ico
|
@@ -492,6 +499,12 @@ test_files:
|
|
492
499
|
- spec/dummy/app/controllers/application_controller.rb
|
493
500
|
- spec/dummy/app/models/application_record.rb
|
494
501
|
- spec/dummy/db/test.sqlite3
|
502
|
+
- spec/dummy/db/migrate/20161123150823_create_user_boards.unsakini_engine.rb
|
503
|
+
- spec/dummy/db/migrate/20161123150825_create_comments.unsakini_engine.rb
|
504
|
+
- spec/dummy/db/migrate/20161123150826_add_encrypted_password_to_user_board.unsakini_engine.rb
|
505
|
+
- spec/dummy/db/migrate/20161123150824_create_posts.unsakini_engine.rb
|
506
|
+
- spec/dummy/db/migrate/20161123150827_create_users.unsakini_engine.rb
|
507
|
+
- spec/dummy/db/migrate/20161123150822_create_boards.unsakini_engine.rb
|
495
508
|
- spec/dummy/db/development.sqlite3
|
496
509
|
- spec/dummy/db/schema.rb
|
497
510
|
- spec/dummy/config/application.rb
|
@@ -509,6 +522,7 @@ test_files:
|
|
509
522
|
- spec/dummy/config/locales/en.yml
|
510
523
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
511
524
|
- spec/dummy/config/initializers/cors.rb
|
525
|
+
- spec/dummy/config/initializers/unsakini.rb
|
512
526
|
- spec/dummy/config/initializers/application_controller_renderer.rb
|
513
527
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
514
528
|
- spec/dummy/config/initializers/mime_types.rb
|