-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsenz.html
370 lines (343 loc) · 18 KB
/
senz.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
<html>
<title>Mysensors.info | SENZ</title>
<head>
<link rel="icon" href="http://www.mysensors.info/img/logo.png">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="http://pingendo.github.io/pingendo-bootstrap/themes/default/bootstrap.css" rel="stylesheet" type="text/css">
</head>
<body>
<style scoped>
.dropshadowclass {
border: solid 1px #CCC;
-moz-box-shadow: 5px 5px 0px #999;
-webkit-box-shadow: 5px 5px 0px #999;
box-shadow: 5px 5px 0px #999;
}
.imagedropshadow {
padding: 5px;
border: solid 1px #EFEFEF;
}
a:hover img.imagedropshadow {
border: solid 1px #CCC;
-moz-box-shadow: 1px 1px 5px #999;
-webkit-box-shadow: 1px 1px 5px #999;
box-shadow: 1px 1px 5px #999;
}
.bLeft
{
width: 200px;
height: 70px;
}
.bRight
{
width: 600px;
height: 70px;
}
.bListLeft
{
width: 150px;
height: 70px;
}
.bListRight
{
width: 600px;
height: 70px;
}
</style>
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-4 text-justify" style="background-color: #337AFB; border: 4px solid #000000;">
<br>
<img src="http://www.mysensors.info/img/logo.png" class="img-responsive img-thumbnail">
<h4>Connect, right now with #sensors you care about.</h4>
<br>
</div>
<div class="col-md-8 text-justify">
<br>
<ul class="lead nav nav-pills">
<li>
<a href="index.html">Home</a>
</li>
<li class="active">
<a href="#">SenZ</a>
</li>
<li>
<a href="android.html">Android</a>
</li>
<li>
<a href="python.html">Python</a>
</li>
<li>
<a href="downloads.html">Downloads</a>
</li>
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
<br>
<h4>MySensor switch provides security and privacy in IoT applications. With
help of MySensors, IoT devices can communicate each other with guaranteeing
end to end security. MySensor supports IoT devices such as Smartphones(android)
and Raspberry-pi.</h4>
</div>
</div>
</div>
</div>
<div class="section" id="top">
<div class="container">
<div class="row">
<div class="col-md-12">
<center><img src="img/whySenz.png" class="img-responsive img-thumbnail" width="60%" height="60%" ></center>
<h1>What is Senz ?</h1>
<br>
<div class="row">
<div class="col-md-12">
<p align="justify"><span style="color">SenZ is a new kind of query language that can be used to communicate with IoT Devices .
It is easily integrable , Ultimately fast and is in the Highest end of security integration. Also it is lively
developed accordingly. As it is said earlier this uses a <span style="color:#6571D5">#twitter</span> like massaging syntax which has made this
language a usable , more powerful and understandable. The communication between each of these devices are done
via the My sensors switch which was developed using python, A high-end application switch which works as a
massage broker. Once client devices are registered in the switch they should share their data to specific
people(Other client devices). Then the. Then they are capable of sharing massages accordingly.
</span>
</p>
<p>Currently MySensors switch is implemented on two languages one is <a href="https://www.python.org/">Python</a> and the other one is <a href="http://www.scala-lang.org/">Scala</a>. In either case it doesn't matter in which language your clients are built on.
You can use either of the implementations to suit your product. currently there are two implementation which works on UDP packet connection and TCP packet connections.
</p>
<p></p>
<center>
<img src="img/p1structure.png" class="img-responsive img-thumbnail imagedropshadow">
</center>
<p></p>
<p></p>
<br>
<h1>What is senz Switch ??</h1>
<p>senz switch is the core working body of this amazing system. This exhibits its outstanding features that can beat the
systems that is available on the market. It is a compound collection of several features in to one and is the key
to its multithreaded high speed massage passing system, it is also integrated with its security features that beats
any of the available systems in the market. High availability and Higher bandwidth is achieved through python Twisted.
senz switch is integrated with a MongoDB database to keep its user registration data ,public and private keys stored,
timely information etc. but the interesting thing here is that it does not keep any of the passed data or even read
those data when passing. <br>So you don't need to worry about using your private devices connected with SENZ to have
second though that your data is revealed and passed through unknown servers. Because you are 100% that when the data
is encrypted and it can only be decrypted in to the massage only by the intended end device and the device only.
</p>
<h1>what's for you Developers....... ?</h1>
<p align="justify">It is obvious that you might have the idea that will it be possible for us to integrate it in to our
system. Or How could we use it in our systems. Sure its the very reason why we have build this in the
way it is.<br>
You developers can develop your applications on top of this platform. There is a senZ switch written
on python. So you will have to install it in a separate server . Then you can use the developed senz
client service written to multiple platforms both mobile and android on which you can develop
applications to communicate using Internet securely with authentication, integrity, confidentiality
and non-repudiation of data together with the access control. .</p>
<h1>Internal Working (massaging Structure)</h1>
<br>
<p>As it was said earlier senZ follows a <span style="color:#6571D5">#twitter</span> like massage
structure which has made it unique compared to the ones out there.
</p>
<pre>
<code><type> #<attribute name> <attribute value> #time <current timestamp> @<receiver> ^<sender> <digital signature>
</code>
</pre>
<center><p>or</p></center>
<pre>
<code><type> $<attribute name> <attribute value> #time <current timestamp> @<receiver> ^<sender> <digital signature>
</code>
</pre>
<table>
<tr>
<td class="bLeft"><code><type></code>
</td>
<td class="bRight">Here, type refers to the type of the massage to be sent currently it has 5 types
of massages. They are SHARE,UNSHARE,GET,PUT,DATA. Each of these massage types are used for different
purposes which will be discussed later.
</td>
</tr>
<tr>
<td class="bLeft"><code>#<attribute name></code>
</td>
<td class="bRight">Attribute name depends up on your purpose. If its a attribute value from a
thermometer it might be #temp and if its a water level #water_level and so on. It's yours to
define the attributes you are using and sharing.
</td>
</tr>
<tr>
<td class="bLeft"><code>$<attribute name></code>
</td>
<td class="bRight">This is not much different from the previous but it simply says that the value referred
to this attribute is encrypted.
</td>
</tr>
<td class="bLeft"><code><attribute value></code>
</td>
<td class="bRight">This is the value of the attribute you are sharing/sending. It could just be an
integer,string or what ever you wish according to the attribute you are using. This field is ignored
in some massage types and they will be discussed detailed below.
</td>
<tr>
<td class="bLeft"><code>#time</code>
</td>
<td class="bRight">This is also a attribute but since time is a default attribute it has to be sent
always.
</td>
</tr>
<tr>
<td class="bLeft"><code><current timestamp></code>
</td>
<td class="bRight">This is the value of the time attribute
</td>
</tr>
<tr>
<td class="bLeft"><code>@<receiver></code>
</td>
<td class="bRight">This is the user name of the receiver of the massage.
</td>
</tr>
<tr>
<td class="bLeft"><code>^<sender></code>
</td>
<td class="bRight">This is the user name of the sender of the massage.
</td>
</tr>
<tr>
<td class="bLeft"><code><digital signature></code>
</td>
<td class="bRight">This is the digital signature for which the sensZ-switch uses to verify that the
intended user has sent the massage.
</td>
</tr>
</table>
<h1>SenZ types</h1>
<p>There are five types of SenZ. These types are SHARE, UNSHARE,
GET, PUT and DATA.
</p>
<table>
<tr>
<td class="bListLeft"><code>SHARE</code></td>
<td class="bListRight">This massage type is used when you need to share some attributes to some
client/device.</td>
</tr>
<tr>
<td class="bListLeft"><code>UNSHARE</code></td>
<td class="bListRight">This does the opposite of the SHARE</td>
</tr>
<tr>
<td class="bListLeft"><code>GET</code></td>
<td class="bListRight">This massage type is used when you are requesting a SHARES attribute from
a client/device.</td>
</tr>
<tr>
<td class="bListLeft"><code>PUT</code></td>
<td class="bListRight">This massage type is used when you need to do some alternation to the device.
When you need to control some device/application/client.
</td>
</tr>
<tr>
<td class="bListLeft"><code>DATA</code></td>
<td class="bListRight">This massage type is used when replying to a GET,PUT or a SHARE. To send
the reply with the requested data.</td>
</tr>
</table>
<div class="row">
<div class="col-md-12">
<h1>Message attributes</h1>Attributes are custom defined key/value pairs (values
can be empty). Attributes comes with “#” sign. For an example #time #lat
#lon etc. Different types of attributes can be defined according to the
application scenarios. Other than custom defined attributes we have defined
special attribute such as #pubkey, #key #time and #msg. #pubkey is corresponding
with a public key of a device and #key is corresponding with a session
key (AES 256).For an instance, when device is registering with switch called
senz, we need to share the public key to the switch by sending the following
Senz.
<p></p>
<pre> <code>SHARE #pubkey <base64 encoded pubkey> #time <current timestamp> @senz ^username <digital signature></code></pre>
</div>
</div>
<h1>Let's Take an Example scenario</h1>
<h3><span>Let's assume a Bank b1 would like to share balance
transaction securely to a user u1.</span></h3>
<div class="col-sm-12 col-md-8 col-lg-8">
<ul style="list-style-type:circle">
<li>The bank (b1) should send the following Senze and obtain the public key of the user u1.
<br>
<pre><code>GET #pubkey @u1 #time t1 ^b1 Signature</code></pre>
</li>
<li>Senze switch delivers the public key as follows(If u1 is not exists, public key will not be sent).
<br>
<pre><code>DATA #pubkey PublicKeyOfu1 #time t2 ^mysensors Signature</code></pre>
</li>
<li>The bank(b1) should share the balance transaction and a AES key (k1) to the user u1.
The key k1 is encrypted with the public key of the user u1.
<br>
<pre><code>SHARE #balance $key E(k1) @u1 #time t3 ^b1 Signature</code></pre>
</li>
<li>The user (u1) should reply to it as follows.
<br>
<pre><code>SHARE #msg OK @b1 #time t4 ^u1 Signature</code></pre>
</li>
<br>
<center> The bank and the user can keep this AES key for encrypting the balance transactions.
The bank can refresh the key by repeating the third step</center>
<br>
<li>The user(u1) should request the balance by sending the following SENZE.
<br>
<pre><code>GET #balance accountNumber @b1 #time t5 ^u1 Signature</code></pre>
</li>
<li>The bank b1 should response to it as follows.
Account balance is encrypted by using the AES key(k1).(Upon received this DATA SENZE, user should
decrypt it and display it on the application.)
<br>
<pre><code>DATA $balance E(x) @u1 #time t6 ^b1 Signature</code></pre>
</li>
</ul>
</div>
</div>
</div>
<p></p>
<footer class="section section-primary" id="bootom">
<div class="container">
<div class="row">
<div class="col-sm-6 col-md-8">
<h1>Sustianable Computing Research Laboratory </h1>
<p>35,Reid Avenue, Colombo 7, Sri Lanka
<br>Phone : +94112581124</p>
</div>
<div class="col-sm-6 col-md-4">
<p class="text-info text-right">
<br>
<br>
</p>
<div class="row">
<div class="col-md-10 hidden-lg hidden-md hidden-sm text-left">
<a href="#"><i class="fa fa-3x fa-fw fa-instagram text-inverse"></i></a>
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
<a href="#"><i class="fa fa-3x fa-fw fa-github text-inverse"></i></a>
</div>
</div>
<div class="row">
<div class="col-md-10 hidden-xs text-right">
<a href="#"><i class="fa fa-3x fa-fw fa-instagram text-inverse"></i></a>
<a href="#"><i class="fa fa-3x fa-fw fa-twitter text-inverse"></i></a>
<a href="#"><i class="fa fa-3x fa-fw fa-facebook text-inverse"></i></a>
<a href="#"><i class="fa fa-3x fa-fw fa-github text-inverse"></i></a>
</div>
</div>
</div>
</div>
</div>
</footer>
<font face="Times New Roman, serif">
<font face="Times New Roman, serif"></font>
</font>
</div>
</div>
</div>
</div>
</body></html>