首次使用 SSH 连接 git 存储库时,会要求根据主机指纹确认主机的真实性:
The authenticity of host 'github.com (192.30.255.112)' can't be established.
RSA key fingerprint is SHA256:....
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Run Code Online (Sandbox Code Playgroud)
我们有 3 个选择:“是”、“否”和“[指纹]”。我很理解“是”和“否”的回答:
yes = 我已经检查了主机的指纹,没有问题,请连接我。
no = 主机指纹不同,请不要连接我。
但我没有找到任何关于第三个选项的文档。在我检查的每一份文档中,例如Microsoft 的文档或Heroku 的文档,只有两个选项:“是”或“否”。
为什么我有第三个选项“[指纹]”?它的用途是什么?
我有一个 API 端点,外部网站可以在其中提交 POST 请求。确保请求真实且不被篡改的最佳方法是什么,因此他们尊重完整性原则?
由于信用卡信息等数据没有价值,因此我不需要 HTTPS 集成。
我已经查看了 HMAC 和数字签名,我相信第二种选择会更好,但我不确定这是否可行?
同样,散列请求并在我的服务器上验证它就足够了吗?
我们正在编写一个本地Windows应用程序(MFC),它将把一些数据上传到我们的网络应用程序.Windows应用程序将允许用户登录,之后它将定期将一些数据上传到我们的Web应用程序.上传将通过简单的HTTP POST传输到我们的网络应用程序.我担心的是我们如何确保上传实际上来自我们的应用程序,而不是来自curl或类似的东西.我想我们在这里看一些公钥/私钥加密.但我不确定我们是否能以某种方式在我们的win app可执行文件中嵌入一个公钥并完成它.或者,这个公钥是否太容易在我们的应用程序之外提取和使用?
无论如何,我们正在建立双方(客户端和服务器),所以任何东西都是一个选项,但它必须通过HTTP(S).但是,我们不控制win(客户端)应用程序的执行环境,而且在他/她的系统上运行应用程序的用户是唯一一个通过游戏系统获得某些东西的用户.
(我不是母语,在术语方面可能不正确.抱歉.)
我通过无线电在AVR微控制器之间传输数据供个人使用,并希望客户能够证明传输数据的真实性,因为它来自一个授权客户端.这意味着我不要求不可否认性,并且能够预先定义共享密钥.我已经对不同的方法做了一些研究,发现我需要一些帮助来选择一个最符合我要求的方法.
请理解我不需要最高安全性.我只是想阻止潜在的脚本儿童邻居在几个小时内闯入.如果打入平均消费装备需要几个星期的时间,我会没事的.
我传输的消息尺寸相当小(不超过30个字节,只有几个字节的有效负载),频率不超过30条消息/分钟.
一个用例是运动检测器通过空中向处理单元发送消息,然后处理单元通过空中向灯开关发送另一个消息.请不要专注于运输.这个问题仅针对数据真实性.
我在具有非常有限的闪存和RAM的20 MHz AVR微控制器上运行客户端/服务器软件(在C中).所以我正在寻找一种具有小代码大小和RAM利用率的解决方案,同时仍然提供高数据速率.
我使用MD5实现(C)进行了一些性能测试,从20字节数据创建哈希值,发现它可能太慢了.我知道MD5实现本身并不能解决这个问题.我做的测试只是为了评估散列性能.
感谢您的评论
microcontroller cryptography avr authenticity cryptographic-hash-function
authenticity ×4
avr ×1
cryptographic-hash-function ×1
cryptography ×1
fingerprint ×1
git ×1
hash ×1
http ×1
http-post ×1
integrity ×1
mfc ×1
ssh ×1