Cryptography and hashing in Pharo

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Cryptography and hashing in Pharo

cedreek
Hi again,


Concerning cryptography in Pharo, there are to my knowledge :
=> a package developed in squeak [1] that was I think ported/forked for Pharo. I cannot find the Pharo version
=> a binding to the sodium library (NaCl) [2]

With one would you recommend ?  Maybe another option ?


Concerning hashing (I’d like to hash information content a bit like this is done in ifs with their multihash lib [3])
=> I found a keccak implication with I think would do the [4]. Any feedback ? Other implementations available ?
=> Do you think having something like ifs multihash would be interesting in Pharo ?


Again, thanks in advance for your comments/advices.

Cédrick



Reply | Threaded
Open this post in threaded view
|

Re: Cryptography and hashing in Pharo

Paul DeBruicker
I made this port/copy of the squeaksource package:  

http://smalltalkhub.com/#!/~Cryptography/Cryptography


Is that the version you were thinking of and couldn't find?

What is ifs?

I don't understand what you want to do with the hashing.  Are you talking
about hashing domain objects for external storage?   Do you have to interact
with another system or just have hashed data in the image or stored
somewhere internally to your project? What OS are you going to use?  


I think you can get to the point where your objects can be hashed by any of
the backends you mention and just change among them as your needs change.
That being said NaCl seems the most generally useful.  Cryptographic hashing
in Pharo is slower than C, so depending on the volume of data to hash a
Pharo implementation may be too slow.



hope this helps


Paul


Cédrick Béler wrote

> Hi again,
>
>
> Concerning cryptography in Pharo, there are to my knowledge :
> => a package developed in squeak [1] that was I think ported/forked for
> Pharo. I cannot find the Pharo version
> => a binding to the sodium library (NaCl) [2]
>
> With one would you recommend ?  Maybe another option ?
>
>
> Concerning hashing (I’d like to hash information content a bit like this
> is done in ifs with their multihash lib [3])
> => I found a keccak implication with I think would do the [4]. Any
> feedback ? Other implementations available ?
> => Do you think having something like ifs multihash would be interesting
> in Pharo ?
>
>
> Again, thanks in advance for your comments/advices.
>
> Cédrick
>
>
> [1]  http://www.squeaksource.com/Cryptography.html
> <http://www.squeaksource.com/Cryptography.html> 
> [2]
> http://catalog.pharo.org/catalog/project/Nacl?_s=54MCZlmxc6F08Ht4&_k=HxcBD1pRVtXkfVFM
> <http://catalog.pharo.org/catalog/project/Nacl?_s=54MCZlmxc6F08Ht4&_k=HxcBD1pRVtXkfVFM> 
> [3] https://github.com/multiformats/multihash
> <https://github.com/multiformats/multihash> 
> [4] https://github.com/sbragagnolo/Keccak
> <https://github.com/sbragagnolo/Keccak>





--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Cryptography and hashing in Pharo

cedreek


Le 26 oct. 2017 à 20:35, Paul DeBruicker <[hidden email]> a écrit :

I made this port/copy of the squeaksource package:  

http://smalltalkhub.com/#!/~Cryptography/Cryptography


Is that the version you were thinking of and couldn't find?

Oh probably. I might have overlooked, and maybe only on Github. 



What is ifs?


Sorry this was a typo. I meant ipfs (a distributed file system). 

It works like GIT. Under the hood is a (distributed) Merkle DAG that store content hash. 


The official implantation is in GO and I think the js (node) version is quite complete too. 

I see it as a source of inspiration (and eventually a kind of “eternal” backend). 


I don't understand what you want to do with the hashing.  Are you talking
about hashing domain objects for external storage?   Do you have to interact
with another system or just have hashed data in the image or stored
somewhere internally to your project? What OS are you going to use?  

Not sure yet what I want to do with that. I see content hashing as a digital fingerprint of information exchanged by two systems. 

What I try to demo is a personal information system (several personal nodes representing it simulates by several Pharo apps) that interact (exchange info) with others person personal information system. 

I’d like to embrace the distributed/decentralized programming paradigms which if I understand well would allow to build such system without a centralized point of failure. 
So no real db, only nodes that replicates information once shared. Amongst other things, I’d like to show that if a node is lost (stolen smartphone for instance), one can rebuilt it from other nodes. All non shared info are lost forever though. There can be later some special node acting as storage. 




I think you can get to the point where your objects can be hashed by any of
the backends you mention and just change among them as your needs change.
That being said NaCl seems the most generally useful.  Cryptographic hashing
in Pharo is slower than C, so depending on the volume of data to hash a
Pharo implementation may be too slow.

At start, I can do without cryptography but I’d like soon to think about a way to encrypt information exchange between nodes. Maybe symmetric crypto will be enough. 

Hashing on the other one would be more to have a way to index information. Cryto to encrypt exchanges. 




hope this helps


Yes sure. 

I hope I was clearer in my explanations !

Cheers,

Cédrick 


Paul


Cédrick Béler wrote
Hi again,


Concerning cryptography in Pharo, there are to my knowledge :
=> a package developed in squeak [1] that was I think ported/forked for
Pharo. I cannot find the Pharo version
=> a binding to the sodium library (NaCl) [2]

With one would you recommend ?  Maybe another option ?


Concerning hashing (I’d like to hash information content a bit like this
is done in ifs with their multihash lib [3])
=> I found a keccak implication with I think would do the [4]. Any
feedback ? Other implementations available ?
=> Do you think having something like ifs multihash would be interesting
in Pharo ?


Again, thanks in advance for your comments/advices.

Cédrick


[1]  http://www.squeaksource.com/Cryptography.html
&lt;http://www.squeaksource.com/Cryptography.html&gt;
[2]
http://catalog.pharo.org/catalog/project/Nacl?_s=54MCZlmxc6F08Ht4&_k=HxcBD1pRVtXkfVFM
&lt;http://catalog.pharo.org/catalog/project/Nacl?_s=54MCZlmxc6F08Ht4&amp;_k=HxcBD1pRVtXkfVFM&gt;
[3] https://github.com/multiformats/multihash
&lt;https://github.com/multiformats/multihash&gt;
[4] https://github.com/sbragagnolo/Keccak
&lt;https://github.com/sbragagnolo/Keccak&gt;





--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Cryptography and hashing in Pharo

cedreek
An interesting read on P2P content distribution. 

https://medium.com/paratii/a-brief-history-of-p2p-content-distribution-in-10-major-steps-6d6733d25122

To me Smalltalk fits naturally in this paradigm (isn’t it gemstone adn?).  

My naive thought would be to push on such development. 

Better scalability, resilience ...

Does it exists Pharo developments that falls in this category (p2p content distribution) ?
Would it be interesting to have DHT in Pharo ? For which usage ?

Just thinking loud ! ^^

Cheers,

Cédrick 



Le 27 oct. 2017 à 10:04, Cédrick Béler <[hidden email]> a écrit :



Le 26 oct. 2017 à 20:35, Paul DeBruicker <[hidden email]> a écrit :

I made this port/copy of the squeaksource package:  

http://smalltalkhub.com/#!/~Cryptography/Cryptography


Is that the version you were thinking of and couldn't find?

Oh probably. I might have overlooked, and maybe only on Github. 



What is ifs?


Sorry this was a typo. I meant ipfs (a distributed file system). 

It works like GIT. Under the hood is a (distributed) Merkle DAG that store content hash. 


The official implantation is in GO and I think the js (node) version is quite complete too. 

I see it as a source of inspiration (and eventually a kind of “eternal” backend). 


I don't understand what you want to do with the hashing.  Are you talking
about hashing domain objects for external storage?   Do you have to interact
with another system or just have hashed data in the image or stored
somewhere internally to your project? What OS are you going to use?  

Not sure yet what I want to do with that. I see content hashing as a digital fingerprint of information exchanged by two systems. 

What I try to demo is a personal information system (several personal nodes representing it simulates by several Pharo apps) that interact (exchange info) with others person personal information system. 

I’d like to embrace the distributed/decentralized programming paradigms which if I understand well would allow to build such system without a centralized point of failure. 
So no real db, only nodes that replicates information once shared. Amongst other things, I’d like to show that if a node is lost (stolen smartphone for instance), one can rebuilt it from other nodes. All non shared info are lost forever though. There can be later some special node acting as storage. 




I think you can get to the point where your objects can be hashed by any of
the backends you mention and just change among them as your needs change.
That being said NaCl seems the most generally useful.  Cryptographic hashing
in Pharo is slower than C, so depending on the volume of data to hash a
Pharo implementation may be too slow.

At start, I can do without cryptography but I’d like soon to think about a way to encrypt information exchange between nodes. Maybe symmetric crypto will be enough. 

Hashing on the other one would be more to have a way to index information. Cryto to encrypt exchanges. 




hope this helps


Yes sure. 

I hope I was clearer in my explanations !

Cheers,

Cédrick 


Paul


Cédrick Béler wrote
Hi again,


Concerning cryptography in Pharo, there are to my knowledge :
=> a package developed in squeak [1] that was I think ported/forked for
Pharo. I cannot find the Pharo version
=> a binding to the sodium library (NaCl) [2]

With one would you recommend ?  Maybe another option ?


Concerning hashing (I’d like to hash information content a bit like this
is done in ifs with their multihash lib [3])
=> I found a keccak implication with I think would do the [4]. Any
feedback ? Other implementations available ?
=> Do you think having something like ifs multihash would be interesting
in Pharo ?


Again, thanks in advance for your comments/advices.

Cédrick


[1]  http://www.squeaksource.com/Cryptography.html
&lt;http://www.squeaksource.com/Cryptography.html&gt;
[2]
http://catalog.pharo.org/catalog/project/Nacl?_s=54MCZlmxc6F08Ht4&_k=HxcBD1pRVtXkfVFM
&lt;http://catalog.pharo.org/catalog/project/Nacl?_s=54MCZlmxc6F08Ht4&amp;_k=HxcBD1pRVtXkfVFM&gt;
[3] https://github.com/multiformats/multihash
&lt;https://github.com/multiformats/multihash&gt;
[4] https://github.com/sbragagnolo/Keccak
&lt;https://github.com/sbragagnolo/Keccak&gt;





--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html