MoreLogin 安全保护用户数据安全

MoreLogin 安全保护用户数据安全

2025-01-27 04:38MoreLogin
从开始使用到数据的加密与访问,MoreLogin 提供端到端的全链路安全保护

浏览器插件通常具有较高的应用权限,这使得它们能够访问和操作用户的浏览器数据。然而,这种高权限也带来了潜在的安全风险。过去,因浏览器插件数据盗取导致用户账号资产流失的事件屡见不鲜。

1. MoreLogin 如何保护你使用的 是安全的插件

MoreLogin建议大家使用Chrome原生插件,而不是三方插件。因为Chrome Web Store对上架的插件进行严格审核,在MoreLogin浏览器中下载的插件皆为Chrome商店中的原生插件。

当用户自行上传三方插件时,我们会进行是否原生插件的判断和引导。判断用户自行上传的插件是否已在Chrome Web Store上架。若已上架,将阻止用户上传使用篡改的插件,引导其至Chrome Web Store安装原生插件。通过MoreLogin的插件校验,可防止用户安装被篡改的盗版插件,保护数字资产安全。

security_NEW1.png

2. MoreLogin 如何保护用户的插件数据安全


2.1 默认将插件数据放在本地

MoreLogin默认会将插件数据只放在本地。MoreLogin的同步扩展程序为关闭状态。这意味着在插件数据不会自动上传,避免在传输过程中或者在服务器遇到黑客盗取的风险

为保你的安全,在主界面右上角的头像 > 设置 > 全局设置 > 同步扩展程序及其数据,关闭插件保护选项

security_NEW2.png

2.2  独创端对端加密

有些团队需要多个成员或者电脑间共享数据。为了最大可能保护在传输和服务器的数据风险。MoreLogin引入了高级别的加密策略——端对端加密。这是一种非对称的加密算法。当用户开启这个功能时,会基于本地设备信息生成只有通过用户自己的知道的密钥。密钥会被用来加密将环境中的数据,包括插件、账号、密码等。解密过程仅在本地进行,需要同时使用MoreLogin账号和用户专属的密钥。引入这种技术,目的是在最坏情况下,即使数据在传输过程中被盗取,对方很难进行解密

如何开启端对端加密?点击查看教程:https://support.morelogin.com/en/articles/10244805-end-to-end-encryption


security5.png


2.3 本地插件数据加密

MoreLogin在行业内率先推出了本地插件数据加密功能。一旦你启用了插件数据加密,你的本地插件数据将无法在其他浏览器中打开。

通常情况下,基于Chromium内核的插件数据是可以互通的。例如,你可以将A电脑上的Chrome插件文件转移到B电脑的Chrome插件目录中,B电脑可以直接打开这些插件,无需登录即可访问。然而,这种互通性也带来了安全风险。如果有人通过木马或直接从本地拖走这些插件数据,你的插件账号资产可能会面临损失的风险。

为了解决这个问题,MoreLogin提供了本地插件加密功能。当你开启这个功能后,在本地插件数据被恶意盗取拖走后,也能尽量保护插件数据安全

视频演示链接:https://www.youtube.com/watch?v=BznZfT3fKfQ

security4.png


为保你的安全,在主界面右上角的头像 > 设置 > 全局设置 > 扩展数据保护,打开插件保护选项

security_NEW3.png

3. MoreLogin 默认加密用户的 Cookie 和 账户密码

任意Chromium内核的Cookie文件和账户密码都是可以互通的,MoreLogin 默认加密环境的 Cookie 和 账户密码,即使恶意拷贝 MoreLogin 的环境中的 Cookie 和账户密码目录文件到其他浏览器,其他浏览器也无法查看和打开。

账户密码测试结果:
使用普通浏览器,使用过程中存储的账号密码可以在本地打开,可以看到明文。MoreLogin会对数据进行加密,以密文展示

security6.png


Cookie测试结果:

使用普通浏览器,浏览器的Cookie可以在本地打开,可以看到明文。MoreLogin会对数据进行加密,以密文展示

security7.pngsecurity8.png


MoreLogin始终将用户的数据安全置于首位,这是我们坚守的底线。我们不遗余力地保护您的数据安全,让您能够安心使用。期待您体验MoreLogin,点击下载 ,开启安全高效的多账号管理之旅。



————————

👇附上python 脚本的安全测试 cookie 和密码的脚本:

#*********************************************************************************************
#*** File description: Read cookies stored in Chrome and output them
#*********************************************************************************************
import os
import shutil
# pip install pywin32
import sqlite3, win32crypt
import json
import base64
import argparse
# pip install pycryptodomex
from Cryptodome.Cipher import AES

def main():
    # ========================================================================================
    # === ps:
    # ===   This script must be run with Chrome closed, or the file must be copied out with # # # === Chrome closed, otherwise the file will be occupied
    # ========================================================================================

    # Cookie file directory "%LocalAppData%\Google\Chrome\User Data\Default\Network\Cookies"  or open chrome://version/  find Profile Path
    database_path = 'd:/Cookies' #os.path.expanduser('~') + encrypt_decrypt(Cookies, key)
    print(database_path)
    # Decrypt file address "%LocalAppData%\Google\Chrome\User Data\Local State",Password in os_crypt.encrypted_key
    local_state_path = 'd:/Local State'

    with open(local_state_path, 'r', encoding='utf-8') as fp:  
        local_state = json.load(fp)
        # Retrieve the decryption key from the 'Local State' file
        master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"])
        # Remove prefix characters from the key: DPAPI 
        master_key = master_key[5:]
        master_key = win32crypt.CryptUnprotectData(master_key, None, None, None, 0)[1]
        print('decryption key: ' + str(master_key))   

    # Connect to password database and read data
    with sqlite3.connect(database_path) as conn:
        cursor = conn.cursor()
        cursor.execute('SELECT * FROM cookies')
        #results = cursor.fetchall()

        # Collect an array of field names
        all_field_names = []
        for field in cursor.description:
            all_field_names.append(field[0])
        i=0
        for row in cursor.fetchall():
            i=i+1
            print('============================ Cookie', i, '============================')
            for name in all_field_names:
                val = row[all_field_names.index(name)]
                if name == 'encrypted_value':
                    name = 'cookie_value'
                    val = decrypt_password(val, master_key) # use key
                print(name, ': ', val) # out put field name and value
            #for column in row:
            #    print(column)

def encrypt_decrypt(data: str, key: str) -> str:
    return ''.join([chr(ord(data[i]) ^ ord(key[i % len(key)])) for i in range(len(data))])

def decrypt_payload(cipher, payload):
    return cipher.decrypt(payload)

def generate_cipher(aes_key, iv):
    return AES.new(aes_key, AES.MODE_GCM, iv)

def decrypt_password(buff, master_key):
    try:
        iv = buff[3:15]
        payload = buff[15:]
        cipher = generate_cipher(master_key, iv)
        decrypted_pass = decrypt_payload(cipher, payload)
        decrypted_pass = decrypted_pass[:-16]  # remove suffix bytes
        return decrypted_pass.decode('utf-8', errors='replace')
    except Exception as e:
        print("Unable to decode:", buff)

if __name__ == '__main__':
    main()

DeFAI:新时代的DeFi

上一页

【融资 $1080 万】Kaito:解锁“注意力代币化”的 AI 交互未来

下一页