Which is the best cryptographic algorithm to secure MAVLink protocol? - algorithm

I'm new in MAVLink. Now, I'm trying to check data loss between drone and GCS. After that I want to use one of the cryptographic algorithms to secure MAVLink protocol. Which one is the best?
Thanks & Regards

This question is pretty off-topic but since it's something I've touched before:
You can look at the sMavLink protocol and implementation I made for smaccmpilot.org.
You can look at the successor to Secure MavLink, "GEC", which has both an implementation and design docs I made for smaccm.
You can look at the authentication-only solution proposed (implemented?) by the maintainers of mavlink. I don't really know much about that one other than it was in the works at one point.

Related

How to use data structures in interviews

This question is about how to best approach a coding interview from a data structures point of view.
The way I see it, there are two different ways, I could implement a specific DS from scratch, initialise it and then use it to solve my problem, or simply use a library (I'm talking about Node.js here, but I guess this applies to other languages as well, at least those with some in-built support for DS) without worrying about the implementation and only focusing on how to use them to solve a problem.
In the first case, I'm also demonstrating that I can implement a specific DS from scratch, but at the same time I would need more time and there's some additional complexity. Instead, using a library would leave me more time to solve the actual problem, but some companies might take a dim view on this approach.
I know there's no silver bullet, and different companies will have different views, but what approach would you take if you could only pick one, and why?
Well it is always best to use the library but it is always better to know how common library functions work at least the basic ones.
For example, in many interviews Binary search is asked to be implemented instead of just using the library functions. This is because knowing the implementation adds some good concept which can be used in general problem solving like using the same concept in other divide and conquer algorithms.
In production level code we always look for the fail safe and properly tested library code.
You should pick available libraries, first hand. If needed, customize the behavior of already available libraries.

Using NaCl to benchmark new crypto algorithm

For my master thesis, I have to implement some new Cryptographic functions so that I can have a brief overview of their performance. I have checked on the internet and it seems that the NaCl library was created for this purpose.
To be more precise with you, I don't really need to get hardware-independant measures, I only need to have some idea of the performance of the different versions of the implementation. I have downloaded the archive as described on http://nacl.cr.yp.to/ but I'm a bit lost at this point. Effectively, I don't really need the implementation of the existing algorithms (maybe I only need to keep AES such that I can have a comparaison point) but I need to add the new ones I have implemented. These implementations are C code.
On the website, it is explained how you can collaborate by writing new implementation but I'm not pretty sure I have understood how to do to add a new algorithm.
Can someone help me by giving me a link to a tutorial or by telling me what I need to modify to only measure my implementations ?
Thank you in advance

Websocket server performance comparison

Are there any reliable performance test results/benchmarks/comparisons for websocket server frameworks?
I was googlin to and fro without any significant results. Going by various of Google's instant search suggestions, it seems to be a really hot topic, but the search results are far from satisfying. So a good answer is highly appreciated!
Background
I need to implement websockets for an application that has to be able to scale well, and would therefore like to knoow if there are any big performance differences amongst the available frameworks. I do not really care (too much) about the specific programming language, as stated above performance as well as scalability (+ obviously stability) are the important factors.
What I found so far
A more or less functional check with some time measurements by the autobahn testsuite, comparing their implementation (with CPy, pypy, wsaccel) against 4 others (Jetty, Websocket++, cowboy, ws)
A websockets byproduct of the HTTP comparison between MochiWeb and cowboy
So it is not much, but maybe at least these help someone also looking for an answer.
Aside: If you think this question is not good as is, please consider editing rather than close-voting it, (I found out that I am not a good OP ^^) I would really appreciate it, and there really is a great demand for a good answer to this (kind of) question.

How to best implement an OGC best practice

I'm having some difficulty wrapping my head around building an OGC compliant Earth Observation ordering service. I'm not asking for a step by step process but rather hope to spawn a high level discussion about what might be the best way to approach this task.
There is this best practice document on what i would like to accomplish:
Order Services for Earth Observation Products OGC 06-141r2
However, i'm not sure whether i should get the schema(xsd) files that are at the bottom of the PDF and generate stubs from them, or leverage geoNetwork in some way. I have no idea where to start. Has anyone any experience implementing any OGC standards, best practices or something similar? Where do i start?
I would suggest contacting the editor directly. I believe that there are reference implementations that you can take a look at. The editor is Daniele Marchionni .
Cheers

Can the Diffie-Hellman protocol be used as a base for digital signatures?

I am implementing a custo crypto library using the Diffie-Hellman protocol (yes, i know about rsa/ssl/and the likes - i am using it specific purposes) and so far it turned out better than i original expected - using GMP, it's very fast.
My question is, besides the obvious key exchange part, if this protocol can be used for digital signatures as well.
I have looked at quite a few resources online, but so far my search has been fruitless.
Is this at all possible?
Any (serious) ideas are welcome.
Update:
Thanks for the comments. And for the more curious people:
my DH implementation is meant - among other things - to distribute encrypted "resources" to client-side applications. both are, for the most part, my own code.
every client has a DH key pair, and i use it along with my server's public key to generate the shared keys. in turn, i use them for HMACs and symmetric encryption.
DH keys are built anywhere from 128 up to 512 bits, using safe primes as modulus.
I realize how "pure" D-H alone can't be used for signatures, i was hoping for something close to it (or as simple).
It would appear this is feasible: http://www.quadibloc.com/crypto/pk050302.htm.
I would question why you are doing this though. The first rule of implementing crypto is don't implement crypto. There are plenty of libraries that already exist, you would probably be better off leveraging these, crypto code is notoriously hard to get right even if you understand the science behind it.
DSA is the standard way to make digital signatures based on the discrete logarithm problem.
And to answer a potential future question, Ephemeral-static Diffie-Hellman is the standard way to implement asymmetric encryption (to send messages where you know and trust the recipients public key (for example through a certificate), but the recipient does not know your key).

Resources