In a MAM stream, every message holds a reference to the next one. To follow the stream when there is a snapshot you must always keep the ref to the next message.
Currently, to read the beginning of the stream after a snapshot you have to connect to a permanode.
(Source : https://youtu.be/_ZO2ysgzKkM at 1h23)
To piggyback off of Chris, you can have forward secrecy even with a merkle tree of one leaf (which is the same as a simple one-time signature).
However, there are a few things (some of which I outlined in this blog post) that you can as a consequence of having merkle trees in MAM.
You can split/fork the channel into topics
You can encrypt different ...
When you want to send data via MAM, you have to encode the data in a specific way. The encoded data will be inserted in the signature/message slot of your transaction (0-value txs don't need any signature).
This means that you can put as much data as this protocol allows you to. I'll put here a youtube video about MAM (the guy doing these tutorials is pretty ...
When storing data on the Tangle using MAM, you actually issue 0 value transactions that encapsulate your data. As such, it is impossible to revoke the data once published. By throwing away the side key, you make it impossible to find the tx and decrypt it.
Here is some nice material for MAM, it may clear things out.
Transaction size is limited. An intensive data stream will be splitted into many transactions. Each transaction requires a small pow and the idea is that even if it is small, the pow will discourage usage of intensive data stream.
The expected way to use MAM for such use case is to just transfer securly kind of credentials encrypted on the tangle and use ...
I used code downloaded from here.
in public mode the publisher chooses a seed and keeps it secret.
Then he starts to publish messages on a channel represented by the first Merkle tree root generated with his seed.
The first message also contains the second Merkle tree root that will be used by the publisher to publish the second message and so ...
You can use a Key-Sharing technique like a Group Diffie-Hellman key agreement or you can mask (encrypt) the sideKey and channel-id using the Public keys of the receivers. As i know, there's a public-key cryptosystem called NTRU that is said it has resistance to quantum-computer-based attacks. So i think this is maybe the solution to this problem.
MAM does not support value transfer
All transactions (also the ones that send 1i) are deleted by a snapshot (on non-permanodes), only the final balances remain.
Therefore if you need transactions to survive across snapshots, you'd better find (or run) a permanode. (The only permanode I know of is run by the admin of thetangle.org for his tangle explorer. ...
Key exchange is a problem not just for IOTA MAM but a lot of cryptographic algorithms especially for symmetric-key encryption.
How can I securely transmit the keys?
To get the key from one actor to another, you have to establish a connection between the two, where no third party can interfere with the messages sent along this connection. Cryptographers ...
Never used Pandas, you probably have to ask elsewhere to get an answer how to serialize your object
There are two methods of generating addresses. There is one way to generate the next free address (which you can attach to the tangle automatically), or you can generate an address by index (which will not attach it automatically). Anyway, as soon as you send ...
On the IOTA blog they state:
an additional nonce may be used as a revocable encryption key
If I understand it correctly (and I believe I saw this in a MAM POC somewhere), it can be used to withdraw access to a specific subscriber of a restricted MAM stream. However, I struggle to understand how this works.
To be honest, I am not sure whether you can be that careless about whether your transactions confirm.
There is no guarantee that unconfirmed transactions will (eventually) reach every node of the network. Also permanodes will probably not retain unconfirmed transactions forever (in case they reached the node originally). Also, it is hard to "timestamp" ...
To try MAM I recommend using the instructions as per latest IOTA meetup in Amsterdam. You can download the source from http://iotameetup.nl/ and watch https://www.youtube.com/watch?v=_ZO2ysgzKkM @ 1:21:00 for more instructions. Worked fine for my getting started. Not sure if that matches the github repo.